レトロゲームを高画質・低遅延で楽しむために「MiSTer FPGA」を導入しました

2023年7月11日

MiSTerを動作させるFPGAボードです。

皆さんこんにちは。仕事が落ち着いたら、先日駿河屋で買ったPCエンジンの「天外魔境」で遊ぼうと思っているシオナイト(@sheonite)です。死亡フラグか。

さて、レトロゲームで遊ぼうと思った時に困ることの一つとして、”古いゲーム機が今のテレビに接続できない”ということが挙げられると思います。

その解決策としては、レトロフリークのようなHDMI接続できる互換機を買うのが一般的ですが、超マニアックな界隈で、FPGAの汎用基盤を使った『MiSTer』という自作レトロゲーム互換機が流行っていることを知りましたので、早速導入してみることにしました。

FPGAとは

FPGA(Field Programmable Gate Array)とは、ユーザー側で構成を自由に変えられる集積回路のことです。

一般的なレトロゲーム互換機は、ベースになるコンピュータ上でエミュレータというソフトウェアを動かし、レトロゲーム機のハードウェアをモノマネしています。

エミュレータはその仕組み上、若干ではありますが実機よりもラグが発生すると言われています。最近の高性能PCで動かした場合には、体感できるレベルのラグは発生しませんけどね。

余談ですが、レトロゲームを収録した復刻ミニハードはエミュレータを使用していますので、このラグ問題は避けて通れないようです。特に「イーグレットツー・ミニ」は体感できるほどラグがあるらしい。

対してFPGAですが、レトロゲーム機のハードウェアそのものを集積回路上で再現できるため、ラグが少なく、より実機に近い動作が期待できるとされています。

FPGA(MiSTer)上でのレトロゲームの動作については、下の方に検証動画を添付しておりますので、そちらをご覧ください。すごい再現度です。

また、以前の記事で、FPGAのメガドラ互換機「Mega Sg」を紹介していますので、そちらもご覧いただければ幸いです。

MiSTerとは

今回導入したFPGAの「MiSTer」について、いま流行りのChatGPTに質問したら素晴らしい答えが返ってきましたので、マルっと引用させていただきます。

MiSTerは、FPGAを使用して実際のハードウェアを再現し、古典的なゲームをプレイすることができるオープンソースのプロジェクトです。

MiSTerは、多くの異なるゲームシステムをエミュレートすることができ、例えば、NES(ファミコン)、SNES(スーファミ)、Mega Drive、PC Engine、Amiga、Atari STなどの古典的なゲーム機やコンピュータを再現することができます。

FPGAは、プログラマブルなロジックゲートのアレイを使用して、ハードウェアを再現することができます。

MiSTerは、このFPGAを使用して、ゲームシステムを再現しています。これにより、本物のハードウェアを使用してゲームをプレイすることができるようになります。

MiSTerは、オープンソースであり、多数の開発者がコントリビュートしています。

また、MiSTerには、多くのオプションがあり、ユーザーはFPGAコア、ビデオ出力オプション、ゲームパッド、オーディオ出力などをカスタマイズすることができます。

MiSTerは、FPGAを使用しているため、ハードウェアの再現が非常に正確であり、オリジナルのゲーム機よりも高い画質を実現することができます。

また、ゲームの遅延が非常に低いため、より正確にゲームをプレイすることができます。

MiSTerは、コミュニティで人気があり、多くの人々が古典的なゲームを楽しんでいます。

ChatGPT凄いな(笑)

購入したもの

MiSTer FPGA」の環境を立ち上げるために購入したものを紹介いたします。最低限必要なのは「DE-10 Nanoボード」と「128MB SDRAM」です。

DE-10 Nanoボード

MiSTerの心臓部、アルテラのFPGAボード「DE-10 Nanoボード」です。

DE-10 Nanoの箱。
DE-10 Nanoの箱。

アルテラはかつてアメリカに存在した半導体ベンダーでしたが、2015年にインテルに買収され、現在はインテルのFPGA部門となっています。

DE-10 Nanoボードがゲットできれば、もうMiSTerは完成したと言っても過言ではないのですが、このボードがまぁ手に入らない。

