レトロゲームのエミュレーターをMacで使うとき、いちばん面倒なのは「機種ごとに別のアプリを入れて、それぞれの流儀を覚える」ことです。ゲームボーイはこのアプリ、PlayStationはあのアプリ、ゲームキューブはまた別のアプリ。設定画面もコントローラーの割り当ても、セーブの場所もばらばらになります。

その面倒をなくすために作った、17機種対応のMac用エミュレーター 「emu : Game Emulator」 を、Mac App Storeで公開しました。

Mac App Storeで見る(1,000円) | 製品ページ:emu

📌 emu for Macの3行まとめ
① NES・ゲームボーイからPlayStation・サターン・N64、ゲームキューブ・PS2・PSP・Xboxまで17機種を1つのライブラリで。機種はファイルの中身から自動判定
② ゲームキューブ・PS2・N64はApple Siliconのネイティブ再コンパイラで動く。iPhone版の移植ではなく、Macのために作ったアプリ
③ 2人用タイトルはMacでホストして、iPhoneか別のMacの友だちが2Pで参加できる。買い切り1,000円、広告なし、アプリ内課金なし

「iPhone版をMacで動かす」を選ばなかった理由

emuにはiPhone版があり、Mac版はそのコードの大半(ライブラリ、読み込み、セーブ、コントローラー、エミュレーションセッション)を共有しています。それでも、iPhoneアプリをそのままMacで動かす方式(Mac Catalystや「iPhoneアプリをMacで実行」)は選びませんでした。

理由は2つあります。ひとつは画面です。縦画面・タブバー・タッチ前提のiPhoneの画面をMacに持ち込んでも、Macらしい使い方にはなりません。Mac版はライブラリをサイドバー付きの1つのウィンドウにし、ゲームは1本ごとに自分のウィンドウで開くようにしました。ツールバーには一時停止・セーブ・ロードが並び、複数のタイトルを横に並べて開いておけます。

もうひとつは、エミュレーターの「中身」です。emuが組み込んでいるオープンソースのエミュレーター(ares、PPSSPP、Dolphin、xemu、Play!、Yaba Sanshiro)は、いずれもApple Silicon上のmacOSをネイティブの対象として扱っています。そして、macOSにはiPhoneにない、決定的な自由があります。

ゲームキューブ・PS2・N64を再コンパイラで動かす

エミュレーターがゲーム機のCPU命令を実行する方式には、大きく分けて2つあります。命令を1つずつ読んで解釈するインタープリターと、命令のまとまりをMacのCPUが直接実行できるコードへその場で変換する動的再コンパイラ(JIT) です。負荷の高い機種ほど、この差が速度に直結します。

iOSでは、アプリが実行可能なメモリを自分で書き換えることが許可されていません。そのためiPhone版のemuは、すべての機種をインタープリターで動かしています。macOSでは、Mac App Storeが受け付ける唯一のJIT用エンタイトルメント(com.apple.security.cs.allow-jit)のもとで、再コンパイラを使えます。

Mac版では、ゲームキューブ(Dolphin)、PlayStation 2(Play!)、NINTENDO 64(ares) の3機種が、それぞれのAArch64向けコード生成器で動きます。M系チップ向けのネイティブ再コンパイラなので、Rosetta 2を挟むことも、Intel向けのコードを翻訳することもありません。emuがApple Silicon限定(M1以降、macOS 14 Sonoma以降)なのはこのためで、Intel Macには対応していません。

一方で、正直に書いておきたいこともあります。ゲームキューブ・PS2・セガサターンは、今回のリリースでも試験的な対応です。私たちが試した多くのタイトルはM系チップのMacでフルスピードを保ちましたが、特定のゲームがどれだけ快適かはタイトルによって異なります。PSPはMacではインタープリターで動きます。Xboxは3つのファイル(MCPX ROM、対応するフラッシュBIOS、HDDイメージ)をご自身で用意する必要があり、今回のリリースで最も検証の少ない機種です。Xboxのためにemuを買うことはおすすめしません。

ファイルを入れるだけ。機種は選ばない

使い始めるまでの手順は3つです。

  1. ツールバーの「読み込み」をクリックして、所有するゲームのバックアップを選ぶ
  2. 機種はファイルの中身から自動で判定される。ディスクイメージもヘッダーで見分けるので、ユーザーが機種を選ぶ場面はない
  3. ライブラリのタイルをクリックすると、そのゲームのウィンドウが開く

