rgb30 빌드 환경
rgb30 기기를 위한 이미지는 크게 jelos와 arkos가 존재합니다. 각각 다른 빌드 환경에서 에뮬레이터/프론트엔드/코어를 빌드 합니다.
evtest 를 실행해보면 joystick driver 명을 확인할 수 있습니다.
/dev/input/event0: gou-gpio-keys
/dev/input/event1: rk8xx_pwrkey
/dev/input/event2: AML-AUGESOUND Headphones
/dev/input/event3: odroidgo_joypad
그 이름으로 검색해보면 아래와 같은 소스에서 사용 됨을 확인합니다. ogs 와 동일한 방법으로 변경합니다.
drivers/input/joystick/odroid-gou-joypad.c:#define DRV_NAME "odroidgo_joypad"
drivers/input/joystick/odroid-gou-joypad.c
가 기존 ogs와 차이나는 점은 아날로그 스틱용 adc 포트가 4개라 mux 처리가 필요하지 않다는 점입니다.
코드를 비교해 봐도 ogs에서 함수명만 변경되었고 mux 관련 코드만 삭제되었습니다.
ogs
/*
+--------------------------------+
| IIO Channel : ADC_IN1 |
+--------------+-----------------+-----------------+--------+---------+
| EN(GPIO3.B5) | SEL_A(GPIO3.B3) | SEL_B(GPIO3.B0) | SELECT | EVENT |
+--------------+-----------------+-----------------+--------+---------+
| 0 | 0 | 0 | R-Y | ABS_RY |
+--------------+-----------------+-----------------+--------+---------+
| 0 | 0 | 1 | R-X | ABS_RX |
+--------------+-----------------+-----------------+--------+---------+
| 0 | 1 | 0 | L-Y | ABS_Y |
+--------------+-----------------+-----------------+--------+---------+
| 0 | 1 | 1 | L-X | ABS_X |
+--------------+-----------------+-----------------+--------+---------+
| 1 | X | X | XXXX |
+--------------+-----------------+-----------------+--------+
*/
ogu
/*
+--------------+--------+---------+
| iio_channel | SELECT | EVENT |
+--------------+--------+---------+
| ADC_AIN0 | R-Y | ABS_RY |
+--------------+--------+---------+
| ADC_AIN1 | R-X | ABS_RX |
+--------------+--------+---------+
| ADC_AIN2 | L-Y | ABS_Y |
+--------------+--------+---------+
| ADC_AIN3 | L-X | ABS_X |
+--------------+--------+---------+
*/
아래 파일에서 joypad관련 설정은 별도 파일에서 관리되고 있습니다. ./arch/arm64/boot/dts/amlogic/meson64_odroidgou.dts
#include "mesong12b.dtsi"
#include "meson64_gou_pmic.dtsi"
#include "meson64_gou_panel.dtsi"
#include "meson64_gou_joypad.dtsi"
아래와 같이 hat 값으로 변경 합니다.
sw1 {
gpios = <&gpio GPIOX_0 GPIO_ACTIVE_LOW>;
label = "GPIO DPAD-UP";
linux,code = <ABS_HAT0Y>;
linux,input-type = <EV_ABS>;
linux,input-value = <0xffffffff>; // -1
};
sw2 {
gpios = <&gpio GPIOX_1 GPIO_ACTIVE_LOW>;
label = "GPIO DPAD-DOWN";
linux,code = <ABS_HAT0Y>;
linux,input-type = <EV_ABS>;
linux,input-value = <1>;
};
sw3 {
gpios = <&gpio GPIOX_2 GPIO_ACTIVE_LOW>;
label = "GPIO DPAD-LEFT";
linux,code = <ABS_HAT0X>;
linux,input-type = <EV_ABS>;
linux,input-value = <0xffffffff>; // -1
};
sw4 {
gpios = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>;
label = "GPIO DPAD-RIGHT";
linux,code = <ABS_HAT0X>;
linux,input-type = <EV_ABS>;
linux,input-value = <1>;
};
변경된 dtb 파일을 빌드 하기 위해서는 Makefile 에서 추가해 줘야 합니다.
arch/arm64/boot/dts/amlogic/Makefile:dtb-$(CONFIG_ARCH_MESON64_ODROIDN2) += meson64_odroidgou.dtb
최종 빌드 후 아래와 같은 파일이 추가로 생성됩니다.
./arch/arm64/boot/dts/amlogic/meson64_odroidgou_trngaje.dtb
sudo fdisk -l
ogu 가 /dev/sdb로 인식되고 있기 때문에
$ mkdir -p ./mount
$ sudo mount /dev/sdb1 ./mount
$ sudo cp arch/arm64/boot/Image.gz arch/arm64/boot/dts/amlogic/meson64_odroid*.dtb ./mount && sync && sudo umount ./mount
$ sudo mount /dev/sdb2 ./mount
$ sudo make modules_install ARCH=arm64 INSTALL_MOD_PATH=./mount && sync && sudo umount ./mount
evtest 결과
Event: time 1670771528.364124, type 3 (EV_ABS), code 16 (ABS_HAT0X), value -1
Event: time 1670771528.364124, -------------- SYN_REPORT ------------
Event: time 1670771528.536117, type 3 (EV_ABS), code 16 (ABS_HAT0X), value 0
Event: time 1670771528.536117, -------------- SYN_REPORT ------------
Event: time 1670771529.916132, type 3 (EV_ABS), code 16 (ABS_HAT0X), value 1
Event: time 1670771529.916132, -------------- SYN_REPORT ------------
Event: time 1670771530.076151, type 3 (EV_ABS), code 16 (ABS_HAT0X), value 0
Event: time 1670771530.076151, -------------- SYN_REPORT ------------
Event: time 1670771530.796115, type 3 (EV_ABS), code 17 (ABS_HAT0Y), value -1
Event: time 1670771530.796115, -------------- SYN_REPORT ------------
Event: time 1670771530.928244, type 3 (EV_ABS), code 17 (ABS_HAT0Y), value 0
Event: time 1670771530.928244, -------------- SYN_REPORT ------------
Event: time 1670771531.616121, type 3 (EV_ABS), code 17 (ABS_HAT0Y), value 1
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 포스팅이 되지 않아 하루전날 파일 생성해서 테스트 해봅니다.