MAME, which orignally stood for "Multiple Arcade Machine Emulator," is a project dedicated to the preservation of vintage software. This software includes the Read Only Memory (ROM) files for arcade games. Over the years, most of the arcade game ROM files have been captured or dumped for emulation in MAME. You can read more about MAME here. Generally speaking, MAME is freakin' awesome!
It is illegal for me to provide game ROMs for download on this website. As a matter of fact, it is illegal for you to download game ROM files from any website unless you legitimately own the game or gameboard(s) which contain the ROM files. Actually, depending of where you live, you would need to get the approval from the original arcade machine manufacturer to legally download ROMS. Most ROMs are still copyrighted after all these years. Unfortunately, I will not be providing any links to download the ROM files....however, I am not the internet and/or copyright police. If you search the internet, it will not be hard to find websites that are dedicated to providing ROM files for your illegal downloading pleasure. But BE WARNED, a lot of ROM sites include malware, viruses, or harmful software with their ROMS that can/will harm your computer and steal your information. If you do this, you do so under your own volition.
This webpage is not intended to be a "how to" for the MAME project. Please refer to the documentation provided by MAME on the MAME website for full capabilty of the MAME software. However, there are certain commands in MAME that I will list here which will allow you to get a lot of the arcade game information that is captured during the preservation process more quickly than digging through mountains of documentation. In order to review the information captured in the ROM files, you will first need to install a version of MAME on your computer. Know exactly where you installed the MAME program before proceeding as you will need to know the installation directory to execute these commands. Open a command line shell and change to the installation directory. Ensure you have a few ROMs installed in the /roms directory. For my example, I have installed MAME on the F: drive in the MAME directory.
List the ROM info in XML format
F:\MAME\mame64 krull -listxml |
Where:
F = MAME installation drive letter
MAME = MAME installation directory
mame64 = MAME 64-bit executible
krull = ROM name
listxml = MAME verb that dumps all the comprehensive ROM information to the screen
This will dump all the ROM information in XML format and output it to the screen. You can also redirect the list command and dump the XML information to a file like this:
F:\MAME\mame64 krull -listxml > krull.xml |
You can navigate to the directory where the output file was written and open it with any browser or text editor as the XML is just ASCII (American Standard Code for Information Interchange) text that is human readable. Or you can use the Windows "write" command to open the XML file in WordPad like this:
F:\MAME\write krull.xml |
The interesting part of this XML dump is the plethora of ROM and important general machine information. In the XML file, look for the area that starts with "mame build":
This area of the XML tells you the:
ROM name = This is the filename that is written to each individual ROM (ROMs are binary)
size = The size of the file that is written to the ROM (i.e. 4096 bits, 8192 bits, etc.). Size determines the minimum ROM (EEPROM if applicable) size to write the file to (i.e. 2732A, 2764A etc.).
crc = Cyclic Redundancy Check (CRC) which is a parity protection scheme that is used to detect (and correct in some cases) errors in the binary file
sha1 = Secure Hash Algorithm (SHA) 1 - Similar to encryption, a hashing algorithm transforms the original code to a hashed code that is one-way (can't be cracked after it is hashed)
region = region of the game the ROM pertains to
offset = Memory address space in which the code starts. Take the offset starting point (in memory) and add the size (i.e. 4096), which lets the CPU know where the binary information starts.
I should take a minute and explain the SHA process and why it is so important to the MAME project. A SHA algorithm takes in data that is of variable sizes and condenses it to a fixed-size output. This process is called hashing. There are three types of algorithms, SHA-1, SHA-2, and SHA-3. Given the type and hash code, the algorithm will always produce the exact same resultant hash file. It is impossible to generate the same hash value using a different input file. This process ensures the original game code (in this example), which ran through the SHA, produces the same hash code in the MAME XML file. This verifies the original file that was written all those years ago, is the correct and exact code in MAME.
There is a ton of information in this area to include, main CPU type, sound CPU type, clock speed for each, dip switch settings, etc. This is just the beginning for what you can do with MAME. I suggest you take some time and spend reading the MAME documentation to familiarize yourself with all the possibilities. MAME is not just an emulator, it is much much more.