カテゴリー
環境整備

MiSTer FPGAを導入した

古めの家庭用ゲーム機、アーケード基板、PCをFPGAで再現するためのプロジェクト “MiSTer” のソフトウェアを使える環境を整えたのでメモを残しておく。

MiSTer FPGA 組み立て例

コアになるのはDExx-vd_islでも使用したTerasic DE10-Nano で本当に最小限の環境ということだと、実はこれだけでもよかったりするが、便利に使うためにあれこれパーツもつけている。

自分の場合、MiSTerもクラシックゲーミングに使う環境に組み入れて、実機とガチ比較したかったのでアナログ出力する構成にしているが、これもあくまでオプションでしかない。自由度が高いぶん、どういう方針で何を揃えたらいいかは最初迷いやすいと思う。ただTwitterで先に導入している詳しい人からアドバイスをいただけたので何を揃えたらいいかはけっこうすぐにわかった。


パーツ自体は調べてみたら約4か月前に買いそろえていた。よく見るアルミニウムのケースも欲しかったのだが、売り切れていたのでアクリルケースにしている。

参考までに揃えたパーツ類の写真が見られるよう当時のTweetをリンクしておく。ただ、重複していたり、不要だったものも含まれているし、必須ではないけどあった方がいいからと追加オーダーしたものは含まれていないので注意して欲しい。いざセットアップを始める前にMiSTer WikiのHow to start with MiSTerを見たら「Upgraded Power Supply (recommended)」の記載があったので、慌てて電源を追加注文したくらいで完成形を目指すと必要なパーツは多く漏れがおきやすいが、とりあえずDE10-Nanoさえあればまずは始められるので、あまり気にせずスタートを切ることが重要だと思った。

パーツ類第一陣が届いたときのTweet
パーツ類第二陣とDE10-Nanoが届いたときのTweet

で、3月に注文してからパーツが届くまで1か月前後かかった間に仕事がハードになって気持ちの余裕がなくなって放置していたのだが、Analogue Pocketの方でopenFPGAでMiSTerのNEOGEOコアが移植されている件をちょっと試してたら冷えた鉄が暖まってきて先週末にやっと試す気になれた。


ここからはセットアップしたときの簡単なメモを。これについては何を揃えてどう進めたらいいのか別記事にしたので、ここではどうあるべきかではなく、基本どう自分が進めたかで書いていく。

まず、MiSTer Wikiのセットアップガイド に従い、Mr. FusionのInstallerをダウンロードしてWin32 Disk Imager でmicroSDにFlash。前記microSDを素の状態のDE10-Nanoに入れて電源オン。下記でインストールが始まる。

下記画面まで進んだら、ここですでに”MiSTerの最小限の初期セットアップ” は完了している。10分かからなかった。

MiSTer FPGA初期セットアップ後の起動画面

この初期セットアップが終わった時点でmicroSDにMiSTerの各種ファイルが格納されているので、PCでGenesisコアを含めていくつかのゲーム機のコアやフリーソフトのROMイメージをmicroSDに入れ、ごく簡単な動作確認をした。

MiSTer FPGA でのメガドライブ用240p Test Suite

実際にはここで動作確認をするのではなくUpdateスクリプトを実行してからの方がよかったのだが、まぁ我慢できなかったのでいいかなと。

LANケーブルとキーボードを接続してからUpdateスクリプトを実行。DE10-Nano本体にUSB-A端子はないので、DE10-Nanoを購入するときにオプションでつけたmicroB – USB-A(メス)のUSB OTGケーブルを使っている。

Updateスクリプトの実行はこんな感じ。システムファイルの更新がされるだけでなく、各種アーケード基板や家庭用ゲーム機用の大量のコアがインストールされた。

MiSTer updateスクリプト実行中画面

ついでにScriptsにあるtimezone.shを実行したらトップページに表示されているシステム時刻が日本時間になった。


最小限のMiSTerセットアップと動作確認が済んだので、事前に購入していたパーツを取り付けた。

