GAME BOY COLOR EMULATOR
gbrs
gbrs is an open-source Game Boy / Game Boy Color emulator written in Rust that runs on desktop platforms and is structured for ports and embedding.

WHY IT MATTERS
Why gbrs matters
gbrs focuses on accuracy and portability: cycle-accurate CPU timing, mid-frame scanline effects, Window rendering, LCD STAT quirks, MBC support and a core that can be used without the Rust standard library for bare-metal or embedded ports.
BEST FOR
Notable strengths
Cycle-accurate CPU and counters; emulation of GPU features such as the Window and mid-frame scanline effects; support for multiple MBCs (including work-in-progress MBC3 RTC) and sound; modular core intended for ports and non-Std builds.
The people behind gbrs
History and status
gbrs is authored by Adam Soutar and hosted on GitHub. The repository contains an emulator core (gbrs-core) and multiple GUI/frontends (SDL, SFML, WASM). The project is actively maintained in the repository (commits present and a releases page), but the README notes it is not distributed with finished general-purpose binaries and recommends building from source for now. The author explicitly listed laying foundations for Game Boy Color support and MBC3 RTC as ongoing work.
What gbrs supports
- Game Boy (DMG) emulation
- Game Boy Color (foundations / work in progress)
- Cycle-accurate CPU and timing
- Mid-frame scanline effects
- Window GPU feature and internal window line counter quirks
- LCD STAT interrupt bug emulation (hardware quirk compatibility mode required by some games like Road Rash))”,
Download and availability
OFFICIAL DOWNLOADS
Get gbrs
Official source and releases are hosted on the project's GitHub. Prebuilt binaries are not guaranteed; build from source or check the Releases page for any published assets.
Get gbrs ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗gbrs setup guide
Setup note: gbrs is a Rust project. The simplest way to run it today is to build and run one of the provided GUI frontends (SDL or SFML). You will need a Rust toolchain and the native dependencies for the chosen GUI backend. The repository includes example commands in the README.
- 1) Get the source: Clone the official repository: git clone https://github.com/adamsoutar/gbrs
- 2) Install Rust toolchain: Install a recent Rust toolchain (rustup recommended) so you can run cargo build/run. The project uses standard Cargo layout.
- 3) Use the SDL frontend (recommended for easiest build): cd gbrs/sdl-gui then run cargo run –release ROM_PATH (replace ROM_PATH with the path to a .gb file). Ensure SDL development libraries are available on your platform before building.
- 4) Alternate SFML frontend: If you prefer SFML, follow platform SFML installation steps, then cd gbrs/sfml-gui and run cargo run –release ROM_PATH. The README links to SFML setup instructions.
- 5) Using the core in ports or other apps: The repository exposes a gbrs-core that can be used without Rust's Std; examples in the README show creating a Cpu from ROM bytes and stepping frames for custom frontends.
- 6) Troubleshooting and performance: If you see screen tearing or audio crackle with one backend, try the other (README suggests SFML if SDL shows tearing). For non-PC targets, follow the core usage pattern shown in the repo rather than relying on the default GUI modules.
Software reminder: gbrs does not include commercial game ROMs, firmware, BIOS, or keys. Obtain ROMs and any firmware legally. Native GUI libraries (SDL or SFML) must be installed separately when building frontends.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for gbrs as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
