└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Emulators written in JavaScript 2 | 3 | A list of emulators written in the JavaScript programming language. 4 | 5 | This list started as a compilation of JavaScript emulators posted to Echo JS over the years. If you know about any missing emulators, please consider adding them to the collection : the source for this page is available on [GitHub](https://github.com/fcambus/jsemu). Thank you in advance. 6 | 7 | Lastly, if you are into JavaScript, you might enjoy [Echo JS](http://www.echojs.com/). 8 | 9 | ## Acorn 10 | 11 | - [ElkJS](http://elkjs.azurewebsites.net/) - JavaScript based Acorn Electron emulator ([Source](https://github.com/dmcoles/elkjs)) 12 | - [Acorn Atom Emulator](http://phils-place.co.uk/HTeMuLator/atom/) - by Phil Mainwaring. Type "OLD" for an Easter Egg 13 | - [JSBeeb](http://bbc.godbolt.org) - JavaScript BBC Micro emulator ([Source](https://github.com/mattgodbolt/jsbeeb)) ([Development blog](http://xania.org/Emulation)) 14 | 15 | ## Amstrad 16 | 17 | - [CPCBox](http://www.cpcbox.com) - Amstrad CPC emulator in JavaScript 18 | - [Roland](http://roland.retrolandia.net) - An Amstrad CPC emulator written in JavaScript 19 | 20 | ## Apple 21 | 22 | - [Apple 1js](https://www.scullinsteel.com/apple1/) - by Will Scullin 23 | - [Apple IIjs](https://www.scullinsteel.com/apple2/) - An Apple ][ Emulator in JavaScript 24 | - [a2](http://porkrind.org/a2/) - A fast, WebGL optimized Apple ][+ emulator. 25 | - [Apple2JS](http://www.megidish.net/apple2js/) - A JavaScript emulator for the Apple II 26 | - [Yet Another Apple 2+ in JavaScript](http://www.thomasskibo.com/6502/apple2/) - by Thomas Skibo 27 | 28 | ## Atari 29 | 30 | - [EstyJS](https://estyjs.azurewebsites.net) - A pretty fast and functional JavaScript Atari ST emulator ([Source](https://github.com/dmcoles/estyjs)) 31 | - [Javatari.js](http://javatari.org) - Atari 2600 emulator by Paulo Augusto Peccin. ([Example cartridges online](http://www.2600online.com/adventure.html)) ([Source](https://github.com/ppeccin/javatari.js)) 32 | - [jsA8E](http://zerstoerung.de/jsa8e/) - JavaScript version of the A8E Atari 800 XL Emulator 33 | 34 | ## Commodore 35 | 36 | - [Commodore LCD emulator](http://commodore-lcd.lgb.hu/jsemu/) - by Gabor Lenart 37 | - [Commodore PET](http://www.thomasskibo.com/6502/pet2001/) - by Thomas Skibo 38 | - [JSC64](http://www.kingsquare.nl/jsc64) - Commodore 64 emulator written in JavaScript ([Source](https://github.com/Reggino/jsc64)) 39 | - [Kim1](http://www.robsayers.com/jskim1/) - emulation in JavaScript by Rob Sayers ([Source](https://github.com/rsayers/jskim1)) 40 | - [SAE](http://scriptedamigaemulator.net) - Scripted Amiga Emulator ([Source](https://github.com/naTmeg/ScriptedAmigaEmulator)) 41 | - [VIC-20 Emulator](http://mdawson.net/vic20chrome/vic20.php) - JavaScript VIC-20 emulator 42 | - [VICE.js](http://vice.janicek.co/) - Versatile Commodore Emulator for JavaScript ([Source](https://github.com/rjanicek/vice.js)) 43 | 44 | ## DEC 45 | 46 | - [PDP-1 running the SpaceWar game](http://www.masswerk.at/spacewar/) and the [Minskytron demo](http://www.masswerk.at/minskytron/) - by Norbert Landsteiner 47 | - [Javascript PDP 11](http://skn.noip.me/pdp11/pdp11.html) - PDP-11/70 emulator with simulated front panel and a choice of operating systems. By Paul Nankervis 48 | - [PDP-11 Emulator](http://pdp11.aiju.de/) - A JavaScript PDP-11 emulator running UNIX Sixth Edition. By Julius Schmidt 49 | - [pdp11-js](https://pdp11-js.googlecode.com/git/unixv6.html) - PDP-11 emulator with UNIX V6. By Takahiro Aoyagi 50 | 51 | ## Nintendo 52 | 53 | - [1964js](https://github.com/schibo/1964js) - JavaScript port of the 1964 N64 emulator for Windows 54 | - [CycloaJS](http://ledyba.org/utl/CycloaJS/) - JavaScript NES Emulator ([Source](https://github.com/ledyba/CycloaJS)) 55 | - [GBA.js](http://endrift.github.io/gbajs/) - Game Boy Advance in the Browser 56 | ([Source](https://github.com/endrift/gbajs)) 57 | - [GameBoy Online](http://grantgalitz.github.io/GameBoy-Online/) - JavaScript GameBoy Color emulator ([Source](https://github.com/grantgalitz/GameBoy-Online)) 58 | - [IodineGBA](http://taisel.github.io/IodineGBA/) - A GameBoy Advance emulator written entirely in JavaScript ([Source](https://github.com/taisel/IodineGBA)) 59 | - [JS-VBA-M](https://dl.dropboxusercontent.com/u/20328726/vbamjs/index.html) - JavaScript port of VisualBoyAdvance-M, a Game Boy Color / Advance emulator 60 | - [JSNES](https://fir.sh/projects/jsnes/) - A JavaScript NES emulator ([Source](https://github.com/bfirsh/jsnes)) 61 | - [Nezulator](http://zelex.net/nezulator/) - A NES emulator in JavaScript 62 | - [XNES](http://tjwei.github.io/xnes/) - Experimental JavaScript Super Nintendo emulators ([Source](https://github.com/tjwei/xnes)) 63 | - fam - JavaScript NES emulator ([Source](https://github.com/bashi/fam/)) 64 | - jsGB - A GameBoy emulator in JavaScript ([Source](https://github.com/Two9A/jsGB)) 65 | - [mupen64plus](http://jquesnelle.github.io/mupen64plus-ui-console/) - A port of the popular Nintendo 64 emulator for the Web ([Source](https://github.com/jquesnelle/mupen64plus-ui-console/)) 66 | - [n64js](http://hulkholden.github.io/n64js/) - An N64 emulator in JavaScript ([Source](https://github.com/hulkholden/n64js)) 67 | 68 | ## Sega 69 | 70 | - [jsSMS](http://gmarty.github.io/jsSMS/) - JavaScript Sega Master System & Game Gear emulator ([Source](https://github.com/gmarty/jsSMS)) 71 | - [Miracle](http://xania.org/miracle/miracle.html) - Sega Master System emulator ([Source](https://github.com/mattgodbolt/Miracle)) 72 | 73 | ## Sinclair 74 | 75 | - [Enterprise-128 JavaScript Emulator](http://ep.lgb.hu/jsep/demo/?autostart=yes) - by Gábor Lénárt, based on JSSpeccy 76 | - [JSSpeccy](http://jsspeccy.zxdemo.org) - A ZX Spectrum emulator in JavaScript ([Source](https://github.com/gasman/jsspeccy2)) 77 | - [JtyOne Online ZX81 Emulator](http://www.zx81stuff.org.uk/zx81/jtyone.html) - by Simon Holdsworth 78 | - [Qaop/JS](http://torinak.com/qaop) - ZX Spectrum emulator 79 | - [ZX80 Emulator](http://nocanvas.zame-dev.org/0004/) - JavaScript ZX80 Emulator 80 | - [jBacteria](http://jbacteria.retrolandia.net/) - The smallest JavaScript Spectrum emulator 81 | 82 | ## Tandy 83 | 84 | - [MC-10 Emulator](http://mc-10.com/) - Emulator for the TRS-80 MC-10 microcomputer 85 | - [TRS-80 Model III Emulator](http://people.cs.ubc.ca/~pphillip/trs80.html) a Javascript emulator for the TRS-80 Model III 86 | - [JS Mocha](http://www.haplessgenius.com/mocha/) - The HTML5 CoCo 2 Emulator 87 | - [jTandy](http://jtandy.retrolandia.net) - Another JavaScript TRS-80 emulator 88 | 89 | ## Multi-system Emulators 90 | 91 | - [JSMESS examples](https://archive.org/details/historicalsoftware) - The JavaScript MESS (Multi Emulator Super System) ([Source](https://github.com/jsmess/jsmess)) ([Notes](https://github.com/jsmess/jsmess/wiki)) 92 | - [PCE](https://github.com/jsdf/pce) - PC emulators in JavaScript (Atari ST, [IBM PC 5150](https://jamesfriend.com.au/pce-js/ibmpc-win/), [Macintosh](https://jamesfriend.com.au/pce-js/), RC759 Piccoline) 93 | - [RetroArch](http://toadking.com/retroarch/) - JavaScript port of RetroArch (bundles Gambatte (Gameboy), Genesis Plus GX, Handy (Lynx), Snes9x Next, VBA Next (GameBoy Advance), Tyrquake and FinalBurn Alpha) 94 | - [RetroWeb](http://retroweb.maclab.org/articles/Introduction) - collection of Javascript emulators and boot media, including Apple-IIe (VisiCalc), Macintosh (System 1.0), Atari 1040ST, Commodore 64, Amiga 500 (Workbench 1.3), IBM PC Model 5150 (PC-DOS, CP/M-86, Cassette Basic), IBM PC XT (DOS, GEM 1.2, VisiCalc, Windows 1.01, 8088 Corruption demo), RC759 Piccoline (Eliza, Bil-simulation, Concurrent CP/M-86), TRS-80. 95 | 96 | ## PC Emulators 97 | 98 | - [JS/Linux](http://bellard.org/jslinux/) - JavaScript PC emulator 99 | - [JsDOSBox](http://jsdosbox.sourceforge.net) - JavaScript PC DOS emulator ([Source](http://sourceforge.net/projects/jsdosbox/files/)) 100 | - [PCjs](http://www.pcjs.org) - IBM PC Model 5150 emulator 101 | - [Virtual x86](http://copy.sh/v86/) - An x86 emulator written in JavaScript ([Source](https://github.com/copy/v86)) 102 | - [jemul8](http://jemul8.com) - An object-oriented JavaScript x86 emulator for Node.js and the Browser ([Source](https://github.com/asmblah/jemul8)) 103 | - jsbochs - Bochs PC emulator for the Browser ([Source](https://github.com/codinguncut/jsbochs)) 104 | 105 | ## Bare CPUs 106 | 107 | - [8008 running SCELBAL](http://www.xlnsresearch.com/scelbal.htm) by Mark G. Arnold. ("SCELBAL is the only open-source, floating-point, high-level language ever implemented on the 8008") 108 | - [8080 CPU emulator](http://typedarray.org/wp-content/projects/Intel8080/index.html) - Intel 8080 CPU emulator running Space Invaders ROM ([Source](https://github.com/thibaultimbert/Intel8080)) 109 | - [Angel](http://riscv.org/angel/) - JavaScript RISC-V ISA simulator booting linux in a web-browser ([Source](https://github.com/riscv/riscv-angel)) 110 | - [ARM-js](http://biged.github.io/arm-js/arm-js.html) - An ARM emulator written in JavaScript ([Source](https://github.com/ozaki-r/arm-js)) 111 | - [ASM80](http://www.asm80.com) - Online assembler for 8-bit microprocessors by Martin Malý. Includes emulation of several machines: 8080, Z80, 6502, 6809. ([Sources](https://github.com/maly)) 112 | - [Basic MIPS functional simulator](http://morriswmz.jit.su/static/simple-mips.html) and [Basic MIPS pipelined simulator](http://morriswmz.jit.su/static/simple-mips-pipelined.html) by Mianzhi Wang (morriswmz). ([Source](https://github.com/morriswmz/SimpleMIPS.js)) 113 | - [Easy6502](http://skilldrick.github.io/easy6502/) - JavaScript 6502 tutorial and emulator ([Source](https://github.com/skilldrick/easy6502)) 114 | - [Imaginary 6502](http://www.mdawson.net/asm6502/6502asm.php) - 6502 Emulator and Assembler 115 | - [Intel 4004 emulator](http://e4004.szyc.org/) - by Maciej Szyc. Includes assembler and disassembler. 116 | - [Intel 8080 CPU Emulator](http://www.tramm.li/i8080/) - Emulates a minimal Intel 8080 Microcomputer that runs CP/M 117 | - [JavaScript 8080 Emulator](http://bluishcoder.co.nz/js8080/) - 8080 arcade game emulator in JavaScript 118 | - [Simple 8-bit Assembler Simulator](http://schweigi.github.io/assembler-simulator/) - Provides a simplified assembler syntax (based on NASM) and is simulating a x86 like CPU ([Source](https://github.com/Schweigi/assembler-simulator)) 119 | - [Visual ARM1](http://visual6502.org/sim/varm/armgl.html) - JavaScript/WebGL for ARM's first CPU, modelling 25000 transistors at switch level and animating the original chip layout - in 3D. See [the blog post](http://blog.visual6502.org/2015/11/the-visual-arm1.html) 120 | - [Visual 6502](http://www.visual6502.org/JSSim/) - JavaScript simulator for the 6502 CPU, modelling thousands of transistors at switch level and animating the original chip layout. See also [expert mode](http://www.visual6502.org/JSSim/expert.html?steps=10). 121 | - [Visual 6800](http://www.visual6502.org/JSSim/expert-6800.html?steps=10) - JavaScript simulator for the Motorola 6800 CPU, modelling thousands of transistors at switch level and animating the original chip layout. 122 | - [Visulator](http://thlorenz.com/visulator/) - x86 machine emulator that visualizes how each instruction is processed ([Source](https://github.com/thlorenz/visulator)) 123 | - [YAMD](http://yamd.xuanji.li) - Yet Another MIPS Debugger ([Source](https://github.com/zodiac/yamd)) 124 | - [jor1k](http://s-macke.github.io/jor1k/) - OpenRISC OR1K JavaScript emulator running Linux with network support ([Source](https://github.com/s-macke/jor1k/)) 125 | - [jslm32](http://www.ubercomp.com/jslm32/src/) - JavaScript LatticeMico32 emulator running Linux ([Source](https://github.com/ubercomp/jslm32/)) 126 | 127 | ## Early machines 128 | 129 | - [Babbage's Difference Engine](http://ed-thelen.org/bab/bab-diff-JavaScript.html) (First funded 1823, first full build in 1855, first full rebuild in 1991) 130 | - [Turing machine](http://rendell-attic.org/gol/TMapplet/index.htm) simulated in JavaScript. See [here](http://rendell-attic.org/gol/utm/) for more information. (1936) 131 | - [Z1 machine's adder in 3D](http://zuse-z1.zib.de/simulations/z1/adders/wgl/) JavaScript/WebGL interactive simulation of the mechanical adder of Zuse's first machine. By Jakob Mischek ([Source](https://github.com/daign/zuse-z1.js)) (1938) 132 | - [Z3 machine's adder](http://gymoberwil.educanet2.ch/a.hu/projektarbeit/zuse/addition/addition.htm) - ripple-carry electromechanical adder simulated in JavaScript, by Henry Raymond, Patrick Seewald and Vijeinath Tissaveerasingham. [Explanation](http://gymoberwil.educanet2.ch/a.hu/projektarbeit/zuse/simu.htm) (1941) 133 | - [C88](http://danieljabailey.github.io/c88-js/) - C88 computer simulation ([The Homebrew CPU inspired by the SSEM](http://bitofahack.com/post/1434913931)) (1948) 134 | - [EDSAC on Browser](http://nhiro.org/learn_language/repos/EDSAC-on-browser/index.html) - by NISHIO Hirokazu ([Programming guide](http://www.dcs.warwick.ac.uk/~edsac/Software/EdsacTG.pdf)) (1949) 135 | - [WITCH Emulator](http://emulator.witch-e.org/) - The Harwell Dekatron Machine, by Justin King. ([Source and example programs](https://github.com/jsking/witch-e)) (1951) 136 | - [ElectroData/Burroughs Datatron 205 Emulator](http://www.phkimpel.us/ElectroData/205/webUI/D205.html) - by Paul Kimpel ([Source](https://github.com/pkimpel/retro-205)) (1954) 137 | - [Digi-Comp 1](https://web.archive.org/web/20140222193139/http://www.scoopsfolks.com/digicomp1) - educational plastic computer from 1963. Emulator by Larry Groebe and Kevin Williams. (1963) 138 | - [Burroughs B5500 emulator](http://retro-b5500.blogspot.com) - Burroughs B5500 emulator in JavaScript ([Source](https://github.com/pkimpel/retro-b5500)) (1964) 139 | - [CARDIAC](https://www.cs.drexel.edu/~bls96/museum/cardsim.html) - Bell Labs' CARDIAC cardboard computer from 1969. [Instructions](https://www.cs.drexel.edu/~bls96/museum/cardiac.html) (1969) 140 | 141 | ## Calculator emulators 142 | 143 | ### Microcode-level calculators 144 | 145 | - [HP-35](http://biged.github.io/Sandbox/HP35/default.htm) - bug-compatible emulator by Ashley Feniello [explained here](http://blogs.msdn.com/b/ashleyf/archive/2010/09/25/microcode-level-hp-35-emulator-in-javascript.aspx) using [Eric Smith](http://nonpareil.brouhaha.com/)'s and [Jacques Laporte](http://home.citycable.ch/pierrefleur/Jacques-Laporte/)'s work 146 | - [HP-35, HP-45, HP-55, HP-65, HP-80](http://home.citycable.ch/pierrefleur/HP-Classic/HP-Classic.html) - collection of HP Classics, based on Feniello's work, by Francois Roulet 147 | - [HP-45](http://members.aon.at/nkehrer/hp45_js/hp45.html) - statically recompiled ROM by Norbert Kehrer 148 | - [HP-65](http://www.sydneysmith.com/wordpress/hp65/) and [HP-67](http://www.sydneysmith.com/wordpress/1178/hp67-microcode-emulator/) - with extra debug menu, by Greg Sydney-Smith 149 | - [Sinclair Scientific](http://righto.com/sinclair) and [TI-1500](http://righto.com/ti) - calculator simulations including full description of the algorithms and the reverse-engineering process. By Ken Shirriff 150 | - [TI-92 Plus emulator](https://www.ocf.berkeley.edu/~pad/emu/v11.html) - JavaScript emulator for the TI-92 Plus 151 | 152 | ### Workalike calculators 153 | 154 | - [HP-11C](https://epxx.co/ctb/hp11c.html), [HP-12C Platinum](https://epxx.co/ctb/hp12c-platinum.html), [HP-16C](https://epxx.co/ctb/hp16c.html) - by Elvis Pfützenreuter 155 | - [HP-15C](http://hp15c.com/web/hp15c.html) - by Greg Hewgill. ([Source](https://github.com/ghewgill/hp15c)) 156 | - [HP-21](http://www.sydneysmith.com/products/gss-hp21/run/index.html#) and [HP-29](http://www.sydneysmith.com/products/gss-hp29/run/index.html#) by Greg Sydney-Smith (See [here](http://www.sydneysmith.com/wordpress/hp21/) and [here](http://www.sydneysmith.com/wordpress/hp29/)) 157 | - [HP-25](http://www.jcczone.net/hp-25.html) - by John Clenance 158 | - [HP-35](https://neil.fraser.name/software/hp-35/) - JavaScript emulator by Neil Fraser 159 | - [HP-35 SOS](http://hansklav.home.xs4all.nl/rpn/hp35sos.html) - modified HP-35 with stack overflow sensing LED, by Hans Klaver, based on Fraser's work 160 | 161 | ## Miscellaneous 162 | 163 | - [Compucolor II Emulator](http://compucolor.org/emu/ccemu.html) - JavaScript Compucolor II Emulator 164 | - [COSMAC Elf-ish](http://www.donnelly-house.net/programming/cdp1802/simelf/) - simulator by William Donnelly 165 | - [C1Pjs](http://www.pcjs.org/docs/c1pjs/) - JavaScript simulation of the Challenger 1P 166 | - [DCMO5 Online](http://dcmo5.free.fr/online/) - Thomson MO5 JavaScript emulator 167 | - [Emscripten ScummVM](http://clb.demon.fi/html5scummvm/) - Emscripten fork of the ScummVM engine ([Source](https://github.com/juj/emscripten-scummvm)) 168 | - [Heathkit ET3400](http://phils-place.co.uk/demos/et3400/) - by Phil Mainwaring. Click "Do" then "0000". ([Instructions](http://phils-place.co.uk/demos/et3400/heathkit_3400_trainer_manual_pages_46_to_104_edit_1.txt)) 169 | - [IBM 5110 Emulator](http://members.aon.at/nkehrer/ibm_5110/emu5110.html) by Norbert Kehrer runs Basic or APL. 170 | - [jsH89](http://heathkit.garlanger.com/emulator/jsH89/) - Heathkit H89 emulator (runs CP/M) by Mark Garlanger 171 | - [JSVecX](http://www.twitchasylum.com/jsvecx/) - JavaScript port of the VecX Vectrex emulator 172 | - [JsPspEmu](http://jspspemu.com) - JavaScript PSP emulator ([Source](https://github.com/jspspemu/jspspemu)) 173 | - [NanoWasp](http://www.nanowasp.org) - A MicroBee emulator 174 | - [Nascom 2 emulator](http://thorn.ws/jsnascom/jsnascom.html) by Tommy Thorn. (J to start Basic) ([Source](https://github.com/tommythorn/jsnascom)) 175 | - PC-01 Lviv - An emulator for the PC-01 Lviv (Ukrainian home computer) ([Source](https://github.com/dolgarev/emulator-pc01-lviv)) 176 | - [Radio-86RK](http://rk86.ru) Radio-86RK emulator in JavaScript (Intel 8080 based 8-bit Russian home computer) ([Source](https://github.com/begoon/rk86-js)) 177 | - [KM-Z80 web](http://hp.vector.co.jp/authors/VA016157/kmz80web10/kmz80web.html) emulator for Sharp MZ-80K, by Katsumi Morimatsu. GOTO $1200 to start KM-BASIC. ([More information](http://hp.vector.co.jp/authors/VA016157/kmz80web10/)) 178 | - [Turbo Pascal](https://github.com/lkesteloot/turbopascal) - A web-based Pascal compiler that runs a subset of Turbo Pascal 5.5 code 179 | - Virt.js - JavaScript emulation library ([Source](https://github.com/arcanis/virtjs)) 180 | - [jsMSX](http://jsmsx.sourceforge.net/) - The first MSX emulator 100% written in JavaScript 181 | - [jupiler](http://jupiler.retrolandia.net/) - Jupiter Ace emulator written in JavaScript 182 | - [WebMSX](http://webmsx.org/) - WebMSX, or simply WMSX, is a new MSX emulator designed for the Web ([Source](https://github.com/ppeccin/webmsx)) 183 | 184 | ## See also (lists of JavaScript emulators elsewhere) 185 | 186 | - [A Big List of Browser-Based Emulators](http://archive.vg/blog/a-big-list-of-browser-based-emulators-and-ports-of-classic-games) by Richard Moss 187 | - [Qaop/JS – Emulator links](http://torinak.com/qaop/links) by Jan Bobrowski 188 | 189 | ## Additional Information 190 | 191 | This resource collection is maintained by Frederic Cambus 192 | 193 | - Site : http://www.cambus.net 194 | - Twitter: https://twitter.com/fcambus 195 | 196 | ## License 197 | 198 | [![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/) 199 | 200 | To the extent possible under law, [Frederic Cambus](http://www.cambus.net) has waived all copyright and related or neighboring rights to this work. 201 | 202 | 203 | --------------------------------------------------------------------------------