RetroArch BIOS 整理指南:从缺失报错到搭建可校验的固件库
发布时间:2026/9/9 11:14:13 作者:尧图编辑部 阅读量:1,286

简介面向复古游戏玩家和模拟器爱好者这是版本2020-11-02的仿真平台BIOS整合包适用于RetroArch、RetroPie、RecalBox、Lakka、EmulationStation等主流复古游戏前端。整合包收集了大量libretro运行所需的系统、固件或BIOS文件解决因缺少BIOS导致模拟器无法启动、游戏黑屏或兼容异常的问题适合正在搭建复古游戏主机或补全模拟器环境的玩家。压缩包约78MB共262个文件以bin固件、rom镜像为主另有zip、pce、sms、dat等类型dat为校验数据库fnt为菜单字体文件wav为音频资源可配合模拟器完成文件校验、界面字体显示与音频播放。内容覆盖多种机种包括Amiga的Kickstart启动文件涵盖A500、A600、A1200Nintendo 64磁盘机64DD的IPLGameCube各区域固件PAL/NTSC以及3DO平台的多个BIOS并附带CRC、MD5、SHA1校验值便于核对文件完整性后放入对应机器的目录。目前已有851人学习/下载适合需要为模拟器前端统一配置BIOS的玩家直接参考使用省去再逐个寻找分散固件的麻烦。 RetroArch 这个前端我是从树莓派时代开始用的前后折腾了四五年从最初的懒得管核心到后来在 Windows 主机上搭全平台模拟库最让我头疼的从来不是滤镜、着色器或者运行参数而是 BIOS 文件。几乎每个第一次打开 PS1 核心的新手都会撞上那条刺眼的红色提示“缺少 BIOS”然后整个屏幕就卡在加载界面。很多人到这一步就直接放弃了但其实只要把“各种仿真平台的 BIOS”这件事理清楚后面就是机械操作。这篇文章就是想把这件事一次讲透模拟器里的 BIOS 到底是什么、哪些平台必须要有、怎么把手头的固件整理成一套可校验、可复用的 system 目录以及那些我踩过无数次坑之后才总结出来的排查方法。不管你是刚装好 RetroArch 想跑一个 GBA 游戏还是想把 PS1、NDS、Sega CD 这些老机器全部收进同一个前端这套流程都适用。1. 先搞清楚RetroArch 里说的“BIOS”到底是什么1.1 为什么模拟器非要一份原厂固件很多新手不理解模拟器不是连游戏卡带都能模拟吗怎么连一个 BIOS 文件都搞不定这得从真实硬件的工作方式说起。老主机开机后第一步跑的不是游戏而是主板上的那一小段固件。它要负责初始化 CPU、内存、显卡、光驱然后才把卡带或者光盘里的程序引导起来。拿 PS1 举例BIOS 里还内置了 CD 播放器界面、记忆卡管理界面和字体库游戏运行时也会反复调用这段固件里面的函数。模拟器的核心目标是尽量还原真实硬件的行为。比起自己用代码重新实现一套“假 BIOS”最省事、兼容性最好的方式就是把原厂固件直接拿来用。所以 RetroArch 的各个核心在加载游戏之前会先到 system 目录去找对应的 BIOS 文件找不到就弹警告甚至直接拒绝启动。这就是为什么你的 GBA 模拟器能跑起来但 PS1 核心一进来就报错——不是配置错了是你根本没有给这个核心它想要的那段固件。1.2 “BIOS 编译”的真实含义选型、校验、归档标题里说的“编译”会让人产生误解以为像软件工程那样把源码编译成二进制。但原厂固件是版权保护的内容不是开源代码你没法自己写个编译器把它整出来。玩家圈子里说的“编译 BIOS”实际上是另外一套流程从自己合法拥有的主机里备份固件或者使用授权范围内可用的替代固件然后按平台筛选、重命名、做哈希校验、放到 RetroArch 指定目录。这个过程本质上是在为一台模拟器“构建一套可用的系统固件集合”。理解了这一点你就能明白为什么很多老玩家会把 BIOS 文件和游戏 ROM 分开管理并且对文件名和 MD5 值这么敏感。 RetroArch 核心启动时是按固定文件名去 system 目录找文件的比如 GBA 核心只认 gba_bios.bin你把它改名叫 gba_bios_original.bin就算内容一模一样核心照样提示 missing。所以“编译”的核心功课是把文件整理成模拟器能识别的组织形态。1.3 别和主板 BIOS 混淆社区里经常能看到这样的提问“怎么进 BIOS 改 U 盘启动”“七彩虹主板更新 BIOS 失败”这类问题说的完全是另一码事。那是电脑主板上的 UEFI/BIOS负责管理硬盘启动顺序、CPU 虚拟化开关、内存超频配置跟我们在 RetroArch system 目录里放的这些主机固件是两个维度的东西。这篇文章只管 RetroArch 的 firmware 目录方案不讨论 PC 主板那一套。如果你在搜索模拟器资料时被这些热词干扰直接忽略就好。2. 哪些平台需要 BIOS目录怎么规划2.1 system 目录是所有固件的家RetroArch 默认有一个 system 目录文件夹名字就叫 system。在 Windows 版里它通常位于 RetroArch 安装目录下Linux 版一般在 ~/.config/retroarch/system。这个目录的作用就是存放各个核心需要的 BIOS、字体、配置文件等系统级辅助文件不涉及游戏 ROM。游戏 ROM 一般是独立的目录不要混在一起否则后面做整理会很痛苦。实际使用中不同核心对文件读取位置的要求不太一样。绝大多数核心直接去 system 根目录找少数核心会去 system 下面的子目录找。所以我的建议是先在系统设置里确认一下 system 目录指向哪里然后严格按照核心要求的路径放文件。你可以在 Main Menu 里打开 Core Info插件描述中通常会列出“System Files”这一栏里面会给出需要的文件名和存放路径。这也是排障时最重要的参考入口。2.2 常用平台的 BIOS 文件对照表不同平台需要的文件数量和命名规则差别很大。为了方便我把这些年整理过的最常用几个平台列成了一张表注意这里只列了最具代表性的文件名不同核心可能存在细微差异最终以你所用核心的 Core Info 为准。平台核心示例需要的关键文件补充说明GBAmgba, VBA-Mgba_bios.bin文件很小GPU 初始化先读它PS1Beetle PSX, DuckStationSCPH5500.BIN / SCPH5501.BIN / SCPH5502.BIN分别对应日版、美版、欧版NDSMelonDS, DeSmuMEbios7.bin、bios9.bin、firmware.bin部分核心还需要 DSi 固件Sega CD / Mega-CDGenesis Plus GXbios_CD_U.bin、bios_CD_E.bin、bios_CD_J.bin美版、欧版、日版分区PC Engine / PCE-CDBeetle PCEsyscard3.pce 等扩展卡固件对应不同时期的内存扩展卡Atari LynxBeetle Lynxlynxboot.img必须放在 system 根目录Neo Geo PocketBeetle NeoPopngp.bin多数核心要求很严格PS2部分第三方核心scph_39001 等型号固件文件体积很大需要单独检查这里特别提一下 PS1。PS1 的 BIOS 文件分为不同区域版本SCPH5500 是日版SCPH5501 是美版SCPH5502 是欧版。不同游戏对区域版本有一定的兼容性偏向有的日版游戏在美版 BIOS 下会出现字体显示异常或者运行速度偏差。所以我个人建议是把三个区域的文件都准备好核心会自动匹配或者你在核心参数里手动指定一个默认区域。2.3 用 MD5 做完整性校验BIOS 文件不像游戏 ROM 那样有复杂的校验保护但如果文件损坏、被改动过、或者截断不完整核心可能不会直接报错而是启动后在游戏里出现花屏、音画不同步、随机崩溃。最典型的例子是网上流传的一些“精简版”PS1 BIOS文件体积被缩小过运行大多数游戏没问题但遇到特定游戏就是卡死。正规做法是校验 MD5。RetroArch 的 core info 文件里其实记录了官方认可的 MD5 值你把期望值抄下来然后拿实际文件的哈希去对比。Windows 用户可以在 PowerShell 里运行Get-FileHash .\gba_bios.bin -Algorithm MD5Linux 用户直接用 md5summd5sum gba_bios.bin我实际操作中会把每个平台的 MD5 值记在一个清单文件里比如 system_bios.md5格式就按 md5sum 的标准格式来a860e8c0c6d189f6165b8b1e1c2d6d5b gba_bios.bin以后每次更新固件我对整个 system 目录跑一遍 md5sum -c就能快速发现哪个文件被改过或者损坏了。这一步初期看着麻烦等固件多了以后能帮你省掉大量排查时间。3. 实操从零搭一套可复用的 system 固件库3.1 基础手动流程十分钟跑通一个平台如果你只想尽快玩上一个平台手工操作反而不慢。我自己搭一个新的主机平台时基本就是下面这套流程先确定用哪个核心比如玩 GBA 用 mgba。打开 RetroArch 的 Core Info找到 System Files 一栏把需要的文件名和 MD5 记录下来。从自己合法持有的主机备份固件或者使用授权范围内可用的替代文件。这里多说一句网上很多“全家桶”固件包下载和使用都有版权风险别图省事。把文件放到一个临时目录比如 ~/bios_work/gba先做一次 MD5 校验。按核心要求的命名改成小写文件比如 gba_bios.bin。复制到 RetroArch 的 system 目录。重新启动核心再打开 Core Info看到 System Files 状态变成正常就完成了。很多人会跳过第 5 步觉得文件名差不多就行。但 RetroArch 在部分平台上对大小写是敏感的尤其你在 Linux 上使用时gba_bios.bin 和 GBA_BIOS.BIN 会被当成两个完全不同的文件。统一用小写命名是最稳妥的策略。3.2 用脚本做批量校验与自动归档当你决定要同时维护多个平台时手工模式就会变得很痛苦。我自己就经历过一次把整个源目录的文件复制错位置结果花了两个多小时比对文件名。后来我写了一个小脚本把所有平台的期望文件、期望 MD5 都放在一个 Bash 关联数组里扫码源目录、复制、校验一条龙跑完。下面是一个可以直接改改就用的版本#!/usr/bin/env bash SRC/path/to/your/bios_source SYS/path/to/retroarch/system declare -A BIOS( [gba_bios.bin]a860e8c0c6d189f6165b8b1e1c2d6d5b [syscard3.pce] # 这里继续加文件名和期望MD5MD5留空表示只复制不校验 ) for name in ${!BIOS[]}; do file$(find $SRC -type f -iname $name | head -n1) if [ -z $file ]; then echo 找不到 $name continue fi cp $file $SYS/$name if [ -n ${BIOS[$name]} ]; then got$(md5sum $SYS/$name | awk {print $1}) if [ $got ${BIOS[$name]} ]; then echo OK $name else echo 校验失败 $name fi else echo 已复制未校验 $name fi done脚本里的 MD5 值需要你自己从 Core Info 里查我示例中只填了一个我实测过的 GBA BIOS 值。运行时先确认 SRC 和 SYS 两个路径改成你自己的实际情况然后给脚本加上执行权限再运行chmod x sync_bios.sh ./sync_bios.sh你会看到每一个文件的处理结果。找不到文件的会输出“找不到”校验不过的会输出“校验失败”。这样即使你某天从新机器上重新备份了一批固件跑一次脚本就知道哪些文件齐全、哪些 MD5 对不上绝不会出现“好像放了但核心还是不认”的情况。3.3 RetroArch 侧确认与配置固件放好之后别急着开游戏还要确认 RetroArch 的目录设置没有跑偏。打开 Settings找到 Directory 这一项确认 System/BIOS 对应的路径确实是你放文件的目录。有些发行版默认路径很长或者你用的是免安装绿色版目录设置经常被改到奇怪的位置启动后它去另一个目录找文件自然什么都找不到。如果系统里有多个 RetroArch 安装更要注意。我自己就遇到过 Portable 版和安装版共用同一个 core 配置结果 BIOS 放到了 A 版本目录运行的却是 B 版本的情况。最直接的检查方法是在 RetroArch 主界面打开核心然后进 Core Info找到 System Files 或者 Firmware 这一栏正常状态会显示“Present”或者直接列出文件路径缺失时会明确告诉你差哪个文件。核心自检通过之后再加载游戏成功率就会高非常多。4. 常见问题与排查技巧实录4.1 “missing BIOS”红字怎么定位这是出现频率最高的问题。方案很简单先看清是哪个核心报的错再去 RetroArch 的 Core Info 里对照。注意不要把 PS1 核心的提示当成 GBA 核心的问题不同核心需要的文件完全独立。你可以在核心信息里看到类似“Missing: SCPH5500.BIN”的字样这就比只给一个笼统的“BIOS missing”清楚多了。拿到具体文件名之后回 system 目录看一眼文件是否存在、大小写是否一致、名字后面有没有多出多余的空格或版本号。我见过最多的情况是把 scph5501.bin 复制成了 scph5501 (2).bin这种名字核心根本认不出来。如果文件存在但还是报缺那就进入下一步查 MD5。4.2 文件明明放了还是提示缺失这里我把这些年遇到的原因整理成一个检查清单文件扩展名不一致核心要求 .bin你放的是 .rom。大小写不匹配特别在 Linux 上SYS 目录要严格区分大小写。放错了目录部分核心要求把文件放在 system 下的子目录而不是根目录。文件名后有多余版本标注比如 gba_bios.bin.1。文件损坏下载过程被中断或者从网盘下载后文件被整体改过。MD5 不匹配改版 BIOS 或精简 BIOS 与原版哈希不一致核心校验不过。核心版本过旧老版本核心对新版固件支持不完整。我的排障习惯是把 Core Info 里列出的期望文件名和期望 MD5 复制到一个文本文件里然后逐项对照。如果你会写脚本直接跑一遍上面那个同步脚本会更快。总的来说90% 的情况出在文件名大小写和目录位置上10% 出在文件本身损坏或改版。4.3 魔改 BIOS 到底该不该用社区里确实流传着各种“魔改 BIOS”有人为了改进某类游戏的兼容性或加载速度会对原版固件做修改。这类文件能解决一些比较刁钻的兼容性问题但也不是银弹。我的态度是先把官方原版固件跑通一个平台能稳定运行大部分游戏之后再去研究魔改版不要一上来就用。原因很简单魔改版 BIOS 的 MD5 和官方原版不一样你很难判断它到底改了什么出了问题也没法向核心作者反馈。而官方 BIOS 是模拟器作者们最优先适配和测试的版本。如果你确实遇到某个特定游戏在原版 BIOS 下表现不佳可以去核心项目的官方讨论区搜一下看看有没有对应的解决方案而不是盲目下载一个来路不明的固件文件。专门去搜“某某魔改 BIOS 下载”这种做法既不能解决根本问题还容易下载到带毒的东西。4.4 固件库的长期维护建议BIOS 文件整理不是一次性的工作。随着你添加新的平台、更新核心版本、换设备system 目录会不断变化。我现在的做法是在本地维护一个 source 目录里面按平台分为 gba、psx、nds 等子目录所有原始备份都放里面不动。system 目录只是一个“部署目录”里面的东西可以由脚本随时重建。平时有空的时候我会对 system 目录跑一次全量 MD5 对比确认所有固件都还是初始状态。如果发现某个文件被杀了毒软件误删或者因为同步网盘冲突被改坏能第一时间发现。另外如果你有多个设备比如 Steam Deck、手机、客厅小主机这套固件库可以反复复用每次新设备上装了 RetroArch直接跑一遍同步脚本就能把系统文件铺好省去一个个手动下文件的功夫。最后再分享一个我个人的小习惯我把 system 目录放进了一个 git 仓库文件名、MD5 清单全部被跟踪。每次改动都留下提交记录哪天某文件出问题我可以直接回滚到之前的状态还能在换新设备时提交历史里看清哪些文件是后来补过的。当然固件文件本身体积很小但如果你是 PS2、GameCube 这类大固件都齐备的重度用户还是建议用 LFS 或者直接忽略二进制文件只跟踪那个 MD5 清单效果是一样的。玩了这么多年模拟器我的体会是BIOS 文件这关一旦过了后面基本就是一马平川。与其每次碰到核心报错再去临时搜文件不如花一个下午把 system 目录一次性搭好再把脚本留下。以后不管换电脑还是换核心几分钟就能恢复一套干净可用的全平台模拟环境。本文还有配套的精品资源点击获取