SimpleNES is a simple, work in progress nes emulator. It is designed to run classic NES games and is built with simplicity and portability in mind.
- CPU Emulation:
- Official instructions
- Unofficial instructions
- PPU Rendering:
- Background rendering
- Sprite rendering
- APU Output:
- Pulse channel 1
- Pulse channel 2
- Triangle channel
- Noise channel
- Delta Modulation Channel (DMC)
- Mapper 00:
- NROM
- Mapper 01:
- MMC1
- SxROM
- Mapper 02:
- UxROM
- Mapper 07:
- AxROM
- Mapper 71:
- UxROM
To build and run the emulator, ensure you have the following installed:
- CMake (version 3.15 or higher)
- A GCC compatible compiler
- CSFML
Clone the repository:
git clone https://github.com/EtienneMaire37/Simple-NES
cd Simple-NESBuild the project using CMake:
cmake -B build && cmake --build build --config ReleaseThe executable will be located in the build/bin/ folder.
- Run the emulator:
simple-nes[.exe] <path-to-rom>
- Controls:
| Action | Key |
|---|---|
| Controller A | C |
| Controller B | X |
| Controller D-pad | Arrow keys |
| Controller Start | LShift |
| Controller Select | LControl |
| Pause/Resume emulation | Space |
| Change palette | Ctrl+P |
| Reset | Ctrl+R |
| Power-cycle | Ctrl+U |
| Switch TV system (NTSC or PAL) | Ctrl+T |
| Toggle fullscreen | F11 |
Suggestions and bug reports can be submitted to Issues.
This project is licensed under the MIT License. See the LICENSE file for details.





