/C-Sharp-NES-Emulator

A Well Documented C# NES Emulator

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

A fully documented NES Emulator written in c#

New features and overall codebase improvements are either implemented or are being worked on

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.

Features currently being worked on:

-APU support, meaning audio will finally be supported

-PPU filters, including a gameboy filter in addition to a virtual boy filter

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

The following mappers are implemented:

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.

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