An NES emulator written in C++ for nothing but fun.
Roughly 40-50% of games should work (ie. games that use either no mapper or mappers 1, 2 ,3 ,4 (BUG),7 & 66 partial 11).
Added APU experimental works with the sdl2 library in linux i have encountered a problem with apu enabled only the debug mode works and few games crash.
the build release gives a black screen maybe there is a bug in the apu.
Examples of games that have been tested to run (but NOT limited to):
(USA/Japan or World versions only i.e. NTSC compatible)
- Super Mario Bros.
- Contra
- Adventure Island
- Ninja Gaiden
- Wrecking Crew
- Megaman and Megaman 2
- Mario Bros.
- Donky Kong and Donkey Kong Jr.
- Battle City
- Paperboy
- Legend of Zelda
- Pacman
- Tennis
- Excitebike
- Nightmare Elm Street
- Cabal
- Battletoads
- Battletoads & Double Dragon
- Arch Rivals
- etc...
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)
Executables:
You need:
- SFML 2.0+ development headers and library
- C++11 compliant compiler
- CMake build system
Compiling is straight forward with cmake, just run cmake on the project directory with CMAKE_BUILD_TYPE=Release and you'll get Makefile or equivalent for your platform, with which you can compile the emulator
For e.g., on Linux/OS X/FreeBSD:
$ git clone https://github.com/amhndu/SimpleNES
$ 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 |
A | J |
B | K |
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 |