Still Life, With Emulator: The JSMESS FAQ

The announcements of the Console Living Room and the Historical Software Collection have brought a large amount of attention to the JSMESS emulator that archive.org uses. Naturally, being a relatively new method of playing software in a browser, there are number of technical questions and explanations that people are seeking answers for. This entry is meant to cover the most frequently asked questions and will be updated as new information becomes available.

The purpose behind utilizing JavaScript as a platform is that JavaScript is a dependable, standardized runtime environment available in essentially all modern browsers. Other solutions tend to work only in one browser, are under litigation/rights issues, or require external plug-ins before use. Should a cross-platform default runtime solution appear and surpass JavaScript, the JSMESS team will revisit the question, but for now, JavaScript is the preferred approach. In short, right now JavaScript Just Works.

The circumstances by which JavaScript became the defacto cross-platform, default runtime environment are fascinating but out of the scope of this FAQ. It is suggested that you read some of the essays about the situation including Worse is Better and The Principle of Least Power. However we got to this point, it is currently possible to get excellent performance on modern browsers inside of JavaScript for tasks like this emulator.

How exactly do you convert MESS to JavaScript? Do you rewrite from scratch?

JSMESS is created by running the MESS source code through a compiler called Emscripten. Emscripten is a project by Mozilla for easy conversion of native applications into JavaScript. While notable effort is being done by the JSMESS team to prepare MESS source code for Emscripten, Emscripten does the lion’s share of conversion and allows the code in JSMESS to be as close to MESS as possible without major revision. This conversion utility’s power and flexibility is now expanding into many other projects, some of them unthinkable even a year ago in terms of speed and turnaround time of the project.

Where possible, the JSMESS team are adding code changes to the original MESS source code or even to Emscripten itself, so that advances in support and function are available to other projects, benefitting all.

I’m having trouble with…

It is helpful to keep in mind that a full speed running JSMESS only went online at the end of August 2013. Because this is all brand-new in terms of interacting with the families of browsers out there, there are going to be incompatibilities, hiccups, speed issues and other situations.

Here are some common solutions:

Generally, we find that Firefox runs the quickest JavaScript (partially due to use of asm.js optimizations). It is worth connecting to the site using that browser, which is freely available, to make sure that the problem isn’t located somewhere else along the way for you. (The JSMESS team has a priority to make sure it runs on as many platforms and browsers as possible, of course – but we are a small team, so some variations can be missed.) In general, the goal will be to run equally fast on all browsers.

Some people are running JavaScript blockers or filters, and naturally this program will not work at all in those situations. All current browsers have sliding updates, meaning that a new version comes out very frequently. Check to make sure that you were running the most up-to-date edition of your browser. Usually this information is located in the about menu selection of your browser.

It says something about a gamepad at the bottom. I can use a gamepad?

If you have a USB-connected gamepad, it is possible on the SG-1000 emulator to use it with the games. (This will be working on all the platforms, shortly.) To make this happen, go to the loading page, and before pressing the space bar to start the emulation, press buttons on your USB gamepad until the page says it can see the gamepad. Then it should “just work”.

I can’t hear anything!

Sound has turned out to be one of the more difficult issues with JavaScript programs. Different browsers handle sound differently, and the human ear notices tiny differences in sound quality much more than they noticed microscopic slowdowns in video rendering. This is definitely on the list to be improved as soon as possible, as soon as we have the best solution in place.

I’m not sure which keys to use!

We are continually updating instructions with accurate information about which keys activate which selections on a given platform and for a specific program. In general, the arrow keys, and control keys tend to work best, and the number keys sometimes trigger off other options. A team of volunteers has been working on documentation and linking and will continue to.

How can I help?

If you are a developer and care about the state of emulation, consider getting involved with contributing fixes and improvements to the MESS emulator. Whatever changes are reflected in that project with regards to platform support and accuracy will come down the line automatically to JSMESS.

If programming is not your thing, we can always use help with improved metadata, better linking to history, and better context as to the various items are collection. Please contact the software curator at Internet Archive, Jason Scott. He’s at jscott@archive.org.

I wish that you….

We do too. Our commitment is to make JSMESS as good as it can be, and able to run more platforms, with accurate and smooth sound and performance in the browser. We invite people who want to contribute code or other efforts to reach Jason Scott, or to contibute to the linked code repositories in this FAQ.

13 Responses to Still Life, With Emulator: The JSMESS FAQ

Soon after this FAQ was posted – I realized that the title of this entry came from an article about the efforts to bring game preservation and access to the world, in which I was interviewed by the writer Paul Ford. The original article is here.

The most common reason is that we have a couple of these items with spaces or parenthesis in the filename, or who were otherwise misnamed. In this case, the emulator is loaded but the cartridge is not. If you encounter this, write to info@archive.org with the item name/URL of the spinning-but-never-running game and we will repair it.

For some reason, either the games don’t work that well, or it’s very slow (I’m using FireFox by the way). I’m assuming you guys are still fixing and improving the emulators, so I just gotta say thanks for putting these games up for free.

Speed of the emulator depends heavily on the speed of the laptop. It’s best to try out the Odyssey 2 or Astrocade emulators to see how fast they’re running, and to let us know what sort of system you’re running (Browser, Platform, Machine) if you want to help us track down any issues.

I emulate old games on my laptop for kicks and like to play them with a USB xbox pad (these tend to just work with most) – are there any plans to have other control methods other that the keyboard? with the console games in particular playing them with the keyboard doesn’t do them justice in my experience

I tried JSMESS and it seems to run with a decent level of accuracy… but I found it very slow. I tried on two different machines with different browsers, and found it ran about half the speed of a real console.

I’m embarrassed to ask this question, the spacebar starts the games, but when I try to use arrows to jump, etc. the game reverts back to the start screen. Are there particular keys I should be using, like w a s d enter bar or something like that?

Are there any plans or is it even possible to make Joy Sticks work with these emulations? I apologize if this has been covered elsewhere. At 73 that puts me just about half way between when I was born and now. It was fun to play with and against my kids then. This must be a labor of love to make all of these systems games available. Brings back a lot of good memories.

I am using Firefox on a MBP and I have been able to get every game to open except for Tapper. It launches and just black screens. Maybe someone could check the code on this unless this requires a joystick. I am unable to emulate.