箱の中身。付属品はACアダプタ、USBケーブル、microSDカードなど。
箱の中身。付属品はACアダプタ、USBケーブル、microSDカードなど。

半導体不足の影響をモロに受けて、ネットショップでは軒並み入荷待ち状態。中古でも4~5万円くらい吹っ掛けられます。

私は新品購入を諦め、ヤフオク、メルカリ、ラクマ等のフリマ・オークションアプリの検索ワードに“DE-10”、“Nano”、“FPGA”を登録し、網を張っていました。

本体には最初からアクリルのカバーが付いています。上面だけ。
本体には最初からアクリルのカバーが付いています。上面だけ。

出品数は極めて少ないですが、粘り強く待っていれば買えると思います。私は運よく未使用品を3万4千円で購入することができました。

現在の市況を考えた場合、3万円台で購入できそうであれば買いだと思います。1万円台で買えた時期もあったみたいですが、たぶんそんなチャンスはもう来ないと思います。

メインのチップ。なんかカッコいい。
メインのチップ。なんかカッコいい。

ちなみに類似のFPGAボードで「DE-0(ゼロ)」というのがありますので、間違って買わないようにしてください。

128MB SDRAM

DE-10 Nanoボード用の拡張RAMです。

DE-10 Nano用の拡張RAMボードです。
DE-10 Nano用の拡張RAMボードです。

DE-10 Nanoボード単体でもMiSTerは動くのですが、拡張RAMを挿さないと動かないレトロハードもありますので、これは必須と言えます。

こっちがボードの裏側。
こっちがボードの裏側。

7,000円程度と少々値が張りますが、amazonで購入できますので入手難易度は低いです。

OTGケーブル

microUSBをUSB-Aに変換するケーブルです。

amazonで購入したOTGケーブル。
amazonで購入したOTGケーブル。
microUSBをUSB-Aに変換するケーブルですね。
microUSBをUSB-Aに変換するケーブルですね。

DE-10 NanoボードにはUSB-A端子が付いていませんので、キーボードやUSBコントローラを接続するために必要です。

コントローラ

私は「8bitdo SN30 Pro USBゲームパッド」を購入しました。

8bitdoの「SN30 Pro USBゲームパッド」です。
8bitdoの「SN30 Pro USBゲームパッド」です。

スーファミコントローラ型ですので、ファミコンからNEOGEO世代くらいのレトロハードであればこれで十分だと思います。

ABXYボタンの下に小さなボタン(Homeボタン)が付いているのですが、これがデフォルトでMiSTerのメニュー画面を呼び出すボタンが割当てられています。

レトロゲーマーにはなじみの深いスーファミコントローラ型。Bボタンの下に付いてるのがHomeボタンです。
レトロゲーマーにはなじみの深いスーファミコントローラ型。Bボタンの下に付いてるのがHomeボタンです。

通常、MiSTerのメニュー画面を呼び出すのは、キーボードを接続してF12キーを押す必要があるのですが、このコントローラがあればキーボードは不要です。

振動機能を内蔵しており、MiSTerと正常に接続できたタイミングでブルっと震えるのもポイント高い。(たまに繋いでも認識されないことがあるので)

ACアダプタ(5V 4A)

DE-10 Nanoボードにはセットで5V2AのACアダプタが付いているのですが、IOボードやUSBハブボードなど、MiSTerのシステムを拡張していった場合、動作が不安定になるとの話を聞きましたので、別途4Aのものを購入しました。

5V4AのACアダプタ。PSE適合品らしい(本当か?)
5V4AのACアダプタ。PSE適合品らしい(本当か?)

4Aのアダプタを変えてから、キーボードやコントローラが認識されない事象が減ったような気がします。気のせいかもしれませんが。

microSDカード(128GB)

MiSTerのシステム、ゲームのROMイメージを格納するためのものです。用途に合った容量のものを購入するようにしましょう。

SAMSUNGの128GB microSDカード。今回唯一買ってない。
SAMSUNGの128GB microSDカード。今回唯一買ってない。

私は最近使用していない「DJI Osmo Pocket」に挿してたやつを流用しました。

ヒートシンクと熱伝導両面テープ

チップの冷却効率を高めるためにヒートシンクを買いました。

ヒートシンク5個セット。1個でいいんだが...。
ヒートシンク5個セット。1個でいいんだが…。