まずは初期セットアップ時に接続したUSB OTGケーブルを外し、MiSTer用のUSB HubをDE10-Nanoの下部に取り付ける。microUSBコネクタとUSB Hubの位置合わせを雑にするとピンが折れかねないので慎重にやった。なお、前記したように大容量電源はこの時点ではなかったので、Splitterは使わず、USB HubにはDE10-Nanoとは別の電源を使用した(あくまで暫定運用)。

その次にDE10-Nanoの上部にアナログタイプのIOボード を取り付けた。ピンを折らないよう、DE10-Nanoとの位置合わせに気を付けるだけで難しいところはない。

アナログタイプのIOボード(右)取り付け前

SDRAMも取り付けて、ケース以外の組み立ては完了。この時点でHDMI接続での動作確認を軽くした。

組み立て後のHDMI接続での動作確認

上記だとSNACも繋げているがそこはあまり重要じゃないので後ほど。

パーツ取り付け後のHDMI出力でのGENESISコアテスト

アナログ出力をするための設定変更をするため、一度MiSTerの電源を落としてmicroSDを取り出し、MiSTer.iniをPCで編集した。ここはscriptsからiniファイル編集スクリプトを使ってもよいことが後からわかったが、PCでの編集の方が自分には合っているかなと。

で、アナログ出力をするためのMiSTer.iniの変化所は以下。これで15kHz出力された。

direct_video=1
composite_sync=1
video_mode=6          ; 640x480@60Hz

接続はこんな感じ。ミニD-sub15ピン → SCARTでアナログ出力しgscartswに接続してブラウン管モニタとRetroTINK-5X Proに同時出力している。

ミニD-sub15ピン → SCARTでのアナログ出力例

ケース取り付け前に各種コアのテストをしつつ最終の動作確認をした。

まずはSMSコアのテストはコンゴ・ボンゴで。パレットの問題が起きないことも確認した。セガ・マークIIIソフトであるアレスタや、ゲームギアソフトであるGGアレスタIIなどの起動も確認している。

SMSコアの動作確認

メガCDコアのテストは電忍アレスタで。メガCDのBIOSは Mega EverDrive Pro で吸い出したアジア版MULTI-MEGAのBIOSを使っている(メガCD2のBIOSでもOKなことも確認済)。

MegaCDコアの動作確認

32XコアのテストはバーチャレーシングDXで。ROMイメージはRetrode2で吸い出している。

32Xコアの動作確認

NEOGEOコアのテストはティンクルスタースプライツで。ROMイメージは Humbleの “NEOGEO Classics Complete Collection”  のホワイトROMを使用している(これに限らず日本の法律で合法なROMしか使用していない)。

NEOGEOコアのセットアップはちょい癖があって動くまでに時間がかかったが、MiSTer NeoGeo Coreのドキュメントをしっかり読んで理解すればわかる問題でしかなかった。

NEOGEOコアの動作確認

uni-biosで動かす場合には余分なものも入っているが、games/NEOGEO 以下のシステムファイルはこれで動いた。romsets.xmlはドキュメントどおり、gog-romsets.xmlをリネームしたものを使っている。

games/NEOGEO

NESコアやSNESコアもSNACなしでの動作確認はOKだった。

今回家庭用セガハードのコアはSNACを使用し、他はSNACを使用していないが、SNACなしでもソフトウェアエミュレーションを使った現行機の移植タイトルより十分に低ラグに感じた。

このところミニハードが出るたびに遅延関係が大きなトピックになるのだが、自分は前から言っているようにソフトウェアエミュレーションでがんばるよりもFPGAベースに切り替えるのが問題の根本解決への一番の近道だと思っていて、いい方向に進んでいって欲しいと改めて思った。もちろんそれを商用で使えるようになるためにはいろんな障害があることは理解している(つもり)ではあるのだが、なんとかなっていって欲しいということで。


[関連記事]

Pocket