MAME

MAMEは、オープンソースの汎用エミュレーターである。かつてはアーケードゲームエミュレータであったが、現在は汎用エミュレーターとなっている。元々の正式名称はMultiple Arcade Machine Emulator。

1. 概要
-----

1997年2月5日にイタリア人のニコラ・サルモリアによって最初のバージョン  がリリースされた。世界中の数十名からなる開発チームにより、現在も開発、改良が続けられている。サポートするタイトル数は、完全に動作しないものも含めて3,500本以上、クローン版を含めると6,500本以上に上る。現在のプロジェクト管理者はアメリカのアーロン・ジャイルズ。

MAMEはオープンソースであり、GitHubを用いて共同で開発されている。かつては、独自にエミュレート対象のゲームの挙動を修正したり、新しいゲームへと対応させた派生版が多く存在したが、現在は本家MAMEへのマージが進んでいる。非公式版として、多くのHomebrew に対応するHBMAMEや、CRTモニター向けのGroovyMAME、ピンボール向けのVisual Pinball、VGM生成用のMAME/MESS VGM modがある。MAMEフロントエンドとしては、公式のコマンドラインUIの他に、Windows用GUIのMAMEUI、独自インターフェースのIV/Play、MAMEのWebフロントエンドであるEmularityなどが存在する。かつては、Mac用のMAME OS X、GTK採用のGMAMEUI 、KDE採用のKxmame 、Qt採用のMAME Plus!なども存在した。

1.1. サポートするハードウェア
-----------------

MAMEがサポートするのは、主に1970年代から1990年代のアーケードゲームやカジノゲームである。Atari PONGやBreakoutなどROMを持たず、ディスクリート回路のみで構成されているゲームも、Netlistを通してサポートしている。メカニカルのあるゲームは、サポートされないものが多い 。セグメントディスプレイを使ったゲームなどでは、外部アートワークを必要とするものがある。3Dアートワークにはまだ対応していないため、ワニワニパニックは2Dとなる。一部のゲームは音源エミュレーションに未対応であり、音を鳴らすために外部のMAME Samplesが必要となる。近年のPCベースのアーケードゲームには対応しておらず、ArcadePC LoaderやTeknoParrotなどの他のプログラムを使う必要がある。

0.162以降のMAMEは以下のようにアーケード機に限定しないエミュレートを実装している。

アーケードゲーム基板
システム基板
互換基板
第3世代互換基板
第4世代互換基板
第5世代互換基板
テレビゲーム機
第2世代
第3世代
第4世代
第5世代
ビデオゲーム内蔵テレビ
業務用テレビゲーム機
店頭販促機
ゲームパソコン
電卓
グラフ電卓
LSI/LCDゲーム 
電子ボードゲーム 
携帯型ゲーム機 及びその周辺機器
体感ゲーム 
ラジコン 
ミニコンピュータ
ワークステーション 及びその周辺機器
グラフィックワークステーション 
モバイルワークステーション 
プログラマブル計算機 
デスクトップパソコン 
ポータブルコンピュータ 
ホビーパソコン/ホームコンピュータ 
開発システム 
ワードプロセッサ 
ワンボードマイコン 
シングルボードコンピュータ 、
パームトップPC 
ポケットコンピュータ 
ハンドヘルドコンピュータ/携帯情報端末 
知育玩具 
競馬予想機 
決済端末機 
音源モジュール 
LDプレーヤー 
フィットネスマシン 
電子楽器
電子パーカッション
ドラムマシン 
電子キーボード/シンセサイザー /PSRシリーズ/PSSシリーズなど)
電子ピアノ
多機能スピーカー
言語翻訳機 
音声モールス発生器
ドアチャイム
キディライド
ポップコーン販売機
パンチングマシン
バーサライタなお、古いPCへの対応は、SPC/ATやPCem、Common Source Code Projectなどのエミュレータの方が進んでいる。

1.2. 開発方針
---------

MAMEの開発方針はオリジナルのハードウェア動作を忠実に再現することに重点を置いており、MAMEは基本的にAPUやMPUなどのチップレベルの低レベルエミュレーション  を行っている。ただし例外として、キーボード周りやI/O周りやDSPなどには高レベルエミュレーション も使われている。

