https://github.com/gcarq/romoulade
Game Boy Emulator written in Rust.
https://github.com/gcarq/romoulade
egui emulator gameboy gameboy-emulator rust
Last synced: 2 months ago
JSON representation
Game Boy Emulator written in Rust.
- Host: GitHub
- URL: https://github.com/gcarq/romoulade
- Owner: gcarq
- License: gpl-3.0
- Created: 2020-09-14T18:02:59.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-06-23T10:22:42.000Z (12 months ago)
- Last Synced: 2026-03-27T23:42:18.878Z (2 months ago)
- Topics: egui, emulator, gameboy, gameboy-emulator, rust
- Language: Rust
- Homepage:
- Size: 916 KB
- Stars: 12
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Romoulade
A Game Boy Emulator written in Rust.
At this point, a lot of tested games are playable; however, there are still some bugs.

## Quick Start
Clone this repository, build and run it with cargo:
```
git clone https://github.com/gcarq/romoulade.git
cd romoulade/
cargo run --release
```
## Key Bindings
| Keyboard | Emulator |
|-------------|----------|
| Arrow Right | A |
| Arrow Left | B |
| Enter | Start |
| Backspace | Select |
| W | Up |
| A | Left |
| S | Down |
| D | Right |
## State
This project started as an exploratory project and aims to have an accurate
DMG emulator with cross-platform support and good documentation.
The Frontend has been built with [egui.rs](https://github.com/emilk/egui), but the emulator can also be started in
headless mode (see usage below).
#### Known Issues and TODOs
- Implement remaining MBCs (MBC2, MBC6, MBC7, ...)
- Implement Sound Processing Unit
- Pass acceptance tests from [the Mooneye Test Suite](https://github.com/Gekkio/mooneye-test-suite)
- Improve debugger UI
### Blargg's Test ROMs
| Test No. | Result | Remark |
|--------------|--------|---------|
| cpu_instrs | ✅ | Passed |
| instr_timing | ✅ | Passed |
| mem_timing | ✅ | Passed |
| mem_timing-2 | ✅ | Passed |
| oam_bug | ❌ | Failed |
| halt_bug | ✅ | Passed |
| dmg_sound | ❌ | Missing |
### Mooneye Acceptance Tests
The test ROMs are taken from the
commit [a1adfe2](https://github.com/Gekkio/mooneye-test-suite/commit/a1adfe27ba6517d8f4d14d16088e23ce6bbf4d55).
| Test Name | Passed | Failing Tests |
|------------|--------|-----------------------------------------------------------------------------------------------------------------------------------|
| common | 26/31 | boot_div, boot_hwio, di_timing, halt_ime0_nointr_timing, halt_ime1_timing2 |
| bits | 3/3 | ✅ |
| instr | 1/1 | ✅ |
| interrupts | 1/1 | ✅ |
| oam_dma | 2/3 | sources |
| ppu | 6/12 | intr_2_mode0_timing_sprites, hblank_ly_scx_timing, lcdon_timing, lcdon_write_timing, stat_irq_blocking, stat_lyc_onoff |
| serial | 0/1 | boot_sclk_align |
| timer | 10/13 | rapid_toggle, tima_write_reloading, tma_write_reloading |
## Debugger
This emulator comes with a visual debugger built using [egui.rs](https://github.com/emilk/egui).
The debugger can be attached and detached at any time without a performance penalty.

## Command Line Options
```
Usage: romoulade [OPTIONS]
Options:
-r, --rom Path to the Game Boy ROM
-d, --debug Enable the debugger immediately
-f, --fastboot Start immediately and skip boot ROM
-p, --print-serial Print serial data to stdout
--headless Start the emulator in headless mode
-h, --help Print help
-V, --version Print version
```
## Contributing
This repository is open to contributions.
The code should follow the [Rust Style Guide](https://doc.rust-lang.org/stable/style-guide/) and shouldn't produce any
`clippy` warnings.
## Dependencies
* Rust >= 1.87.0
## Resources
* [The Ultimate Game Boy Talk (33C3)](https://www.youtube.com/watch?v=HyzD8pNlpwI)
* [Game Boy CPU Manual](http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf)
* [Game Boy: Complete Technical Reference](https://gekkio.fi/files/gb-docs/gbctr.pdf)
* [Pan Docs](https://gbdev.io/pandocs/)
* [Mooneye GB](https://github.com/Gekkio/mooneye-gb)
* [Educational Gameboy Emulator in Rust](https://github.com/rylev/DMG-01)
* [Opcode Table](https://izik1.github.io/gbops/)
* [Blargg's Gameboy hardware test ROMs](https://github.com/retrio/gb-test-roms)