Skip to content

1ndevelopment/GBendo

Repository files navigation


(guh-ben-doe)


GBendo is a cycle-accurate Game Boy (DMG) emulator and Test Suite written in C, featuring optimized performance and comprehensive hardware emulation.

✨ Features

  • 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

🚀 Quick Start

1. Clone repo

git clone https://github.com/1ndevelopment/GBendo
cd GBendo

2. Install packages

# 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

3. Build project

# Release build (optimized)
make -j$(nproc)

# Or debug build (with sanitizers)
make debug -j$(nproc)

4. Run emulator

# 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

📚 Documentation

🧪 Testing

# Build and run all tests
make build-tests
make test

# Run individual test
./tests/timer_test

🎯 Compatibility

GBendo 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)

📝 License

See LICENSE file for details.

🙏 Acknowledgments

  • Game Boy community for extensive hardware documentation
  • Test ROM authors for validation tools

Made with ❤️ by 1ndevelopment

About

An original Gameboy Emulator that's based on the Sharp SM83 chipset written in C.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages