GBendo is a cycle-accurate Game Boy (DMG) emulator and Test Suite written in C, featuring optimized performance and comprehensive hardware emulation.
- Full Game Boy emulation
- Cycle-accurate CPU (SM83), PPU, and APU
- Support for multiple Memory Bank Controllers (MBC1-7, MMM01, Pocket Camera)
- Save states with version compatibility
- Battery-backed RAM support
- SDL2-based GUI with ROM file picker
- Performance profiling tools
- Comprehensive test suite
git clone https://github.com/1ndevelopment/GBendo
cd GBendo# Debian:
sudo apt install libsdl2-dev libsdl2-image-dev -y
# Fedora:
sudo dnf install SDL2-devel SDL2_image-devel
# Arch:
sudo pacman -S sdl2 sdl2_image# Release build (optimized)
make -j$(nproc)
# Or debug build (with sanitizers)
make debug -j$(nproc)# Launch GUI
./gbendo
# Run ROM via command line with verbose output
./gbendo -v tests/roms/tetris.gb
# Enable performance profiling
./gbendo --profile tests/roms/tetris.gb- ARCHITECTURE.md - System architecture and component design
- CONTRIBUTING.md - Guidelines for contributors
- CHANGELOG.md - Version history and recent changes
- PERFORMANCE_UPDATE.md - Performance optimization details
- TESTING_SCRIPTS.md - Testing documentation
# Build and run all tests
make build-tests
make test
# Run individual test
./tests/timer_testGBendo strives for high compatibility with commercial Game Boy ROMS. Supported features include:
- All documented SM83 instructions
- Proper interrupt handling and timing
- VRAM/OAM access restrictions
- DMA and HDMA transfers
- RTC support (MBC3)
See LICENSE file for details.
- Game Boy community for extensive hardware documentation
- Test ROM authors for validation tools
Made with ❤️ by 1ndevelopment
