Editing MAME

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 13: Line 13:
 
| author                = [[Nicola Salmoria]]
 
| author                = [[Nicola Salmoria]]
 
| developer              = [[Nicola Salmoria]] and the MAME Team
 
| developer              = [[Nicola Salmoria]] and the MAME Team
| released              = 1997-02-05
+
| released              = {{Start date and age|1997|02|05|df=yes}}
 
| discontinued          =
 
| discontinued          =
 
| programming language  = [[C++]] ([[C (programming language)|C]] and [[Python (programming language)|Python]] for some drivers)
 
| programming language  = [[C++]] ([[C (programming language)|C]] and [[Python (programming language)|Python]] for some drivers)
Line 25: Line 25:
 
| license                = [[BSD license#3-clause|New BSD]], [[GNU General Public License|GNU GPL v2 or later]]
 
| license                = [[BSD license#3-clause|New BSD]], [[GNU General Public License|GNU GPL v2 or later]]
 
| alexa                  =
 
| alexa                  =
| website                = [https://www.mamedev.org https://www.mamedev.org]
+
| website                = {{URL|https://www.mamedev.org/}}
 
| standard              =
 
| standard              =
 
| AsOf                  =
 
| AsOf                  =
Line 70: Line 70:
 
== Philosophy and accuracy ==
 
== Philosophy and accuracy ==
 
The stated aim of the project is to document hardware, and so MAME takes a somewhat purist view of emulation, prohibiting programming [[hack (technology slang)|hacks]] that might make a game run improperly or run faster at the expense of emulation accuracy. Components such as CPUs are emulated at a low level (meaning individual instructions are emulated) whenever possible, and [[high-level emulation]] (HLE) is only used when a chip is completely undocumented and cannot be reverse-engineered in detail. Signal level emulation is used to emulate audio circuitry that consists of analog components.
 
The stated aim of the project is to document hardware, and so MAME takes a somewhat purist view of emulation, prohibiting programming [[hack (technology slang)|hacks]] that might make a game run improperly or run faster at the expense of emulation accuracy. Components such as CPUs are emulated at a low level (meaning individual instructions are emulated) whenever possible, and [[high-level emulation]] (HLE) is only used when a chip is completely undocumented and cannot be reverse-engineered in detail. Signal level emulation is used to emulate audio circuitry that consists of analog components.
 +
 +
{{Quotation|We want to document the hardware. Now a lot of people will say; "Where's your document? You just write a bunch of source code." And yes, that's true. One thing I've learned is that keeping documentation synced with source code is nearly impossible. The best proof that your documentation is right is "does this code work".|Aaron Giles|California Extreme 2008}}
  
 
MAME emulates well over a thousand different [[arcade system board]]s, a majority of which are completely undocumented and custom designed to run either a single game or a very small number of them. The approach MAME takes with regards to accuracy is an incremental one; systems are emulated as accurately as they reasonably can be. Bootleg copies of games are often the first to be emulated, with proper (and copy protected) versions emulated later. Besides encryption, arcade games were usually protected with custom [[microcontroller unit]]s (MCUs) that implemented a part of the game logic or some other important functions. Emulation of these chips is preferred even when they have little or no immediately visible effect on the game itself. For example, the monster behavior in [[Bubble Bobble]] was not perfected until the code and data contained with the custom MCU was dumped through the [[decapping]] of the chip. This results in the ROM set requirements changing as the games are emulated to a more and more accurate degree, causing older versions of the ROM set becoming unusable in newer versions of MAME.
 
MAME emulates well over a thousand different [[arcade system board]]s, a majority of which are completely undocumented and custom designed to run either a single game or a very small number of them. The approach MAME takes with regards to accuracy is an incremental one; systems are emulated as accurately as they reasonably can be. Bootleg copies of games are often the first to be emulated, with proper (and copy protected) versions emulated later. Besides encryption, arcade games were usually protected with custom [[microcontroller unit]]s (MCUs) that implemented a part of the game logic or some other important functions. Emulation of these chips is preferred even when they have little or no immediately visible effect on the game itself. For example, the monster behavior in [[Bubble Bobble]] was not perfected until the code and data contained with the custom MCU was dumped through the [[decapping]] of the chip. This results in the ROM set requirements changing as the games are emulated to a more and more accurate degree, causing older versions of the ROM set becoming unusable in newer versions of MAME.
  
Portability and genericity are also important to MAME. Combined with the uncompromising stance on accuracy, this often results in high system requirements. Although a 2 GHz processor is enough to run almost all 2D games, more recent systems and particularly systems with 3D graphics can be unplayably slow, even on the fastest computers. MAME does not currently take advantage of hardware acceleration to speed up the rendering of 3D graphics, in part because of the lack of a stable cross-platform 3D API, and in part because software rendering can in theory be an exact reproduction of the various custom 3D rendering approaches that were used in the arcade games.
+
Portability and genericity are also important to MAME. Combined with the uncompromising stance on accuracy, this often results in high system requirements. Although a 2 GHz processor is enough to run almost all 2D games, more recent systems and particularly systems with 3D graphics can be unplayably slow, even on the fastest computers. MAME does not currently take advantage of hardware acceleration to speed up the rendering of 3D graphics, in part because of the lack of a stable cross-platform 3D API,{{Citation needed|reason=This claim needs a reliable source; OpenGL is a stable cross-platform 3D API since 1997|date=August 2012}} and in part because software rendering can in theory be an exact reproduction of the various custom 3D rendering approaches that were used in the arcade games.
  
 
== Legal status ==
 
== Legal status ==
Line 88: Line 90:
  
 
Since March 2016 with version 0.172, MAME itself [[Software relicensing|switched]] to common [[free and open source]] [[software license]]s, the [[BSD license|BSD]] and [[GPL license]]s.
 
Since March 2016 with version 0.172, MAME itself [[Software relicensing|switched]] to common [[free and open source]] [[software license]]s, the [[BSD license|BSD]] and [[GPL license]]s.
 
[[Category:Emulators]]
 

Please note that all contributions to Mod My Classic Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Mod My Classic Wiki:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)