/Emulator.NES

📺 Nintendo Entertainment System emulator written in C#.

Primary LanguageC#GNU General Public License v3.0GPL-3.0

Emulator.NES Linux Build Status Windows Build Status

A C# emulator for Nintendo Entertainment System (NES) hardware.

Running

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

Controls are currently hardcoded.

  • A/S — A/B
  • Arrow Keys — Up/Down/Left/Right
  • Enter — Start
  • Right Shift — Select

Compatibility

For a list of games known to be playable, visit the wiki page.

Currently, the following mappers are implemented:

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.

Compilation

Emulator.NES uses C# 7 language features, so requires a compiler that supports them.

Windows

Visual Studio 2017 is sufficient to compile.

Linux

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

More Title Screens

Title screens are pretty, so below are some more title screens of games running in Emulator.NES.