# MESS FAQ

## About this FAQ

- MESS FAQ?

## General

- What is MESS?
- What is the purpose of MESS?
- What is an emulator and a simulator?
- What makes MESS different from other emulators?
- Is MESS really free?
- Isn't MESS the same as MAME?
- Why don't MESS and MAME merge?
- Why doesn't MESS split into two versions, one for consoles and one for computers?
- I still do not understand why MAME and MESS will not merge. Since the cores are kept so close together, shouldn't #ifdef's suffice?
- How come my emails to the MESS developers do not receive replies?

## Starting Up

- What do I need to run MESS?
- What is a BIOS?/What is a ROM?/What's a disk image?
- Where do I get BIOSes/ROMs?/How do I use my old software with MESS?
- Okay, I got some BIOSes and images, now where do I put them?
- How do I run the MESS application?
- I did everything just like you said, but it still doesn't work!
- It works, but it is way too slow!
- For some reason, ESC does not quit MESS nor does TAB bring up the menu!

## How Do I...

- How do I set up the screenshots/snapshots folder for MESS?
- How do get screenshots?
- How do I compile/build/debug MESS for Windows?
- How do I compile/build/debug MESS with Visual C?
- How do I compile/build/debug MESS for Un*x?
- How do I contribute to the MESS project?

## Trouble Shooting

- I have found a bug; what can I do to help the MESS developers fix it?
- My English is not good. I do not understand!

## MESS FAQ?

This FAQ was written to support MESS. If you have any changes, suggestions or additions please contact the MESS team. Changes will be made as time is available. 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.

## What is MESS?

MESS is an acronym that stands for Multiple 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 www.mess.org or www.mame.net.

## What is an emulator and a simulator?

An emulator attempts to recreate the original functions of the hardware. Software run on a emulator should perform exactly as if it were being run on the original hardware.

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 and console systems, and MAME emulates arcade games. This may include bugs or flaws that were on the original system.

## 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. This 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.

## Isn't MESS the same as MAME?

No. MESS is based on MAME, and uses the same underlying engine, but its goals are different. To put it simply, MAME is for arcade machines, and MESS is for home computers and video game consoles.

## Why don't MESS and MAME merge?

Although the people involved in developing new versions of both programs are enthusiasts working out of love for the systems involved, the systems are essentially different. Arcade games, which MAME specializes in, are usually unique, in that the hardware for any particular game was a one-time solution arrived at in order to get the game to market. Some game companies, such as SNK, Nintendo and others, did develop systems that could be changed over to play other games relatively easily, but this wasn't the rule in the arcades. To emulate an arcade game, the programmer develops a driver file which mimics hardware surrounding the arcade game's CPU or CPUs. Both MAME and MESS contain the same cores to emulate the same CPUs. The focus of MESS is accurate emulation of the hardware of computer and gaming consoles, hardware which doesn't change depending MESS on which game or program is being run. Fundamentally, MAME and MESS are being created by and are targeted for slightly different segments of the emulation community: gamers and vintage computer enthusiasts. Those two communities do often times overlap, and a merger of the two programs is theoretically possible at some point in the future.

## Why doesn't MESS split into two versions, one for consoles and one for computers?

Why isn't there a program called MASS to mimic mainframes? So far it hasn't seemed necessary to split MESS ; into two programs. The core program inherited on a regular basis from new updates of MAME; can accommodate a large number of systems. If you think of each arcade game in MAME as a separate computer or console, the latest version has over 3,000 different machines available, compared to MESS' hundreds of systems listed under its All Systems menu. The border dividing gaming consoles from computers tends to blur the further back you go in time. Is Nippon Electric Company's PC Engine a game system or a computer? Coleco originally marketed its Adam computer as an add-on to the Colecovision gaming system. Nintendo also had big plans to turn its NES and later SNES into full-fledged computers delivering information and services to users over an early version of the internet. The APF Imagination Machine was also built around a game console core. Atari's computers grew from its original gaming consoles, and were probably used more for gaming in their day than any serious computing projects. The simple answer is there is still a lot of room for MESS to include new gaming consoles and computers. The complicated answer is that it is hard to tell the difference.

## I still do not understand why MAME and MESS will not merge. Since the cores are kept so close together, shouldn't #ifdef's suffice?

