出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/03/06 08:14 UTC 版)
|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2025年10月)
|
| 作者 | Nicola Salmoria |
|---|---|
| 開発元 | the MAME Team |
| 初版 | 1997年2月5日 |
| 最新版 |
0.283 / 2025年11月29日
|
| リポジトリ | |
| プログラミング 言語 |
C++ |
| サポート状況 | 開発中 |
| 種別 | エミュレータ |
| ライセンス | GPL バージョン2 またはそれ以降 |
| 公式サイト | mamedev |
MAME(マメ[1])は、オープンソースの汎用エミュレータである。かつてはアーケードゲームエミュレータであったが、現在は汎用エミュレータとなっている。元々の正式名称はMultiple Arcade Machine Emulator。
1997年2月5日にイタリア人のニコラ・サルモリアによって最初のバージョン (0.1) がリリースされた。世界中の数十名からなる開発チームにより、現在も開発、改良が続けられている。サポートするタイトル数は、完全に動作しないものも含めて3,500本以上、クローン版(同一ゲームのバージョン違いや、海外向けにローカライズしたものなど)を含めると6,500本以上に上る。現在のプロジェクト管理者はアメリカのアーロン・ジャイルズ。
MAMEはオープンソースであり、GitHubを用いて共同で開発されている。かつては、独自にエミュレート対象のゲームの挙動を修正したり、新しいゲームへと対応させた派生版が多く存在したが、現在は本家MAMEへのマージが進んでいる。非公式版として、多くのHomebrewに対応するHBMAMEや、CRTモニター向けのGroovyMAME、ピンボール向けのPinMAME、VGM生成用のMAME/MESS VGM modがある。MAMEフロントエンドとしては、公式のコマンドラインUIの他に、Windows用GUIのMAMEUI、独自インタフェースのIV/Play、MAMEのWebフロントエンドであるEmularity[2]などが存在する。かつては、Mac用のMAME OS X、GTK採用のGMAMEUI (GXMame派生)、KDE採用のKxmame (GXMame派生)、Qt採用のMAME Plus!なども存在した。
MAMEがサポートするのは、主に1970年代から1990年代(一部2010年のゲームまで対応)のアーケードゲームやカジノゲームである。Atari PONGやBreakoutなどROMを持たず、ディスクリート回路のみで構成されているゲームも、Netlistを通してサポートしている。セグメントディスプレイを使ったゲームなどでは、外部アートワークを必要とするものがある。3Dアートワークにはまだ対応していない[3]ため、ワニワニパニックは2Dとなる。またメカニカルのあるゲームはサポートされないか、サポートしててもメカニカル部分の無いものが多い (UFOキャッチャー、プリクラ、メダルゲーム、ピンボールなど)。一部のゲームは音源エミュレーションに未対応であり、音を鳴らすために外部のMAME Samplesが必要となる。近年のPCベースのアーケードゲームには対応しておらず、ArcadePC LoaderやTeknoParrotなどの他のプログラムを使う必要がある。
0.162以降のMAMEは以下のようにアーケード機に限定しないエミュレートを実装している。
なお、古いPCへの対応は、SPC/ATやPCem、Common Source Code Projectなどのエミュレータの方が進んでいる。
MAMEの開発方針はオリジナルのハードウェア動作を忠実に再現することに重点を置いており、MAMEは基本的にAPUやMPUなどのチップレベルの低レベルエミュレーション (LLE) を行っている。ただし例外として、キーボード周りやI/O周りやDSPなどには高レベルエミュレーション (HLE)も使われている。
MAMEで使用するROMイメージを入手するためは、他の低レベルエミュレータと同様に、基板から実物のROMの内容を吸い出す必要がある。ただし例外として、Exidy社、バリー/ミッドウェイ社などの作品のうち、一部のゲームのROMイメージは、メーカーからの正式な許可を得たうえで、MAMEの公式サイトで配布されている[1]。また、ドイツのコンピュータ雑誌「c't」で、「UDPを使いMAMEを自動制御し、アタリ社のゲーム『アステロイド』のハイスコアを競う」内容のコンテストが行われる際に、この雑誌の読者向けに、アタリ社より『アステロイド』のROMイメージを配布する許可を得ている(不特定多数が対象ではない)[2]。
1997年にリリースされた当初はMS-DOS版として開発されていたが、年内にはMacintosh (MacMAME)、Unix系OS (X/MAME)、Windows (MAME32)に移植された[4]。また、1998年には、MAME 0.33のベータ版を基にして、コンソールゲームおよびコンピュータシステムエミュレータであるMESS(Multi Emulator Super System)の開発が始まった。2003年よりCPUエミュレーションの動的リコンパイラが追加されはじめた[4]。2005年、MAME 0.99u2で、ギャンブルゲームを実装するAGEMAME (旧MAGE)がMAMEに統合されはじめた[4]。2007年、MAME 0.120でWindows 64ビット版が公式に用意された[4]。
2010年、MAME 0.136u1で、SDL採用のクロスプラットフォームなコマンドライン版であるSDLMAMEがMAMEに統合された[4]。2011年、MAME 0.141u1で、ピンボールを実装するPINMAMEがMAMEに統合されはじめた[4]。2012年、MAME 0.146u4でNetlistによる電子回路シミュレーションに対応した[4]。
2015年のMAME 0.162で、コンソールゲームおよびコンピュータシステムエミュレータであるMESSはMAMEに統合された。そのため、MESS利用者マニュアルは現在もMAMEの非アーケード部分における最も重要な使用説明書である[5]。これにより、MAMEはアーケードゲーム機以外のゲーム機もエミュレートできるようになったため、この頭字語「MESS」は廃止された。2012年以降、MAMEは元MESSプロジェクトリーダーのミオドラグ・ミラノヴィッチによって維持管理されている[6]。同年、MAME 0.168でMAMEをJavaScriptへとコンパイルしてWeb上で動かすJSMESSがMAMEのコードベースに統合された[7][8]。更に同年、MAME 0.171で独自インタフェースのMEWUIがMAMEのコードベースに統合された[9]ほか、派生版のみに実装されていたAuto-fireに対応し[10][9]、また、GPUバックエンドのBGFXが追加された[9]。
2016年、MAME 0.172でライセンスが一般的なオープンソースライセンスのGPLとなった[11]。また、ハイスコアが再実装されたほか、CRTモニタ向けのGroovyMAMEの拡大縮小周りが統合された[12]。同年、MAME 0.177でVGM形式の音源を再生するための、VGM Playerが搭載された。2019年、MAME 0.216でレイテンシを削減する「-lowlatency」オプションが追加された[13]。
2024年、MAME 0.265でタッチスクリーン入力に対応した[14]。
MAMEコアは複数の要素のエミュレーションを同時に調整する。これらの要素は、実機に存在するハードウェアの動作をそのまま再現する。MAMEは多様な中央処理装置(CPU)と関連ハードウェアをエミュレートできる。これらの要素は仮想化され、MAMEはゲームの元のプログラムと動作プラットフォームの間にソフトウェア層として機能する。MAMEは任意の画面解像度、リフレッシュレート、表示設定に対応している。例えば『ダライアス』で必要とされる複数モニターのエミュレーションも同様に対応している。
個々のシステムはCプリプロセッサマクロ形式のドライバで指定される。これらのドライバはエミュレート対象の個別コンポーネントと相互通信方法を定義する。MAMEは当初C言語で記述されていたが、オブジェクト指向プログラミングの必要性から開発チームはMAME 0.136以降、C++で全コードをコンパイルする方針へ移行した。この過程でC++の追加機能を活用している。
CPUエミュレーションコアの大部分はインタープリタ型であるが、MAMEはエミュレーション速度向上のため、中間言語であるユニバーサル機械語(UML)を介した動的再コンパイルも対応している。対応しているバックエンド対象はx86とx64である。正確性の検証をさらに支援するため、A Cバックエンドも利用可能である。この方法でエミュレートされるCPUはSH-2、MIPS R3000、PowerPCである。
システムをエミュレートするには、元のプログラムコード、グラフィック、サウンドデータが存在する必要がある。ほとんどの機械(マシン)では、データは読み取り専用メモリチップ(ROM)に保存されるが、カセットテープ、フロッピーディスク、ハードディスク、レーザーディスク、コンパクトディスクなどの他のデバイスも使用される。これらのデバイスのほとんどの内容は「ダンプ/Dump」と呼ばれる過程でコンピュータファイルにコピーできる。作成されたファイルは記録媒体の種類に関係なく、一般的にROMイメージまたはROMと呼ばれている。ゲームは通常、複数のROMイメージとPALイメージで構成され、これらのイメージファイルは単一のZIPファイル内にまとめて保存され「ROMセット」を構成する。「親」となるROMセット(通常はゲームの最新の世界版が選ばれる)に加え、異なるプログラムコードや異なる市場向けの言語テキストなどを備えた「クローンまたは子」ROMセットが存在する。例えば、『ストリートファイターII ターボ』は『ストリートファイターII'』の派生版と見なされる。ネオジオのような複数ゲームでROMを共有するシステムボードでは、ROMを「BIOS」ROMセットに格納し、適切な名前を付ける必要がある。
MAMEのROMには、分割型、非結合型、結合型の3種類がある:[17]
「分割」ROMはROM自身に関する情報のみを含む。例えば「クローン」ROMには「親」ROMに必要なデータは含まれず、「親」ROMにはクローンROMのデータは含まない。
「非結合」セットは、プログラムの実行に必要な全て(親ROMなど)を単一のZIPファイルに収めたROMである。非結合ROMは冗長性によりROMファイルの容量が大きくなるが、特定のプログラム群のみが必要な場合(例:特定のゲームバージョンだけを求め、他の必要なファイルの取得が不要な場合)に有用である。
「結合」セットとは、「親」ROMとその「クローン」を一つのパッケージに収めたROMである。例えば、結合された『パックマン』ROMには、親となる日本版のパックマンROM、ミッドウェイ社の米国版パックマン、およびその他の全てのクローン版や海賊版が含まれる。分割セットよりも容量効率に優れている。
ハードディスク、コンパクトディスク、レーザーディスクは、CHD(Compressed Hunks of Data)と呼ばれるMAME固有の形式で保存される。一部の機械・マシン(レーザーディスクなど)は、サウンドトラックやシネマティック映像などのオーディオ/ビデオデータを保存・再生するためにアナログハードウェアを使用する。このデータはキャプチャされ、MAMEが読み取れるデジタルファイルにエンコードする必要がある。MAMEは外部アナログデバイスの使用に対応していない。これは(同一のスピーカーおよびスピーカー筐体とともに)体験を100%忠実に再現するために必要となる。エミュレートされていないオーディオ回路を搭載したゲームはサウンドエミュレーションにWAVファイル形式のサウンドサンプルを必要とする場合は減少傾向にある。
MAMEはさらに、ベゼルやオーバーレイ用グラフィックとしてPNG形式のアートワークファイルに対応している。また、『ゲーム&ウオッチ』のような液晶ディスプレイを搭載したゲームやスロットマシンのような追加物理要素を持つゲームのエミュレーションには、背景やその他のゲーム要素用の追加画像ファイルが必要となる場合が一般的である。
MAMEの動作には、実際の基板上のデータイメージ(ROMイメージ)を用意する必要がある。MAMEは基板のハードウェア構成をソフトウェアでエミュレートすることにより、オリジナルのROMイメージを異なるハードウェア上で動作させることを可能にしている。エミュレートするCPU/MPUは代表的なZ80や68000をはじめとして100種類以上、サウンドチップ/DSPは70種類以上、そのほか多くのカスタムチップもサポートする。また一部のアナログICやアナログ素子もNetlistでサポートしている。
最近のバージョンでは、3Dグラフィックシステムなど、処理量の多いゲームにも対応している。しかし、前述の通り、エミュレーションの動作速度よりもオリジナルハードウェアの忠実な再現を目的とするため、3Dグラフィックやテクスチャ処理なども、Direct3DなどのOS固有の拡張機能を使わず、オリジナルハードの動作を元に全てソフトウェアで処理を行う。このため最新の高速プロセッサでもオリジナル同等の処理時間で動作しないタイトルが一部存在する(Windows版では描画の設定にDirect3Dの項目があるが、これは最終的な描画先としてDirect3Dを用いるだけであり、エミュレーション処理自体には関係しない)。
以前のMAMEは商用利用を禁止していたが、度々それに違反した利用が発覚している[18]。
固有名詞の分類