One special feature presented by RealBoy is an interactive debugger called GDDB. This debugger lets you execute a particular code in a controller manner; it effectively lets you debug it. With GDDB you can, among other things, set breakpoints at specific addresses; print very useful information at any point, including the value of the various Game Boy registers, or even the value of an arbitrary memory address, etc. We will use these facilities to help us with a small exercise: We will see one way in which games wait for the appropriate moment to access the Video RAM (VRAM). This is extremely important because accessing VRAM can only be done at precise timings, and Nintendo even rejected games that did not respect this rule.
The Game Boy’s CPU is a hybrid between the Intel 8080 and the Zilog Z80. In this post we’ll investigate the foundations of this custom microprocessor.