Difference between revisions of "MAME"
(→How to) |
(→Downloads) |
||
Line 24: | Line 24: | ||
|colspan="3"|<hr/> | |colspan="3"|<hr/> | ||
|- | |- | ||
− | |align=center|{{Icon|Lin|Mac|BSD}} | + | |align=center|{{Icon|Lin|Mac|BSD|RiscOS|AmigaOS}} |
|[https://wiki.mamedev.org/index.php/SDL_Supported_Platforms SDL Supported Platforms] | |[https://wiki.mamedev.org/index.php/SDL_Supported_Platforms SDL Supported Platforms] | ||
|- | |- |
Revision as of 01:06, 7 July 2021
Developer(s) | MAME Team |
---|---|
Latest version | 0.266 |
Active | Yes |
Platform(s) | Multi-platform |
Emulates | Thousands of electronics |
Website | MAMEDev.org |
Programmed in | C++ (C & Python for some drivers) |
Source code | GitHub |
MAME (originally an acronym for Multiple Arcade Machine Emulator) is a multi-platform, open-source, multi-system emulator written in C++. The philosophy behind the project is to recreate the workings of machines through emulation, and thus the ability to actually play the games is "a nice side effect". MAME is incredibly large, supporting thousands of machines and ROM sets, though what is supported is not what's playable; your mileage may vary. In the event you don't like MAME's own interface, there are many alternative frontends available.
Much like the name says, MAME was supposed to be for arcade machines like Pac-Man back when it was released in 1997. Over time, MAME has incorporated similar projects out of a necessity to keep development active and prevent duplication of work (as some arcade machines often shared hardware with consoles to ease development of games); the first project to be merged was MESS at the end of May 2015 starting with version 0.162 and it functioned almost exactly like MAME but for home consoles and other esoteric devices that never got emulated elsewhere. MAME also had a policy against emulating gambling machines, but that decision has since been reversed and the project that aimed to get them working, AGEMAME, has also been merged.
Contents
Downloads
Official release Stable | ||
SDL Supported Platforms | ||
Nightly builds Compiled by Ashura-X |
Overview
MAME is the prime example of a jack of all trades; it can technically emulate consoles like the PlayStation and Nintendo 64, but for those consoles you're better off going with our recommended emulators as they may be more performant or more compatible than MAME's own drivers.
The project and its team focuses on accuracy (preferably cycle-accuracy) and preservation, which often puts usability at a much lower priority for end users, so don't expect support for more recent boards like Atomiswave. For some systems, the developers may not have everything implemented. The native interface will tell you about the emulation status of the chosen driver, and what components are considered lacking.
We have an outdated compatibility list here. You can see the upcoming version's changelog here. Other compatibility lists:
- List of arcade games that DON'T work Last updated February 2014. Don't expect the most recent games (like Sega Naomi ones) to run at full speed, MAME is very resource intensive.
- NonMAME (2015 Mirror) This is a list of arcade systems that currently are not emulated by MAME or are emulated better by other emulators.
ROM dumps
When developers know more about a system, they often have to dump more components like ROMs and BIOSes if necessary. It's highly recommended to use a ROM management tool such as RomCenter or ClrMamePro. Without these programs, it'll take you a lot longer to find the necessary files for a game.
Something as popular as Pac-Man will probably never need newer dumps beyond the current ones because it's been continually researched from the beginning, and the ROMs have been pretty widespread, but for very rare machines, MAME will see continuous changes in the files it needs as more information is discovered about the system. You can expect these ROMs to surface online in some form, but you may as well never get them directly from the developers themselves.
MAME is very strict about what components of a ROM dump it needs to even function, and it may tell you if something is wrong with the files (i.e. a failed checksum); only a ROMset with all the newest information will work in recent versions of MAME. For machines that use stuff like hard drives and optical disks to store its data, MAME has its own format called Compressed Hunks of Data (CHD) which uses a number of compression methods to reduce the size of a raw image file. This format also allows MAME to use 7-Zip archives for ROMsets in place of Zip files.
Frontends
MAME used to be a command line application that was launched by a separately licensed frontend. However, with MAME relicensing as open source in 2016, the developers have since incorporated MEWUI as its built-in interface. However, it still accepts command-line parameters, allowing most frontends to keep working. You can see a list of them here.
History
MAME was first released on February 5, 1997 by Nicola Salmoria as a Pac-Man emulator,[1][2] but before he could do any more work on the project he handed it over to Mirko Buffoni in April 1997 after being required to do National Service in the Italian army.[1] Since then, even as early as 2003, the emulator has become very extensive, with the majority of arcade system boards from the 1970's, 1980's and early 1990's supported.
MAME originally used a custom BSD license that prohibited commercial use in a few ways. This was mainly used to deter arcade operators from monetizing an emulated version of a widely available commercial title like Pac-Man. However, the MAME team didn't have the funds to afford prosecutors, so this was never effectively enforced. Through an extensive relicensing process in 2016, the project completely changed to a combination of GPL/BSD where applicable. This allowed them to merge the codebase for the MEWUI frontend into the main application starting with version 0.171.
How to
Convert Bin/Cue files to CHD
Many emulators other than MAME are beginning to support Compressed Hunks of Data, mainly because compared to the alternatives, it offers compression (or better compression) on all fronts. Libretro is making an initiative to support them thanks to a successful bounties initiative, and in many cores such as their Beetle fork, they've begun rolling it out for certain platforms like Saturn and PlayStation so people can test it.
If you're interested in trying it out for yourself, this guide will show you how to convert to the format using MAME's command-line tool called chdman
. We'll warn you now that you will need to know how to use either a Unix shell or the command prompt in order to use it. The developers of MAME seemingly don't have plans to give chdman
an interface so if the thought of going back to the DOS days scares you too much, you may have to wait.
On Windows, download MAME from the official website (linked above). The Linux guides on emugen will usually provide these locations. On Windows, there should be an executable in the main directory called Open up the terminal and navigate to the folder containing the BIN/CUE files. $ cd "path/to/folder"
>C:\path\to\chdman createcd -o "test (!).chd" -i "test (!).cue" $ chdman createcd -o "test (!).chd" -i "test (!).cue"
|
Recompressing ZIPs to 7-Zip
- Note: If you're confident, you can delete files immediately instead of sending them to the recycle bin or trash bin using the keyboard shortcut
Shift
+Delete
. Always back up the files if you're worried you might do it wrong.
MAME keeps a database of romsets including what each file should be named. If the ROM dump is obtained through a ZIP file, you can uncompress the files inside and transfer them to a 7-Zip file for better compression. The 7-Zip archive HAS to have the exact same name (not the same file extension obviously).
In case you're wondering why 7-Zip is supported in MAME and not RAR, it's because the LZMA development kit that's developed alongside 7-Zip is in the public domain, and the MAME team uses it for CHDs along with FLAC for audio and data compression; RAR is a proprietary format that can only be decompressed by 7-Zip, not compressed to, as per an agreement with both development teams.
Graphical | Take the zip file:
roms/ (romset).zip/ (game).(rom) (lle1).(rom) (lle2).(rom) And uncompress it to a folder of the same name. roms/ (romset).zip/ (game).(rom) (lle1).(rom) (lle2).(rom) (romset)/ (game).(rom) (lle1).(rom) (lle2).(rom) At this point, you can safely delete the zip file. Go into the folder, select all the files, and add them to a .7z archive using 7-Zip. Assuming you've installed 7-Zip with the default settings on Windows, the option to do this should come up when you right-click the files. The name of the archive must be the romset's name. The config screen may show an option to "delete files after compression". You can safely select this and, assume you do, the archive will now appear in the folder (unless you've specified a different location): roms/ (romset)/ (romset).7z Take the 7-Zip archive, move it into the roms folder, and you can safely delete the romset's folder. It should look like this. roms/ (romset).7z Rinse and repeat for any other romsets you want to do. MAME should be able to read it. |
---|---|
Terminal | The following is a non-destructive one-liner to decompress and recompress your files from zip to 7z. Please account for at least a 3:1 space requirement, and about 3 seconds time per file (give or take). Keep in mind, if you have any other folders present in the working directory it'll snag those too during the second step.
for y in *.zip; do 7z x "${y%}" -o*; done && for i in */; do 7z a "${i%/}".7z "./${i%}*"; done After it's done, be sure to check and make sure the 7z and zip files' contents match before deleting both the zips and their extracted folders. |
Forks
MAMEUI64
MAMEUI64 is the current name of MAME32, the original MAME GUI for Windows. As it traces its lineage to MAME32 0.27 from 1997, it has additional bugs compared to mainline MAME, lacks several features of modern MAME or makes it difficult to use them via GUI, and does not scale properly to high resolutions. The MAME developers do not recommend using any derivative of MAME32 for these reasons, instead suggesting mainline MAME with an external frontend if the internal MEWUI is not sufficient.
GroovyMAME
GroovyMAME (or GroovyUME) is a fork of MAME/UME made primarily to support arcade CRT monitors for AMD cards. It also includes input lag reductions that can be taken advantage of on CRTs or LCDs.
http://forum.arcadecontrols.com/index.php/topic,128879.0.html?PHPSESSID=domm2c4q77esu0j9uohc5vrqn5
PinMAME
PinMAME is a fork of MAME32 0.76 that exclusively runs ROMs for pinball machines. It can be used to launch these ROMs standalone, like with MAME. However, unlike MAME, it also has a COM module called VPinMAME that can be used with the pinball simulator Visual Pinball, or to drive real hardware.
ARCADE
ARCADE is a maintenance-only continuation of the MAMEUIFX project, which was in turn forked from MAMEUI/MAME32. MAMEUIFX included unique drivers and games compared to mainline MAME, but these are now integrated into HBMAME instead.
Arcade games only
- NO mechanical games (pinball, crane games, etc)
- NO poker, fruit, slot or gambling games
- NO computers, consoles, terminals, appliances, etc
- NO games that display a black screen (skeleton drivers etc)
Netplay
Downloads
Review | |
---|---|
PROS |
|
CONS |
|
How to |
---|
In order to configure your controllers, you need to press TAB once the game is running. Clear every key for Player 1 using "Esc", and only map the directional buttons, and buttons number 1 through 8, which should cover most standard games. You may also chat in-game by pressing Home twice. Also, you have to restart the emulator EVERY TIME you load a new game, or attempt to restart the current one. Else, you'll get a black screen. |
References
- ↑ 1.0 1.1 MAME OVER (0.99)
- ↑ A Brief History of Emulation: MAME. Youtube (2017-12-02)
- ↑ http://manpages.ubuntu.com/manpages/trusty/man1/chdman.1.html, see createcd.
External links
- Developer WIPs (Official MAMEDEV.org page showcasing lists pointing to profiles and links of many MAME developers)
- Developer coverage from David 'Haze' Haywood. (A media-heavy blog with few articles per month on average. Goes more in-depth than MAME's changelogs and can be fun to read. Also see his YouTube channel & Twitter feed. Former project coordinator, 2003-2005.)
- Developer coverage from Angelo 'Kale' Salese. (Former project coordinator, 2011-2012. He mainly developed the ST-V arcade core. Also see his more regularly updated YouTube channel.)
- Dev coverage from Bryan 'Mish' McPhail
- Dev coverage from Dirk 'Duke' Best
- Dev coverage from Fabio 'etabeta' Priuli
- Dev coverage from Frank 'Knarfian' Palazzolo
- Dev coverage from Guru (Mainly repairs/decaps arcade boards and provides dumps of them for MAME. Decapping status page, Wanted dumps list.)
- Dev coverage from Luca Elia
- Dev coverage from R. 'Arbee' Belmont (Worked often on Apple ][, /// and early Mac's emulation)
- Dev coverage from Roberto 'Robbie' Fresco (He usually reverse-engineers boards of old gambling games (casino/cards and pokies-style) and some arcade games, especially in foreign languages. He often works with other programmers like Grull Osgo, and occasionally with Andreas Naive, ElSemi, Tomasz Slanina, etc.)
- Dev coverage from Roberto 'Robiza' Zandonà (Italian blog)
- Dev coverage from Tomasz 'Dox' Slanina
- Dev coverage from Vas 'cuavas' Crabb (Few posts)
- YouTube channel from Philip Bennett (His website is not updated anymore, but his Twitter feed is active. He tends to research early 3D arcade systems from the mid-1980's to 1990's, and uploads some dumps of machines and clones to MAME.)
- YouTube channel from Ryan 'TheMogMiner' Holtz, former Minecraft developer (Note: His Twitter feed has lots of fillers unrelated to his MAME work)
- YouTube channel from Sterophonick (Began working on 2018 Gigatron TTL Microcomputer for MAME on Aug 4, 2020.)
- Twitter feed from Aaron Giles (His older Aaron's Almanac website for MAME work was last updated in 2012. However, he "came back from the dead" to work on MAME again on July 23, 2020! Former project lead, 2005-2011. Wrote drivers for 11 CPUs, 7 sound chips, and 100+ arcade games.)
- Twitter feed from Henrik 'algestam' Algestam (He is well noted for dumping and emulating those Nintendo Game & Watch LCD handheld titles to MAME)