MAME(以前はMultiple Arcade Machine Emulatorの頭文字)は、アーケードゲームのハードウェアをエミュレートするように設計された無料のオープンソースのエミュレータで、後にビデオゲームコンソール、古いコンピュータ、その他のシステムを現代のパーソナルコンピュータやその他のプラットフォームのソフトウェアに組み込むように拡張されました。[ 1 ]その目的は、ビンテージのビデオゲームが失われたり忘れられたりしないようにすることで、ゲームの歴史を保存することです。これは、エミュレートされたマシンの内部動作をエミュレートすることによって実現され、実際にビデオゲームをプレイできる機能は「嬉しい副産物」と考えられています。[ 2 ] Joystiq は、MAME をすべてのWindowsおよびMacゲーマーが持っておくべきアプリケーションとして挙げています。[ 3 ]
MAMEの最初の公開リリースは、1997年2月5日にNicola Salmoriaによって行われました。 [ 4 ]このプロジェクトは現在、アーケードハードウェア、ホームコンピュータ、ビデオゲームコンソール[ 6 ] [ 7 ]を含む、10,000以上の動作タイトルを持つ32,000を超える個別のシステムを文書化していますが、すべてのゲームがプレイできるわけではありません。[ 5 ] MAMEコアをベースにした、多くのビデオゲームコンソールとコンピュータシステムのエミュレータであるMESSは、2015年にMAMEに統合されました。
MAME プロジェクトは、イタリアのプログラマーNicola Salmoriaによって開始されました。当初は、パックマン ファミリーのビデオゲームを保存することを目的とした Multi-Pac というプロジェクトでしたが、フレームワークにゲームが追加されるにつれて名前が変更されました。最初の MAME バージョンは 1996 年にリリースされました。[ 8 ] 1997 年 4 月、Salmoria は兵役義務のためプロジェクトを辞任し、半年間、同じイタリア人の Mirko Buffoni にプロジェクトの管理を任せました。2003 年 5 月、David Haywood がプロジェクト コーディネーターを引き継ぎ、2005 年 4 月から 2011 年 4 月までは Aaron Giles がプロジェクト コーディネーターを務めました。[ 9 ]その後、Angelo Salese がコーディネーターを引き継ぎ、[ 10 ] 2012 年に Miodrag Milanovic が引き継ぎました。[ 11 ]このプロジェクトは、世界中の何百人もの開発者と何千人もの外部貢献者によって支えられています。
当初、MAME はMS-DOS専用に開発されましたが、すぐにUnix ライクなシステム (X/MAME)、Macintosh (MacMAME および後に MAME OS X)、Windows (MAME32) に移植されました。2001 年 5 月 24 日、バージョン 0.37b15 以降、[ 9 ] MAME の主な開発は Windows プラットフォームで行われ、他のほとんどのプラットフォームは、2006 年にメインの開発ソース ツリーに統合されたSDLMAMEプロジェクトを通じてサポートされています。 [ 12 ] MAME は、他のコンピュータ、ゲーム コンソール、携帯電話、PDA、そして一時期はデジタル カメラにも移植されています。[ 13 ] 2012 年に、Google はMAME をNative Clientに移植し、 Chrome内で MAME を実行できるようにしました。[ 14 ]
MAME のメジャー リリースは、およそ 1 か月に 1 回行われます。 32 ビットと 64 ビットの両方の Windows 実行ファイルが、完全なソース コードとともに開発チームの公式 Web サイトで公開されます。 [ 15 ]開発者間でコードを同期させるために、より小規模な増分 "u" (更新用) リリースが、最新のメジャー バージョンとのソース差分として毎週リリースされました (バージョン 0.149u1 まで)。 [ 16 ] MAME のソース コードは、公開GitHubリポジトリで開発されており、[ 17 ]必要な専門知識とツールを持つ人が最新バージョンをビルドし、プル リクエストとして機能強化を貢献することができます。 過去のバージョン番号 0.32、および 0.38 から 0.52 までは存在しません。前者は、GUI を搭載した MAME32 バリアントの命名規則が似ているためスキップされました (その後、64 ビット ビルドへの移行により、 MAMEUIに改名されました)。後者の番号は、0.37 ベータ サイクルでのリリースが多数あったためスキップされました (これらのバージョン番号は、公式 MAMEdev ウェブサイトで対応する 0.37 ベータ リリースの横にマークされています)。[ 18 ]
MAME のアーキテクチャは長年にわたって大幅に改良されてきました。ラスターディスプレイとベクター ディスプレイの両方のサポート、複数の CPU、サウンド チップがプロジェクトの最初の 6 か月で追加されました。複数のエミュレートされた CPU コア間の同期を調整するための柔軟なタイマー システムが実装され、ROM イメージは、保存されているZIP ファイル内のCRC-32ハッシュに従ってロードされるようになりました。 [ 9 ] MAME は、多くの文書化されていないシステム アーキテクチャ、さまざまな CPU (新しい命令を備えたM6809派生のカスタムコナミCPUなど)、サウンド チップ (たとえば、ヤマハ FM サウンド チップ) のリバースエンジニアリングの先駆けとなりました。MAME 開発者は、ネオ ジオ、CP システム II、CP システム IIIなど、アーケード ゲームで使用されている多くの独自の暗号化アルゴリズムのリバース エンジニアリングに重要な役割を果たしてきました。
MAMEの人気は主流となり、愛好家が古いゲームを再現するために独自のアーケードゲーム筐体を製作したり、アーケードに設置するための違法なMAME派生版を製造する企業さえ存在する。筐体は、ゼロから製作するか、オリジナルのアーケードゲーム筐体を分解して改造して製作される。[ 19 ] [ 20 ]クラシックゲームにインスパイアされた筐体は購入して組み立てることもできる(MAMEはオプションでプリインストール可能)。[ 21 ]
MAMEには基本的なユーザーインターフェースが備わっていますが、アーケードゲーム筐体やホームシアターでMAMEを使用するには、より高度な機能を備えたフロントエンドと呼ばれる特別なランチャーアプリケーションが必要です。フロントエンドは様々なレベルのカスタマイズが可能で、ゲーム筐体の画像、履歴、プレイのヒント、ゲーム専用のロゴアートワーク、ゲームのプレイ動画やデモモードなどを表示できます。
MAME内の情報は自由に再利用でき、企業は古い名作を現代のシステムで再現する際にMAMEを利用することが知られています。中には、MAMEの開発者を雇って古い作品のエミュレータを作成させた企業もあります。例としては、特定のバージョンのMAMEでROMを読み込めるTaito Legendsパックがあります。[ 22 ]
2015年5月27日(0.162)、ゲーム機およびコンピュータシステムエミュレータMESSがMAMEに統合されました(そのため、MESSユーザーマニュアルは、MAMEのアーケード以外の部分の使用に関する最も重要な説明書となっています)。[ 23 ]これにより、MAMEがアーケードマシン以外にもエミュレートできるようになったため、頭字語も削除されました。2012年以降、MAMEは元MESSプロジェクトリーダーのMiodrag Milanovićによってメンテナンスされています。[ 11 ]
2015 年 5 月、MAME の開発者が、元の MAME ライセンスから離れて、より一般的なフリーでオープンソースのライセンスでソフトウェアを再ライセンスする予定であることが発表されました。MAME 開発者の Miodrag Milanovic 氏は、この変更はより多くの開発者の関心を引き、ゲームメーカーが MAME を配布して自社のゲームをエミュレートできるようにし、ソフトウェアを「開発ボードで作業する開発者のための学習ツール」にするためだと説明しました。MAME のライセンスのBSD/GPLへの移行は2016 年 3 月に完了しました。[ 24 ] [ 25 ] MAME のソースコードの大部分(90% 以上) は現在BSD-3-Clauseライセンスで利用可能であり、プロジェクト全体はGPL-2.0 以降のライセンスで提供されています。[ 24 ] [ 26 ]
2016年2月24日(0.171)、MAMEはMEWUIフロントエンドを組み込み(開発者もチームに加わった)、MAMEに柔軟でより機能豊富なUIを提供した。[ 27 ]
2021年12月30日、ゲーム「赤い刀」と「怒首領蜂 最大王城」の西洋著作権所有者であるexA-Arcadiaは、これらのゲームがエミュレータに含まれていることについて、MAME開発者に停止命令通知を提出した。 [ 28 ] MAMEは翌日、この要求に応じ、バージョン0.240以降、コマンドライン以外ではエミュレータ上で両ゲームをプレイできなくなった。[ 29 ]
MAMEコアは、複数の要素のエミュレーションを同時に調整します。これらの要素は、元のマシンに搭載されていたハードウェアの動作を再現します。MAMEは、さまざまなCPU(中央処理装置)および関連ハードウェアをエミュレートできます。これらの要素は仮想化されているため、MAMEはゲームのオリジナルプログラムとMAMEが動作するプラットフォームとの間のソフトウェアレイヤーとして機能します。MAMEは、任意の画面解像度、リフレッシュレート、および表示構成をサポートします。例えば、Dariusで必要とされるような、複数のエミュレートされたモニターもサポートされています。
個々のシステムは、 Cプリプロセッサマクロの形式をとるドライバによって指定されます。これらのドライバは、エミュレートする個々のコンポーネントと、それらが相互に通信する方法を指定します。MAMEは当初C言語で記述されていましたが、オブジェクト指向プログラミングの必要性から、開発チームはMAME 0.136ですべてのコードをC++としてコンパイルし始め、その過程でC++の追加機能を活用しました。
CPUエミュレーションコアの大部分はインタプリタ型ですが、MAMEはエミュレーション速度を向上させるために、ユニバーサルマシン言語(UML)と呼ばれる中間言語による動的再コンパイルもサポートしています。サポートされているバックエンドターゲットはx86とx64です。正確性の検証をさらに支援するために、ACバックエンドも利用可能です。この方法でエミュレートされるCPUは、SH-2、MIPS R3000、およびPowerPCです。
システムをエミュレートするには、オリジナルのプログラム コード、グラフィック、サウンド データが必要です。ほとんどのマシンでは、データは読み取り専用メモリ チップ(ROM) に保存されますが、カセット テープ、フロッピー ディスク、ハードディスク、レーザーディスク、コンパクト ディスクなどの他のデバイスも使用されます。これらのデバイスのほとんどの内容は、「ダンプ」と呼ばれるプロセスでコンピュータ ファイルにコピーできます。結果として得られるファイルは、ストレージの種類に関係なく、一般的にROM イメージまたは ROM と呼ばれます。ゲームは通常、複数の ROM イメージとPALイメージで構成され、これらはまとめて 1 つのZIP ファイルに格納され、「ROM セット」を構成します。「親」ROM セット (通常はゲームの最新の「ワールド」バージョンとして選択されます) に加えて、ゲームには、異なるプログラム コード、異なる市場を目的とした異なる言語のテキストなどを持つ「クローン」ROM セットが存在する場合があります。たとえば、ストリート ファイター II ターボは、ストリート ファイター II チャンピオン エディションのバリアントと見なされます。ネオジオのような、複数のゲームでROMを共有するシステムボードでは、ROMを「BIOS」ROMセットに格納し、適切な名前を付ける必要があります。
MAME ROMには、分割、非マージ、マージの3つの形式があります: [ 30 ]
ハードディスク、コンパクトディスク、レーザーディスクは、CHD (Compressed Hunks of Data) と呼ばれる MAME 固有の形式で保存されます。[ 31 ]一部のマシンは、サウンドトラックやシネマティックスなどのオーディオ/ビデオデータを保存および再生するために、レーザーディスクなどのアナログハードウェアを使用します。このデータはキャプチャされ、MAME で読み取ることができるデジタルファイルにエンコードされる必要があります。MAME は外部アナログデバイスの使用をサポートしていません。外部アナログデバイスは、(同一のスピーカーとスピーカーエンクロージャーとともに) 体験を 100% 忠実に再現するために必要なものです。エミュレートされていないオーディオ回路を持つゲームはますます少なくなっており、サウンドエミュレーションのために WAV ファイル形式のサウンドサンプルが必要です。MAME は、ベゼルとオーバーレイグラフィック用にPNG 形式のアートワークファイルもサポートしています。さらに、 Game & Watchなどの液晶ディスプレイを備えたゲームや、スロットマシンなどの追加の物理的要素を備えたゲームのエミュレーションには、通常、背景やゲームのその他の要素用の追加画像ファイルが必要です。
このプロジェクトの目的はハードウェアのドキュメント化であるため、MAMEはエミュレーションに関してやや純粋主義的な立場を取り、エミュレーションの精度を犠牲にしてゲームの実行を容易にするようなプログラミング上のハックを禁止しています。CPUなどのコンポーネントは可能な限り低レベル(つまり個々の命令がエミュレートされる)でエミュレートされ、チップのドキュメントが全く存在せず、詳細なリバースエンジニアリングが不可能な場合にのみ高レベルエミュレーション(HLE)が使用されます。アナログコンポーネントで構成されるオーディオ回路のエミュレーションには、信号レベルエミュレーションが使用されます。
ハードウェアのドキュメントを作成したいのですが、多くの人が「ドキュメントはどこにあるの?ソースコードを書いているだけじゃないか」と言うでしょう。確かにその通りです。私が学んだことの一つは、ドキュメントとソースコードを常に同期させるのはほぼ不可能だということです。ドキュメントが正しいことを証明する最良の方法は、「このコードが動作するかどうか」です。
—アーロン・ジャイルズ、カリフォルニア・エクストリーム 2008 [ 32 ]
MAME は 1000 種類を超えるアーケード システム ボードをエミュレートしますが、その大部分は完全に文書化されておらず、単一のゲームまたはごく少数のゲームを実行するためにカスタム設計されています。MAME の精度に関するアプローチは段階的なものであり、システムは合理的に可能な限り正確にエミュレートされます。ゲームの海賊版が最初にエミュレートされることが多く、正規版 (およびコピー プロテクト付き) は後からエミュレートされます。暗号化に加えて、アーケード ゲームは通常、ゲーム ロジックの一部またはその他の重要な機能を実装するカスタムマイクロコントローラ ユニット(MCU) で保護されていました。これらのチップのエミュレーションは、ゲーム自体にすぐに目に見える影響がほとんどまたはまったくない場合でも優先されます。たとえば、バブル ボブルのモンスターの動作は、カスタム MCU に含まれるコードとデータがチップのデキャップによってダンプされるまで完成しませんでした。[ 33 ]この結果、ゲームがますます正確にエミュレートされるにつれて ROM セットの要件が変化し、古いバージョンの ROM セットが新しいバージョンの MAME で使用できなくなります。
MAMEにとって、移植性と汎用性も重要です。正確性に対する妥協のない姿勢と相まって、これはしばしば高いシステム要件につながります。2GHz プロセッサがあればほとんどの2Dゲームを実行できますが、より新しいシステム、特に3Dグラフィックスを搭載したシステムでは、最速のコンピュータでもプレイできないほど遅くなることがあります。MAMEは現在、3Dグラフィックスのレンダリングを高速化するためのハードウェアアクセラレーションを利用していません。これは、安定したクロスプラットフォーム3D APIが存在しないことが一因であり、また、ソフトウェアレンダリングは、理論的には、アーケードゲームで使用されていたさまざまなカスタム3Dレンダリング手法を正確に再現できるからです。
MAME自体はエミュレーターに過ぎないため、ほとんどの国で所有および配布は合法です。ソニーなどの企業は、ソニーのプレイステーションエミュレーターであるVirtual Game Stationなどの他のソフトウェアの販売を阻止しようと裁判を起こしましたが、最終的には失敗に終わりました。 [ 34 ] MAME自体は、これまでのところ裁判の対象になったことはありません。
ほとんどのゲームは依然として著作権で保護されています。著作権者の許可なく著作権で保護されたROMをダウンロードまたは配布することは、ほぼ常に著作権法違反となります。ただし、一部の国(米国を含む)[ 35 ]では、ボードの所有者がROMチップに含まれるデータを、所有するパーソナルコンピュータやその他のデバイスに転送することを許可しています。一部の著作権者は、ライセンスを通じてROMを一般に公開することを検討してきました。たとえば、2003年にAtariは、インターネットサイトStar ROMsで、27のアーケードゲームのMAME互換ROMを公開しました。しかし、2006年までにROMはそこで販売されなくなりました。かつては、さまざまなカプコンのゲームが、ハナホが製造したHotRodアーケードジョイスティックとともに販売されていましたが、この取り決めも中止されました。他の著作権者は、商業的に採算が取れなくなったゲームを、ゲームの商業利用を禁止するライセンスの下で一般に無料で公開しています。これらのゲームの多くは、公式MAME Webサイトから合法的にダウンロードできます。[ 36 ]スペインのアーケードゲーム開発会社Gaelcoも、自社ウェブサイトで非商用利用向けにWorld Rallyを公開している。 [ 37 ]
MAMEコミュニティは、インターネットや物理メディアを介してROMを再配布する他のグループとは距離を置いており、それらのグループは著作権を露骨に侵害し、プロジェクトの評判を損なう可能性があると主張している。[ 38 ]それにもかかわらず、インターネット上ではROMの違法配布が広く行われており、特定のバージョンのROMの完全なコレクションを含む「フルセット」も多数存在する。[ 39 ] [ 40 ]さらに、アーケードマルチカートリッジなどの多くの海賊版ゲームシステムは、ゲームを実行するためにMAMEのバージョンを使用することが多い。
MAME は以前は「MAME ライセンス」または「MAME ライク ライセンス」と呼ばれる 独自のコピーレフトライセンスの下で配布されており、 Visual Pinballなどの他のプロジェクトでも採用されていました。このライセンスは、ライセンスされたプログラムのソース コードの入手可能性を保証する一方で、商業活動でのプログラムの再配布は禁止されています。[ 41 ]この条項のため、このライセンスはOSIのオープンソース定義およびFSFのフリー ソフトウェア定義と互換性がなく、そのためそれぞれオープンソースまたはフリー ソフトウェアライセンスとはみなされません。非商用条項は、アーケード オペレーターが MAME キャビネットを設置してゲームのオリジナル製造者の作品から利益を得ることを防ぐために設計されました。[ 25 ]「商用」の定義の曖昧さが、ライセンスに関する法的問題を引き起こしました。[ 42 ] [ 43 ]
2016年3月、バージョン0.172以降、MAME自体はデュアルライセンスにより、 BSD -3条項ライセンスとGPL-2.0以降のライセンスという2つの一般的なフリーソフトウェアライセンスに切り替わりました。 [ 44 ] [ 45 ]ただし、古いバージョンは元のライセンスでライセンスされています。
は C++ で記述されており、現在、過去 50 年間の 32,000 を超える個々のシステムをエミュレートできます。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)