Difference between revisions of "MAME"

From Emulation General Wiki
Jump to navigation Jump to search
m (Changed protection level for "MAME" ([Move=Allow only administrators] (indefinite)))
(From latest Wayback Machine snapshot)
(19 intermediate revisions by 9 users not shown)
Line 1: Line 1:
 
{{Infobox emulator
 
{{Infobox emulator
|title = Multiple Arcade Machine Emulator
+
|title = MAME
|logo = MAME.jpg
+
|logo = Logo-mame.png
|logowidth = 135
+
|logowidth = 254
 
|version = {{MAMEVer}}
 
|version = {{MAMEVer}}
 
|active = Yes
 
|active = Yes
Line 12: Line 12:
 
|source = [https://github.com/mamedev/mame GitHub]
 
|source = [https://github.com/mamedev/mame GitHub]
 
}}
 
}}
'''[[wikipedia:MAME|MAME]]''' (an acronym for '''<u>M</u>ultiple <u>A</u>rcade <u>M</u>achine <u>E</u>mulator''') is a multi-platform, open-source, [[Multi-system emulators|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, [[MAME compatibility list|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 front-ends available.
 
  
Much like the name says, MAME was supposed to be for arcade machines like Pac-Man back when it was released in 1997. A similar project called [[MESS]] was made to do essentially the same thing for home consoles and other esoteric devices that never got emulated, but it has since been merged into MAME by the end of May 2015 in version 0.162, and now it supports ''a whole lot more'' than arcade machines.
+
'''[[wikipedia:MAME|MAME]]''' (originally an acronym for '''<u>M</u>ultiple <u>A</u>rcade <u>M</u>achine <u>E</u>mulator''') is a multi-platform, open-source, [[Multi-system emulators|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, [[MAME compatibility list|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 [[Frontends#MAME|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, <abbr title="Arcade Gambling Extensions for MAME">AGEMAME</abbr>, has also been merged.
  
 
==Downloads==
 
==Downloads==
===Windows===
+
{| cellpadding="4"
* [http://www.mamedev.org/release.html '''Official release''']
+
|-
* [http://ashura.mameworld.info/nightlybuilds/builds.html Nightly builds] (compiled by Ashura-X)
+
|align=center|{{Icon|Win-big}}
* [http://www.emucr.com/search/label/MAME-SVN Nightly builds] (up to November 27, 2015)
+
|[https://www.mamedev.org/release.php '''Official release''']<br/><small>Stable</small>
* [http://www.t2e.pl/pl/466/134/466/Automatyczne-edycje?tsearch=mame,svn,not|plus,not|mameui,not|mewui T2E builds] (Polish, up to March 2015)
+
|-
 +
|colspan="3"|<hr/>
 +
|-
 +
|align=center|{{Icon|Lin|Mac|BSD|RiscOS|AmigaOS}}
 +
|[https://wiki.mamedev.org/index.php/SDL_Supported_Platforms SDL Supported Platforms]
 +
|-
 +
|align=center|{{Icon|Win-big}}
 +
|[http://ashura.mameworld.info/nightlybuilds/builds.html Nightly builds]<br><small>Compiled by Ashura-X</small>
 +
|}
  
===macOS===
+
==Overview==
* [http://sdlmame.lngn.net/ SDLMAME port] (64-bit, provided by lngn.net)
+
MAME is the prime example of a jack of all trades; it can technically emulate consoles like the [[PlayStation emulators|PlayStation]] and [[Nintendo 64 emulators|Nintendo 64]], but for those consoles you're better off going with our [[Recommended Emulators|recommended emulators]] as they may be more performant or more compatible than MAME's own drivers.
* [http://ashura.mameworld.info/nightlybuilds/sdl_builds.html Nightly builds] (compiled by Ashura-X)
 
  
==Overview==
+
The project and its team focuses on [[Emulation Accuracy|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.
MAME was first put out on February 5, 1997 by Nicola Salmoria as a Pac-Man emulator,<ref name="worldofstuart">[http://worldofstuart.excellentcontent.com/mameover.htm MAME OVER] (0.99)</ref><ref name="History">{{cite web|url=https://www.youtube.com/watch?v=VgJF18Pm7MA|title=A Brief History of Emulation: MAME|publisher=Youtube|accessdate=2018-09-14|date=2017-12-02}}</ref> but before he could do any more work on the project, he handed it over to Mirko Buffoni in April 1997 after requiring to do National Service in the Italian army.<ref name="worldofstuart"/> 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. On February 2016 in version 0.171, a new GUI was integrated into MAME which allowed users to launch games in it without the need for a third-party GUI application.
+
 
 +
Read this official [https://wiki.mamedev.org/index.php/FAQ:Performance FAQ page] for the reasons on why it is so hard to run many emulated systems usably on an user's computer or device that supports MAME, its derivatives and/or cores inside frontends or certain kinds of software (eg. [[RetroArch]]). It also has helpful tips to try to get better performance from some systems.
 +
 
 +
===Compatibility===
 +
We have an outdated compatibility list [[MAME compatibility list|here]]. Although, it focuses on arcade machines, and popular computer & console platforms, it is worth updating. It is highly recommended to instead check the home page on this wiki for any listed computer, console or other gaming device that may have emulation in MAME. You can see the upcoming version's changelog [http://mameinfo.mameworld.info/ here]. Other compatibility lists:
 +
 
 +
* [http://unmamed.mameworld.info/ List of arcade games that DON'T work] Last updated February 2014. Don't expect the most recent games (like [[Sega NAOMI and variants|Sega Naomi]] ones) to run at full speed, MAME is very resource intensive.
 +
* [http://nonmame.retrogames.com/ NonMAME] ([http://web.archive.org/web/20150306213522/http://consume.retrogames.com/ 2015 Mirror]) This is a list of arcade systems that currently are not emulated by MAME or are emulated better by other emulators.
 +
* [https://wiki.mamedev.org/index.php/Non-Working_Drivers Non-Working Drivers] under the MAMEDev Wiki.
 +
 
 +
MAME can currently [https://docs.mamedev.org/initialsetup/mameintro.html# emulate over 32000 individual systems from the last 5 decades].
  
However... don't expect support for more recent boards like Atomiswave; the project and its team focuses on [[Emulation Accuracy|accuracy]] (preferably cycle-accuracy) and preservation, which often puts usability at a much lower priority for end users. The program is also '''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); once developers know more about a system, they'll often have to dump more components like ROMs and BIOSes if necessary, and obtaining newer dumps from the boards isn't exactly the easiest thing in the world for users who only have traditional desktops, and the same goes for anyone with the actual arcade boards. Something as popular as Pac-Man will probably never need newer dumps beyond the current ones because it's been continually researched, and the dumps have been pretty widespread, but other machines you've probably only seen once at an arcade will probably need new dumps for a reason. Only ROM dumps with all the newest information will work in new versions of MAME. Even then, programmers may not have everything implemented. The native interface will tell you about the emulation status of the chosen romset, and whether the one you're using is even emulated at the current time.
+
===Categories===
 +
The MAME emulator covers a wide assortment of different types of emulated systems including, but not necessarily limited to:
 +
<div class="wikitable mw-collapsible mw-collapsed">
 +
{|width="100%"
 +
|- valign="top"
 +
|
 +
- '''Arcade''' ''(See Main page, & Compatibility list above)''
 +
:Where it all started, and by far the most popular and widely utilized purpose of MAME.
 +
:These arcade cabinets usually contain video & audio outputs.
 +
:{Info needed) Perhaps Redemption Games, aka Medal games, should be in a separate category (They are usually arcade-style cabinets with electro-mechanical parts. Some may even use the same PCBs as normal arcade cabs.)
 +
- '''Board Game (Electronic)'''
 +
:This sort of game in real life is typically played on a tabletop.
 +
:This category especially covers chess game systems from the 20th century.
 +
- '''Calculator'''
 +
:Is not a pocket computer.
 +
:Does not have additional functions as portable organizer, etc.
 +
- '''Casino'''
 +
:A casino games is an arcade-type game, but primary purpose is for gambling.
 +
:A typical casino game likely does not have electromechanical parts.
 +
:Fruit machines can be included in this category, probably.
 +
- '''Compilation'''
 +
:Example: Original game was an Arcade game. Game was released as a port or part of a game compilation for PC or a Game Console.
 +
:It is unclear if files of such games from these compilations (That may have a self-contained MAME build) can be ported to a PC/console and booted with the user's own MAME build (Info needed).
 +
- '''Computer''' ''(See Main page, [[List of computers]], & [[Desk-Size_Computers_/_Supercomputers_/_Mainframes|Huge Computers]])''
 +
:Typically requires loading external software (games or applications) from a MAME Software List.
 +
:Hardware in real life typically requires external AC power.
 +
:Not a handheld computer.
 +
:Not a game console.
 +
- '''EM Reels'''
 +
:An EM Reels game is an arcade-type game, but primary purpose is gambling.
 +
:Game includes electromechanical external artwork required to properly emulate the game.
 +
- '''Game Console''' ''(See Main page)''
 +
:Typically requires loading external software for games from a MAME Software List.
 +
:Hardware in real life is required to be attached to an external display.
 +
:Hardware in real life requires an external AC power.
 +
:Hardware in real life requires an external controller plugged into the main console.
 +
:Not a computer.
 +
|
 +
- '''Handheld Computer''' ''(See [[Portable Computers (Miscellaneous)|Portable Computers]])''
 +
:Primary purpose of hardware is a portable computer.
 +
:Can run multiple software applications, compared to a typical calculator.
 +
:Not a laptop computer.
 +
- '''Handheld Console''' ''(See Main page)''
 +
:Primary purpose of hardware is a game console.
 +
:Typically requires loading external software for games from a MAME Software List.
 +
:Hardware in real life completely portable, with a self-contained display, battery, and controls.
 +
- '''Handheld Game'''
 +
:Primary purpose of hardware is a single portable game.
 +
:All game software is self-contained within the physical unit.
 +
:Does not utilize MAME Software Lists.
 +
:Hardware in real life is completely portable, with a self-contained display, battery, and controls.
 +
- '''[[HBMAME]]'''
 +
:Game is a homebrew or hack variant of another Arcade or Handheld Console game.
 +
:Game is not emulated in regular MAME; only found in HB MAME.
 +
- '''[[Pinball]]'''
 +
:Game includes electromechanical external artwork required to properly emulate the game.
 +
:Game may include digital elements for scoring or other gameplay features.
 +
- '''Plug and Play'''
 +
:Primary purpose of hardware is to play games. Best examples are the Plug and Play TV game devices.
 +
:Game software is self-contained within the physical unit.
 +
:May utilize MAME Software Lists for adding additional games.
 +
:Hardware in real life is required to be attached to an external display.
 +
:Hardware in real life has self-contained controls.
 +
|}
  
Also see the incomplete [[MAME compatibility list]] internally here. And the latest in-progress [http://mameinfo.mameworld.info/ changelog update].
+
'''Note:''' Some of the aforementioned categories may have their own pages with compatibility and other information as desired.
 +
</div>
  
 
===ROM dumps===
 
===ROM dumps===
MAME either has lots of standardization on how to organize the ROM dumps, or it has very little, and sometimes the given information can be vague and confusing. A single game may need lots of files for the dump to even register, and separate folders for the BIOS files of consoles. For machines that use stuff like hard drives and optical disks to store its data, MAME has a special format called Compressed Hunks of Data (CHD) which uses a number of compression methods to reduce the size of a raw image file.
+
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 '''[[Frontends#MAME|here]]'''.
 +
 
 +
===History===
 +
MAME was first released on February 5, 1997 by Nicola Salmoria as a Pac-Man emulator,<ref name="worldofstuart">[http://worldofstuart.excellentcontent.com/mameover.htm MAME OVER] (0.99)</ref><ref name="History">{{cite web|url=https://www.youtube.com/watch?v=VgJF18Pm7MA|title=A Brief History of Emulation: MAME|publisher=Youtube|accessdate=2018-09-14|date=2017-12-02}}</ref> 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.<ref name="worldofstuart"/> 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 (February 2016).
 +
 
 +
===Support===
 +
You can support the efforts of MAME developers, dumpers and other stakeholders with donations or resources to procure PCBs (Printed Circuit Boards) of arcade games, and all other computing or electronic devices that have digital screen output and in most cases, audio support; upload materials such as artwork of arcade cabinets, special handheld units and pinball tables, among other hardware examples.
 +
* [https://smitdogg.mameworld.info/du/donate.html The Dumping Union] (Based in USA. Monthly donations start from $10 US.)
 +
:[https://www.mameworld.info/ubbthreads/showflat.php?Cat=&Number=311481 The Dumping Union Info Page] (Info and an alternative PayPal link to send custom one-off donations with option to make it monthly.)
 +
* [http://members.iinet.net.au/~lantra9jp1_nbn/gurudumps/thanks.html Guru] (Top-quality [http://members.iinet.net.au/~lantra9jp1_nbn/gurudumps/forsale/index.html dumper and repairer of arcade PCBs from Western Australia]. He also repairs many other electronic equipments. Better reliability than The Dumping Union. Important pages: [http://members.iinet.net.au/~lantra9jp1_nbn/gurudumps/faq.html FAQ], [http://members.iinet.net.au/~lantra9jp1_nbn/gurudumps/decap/index.html Decapping Status Page], [http://members.iinet.net.au/~lantra9jp1_nbn/gurudumps/DumpingProject/wantedlist/wanted.html Wanted Dumps List], all links under 'Guru Status' drop-down menu. For custom one-off PayPal donations with option to make it monthly.)
 +
* [https://www.patreon.com/user?u=4805718 CAPS0ff] (High quality chip decapping specialist. [https://twitter.com/Caps0xff He] and other people get rare, security protected arcade boards, shave the tops off the security chips, and do stuff like point lasers at them to get them to spit out the keys. Sometimes they use microscopes to read the keys off the die. 6 Patreon tiers from $1 US to $300 US, or custom amount monthly.)
 +
* [https://team-europe.blogspot.com/ TeamEurope] (High quality decappers on same level as the 'Guru' guy. Probably based in Austria, also cooperates regularly with dumper Sean Riddle from the UK. Does a lot of dumping of non-arcade stuff (especially cartridges for weird / obscure systems) as well as stuff specific to European regions. Occasional [https://www.reddit.com/r/emulation/comments/9txdsz/mame_team_europe_would_like_help_funding_some/ fundraisers] occur with them. Contact by writing an email to te@crazy#2001#.33mail#.com (remove all # from the address) with the words "[Contact TE]" in the message-header.)
  
It is highly recommended to use a ROM management tool such as RomCenter or ClrMamePro. Without all the required files and file versions, the game simply will not work.
+
'''Non-monetary:'''
 +
* [https://mrdo.mameworld.info/mame_artwork.php Mr. Do!'s MAME Artwork] (Artwork uploads submitted by many archivists and device owners for use within the MAME Artwork System. The site's navigation requires a small-ish learning curve. The [https://mrdo.mameworld.info/links.php Links] page is nice. He can be contacted on [https://www.mameworld.info/ubbthreads/showprofile.php?Cat=&User=54&Number=387561&Board=news&what=showthreaded&page=&view=&sb=5&o=&fpart=&vc=1 MAMEWorld].)
  
==How To==
+
==How to==
 
===Convert Bin/Cue files to CHD===
 
===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 [[Mednafen|Beetle]] fork, they've begun rolling it out for certain platforms like Saturn and PlayStation so people can test it.
 
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 [[Mednafen|Beetle]] fork, they've begun rolling it out for certain platforms like Saturn and PlayStation so people can test it.
Line 46: Line 149:
  
 
{| class="mw-collapsible mw-collapsed wikitable" style="width: 100%;"
 
{| class="mw-collapsible mw-collapsed wikitable" style="width: 100%;"
|+How To <small>(Terminal)</small>
+
|+How to <small>(terminal)</small>
 
|
 
|
 
|-
 
|-
Line 77: Line 180:
  
 
{| class="mw-collapsible mw-collapsed wikitable" style="width: 100%;"
 
{| class="mw-collapsible mw-collapsed wikitable" style="width: 100%;"
|+How To
+
|+How to
 
| colspan=2 |
 
| colspan=2 |
 
|-
 
|-
Line 117: Line 220:
 
|-
 
|-
 
! Terminal
 
! Terminal
|Something like this should work in theory. '''It has not been tested, proceed with caution.'''
+
|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.'''
  
  7z e (romset).zip -o (romset)/ && 7z a (romset).7z (romset)/*
+
  for y in *.zip; do 7z x "${y%}" -o*; done && for i in */; do 7z a "${i%/}".7z "./${i%}*"; done
  
Just make sure that you've installed 7-zip and it registers to the environment path, that you're in the folder, and that you substitute (romset) for the name of the romset in the command.
+
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.
 
|}
 
|}
  
==List of Arcade systems emulated==
+
==Forks==
* [http://unmamed.mameworld.info/ List of arcade games that DON'T work] Last updated February 2014. Don't expect the most recent games (like [[Sega NAOMI and variants|Sega Naomi]] ones) to run at full speed, MAME is very resource intensive.
+
===MAMEUI64===
* [http://nonmame.retrogames.com/ NonMAME] ([http://web.archive.org/web/20150306213522/http://consume.retrogames.com/ 2015 Mirror]) This is a list of arcade systems that currently are not emulated by MAME or are emulated better by other emulators.
+
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.
 +
 
 +
:Collection of [http://www.progettosnaps.net/mameui_en.html all versions].
 +
:UNOFFICIAL BUILDS − [http://www.t2e.pl/pl/466/134/466/Automatyczne-edycje?tsearch=mameui,not|plus,not|mewui,not|mameuifx MAMEUI x86/x64 unofficial builds].
 +
 
 +
===[[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/board,52.0.html
  
==Frontends==
+
===PinMAME===
MAME has many third-party front ends. Please help expand this section.
+
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===
[http://arcade.mameworld.info/ ARCADE]
+
[http://arcade.mameworld.info/ 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 is a continuation of the MAMEUIFX project.
 
  
 
Arcade games only
 
Arcade games only
Line 140: Line 250:
 
*NO computers, consoles, terminals, appliances, etc
 
*NO computers, consoles, terminals, appliances, etc
 
*NO games that display a black screen (skeleton drivers etc)
 
*NO games that display a black screen (skeleton drivers etc)
 
===M+GUI===
 
[http://www.emucr.com/search/label/MAMEPGUI?&max-results=12 M+ GUI]
 
 
No longer maintained.
 
 
===MAME32 (now MAMEUI)===
 
[http://www.mameui.info/ MAMEUI]
 
 
[http://www.progettosnaps.net/mameui_en.html all versions]
 
 
UNOFFICIAL BUILDS
 
[http://www.t2e.pl/pl/466/134/466/Automatyczne-edycje?tsearch=mameui,not|plus,not|mewui,not|mameuifx MAMEUI x86/x64 unofficial builds]
 
 
===Emu Loader===
 
[http://emuloader.mameworld.info/ Emu Loader]
 
 
===MEWUI===
 
[http://sourceforge.net/projects/mewui/ MEWUI]
 
 
0.171 MEWUI merges with MAME replacing default MAME UI for most platforms.
 
 
MEWUI is an extension of the internal interface of the MAME / MESS with additional features.
 
====Features====
 
*Display full list of games
 
*Display snapshot, cabinets, etc... in game selection menu
 
*Display history, mameinfo in in-game menu
 
*Options to filter the list of games
 
 
===Attract-Mode===
 
[http://attractmode.org/ Attract-Mode]
 
 
===QMC2===
 
[http://qmc2.batcom-it.net QMC2 – M.A.M.E./M.E.S.S./U.M.E. Catalog / Launcher II]
 
 
QMC2 is a multi-platform MAME/MESS/UME frontend.
 
 
===gnome-arcade===
 
 
A minimal MAME frontend using GTK+ 3 : [https://github.com/strippato/gnome-arcade GitHub].
 
 
On some Linux distros, you have '''gnome-video-arcade''' package: Simple MAME frontend. Available on Ubuntu 16.04+ on official repo.
 
 
===Negatron===
 
[http://www.babelsoft.net/products/negatron.htm Negatron's download page on official site of BabelSoft]. An [https://github.com/xinyingho/Negatron intuitive and info-oriented front-end] for MAME; & a prettier derivative of ageing MAME32/MAMEUI.
 
:<u>Prequisites:</u>
 
:- Java runtime environment (JRE); at least Java version 8 update 60, or newer.
 
:- [http://www.babelsoft.net/products/negamame.htm NegaMAME] strongly recommended if using MAME v0.186 (May 2017) or newer, as normal MAME builds block some info access on systems to 3rd-party frontends.
 
:- While not mandatory, Negatron also needs VLC media player 2.2.0 or newer on your computer in order to play video previews. VLC & JRE's bitness must match (eg. 32-bit or 64-bit).
 
 
==Versions==
 
===GroovyMAME===
 
{{Main|GroovyMAME}}
 
Also known as '''GroovyUME'''. It's a fork of MAME/UME made to support arcade CRT monitors for AMD cards.
 
 
http://forum.arcadecontrols.com/index.php/topic,128879.0.html?PHPSESSID=domm2c4q77esu0j9uohc5vrqn5
 
  
 
==Netplay==
 
==Netplay==
Line 244: Line 298:
 
<references/>
 
<references/>
  
==External Links==
+
==External links==
 
* [https://wiki.mamedev.org/index.php/Developer_WIPs Developer WIPs] (Official MAMEDEV.org page showcasing lists pointing to profiles and links of many MAME developers)
 
* [https://wiki.mamedev.org/index.php/Developer_WIPs Developer WIPs] (Official MAMEDEV.org page showcasing lists pointing to profiles and links of many MAME developers)
 
* [https://mamedev.emulab.it/haze/ Developer coverage] from [https://wiki.mamedev.org/index.php/David_Haywood 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 [https://www.youtube.com/user/ShootBoomBoom YouTube channel] & [https://twitter.com/MameHaze Twitter feed]. Former project coordinator, 2003-2005.)
 
* [https://mamedev.emulab.it/haze/ Developer coverage] from [https://wiki.mamedev.org/index.php/David_Haywood 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 [https://www.youtube.com/user/ShootBoomBoom YouTube channel] & [https://twitter.com/MameHaze Twitter feed]. Former project coordinator, 2003-2005.)
Line 259: Line 313:
 
* [http://slanina.pl/mame.html Dev coverage] from Tomasz 'Dox' Slanina
 
* [http://slanina.pl/mame.html Dev coverage] from Tomasz 'Dox' Slanina
 
* [http://rants.vastheman.com/category/technology/mame/ Dev coverage] from Vas 'cuavas' Crabb (Few posts)
 
* [http://rants.vastheman.com/category/technology/mame/ Dev coverage] from Vas 'cuavas' Crabb (Few posts)
* [https://www.youtube.com/user/LambShanks YouTube channel] from [https://wiki.mamedev.org/index.php/Phil_B%27s_To-Do_List Philip Bennett] (His [http://philwip.mameworld.info/ website] is not updated anymore. 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.)
+
* [https://www.youtube.com/user/LambShanks YouTube channel] from [https://wiki.mamedev.org/index.php/Phil_B%27s_To-Do_List Philip Bennett] (His [http://philwip.mameworld.info/ website] is not updated anymore, but his [https://twitter.com/PhilBennett3D 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.)
* [https://m.youtube.com/channel/UCVnS-HQL-pzFku5ZVCGnvBA/videos YouTube channel] from [https://wiki.mamedev.org/index.php/MooglyGuy%27s_To-Do_List Ryan 'MooglyGuy' Holtz], [https://minecraft.gamepedia.com/Ryan_Holtz former Minecraft developer] (Note: His Twitter feed has lots of fillers unrelated to his MAME work)
+
* [https://m.youtube.com/channel/UCVnS-HQL-pzFku5ZVCGnvBA/videos YouTube channel] from [https://wiki.mamedev.org/index.php/MooglyGuy%27s_To-Do_List Ryan 'TheMogMiner' Holtz], [https://minecraft.gamepedia.com/Ryan_Holtz former Minecraft developer] (Note: His Twitter feed has lots of fillers unrelated to his MAME work)
 +
* [https://www.youtube.com/Sterophonick YouTube channel] from [https://sterophonick.github.io/sites Sterophonick] (Began working on 2018 Gigatron TTL Microcomputer for MAME on [https://twitter.com/sterophonick/status/1290524729825062913 Aug 4, 2020].)
 +
* [https://twitter.com/aaronsgiles Twitter feed] from [https://aarongiles.com/ Aaron Giles] (His older [https://aarongiles.com/old/ 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 [https://twitter.com/aaronsgiles/status/1286054480056786944 July 23, 2020]! Former project lead, 2005-2011. Wrote drivers for 11 CPUs, 7 sound chips, and 100+ arcade games.)
 
* [https://twitter.com/algestam Twitter feed] from Henrik 'algestam' Algestam (He is well noted for dumping and emulating those Nintendo [[Game & Watch]] LCD handheld titles to MAME)
 
* [https://twitter.com/algestam Twitter feed] from Henrik 'algestam' Algestam (He is well noted for dumping and emulating those Nintendo [[Game & Watch]] LCD handheld titles to MAME)
  
 +
[[Category:Emulators]]
 +
[[Category:Multi-emulators]]
 
[[Category:Arcade emulators]]
 
[[Category:Arcade emulators]]
[[Category:Multi-emulators]]
 
 
[[Category:Windows emulation software]]
 
[[Category:Windows emulation software]]
 
[[Category:Linux emulation software]]
 
[[Category:Linux emulation software]]
 
[[Category:macOS emulation software]]
 
[[Category:macOS emulation software]]
[[Category:Emulators]]
 
 
[[Category:Netplay]]
 
[[Category:Netplay]]

Revision as of 18:19, 11 July 2021

MAME
Logo-mame.png
Developer(s) MAME Team
Latest version 0.264
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.

Downloads

Windows Official release
Stable

Linux macOS FreeBSD RiscOS AmigaOS SDL Supported Platforms
Windows 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.

Read this official FAQ page for the reasons on why it is so hard to run many emulated systems usably on an user's computer or device that supports MAME, its derivatives and/or cores inside frontends or certain kinds of software (eg. RetroArch). It also has helpful tips to try to get better performance from some systems.

Compatibility

We have an outdated compatibility list here. Although, it focuses on arcade machines, and popular computer & console platforms, it is worth updating. It is highly recommended to instead check the home page on this wiki for any listed computer, console or other gaming device that may have emulation in MAME. You can see the upcoming version's changelog here. Other compatibility lists:

MAME can currently emulate over 32000 individual systems from the last 5 decades.

Categories

The MAME emulator covers a wide assortment of different types of emulated systems including, but not necessarily limited to:

- Arcade (See Main page, & Compatibility list above)

Where it all started, and by far the most popular and widely utilized purpose of MAME.
These arcade cabinets usually contain video & audio outputs.
{Info needed) Perhaps Redemption Games, aka Medal games, should be in a separate category (They are usually arcade-style cabinets with electro-mechanical parts. Some may even use the same PCBs as normal arcade cabs.)

- Board Game (Electronic)

This sort of game in real life is typically played on a tabletop.
This category especially covers chess game systems from the 20th century.

- Calculator

Is not a pocket computer.
Does not have additional functions as portable organizer, etc.

- Casino

A casino games is an arcade-type game, but primary purpose is for gambling.
A typical casino game likely does not have electromechanical parts.
Fruit machines can be included in this category, probably.

- Compilation

Example: Original game was an Arcade game. Game was released as a port or part of a game compilation for PC or a Game Console.
It is unclear if files of such games from these compilations (That may have a self-contained MAME build) can be ported to a PC/console and booted with the user's own MAME build (Info needed).

- Computer (See Main page, List of computers, & Huge Computers)

Typically requires loading external software (games or applications) from a MAME Software List.
Hardware in real life typically requires external AC power.
Not a handheld computer.
Not a game console.

- EM Reels

An EM Reels game is an arcade-type game, but primary purpose is gambling.
Game includes electromechanical external artwork required to properly emulate the game.

- Game Console (See Main page)

Typically requires loading external software for games from a MAME Software List.
Hardware in real life is required to be attached to an external display.
Hardware in real life requires an external AC power.
Hardware in real life requires an external controller plugged into the main console.
Not a computer.

- Handheld Computer (See Portable Computers)

Primary purpose of hardware is a portable computer.
Can run multiple software applications, compared to a typical calculator.
Not a laptop computer.

- Handheld Console (See Main page)

Primary purpose of hardware is a game console.
Typically requires loading external software for games from a MAME Software List.
Hardware in real life completely portable, with a self-contained display, battery, and controls.

- Handheld Game

Primary purpose of hardware is a single portable game.
All game software is self-contained within the physical unit.
Does not utilize MAME Software Lists.
Hardware in real life is completely portable, with a self-contained display, battery, and controls.

- HBMAME

Game is a homebrew or hack variant of another Arcade or Handheld Console game.
Game is not emulated in regular MAME; only found in HB MAME.

- Pinball

Game includes electromechanical external artwork required to properly emulate the game.
Game may include digital elements for scoring or other gameplay features.

- Plug and Play

Primary purpose of hardware is to play games. Best examples are the Plug and Play TV game devices.
Game software is self-contained within the physical unit.
May utilize MAME Software Lists for adding additional games.
Hardware in real life is required to be attached to an external display.
Hardware in real life has self-contained controls.

Note: Some of the aforementioned categories may have their own pages with compatibility and other information as desired.

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 (February 2016).

Support

You can support the efforts of MAME developers, dumpers and other stakeholders with donations or resources to procure PCBs (Printed Circuit Boards) of arcade games, and all other computing or electronic devices that have digital screen output and in most cases, audio support; upload materials such as artwork of arcade cabinets, special handheld units and pinball tables, among other hardware examples.

The Dumping Union Info Page (Info and an alternative PayPal link to send custom one-off donations with option to make it monthly.)
  • Guru (Top-quality dumper and repairer of arcade PCBs from Western Australia. He also repairs many other electronic equipments. Better reliability than The Dumping Union. Important pages: FAQ, Decapping Status Page, Wanted Dumps List, all links under 'Guru Status' drop-down menu. For custom one-off PayPal donations with option to make it monthly.)
  • CAPS0ff (High quality chip decapping specialist. He and other people get rare, security protected arcade boards, shave the tops off the security chips, and do stuff like point lasers at them to get them to spit out the keys. Sometimes they use microscopes to read the keys off the die. 6 Patreon tiers from $1 US to $300 US, or custom amount monthly.)
  • TeamEurope (High quality decappers on same level as the 'Guru' guy. Probably based in Austria, also cooperates regularly with dumper Sean Riddle from the UK. Does a lot of dumping of non-arcade stuff (especially cartridges for weird / obscure systems) as well as stuff specific to European regions. Occasional fundraisers occur with them. Contact by writing an email to te@crazy#2001#.33mail#.com (remove all # from the address) with the words "[Contact TE]" in the message-header.)

Non-monetary:

  • Mr. Do!'s MAME Artwork (Artwork uploads submitted by many archivists and device owners for use within the MAME Artwork System. The site's navigation requires a small-ish learning curve. The Links page is nice. He can be contacted on MAMEWorld.)

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.

How to (terminal)
Note: Unless explicitly stated, don't type the commands word for word because you'll need to replace some values with your own.
Also: Make sure the cue sheet points to the relative location of the binary and that it works.

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 chdman. If you don't intend to keep MAME on your drive, you should type out the full path of the folder. If you intend to keep MAME, add its directory to your path. Because Linux packages insert shortcuts into folders assigned to the environment path, we can call it from any folder.

Open up the terminal and navigate to the folder containing the BIN/CUE files.

$ cd "path/to/folder"

chdman has a command called createcd that we'll use to create a CD-type CHD.[3] Note that in the example below, "test (!)" is a placeholder and should be renamed to the name of the file.

>C:\path\to\chdman createcd -o "test (!).chd" -i "test (!).cue"
$ chdman createcd -o "test (!).chd" -i "test (!).cue"

chdman will now compress the cue file, and it should complete with just one CHD for you to use, either in MAME or an emulator that supports it.

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.

How to
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.

Collection of all versions.
UNOFFICIAL BUILDS − MAMEUI x86/x64 unofficial builds.

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/board,52.0.html

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
  • Support for up to 4 simultaneous people playing
  • No fiddling with router settings and port forwarding
  • Despite being old, many consider it being able to handle Kaillera the best
  • Netplay traffic is handled by a central dedicated server that helps keep things synched
  • Robust library of games
  • Extremely configurable
  • Private game chat support and public chat to speak people outside your game room
  • Being able to drop out of a game at any time without disrupting (much) your teammate(s).
  • Kicking/banning/muting people from your room
  • It's a matchmaking service where you can join other people's rooms, too
CONS
  • It's slightly (significantly still) prone to freezing
  • Mapping controllers and binding keys can only be done in-game, which might be confusing to first-timers
  • Incorrectly emulates many games, while outright not being able to emulate others
  • Random, inconsistent FPS drops due to the server trying to keep everyone synched, sometimes stuttering. It's annoying, but rarely does it make it unplayable
  • Everyone needs to have the exact same ROM version or Netplay won't work (if it somehow does, it'll desynch rather quickly)
  • Everyone needs to have the exact same save file, or no save file at all. Else, it desynchs
  • You need to constantly switch focus back and forth between chat and emulator window in order to chat.
  • You will hear no sound while the window is unfocused.
How to
  1. Replace the kailleraclient.dll inside the "kaillera" folder in the emulator directory
  2. Place your game(s) ZIPPED inside the "roms" folder in the emulator directory
  3. Run the emulator, then press F5 to refresh your ROM list
  4. Go to file, click Kaillera Netplay...

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

External links