An emulator for the Nintendo Entertainment System (NES) console, developed in C++.
- Cross Platform (Windows / Linux / OSX)
- Joystick Support
- Mappers
- Save Game State
- Developer Tools (CPU/RAM/PPU Inspector)
- Load ROMs as .nes files
- Wiki Pages
Follow the steps below to build and run the project:
-
Install CMake
Make sure CMake is installed on your system. You can download and install it from the CMake Downloads page. -
Clone Repository
git clone --recurse-submodules https://github.com/arminkz/NES.git cd NES -
Build and Run
mkdir build cd build cmake .. cmake --build . ./NES
- APU sound is not perfect. Sound artifacts might be heard.
- Right now we are using GLFW for the windowing. we should migrate to SDL.
| Peripheral | Address Start | Address End | Capacity |
|---|---|---|---|
| RAM (Main Memory) | 0x0000 | 0x1FFF | 8KB (Mirrored 2KB) |
| Program ROM | 0x4020 | 0xFFFF |
| Peripheral | Address Start | Address End | Capacity |
|---|---|---|---|
| Pattern Memory | 0x0000 | 0x1FFF | 8KB |
| Name Table | 0x2000 | 0x2FFF | 2KB |
| Palettes Memory | 0x3F00 | 0x3FFF |

