PeterM posted this on his blog:

Itís been a while since I bought a GP2X and Iíve not done much coding for it. Partly this is due to the firmware start-up time ó it takes about a minute to get from the Makefile copying the ELF onto my SD card to actually running the build.

I donít know if this is a Linux problem (not too likely) or a GP2X problem (rather more likely), but a 30 or 40 second start-up delay for a portable game playing device is completely insane. I donít know how GPH sleep easy at night!

But anyway, for a while Iíve had a GameCube port of Quake 2 in the works. It looks like itís going to run fast enough but as usual with Quake 2 ports, memory is a problem. Iíve stripped out some memory hogs and tried to shrink down some allocations so while Iím fairly sure Quake 2 for GameCube will happen, I canít make any promises.

In order to make Quake and Quake 2 development easier, as well as their GameCube versions I maintain a Win32 SDL version of both games. This lets me quickly compile and test platform independent changes without messing around with SD cards or adaptors or waiting for devices to boot.

Given that the GP2X comes with SDL installed I thought Iíd quickly adapt my GameCube Makefile for a GP2X version and see how well it ran.

SlowCPU is sloooowwww!

The GP2X has no FPU and Quake 2 does a fair bit of floating point maths, even in the innermost span renderer. The end result is a frame rate just over 5 frames a second (compared to the GameCubeís ďeasyĒ 50 FPS).

The Cube is so cute and cuddly, but inside its cheeky purple shell lives a beefy monster!

Anyway, I noticed a few easy performance fixes and by making some changes managed to pretty much halve the time taken to render world spans on the Win32 build. I would imagine the GP2X build wonít see nearly that improvement though as Iíve not yet done any fixed point conversion.

Iíll leave the details of the changes for another time.