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

コアになるのはDExx-vd_islでも使用したTerasic DE10-Nano で本当に最小限の環境ということだと、実はこれだけでもよかったりするが、便利に使うためにあれこれパーツもつけている。
自分の場合、MiSTerもクラシックゲーミングに使う環境に組み入れて、実機とガチ比較したかったのでアナログ出力する構成にしているが、これもあくまでオプションでしかない。自由度が高いぶん、どういう方針で何を揃えたらいいかは最初迷いやすいと思う。ただTwitterで先に導入している詳しい人からアドバイスをいただけたので何を揃えたらいいかはけっこうすぐにわかった。
パーツ自体は調べてみたら約4か月前に買いそろえていた。よく見るアルミニウムのケースも欲しかったのだが、売り切れていたのでアクリルケースにしている。
参考までに揃えたパーツ類の写真が見られるよう当時のTweetをリンクしておく。ただ、重複していたり、不要だったものも含まれているし、必須ではないけどあった方がいいからと追加オーダーしたものは含まれていないので注意して欲しい。いざセットアップを始める前にMiSTer WikiのHow to start with MiSTerを見たら「Upgraded Power Supply (recommended)」の記載があったので、慌てて電源を追加注文したくらいで完成形を目指すと必要なパーツは多く漏れがおきやすいが、とりあえずDE10-Nanoさえあればまずは始められるので、あまり気にせずスタートを切ることが重要だと思った。
で、3月に注文してからパーツが届くまで1か月前後かかった間に仕事がハードになって気持ちの余裕がなくなって放置していたのだが、Analogue Pocketの方でopenFPGAでMiSTerのNEOGEOコアが移植されている件をちょっと試してたら冷えた鉄が暖まってきて先週末にやっと試す気になれた。
ここからはセットアップしたときの簡単なメモを。これについては何を揃えてどう進めたらいいのか別記事にしたので、ここではどうあるべきかではなく、基本どう自分が進めたかで書いていく。
まず、MiSTer Wikiのセットアップガイド に従い、Mr. FusionのInstallerをダウンロードしてWin32 Disk Imager でmicroSDにFlash。前記microSDを素の状態のDE10-Nanoに入れて電源オン。下記でインストールが始まる。

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

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

実際にはここで動作確認をするのではなくUpdateスクリプトを実行してからの方がよかったのだが、まぁ我慢できなかったのでいいかなと。
LANケーブルとキーボードを接続してからUpdateスクリプトを実行。DE10-Nano本体にUSB-A端子はないので、DE10-Nanoを購入するときにオプションでつけたmicroB – USB-A(メス)のUSB OTGケーブルを使っている。
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との位置合わせに気を付けるだけで難しいところはない。

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

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

アナログ出力をするための設定変更をするため、一度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に同時出力している。

ケース取り付け前に各種コアのテストをしつつ最終の動作確認をした。
まずはSMSコアのテストはコンゴ・ボンゴで。パレットの問題が起きないことも確認した。セガ・マークIIIソフトであるアレスタや、ゲームギアソフトであるGGアレスタIIなどの起動も確認している。

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

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

NEOGEOコアのテストはティンクルスタースプライツで。ROMイメージは Humbleの “NEOGEO Classics Complete Collection” のホワイトROMを使用している(これに限らず日本の法律で合法なROMしか使用していない)。
NEOGEOコアのセットアップはちょい癖があって動くまでに時間がかかったが、MiSTer NeoGeo Coreのドキュメントをしっかり読んで理解すればわかる問題でしかなかった。

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

[2023-03-06追記]
推奨されているツールですべてNeoSD形式(*.neo)に変換するとromsets.xmlが必要なくなる上、HumbleのタイトルでMiSTerで使えるものが増えるメリットがあるのでやる価値があると思う。
NESコアやSNESコアもSNACなしでの動作確認はOKだった。
今回家庭用セガハードのコアはSNACを使用し、他はSNACを使用していないが、SNACなしでもソフトウェアエミュレーションを使った現行機の移植タイトルより十分に低ラグに感じた。
このところミニハードが出るたびに遅延関係が大きなトピックになるのだが、自分は前から言っているようにソフトウェアエミュレーションでがんばるよりもFPGAベースに切り替えるのが問題の根本解決への一番の近道だと思っていて、いい方向に進んでいって欲しいと改めて思った。もちろんそれを商用で使えるようになるためにはいろんな障害があることは理解している(つもり)ではあるのだが、なんとかなっていって欲しいということで。
[2022-11-16追記]
GENESIS Coreで使用するセーブデータは8bit形式だが、Retrode2/FlashKit-MD/RetroFreakDumperなどでは16bit形式でDumpされるので、MiSTerで使うためには16to8.exeなどでコンバートしてやる必要があった。SRAMの拡張子はこれに限らずsavで。
情報元: Convert Mega Everdrive saves for MiSTer Genesis Core? : MiSTerProject (reddit.com)
[関連サイト]
[関連記事]