Part 1: The GameBoy Advance
Almost every video game console that is no longer supported has a homebrew development scene. The GameBoy Advance is absolutely no exception. As I began my research, I found two fantastic resources that would be essential to my journey.
First up was TONC, a GBA homebrew tutorial created by Jasper Vijn. The first thing I did was read through this guide and take notes. This is where I learned how to even start developing for the GBA, and I still use it as my go-to resource when I’m stuck. Secondly was the GBADev community. I’ve mostly interacted with them on their Discord, and everyone has been extremely friendly and helpful.
Over time, I began to have a decent understanding on how to program for the GBA. At the time, the programming language I was most familiar with was Java- but that would quickly change. Once I had the basics and I knew what I wanted to do was possible, I made the decision to submit the project as my Honors College “contract”- an open-ended self driven project that every member of the Honors College must complete before graduating. At this point, there was no turning back.
My honors contract objective.
One of the coolest features of the GameBoy Advance is called MultiBoot. This feature allowed developers to send a small ROM over the Link Cable and store it in WRAM. This can be both used to upload Homebrew programs, and access a different game’s ROM and RAM. Using Multiboot to access this data was something Lorenzooone did in their program, and it’s where I got the idea from.
A map of the GBA’s architecture from Copetti.org.
Now that I understood the basics of the GameBoy Advance, it was time to start working on the real thing. My first goal was to add a Pokémon to the user’s PC by reading the save data of the currently inserted cartridge, modifying it, and rewriting it back to the cartridge.
I had experience in doing similar things in the GameBoy games- so how hard could it be?