The main resource used was the NES Dev Wiki --> http://wiki.nesdev.com/w/index.php/Nesdev_Wiki
A C# emulator for Nintendo Entertainment System (NES) hardware.
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
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
The APU is currently not implemented, which means no games output audio.
As of 3/14/2021, the APU is being implemented, although some additional time is needed to fine tune some things.
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