rgb30 빌드 환경
rgb30 기기를 위한 이미지는 크게 jelos와 arkos가 존재합니다. 각각 다른 빌드 환경에서 에뮬레이터/프론트엔드/코어를 빌드 합니다.
SDL2 는 현재 3가지 버젼이 존재합니다.
ge2d 로 구동한 소스 위치는 아래와 같습니다.
git clone -b 2.0.22 https://github.com/JohnnyonFlame/SDL-ge2d.git
ge2d 를 사용하지 않는 sdl2 소스는 아래와 같습니다.
git clone -b fbdev-noge2d https://github.com/JohnnyonFlame/SDL-ge2d.git
libgou 를 사용한 sdl2 소스는 아래와 같습니다.
git clone -b gou-dev https://github.com/OtherCrashOverride/SDL-ge2d.git
./configure --enable-video-opengles2 --disable-video-vulkan
make -j4
git clone -b gou-dev https://github.com/JohnnyonFlame/SDL-ge2d.git 에서 개선 되었다고 하지만 별 차이는 없었음
echo "performance" | sudo tee /sys/devices/system/cpu/cpufreq/policy2/scaling_governor
전체 dependency 는 아래와 같음
sudo apt-get install -y libx11-dev libsm-dev libxext-dev git cmake mercurial libudev-dev libdrm-dev zlib1g-dev pkg-config libasound2-dev libfreetype6-dev libx11-xcb1 libxcb-dri2-0 libglfw3-dev libgles2-mesa-dev mesa-utils-extra libegl1-mesa
sudo apt reinstall libegl-dev
헤더 파일 압축을 풀고
cp include/EGL_platform/platform_fbdev/* include/EGL
CFLAGS='-I/home/odroid/opengl-meson/include' ./configure --enable-video-mali --disable-video-directfb --disable-directfb-shared
make -j4
ge2d 를 사용하지 않는 sdl2는 아래 환경 변수를 사용하여 화면 회전이 가능함
# Setup native display orientation for OGU
export SDL_MALI_ORIENTATION=1
# Setup application orientation (e.g. for "TATE Mode")
export SDL_MALI_ROTATION=0
# Final rotation is 'rotation = (SDL_MALI_ORIENTATION+SDL_MALI_ROTATION) % 4;'
위 소스는 아래 빌드 에러로 사용 못하고 있음
build error
In file included from /home/odroid/export/SDL-ge2d/src/video/mali-fbdev/SDL_maliopengles.c:8:
/home/odroid/export/SDL-ge2d/src/video/mali-fbdev/SDL_malivideo.h:28:25: error: field 'native_display' has incomplete type
28 | struct fbdev_window native_display;
아래 패키지 설치는 효과가 없음
sudo apt install glmark2-es2-wayland
생성된 라이브러리는 심볼릭 링크를 만들어 준다.
sudo ln -s -f libSDL2-2.0.so.0.22.0 libSDL2-2.0.so.0
sdl2.0을 사용하는 에뮬레이터를 빌드해 준다.
ge2d 사용한 코드에서는 src/video/mali-fbdev/SDL_maliopengles.c void MALI_Rotate_Blit(_THIS, SDL_Window *window, MALI_EGL_Surface *target, int rotation)
src/video/mali-fbdev/SDL_malivideo.c:
current_mode.w = data->vinfo.xres;
current_mode.h = data->vinfo.yres;
git clone https://github.com/trngaje/advancemame.git
$ sudo apt-get update
$ sudo apt-get install build-essential git autoconf automake libsdl2-dev libasound2-dev libfreetype6-dev zlib1g-dev libexpat1-dev libslang2-dev libncurses5-dev
nbbatman 은 아래 에러를 출력하고 죽음 /lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0xe8) [0x7f89cd6e10] advmame(+0x7b05cc) [0x558eb965cc]
emuelec 에서 빌드하면 nbbatman 은 동작하지만 danceyes는 실행되지 않음 emuelec 에서 advmame 빌드 방법
PROJECT=Amlogic-ng ARCH=aarch64 DISTRO=EmuELEC scripts/build_mt advancemame
advmenu 분석 - 등록되어 있지 않은 조이패트를 추가하기 위해서는
/*
* Include libretro definitions from:
* https://github.com/libretro/retroarch-joypad-autoconfig/udev
* and converted with joverride.python.
*/
#include "joverride.dat"
};
advmame/advancemame/advance/linux$ python joverride.py odroidgo_joypad.cfg > j_odroidgou.dat
아래와 같이 생성이 됩니다.
/* odroidgo_joypad */
{ 0x484b, 0x1000, "odroidgo_joypad", 1, "a", JOYB_A },
{ 0x484b, 0x1000, "odroidgo_joypad", 0, "b", JOYB_B },
{ 0x484b, 0x1000, "odroidgo_joypad", 2, "x", JOYB_X },
{ 0x484b, 0x1000, "odroidgo_joypad", 3, "y", JOYB_Y },
{ 0x484b, 0x1000, "odroidgo_joypad", 4, "tl", JOYB_TL },
{ 0x484b, 0x1000, "odroidgo_joypad", 5, "tr", JOYB_TR },
{ 0x484b, 0x1000, "odroidgo_joypad", 6, "tl2", JOYB_TL2 },
{ 0x484b, 0x1000, "odroidgo_joypad", 7, "tr2", JOYB_TR2 },
{ 0x484b, 0x1000, "odroidgo_joypad", 14, "select", JOYB_SELECT },
{ 0x484b, 0x1000, "odroidgo_joypad", 15, "start", JOYB_START },
BTN_DPAD_UP / BTN_DPAD_DOWN / BTN_DPAD_LEFT / BTN_DPAD_RIGHT 는 어떻게 정의할 것인가?
gcc 버젼을 바꿔서 빌드 시도
gcc-7 버젼으로 시도
sudo apt-get install gcc-7 g++-7
CC=gcc-7 CXX=g++-7 ./configure --enable-video-opengles2 --disable-video-vulkan
gcc-4.7 버젼으로 시도 (ok)
sudo nano /etc/apt/sources.list
deb http://ports.ubuntu.com/ubuntu-ports xenial main
deb http://ports.ubuntu.com/ubuntu-ports xenial universe
sudo apt install gcc-4.7 g++-4.7 -y
CC=gcc-4.7 CXX=g++-4.7 ./configure --enable-video-opengles2 --disable-video-vulkan
참고:https://rottk.tistory.com/entry/Ubuntu-%EA%B5%AC%EB%B2%84%EC%A0%84-gcc-g-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EA%B8%B0%EB%B3%B8%EB%B2%84%EC%A0%84-%EC%84%A0%ED%83%9D
retroarch dependency 확인
sudo apt-get install libudev-dev libxkbcommon-dev libsdl2-dev libasound2-dev libusb-1.0-0-dev libgles2-mesa-dev libgbm-dev libavcodec-dev libavformat-dev libavdevice-dev
sudo apt-get install libx11-xcb-dev libx11-xcb-dev libpulse-dev libvulkan-dev mali-fbdev
git clone https://github.com/libretro/RetroArch.git
git clone -b rgui_kor_bitmap_font_update https://github.com/trngaje/RetroArch.git
./configure --enable-opengles3 --enable-opengles --disable-x11 --enable-alsa --enable-udev --enable-sdl2
동영상 녹화를 하기 위해서는 아래와 같이 configure 옵션이 추가되어야 합니다.
sudo apt-get install -y libudev-dev libxkbcommon-dev libsdl2-dev libasound2-dev libusb-1.0-0-dev libgles2-mesa-dev libgbm-dev libavcodec-dev libavformat-dev libavdevice-dev libx11-xcb-dev libx11-xcb-dev libpulse-dev libvulkan-dev ffmpeg
./configure --enable-alsa --enable-udev --disable-opengl1 --disable-opengl --enable-egl --enable-opengles --enable-opengles3 --disable-wayland --enable-sdl2 --enable-ffmpeg --disable-x11
menut show -> hide 시 freeze 되는 현상을 업애기 위해서는
alsa -> alsathread로 바꾸니 메뉴 hide 시 freeze되는 현상 사라짐
DinguxCommander 에서는 키 값을 게임컨트롤 설정 값을 활용해서 구동하고 있습니다.
export SDL_GAMECONTROLLERCONFIG=”$(cat /home/odroid/controllerdb.txt)” odroid
gcc+10으로 빌드 필요함
sudo apt install gcc-7 g++-7 gcc-8 g++-8 gcc-9 g++-9 gcc-10 g++-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7 --slave /usr/bin/gcov gcov /usr/bin/gcov-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10
sudo update-alternatives --config gcc
$ sudo apt-get update
sudo apt install libfreetype6-dev
$ sudo apt-get install libglew-dev libao-dev libogg-dev libtheora-dev libxml2-dev libvorbis-dev tcl-dev
./configure
make
bios 추가 방법
$ cd .openMSX/share/
$ wget http://bjorn.kuiper.nu/upload/retropie/systemroms.zip
sudo apt install unzip
$ unzip systemroms.zip
$ rm systemroms.zip
binary 묶음을 복사해주면 바로 실행이 된다. sdl2 se2d 적용된 버젼을 사용하면 키 입력시 화면 바로 업데이트 안되는 문제점이 존재한다. sdl2 nose2d 버젼은 실행되지 않는다.
jstest 설치 및 키값 확인
sudo apt-get install -y jstest-gtk
4 : l, 5 : r, 6:l2, 7:r2 8 : up, 9: down, 10:left, 11:right, 12:exit 17:capture 13 : menu, 14 : select, 15 : start 16 : pause
sudo apt-get install cmake libsamplerate0-dev libspeexdsp-dev libsdl2-dev libpng-dev libfreetype6-dev fonts-freefont-ttf libboost-filesystem-dev libgles2-mesa-dev libglew-dev libglu1-mesa-dev
make all -j7 BITS=64 USE_GLES=1 NEW_DYNAREC=1 V=1 HOST_CPU=aarch64 PIE=1 OPTFLAGS="-O3 -flto"
화면은 표시되지만 느림
git clone https://github.com/hrydgard/ppsspp.git --recursive
cd ppsspp/ffmpeg
./linux_arm64.sh
cd ..
mkdir build && cd build
cmake -DUSING_EGL=OFF -DUSING_GLES2=ON -DUSE_FFMPEG=YES -DUSE_SYSTEM_FFMPEG=NO ../.
make -j4
strip PPSSPPSDL
한글 폰트를 적용하기 위해서는
cd ~/.config/ppsspp/PSP
mkdir flash0
cd flash0
mkdir font
cd font
WinSCP 로 /home/odroid/.config/ppsspp/PSP/flash0/font 경로에 jpn0.pgf파일을 복사
rgb30 기기를 위한 이미지는 크게 jelos와 arkos가 존재합니다. 각각 다른 빌드 환경에서 에뮬레이터/프론트엔드/코어를 빌드 합니다.
Press and hold for 5 sec. If LED blinks, the mode has changed. There are three modes that can be set, and they are as follows.
빌드를 하기 위해서는 docker 환경 내에서 작업 합니다.
ffmpeg, ffplay 를 구동하기 위한 빌드환경을 설명합니다.
rgnano 용 이미지는 2종 (anbernic 생산 버젼, funkey DrUm78 custom 버젼) 존재합니다. 빌드 환경이 서로 다르기 때문에 각각 빌드된 프로그램은 실행되지 않음
rgnano는 240x240 해상도를 갖고 있다. 하지만 simplemenu는 320x240, 640x480 테마만 가지고 있다. rgnano에서 simplemenu 프론트엔드를 적용하기 위해서 기존 테마를 가공한 필요가 있었다.
advmenu 추가 기능 관련 내용을 정리합니다. advmenu.rc 는 $HOME/.advance/advmenu.rc 경로에 위치합니다.
휴대용 기기를 위한 ip 주소 값과 배터리 상태 값을 표시한다. advmenu.rc 상에서 값 읽는 스크립트를 자유롭게 바꿀 수 있게 설계 한다. 메뉴 일부분을 한글로 구현 한다. core와 에뮬레이터를 advmenu 메뉴를 통해 변경할 수 있다.
mm+ 용 에뮬레이터를 빌드하기 위해서는 아래 toolchain을 사용해야 합니다. build 확인된 commit 시점으로 이동합니다.
docker 환경에서 빌드 합니다.
mm+ image
miyoo mini + generates keyboard value when press each button. button value is below.
linapple은 sdl1.2 기반으로 구현되어 있습니다. ogu에서 구동하기 위해서는 sdl2.0으로 변경 필요합니다.
machintosh emulator 인 basiliskii 를 ogu에 맞게 빌드 후 사용해 봅니다.
bt a2dp sink 출력을 하기 위해서는 pulseaudio를 설치해야 합니다만, bt 오디오 출력이 없어도 일정 수준으로 cpu를 사용하고 있기 때문에 다른 대안 중에 하나가 bluealsa 입니다.
text console 출력인 runcommand를 attractmode 다이얼로그로 표시해 봅니다.
BT gamepad에서 진동 기능을 사용하려면 xpadneo를 설치해야 합니다. 기기 내에 linuxheader 를 설치 하고
stand alone인 dosbox-x를 빌드해 보고, windows95/98을 설치해 봅니다.
GPIO 사용
ogu 에서 windows 95/98 용 프로그램을 실행하기 위해서는 dosbox pure를 사용하여 windows 95/98을 설치해야 합니다. 설치하기 위한 hdd.img 를 만들고, window 95/98 cd를 설치한 후, 원하는 게임롬과 함께 windows 95/98 os...
libretro core github에 있는 flycast 동작이 이상합니다. 개선을 위해 보다 최신 github 소스를 사용해 봅니다
diablo 이미지를 구동하기 위한 엔진입니다. 아래 방법으로 빌드 할 수 있습니다. docker 환경에서 빌드 가능합니다.
64bit / 32bit 모두 빌드 가능합니다.
pc linux 용 x86/x64 를 arm 기기에서 실행하기 위해서는 box86,box64 가 필요합니다.
v1.1 (2022/09/26) ubuntu 20.04 기본 이미지에서는 reboot 시 sdcard 인식되지 않는 문제를 해결하기 위해서는 uboot와 kernel을 수정해야 합니다.
mame는 빌드시 memory를 많이 필요로 하기 때문에 빌드 중간에 멈추는 현상을 방지하려면 사전에 swap 메모리 확보가 필요합니다.
evtest 를 실행해보면 joystick driver 명을 확인할 수 있습니다.
recovery mode 진입 : l2 + r2 + power 키로 전원을 키면 recovery mode로 진입한다.
불필요한 log 가 쌓이는 것을 막기 위해서는 사이즈 제한을 해야 합니다.
exfat 포맷
sudo apt install libvpx-dev libvorbisidec-dev git clone https://github.com/DCurrent/openbor
easyrpg standalone 사용방법
pc 환경에서 ogu 소스를 빌드하기 위해서는 toolchain을 설치해야 합니다. pc에서 빌드해야 하는 소스는 linux kernel과 uboot 이 있습니다.
retroarch core build 관련해서 정리해 봅니다.
ogu 장치에 맞게 attracmode 구동을 위한 sfml 라이브러리를 변경합니다.
libgo2 로 작성된 코드를 libgou로 대체하기. retrorun go2와 gou 코드를 비교하여 기존에 작성된 코드를 수정한다.
SDL2 build
sleep/wakeup 이 정상 동작하기 위해서는
기본 라이브러리인 libgou 와 retroarch core를 간단하게 구동할 수 있는 retrorun ogu 버젼을 소개합니다.
ubuntu 에서 부팅시 자동으로 emulationstation을 실행해 주고 있으나, killall 로 죽여도 살아나기 때문에 개발에는 적합하지 않아 수정해 줍니다.
odroid go ultra 환경 설정
advmame와 advmenu를 windows 환경에서 build 하기 위해서는 msys2 개발 환경을 설치 해야 합니다.
advmame 에 연사 기능 추가하기 위해 advmame 메뉴 구조를 파악해 봅니다.
Here, I will introduce how to create fonts for retroarch rgui. Most of them were made by analyzing the retroarch source. If there are resources that need to ...
한글 메뉴와 배튼 연사 기능을 구현해 봅니다.
폰 drastic 에뮬레이터 저장 값을 3ds 와 같은 실기에서 읽으려면 변환해야 한다.
개요
미리 빌드된 자료 이용하여 기기에 설치하는 방법
변경 방법 개요
미리 빌드된 자료 이용하여 기기에 설치하는 방법 아래 링크의 glutexto.zip 압축을 풀고
미리 빌드된 자료 이용하여 기기에 설치하는 방법 (miyoo mini 한정)
기술 관련 전문 (motor 테스트 앱에 포함되어 있는 pdf 에 적혀 있는 내용을 내마음 대로 번역해 보았습니다.)
미리 빌드된 자료 이용하여 기기에 설치하는 방법 아래 링크의 advmame.zip 압축을 풀고
아래 게임은 OGA/OGS/RK2020 기기에서 확인한 게임입니다.
소개
Welcome 포스팅이 되지 않아 하루전날 파일 생성해서 테스트 해봅니다.