Difference between revisions of "Didj gpSP GBA Emulator"

From eLinux.org
Jump to: navigation, search
(To prepare your Didj for gpSP)
(Add Category Didj)
 
(14 intermediate revisions by 4 users not shown)
Line 2: Line 2:
 
==Background==
 
==Background==
  
We managed to get around the Didj's RAM allocation limitiations and get 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.
+
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.
  
 
==Prerequisites==
 
==Prerequisites==
  
*Didj set up with LightningBoot 1.4 or higher
+
*Didj [[Didj_U_Boot_Flashing_Primer | set up with LightningBoot 1.4]] or higher
*DJHI or similar breakout with SD card
+
*[http://jertechonline.com/ 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 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 | this 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'''
 
'''NOTE'''
Line 15: Line 21:
 
*At least one game rom.
 
*At least one game rom.
  
*Download the files found in this file drop: http://drop.io/gpsp_lf1000
+
*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==
 
==To prepare your Didj for gpSP==
Line 53: Line 60:
 
13. Create a symbolic link:
 
13. Create a symbolic link:
  
  # ln -s libSDL-1.2.s.0.11.2 libSDL-1.2.so.0
+
  # ln -s libSDL-1.2.so.0.11.2 libSDL-1.2.so.0
  
 
14. Place the zImage file onto your sd card.
 
14. Place the zImage file onto your sd card.
Line 87: Line 94:
  
 
The code in the source tree is LX centric - we will upload the didj patch shortly.
 
The code in the source tree is LX centric - we will upload the didj patch shortly.
 +
[[Category:Didj]]

Latest revision as of 17:28, 10 May 2011

gpSP GBA Emulator on Didj

Background

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.

Prerequisites

  • 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.

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

# reboot

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/2.6.20.1-leapfrog/kernel/drivers/warm

6. Place the warm_2.6.20.1-leapfrog.ko file into the directory you created:

# cp ./warm_2.6.20.1-leapfrog.ko /lib/modules/2.6.20.1-leapfrog/kernel/drivers/warm

11. Test that it works:

# insmod warm_2.6.20.1-leapfrog
# rmmod warm_2.6.20.1-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

#./go_emu.sh

Controls

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

Source Code

http://github.com/nirvous/gpsp_lf1000

The code in the source tree is LX centric - we will upload the didj patch shortly.