Game Boy Advance Game Modding | C and ASM | Hobby Project

The Game Boy Advance was the first gaming console I ever had access to, and I have a tremendous amount of fondness for the system and its library of games. Around 2019 I discovered that modding communities existed for two of my favourite series, Pokémon and Fire Emblem, and I’ve gotten very into both since. On the programming side, Fire Emblem involves mostly assembly with some hex editing, while Pokémon is almost entirely C with some of its own scripting language. Both of these projects have been really excellent learning experiences as I was unfamiliar with all of these languages when I started, not to mention spriting, GitHub versioning, and maintaining proper documentation. Now I’ve written several pieces of documentation for both games, and maintain a collaborative asset repository of community sprites, music, tutorials, and code for Pokémon. I learned a tonne about GitHub for both solo and collaborative development and have published feature branches for others to use, and even spent an entire summer overhauling a big section of AI behaviour and getting it submitted to the main Pokémon expanded decompilation repository with a few wonderful collaborators.

These have been my main personal passion projects to work on, and I’ll continue to make time for both of them going forward. A lot of my work has been engine code that doesn’t showcase very well visually without understanding the games, but I’ve done a significant amount of map design and spriting as well, so I’ve included a few screenshots and videos to show some of what I’ve worked on.

This is a custom Fire Emblem map, with some unique sprites, tiles, and a character display. The restriction to largely hex and ASM meant that bigger features took exponentially more effort to get working properly. It’s much easier to do bigger things with Pokémon, but learning some assembly definitely provided a deeper appreciation for modern programming languages.

My favourite change to GBA Fire Emblem was adding equippable items other than weapons, which feature in some capacity in some of the series’ later titles but are absent from the GBA games. This screenshot shows an example of one.

The Pokemon GBA games don’t have any snow maps by default, so I set out to build everything required to make one. Getting the movement of the player trough the snowdrifts to look the way I wanted took forever, but I’m really happy with the results. Unfortunately the blizzard effect is giving the website’s compression a hard time, but it’s still clear enough to see for the most part.

I really like that a lot of older video games have cheat codes hidden in the manuals or the game world that the player can find to let them do goofy things, so I brought that behaviour to Pokémon. These are in-game cheat codes, rather than anything external. This is the simplest one that just gives the player a certain item.

Previous
Previous

Stylized Kokura Castle | Blender | Hobby Project

Next
Next

Perlin Noise Procedural Mesh | Unity | Master's Thesis