npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@superpixeldx/nesnes

v0.3.1

Published

New EcmaScript NES emulator

Downloads

5

Readme

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:

  • canvas: a <canvas> DOM object to which the video output will be rendered. Not required (though nothing will be rendered if no canvas is given).
  • pathToRom: the path to an INES rom file (most ROMs found on the internet are in this format)
  • callback: function to be executed once the ROM has been loaded and initialized. If true is passed instead of a function the ROM will automatically start playing once it has been loaded.

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. :)