diff --git a/README.md b/README.md index 7e56706e..2e54a2b8 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ 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. +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](https://archive.org). +The Emularity system has been used by millions of users at the [Internet Archive](https://archive.org). # The Emulators # @@ -18,14 +18,13 @@ Currently works with two emulators: ## EM-DOSBox ## -[EM-DOSBox](https://github.com/dreamlayers/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). +[EM-DOSBox](https://github.com/dreamlayers/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). # Known Bugs # -* documentation is quite poor +* the documentation is quite poor * splash screen doesn't always fit inside the canvas -* need to improve the download progress indicators +* need to improve the download progress indicators (progress bar?) * browser feature detection for volume/mute/full-screen * handling of aspect ratios, and their interaction with full-screen mode * finish API for volume/mute/full-screen requests - diff --git a/TECHNICAL.md b/TECHNICAL.md index b5885fd4..786e15b8 100644 --- a/TECHNICAL.md +++ b/TECHNICAL.md @@ -5,10 +5,8 @@ To use this project you'll need to provide it with a canvas element, styled as n # Emulator API # The `Emulator` constructor takes three arguments: a canvas element, an -optional callback (which will be called after fully initializing the -emulator but just before it starts running the emulated program), and -a config (as detailed below) or a function which returns a `Promise` -of a config. +optional set of callbacks, and a config (as detailed below) or a +function which returns a `Promise` of a config. # Configuration # @@ -54,7 +52,7 @@ keybindings needed to use the 2600. ### DOS game ### -Here we load the dosbox emulator, and a zip file containing the game +Here we load the DOSBox emulator, and a zip file containing the game ZZT which we decompress and then mount as the C drive. We also tell DosBox to immediately start running zzt.exe, which is inside the zip. @@ -71,11 +69,11 @@ DosBox to immediately start running zzt.exe, which is inside the zip. ## Configuration API ## Currently there are two supported emulators, JSMESS and -EM-DosBox. JSMESS provides emulation for arcade games, consoles, and +EM-DOSBox. JSMESS provides emulation for arcade games, consoles, and early personal computers. As this emulator supports such a wide variety of hardware it has been broken up into several dozen emulators each supporting one machine lest the resulting javascript be -intractably large (60+ megabytes). EM-DosBox provides emulation for +intractably large (60+ megabytes). EM-DOSBox provides emulation for software that runs on x86 PCs using the DOS operating systems common to the era. @@ -103,7 +101,7 @@ same constructor. * `driver(driverName)` * `extraArgs(args)` -### EM-DosBox ### +### EM-DOSBox ### * `startExe(filename)` diff --git a/THEORY.md b/THEORY.md index daaf5755..a68ef151 100644 --- a/THEORY.md +++ b/THEORY.md @@ -6,10 +6,10 @@ The Emularity is the capstone of multiple years of work by many individuals, bot # In-Browser Emulation: The Approach # -For the current crop of in-browser emulators that Emularity loads, the process of creating them has been the same: take an existing, natively-coded emulator (MESS, MAME, DOSBOX) and, using the Emscripten compile took, convert the output to Javascript. The resulting javascript files, while much more obtuse and arcane, allow the larger development teams working on the original emulators to focus their attentions where they should be (making the most accurate and efficient browsers possible) and not where they shouldn't (hand-porting emulators to Javascript). +For the current crop of in-browser emulators that Emularity loads, the process of creating them has been the same: take an existing, natively-coded emulator (MESS, MAME, DOSBOX) and, using the Emscripten compiler tools, convert the output to Javascript. The resulting javascript files, while much more obtuse and arcane, allow the larger development teams working on the original emulators to focus their attentions where they should be (making the most accurate and efficient browsers possible) and not where they shouldn't (hand-porting emulators to Javascript). -The resulting javascript emulators (JSMESS, JSMAME, EM-DOSBOX) execute against a Canvas Element in a web page, and output their graphics and sound into the browser's audio/video environment. +The resulting javascript emulators (JSMESS, JSMAME, EM-DOSBOX) draw into a canvas element in a web page, and semd the audio created by the emulated program to the new HTML5 audio APIs. # Why Even Do This? # -The reason for this series of coding acrobatics is to provide portability and universal access to historical computing/computer environments. The load of configuing the emulators, adding the software, and providing the resulting emulation is taken away from the end user, requiring only a browser (of which nearly every system has one installed) to emulate the given software. +The reason for this series of coding acrobatics is to provide portability and universal access to historical computing/computer environments. The load of configuing the emulators, adding the software, and providing the resulting emulation is taken away from the end user, requiring only a browser (nearly every system has one installed) to emulate the given software. diff --git a/example_arcade.html b/example_arcade.html index 925786d7..f54e3b28 100644 --- a/example_arcade.html +++ b/example_arcade.html @@ -1,19 +1,21 @@ - + - + - - - - - - - - + + + + +
@@ -30,7 +32,7 @@ null, new JSMAMELoader(JSMAMELoader.driver("targ"), JSMAMELoader.nativeResolution(256, 256), - JSMAMELoader.emulatorJS("emulators/messexidy.js"), + JSMAMELoader.emulatorJS("emulators/jsmess/messexidy.js"), JSMAMELoader.mountFile("targ.zip", JSMAMELoader.fetchFile("Game File", "examples/targ.zip")))) diff --git a/example_console.html b/example_console.html index 237bbeab..9dd9b4c7 100644 --- a/example_console.html +++ b/example_console.html @@ -13,7 +13,7 @@ null, new JSMESSLoader(JSMESSLoader.driver("a2600"), JSMESSLoader.nativeResolution(352, 223), - JSMESSLoader.emulatorJS("emulators/messa2600.js"), + JSMESSLoader.emulatorJS("emulators/jsmess/messa2600.js"), JSMESSLoader.mountFile("Pitfall_Activision_1982.bin", JSMESSLoader.fetchFile("Game File", "examples/Pitfall_Activision_1982.bin")), diff --git a/example_dosbox.html b/example_dosbox.html index 53b9653d..a154d5f4 100644 --- a/example_dosbox.html +++ b/example_dosbox.html @@ -11,7 +11,7 @@