All Projects → takahirox → Nes Js

takahirox / Nes Js

Licence: mit
JavaScript NES(Famicom) emulator

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Nes Js

Nes Rust
NES emulator written in Rust + WASM
Stars: ✭ 141 (+7.63%)
Mutual labels:  nes, webaudio, emulator
Jsnes Web
A browser UI for JSNES, a JavaScript NES emulator
Stars: ✭ 398 (+203.82%)
Mutual labels:  nes, webaudio, emulator
Rustynes
👾 An NES emulator by Rust and WebAssembly
Stars: ✭ 399 (+204.58%)
Mutual labels:  nes, emulator
Provenance
iOS & tvOS multi-emulator frontend, supporting various Atari, Bandai, NEC, Nintendo, Sega, SNK and Sony console systems… Get Started: https://wiki.provenance-emu.com |
Stars: ✭ 4,732 (+3512.21%)
Mutual labels:  nes, emulator
Mesen
Mesen is a cross-platform (Windows & Linux) NES/Famicom emulator built in C++ and C#
Stars: ✭ 814 (+521.37%)
Mutual labels:  nes, emulator
Anese
Another NES Emulator - written for fun & learning - first implementation of wideNES
Stars: ✭ 323 (+146.56%)
Mutual labels:  nes, emulator
Hnes
🎮 NES Emulator written in Haskell
Stars: ✭ 340 (+159.54%)
Mutual labels:  nes, emulator
Jsnes
A JavaScript NES emulator.
Stars: ✭ 5,354 (+3987.02%)
Mutual labels:  nes, emulator
SaltyNES
A NES emulator in WebAssembly
Stars: ✭ 69 (-47.33%)
Mutual labels:  emulator, nes
Retro Go
Retro emulation for the ODROID-GO
Stars: ✭ 73 (-44.27%)
Mutual labels:  nes, emulator
Nes ebook
A mini book on writing NES emulator using rust lang
Stars: ✭ 38 (-70.99%)
Mutual labels:  nes, emulator
Nescala
A Nes Emulator written in Scala
Stars: ✭ 79 (-39.69%)
Mutual labels:  nes, emulator
Ktnes
A multiplatform NES emulator written in Kotlin
Stars: ✭ 257 (+96.18%)
Mutual labels:  nes, emulator
NostalgiaLite
Three game emulators: FC(Nes), GG, GBC for Android
Stars: ✭ 85 (-35.11%)
Mutual labels:  emulator, nes
first nes
Create your own games for the Nintendo Entertainment System! This "starter" game is easily extensible for your own projects. Includes references.
Stars: ✭ 94 (-28.24%)
Mutual labels:  emulator, nes
Nestur
The NES (emulator) you left outside in the rain but let dry and still kind of works
Stars: ✭ 505 (+285.5%)
Mutual labels:  nes, emulator
Nes.swift
An NES emulator written in Swift
Stars: ✭ 103 (-21.37%)
Mutual labels:  nes, emulator
awesome-emu-resources
A curated list of emulator development resources
Stars: ✭ 26 (-80.15%)
Mutual labels:  emulator, nes
helios
A Java-based Sega Mega Drive/Genesis emulator. And other systems too.
Stars: ✭ 14 (-89.31%)
Mutual labels:  emulator, nes
Embeddednes
A portable NES simulator for embedded processors
Stars: ✭ 26 (-80.15%)
Mutual labels:  nes, emulator

nes-js

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

Demo

Demo

Demo with Three.js (It has a performance issue!)

WebVR Demo with Three.js (It has a serious performance issue!)

AR Demo with Three.js and jsartoolkit5 (It has a performance issue!)

Screenshot

Screen shot

Screen shot with Three.js

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
  • Gamepad API support

Links

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].