メインチップのサイズが22mm×22mmなので、25mm角、高さ10mmの製品を購入。5個セットしかなかったので4個はゴミです。

amazonには最初から熱伝導両面テープを貼ってある製品が売ってありますが、普通の両面テープと品質が変わらないらしいので、熱伝導両面テープは別に買ってヒートシンクサイズにカットすることにしました。

熱伝導両面テープ。22mm四方にカットして使用しました。
熱伝導両面テープ。22mm四方にカットして使用しました。
アイネックス 熱伝導両面テープ PA-069-A

アイネックス 熱伝導両面テープ PA-069-A

248円(12/06 22:03時点)
Amazonの情報を掲載しています

USBハブ

キーボードとコントローラを一緒に使う場合必要です。必須ではないかな。

エレコムのUSBハブ。安いのでいいんです、安いので。
エレコムのUSBハブ。安いのでいいんです、安いので。

セットアップ手順

セットアップにあたっては、以下のサイトを参考にさせていただきました。ありがとうございました。

MiSTer FPGAイメージファイルの入手

MiSTer FPGAのサイトから、最新のシステムファイル(?)をダウンロードします。

2023年3月28日現在、最新版はv2.7が最新バージョンのようです。

MiSTer FPGAのリリースページです。「mr-fusion-v2.7.img.zip 」が最新のファイル(2023年3月28日現在)。
MiSTer FPGAのリリースページです。「mr-fusion-v2.7.img.zip」が最新のファイル(2023年3月28日現在)。

ダウンロードしたzipファイルは解凍しておきましょう。

ダウンロードしたzipファイルは解凍しておきましょう。
ダウンロードしたzipファイルは解凍しておきましょう。

microSDカードへの書き込み

先ほどのファイルをmicroSDカードに書き込みます。

Win32 Disk Imagerというソフトが分かりやすくて良いと思います。オススメです。

「Win32 Disk Imager」の画面。先ほど回答したファイルを書き込みましょう。
「Win32 Disk Imager」の画面。先ほど回答したファイルを書き込みましょう。

書き込みが完了したmicroSDカードは、DE-10 Nanoボード裏側にあるmicroSDカードスロットに挿しておきましょう。

書き込みが終わったmicroSDカードは、DE-10 Nanoのカードリーダーに差し込んでおきましょう。
書き込みが終わったmicroSDカードは、DE-10 Nanoのカードリーダーに差し込んでおきましょう。

モニタ、有線LANの接続

HDMIケーブルでDE-10 Nanoボードとモニタを接続します。

電源投入後にオンラインアップデートを実行するので、LANケーブルも接続しておきましょう。

電源接続

DE-10 Nanoボードの電源を投入します。電源スイッチは付いていないので、ACアダプタの抜き差しが電源のON/OFFになります。

電源を接続したら、ボードに付いているLEDが光りだします。
電源を接続したら、ボードに付いているLEDが光りだします。

下の画面が表示された数分後、砂嵐の画面が表示されたら起動成功です。

最初に電源を入れたときはこの画面が表示されます。画面に動きがなくて焦りますが、数分で砂嵐に切り替わります。
最初に電源を入れたときはこの画面が表示されます。画面に動きがなくて焦りますが、数分で砂嵐に切り替わります。
この砂嵐画面が出たら成功です。
この砂嵐画面が出たら成功です。

アップデート実行

あらかじめ購入しておいたOTGケーブルを使ってキーボードまたはコントローラを接続し、オンラインアップデートを実行します。

キーボードのF12またはコントローラのHomeボタンを押すと「System Settings」メニューが表示されますので、更に「Scripts > update」の順に決定していくとアップデートが開始されます。

アップデートは真っ暗な画面(コマンドライン)で、文字がザーっと流れていく感じで進んでいきます。

アップデート完了後は自動的に再起動し、また砂嵐の画面に戻ります。ここまで7~8分。

アップデート後はmicroSDカード内に、各種レトロゲームハードのアプリケーション(コア)と、ROMイメージを格納するためのフォルダが自動的に作成されます。

動作確認

起動方法とお役立ち情報をちょっとだけ紹介します。

