Hey I’m Matt and this is a blog documenting the development of a homebrew 3D game engine for the Nintendo Game Boy Advance!
This is a three month undergraduate project that will culminate in an academic paper documenting the techniques used and the lessons learned during development.
Why develop a 3D game engine for the Game Boy Advance (GBA)? I’ve always been interested in the innovative graphics techniques used by programmers in the early 90s to create pseudo 3D graphics. These techniques were necessary since hardware was not powerful enough to render “true” 3D graphics (we’ll discuss the difference later). Therefore, in the spirit of academic pursuit, I wanted to use these techniques to create my own 3D game engine.
When deciding what platform to build this engine for, I considered the following:
1. I wanted hardware that was limited in the same way that the computers in the 90s were limited, making the use of these old-school techniques necessary.
2. I wanted to be able to get really close to the hardware when programming the engine so that if I wanted to I could really optimize my code.
I decided on the GBA. Below are the pros and cons for picking this system:
Pros:
1. Publicly available development tools
2. Development was very low level / did not use a graphics library
3. Not powerful enough for true 3D graphics; 3D games released on this system used the old-school techniques I was interested in.
4. I’ve always wanted to develop something for the GBA / The gratification of having your own code running on a Nintendo device
Cons:
1. All development tools were unofficial
2. No official documentation
3. Homebrew community support was dwindling
In the next post I’ll talk specifically about the old-school technique I will be focusing on: ray casting!