ASCII by Jason Scott

Jason Scott's Weblog

The JSMESS Endgame —



Don’t worry, I’m not talking about an “end” to JSMESS.

Oh goodness – far from it. Of the two versions of JSMESS we’re currently working with (the “in-process” version and the “dressed for dinner” version), we’re going to be adding a third version for general distribution out to anyone who wants to run JSMESS on their own site. We have gotten sound running (somewhat, and best in Firefox), joypad support (in Chrome and Firefox, but you have to enable it in Firefox), and full screen. We also got the pipeline from “New version of MESS is made, new version of JSMESS is generated from it” down to a near (time-consuming) science, so it’ll be possible to keep up with the many-per-day changes to MESS that are going on. Things are vibrant, intense, and amazing.

In fact, I just wanted to touch a little on where I think this whole thing is going, and what my vision is for JSMESS’s future. I figure we’ve been making such amazing strides, that some folks might start to wonder if there’s any plan at all beyond “it works”.

There is.



JSMESS is as much an idea as a pile of JavaScript. The idea is to use the currently-most-critical networked window into the Internet, the browser, and the currently-most-portable-and-not-controlled-by-maniacs runtime language, JavaScript, to present an easy link to the currently-most-portable and currently-most-flexible emulator, MESS. Putting all those together, we came up with “Use ‘JavaScript’ on ‘Browsers’ to execute ‘MESS'”.

I am hugely skeptical we will see the browser paradigm disappear anytime soon, certainly not within the next five to ten years.

I’m also very skeptical something is going to sneak up on MESS and take away the portability/flexibility crown. (Individual emulators can smoke MESS on chip-performance accuracy, but then they only do one platform, not 1600.) Maybe someone will cook up some amazing emulator out of the bushes that will blow past MESS – that’s not out of the realm of possibility. I don’t know of one, but that’s how obsessive projects work – someone burns brain on it in darkness and then drops it on the world.

JavaScript, however, could easily be horked past by someone or someones with a true open-source addition that all the browsers cook in after a few months of testing. It’ll have some stupid name, and will maybe use some trickery to get improved speed, as well as offering all sorts of programmatic advantages that someone would expect. (Right now, there are backwards-bending tricks to make Javascript do the proper thing, and that’s not always very good for anyone involved.)

The important thing here is that the IDEA of JSMESS transcends the individual parts – the emulator, the browser, the scripting language of choice. All of these can be swapped out and the idea lives on – you turn on this thing in your computer and within seconds you are interacting with vintage software. That’s what we shot for and that’s what we have.

So, expect probably some upheaval in JSMESS and how it runs in the future, near or distant, depending on what’s best for the core values of speed, accuracy and access. That might happen in six months (unlikely) or six years (likely).



The goal with JSMESS has always been to think of it as a “software player” in the same way that we think of “video players” and “audio players” – discreet programs that will put us in touch with the digital item. To that end, we have a whole range of plans for adding features to the JSMESS “player” that you interact with. I don’t want to list them out here, as some will inevitably be dead ends and others will be subsumed or decided against, but the point is that once the JSMESS player deals with one system, it will more often than not deal with all the systems. For example, once we have sound running smoothly, all platforms have sound running smoothly, both in terms of browser platform and emulated platform.

So as more features enabling you to interact with these emulated platforms are added, the experience becomes richer, more reproducible, more flexible. Some features might only be of interest to a few people, while others will have been called for by anyone who uses JSMESS for a few minutes. Whatever they are, we’ll add them and they’ll just be part of the landscape going forward.

Let me tell you – the Joypad changes the experience completely. You can definitely use keyboard controls, but going back to joysticks to interact with some programs brings up a pretty visceral reaction. It made the program just work better for a bunch of reasons – and it’s optional going forward. That’s the plan generally, regarding that.



Finally, there’s the secret weapon – something I call The Feedback Loop.

Emulation development is a strange art, and one that can be really non-rewarding. You spend a lot of time trying to ramp up a program that plays other programs, and then you realize the official documentation is wrong, there are missing pieces and unexpected confluence with the machine the emulator is running on, and so on. Adding to this frustration is the fact that if you’re collaborating on an emulation project, some of the developers are by the nature of the process hard-edged, critical of radical change, and generally abrasive about the process in the pursuit of perfection… and then you find being The New Coder is a crapshoot of ease and difficulty. Maybe you suggest a change and everyone hoists you on their shoulders, while other times you get a stream of profanity. Emulation is very hard work, coding wise, and it can be an uphill battle to keep track of all the moving parts and contribute positively to the project. And in the case of emulators, the audience is (relatively) small and often hypercritical of what they get on the outside, so your skin has to be a certain level of tough. The result, then, is the pool of developers can be relatively small, especially for platforms that lack the passionate adherents dedicated to that platform’s accuracy and immortality.

What we have here, with the ability to run the emulator directly in the browser, is proof positive that the work you put into it has near-instantaneous effect. Make the emulator better, and the ability of people all over the world to run this platform in their browsers is better. That may be a critical push for a specific set of development-oriented folks, and allow additional focus on more obscure platforms. The dream is someone who goes around doing incremental improvements to platforms that are not all-stars, but just as critical to preserve, maybe more so.

Improvement will beget improvement. The MESS team already does amazing work, so more people focused in on working various parts will make the project stronger. It’ll encourage more documentation as more people want to learn how to ramp up.

That’s the hope, anyway. We’ll see how it pans out.


Categorised as: computer history

Comments are disabled on this post


  1. Chris M. says:

    You don’t have to remind me of those “hard edged” programmers. I already agitated a MESS developer and I don’t even code for the project! I just pointed out a bug.

  2. […] JSMESS: the endgame […]

  3. Darren says:

    Being able to watch software running that I last saw in working form a lifetime ago on completely different platforms, work whose creators likely never imagined would decades later be given a breath of life and made available to the casual masses, with no special plugins, software or console, just…there and available…is utterly astonishing to this reader. Thank you and the team, it’s inspiring and I look forward to seeing where this will go and what ancient treasures are brought to life once again. SHRDLU anyone? d