Adventures in Programming: GBA Homebrew
October 19th, 2008I was clearing out some old files from my old laptop earlier today and discovered some of my old game programming work that I did for fun during college. The most ambitious of the projects was a console based roguelike game that was one of my finer examples of organized code, but my personal favorite projects where some of the hackish Game Boy Advance homebrew programs that I worked on.
GBA Pong

My first project was mainly just to wrap my head around the concept of developing for a device without any sort of sdk and only a technical spec showing what memory addresses related to different functions. It took me a very long time to be comfortable enough to get into GBA development, but thankfully I was able to learn a lot of the basic environment set up needed from this tutorial.
The gameplay is simple but I was pretty happy with how this turned out overall. First to five points wins and pressing B will restart the game when it is over.
Project Good Game
Project Good Game was my first attempt to create something a little bit more complex. While it never made it far enough to have a visual pass, the technology that controlled the level loading was by far my greatest technical achievement on the system.
While there are a few ways to manage memory on the GBA, the one that provided the greatest number of layers only gave the developer slightly more than one screens worth of memory per layer. To get around this, PGG dynamically loads chunks of the level into the memory as needed. This means the only real limit to the size of the map is the storage size of the cartridge.
Ok so It is not that high-tech, but the method has been used in professionally released games for the GBA so I know the underlying idea is sound. The game is far from finished and is more of a basic tech demo than anything else, but I still think that it is a cool thing to show off to people who are interested in game development.
Affine Sprites Demo
As I worked on Project Good Game, I often created various testbeds to test new functionality that I wanted to add to the game. Most of my information of advanced hardware knowledge was coming from this site.
This demo shows off some of the built in hardware sprite functionality including: scaling, rotation, movement, and mosaic blurring. Nothing too special about it, but I always thought it was interesting hands-on way to view some of the limitations that developers have worked around when creating larger sprite characters on the system.
Download
I have compressed the above demos for download here:
GBA Demos
They should run fine either on an emulator or on the native hardware itself. Enjoy!
