Simple C++ NES emulator, dependant only on Glew and ImGUI.
This emulator is the most barebone possible emulator, mostly a labor of love and curiosity. Almost no feature present - it is mostly for programmers who wants to understand the internals of the NES emulation. The code was written with difference of months between check-ins, most of the time at night, thus quality if poor. All the NES related code is the nes.h/.cpp pair of files. APU is using the amazing Blargg's code. ImGUI is used as interface and Glew to use OpenGL code. Window loop is handmade.
Built and tested only on Windows, Visual Studio 2015 and 2017. Depends on:
- Glew 1.13
- Glm 0.98
- ImGui (included)
Define the environment variable LIB_PATH pointing to the parent folder that contains both libraries. Just open the solution under project, build and launch. The roms should be in the folder 'Bin'.
- NTSC only roms.
- NROM (Mapper 000)
- MMC1 / SxROM (Mapper 001)
- 0UxROM (Mapper 002)
- CNROM (Mapper 003)
- MMC3 (Mapper 004)
Run the emulator, click on the windows menu (upper left). Double-click on cartridge and start the game.
Keys are:
- up/down/left/right arrows
- enter=start
- shift=select
- z=a
- x=b
- Support for more mappers
- Gamepad support
- Configuration load/save
- Console load/save state
- Pal versions!!!
- Memory management
- The incredible NesDev wiki and community: http://wiki.nesdev.com/w/index.php/Nesdev.
- Blargg's APU sound chip emulator: http://blargg.8bitalley.com/libs/audio.html#Nes_Snd_Emu
- The amazing ImGui: https://github.com/ocornut/imgui
- The most precise NES emulator: https://github.com/SourMesen/Mesen