When studying at the university of Oldenburg, i did a student project regarding the Nintendo Game Boy from 1989. We tried to develop a homebrew cartridge and write come code using C. The project was finished and slept on my hard drive for several years. Back in 2010, i wanted to give a presentation at the PH-Neutral conference in Berlin. I documented my Game Boy project, wrote some slides and finished the code. Now it is 2015. I decided to rewrite my previous presentation and create a beginner tutorial for Game Boy development.
The tutorial was released at the Nullsecurity plattform and you can download the PDF here. It consists of three sections:
- A basic introduction to the Nintendo Game Boy classic.
- Two easy ways to build your own, custom cartridge.
- Writing a simple Pong game using the GBDK (Game Boy Development Kit).
The tutorial itself is no rocket science. Nevertheless, many grew up with the Game Boy and it is still fun writing code for this platform. The Z80-like CPU is easy to master and the hardware well documented. Furthermore, the Game Boy Development Kit provides a C compiler which allows you to work at a higher abstraction level.
There exist several cartridges which allow developers to upload custom code. I was interested in building something from scratch. Therefore, my first prototype was a modified existing cartridge.
This proof of concept worked and I created an Eagle layout for a custom cartridge with a 27C256 EPROM. You can download it here. Afterwards, I began to write a simple Pong clone using C. Luckily, the Game Boy Developers Kit (and the Internet;) provide good documentation which describes the graphics format and display hardware in great detail. The results running on real hardware look like this:
The first picture shows the first prototype which is a modified nintendo cartridge. The second one contains a Game Boy running the previously developed Pong game on a custom cartridge. If you are interested in more details, take a look at the tutorial itself or drop me a line for comments and suggestions. The Pong source code is available too.