Fearless-NES icon indicating copy to clipboard operation
Fearless-NES copied to clipboard

A NES emulator written in Rust

build badge

Fearless-NES

Fearless-NES is a work-in-progress Nintendo enterntainment system emulator written in Rust.

Screenshots

GUI Kirby's Adventure Super Mario Bros. 3 Legend Of Zelda Mega Man III Battletoads Super Mario Bros

Features

  • Cycle-accurate CPU emulation
  • Very accurate PPU emulation
  • Basic mapper support
  • Basic GUI
  • Save states
  • Gamepad support
  • Controllable overscan
  • Game loading using the NES 2.0 XML Game Database
  • Custom key bindings and mouse cursor auto-hide

Build instructions:

  1. Install Macroquad dependencies if you use Linux.
  2. Build with cargo run --release and enjoy !

Accuracy

For accuracy tests, see TESTS.md. Run these with 'cargo test'.

Supported mappers

Mapper Example Games
0 (NROM) Super Mario Bros, Donkey Kong, Balloon fight
1 (MMC1) Final Fantasy, Legend of Zelda, Mega Man 2
2 (UxROM) Castlevania, Mega Man, Contra
3 (CNROM) Solomon's Key, Arkista's Ring
4 (MMC3)* Kirby's Adventure, Mega Man 3-6, Ninja Gaiden II: ...
7 (AxROM) Battletoads, Jeopardy!
  • Some MMC3 games like Mega Man III have major graphical issues, but SMB3 a Kirby's adventures do work.

With these mappers, Fearless-NES supports 84 % of commercial NES games.

TODO

  • [ ] (frontend) user-defined RGB palettes

  • [ ] (frontend) NTSC filter

  • [ ] (core) iNES 2.0 support

  • [ ] (core) rest of the APU

  • [ ] (core) advanced mappers such as MMC5, VRC2/4...

  • [ ] (core) various accuracy tests

  • [ ] (dev) better (and more) integration tests

Controls

Keyboard

NES controller Keyboard
A F
B D
Select Space
Start Enter
Up ArrowUp
Down ArrowDown
Right ArrowRight
Left ArrowLeft

Gamepad

Gamepad Layout