I guess the title of this post gives the game away, I’ve bought a GP2X
For those who want the short review it’s amazing…
Before we get to the long drawn out first impressions, I wanted to mention that a community game contest has just begun, starting August 1st with the entry deadline 11th December, head over to www.psymastr.com/gp2x/ for more information.
It’s certainly nice to see a community contest with reasonable rules, unlike the official GPH contest where the idea behind the contest may be genuine but the way it comes across leaves much to be desired. There are too many grey areas in the rules such as whether a losing entry that GPH do not wish to go commercial with can still be self published. I imagine this is totally down to the translation rather than ulterior motives since GPH are a korean company, however the grey areas are enough to put many off entering the official contest. Instead, we’ve got a community contest to enter
Anyhow, onto the review.
Games
Aside from emulators a number of homebrew games are available including ports of Doom and Quake. But, for me, the killer app is a port of Scummvm which allows you to run all those classic point and click adventure games. With beneath a steel sky, flight of the amazon queen and lure of the temptress all freely available from the original developers theres not excuse to not give them a go
There’s also a port of Spout, a simple yet strangly addictive game. You control a little ship in a similar way to asteroids with left/right rotation and thrust only. The aim is to progress as high up the screen as you can without colliding with any terrain, with the twist that your jet spout can be used to destroy terrain and provide a clear path. Very addictive. Grab the GP2X version from the gp2x archive there’s also a windows version on although I’ve not tried it.

Flashing
My GP2X came with the latest 2.0 firmware preflashed, but I like to know the details. From what I’ve seen/read so far, the GP2X has a boot loader known as “UBoot” which loads the kernel image. Stored in NAND memory is the 32meg linux filesystem as well as a 32meg “yaffs” filesystem. Since this is an open source handheld, the source for these can be obtained from the GamePark Holdings svn server.
I’ve also downloaded the latest pre built 2.0 firmware, this will come in handy when my experimentation goes awry and it stops booting
The firmware zip contains a uboot image as well as kernel, filesystem and other images.
Flashing the UBoot is a little dodgy, since a bad flash will render the GP2X unbootable and un-recoverable outside of interfacing via JTag (which I don’t have). However, if the gp2xboot.img (UBoot) is not present on the SD card, the GP2X will not try to flash the UBoot continuing on to flash the rest of the files, so regardless of whether the rest of the flash succeeds or not (or if you mess up the filesystem by other means), the gp2x will still boot far enough to attempt another flash. In short, avoid messing with the UBoot part of NAND memory and things will be fine.
Boot Sound Mod
I know this isn’t anything new, it’s also a very simple mod but since the firmware zip contained a wav file which is the boot up sound, it seemed to be a logical first customisation. Besides, it’s a good test to demonstrate that my SD card is compatible with the firmware update process.
Loading the file into Audacity shows it to be a ~2.7 seconds long, stereo file. I’ve mixed the standard sound with a Buffy the vampire slayer “Grrrr Arrrrg” end credits Mutant Enemy sound. Exported as a 16bit pcm file the size should be 233bytes exactly the same as the original gp2xsound.wav (any different and the firmware update won’t pickup the file)
Flashing, is simple, place the gp2xsound.wav in the root of the SD card and boot the GP2X with select/start held down. For the record, I used a Fat32 formatted, 1GB SandDisk SD card which despite wiki information to the contary worked fine for firmware updating and general usage.
Development
I can’t have any kind of computer device without trying to dev on it and the GP2X is no exception. What’s great about this however is how easy it is to get up and running.
Enabling USB networking and samba server on the GP2X allows access to the root filesystem. There’s a samba client app available on the gp2x archive site, which allows the GP2X to mount an external samba share, such as the gp2x folder on my development machine.
Development can be done on my PC with the resulting cross compiled gpe file accessable on the gp2x thanks to the mounted samba share. Thus testing the newly built app is as simple as connecting via telnet, killing the existing gp2x menu and running the app. This avoids having to transfer any files onto the SD card during development.
[code]
killall gp2xmenu
cd /mnt/devshare/
./testapp.gpe
[/code]
The result been testapp running on the GP2X with any debug output displayed in the telnet window
You can even remote control the running app via the telnet window using keys such as U,J,K,I for up/down/left/right.
The full process is documented in much more detail on the GP2X wiki
Currently I’ve got VS2005 setup with two separate projects in a single solution, the first been a standard windows project setup to link in SDL. The second project uses the custom build rules feature to build using the arm-linux-gcc toolchain to cross compile for the Arm architecture used by the GP2X. (available as a part of devkitpro).
The Future
One thing I’m looking forward to getting my hands on is the retail version of the breakout box which exposes amongst other goodies the host mode USB port. Been able to plug an external powered USB hdd into this would be great for streaming films/music especially on holiday ( 40gig iRiver anyone?
)
Plus having JTag access would remove the fear of playing with the UBoot, not that I’ve any reason to.





