View on GitHub

SimpleNES is an NES emulator hacked together for nothing but fun.
Programmed with C++11 and the SFML library for graphics.
Roughly 40-50% of games should work (ie. games that use either no mapper or mappers 1, 2 or 3)..

Examples of games that have been tested to run (but NOT limited to):
(USA/Japan or World versions only i.e. NTSC compatible) Here's a big list of games that match the supported specs from SimpleNES.
(Unlike the list above, these aren't tested. Some may or may not work)


NES Screenshot 1
NES Screenshot 2
NES Screenshot 3
NES Screenshot 4
NES Screenshot 5
NES Screenshot 6


Linux 64-bit Windows 32-bit

ROMs available here for testing.


Here's a playlist of SimpleNES in action!


You need : Compiling is straight forward with cmake, just run cmake on the project directory with CMAKE_BUILD_TYPE=Release or set it through the GUI and you'll get Makefile or equivalent for your platform, with which you can compile the emulator.
On any Linux distribution or macOS, these are the typical steps :
$ git clone
$ cd SimpleNES
$ mkdir build/    cd build/
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j4    #Replace 4 with however many cores you have to spare


Just pass the path to a .nes image like
$ ./SimpleNES ~/Games/SuperMarioBros.nes
To set size of the window,
$ ./SimpleNES -w 600 ~/Games/Contra.nes
For supported command line options, try
$ ./SimpleNES -h


Keybindings can be configured with keybindings.conf.
Default keybindings:

Player 1:

Button Mapped to
Start Return/Enter
Select Right Shift
Up W
Down S
Left A
Right D

Player 2:

Button Mapped to
Start Numpad9
Select Numpad8
A Numpad5
B Numpad6
Up Up
Down Down
Left Left
Right Right


This code is in public domain until an Open Source License is picked.
NES ROMs are subject to the respective studio's terms.