nes-js

0.0.1 • Public • Published

nes-js

This is JavaScript NES(Famicom) emulator which runs on browser.

Demo

Demo

Screenshot

Screen shot

Features

  • iNES format rom image support
  • Renders with Canvas
  • Audio support with WebAudio
  • Runs on browser

Browser

How to use

<head>
  <script type="text/javascript" src="https://cdn.rawgit.com/takahirox/nes-js/v0.0.1/build/nes.min.js"></script> 
  <script type="text/javascript" >
    function init() {
      var url = 'url to rom image';
      var request = new XMLHttpRequest();
      request.responseType = 'arraybuffer';
 
      request.onload = function() {
        var buffer = request.response;
        var nes = new NesJs.Nes();
 
        nes.setRom(new NesJs.Rom(buffer));
        nes.setDisplay(new NesJs.Display(document.getElementById('gameCanvas')));
        nes.setAudio(new NesJs.Audio());
 
        window.onkeydown = function(e) { nes.handleKeyDown(e); };
        window.onkeyup = function(e) { nes.handleKeyUp(e); };
 
        nes.bootup();
        nes.run();
      };
 
      request.open('GET', url, true);
      request.send(null);
    }
  </script> 
</head>
 
<body onload="init()">
  <p>
    <canvas id="gameCanvas" width="256" height="240"></canvas>
  </p>
</body>

NPM

How to install

$ npm install nes-js

How to build

$ npm install
$ npm run all

Default key configuration

This table shows the key - joypad configuration set by

  window.onkeydown = function(e) { nes.handleKeyDown(e); };
  window.onkeyup = function(e) { nes.handleKeyUp(e); };
key joypad
enter start
space select
cursor-left left
cursor-up up
cursor-right right
cursor-down down
x A
z B

APIs

T.B.D.

  • NesJs
    • Nes
      • setRom()
      • setDisplay()
      • setAudio()
      • bootup()
      • run()
      • handleKeyDown()
      • handleKeyUp()
    • Rom
    • Display
    • Audio

TODO

  • Performance optimization
  • Support more many mappers
  • Support unofficial CPU instructions

Links

Package Sidebar

Install

npm i nes-js

Weekly Downloads

26

Version

0.0.1

License

MIT

Last publish

Collaborators

  • takahirox