なお、お約束ですが、ROMイメージは「Retro Base Dumper」などを使って各自でご用意ください。友達からもらったり、違法にアップロードされたサイトからダウンロードするのはダメです。

つかまるよ、マジで。
つかまるよ、マジで。

ファミコン

ファミコン(NES)の画面です。
ファミコン(NES)の画面です。

microSDカード内の「games / NES」フォルダにROMイメージを保存します。対応する拡張子は、ROMカートリッジの場合「.nes」、ディスクシステムの場合「.fds」です。

ディスクシステムを使用する場合、NESフォルダ内にBIOSファイルを保存しておく必要があります。BIOSのファイル名は「boot0.rom」です。

一部のゲーム(いわゆる「マッパー」)には対応していないようですが、対応しているゲームの動作はほぼ完ぺきです。

超高級FPGAファミコン互換機「Analogue Nt mini Noir」に搭載されている、スプライトのちらつき防止機能が実装されてます。これは凄い。

VRC6等の拡張音源対応ゲームは、デフォルトの設定では鳴らないみたいです。実装されていないのかな?

※2023年7月11日更新:VRC6ちゃんと鳴ります

なお、下の方の動作検証動画に『コズミックウォーズ(オープニングのみ)』、『ドラゴンクエストIV(オープニングのみ)』を収録していますので、よかったらご覧ください。

PCエンジン

PCエンジン(TurboGrafx -16)の画面です。
PCエンジン(TurboGrafx -16)の画面です。

microSDカード内の「games / TGFX16」フォルダにROMイメージを保存します。対応する拡張子は、通常のHuカードの場合「.pce」、スーパーグラフィックスの場合「.sgx」です。

CD-ROM2の場合、CD Manipulator等のソフトを使ってBIN/CUE形式のディスクイメージに変換し、「games / TGFX16-CD」フォルダ内に保存します。

また、CD-ROM2を使用する場合、TGFX16-CDフォルダ内にBIOSファイルを保存しておく必要があります。BIOSのファイル名は「cd_bios.rom」です。

CD-ROM2の「天外魔境 ZIRIA」、「天外魔境II 卍MARU」、「スナッチャー」で動作確認を行いましたが、完ぺきな再現性でした。

下の方の動作検証動画に『スナッチャー(オープニングのみ)』を収録していますので、よかったらご覧ください。

メガドライブ

メガドライブ(Genesis)の画面です。
メガドライブ(Genesis)の画面です。

ROMカートリッジの場合、microSDカード内の「games / Genesis」フォルダにROMイメージを保存します。

メガドライブ のカートリッジには、本体のリージョンに合わせて言語が切り替わるものがありますが、これはMiSTer内の設定で変更が可能です。

また、メニュー切り替えとは別に、ROMイメージの拡張子を変えることで言語設定を切り替えることもできます。対応する拡張子は次のとおり。

  • 日本「.bin」
  • 米国「.gen」
  • 欧州「.md」

ROMイメージの吸い出し器「Retro Base Dumper」を使うと拡張子が自動的に「.gen」になるのですが、メニューで切り替えたらちゃんと言語が日本語に変わりました。

メガCDのゲームは、CD Manipulator等のソフトを使ってBIN/CUE形式のディスクイメージに変換し、「games / MegaCD」フォルダ内に保存します。

メガCDのBIOSは、MegaCDフォルダ内に保存しておく必要があります。BIOSのファイル名は「cd_bios.rom」です。

メガCDのBIOSは、「Mega EverDrive Pro」があると簡単に吸い出せますのでお試しください。いや、普通は持ってないか(笑)。

ちなみにFPGAのメガドラ互換機「Analogue Mega Sg」と、FPGAによるメガCD機能が搭載されたフラッシュカートリッジ「Mega EverDrive Pro」の組み合わせでは不具合が発生する「天下布武~英雄たちの咆哮~」が、MiSTerでは問題なく動きます。素晴らしい。

下の方の動作検証動画に『サンダーフォースIV(オープニング)』、『ザ・スーパー忍(オープニング)』、『ファイナルファイト(オープニング)』を収録していますので、よかったらご覧ください。

オープニングだけ見せて肝心なゲームプレイ動画は見せないスタイル(笑)。

スーパーファミコン

スーパーファミコン(SNES)の画面です。
スーパーファミコン(SNES)の画面です。

microSDカード内の「games / SNES」フォルダにROMイメージを保存します。対応する拡張子は「.smc」です。

「スターフォックス」で採用されているSuperFXのような特殊チップにも対応しているようです。スターフォックス持ってないので試していませんが。

再現度はほぼ実機と同等。下の方の動作検証動画に『タクティクスオウガ(オープニングのみ)』を収録していますので、よかったらご覧ください。

NEOGEO

NEOGEOの画面です。
NEOGEOの画面です。

今回試した中で、導入のハードルが一番低かったのが、意外にもNEOGEO(ネオジオ)でした。

起動にはBIOSとROMのイメージファイルが必要なのですが、これがなんと合法的に入手(購入)できます。

起動に必須なBIOSは次の3つ。

  1. 「000-lo.lo」
  2. 「sfix.sfix」
  3. 「uni-bios.rom」

BIOSの1と2は、Humbleというショップで買えるNEOGEOソフトに付いてきます。たくさんゲームが欲しい場合は「COMPLETE COLLECTION」を買えばいいんじゃないでしょうか。

Humble Storeで販売されているNEOGEOのゲームです。ROMイメージとBIOSを入手できます。
Humble Storeで販売されているNEOGEOのゲームです。ROMイメージとBIOSを入手できます。

Humbleからダウンロードしたexeファイルを実行すると、様々なファイルとともに「neogeo」というzipファイルが出現します。この中に「000-lo.lo」と「sfix.sfix」が入っています。

「neogeo.zip」の中身。BIOSの詰め合わせです。
「neogeo.zip」の中身。BIOSの詰め合わせです。

3の「uni-bios.rom」は非公式の互換BIOSで、こちらから入手できます。

他にも、公式BIOSの「sp-s2.sp1」(アーケード)、「neo-epo.sp1」(家庭用)も使用可能ですが、MiSTer FPGA版では、非公式の「uni-bios.rom」の使用が推奨されています。

Humbleで購入したROMイメージのzipファイル(後述するブレイジングスターはファイル名が「blazstar.zip」)を、「NeoBuilder UI」というソフトを使って拡張子「.neo」に変換します。

Humbleで買った「ブレイジンクスター」のROMイメージ(zipファイル)。
Humbleで買った「ブレイジンクスター」のROMイメージ(zipファイル)。

最後に、用意したBIOSと拡張子「.neo」のROMイメージを、microSDカード内の「games / NEOGEO」フォルダに保存すれば完了です。

MiSTerからNEOGEOを起動するとデフォルトでは地域がEUに設定されてしまいますが、uni-biosの画面が表示されているうち(2~3秒?)にABCボタンを同時押しすれば、地域選択画面に入れます。

uni-biosの起動画面。2~3秒しか猶予がありませんが、ここでABCボタンを同時押しします。
uni-biosの起動画面。2~3秒しか猶予がありませんが、ここでABCボタンを同時押しします。
ABC同時押し後の画面。ここでリージョンや、業務用・家庭用の切り替えが可能です。
ABC同時押し後の画面。ここでリージョンや、業務用・家庭用の切り替えが可能です。

ROMイメージを「.neo」形式に変換しなくても良い方法(「romsets.xml」を作成する方法)もありますが、面倒くさいので割愛します。

下の方の動作検証動画に『ブレイジングスター(1面プレイ動画)』を収録していますので、よかったらご覧ください。ボスでミスってますけど。

動作検証動画

あとがき

一部、正常に動作しないゲームはあるものの、実機と同等に動作して、しかもHDMI接続でクッキリハッキリ、遅延も無い「MiSTer FPGA」は、まさに神ハードです。

DE-10 Nanoボード」が入手困難だったり、ゲームを吸い出すツールが必要だったりと大変ですが、その労力・コストに十分見合ったリターンがあると思いますよ!

ではまた。

【改訂2版】FPGAボードで学ぶ 組込みシステム開発入門[Intel FPGA編]

【改訂2版】FPGAボードで学ぶ 組込みシステム開発入門[Intel FPGA編]

小林 優
3,960円(12/06 22:28時点)
発売日: 2018/01/19
Amazonの情報を掲載しています