[[File:Mess sysinfo.png|thumb|260px|The MESS system info box for the CPC6128]]
'''''MESS''''' (Multi Emulator Super System) is an emulator for vintage computers, gaming consoles, chess computers, and calculators. It is a descendant of the MAME arcade emulation project and just like MAME, the most important goal of MESS is highly accurate emulation, not speed. MESS and MAME are mainly preservation projects that aim to reproduce the behavior behaviour of the real hardware perfectly. ==Supported systems and compatibility==
Currently, over 450 systems are supported, including the CPC and CPC Plus ranges and the GX4000.[http://www.mess.org/mess:drivers:amstrad] This is probably the main reason for using MESS, that a single download is enough to emulate more or less every home computer and gaming console that ever existed in the late 1970s and 1980s—provided one can find a ROM set that works (see below). MESS does not have the depth of other emulators, but it sure has enormous breadth.
ROMs often only work with a specific version of MESS. This does not seem to affect CPC ROMs, but other systems sometimes give an error message when ROM filenames or checksums do not match what MESS expected.
==FrontGUI front-ends==
Various GUI front-ends for MESS exist for Windows, Linux, and OS X—see the list here: [http://www.mess.org/mess:howto#frontends]
==JSMESS, a JavaScript port==
[[File:Jsmess in Chromium.png|thumb|upright=1.1|JSMESS emulating a CPC 6128 in Chromium 30 on Linux]]
MESS has also recently been ported to JavaScript using the C/C++-to-JS transcompiler Emscripten; this port is called [http://jsmess.textfiles.com/ JSMESS] and is considered to be in its beta stage. Particularly sound is still a problem.
Out of the box only a small selection of MESS machines can be immediately compiled to JavaScript from the JSMESS package. Compiling MESS in its entirety would create a JavaScript file that is far too big for web browsers to handle. So one has to find out which parts of MESS are really needed for a given machine and create Makefiles with that subset. (JSMESS now also includes scripts that automate this task.) It is recommended to build JSMESS modules on Linux which also makes it easier to install the dependencies for Emscripten. The basis for JSMESS is MESS 0.142 and a custom version of Emscripten.
A [https://github.com/mdoege/jsmess JSMESS fork] that includes the necessary Makefiles to build the CPC 6128 version exists.
Note that the ROM file cpc6128.zip also needs to contain the AMSDOS ROM from cpc464.zip because unlike regular MESS, JSMESS only loads a single ROM ZIP file per machine.
As of October 2013, sound only works in Firefox and not in Chrome/Chromium. Emulation speed in Firefox is better than in Chrome, presumably because Firefox has better support for Emscripten's asm.js-based JS code. Also, keymapping has not been done for JSMESS systems, although in principle you should be able to create keymaps in MESS and use them with JSMESS. The joystick is mapped to Alt and the arrow keys by default.
This There is an experimental port to JavaScript, see the article [[http://mdoege.github.io/jsmess/ JSMESS CPC demo page] (with the SubHunter disc in drive A) also has a ZIP file download of the build] for details.
==Links==