Yes, to a point. In a sense, #ifdefs do suffice and all of MESS's overrides to the core are encapsulated in #ifdefs. In theory, MAME and MESS could be developed out of a common source tree similar to how Xmame and Xmess are maintained in a unified fashion. But there are additional considerations. Unlike Xmame and Xmess, MAME and MESS are maintained by different groups. In the course of MAME development, occasionally sweeping changes are made that require small changes to every MAME driver. If MAME and MESS were maintained out of the same source tree, then the MAME people would be responsible for keeping MESS up to date as well during such changes. Conversely, changes to MESS would need to be scrutinized for breakage in MAME.

Because of these issues, it is more prudent to keep two separate source trees. When breaking changes occur in MAME, the MAME people can then update all of the MAME drivers and when that is done and the changes are released, the MESS people can do the same process on the various MESS drivers.

## 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 at http://www.mess.org/

## 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

For the sake of clarity, the official MESS terminology for #1 is "BIOS", after what they are typically called in Intel PC systems, and the term "ROM" is avoided. 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 1/4" diskettes so they fit in a 3 1/2" 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 BIOS subfolder of wherever you put MESS. Game images should go into the SOFTWARE\[system name] folder. They can still be zipped, but only one image per zip file.

## How do I start the MESS application?

For DOS, 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 -listdevices" and valid options are listed in the mess.txt and msdos.txt files.

For example:
mess nes -cart zelda.nes -nosound (This will run the Zelda game on the Nintendo system without sound. See mess.txt for more examples.

For UNIX/Linux, do the same thing except the name of the program is xmess.

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 at http://www.mess.org. 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 FAQ at http://www.mame.net --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 readme.txt and mess.txt.

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

Because of MESS' goal of compatibility over speed, this is often the case. You might think that your computer should be able to emulate such old machines at full speed, but keep in mind that MESS is not performing any shortcuts in the emulation such as those performed by HLE emulators. 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. There are some tweaks you can do to speed up the performance a bit (see the MAME FAQ), but if you need a big boost, there is not much you can do except buy a faster computer, wait for an update (not likely), or use another emulator.

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

In MESS for Win32, there are two UIs use at runtime. There is the "Classic UI" which is derived from MAME's UI, and there is the "New UI" which uses a standard Windows menu bar to operate the emulation. By default, the New UI is enabled. However, some people prefer to use the older UI. This can be done in one of two ways.

1. When running the MESS GUI (messgui.exe), choose "Options --> Default System Options --> Miscellaneous Tab" and uncheck the "Use New UI" checkbox.
2. If it exists, edit mess.ini and change the "newui" setting to "0". For more details on mess.ini, consult Using MESS at the Command Line

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

For 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?

For Windows, see the How to compile MESS (Win32) document. Compiling MESS for Windows requires the MinGW toolkit, a variant of GCC. MinGW comes with a variant of GDB for debugging.

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

On the MESS download site, there are Visual C project files but they are extremely outdated. In theory, one could grab the VCMame project files and port them over to build MESS, but to my knowledge no one has done this yet.

There is also an alternative makefile (makefile.vc) that uses the Visual C command line compilers but the makefile itself requires GNU make 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 http://x.mame.net/.

## 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

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.

## 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, you can 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 reproducible case and report it at MESS Bugzilla. When reporting a bug, be sure to keep in mind that MESS is a multiple emulation system, and the reader of your bug report might not be intimately familiar with the system that you are using. In other words, if you find a bug in the WowieZowie driver, do not expect the reader of the bug report to know the command for loading a file on WowieZowieOS. If a bug report contains a concrete reproducible case that is understandable even to someone not familiar with that system, it is much more likely to be fixed. Alternatively, if a bug was not present in an earlier MESS version, it helps greatly to identify which MESS version introduced the bug.

## 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 http://babelfish.altavista.com. They have a translation program that can translate between English and most European languages as well as a number of other languages. Also look at the MAME FAQ at http://www.mame.net. It is in many different languages, including Greek, Serbian, Romanian, Norwegian, Danish, Hebrew, Czech, Dutch, French, Italian, Korean, Japanese, Chinese, German, Portuguese, Spanish and Finnish.