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 behaviour of the real hardware perfectly, so performance may be slightly worse than many dedicated CPC emulators.
Emulated systems
Currently, over a thousand systems are supported by MESS, including the CPC and CPC Plus ranges and the GX4000. This is probably the main reason for using MESS: 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 CPC emulators, but it sure has enormous breadth. Its flexible input mapping and MAME-compatible pixel shader effects make MESS particularly suited for gaming.
Installation
MESS runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from mamedev.org.
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.
On OS X, you can install MESS via Homebrew:
brew tap homebrew/games brew install mess
On Windows and OS X, the MESS binary is called mess, on Linux sdlmess. On some Linux distros such as Arch Linux you have to use absolute paths for disk images or ROMs because /usr/bin/sdlmesss is a wrapper script that will cd to the directory with the MESS binary. Or you could simply skip the wrapper script and run /usr/share/sdlmess/sdlmess directly:
alias mess=/usr/share/sdlmess/sdlmess
Command line arguments
Command line example:
mess cpc6128 -skip_gameinfo -window -flop1 /path/to/disk.dsk
- Device options from sysinfo.dat
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) |
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 layouts
MESS supports two keyboard modes:
- emulated (the default; keys are assigned based on key position on the emulated hardware)
- 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)
To use a German keyboard in emulated keyboard mode, start MESS e.g. with (key map path on Linux):
mess cpc6128 -keymap -keymap_file /usr/share/sdlmess/keymaps/km-de.txt
In emulated mode, keys can also be remapped in the emulator menu. First press Scroll Lock to enable the MESS control keys, then Tab to open the menu, and finally select Input (this system). Return, Esc clears an assigned key.
Note that the Delete and Backspace keys are swapped on the emulated keyboard because of the CPC keyboard layout. So you may want to reassign those. Escape on the CPC is mapped to the key left of "1" on the PC keyboard. Alt-Enter switches between windowed and full screen mode.
ROMs and extension hardware
CPC ROMs for MESS. Just unzip the file and move the ZIPs inside into the MESS ROM folder.
- General notes about MESS and 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. (See the links section for CPC ROM files for MESS.)
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.
- Slot options (extension hardware)
You can get a list of slot options with
mess cpc6128 -lslot
These are (as of MESS 0.159):
- for "-centronics"
pl80 | COMX PL-80 |
ex800 | Epson EX-800 |
lx800 | Epson LX-800 |
lx810l | Epson LX-810L |
ap2000 | Epson ActionPrinter 2000 |
printer | Centronics Printer |
digiblst | Digiblaster (DIY) |
- for "-exp"
ssa1 | Amstrad SSA-1 Speech Synthesizer |
dkspeech | Dk'tronics Speech Synthesizer |
rom | ROM Box |
multiface2 | Multiface II |
pds | Programmers Development System (CPC Target) |
rs232 | Pace RS232C interface |
amsrs232 | Amstrad RS232C interface |
sf2 | SYMBiFACE II |
amdrum | Amdrum |
playcity | PlayCity |
smartwatch | Dobbertin Smart Watch |
- Loading external ROMs
The ROM Box expansion can be used to load external ROMs such as MAXAM:
mess cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.
GUI front-ends
Various GUI front-ends for MESS exist for Windows, Linux, and OS X—see this list: [1]
CRT simulation
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:
Remaining issues with CPC emulation
- MESS may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.
- MESS cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.
- Some demo tricks may be broken in MESS, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).
- CPC+/GX4000 emulation still has some obvious graphics glitches.
- The emulated CPC464 has the AMSDOS ROM loaded which is a problem with early 464-only programs that rely on the 464's larger free memory.
JSMESS, a JavaScript port
There is an experimental port to JavaScript, see the JSMESS article for details.
Links
- MAME at the English-language Wikipedia
- Official site
- MESS user's manual
- CPC ROMs for MESS