GAME BOY EMULATOR
gb-rust
gb-rust is an open-source Game Boy (DMG) emulator written in Rust. The repository includes a standalone frontend, a core crate, a libretro-compatible target, and a wasm target. It is described by the author as "written mostly for fun" and not intended for general use.

WHY IT MATTERS
Why consider gb-rust
Small, readable Rust implementation of a Game Boy (DMG) emulator suitable for experimentation, study, or building a custom frontend. The repo contains multiple targets (standalone frontend, core, libretro, wasm) which make it useful both as a learning resource and as a starting point for integrations.
BEST FOR
Best for
Developers and hobbyists who want a compact Rust codebase to study Game Boy internals, or those who want to build or modify a libretro core or WebAssembly port from an existing implementation.
The people behind gb-rust
History & repository status
The project is hosted on GitHub (agi90/gb-rust). The repository contains nearly two hundred commits and is organized as a Rust workspace with members core, frontend, libretro, and wasm. The README states the project is "written mostly for fun" and "not intended for general use," lists features such as MBC0/MBC1/MBC3 support, experimental sound, and notes it works on Linux and Windows. The workspace layout and presence of a libretro member indicate the author provides both a standalone frontend and a libretro build target. The project is released under the MIT license. Sources consulted: repository README, Cargo.toml, and releases listing on GitHub.
What gb-rust supports
- Game Boy (DMG) ROMs (cartridge banking: MBC0, MBC1, MBC3)
- Standalone frontend (Linux, Windows)
- libretro core (libretro target present in repository)
- WASM target (wasm member present in repository)
Download and availability
OFFICIAL DOWNLOADS
Get gb-rust
Official builds/tags and any release assets are available from the project's GitHub Releases page. Source can be cloned from the project's GitHub repository and built with the Rust toolchain.
Get gb-rust ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗gb-rust setup guide
Setup note: Below are practical, repository-verified steps to build and run the project from source, plus notes about targets and runtime behavior. This guide assumes you will use the official GitHub repo as the source of truth.
- 1) Get the source: Clone the official repository from GitHub: the project is hosted at github.com/agi90/gb-rust (see repository README and Releases).
- 2) Install Rust toolchain: Install Rust and cargo using the official rustup installer (stable toolchain). The project is a Rust workspace; builds are driven with cargo. Ensure cargo and rustc are in your PATH.
- 3) Build the standalone frontend (Linux / Windows): From the repository root run: cargo build –release. The README documents that the standalone frontend is run with: cargo run –release — rom.gb. Command-line options include -d/–debug (start debugger) and -m/–magnification (screen magnification). The README explicitly states the frontend was tested on Linux and Windows.
- 4) Running a ROM: After building you can run a ROM with the run command above (cargo run –release — rom.gb) or execute the produced binary in target/release. Controls documented in the README: arrow keys for directions, A/S for Game Boy A/B, D for Start, F for Select. F1 enters the emulator debugger and F2 toggles unlimited framerate.
- 5) libretro core: The workspace includes a libretro member, which indicates a libretro target (a core) is included. Building the libretro core will follow the code in the libretro folder; typical steps require building that crate (cargo build –release –manifest-path libretro/Cargo.toml) and then placing the produced shared library into the frontend emulator/RetroArch cores directory. Exact libretro build output name and any additional linker flags should be confirmed by inspecting the libretro folder and its crate manifest before use.
- 6) WebAssembly (wasm) target: A wasm member exists in the workspace. To build a WebAssembly target, inspect wasm/ for its crate instructions and typical Rust-to-wasm toolchains (wasm-pack or cargo build –target wasm32-unknown-unknown). The repository provides the target but does not ship a packaged web UI; additional steps and a web host will be required to run wasm builds.
- 7) Dependencies and platform notes: The project is Rust-based. The README indicates experimental sound and that OSX was not tested. The Cargo.toml shows workspace members core, frontend, libretro, and wasm. If the frontend uses native windowing/audio (SDL2 or similar), you must install the appropriate native libraries on your OS; inspect the frontend crate's Cargo.toml and source to confirm specific crates and native dependencies.
- 8) Tests and compatibility: The README references Blargg tests (Blargg CPU/memory/timing test images) and documents some passing/failed tests; it also lists a TODO for an oam_bug crash. The author cautions the project is not intended for general use and some timing/compatibility issues remain. If you need high compatibility for commercial games, prefer more mature emulators.
Software reminder: The repository does not include commercial ROMs, Game Boy BIOS, firmware, or game data. You must supply your own legally obtained ROMs and any required BIOS files (if any).
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for gb-rust as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
