ASCII by Jason Scott

Jason Scott's Weblog

Javascript Hero: Success / Your Big Moment —

The Javascript MESS project, where we’re porting MESS to Javascript, is now chugging along very nicely. The time for action is now. I’m very excited! This is where you get to pitch in, in a variety of ways.

Let me state the goal again: take the MESS project, which is a massive open-sourced effort to emulate every possible computer system and console that exists, and make it run in a window in a browser. In doing so, allow anyone with a web browser of reasonable power the ability to experience, in great convenience, many of the aspects of any previously made software in human history. This is a very lofty goal.

Some of this has been discussed before, but if this is the first time you’re hearing of it, let me quickly go over it.

  • After deciding to go with a Javascript port of MESS, I needed coders comfortable with the idea. I did not need people telling me it was impossible or not to do it. Luckily I got a few key examples of the first group and could ignore the second.
  • The plan, hatched with a couple of people, was to use Emscripten to convert MESS source code to something running in Javascript. This would require people competent in Emscripten, Emscripten source code, MESS source code, and Javascript. More pushback, more nay-sayers. But we found them.
  • A month or two ago, we got a public-domain colecovision cart to render using this setup. But no keypresses. Now we have keypresses.

The running joke for me was “WHERE ARE MY SMURFS”. The acid test for me, the proof this was possible, was a window running a playable copy of Smurfs: Rescue in Gargamel’s Castle, which was truly a terrible game but one I played over at my friend Paul’s house in 1982. As the team tirelessly ran through the dozens and dozens of tweaks, on the addition of features to Emscripten and the makefile mods to MESS, “WHERE ARE MY SMURFS”.

And now the smurfs have come:

Oh, make no mistake: It’s slow as molasses. (Running at 12% speed on my browser on a pretty high-powered machine) It has no sound (we’re working on it). And the keys can sometimes be grabbed away by other processes and materials. (Key bindings are a bitch, and still being hacked away at.) But it works. Multiple people took me aside to “help” me by explaining how it was entirely impossible this could ever happen. But it happened. It works.

It even lets you use the internal menu of the MESS program: here it is letting you know about the CPU and the video output:

We did some tests with multiple Colecovision cartridges – it plays most. (Not all, of course, depending on how well MESS emulates anything and a bunch of other factors.) So right now it can do about 100 cartridges. It’s proof of concept.

But now we’re expanding out.

Next we’re going after the Magnavox Odyssey², specifically to be able to run K.C. Munchkin, a historically important console game pulled in the early salvos of the “look and feel” wars started by Atari. We’re also trying for the Apple II.

This is where the payoff comes, you see – the MESS emulator can emulate 632 unique systems with 1,668 total system variations. 632! As we build frameworks for compilation, we’ll have javascript emulators for all of these, all able to follow the MESS development cycle, which is enormously aggressive.

So how can you help?

  • We need testers. I didn’t want to drag people in until we started having something for them to see – and now we do. We need people to run through items as we add them, to find weirdness and missing items and the rest.
  • We need Javascript coders. Emscripten produces, not surprisingly, some pretty tangled code in compilation. Someone might find ways to make individual compilations faster, speeding up these items that much more. Maybe we’re missing some settings that will make the output work better on more platforms.
  • We need you to improve MESS. My dream is that this project will ensure, once and for all, that any work you throw into the MESS emulator will have instant, worldwide effect, as improvements on emulation will show up in browser windows everywhere. It’s not some obscure thing – I want these to end up being general purpose computer utilities that people use to portray older computers in windows, and your work will be very prominent. Read up on them and join them.

Please come to #jsmess on EFnet or e-mail me. Get involved. If you were on the wall wondering if the thing could ever even work, it does. It works. Now help us make it work well.


Categorised as: computer history

Comments are disabled on this post


  1. Nathan Prugh says:

    nice… congulations Jason.. Keep going 😀

  2. Ryan says:

    Great job! Quite an accomplishment…

    The Smurfs was the very first home video game I played, at a friend’s house, back in 1982 (I think). I even wrote about it in one of my first journal entries ever, back then at age 7. It’s neat to see it as the first game played on this new platform!

  3. Joe Crawford says:

    This is great Jason!

  4. […] any LLVM language to Javascript? Sure, why not.  Web games using SDL? I guess.  Raytracing in your browser? Bring it […]

  5. Olivier Galibert says:

    You’re nuts. But beautifully nuts. Congrats 🙂