Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
MAME
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
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.
Anti-spam check. Do
not
fill this in!
== Design == {{Original research section|date=July 2019}} The MAME core coordinates the emulation of several elements at the same time. These elements replicate the behavior of the hardware present in the original machines. MAME can emulate many different [[central processing unit]]s (CPUs) and associated hardware. These elements are virtualized so that MAME acts as a software layer between the original program of the game, and the platform MAME runs on. MAME supports arbitrary screen resolutions, refresh rates and display configurations. Multiple emulated monitors, as required by, for example, ''[[Darius (video game)|Darius]]'', are supported as well. Individual systems are specified by ''drivers'' which take the form of [[C preprocessor]] [[Macro (computer science)|macros]]. These drivers specify the individual components to be emulated and how they communicate with each other. While MAME was originally written in [[C (programming language)|C]], the need for object oriented programming caused the development team to begin to compile all code as [[C++]] for MAME 0.136, taking advantage of additional features of that language in the process. Although a great majority of the CPU emulation cores are [[Interpreter (computing)|interpretive]], MAME also supports [[dynamic recompilation]] through an intermediate language called the Universal Machine Language (UML) to increase the emulation speed. Back-end targets supported are x86 and x64. A C back end is also available to further aid verification of the correctness. CPUs emulated in this manner are SH-2, MIPS R3000 and PowerPC. === ROM data === The original program code, graphics and sound data need to be present so that the system can be emulated. In most machines, the data is stored in [[Read-only memory|read-only memory chips]] (ROMs), although other devices such as [[cassette tape]]s, [[floppy disk]]s, [[hard disk]]s, [[laserdisc]]s, and [[compact disc]]s are also used. The contents of most of these devices can be copied to computer files, in a process called "dumping". The resulting files are often generically called [[ROM image]]s or ROMs regardless of the kind of storage they came from. A game usually consists of multiple ROM and [[Programmable Array Logic|PAL]] images; these are collectively stored inside a single [[ZIP (file format)|ZIP file]], constituting a "ROM set". In addition to the "parent" ROM set (usually chosen as the most recent "World" version of the game), games may have "clone" ROM sets with different program code, different language text intended for different markets etc. For example, ''[[Street Fighter II|Street Fighter II Turbo]]'' is considered a variant of ''Street Fighter II Champion Edition''. System boards like the [[Neo Geo (console)|Neo Geo]] that have ROMs shared between multiple games require the ROMs to be stored in "BIOS" ROM sets and named appropriately. MAME ROMs come in three forms, ''split'', ''non-merged'', and ''merged'':<ref name="About ROMs and Sets">{{cite web |title=About ROMs and Sets |url=https://docs.mamedev.org/usingmame/aboutromsets.html |website=MAME Documentation |access-date=11 November 2022}}</ref> * A "split" ROM only contains information about itself. For example, a "clone" ROM does not have the necessary data the "parent" ROM has, and a "parent" ROM will not contain its clones. * A "non-merged" set is a ROM that has everything a program needs to run in one ZIP file, such as its "parent". Non-merged ROMs take up more space due to redundancy, but they are useful for cases where only a specific set of programs are desired, such as only desiring one specific version of a game without desiring to also obtain the other required files. * A "merged" set is a ROM that contains the "parent" ROM and its "clones" in one package. For example, a merged ''[[Pac-Man]]'' ROM would contain the "parent" Japanese ''Puck-Man'' ROM, the [[Midway Games|Midway]] USA ''Pac-Man'' version, and all other clone or bootleg versions of the game. It is more space-efficient than a split set. Hard disks, compact discs and laserdiscs are stored in a MAME-specific format called CHD (Compressed Hunks of Data).<ref>{{cite web |url=http://mamedev.org/source/src/lib/util/chd.h.html |title=MAME | src/lib/util/chd.h |publisher=Mamedev.org |access-date=2012-12-20 |url-status=dead |archive-url=https://web.archive.org/web/20130704071827/http://mamedev.org/source/src/lib/util/chd.h.html |archive-date=4 July 2013 }}</ref> Some machines use analog hardware, such as laserdiscs, to store and play back audio/video data such as soundtracks and cinematics. This data must be captured and encoded into digital files that can be read by MAME. MAME does not support the use of external analog devices, which (along with identical speaker and speaker enclosures) would be required for a 100% faithful reproduction of the experience. An ever decreasing number of games with unemulated audio circuits require sound samples in WAV file format for sound emulation. MAME additionally supports artwork files in [[Portable Network Graphics|PNG format]] for bezel and overlay graphics. Furthermore, emulation of games with [[Liquid-crystal display|liquid-crystal displays]] such as [[Game & Watch]] or extra physical aspects such as [[Slot machine|slot machines]] usually require extra image files for backgrounds or other aspects of the games.
Summary:
Please note that all contributions to Niidae 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
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
MAME
(section)
Add topic