MAME

From CPCWiki - THE Amstrad CPC encyclopedia!
Revision as of 18:09, 11 October 2013 by Morn (Talk | contribs) (JSMESS, a JavaScript port)

Jump to: navigation, search
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 of the real hardware perfectly.

Currently, over 450 systems are supported, including the CPC and CPC Plus ranges and the GX4000.[1] 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.

MESS runs on Windows, Mac OS X, Linux, and FreeBSD. If you also use MAME, you may want to get UME instead, which combines MESS and MAME into a single executable with a shared configuration file, ume.ini.

Command line arguments

Name Argument Allowed file extensions
Printer -prin .prn
Snapshot -dump .sna
Disk drive A -flop1 .dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm
Disk drive B -flop2
Tape -cass .wav; .cdt
Cartridge -cart .cpr; .bin (Plus series and GX4000 only)

(info from sysinfo.dat)

Supported file types can also be shown with the "-listmedia" command line option.

You can use zipped disk images too. If there is more than one DSK image in the zip file, treat the zip file like a directory, e.g. "-flop1 disk.zip/disk0.dsk".

Keyboard options

MESS generally supports two keyboard mode command line options: emulated (the default; based on key position) and natural (command line option "-natural"; based on the character generated by a key, e.g. pressing "z" will always generate a "z" on the emulated system, even if the keyboard positions are different).

In emulated mode, keys can also be remapped from the emulator menu: first press Scroll Lock to enable the MESS control keys, then press Tab to open the menu, and finally select Input (this system).

ROMs

Just as in MAME, some MESS ROMs have parent ROMs that also need to be installed. E.g., cpc6128.zip also requires cpc464.zip to run.

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.

Front-ends

Various GUI front-ends for MESS exist for Windows, Linux, and OS X—see the list here: [2]

MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).

CRT simulation

GLSL shader example
HLSL "1980s" shader (detail)

Like MAME, MESS can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature. This involves editing mess.ini (or ume.ini if you use UME).

Mess.ini works the same as mame.ini, so MAME tutorials can be used as a starting point. Some example configurations:

  • Windows (using HLSL shaders)
    • A scripted setup with separate "1980s" and "1990s" CRT configs: [3] (huge post is halfway down the page)
    • A German shader tutorial: [4]
  • Linux (using GLSL shaders): MAME tutorial [5]

Remaining issues with CPC emulation

  • MESS will usually fail to read DSK images that use copy protection.
  • Some demo tricks may be broken in MESS, e.g. overscan pictures are horizontally misaligned (shifted to the right).
  • Loading extension ROMs is also not supported.

JSMESS, a JavaScript port

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 JSMESS. 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.

A 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 JSMESS CPC demo page (with the SubHunter disc in drive A) also has a ZIP file download of the build.

Links