jsSMS is an emulator for Sega Master System & Game Gear ROMs written in JavaScript and designed to be fast on mobile browsers.
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.
Video of the talk about JSSMS I gave at Reject.js 2013. There are also the slides in HTML.
- Sound is supported on the outdated dynamicaudio branch.
- 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.
- Support latest IE.
- Experiment with web workers for recompiled code generation.
- Experiment with generator for calling interrupts.
- Experiment with asm.js.
jsSMS - A Sega Master System/Game Gear emulator in JavaScript Copyright (C) 2012-2013 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/.