Game Boy Advance Programming
Welcome to my Game Boy Advance (GBA) programming tutorial page! These notes were originally part of the material for a computer architecture and systems course I taught. I decided to pull them out and organize them in one place.
The GBA was a 32-bit handheld game console developed by Nintendo, first released in 2001, with an "SP" version coming out two years later. The GBA is a fun platform to develop for. The specs are kind of laughable by modern system standards
- 16.78 MHz ARM CPU (about 60 times slower than a 1 GHz processor)
- 240 x 160 pixel screen
- 384 kilobytes of memory (about 2000 times less than 1 Gig of memory)
The GBA has some things which make programming it different from most computers:
- The relatively low performance requires a careful eye to efficiency.
- There is no operating system. Your program is the only thing running, on the hardware, so you have full control.
- There is no "API". You interact with the hardware not by calling functions, but by writing special memory locations.
- There is unique hardware for dealing with graphics and sounds. There are no drivers, so we will have to interact with this hardware directly.