Home

Awesome

NESNES

NESNES (New EcmaScript NES) is a pure JS NES emulator. Try the demo!

NESNES screenshot

Installation

NESNES can be installed through npm:

npm install nesnes

Getting started

NESNES can be used as follows:

var NesNes = require("nesnes");

var emulator = new NesNes( canvas );
emulator.load( pathToRom, callback );

These are the parameters being used:

Build standalone

If you're running NESNES in the browser and don't want to use Browserify for your page, you can build a standalone version:

npm install
make

This will create nesnes.js in dist/, which exposes a global NesNes object when included in your web page. Note that this file also comes packaged with the npm module.

Configuration

Default configuration (keyboard and gamepad input) can be found in config.json. Input can also be configured programmatically:

// configure the first player controller to use the gamepad
emulator.input.configure(0, "gamepad", {
	"buttons": {
		"0": "b",
		"1": "a",
		"8": "select",
		"9": "start"
	},
	"axes": {
		"0": "horizontal", // map axis 0 to left/right
		"1": "vertical", // map axis 1 to up/down
	}
})

See config.json for an example configuration.

Note that multiple input types can be enabled for a single controller. For example, a single controller can listen to both the keyboard and a gamepad.

Testing

NESNES includes a basic test server. You can run it by executing:

bin/nesnes-server

from a directory containing NES ROMs. This starts up an HTTP server at localhost, serving only a simple page containing a NESNES instance and a ROM selection input to be able to test games. NESNES is recompiled on every page load to make it easy to see how your changes affect the emulator.

A lot of third party test ROMs are included in the test directory to debug specific parts of the emulator.

My game doesn't work!

Please file an issue or send a pull request. :)