Home Ian's Blog

Game Boy Advance Development

October 7, 2015

I will be teaching the computer architecture class in the Spring. The way this class is normally taught, including when I took it, is to look at an example computer architecture which is either quite old (like the original MIPS chips), or created specifically for education (like the DLX or LC3) which don't have any commercial implementations. I'll be taking a slightly different approach which is to use the Game Boy Advance as the case study throughout the semester. The GBA has a few nice qualities for this:

The GBA of course has a myriad of emulators, which is nice for development, but there is a definite cool factor involved with seeing your program show up on the actual hardware, so I knew I needed to figure out how to do this. The way I found was to use the EZ-Flash IV which is a special cartridge with a slot for a micro SD card:

If you put a GBA ROM on the micro SD card, and insert the cartridge into the GBA, you can play the ROM. Of course this could be used to play pirated games on the GBA, but I'm using it to put my own games on to the GBA. You can't actually directly put GBA ROMs onto the SD card, you have to convert them with software which comes with the EZ-Flash IV. Unfortunately this software is Windows-only (one future goal of mine is to figure out how it works and write an open-source re-implementation). The software also has perhaps the ugliest GUI I've ever seen:

After choosing the GBA ROM (which is a program I wrote), you can send it to the SD card. Then unmount the card, and load it into the cartridge:

Next, put the cartridge into the GBA:

And turn on the GBA. The EZ-Flash IV also replaces the firmware on the GBA with a little file browser which lets you choose which ROM to run if there are multiple on the card:

Once you choose the ROM you want, it begins running it on the GBA and from the hardware’s point of view, nothing is different than if that ROM was burnt onto its own cartridge. Behold, my GBA program:

It just displays the UMW logo as a test, but the rush of seeing it show up was close to the rush of getting my first programs to work. I played on a GBA a lot when I was in college and writing my own games for it is going to be fun!

Copyright © 2018 Ian Finlayson | Licensed under a Creative Commons Attribution 4.0 International License.