1.3. ROMイメージ
------------

MAMEで使用するROMイメージを入手するためは、他の低レベルエミュレータと同様に、基板から実物のROMの内容を吸い出す必要がある。ただし例外として、Exidy社、バリー/ミッドウェイ社などの作品のうち、一部のゲームのROMイメージは、メーカーからの正式な許可を得たうえで、MAMEの公式サイトで配布されている[1]。また、ドイツのコンピュータ雑誌「c't」で、「UDPを使いMAMEを自動制御し、アタリ社のゲーム『アステロイド』のハイスコアを競う」内容のコンテストが行われる際に、この雑誌の読者向けに、アタリ社より『アステロイド』のROMイメージを配布する許可を得ている[2]。

2. 歴史
-----

1997年にリリースされた当初はMS-DOS版として開発されていたが、年内にはMacintosh 、Unix系OS 、Windows に移植された。また、1998年には、MAME 0.33のベータ版を基にして、汎用エミュレーターであるMESSの開発が始まった。2003年よりCPUエミュレーションの動的リコンパイルが追加されはじめた。2005年、MAME 0.99u2で、ギャンブルゲームを実装するAGEMAME がMAMEに統合されはじめた。2007年、MAME 0.120でWindows 64bit版が公式に用意された。

2010年、MAME 0.136u1で、SDL採用のクロスプラットフォームなコマンドライン版であるSDLMAMEがMAMEに統合された。2011年、MAME 0.141u1で、ピンボールを実装するPINMAMEがMAMEに統合されはじめた。2012年、MAME 0.146u4でNetlistによる電子回路シミュレーションに対応した。同年、MAME 0.147でMESSのコードベースが統合され、MESSとMAMEの統合版としてUMEがビルドできるようになった。

2015年のMAME 0.162で、MAMEはMESSを吸収してUME相当となった。同年、MAME 0.168でMAMEをJavaScriptへとコンパイルしてWeb上で動かすJSMESSがMAMEのコードベースに統合された。更に同年、MAME 0.171で独自インターフェースのMEWUIがMAMEのコードベースに統合されたほか、派生版のみに実装されていたAuto-fireに対応し、また、GPUバックエンドのBGFXが追加された。

2016年、MAME 0.172でライセンスが一般的なオープンソースライセンスのGPLとなった。また、ハイスコアが再実装されたほか、CRTモニタ向けのGroovyMAMEの拡大縮小周りが統合された。同年、MAME 0.177でVGM形式の音源を再生するための、VGM Playerが搭載された。2019年、MAME 0.216でレイテンシを削減する「-lowlatency」オプションが追加された。

3. 動作
-----

MAMEの動作には、実際の基板上のデータイメージを用意する必要がある。MAMEは基板のハードウェア構成をソフトウェアでエミュレートすることにより、オリジナルのROMイメージを異なるハードウェア上で動作させることを可能にしている。エミュレートするCPU/MPUは代表的なZ80や68000をはじめとして100種類以上、サウンドチップ/DSPは70種類以上、そのほか多くのカスタムチップもサポートする。また一部のアナログICやアナログ素子もNetlistでサポートしている。

最近のバージョンでは、3Dグラフィックシステムなど、処理量の多いゲームにも対応している。しかし、前述の通り、エミュレーションの動作速度よりもオリジナルハードウェアの忠実な再現を目的とするため、3Dグラフィックやテクスチャ処理なども、Direct3DなどのOS固有の拡張機能を使わず、オリジナルハードの動作を元に全てソフトウェアで処理を行う。このため最新の高速プロセッサでも完全な速度で動作しないタイトルが一部存在する。

4. 盗用問題
-------

以前のMAMEは商用利用を禁止していたが、度々それに違反した利用が発覚している。

メディアカイト「ネットげーせん」
ハムスター「オレたちゲーセン族シリーズ」
200in1等を謳う製造者不明なエミュレータ筐体，エミュレータ台

5. 脚注
-----

6. 関連項目
-------

:en:Visual Pinball
アーケードゲーム基板
エミュレータ
ゲームエミュレータ
エミュレーター基板

7. 外部リンク
--------

[3]
[4]
[5]