A NES emu in Rust
- Implements full CPU instruction emulation.
- Passing 110 tests out of 136 tests from 100thCoin/AccuracyCoin
- Support iNES mapper 0-4, 7
- Accurate PPU VBLANK timing & NMI control
- Plays Battletoads
- Battery save support through whole RAM snapshot
Make sure you have SDL2 installed for the main branch (egui is used in separated branch) for static linking, other than that just run:
cargo build --releaseTo build the emulator then use
./target/release/emulator <rom path>To start the emulator and load the ROM.
Currently only supports single controller with static binding:
| Key | Controller |
|---|---|
| Z | A |
| X | B |
| Return | Start |
| Space | Select |
| Arrow keys | D-Pad |
AccuracyCoin run all result screen:

-
Improve DMA accuracy by implementing RDY line control, get/put cycles, and cycle alignment rather than current hard-coded stuffImplementation done, but not passing tests. - Implement correct instruction behavior for SHA, SHS, SHX, SHY to
account for RDY line assertion when DMA occurrence
- Unknown requirements for this.
- Improve NMI overlapping behavior
- Improve PPU accuracy
- Improve APU accuracy
- Add randomized RAM initialization for components
- Add widgets for emulator UI
- Add save state support




