# MESS FAQ

## About this FAQ

### MESS FAQ?

This FAQ was written to support MESS. If you have any changes, suggestions or additions please contact the MESS team or register a username and edit this page (don't worry about doing something wrong, old versions of this page can easily be restored). If you have a question that is not answered in this FAQ, try the searching the MESS message boards. There is a wealth of information there already.

You may also find the MAME FAQ useful, as MESS and MAME share many of the same features and options.

## General

### What is MESS?

MESS is an acronym that stands for Multi Emulator Super System. MESS will more or less faithfully reproduce computer and console systems on a PC. MESS can currently emulate over 250 systems from the last 5 decades.

MESS emulates the hardware of the systems and sometimes utilizes ROM images to load programs and games. Therefore, these systems are NOT simulations, but the actual emulations of the hardware.

### What is the purpose of MESS?

The primary purpose of MESS is to preserve decades of computer and console history. As technology continues to rush forward, MESS prevents these important “vintage” systems from being lost and forgotten. MESS is based on MAME. Additional information about MESS or MAME can be found at the MESS homepage or MAMEDev.

### What is an emulator and a simulator?

An emulator attempts to recreate the original functions of the hardware. Software run on an emulator should perform exactly as if it were being run on the original hardware. This may include bugs or flaws that were on the original system.

A simulator attempts to recreate the original functions of the software, essentially imitating the game or software. The end results may look very similar between emulation and simulation but they are very different in how they are implemented.

MESS and MAME are both emulators. MESS emulates computer, console and hand held systems, and MAME emulates arcade games.

### What makes MESS different from other emulators?

- MESS emulates many types of systems (console, computer, handheld, calculator etc…), not just one like some other emulators.
- MESS is free.
- MESS is open source so anyone who knows the C programming language can help improve the project.
- The architecture of MESS makes it easy to add lesser known systems.
- MESS strives for accuracy and portability above all else.

The primary objective of MESS is to accurately emulate multiple systems. Most stand alone emulators/simulators often focus on letting you play games on your PC. They often include speed hacks or fudge things to make them look right. The philosophy of MESS is to behave exactly like the original hardware, even if it is slower, so that all software for the original machine will work as it would on the original hardware. The focus on accuracy tends to make MESS a bit slower than other emulators, but this is not always true.

### Is MESS really free?

Yes, MESS is really free. The source code is freely available, too. It is illegal to sell MESS or its source. For details, please see the license.

### Isn't MESS the same as MAME?

No. MESS is based on the MAME core. MESS provides additional drivers and tools to emulate different systems. MAME is for arcade machines, and MESS is for home computers and video game consoles.

### Why don't MESS and MAME merge?

It is could be possible in the future but right now each is targeting a set of systems to emulate. MESS is built on top of the MAME infrastructure and they share many of the same CPU code. The teams work very close and many developers contribute to both projects. Many arcade systems emulated in MAME are based on or related to consoles emulated in MESS. There is a mutual benefit in testing and development of these related drivers.

The MESS project keeps up-to-date with changes to the core MAME system, and generally releases shortly after each major MAME release.

### How come my emails to the MESS developers do not receive replies?

The MESS developers receive a large volume of email, and also suffer from “Real life syndrome”, and thus might not be able to reply, particularly when such questions are answered in this FAQ. Your best bet is to ask a question on the MESS message board.

## Starting Up

### What do I need to run MESS?

In general a PC with a decent processor should run most of the systems at a decent speed. There are an enormous variety of systems emulated and each system has its own requirements. The best thing to do is try the system you are interested in. But remember accuracy is the primary goal not speed.

### What is a BIOS?/What's a ROM?/What is a disk image?

First, it is important to note that in the emulation world, the term ROM is used to refer to two different things:

1. The ROM chips within a computer system, that usually contain some form of BASIC or the like
2. The ROM chips within a game cartridge for a console system

In MESS, #1 are also termed as “BIOS”, after what they are typically called in Intel PC systems. The term “cartridge image” is used to refer to #2, where “image” is a generic term that applies to downloaded images of removable media, whether they be a cartridge, a floppy drive, or a hard disk.

### Where do I get BIOSes/ROMs?/How do I use my old software with MESS?

In most cases, old software is physically incompatible with modern computers. No matter how hard you push, an Atari cartridge just plain won't fit in your computer's floppy drive. Folding up old 5¼” diskettes so they fit in a 3½” drive will only break your disks. Obviously there is a problem here - how do I get that software into my PC so an emulator can use it?

It is possible to build special cartridge reading devices for console systems and hook up old computers to new ones to transfer floppy disks. These media get transferred into files on the new computer.

Now, originally emulation was just for hobbyists who had all this special equipment, but some of them put these BIOSes and images up on the Internet for people to download, on the honor system that people would only download the BIOSes and images that they owned the original software for. Unfortunately, a lot of people came along who just wanted to download free games and did not care about preservation, and gave the emulation community a bad name among software companies. There are many BIOSes/images sites on the Internet, using a search engine should turn up the ones you want. But remember: Downloading pirated BIOSes/images that you do not own is illegal. Some people say that the copyrights have expired or that you can download it if you delete it after 24 hours, but they are wrong. It is up to you whether you want to ignore the law, as most of the games are not and will not ever be sold again.

Most systems require BIOSes. MESS is very picky about its BIOSes - they must be exactly the ones it is expecting, otherwise it may not work.

### Okay, I got some BIOSes and images, now where do I put them?

BIOSes should go, still zipped, in the `roms` subfolder of wherever you put MESS (create it if it doesn't exist). Game images can go anywhere, although by default the GUI will look in the `software\[system name]` subfolder of your MESS folder. They can still be zipped, but for command-line MESS there can only be one image per zip file (MESSUI supports multiple images per zip file).

### How do I start the MESS application?

For the command line version, type ”`mess [system] [device] [game] [options]`”, where `[system]` is the system driver name, `[device]` is the type of ROM, `[game]` is the filename of the ROM, and options are command line options. Valid `[device]` names (eg `-cart` and `-flop`) can be found by using `mess -listmedia`.

Example:

    mess nes -cart C:\ROMs\NES\zelda.nes -nosound

This will run the Zelda game on the Nintendo system without sound.

For Macintosh or Windows OS, run the MacMESS or messgui.exe application and click on the system or software you want to run.

### I did everything just like you said, but it still does not work!

There is a message board you can go to for help. But first, make sure you read this FAQ and the rest of the documentation. The answers can often be found there. Also check out the MAME FAQs – it is a very good resource for things common to MAME and MESS, such as sound and graphics setup. Also search through the message board to see if somebody already had the same problem. And at least put some effort into fixing it yourself. People on message boards can get very annoyed with people who ask questions that have already been answered elsewhere, especially in `config.txt` and `windows.txt`.

### It works, but it is way too slow!

MESS' goal is compatibility over speed. Some computers might not be able to provide the needed power for full speed emulation. Many other emulators perform shortcuts that sacrifice compatibility in favor of performance, which is a valid tradeoff given a different set of design goals. With MESS, your CPU is doing the jobs of the CPU(s), graphics chip(s), sound chip(s), as well as any other special hardware present in the original machine, so it can be bogged down fairly easily, especially by the relatively unoptimized MESS core. MESS is written almost entirely in C, not assembly, for compatibility and portability reasons. Additionally, there is a level of overhead required to get the level of modularity that it takes to have the myriad components in the emulation be usable across a broad set of drivers.

### For some reason, ESC does not quit MESS nor does TAB bring up the menu!

In systems with a full keyboard, the shortcut keys are disabled, because they are needed by the system being emulated. You need to press the Scroll Lock key (you get a message), then tab and other shortcuts will now work. Press Scroll Lock again to get the full keyboard back again.

MESS developers have attempted to choose a key (Scroll Lock on PCs, Delete on Macs) for this function that would not interfere with either full keyboard emulation or partial keyboard function keys.

In the event that your keyboard doesn't have a Scroll Lock key (e.g. some laptops), please either plug in a USB keyboard that does have one, or do the following:

1. With at least one ROM in the “roms” folder, launch MESS from the console/command-line/command prompt, without loading any “drivers” (ie. for Windows - “C:\MESS\mess.exe”)
2. Using the arrow keys in the menu provided, select “Configure General Inputs” and press Enter.
3. Select “User Interface” and press Enter.
4. Scroll down and edit the configuration for “UI Toggle”. Change it from “Scroll Lock” to something else that won't conflict. For example, Shift+Insert might work, but your mileage may vary.

## How Do I...

### How do I set up the screenshots/snapshots folder for MESS?

The snapshot (aka screenshot) folder is the place to store images to be displayed in the GUI. It can display in-game/software images and system images, or anything else as long as it is named correctly.

The snapshot folder can be configured in the “Directories…” window under the Options menu in the GUI. The default screen folder is `snap`. Store system images with the system name. Store software/game snapshots in a folder under the system they belong to.

Example:

- `mess/snap/a2600.png` – This is a picture of an Atari system. The name needs to match the driver.
- `mess/snap/a2600/junglehunt.png` – This is an in-game screenshot of the game Jungle Hunt. The name needs to match game name.

### How do get screenshots?

You can take your own screen shots by selecting the “Save Screenshot” option in the file menu while in emulation. This will save an image in the PNG format with the name of the driver (if one does not exist already). If an image already exists an a sequential number will be added to the name (for example `coco.png`, `coco0000.png`, `coco0001.png` etc…).

You can also find many images on various emulation or download images from the internet at various sites. Try your favorite search engine.

### How do I compile/build/debug MESS for Windows?

Compiling MESS for Windows requires the MinGW toolkit, a variant of GCC. MinGW comes with a variant of GDB for debugging. Downloads of those tools can be found on the build tools page.

### How do I create a backtrace with MESS on Windows?

First you need to make a clean compile of MESS with symbols turned on, you can find the info on the Compiling MESS page. If you used the MAME MinGW build tools you should already have a copy of GDB, if not download GDB and install it into your MinGW directory. Open up the command promt and type `gdb mess` then run MESS inside GDB as you would the command prompt `run nes -cart C:\software\NES\metroid.nes -window` for example. Run the emulation until you encounter the crash you need to backtrace. It should pause instead of crashing out MESS, look at the GDB window and there will be a sigsev or error message, type `bt` to get a full backtrace.

Occasionally GDB will pause the emulation at an error which isn't the one you need a backtrace for, to continue the emulation just type `cont`.

Backtraces are very welcome in bug reports.

### How do I compile/build/debug MESS with Visual C?

You can invoke the build with `MSVC_BUILD=1` and the build will use Visual C instead of MinGW. Note that MinGW is still required as GNU make is used rather than nmake. Using the Microsoft compilers allows one to use the Visual C debugger to debug MESS, but one does not get the full benefits of the IDE.

### How do I compile/build/debug MESS for Un*x?

See SDLMESS.

### How do I contribute to the MESS project?

If you have programming skills, you can download the source and fix bugs, improve emulation on existing systems or add a new one! If you fix anything, be sure to submit the fixes so they can be included in the source. Be advised that corrections or additions may not be accepted if they are hackish in nature; MESS strives for accuracy both in emulation and in the source code. Another major concern is the verifiability of the changes. One major obstacle in MESS that often the MESS maintainer may understand the system much less than you do, and it can be very difficult for the MESS maintainer to validate any changes, so changes submitted to MESS should be accompanied with instructions on how to run the system and how to run specific software that failed to run before, but runs after the changes. It generally does not suffice to simply say “Look at page XYZ. It provides complete information on how to run the WowieZowie system”. The MESS developers need to know the specifics, and cannot run around how to use a very obscure system just to save the time of a submitter.

As an alternative, one way to contribute is to modernize drivers. Over MAME's/MESS's lifetime, there have been core improvements for which not all drivers have been modified to take advantage. These techniques include:

- Unified read/write address maps
- Natural keyboard support
- Tagged input ports

More items can be found on the MESS todo list. For details on what these mean, it is probably best to ask about them on the MESS message board.

If you do not have programming skills, you can help by documenting emulated systems and software, adding FAQ entries, reporting bugs, submitting artwork and so on – anything to assist those with programming skills and improve the project.

## Trouble Shooting

### I have found a bug; what can I do to help the MESS developers fix it?

If you are comfortable programming C, you can download the MESS source code and attempt to fix it yourself. If you have questions about the MESS source, ask them on the MESS message board.

If you are not comfortable programming C, the best thing for you to do is to create a bug report at MESS Bugzilla. When reporting a bug, make sure to include as much information as possible, including snapshots, links, descriptions, and instructions. Keep in mind that MESS emulates hundreds of systems and the reader may not be familiar with the system or driver you are reporting a bug in. A bug report with simple, clear instructions and a reproducible case is much more likely to get fixed. Also, if you know a previous version of MESS that worked correctly please include that information.

### My English is not good. I do not understand!

If you ask for help on the message board, post it in both English and your native language. Many people there speak more than one language and may be able to help you in your native language. Also, visit Babelfish. They have a translation program that can translate between English and most European languages as well as a number of other languages.