JavaScript Sega Master System & Game Gear dynamic recompiling emulator.
JavaScript Smarty HTML
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
css
lib
min
rom
src
.eslintrc
.gitattributes
.gitignore
.prettierrc
CONTRIBUTING.md
Gruntfile.js
LICENSE
README.md
benchmark.html
index.html
package.json
yarn.lock

README.md

jsSMS

jsSMS is a dynamic recompiling emulator for Sega Master System & Game Gear ROMs written in JavaScript and designed to be fast on mobile browsers.

Code

Originally, this is a JavaScript port of JavaGear by Chris White.

Original copyright: Copyright (C) 2002-2008 Chris White

The code then evolved from a basic interpreter to a complex recompiler able to run on mobile at full speed.

The recompilation code is located in src/compiler folder as well as technical insights.

Related talk

Video of the talk about JSSMS I gave at Reject.js 2013. There are also the slides in HTML.

Current state

  • Though state save and load functions are ported, there are not used and should be more JavaScript friendly (using JSON for example, see JSNES for an example of implementation).
  • Lightgun is not yet supported.
  • The recompiler is not compatible with Closure Compiler in advanced optimizations mode and will likely never be.

Many parts of the script are borrowed from JSNES, a NES emulator in JavaScript by Ben Firsh.

If you are looking for another SMS emulator in JavaScript, go to Miracle.

ToDos

  • Support latest IE.
  • Experiment with web workers for recompiled code generation.
  • Experiment with generator for calling interrupts.
  • Experiment with asm.js.

License

jsSMS - A dynamic recompiling emulator for Sega Master System & Game Gear written in JavaScript

Copyright (C) 2018 Guillaume Cedric Marty (https://github.com/gmarty)

Based on JavaGear Copyright (c) 2002-2008 Chris White

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.