A C# emulator for Nintendo Entertainment System (NES) hardware.
You can pick up the latest build from AppVeyor. Simply drag & drop an NES ROM file into it to start. Right click the window for options.
Emulator.NES will render video with OpenGL or Direct3D, depending on your platform. A slower software-only renderer is also included for systems that support neither.
Controls are currently hardcoded.
- A/S — A/B
- Arrow Keys — Up/Down/Left/Right
- Enter — Start
- Right Shift — Select
For a list of games known to be playable, visit the wiki page.
Currently, the following mappers are implemented:
- 0 - NROM
- 1 - MMC1
- 2 - UxROM
- 3 - CNROM
- 4 - MMC3
- 7 - AxROM
- 9 - MMC2 (Mike Tyson's Punch-Out!!)
- 10 - MMC4
- 11 - Color Dreams
- 66 - GxROM
- 71 - Camerica
- 79 - NINA-003-006
- 94 - Senjou no Ookami
- 140 - Jaleco
- 155 - MMC1A
- 180 - Crazy Climber
- 206 - DxROM
These mappers theoretically provide support for ~90% of all games ever published, largely according to this list and NesCartDB. Whether a game runs or not is more dependent on how well the CPU and PPU support it.
The APU is currently not implemented, which means no games output audio.
Emulator.NES uses C# 7 language features, so requires a compiler that supports them.
Visual Studio 2017 is sufficient to compile.
msbuild from Mono should be used to build, but the version included in most distro repositories is not
new enough to have C# 7 support (or may not have
msbuild). Instead, install a Mono version directly from the Mono site.
Then, to compile:
$ nuget update -self $ nuget restore $ msbuild /property:Configuration=Release dotNES.sln
Title screens are pretty, so below are some more title screens of games running in Emulator.NES.