This is my NES emulator written in C#. A great deal of this is based on an emulator that can be found here.
I use Visual Studio 2019 Community Edition while developing this project, so if you have it available you can simply open the solution file - otherwise you will have to add in the appropriate project files into your own solution.
For now, you will need to also include csPixelGameEngine in your solution.
Use the EmulatorApp for the main/default project.
Use the NESEmulatorApp for the main/detault project.
Note: This project adds another nuget package for OpenAL that is ported to work with .NET core. It appears to be a forked project that is not supported by the people who support OpenAL.
You must go to OpenAL.org and download the OpenAL SDK, if you do not already have it installed.
MacOS ships with OpenAL installed by default.
Space - Start/Stop emulator R - Reset F - Run a single frame of emulation C - Step one CPU instruction
A - Start S - Select Z - B X - A Arrows control D-pad
Player 2 controls not yet supported.
- 6502 CPU - Complete (undocumented opcodes not supported)
- 2C02 PPU - Complete
- 2A03 APU - In Progress
- Pulse channels 1 & 2 - Complete
- Triangle channel - Complete
- Noise channel - Complete
- DMC channel - In Progress, still buggy
- Mappers - In Progress
- Battery saves - Not yet implemented
- Mapper 000 - Complete
- Mapper 001 - Complete
- Mapper 002 - Complete
- Mapper 003 - Complete
- Mapper 004 - In progress (need to test IRQ handling)