A Gameboy emulator written in Rust as both a learning exercise and a love letter to the console that got me into gaming.
I decided to focus only on the original Game Boy (DMG) to achieve the highest degree of accuracy that I possibly can. The repository also contains more than 100 different test ROMs to verify correctness and detect any regressions.
cargo build --release
The emulator has been built and executed without issues on Windows, Linux and macOS.
cargo test --release
This should execute all available test ROMs and save the rendered output for each of them in the test_output
folder.
Usage:
cargo run --release -- [OPTIONS] <ROM_FILE>
Arguments:
<ROM_FILE> GameBoy ROM file to input
Options:
--headless Runs the emulator without a backing window, used during test execution
--cold-boot Boot title screen even when opening save file
--fast Start emulator with unlocked framerate
--save-on-exit Automatically save state before exiting emulator
--boot-rom <BOOT_ROM> Use specified boot ROM
--format <FORMAT> Use specified file format for saves [default: bin] [possible values: json, bin]
-h, --help Print help information
-V, --version Print version information
Z -> A
C -> B
Enter (PC) / Return (Mac) -> Start
Backspace (PC) / Delete (Mac) -> Select
S -> Save
P -> Pause
F -> Toggle frame limiter
M -> Toggle sound
Esc -> Close
-
Sound- Credits to @maxwalley -
Full MBC support (as of now only MBC0, MBC1 and MBC3 have been implemented)