Skip to content

A Nintendo Game Boy emulator and research project written in Rust

Notifications You must be signed in to change notification settings

fakelag/zenith.gb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zenith.gb

Zenith is a Nintendo Game Boy emulator and research project written in Rust. Currently it is in a fully playable state including graphics, audio, save states, controller support and even Game Boy Printer functionality through serial cable emulation. It passes all cpu instruction and timing tests.

Screenshots

image 1 image 2 image 7
image 4 image 5 image 6
image 3 image 8 image 9

Keybinds

Gameboy button Keybind Secondary keybind
Dpad Up/Left/Down/Right W/A/S/D Arrow keys
Button A C O
Button B V P
Select N
Start M

Todos and non-goals

The next goal for the project is adding Game Boy Color support and iterating on nice-to-have UX features such as changeable keybinds. Other Game Boy models (Game Boy Advance) is currently left outside of the scope of the project for its different architecture and compatibility.

Running the emulator

The project can be built and run using cargo. SDL2 is used for cross platform video and audio. On windows SDL2.dll needs to be located in the same directory as the binary when linking dynamically.

cargo run --release
cargo build --release
cargo run path/to/romfile.gb # Additionally a rom file can be passed as the first argument

Tests & benchmarks

Current test suite can be run with cargo test -r -- --nocapture note that the tests print output about different testroms to stdout. Criterion nenchmarks can be run with cargo bench.

Special mentions

About

A Nintendo Game Boy emulator and research project written in Rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages