ゲームエミュレータ(Game Emulator)とは、主にコンシューマーゲーム機やアーケードゲーム機等のハードウェア/ソフトウェアを、実機以外のハードウェア/ソフトウェアで仮想的にエミュレートし、本来そのゲーム機本体でのみ稼動するゲームを仮想環境上でプレイできるようにするためのエミュレータである。最もメジャーな実行環境ハードウェアとして、公式にゲームエミュレータを搭載した第7世代以降のゲーム機があり、次いでパーソナルコンピュータなどがあげられる。

ゲームエミュレータは主として、メーカー側から置き去られて実行環境も失われゆく作品の存続を図るゲームマニア有志から発祥・発展してきたこと。後述する事情から公式エミュレータは依然マニア側に出遅れていることから、本稿も非公式・私製エミュレータを中心として記述する。

フライトシミュレーションやドライビングシミュレータも、実物の挙動を再現するという点では共通するが、通常これらは現実の物理現象を大局的に捉えて近似することが精々であって、実物の機構そのものを再現するエミュレータとは区別される(エミュレータを参照)。

## 特徴

主な用途に、自作ソフト、ハックROMの動作テスト、商用ゲームのプレイ、ゲームの解析、挙動の調査、TASの作成が挙げられる。

## 概要

### 互換性

一般的なアーキテクチャのものほどエミュレートしやすい。逆にアーキテクチャの公開されていないプロセッサー(PS3におけるRSXなど)はバイナリ解析に頼らざるを得ないためエミュレートが難しい。

エミュレーションには、チップレベルでのエミュレーション(例えばMAMEや、DolphinのLLE)と、ハイレベルでのエミュレーション(例えばDolphinのHLE)が存在する。前者の方が正確であるものの、後者の方が高速となる。また、ハイレベルエミュレーションでは、実機以上の品質の解像度や音声処理を行うことも可能となる。Dolphinでは、VRデバイスにまで対応している。

### 実行の為の性能

ゲームエミュレータは一般的にデジタルおよびアナログなハードウェアの動作をほぼソフトウェアのみで処理する為、実機よりも高性能なハードウェアを必要とする。プロセッサーアーキテクチャが異なる場合、ダイナミックリコンパイルによって機械語を変換し性能を上げることが行われているものの、それでもオーバーヘッドは大きい。

一般的に、複数のCPUや画像処理機構を持つものなど、複雑な構成のハードウェアほどエミュレートするのも困難とされている。

### 特殊なデバイス

実機が特殊な入力デバイス、例えばライトガン、パドルコントローラ、トラックボール、ループレバー、センサーバー等を使用する場合、一般的なコントローラーでは実機と同等のプレイ感を出す事は出来ない。実機の入力デバイスを流用するか、同等の装置を自作する必要が有る。

### ハックROM

ゲームエミュレータならではの遊び方としてハックROMの作成が挙げられる。ゲーム内容を専用のツール、またはバイナリを直接書き換えるなどして改造したもので、ゲーム内のグラフィックやメッセージの書き替え、難易度の変更といったものが主なものであるが、中にはシステム部分まで改造されたハックROMも存在する。著作権上の問題から、通常は改造元のROMファイルに対する差分ファイル(パッチ)の形でインターネット上で公開されていることが多い。

## 主な機能

### メモリの表示、編集

メモリエディタという名前で実装されていることが多い。数値を書き換えると実際のゲームに変更が反映され、効果を変更したり、ゲームの仕組みを知ることができる。

### ネットワークプレイ

ネットワーク対戦機能のあるゲームでは公式サーバーに接続して、ネットワークプレイができるものもある。

ゲームエミュレータによっては、オフライン対戦しかできないゲームであっても、ネットワーク対戦が可能となる(例、大乱闘スマッシュブラザーズDX)。これは通常、キー入力やメモリ内容を同期することにより実現されるため、操作には多少の遅延が生じる。

### ステートセーブ、ステートロード

ほとんどのゲームエミュレータにはステートセーブ、ステートロード機能があり、メモリー内部の状態を保存、読み込みする機能がある。一般的なコンピュータの用語としてはスナップショットと呼ばれる。これを使うとゲーム中いつでもセーブを行いその場所から再開することができる。

### 操作の記録

