Completed Computer Architecture Project
GheithBoy Emulator
A C++ Game Boy emulator built with SDL2 for graphics and keyboard input, modeling the original handheld's CPU, memory system, graphics pipeline, timers, interrupts, and joypad controls.

Built as an April 2025 Computer Architecture final project by Archit Patil, Jai Nagaraj, Ella Whitney, and Rishi.
Date
April 2025
Course
Computer Architecture
Language
C++
Runtime Target
About 60 FPS
Primary Materials
Included No-MBC ROMs
Website Summary
Built a C++ Game Boy emulator that models the original handheld's CPU, memory system, graphics pipeline, timers, interrupts, and input handling. The emulator uses SDL2 to render frames and process keyboard controls, and supports multiple included no-MBC Game Boy ROMs. The project emphasized low-level systems programming, hardware emulation, instruction decoding, memory-mapped device behavior, and real-time rendering at roughly 60 FPS.
Emulated Hardware Areas
CPU
SM83-style instruction execution, register behavior, flag updates, stack operations, and decoded control flow.
Memory
64KB address space covering ROM loading, VRAM, OAM, RAM regions, and memory-mapped device registers.
PPU
Scanline rendering for background, window, and sprite layers, synchronized with VBlank behavior.
I/O
Timers, interrupts, and joypad state modeled as hardware-facing emulator components.
Technical Details
- Language
- C++
- Graphics/Input
- SDL2
- Core Architecture
- Modular emulator with separate CPU, MMU, RAM, PPU, timer, interrupt, and input components
- CPU
- Implements Game Boy SM83-style instruction execution, register behavior, stack operations, and instruction decoding
- Memory
- Emulates 64KB addressable memory, ROM loading, VRAM, OAM, and memory-mapped I/O
- PPU
- Renders background, window, and sprites through a scanline-based graphics pipeline
- Timing
- Coordinates CPU cycles, PPU ticks, hardware timers, interrupts, and VBlank behavior
- Input
- Maps SDL keyboard events to Game Boy joypad buttons
- ROM Support
- Runs included no-MBC .gb ROMs from the project's games/ directory
- Performance Goal
- Smooth real-time emulation around 60 FPS