数十のエミュレータ向けBIOSを一括整理する方法
Steam Deck、旧型のミニPC、Raspberry Piでレトロゲーム環境を構築したことのある人なら 누구나、この手順を知っているはずです。Batocera、EmuDeck、または純粋なRetroArchをインストールし、PlayStation 2やSega Saturnのお気に入りのゲームを配置し、ROMを起動すると、黒い画面が表示される。そしてログには、scph1001.binやsaturn_bios.binのようなファイルが欠落しているというメッセージが残っています。
ここから典型的な旅が始まります:検索エンジンで怪しい広告だらけのサイトを探し、50ギガバイトものアーカイブをダウンロードします。中には重複や不要ファイルが大量にあり、半分以上のダンプはファイル名が間違っていて、チェックサムが一致せず、エミュレータがクラッシュし続ける。RetroBIOSプロジェクトは、この問題にエンジニアリング的なアプローチで挑んでいます。
なぜエミュレータのドキュメントは頻繁に嘘をつくのか
BIOSファイルの主な問題は、同期はずれです。フロントエンドやシェルの作者(例えばRecalboxやBatocera)は、ウィキ>Required<に必須ファイルのリストを記述します。一方、エミュレータコアの開発者はコードベースを更新し、ファイル名の要件を変更したり、新しいチップリビジョンのサポートを追加したり、ハードウェアの初期化アルゴリズムを変更したりします。
結果として、フロントエンドの公式BIOSリストは、エミュレータバイナリが起動時に実際に要求する内容と、何年も同期がずれたままになることがあります。
RetroBIOSの作者たちは異なるアプローチを取りました。古いフォーラムやウィキページを読む代わりに、エミュレータのソースコードを直接解析します。Libretroコアやスタンドアロンエミュレータが、特定のサイズで特定のMD5ハッシュを持つファイルを検索する場合、その事実を唯一の信頼できる情報源として記録します。
プロジェクトの中身
このリポジトリには、巨大なメタデータベース、検証スクリプト、12の人気のプラットフォーム向けのすぐに使えるシステムファイルセットが組み込まれています:Batocera、BizHawk、EmuDeck、Lakka、MiSTer FPGA、ROCKNIX、Recalbox、RetroArch、RetroBat、RetroDECK、RetroPie、RomM。
行われた作業の規模は、数字だけでも印象的です:
- ソースから解析された436のエミュレータ
- 463のゲームシステム(古代のAtariやZX SpectrumからPS3、Nintendo Switchまで)
- 8,925のファイルがデータベースに収録(システムファームウェア、アーケードROM、システムフォントを含む)
- 各ファイルに対して5種類のチェックサム(MD5、SHA1、SHA256、CRC32、Adler-32)
プロジェクトの開発者はまた、システムダンプをNo-Intro、Redump、TOSECなどのデジタル保存データベースと相互参照しています。
特に興味深いのはいわゆるギャップ分析です。プロジェクトのドキュメントには、データベースにまだ含まれていない内容が公然とリストされています:コミュニティがまだ物理的に作成していない珍しいダンプや、特定のユーザーコンソール用の固有の暗号化キーです。
1コマンドで全てをインストールする方法
クイックセットアップのために、作者たちはインストールスクリプトを書きました。これらはオペレーティングシステムを自動検出 し、既に持っているファイルのハッシュを検証し、不足分だけをダウンロードします。
Linux、macOS、Steam Deckの場合は、ターミナルで以下を実行するだけです:
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
WindowsではPowerShellを使用します:
irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
コンピュータから直接ハンドヘルドコンソール用のSDカードを設定している場合、ターゲットパスとプラットフォームを引数として渡せます:
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard
スクリプトは、選択したシェルが実際に行うのと同じ方法でファイルを検証します。例えば、Batoceraは各ファイルのMD5ハッシュをチェックし、BizHawkはSHA1に依存し、RetroArchはsystem/フォルダ内のファイル名の正しさだけを検証します。
Pythonでカスタムパックをビルドする
数ギガバイトのアーカイブ全体を引っ張ってきたくなくて、いくつかの特定のプラットフォーム向けのミニマルなシステムを構築している場合、リポジトリには便利なCLIツールがあります。Python 3とpyyamlライブラリだけがが必要です。
Dolphinエミュレータ専用のパッケージをビルド:
python scripts/generate_pack.py --emulator dolphin
PlayStation 2専用のファイルセットを生成:
python scripts/generate_pack.py --system sony-playstation-2
利用可能なプラットフォームとコアのリストを表示:
python scripts/generate_pack.py --list-emulators
python scripts/generate_pack.py --list-systems
検証スクリプトもあります。既存のBIOSディレクトリをスキャンして詳細なレポートを生成します:どのファイルが配置されているか、ハッシュが破損している場所、特定のゲームを実行するために不足しているダンプはどれか。
python scripts/verify.py --platform batocera
python scripts/verify.py --emulator flycast
開発者向けのオープンデータ
RetroBIOSは、すぐに使えるファイルのソースとしてだけでなく、構造化されたデータベースとしても便利です。ドキュメントサイトでは、作者たちはJSON、CSV、SQLite形式でエクスポートを公開しており、すべてのハッシュ、パス、エミュレータの依存関係を含んでいます。
独自のランチャー、ROMマネージャー、ハンドヘルド向けカスタムLinuxビルドを作成している場合、これらのファイルは数百のコアソースを手動でパースする手間を省いてくれます。コミュニティはすでにこのデータを基にしたユーティリティの構築を開始しています。例えば、ホームアーカイブを整理するためのスキャナーなどがそうです。
ニュアンスとライセンス
スクリプトのソースコードとビルドユーティリティはMITライセンスで配布されています。システムファイルとファームウェアはサードパーティのproprietaryソフトウェア,因此它们根据允许个人备份和兼容性使用的条款分发。 作者们在NOTICE页面保持开放状态,提供权利持有人的删除请求表单。
リリース内の2GBを超えるアーカイブは、.zip.001と.zip.002のボリュームに分割されています。7-Zipで展開するか、展開前にターミナルでシンプルなcat Pack.zip.0* > Pack.zipコマンドで連結してから解凍できます。
試す価値はあるか
ハンドヘルドコンソール(Anbernic、Miyoo、Steam Deck)、Raspberry Piでのレトロビルド、または仕事用のPCでエミュレータを動かしているなら、このリポジトリをブックマークしておきましょう。
乱雑なフォーラムアーカイブ探しの代わりに、すべてのバイトがエミュレータ自身のソースコードに対して検証されたクリーンなコレクションが手に入ります。スクリプトは数分でインストールされ、手動でのディレクトリ整理を何時間も節約できます。
関連プロジェクト