Back to projects

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.

GheithBoy emulator demo screen showing a Game Boy game running

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

TetrisDr. MarioTennisNFL FootballDragon Slayer

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

Project Team

Archit Patil,Jai Nagaraj,Ella Whitney,Rishi