MAME

概要

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などが存在する。かつては、Mac用のMAME OS X、GTK採用のGMAMEUI (GXMame派生)、KDE採用のKxmame (GXMame派生)、Qt採用のMAME Plus!なども存在した。
MAMEがサポートするのは、主に1970年代から1990年代（一部2010年のゲームまで対応）のアーケードゲームやカジノゲームである。Atari PONGなどROMを持たず、ディスクリート回路のみで構成されているゲームも、Netlistを通してサポートしている。メカニカルのあるゲームは、サポートされないものが多い (UFOキャッチャー、プリクラ、メダルゲームなど)。セグメントディスプレイを使ったゲームなどでは、外部アートワークを必要とするものがある。3Dアートワークにはまだ対応していないため、ワニワニパニックは2Dとなる。一部のゲームは音源エミュレーションに未対応であり、音を鳴らすために外部のMAME Samplesが必要となる。近年のPCベースのアーケードゲームには対応しておらず、ArcadePC LoaderやTeknoParrotなどの他のプログラムを使う必要がある。
0.162以降のMAMEは、コンシューマーゲーム機、電卓、LSI/LCDゲーム (たまごっち、ゲームロボット九、ゲーム&ウオッチなど)、電子ボードゲーム (Fidelity Chess Challengerなど)、体感ゲーム (Plug It! ポピラなど)、ラジコン (システムコントロールカー チータなど)、ワークステーション (Apollo/Domain等)やその周辺機器(プリンターや音声合成装置やミュージカルキーボードなど)、グラフィックワークステーション (SGI Indy等)、デスクトップパソコン (HP 9845C、IBM PC/PC XT/PCjr等)、ポータブルコンピュータ (IBM 5155、HP 85等)、ホビーパソコン/ホームコンピュータ (Apple II、TRS-80、Commodore PET 2001、MSX、BBC Micro/BBC Masterなど)、開発システム (HP 64000、Intel Intellec MDS-II等)、ワードプロセッサ (IBM 6580など)、開発ボード (FriendlyARM等)、ワンボードマイコン (NEC TK-80等)、シングルボードコンピュータ (Intel iSBC 286/10等)、パームトップPC (Atari Portfolio等)、ポケットコンピュータ (Sharp PC-1251/PC-1350/PC-1401等)、PDA (Palm、Cybiko等)、知育玩具 (TIのSpeak & Spell、ベネッセのポケットチャレンジV2等)、競馬予想機 (Thoroughbred Horse Race Analyzerなど)、決済端末機 (VeriFone TRANZ 330等)、音源モジュール (YAMAHA FB-01等)、LDプレーヤー (Pioneer LDV-1000、Pioneer PR-8210など)、フィットネスマシン (Salter Fitness Bike、Salter Fitness Stepper)などアーケード機に限定しないエミュレートを実装している。なお、古いPCへの対応は、SPC/ATやPCem、Common Source Code Projectなどのエミュレータの方が進んでいる。
MAMEの開発方針はオリジナルのハードウェア動作を忠実に再現することに重点を置いており、MAMEは基本的にAPUやMPUなどのチップレベルの低レベルエミュレーション (LLE) を行っている。ただし例外として、キーボード周りやI/O周りやDSPなどには高レベルエミュレーション (HLE)も使われている。
MAMEで使用するROMイメージを入手するためは、他の低レベルエミュレータと同様に、基板から実物のROMの内容を吸い出す必要がある。ただし例外として、Exidy社、バリー/ミッドウェイ社などの作品のうち、一部のゲームのROMイメージは、メーカーからの正式な許可を得たうえで、MAMEの公式サイトで配布されている。また、ドイツのコンピュータ雑誌「c't」で、「UDPを使いMAMEを自動制御し、アタリ社のゲーム『アステロイド』のハイスコアを競う」内容のコンテストが行われる際に、この雑誌の読者向けに、アタリ社より『アステロイド』のROMイメージを配布する許可を得ている（不特定多数が対象ではない）。

歴史

1997年にリリースされた当初はMS-DOS版として開発されていたが、年内にはMacintosh (MacMAME)、Unix系OS (X/MAME)、Windows (MAME32)に移植された。また、1998年には、MAME 0.33のベータ版を基にして、汎用エミュレーターであるMESS（Multi Emulator Super System）の開発が始まった。2001年、MAME 0.37b14で、DOS版に代わりWindows 32bit版が公式となった。2005年、MAME 0.99u2で、ギャンブルゲームを実装するAGEMAME (旧MAGE)がMAMEに統合されはじめた。2007年、MAME 0.120でWindows 64bit版が公式に用意された。2010年、MAME 0.136u1で、SDL採用のクロスプラットフォームなコマンドライン版であるSDLMAMEがMAMEに統合された。2011年、MAME 0.141u1で、ピンボールを実装するPINMAMEがMAMEに統合されはじめた。2012年、MAME 0.147でMESSのコードベースが統合され、MESSとMAMEの統合版としてUME（Universal Machine Emulator）がビルドできるようになった。2015年のMAME 0.162で、MAMEはMESSを吸収してUME相当となった。同年、MAME 0.171で、独自インターフェースのMEWUIや、MAMEをWeb上で動かすJSMESSが、MAMEのコードベースに統合された。また、派生版のみに実装されていたAuto-fireに対応したほか、GPUバックエンドのBGFXが追加された。2016年、MAME 0.172でライセンスがGPLに変更された。また、ハイスコアが再実装されたほか、CRTモニタ向けのGroovyMAMEの機能の一部が統合された。同年、MAME 0.177で、VGM形式の音源を再生するための、VGM Playerが搭載された。

動作

MAMEの動作には、実際の基板上のデータイメージ（ROMイメージ）を用意する必要がある。MAMEは基板のハードウェア構成をソフトウェアでエミュレートすることにより、オリジナルのROMイメージを異なるハードウェア上で動作させることを可能にしている。エミュレートするCPUは代表的なZ80や68000をはじめとして100種類以上、サウンドチップは70種類以上、そのほか多くのカスタムチップもサポートする。
最近のバージョンでは、3Dグラフィックシステムなど、処理量の多いゲームにも対応している。しかし、前述の通り、エミュレーションの動作速度よりもオリジナルハードウェアの忠実な再現を目的とするため、3Dグラフィックやテクスチャ処理なども、Direct3DなどのOS固有の拡張機能を使わず、オリジナルハードの動作を元に全てソフトウェアで処理を行う。このため最新の高速プロセッサでも完全な速度で動作しないタイトルが一部存在する（Windows版では描画の設定にDirect3Dの項目があるが、これは最終的な描画先としてDirect3Dを用いるだけであり、エミュレーション処理自体には関係しない）。