Skip to content

amhndu/SimpleNES

Repository files navigation

SimpleNES

An NES emulator written in C++ (now with audio!)

Roughly 50-60% of games should work (ie. games that use either no mapper or mappers 1, 2, 3 and experimental support for 4, 7, 66 and 11).

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
  • Arch Rivals
  • etc...

Screenshots

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

Videos

OUTDATED(missing audio) YouTube Playlist

Compiling

You need:

  • SFML 2.* 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

If SFML is installed on a non-standard location, specify SFML_ROOT as a cmake variable, e.g. on Arch Linux, after installing sfml2 from AUR:

$ cd SimpleNES && mkdir build/ && cd build/
$ cmake -DCMAKE_BUILD_TYPE=Release -DSFML_ROOT=/opt/sfml2 ..
$ make -j8

See also: compile.yaml for platform specific instructions

Download SimpleNES

  1. Download an executable based on your platform from the latest run on Github Actions OR Latest Release
  2. Install sfml

Installing SFML

  • Windows: vcpkg install sfml. Alterntaively, download from SFML. See: compile.yaml for instructions on pinning sfml to version 2
  • Debian/Ubuntu/derivates: sudo apt install -y libsfml-dev
  • Arch/etc: yay -S sfml2
  • MacOS: brew install sfml@2 && brew link sfml@2

Running

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
SimpleNES is a simple NES emulator.
It can run off .nes images.
Set keybindings with keybindings.conf

Usage: SimpleNES [options] rom-path

Options:
-h, --help             Print this help text and exit
--mute-audio           Mute audio
-s, --scale            Set video scale. Default: 3.
                       Scale of 1 corresponds to 256x240
-w, --width            Set the width of the emulation screen (height is
                       set automatically to fit the aspect ratio)
-H, --height           Set the height of the emulation screen (width is
                       set automatically to fit the aspect ratio)
                       This option is mutually exclusive to --width
-C, --conf             Set the keybindings file's path. The default 
                       keybindings file is keybindings.conf.

Controller

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

About

An NES emulator in C++

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 9

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy