easily embed emulators
Switch branches/tags
Clone or download
db48x Merge pull request #53 from algestam/vice-doc-fix
Small doc fix in the Vice example
Latest commit 7ce9158 Nov 27, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.be factor the loading process further, and introduce the EmscriptenRunner Mar 7, 2018
emulators git-annex in db48x@erebor:~/projects/emularity Mar 5, 2017
examples I hit up my local bbs for some warez Apr 15, 2015
images use a spinner image that stands out from the default black background… May 13, 2015
logo bundle the IA and emulator logos Apr 11, 2015
other_logos add a logo for Vice Sep 1, 2018
.dir-locals.el add local emacs settings Jan 25, 2015
.gitignore some bug tracking in Bugs Everywhere Aug 4, 2016
LICENSE add a license statement Oct 11, 2016
README.md Fixing Markdown links in credits Mar 5, 2017
TECHNICAL.md support Emscripten's WebAssembly builds Feb 7, 2018
THEORY.md tweak examples, some documentation Apr 13, 2015
TODO.md Update TODO.md Apr 13, 2015
browserfs.min.js upgrade to BrowserFS 1.2.1 Mar 19, 2017
browserfs.min.js.map upgrade to BrowserFS 1.2.1 Mar 19, 2017
es6-promise.js move promises to the correct filename Mar 4, 2015
example_amiga.html upgrade to BrowserFS 1.2.1 Mar 19, 2017
example_arcade.html don't mention git-annex, it's not been kept up to date Aug 30, 2018
example_computer.html don't mention git-annex, it's not been kept up to date Aug 30, 2018
example_console.html don't mention git-annex, it's not been kept up to date Aug 30, 2018
example_dosbox.html don't mention git-annex, it's not been kept up to date Aug 30, 2018
example_ia.html IALoader respects the emulator_ext metadata property when finding fil… Feb 15, 2018
example_macplus.html add support for PCE emulators, particularly macplus Apr 4, 2017
example_pc98dosbox.html tweak the wording in the new dosbox-x example Sep 18, 2018
example_pce_ibmpc.html clean up the grammar and presentation of the explanatory comment some… Oct 11, 2018
example_vicejs.html Small doc fix in the Vice example Nov 27, 2018
loader.js Make PC98DosBoxLoader compatible with drive_type Oct 21, 2018
testcases.md Update testcases.md Apr 14, 2015
vice_todo.txt get_vice_files and related code. No guarantee that this is coherent. Aug 28, 2018


Welcome to the Emularity


Beta Warning

The Emularity should be considered in beta. We welcome feedback and suggestions as we finish 1.0.


Emularity (also called "The Emularity") is a loader designed to be used with a family of in-browser emulation systems. It is meant to ease the use of in-browser-based javascript emulation by handling housekeeping functions, making it easy to embed emulators in your website, blogs, intranet or local filesystem. The components of each aspect of the software being emulated (including the .js emulator, the program files, and operating system) can be pulled from local filesystems or through URLs.

Emularity downloads the files you specify (with a progress screen that shows both emulator logos and what is being loaded), arranges them to form a filesystem, constructs the necessary arguments for the emulator, and handles transitions to and from full-screen mode.

The Emularity system has been used by millions of users at the Internet Archive.

The Emulators

Currently works with three emulators:


MAME is a port of the Multiple Arcade Machine Emulator (MAME) projects to Javascript. MAME supports over a thousand different machines including game consoles, arcade machines and computer platforms.


EM-DOSBox is a port of DosBox to Javascript. DOSBox emulates an IBM PC compatible running DOS. There are two versions of this emulator, dosbox.js (Standard EM-DOSBOX) and dosbox-sync.js (EM-DOSBOX with considerations for in-program execution of other programs).

Scripted Amiga Emulator

SAE is a Javascript port of WinUAE by naTmeg. It emulates most of the Amiga models that were released.

Credits and Components

Primary work on Emularity is by Daniel Brooks, with contributions of code or concepts from John Vilk, Andre D, Justin Kerk, Vitorio Miliano, and Jason Scott. Some of these contributions predate the Emularity git repository, unfortunately.

Emularity makes use of BrowserFS by John Vilk, an in-browser filesystem that emulates the Node JS filesystem API and supports storing and retrieving files from various backends.

It also utilizes ES6-Promise, a polyfill of the ES6 Promise API. Both are implemented and included without modification; consult these original repositories for information or verification.

Some Open Issues

  • Documentation can be improved
  • Splash Screen occasionally overflows canvas
  • Progress bars can stand to be improved
  • Should add browser-specific detections for unusual behaviors and volume/full-screen actions
  • Handling of aspect ratios, and their interaction with full-screen mode
  • Finish API for volume/mute/full-screen requests