A few days ago I sat down with Nathan Tolbert creator of an indie game Anguna Warrirors of Virtue for the Game Boy Advance and Nintendo DS and asked him a few questions about the development process of homebrew games. Not only was Nathan happy to talk about it with me but he went into great detail about it and even recommending a few programs to use. If you every wanted to try and make a game for the Game Boy Advance or Nintendo DS be sure to join me and Nathan as we look and talk about the main parts of development.
How did you go about making a home brew game for the Game boy Advance, What programs did you use when making it (Coding, Audio, Graphics etc.)?
As with most homebrew games made for Game Boy Advance and the Nintendo DS they are mainly written in C with a tiny bit of assembly code mixed in. As with most homebrew projects you really need to find the right programs to use when you are creating a game. There are few free open source development tools for GBA/DS available from the following places…
dev kit pro, Using these and the TONC tutorials written by Jasper Vijn, Not to mention the GBATEK reference document these were what I used to get a good start at writing and developing GBA games.
Another extremely helpful site to visit was the the community at gba dev org which was EXTREMELY helpful, and I’m pretty sure I wouldn’t have gotten far without it.
Programming for GBA and DS are unlike programming for a lot of other modern platforms, as instead of calling out to a robust API, it’s more about reading and writing memory registers to accomplish tasks. It’s much lower-level programming than most programmers are used to these days (we are commonly telling me to first learn to program on a PC or other platform, then once they are proficient at programming in general, only then to come try to write games for GBA or DS)
With programing aside how did you actually go about creating the graphics for Aguna, it wasn’t just MS Paint was it? Not to bash anyone who uses MS Paint you can do some pretty amazing things with it if you know how to, but what did you use?
The graphics were created using any graphics program, then, for Anguna, I imported theme into C source files in a gba-friendly format using a modified version of Jasper Vijn’s Wingrit (although he has now released a tool, grit, which does everything my modified version was designed to do).
In the case of Anguna, the graphics data is linked directly into the program, and copied to a special section of video memory at run-time, which allows it to be displayed on-screen.
For Anguna, I originally made a demo with ugly graphics, but Chris Hildrenbrand saw my demo and offered his assistance with graphics, so he created almost all the graphics currently in the game.Audio is an area that I am not as skilled at working with, so I used an audio library LibXM7 that simplifies playing songs that are in the XM format. One of the songs from the game (the title theme) was a random song I found on the web (Hurtless, by Magic Fred) with an open source license. The other two were composed by an acquaintance of Chris Hildrenbrand’s (Jessie Tracer).
For designing the maps of the world, I used a combination of a custom tool that I wrote with the Mappy tile editor. A makefile and some perl scripts then converted it all of them into C code and it gets linked in with everything else. (just a caveat: many developers would recommend against converting to C and linking in the way I’m doing it. Oh well.)
What do you think took up the most time during the development process of your project?
Overall, I’d say that coding the main engine of the game took about 1/3 of the time, designing the enemies, items, etc, took another 3rd, and mapping the world took another 1/3. The whole thing was 3 years of off-and-on hobby development. (Probably an average of 2 or 3 hours per week for those 3 years).
What difficulties did you find during the process or creating it/porting it to the DS.
The biggest difficulty was finding time, as my wife gave birth to twins just before I released the GBA version. :¬)
Actually, porting to the DS was quite straightforward. Although the DS has more capabilities than the GBA, the 2D graphics engine is almost identical, so it was quite a simple process. Probably the biggest hurdle was the state of DS emulation compared to GBA. For the GBA, Visual Boy Advance is quite accurate as an emulator, and has excellent debugging facilities.
The most accurate DS emulator currently available is the free version of No$GBA, which is less accurate for DS than VBA is for GBA, and has no debugging facilities (there WAS a debug version of No$GBA, but the author has disappeared without anyone knowing what happened to him, and thus we can’t purchase it anymore). The inability to trust the emulator and use it for debugging made it significantly harder to find and fix issues during development.
There have been multiple bugs that occur when I run on the actual DS, but don’t appear in any of the available emulators.
I am sure my readers are wondering about what Anguna is right about now, so what would you say the game is about?
It is a short but exciting action-adventure game, reminiscent of the original Legend of Zelda. Which features lots of interesting enemies and boss monsters, and various places and power ups to find.
Thanks again Nathan for your time I’m sure my readers will appreciate this detailed article into game creation.
Great! I look forward to reading the article when you finish.