Skip to content

Platform: MAME (MESS and Arcades)

cowarlydragon edited this page May 7, 2024 · 1 revision

MAME. The Multiple Arcade Machine Emulation project. One of the grandaddies and OGs of emulation.

Because of the sheer number of systems and machines MAME does and plans on supporting, this gets its own "platform" page.

MAME for the first 10 years or so was mostly concerned with getting coin-op arcade machines emulated. But around 2010 the MESS (Multi-Emulation Super System) project started up with the idea of MAME-style interfaces and drivers for consoles and computers. This progressed fairly rapidly, and after about five or so years the MAME and MESS people decided to merge the projects.

The downside of this is that MESS/MAME emulation of non-arcade systems, while rapidly developing in scope and accuracy, can be pretty hard to track down for HOW you actually get it setup. For something like the AppleII for example, the superdevs of MAME/MESS have implemented a wide array of models, peripherals, devices, and expansion cards. But specifying everything you need for a system can be an INI / CLI option smorgasborg.

Generally, standalone mame MESS-ish drivers work like this for disk image software:

<path_to_MAME> <driver> <driver/machine options> -flop1 <path_to_disk_image>

If you use a 'software list' (which I haven't tried yet: caveat emptor) reference, you don't usually have to specify the drive:

<path_to_MAME> <driver> <driver/machine options> <path_to_disk_image>

If you use the retroarch core, generally you need to put all the driver, machine options, and the reference to the software inside quotes so those arguments aren't considered retroarch cli arguments:

<retroarch_command> -L <path_to_retroarch_mame_core> '<driver> <driver/machine options> <path_to_disk_image>'

MAME roms are their own beast. Especially with MESS-derived machines, it is not simply a manner of finding say the zip file of "apple2" driver. That driver often has a large set of other MAME roms that it depends on, along with other MAME roms those need, and on and on. In addition, there are many versions of these roms that are often redumped and repackaged, and the roms don't often have version info. There are file hashes that can be used against "DAT" databases and yada yada yada.

A note on file names: MAME has a slavish devotion to an 8-character limit to its "driver" names and software list files (see below). This can make it a bit obtuse on what the hell is the name of the driver you need, or what the best is. For a good example, MAME emulates a TRS-80 with driver name trs80, but what you REALLY want to run is the Color Computer 3, which is "coco3". And the software list names make this even harder.

Arcade Database, a poor overworked site, has good driver information, but not a lot of software list information. It's out there, sometimes in DAT files.

Basically, you'll want to either download an entire version of the MAME roms (minus the CHDs generally speaking) which is a HUGE amount of data. Maybe you'll find a really good subpackage of roms for a specific machine, or you'll get good with the "DAT" files to identify which roms and zips you need and that they are of the proper version.

Each "driver" (e.g. apple2 is the original Apple][, apple2e is the Apple//e, apple2gs is the Apple II-gs) will have its own sub-options like -flop1 for a virtual floppy drive, -cart for a virtual cartridge rom slot, or -hard for a virtual hard drive image. Tracking down this info can be hair-pulling, but whatever I know for MAME/MESS subsystems I'll put in the Platform docs.

Software Lists: I have not actually ran a software list, but each MAME-MESS subproject has a "software list" which is a bunch of standard roms, disk images, etc that they use presumably for compatibility testing and development. Presumably you place these software lists in a standard MAME location or specify the software list location on the CLI, and then you can refer to games/disks/roms by their MAME-esque software list name. ANd again, there is that MAME 8 character max codenames for everything.

I generally run MAME with the Retroarch core, but sometimes the CLI options for the drivers becomes really annoying, and the Retroarch MAME core tries to hide the standard MAME UI a bit too hard sometimes, and it's necesary to use it for remapping or disk control or other options.