Didj gpSP GBA Emulator
We managed to get around the Didj's memory allocation limitations and got Exophase/notaz's gpSP emulator running on the Didj. In order to give gpSP access to the RAM that it requires, we use a specially built kernel zImage which allocates the RAM normally used by the onboard 3D accelerator and the YUV layer to userspace (these features are not used by the emulator). At the time of this writing, the emulator on Didj was reasonably stable, but your mileage may vary.
- Didj set up with LightningBoot 1.4 or higher
- DJHI or similar breakout with SD card
- You will need to obtain a GBA BIOS (Google is your friend!). This file must be named "gba_bios.bin" in all lowercase as shown, so rename it if needed.
- You will need to compile SDL (see main wiki page)
- A modified 2.6.20 kernel:
- apply File:Gpsp lf2.6.20.kernel.patch - copy to your kernel source dir, patch -p0 < Gpsp_lf2.6.20.kernel.patch
- and edit your .config file as follows prior to compiling your kernel:
CONFIG_CMDLINE="mem=28M root=31:04 rw rootflags=noatime rootfstype=jffs2 init=/sbin/init \ console=ttyS0,115200 ubi.mtd=Brio ubi.mtd=prg_Brio ubi.mtd=Cartridge ubi.mtd=EXT ubi.mtd=prg_EXT"
NOTE There are two commonly available BIOSes - one is the correct one used in production GBA's worldwide and the other is a prototype BIOS. The latter will not cause some games to not work correctly or crash. If you attempt to use this BIOS you will be presented with a warning before being allowed to continue. This screen will give you a checksum of the real BIOS image (see readme.txt for further information).
- At least one game rom.
- Download the archive containing the emulator and related libraries: http://dl.dropbox.com/u/14280130/gpsp_lf1000/gpsp_lf1000.tar.bz2
- Download game_config.txt - part of this package: http://github.com/nirvous/gpsp_lf1000
To prepare your Didj for gpSP
We are going to take advantage of the existing dual root filesystem scheme and use one of them - RFS0 - to run the emulator. We disable Brio on this rootfs as it will cause reboots when the modified kernel is used.
1. Change the rootfs flag:
# echo RFS0 >> /flags/rootfs
2. Reboot normally
3. Disable Brio:
# mount -o remount, rw / # cd /etc/rc.d # mkdir backup # mv *example backup # mv *lightning backup
4. Put the emulator file, startup script, the gba_bios.bin file, the game_config.txt file, the wARM kernel module, and at least one game rom onto your Didj
5. Create this directory for the wARM kernel module:
# mkdir /lib/modules/22.214.171.124-leapfrog/kernel/drivers/warm
6. Place the warm_126.96.36.199-leapfrog.ko file into the directory you created:
# cp ./warm_188.8.131.52-leapfrog.ko /lib/modules/184.108.40.206-leapfrog/kernel/drivers/warm
11. Test that it works:
# insmod warm_220.127.116.11-leapfrog # rmmod warm_18.104.22.168-leapfrog
12. Place the SDL file into /user/lib:
# cp libSDL-1.2.s.0.11.2 /usr/lib
13. Create a symbolic link:
# ln -s libSDL-1.2.so.0.11.2 libSDL-1.2.so.0
14. Place the zImage file onto your sd card.
15. Boot the zImage from the SD card.
16. cd to the emulator directory and launch the emulator
Buttons are mapped as follows (GBA/ingame buttons can be changed in the menu):
Didj--------------------GBA -- IN-GAME -- A -> A B -> B L TRIG -> L TRIG R TRIG -> R TRIG PAUSE -> START HINT -> SELECT HOME -> quit emulator -- IN-MENU -- B -> select option A -> escape (up one directory level in the file selector) HOME -> config options
The code in the source tree is LX centric - we will upload the didj patch shortly.