ゲームエミュレータによっては、1フレームごとにボタンの操作を記録できるものがある。操作を記録したファイルを再生することで、全く同じプレイを何度も再現することができる。

### エミュレータ同士で接続

実機でローカルプレイなどができる機種のエミュレータの場合、エミュレータを複数起動をすることで通信できるエミュレータが存在する(例えばmelonDSではローカル通信をエミュレートしているため、それ利用した機能ができる)。

### 異機種エミュレータ間の接続

実機で異機種間の接続が可能な場合、異機種エミュレータ間の接続に対応しているエミュレータも存在する(例えば、WiiエミュレータのDolphinは、GBAエミュレータとの接続に対応している)。

### 起動ロゴ、システムメニューの起動

本体にBIOSやファームウェアなどがある場合、データをダンプすることによって起動ロゴ、システムメニューを起動できるものがある。DSエミュレータのmelonDSはニンテンドーDS/DSiメニュー、GC/WiiエミュレータのDolphinはGC/Wiiメニューを起動できる。

## 問題点

過去のゲームのプレイ環境を保存するために必要不可欠なゲームエミュレータであるが、次のような問題点がある。

### 技術的な問題

実機とは異なる記憶媒体であるためエミュレータが稼働するコンピュータに対応する形式に変換する必要がある。

また、実機とは異なる環境で動作しているため、バグが発生したり動作が重くなるなど実機とは異なる挙動をする所がある。この場合、BIOSをダンプすることで再現性があがり、動作が改善される場合がある。

公式エミュレータでは、その多くが有償サービスであること。また企業の体面もあり、私製エミュと比べて動作完全性への要求値は一段高くなる。そのためのソフト修正にかかる労力コストを、旧製品に対して支出する価値があるかという、営利企業としての損益判断も加わることから、公式エミュへの対応は遅くならざるを得ない構造がある。

### 法律的な問題

ゲームエミュレータに関わる最も大きな問題が、ゲームソフトのROMイメージとそれに関わる著作権である。ビデオゲームの世界はまだ歴史が浅く、完全に著作権が失効したゲームソフトというものは、著作権者側が著作権を放棄する等の例外を除いて、まだほとんど無いと考えられる。エミュレータで合法的にゲームを遊ぶには、実際に自分が所有している基板やカセットのマスクROMやEEPROM、NANDフラッシュメモリ等からROMイメージ(BIOSやファームウェア、セーブデータ、更新データを含む)をダンプする必要が有る。PlayStationなどの光学ディスクはPCで直接読み込めるため、ROMイメージを得やすい。海外では、DMCAなどにより半合法的にROMイメージが配布されている場合もある。

ROMダンプは、ROMダンプ用の機器が比較的安価に入手できるものが販売されているほか、個人で自作できる回路もインターネット上でさまざまなものが公開されている。近年のハードウェアでは、ソフトウェア経由でROMをダンプできるものもある(PSP、3DSなど)。

最近では著作権者側が過去資産を生かす為にゲームエミュレータを使用する動きが進んでいる(公式のゲームエミュレータ)。ユーザーにおいても、手軽に利用できることから、過去のゲームを遊ぶ場合には公式のゲームエミュレータを利用する事が一般的になっている。しかし、権利や表現の問題など、様々なしがらみによって現在では発売不可能と思われるゲームもあり、そのようなゲームを遊ぶには実機を入手するか自分で手持ちのソフトから複製するか、さもなくば著作権が失効するのを待つ他は無い。違法ダウンロードを行った場合、違法ROM配布サイトのサーバーにダウンロードに関係したアクセスログが残るため、サイトが摘発された際に自分自身も芋づる式に検挙される可能性がある。むろん公式エミュにおいてはこのような問題を解決できないソフトは供給不可能である。

## 公式のゲームエミュレータ

代表的なものに任天堂のWiiに搭載されているバーチャルコンソールがある。Wiiと互換性があるのはニンテンドー ゲームキューブだけであるが、NINTENDO 64以前のソフトもゲームデータをダウンロードすることでエミュレータ技術によって遊ぶことができるようになっている。バーチャルコンソールはニンテンドー3DS・Wii Uにも搭載されている。

