Project Overview

A fully-featured, cycle-accurate Game Boy emulator built from scratch in C++ with SDL2. Implements the complete LR35902 instruction set with 500 opcodes, hardware-faithful PPU rendering, and achieves 21x real-time performance with accurate 59.7 FPS timing.

Built by Daniel Elbaz and Jackson Johannesson

CPU Emulation

  • Full LR35902 instruction set (500 opcodes)
  • Cycle-accurate execution timing
  • Complete flag, interrupt, and timer handling

Performance

  • Optimized to 21x real-time performance
  • Hardware-accurate 59.7 FPS PPU & CPU sync
  • Efficient scanline-based rendering

Memory

  • 16-bit memory model with SP/PC handling
  • MBC1 and MBC3 cartridge support
  • Full memory routing (ROM, RAM, VRAM, registers)

Graphics & Input

  • SDL2 PPU rendering pipeline
  • Keyboard input mapping (WASD + ZX + CV)
  • Pre-built for Windows and macOS ARM64

Preview

Game Boy Emulator running

Game Boy Emulator running with cycle-accurate PPU rendering.

Download & Build

Pre-built binaries are available for Windows and macOS:

Controls

W / A / S / DDirectional PadZ / XA / B ButtonsC / VStart / Select

Build from Source

  1. Clone the repository and ensure you have CMake and SDL2 installed
  2. Build with CMake:
    cmake -B build && cmake --build build
  3. Run the emulator with a ROM file