ph-neutral header
welcome talks guest_info party history imprint darklab phenoelit twist4

8-Bit Wonderland - Executing custom code on the Nintendo Game Boy

Abstract

The Nintendo Game Boy was presented in 1989 for the first time and has sold more than 118 million times. Now its still possible to buy the original Game Boy which is a cheap 8-bit mobile device. Because it has no real protection mechanism like modern consoles against the injection of homebrew code [6] [3] its possible to customize this mobile device and use it for different tasks. The circuit board layout, CPU, etc. are well documented [1] [2] but its difficult to collect all the distributed informations on the internet. The aim of this paper is to close this gap. It presents an introduction to digital circuits and describes how the Game Boy works internally. It also presents two ways to connect an EPROM to the Game Boy and describes how to build a custom cartridge. The Game Boy Development Kit [5] [4] makes it possible to write software for the gameboy in ansi C and program the EPROM with it. As a first example a Pong game will be presented and used to illustrate the different coding aspects (video signals, avoiding expensive operations like multiplication, etc...) The second example will demonstrate how to modify existing games to hide encrypted informations in them.

References

  • [1] Gameboy opcode summary. http://belial.blarzwurst.de/gb/Opcodes.htm.
  • [2] Reiner zieglers page - home made cartridges. http://www.reinerziegler.de/readplus.htm.
  • [3] Marat Fayzullin, Pascal Felber, Paul Robson, and Martin Korth. Everything you always wanted to know about gameboy but were afraid to ask, 1999. http://belial.blarzwurst.de/gb/pandoc.txt.
  • [4] Michael Hope and Pascal Felber. Gbdk libraries documentation, 1998. http://belial.blarzwurst.de/gb/gbdk-doc.pdf.
  • [5] Jason. Cgbdk - how to use cgb features with gbdk, 1999. http://belial.blarzwurst.de/gb/cgbdk.txt.
  • [6] Manfred Linzner and Jason. Gbdok v1.0, 1999. http://belial.blarzwurst.de/gb/gbdok.txt.

Speaker