また、PlayStation Portable・PlayStation 3・PlayStation Vitaを用いたダウンロード販売サービスのゲームアーカイブスもPlayStationとPCエンジンのゲームデータをダウンロードすることでエミュレータ技術によって遊ぶことができるようになっている。

PlayStation 3において、初代PlayStationのソフトはソフトウェアエミュレートで動いている。PlayStation 2ソフトの実行についてはモデルによって動作が異なり、初期のモデルはPS2互換チップを搭載していた。2007年3月発売の欧州版80GBモデルはPS2チップのうちGraphics Synthesizerしか搭載していないため、CPUのEmotion Engineをソフトウェアによりエミュレートする。2007年10月以降のモデルはPS2互換チップを完全に廃したためPS2ゲームが実行できなくなったが、2012年より「PlayStation 2アーカイブス」としてソフトウェアエミュレートによるPS2ソフトの配信を開始した(PS2のディスクソフトは実行できない)。

Xbox 360でも初代Xboxの一部タイトルをソフトウェアエミュレートにより実行可能である。

## 公式のゲームエミュレータを使用した製品

- ニンテンドークラシックミニ ファミリーコンピュータ
- ニンテンドークラシックミニ スーパーファミコン
- ゲーム&ウオッチ スーパーマリオブラザーズ
- ゲーム&ウオッチ ゼルダの伝説
- PCエンジン mini
- メガドライブ ミニ
- アストロシティミニ

## ゲームエミュレータの一覧

### アーケード

| ゲーム機 | 主なエミュレータ |
| --- | --- |
| ディスクリート回路 | MAME, Dice |
| システム基板 | MAME, FB Alpha |
| レーザーディスク | Daphne |
| MODEL3 | Supermodel |
| トライフォース | Dolphin |

### 据置ゲーム機

| ゲーム機 | 主なエミュレータ |
| --- | --- |
| ファミリーコンピュータ/ ファミリーコンピュータディスクシステム | Mesen, higan, Nestopia, VirtuaNES, FCEUX |
| スーパーファミコン | Mesen-S, Snes9X, ZSNES, higan |
| NINTENDO 64/64DD | Project64, 1964, UltraHLE, Nemu64 |
| ニンテンドー ゲームキューブ | Dolphin |
| Wii |
| Wii U | Cemu,Decaf-emu |
| Nintendo Switch | suyu、Ryujinx |
| PlayStation/PS one | ePSXe, pSX, PCSX |
| PlayStation 2/PSX | PCSX2 |
| PlayStation 3 | RPCS3, nucleus |
| PlayStation 4 | RPCSX |
| PlayStation 5 | Kyty |
| メガドライブ | Kega Fusion |
| セガサターン | uoyabause, Satourne, SSF,Mednafen |
| ドリームキャスト | Flycast,Flycast-dojo,nullDC,Demul, Chankast,Redream |
| Xbox | Cxbx、XQEMU,Cxbx Reloaded |
| Xbox 360 | Xenia |
| ネオジオ | NeoPop |
| 3DO | 3DOplay,4DO |
| Atari 2600 | Stella, z26, MESS |
| コモドール64 | CCS64, VICE |

### 携帯ゲーム機

| ゲーム機 | 主なエミュレータ |
| --- | --- |
| ゲームボーイ | VisualBoyAdvance-M、mGBA、higan、NO$GBA |
| ゲームボーイカラー |
| ゲームボーイアドバンス |
| ニンテンドーDS | higan、NO$GBA、DeSmuME、iDeaS、melonDS、Medusa、CorgiDS |
| ニンテンドーDSi | NO$GBA、melonDS |
| ニンテンドー3DSNewニンテンドー3DS | Citra、Corgi3DS、TronDS |
| PlayStation Portable | PPSSPP、PCSP、Jpcsp |
| PlayStation Vita | Vita3K |

### コンピューター

| コンピューター | 主なエミュレータ |
| --- | --- |
| PC-9801 | Anex86, Neko ProjectII, T98-Next |
| X68000 | XM6 |
| FM TOWNS | うんづ |
| MSX | OpenMSX, blueMSX |
| Macintosh | SheepShaver |

### その他

| プラットフォーム |  |
| --- | --- |
| Adobe Flash | Ruffle、Lightspark |
| iモード/iアプリ | i-JADE Lite、iαppli Development Kit |