如何一劳永逸地为数十个模拟器整理 BIOS 文件
任何在 Steam Deck、老旧迷你 PC 或树莓派上搭建过复古游戏组合的人都知道这个流程。你安装了 Batocera、EmuDeck 或纯版 RetroArch,放入你最喜欢的 PlayStation 2 或世嘉土星游戏,启动 ROM,然后看到黑屏。日志显示缺少类似 scph1001.bin 或 saturn_bios.bin 的文件。
然后典型的寻找之旅开始了:你打开搜索引擎,找到满是广告的可疑网站,下载包含大量重复和垃圾文件的 50GB 压缩包。这些镜像文件有一半在名称上有拼写错误,校验和不匹配,模拟器不断崩溃。RetroBIOS 项目用工程化的方法解决了这个问题。
为什么模拟器文档经常有误
BIOS 文件的核心问题在于不同步。前端和 Shell 的作者(例如 Recalbox 或 Batocera)在 Wiki 中编写他们需要的文件列表。与此同时,模拟器核心开发者更新他们的代码库,改变文件名要求,添加对新芯片版本的支持,或修改硬件初始化算法。
结果是,前端的官方 BIOS 列表可能与模拟器二进制文件在启动时实际请求的内容不同步长达数年之久。
RetroBIOS 的创建者采用了不同的方法。他们不阅读过时的论坛和 Wiki 页面,而是直接分析模拟器源代码。如果一个 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 等数字保存数据库进行交叉引用。
特别值得关注的是所谓的差距分析。项目文档公开列出了数据库中尚未收录的内容:社区尚未物理创建的稀有镜像,或特定用户控制台的唯一加密密钥。
如何一条命令安装所有内容
为了快速设置,作者编写了安装脚本。它们自动检测你的操作系统,验证你已有文件的哈希值,并只下载缺失的内容。
对于 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
脚本验证文件的方式与你选择的 Shell 完全一致。例如,Batocera 检查每个文件的 MD5 哈希值,BizHawk 依赖 SHA1,而 RetroArch 只验证 system/ 文件夹中文件名的正确性。
通过 Python 构建自定义包
如果你不想拉取整个数 GB 的归档文件,而是为几个特定平台构建一个最小化系统,仓库中有方便的 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 许可证分发。系统文件和固件是第三方专有软件,因此根据允许个人备份和兼容性使用的条款分发。作者维护一个开放的 NOTICE 页面,包含权利持有人的删除请求表单。
发布版中超过 2 GB 的归档文件被拆分为卷 .zip.001 和 .zip.002。你可以用 7-Zip 解压它们,或在解压前用简单的 cat Pack.zip.0* > Pack.zip 命令在终端中合并它们。
值得一试吗
如果你有手持设备(Anbernic、Miyoo、Steam Deck)、树莓派上的复古构建,或者只是在工作 PC 上运行模拟器,请收藏这个仓库。
你将获得一个干净的集合,其中每个字节都根据模拟器自己的源代码进行了验证。脚本在几分钟内安装完成,节省了数小时的手动目录整理工作。
相关项目