Skip to content →


[] – a gameboy emulator, written in C++, with SDL. Pretty accurate, with sound, palettes, savestates, debugging functionality, xbox and playstation controller support, and some other quirks 🙂

Around 7 weeks ago, I wanted to start developing an emulator. But I had absolutely no idea about emulators. I have been using them for years, but never had any idea how they work at all, it was always some kind of magic to me.

So I thought about systems, that could be simple enough for a beginner, and still be something that I care about. That’s why I chose the Nintendo GameBoy, a handheld that got for christmas in 1990, at the age of 5, bundled with Tetris. In the coming years I got a few more games, some that were really something special for me, and that made me spend hours over hours on my Gameboy, at home or in holidays, including:

  • Mystic Quest (Final Fantasy Adventure [alt. title])
  • Super Mario Land
  • Tennis
  • Kirby’s Dream Land
  • Pinball – Revenge of the Gator
  • etc.

I started researching, and since there are quite a few emulators out there for the Gameboy, it is a well documented machine.

A few of the resources I used throughout the whole development process are:

Research brought me some basic information about the system in general:

//	Main RAM: 8K Byte
//	Video RAM: 8K Byte
//	Resolution: 160x144 (20x18 tiles)
//	Max # of Sprites: 40
//	Max # of Sprites/line: 10
//	Clock speed: 4.194304 MHz

After reading a bit more, and talking to a few guys, I had a rough plan, what needs to be developed:

CPU(the heart of the emulator)

PPU (this is what actually displays stuff on our screen)

MMU (handle memory reads and writes)

SPU/APU(for me, an emulator without sound is pointless, so of course we need to process sound)

The first step was very clear, I needed to implement a proper functioning, emulated CPU first.


Leave a Reply