Simple-Boy: Game Boy (DMG-01) emulator written in C++17, featuring an interactive ImGui/SFML debugger.
Game Boy (DMG-01) emulator written in C++17, featuring an interactive ImGui/SFML debugger. - Pratyush-gg/Simple-Boy
A cycle accurate, high performance Game Boy (DMG-01) emulator written in C++17. Built with modern software design patterns, a comprehensive interactive debugger, and fully optimized audio/graphics rendering using SFML and ImGui. Simple-Boy focuses on clean cycle accurate timing, precise hardware behavior (such as custom LCD timings and stack interrupt execution bounds), and automated test harness execution.
-
CPU: Complete emulation of the Sharp LR35902 CPU, featuring cycle-accurate instruction timings, correct interrupt boundaries, and stack-frame stack pointer validation.
-
PPU (Graphics): Pixel pipeline with correct timing for LCD status modes, scanline synchronization, sprites (OBJ rendering), background rendering, and window maps.
-
APU (Audio): Multi-channel audio engine emulating CH1 & CH2 (Square wave with sweep), CH3 (Custom Wave Pattern with retrigger safety), and CH4 (White Noise). Audio streams smoothly via an asynchronous ring-buffered SFML SoundStream.
-
Memory Mapper (MBC): Support for a wide variety of cartridges:
- ROM Only
- MBC1 (Bank switching, RAM enable)
- MBC2 (Built in 512-nibble RAM)
- MBC3 (RTC clock registers, RAM banking)
- MBC5 (Up to 8MB ROM, RAM banking)
- Battery-backed Save Support: Automatically saves and loads game battery RAM (saves as <rom_name>.sav or <rom_name>.battery in the ROM folder).
Automated Serial Outputs: Fully hooks the Game Boy link port ($FF01 and $FF02) to output test ROM text directly to your shell.
https://github.com/Pratyush-gg/Simple-BoyOpen linkView original on piefed.social