ASCII by Jason Scott

Jason Scott's Weblog

The Javascript MESS Enters Beta —

Been working a long time towards this moment. A lot of good people working on a lot of good code, and helping each other towards this insane goal.

JSMESS is in open beta. Four game consoles and one computer are supported. Many more are coming.

mess2 mess1

I first postulated this was possible in October of 2011, and I laid out the reasons why this action would lead to a bunch of great side effects and advantages. The MESS emulator, a derivative of the MAME emulation system, had the ability to run or at least engage with running a whole host of computer systems, spanning 40 years of history. The philosophies of MAME, “emulate everything first, do it better and faster later” as well as “declare a system to be a set of discrete emulated chips, then crank on making the chips emulated as well as possible”, have yielded incredible fruit. The MAME and MESS¬†page host lists of what’s been updated with each new version and revision – hundreds of changes every month. If emulation is your bag, or you want to improve our ability as a culture to revisit computers, consoles and arcade games, MAME and MESS continue to be your bag, your best use of your time.

In just four short years, MAME will have had 20 years of intense development on it. And that thing is a brutal, amazing piece of work, nay, of programming art. MESS, the variation for consoles and computers, has had nearly as much effort put into it as well. These are worthwhile endeavors, ported to amazing amounts of platforms. They’re the Emulation Standard.

All that’s going on here is porting MESS so that it runs in a browser via Javascript. The goal is to make it that MESS runs in a browser without a plugin or external program being called. Such a simple idea: Add “Web Browsers” as one of the myriad platforms MESS/MAME runs on. But also so complicated. If you want to hear my video pitch about this as I’ve been describing it to people, here’s one.

A lot of people have spend many hours on this, including Justin de Vesine, Alon Zakai, Andre D, Nintendud, and Justin Kerk. They all deserve accolade for getting us where we are now.

What’s on the roadmap?

  • We didn’t just import the ability of MESS to emulate – this port brings in all the many features of MESS that it has developed to work with the items. In some cases, you can hit the TAB key and see all the information and features baked in, but in some cases you can’t, so we’re making sure support for calling these other features will arrive with the first 1.0 issue of JSMESS.
  • Specifically, MESS has the ability to call on save states, meaning we can use regular MESS to play or load something, save the state, and it’ll just “work” and be at a specific breakpoint in the computer experience, say having the same Shakespeare sonnet in a multitude of word processors, or being at a high level in a game so you can see a kill screen in action and try to negotiate it even further.
  • The keybindings are a mess, and so we’ll want instructions for these different individual emulators to fix that up and maybe set things so that they go to keys that every keyboard has. (For example, the ColecoVision emulator really wants the Number Pad, which not every computer has.)
  • Speed, speed, speed. We’ve got some notable slowness for some of the emulations. We have great hope we can fix it, but always like advice towards doing this. The original native MESS compiles all work fine for speed, so it’s a matter of improving the Javascript as well as the Emscripten program for converting items to JS in the first place.

The fun is just beginning! I’m so excited.


Categorised as: computer history

Comments are disabled on this post


One Comment

  1. blandekic says:

    Who would have thought that a random Google search would bring me back to one of the most treasured websites I used to visit regularly, while you were still working on the BBS documentary. I missed reading your stuff :) Awesome work Jason, I will check this project out!