LibGP2x is a minimal library for getting low-level access to the GP2x's hardware, in the same vein as Rlyeh's minimal library. Why didn't I just use rlyeh's library? Well partly because I think the code used is horrible, and with the little amount of documentation and examples it was very hard to get my head around it. The other reason is of course because I wanted to toy around with the bare metal.
LibGP2x provides access to the controls, screen and the second processor. There is no access to the sound hardware or the blitter, but those are both planned features.
One of the key features is the ease with which you can use the second processor, it's almost the same as programming for the main processor. Currently the number of functions that are implemented is limited, but that will improve. See this example for more.
The other key feature is that you can recompile the program and it will run on your PC - no changes to your code are needed. This won't work on Windows, as I don't have a Windows development machine, but it shouldn't be hard to get it to work. Everything that is supported on the GP2x is supported on the PC, including the second processor.
Eventually the projects libgp2x and GL2x have ceased to exist. The website is down, its last entry was written in August 2006 and the last comment in Google code dating Jan 14, 2007 states: "The implementation of malloc for allocating memory in the upper portion of memory is far, far too slow."