ファイルはZIPのままでも読み込めます。CUEシートはBINファイルと一緒に選択でき、大きなディスクイメージはメモリに展開せずに所定の場所へコピーします。

機種によって、ゲームファイル以外に必要なものが異なります。

区分機種
ゲームファイルだけで動くNES、SNES、ゲームボーイ/カラー、メガドライブ/Genesis、マスターシステム、ゲームギア、PCエンジン/TurboGrafx-16、ワンダースワン/カラー、NINTENDO 64、ゲームキューブ、PlayStation 2、PSP
ご自身の本体からダンプしたBIOSも必要PlayStation、セガサターン、ゲームボーイアドバンス、ネオジオポケット/カラー
3つのファイル(MCPX ROM・フラッシュBIOS・HDDイメージ)が必要Xbox

ゲームソフト、ROM、BIOSはアプリに付属しません。アプリの中から入手することもできません。ご自身が正当に利用できるバックアップだけをお使いください。

キーボードでそのまま。パッドは「位置」で合わせる

Macらしさは入力にも出ます。emuはインストール直後からキーボードで遊べます。矢印キーで十字キー、Z/X/A/Sでボタン、ReturnがSTART、SpaceがSELECTです。

BluetoothやUSBのゲームパッドをつなぐと、自動で認識されます。ボタンは印字されたラベルではなく物理的な位置で対応付けるので、別のメーカーのコントローラーに持ち替えても同じ操作で遊べます。設定画面では、コントローラーのボタンもキーボードのキーも、割り当てたいものを押すだけで変更できます。1P/2Pの割り当ては固定され、スティックのデッドゾーンも調整できます。

セーブは30秒ごとに、静かに

ゲーム内セーブとメモリーカードのデータは、30秒ごとと、ウィンドウを閉じるときに書き込まれます。「セーブし忘れてウィンドウを閉じた」が起きにくい設計です。

ツールバーのセーブ/ロードは任意の瞬間のステートを保存し、そのステートは次にそのゲームを開いたときにも残っています。

Macでホストして、iPhoneの友だちと対戦する

emuの2人用オンライン対戦は、iPhone版とMac版で同じ仕組みを共有しています。Macで2人用のゲームをホストすると6文字のコードが表示され、友だちがiPhoneか別のMacのemuにそのコードを入力すると、2Pとして参加します。相手はゲームのコピーを持っていなくて構いません。

ホストできるのは、NES、SNES、PlayStation、セガサターン、NINTENDO 64、メガドライブ、マスターシステム、PCエンジンの2人用タイトルです。

接続は2台の端末の直接接続です。接続の手順(オファー・アンサー・経路候補の交換)だけを小さなシグナリングサービスが仲介し、つながった時点でその記録は削除されます。映像・音声・操作は2台の間を直接流れ、当社のサーバーを経由しません。サーバー経由の中継はコードの5か所で禁止しており、接続後に実際の経路が直接接続かどうかを検証しています。

emuにはアカウントもトラッキングもありません。ネットワークを使うのはオンライン対戦のときだけです。

iPhone版との違い

Mac版は、iPhone版とは別のアプリです。iPhone版が無料+アプリ内課金なのに対し、Mac版は買い切り1,000円で、広告もアプリ内課金もありません。

Mac版にないものも書いておきます。

  • 画面上の仮想パッド(Macではキーボードかコントローラーで遊びます)
  • 巻き戻し
  • 7z形式のアーカイブの読み込み(ZIP、CUE+BIN、生のファイルは読み込めます)

動作環境と価格

項目内容
対応Apple Silicon Mac(M1以降)、macOS 14 Sonoma以降。Intel Macは非対応
価格買い切り1,000円。広告なし、アプリ内課金なし、アカウントなし
言語日本語、英語
組み込んでいるエミュレーターares、PPSSPP、Dolphin、xemu、Play!、Yaba Sanshiro(オープンソース。ライセンス表示はアプリに同梱)

各社の商標はそれぞれの権利者に帰属します。emuは、いかなるハードウェアメーカーとも提携・承認・後援の関係にありません。

関連する記事

Macで使えるほかのエミュレーターとの違いは、Macで使えるエミュレーター一覧にまとめました。「ネイティブ対応」「Rosetta 2」「JIT」という言葉の意味と、それが速度にどう効くかはエミュレーターの「ネイティブ対応」とはで解説しています。

emuをMac App Storeで見る(1,000円)