Skip to content
A NES emulator made to learn the Rust programming language
Branch: master
Clone or download
Latest commit 8737997 Apr 5, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.cargo Add benchmark Mar 13, 2019
benches Correct broken benchmark file Mar 15, 2019
src Add turbo mode Apr 5, 2019
.gitignore Add benchmark Mar 13, 2019
Cargo.lock Add benchmark Mar 13, 2019
Cargo.toml Add benchmark Mar 13, 2019 Update README Apr 5, 2019



$ rustc --version
rustc 1.32.0 (9fda7c223 2019-01-16)
$ cargo --version
cargo 1.32.0 (8610973aa 2019-01-02)

$ cargo build --release
$ cargo run --release --bin nes-emulator

The emulator loads a ROM in iNES format located at the hardcoded path roms/mario.nes.

On Windows, you may need to statically-link SDL by enabling the appropriate feature:

$ cargo run --release --bin nes-emulator --features 'sdl2/bundled'


The emulator has been tested with an Xbox 360 controller, but should work with any controller the SDL library recognizes.

Additionally, these keyboard keys control the emulator:

  • Escape: Exits the emulator
  • Pause: (Developer use) Breaks a command-line debugger
  • F5: Saves a savestate
  • F6: Loads the most recent savestate
  • F7: Restart the current ROM and playback a video of recorded inputs
  • F8: Set video recording start point
  • Tab: Toggles "turbo mode", which removes the 60 FPS limit.
You can’t perform that action at this time.