This is a Nintendo emulator written in Rust.
The goal of this project is purely educational to both learn Rust and also learn more about systems programming/writing an emulator. This emulator uses NTSC timing.
The emulator supports the following mappers:
- Mapper_000 (Supported Games)
- Mapper_001 (Supported Games)
- Mapper_002 (Supported Games)
- Mapper_003 (Supported Games)
- Mapper_004 (Supported Games)
- Mapper_066 (Supported Games)
To run this project, Rust needs to be installed: Download Rust
git clone https://github.com/caklimas/rust-nes.git
cargo build --release
Navigate to /target/release folder. There are two ways to run a ROM.
The first is specifying the location of a .nes or .qks file:
rust-nes.exe {path-to-rom}
Ex: rust-nes.exe "C:\ROMS\test-rom.nes"
The second is running the executable and then dragging and dropping a .nes or .qks file into the window
This is the keyboard mapping from the NES Controller:
| NES | Keyboard |
|---|---|
| A | Z |
| B | X |
| Start | Enter |
| Select | R-Shift |
| Up | Up |
| Down | Down |
| Left | Left |
| Right | Right |
This emulator also supports quicksave and quickload. To save hit F7 which will save it under a .qks file. To load that simply pass it in as an argument in place of the .nes file


