A Game Boy emulator in Rust
Sound not included
Web version is available at https://sixels.github.io/GoodBoy
This emulator is not perfect and lack some features. Core features that are worthy listing:
- Pass Blargg's cpu_instrs tests
- Needs a little more improvements to pass dmg_acid test, but is still doing well
- Joypad implemented
- Support to MBC0, MBC1, MBC3 (without timer) and MBC5 (without rumble) cartridges
- Runs on browser (Experimental, not ready yet)
- Partial CGB support (Game Boy Color)
Basic keyboard bindings
Keyboard Key | Game Boy Button |
---|---|
Z | A |
X | B |
↵ Return | Start |
Space | Select |
← | Left |
→ | Right |
↑ | Up |
↓ | Down |
Other bindings:
Keyboard Key | Action |
---|---|
Tab | Next Colorscheme |
Esc | Open a game |
⇧ Shift + Tab | Previous Colorscheme |
Ctrl + Q | Exit |
Some keybindings are exclusive for native builds
![]() Game: The Legend of Zelda: Link’s Awakening |
![]() Game: Pokémon Gold |
![]() Game: Super Mario Land 2 |
![]() Game: Pokémon Yellow |
First, clone and cd to the project:
git clone https://github.com/sixels/goodboy && cd goodboy
It is supposed to be cross platform (however I tested it only on Linux). Setup Rust and Cargo on your machine then build the project:
cargo build --release
run with:
./target/release/goodboy [PATH/TO/ROM.gb]