📖 本文由 Batocera 官方 Wiki 翻译整理,内容可能随版本更新而变化。
游戏光盘镜像压缩指南
在玩第五代和第六代游戏机(如 PS1、SS、PS2、GC 等)时,游戏数据通常存储在 CD 或 DVD 光盘里。
光盘的容量跨度很大:从 700MB(CD)、1.4GB(GC 专用迷你 DVD)、4.7GB(单层 DVD)甚至到新系统的 25GB(蓝光光盘)。
有趣的是,很多游戏实际占用的空间极小,光盘剩下的部分往往填满了无意义的“垃圾数据(Dummy Data)”,这在当年是为了让光盘驱动器的激光头读取更顺畅。
生活化类比: 这就像你买了一大盒精装巧克力,盒子里塞满了支撑用的泡沫垫,其实真正的巧克力可能只占一个小角落。
为什么要压缩光盘镜像?
压缩光盘镜像(Disc image compression)不仅能帮你节省海量硬盘空间,还能让模拟器的加载速度变快。
- 节省空间: 以 Wii 上的《超级马力欧 25 周年纪念版》为例,整张光盘有 4.7GB,但实际游戏数据只是一个 12MB 的超任(SNES)游戏镜像。通过压缩,你可以省下超过 99% 的空间!
- 整理库文件: 像索尼 PlayStation 这样使用多轨道镜像(包含一堆
*.bin和*.cue文件)的系统,在 Batocera 等模拟前端里管理起来非常麻烦。
如果你不喜欢折腾命令行工具(Command line tools),可以选择带界面的图形化辅助工具(GUI-based helper tools):
* Windows 用户: 推荐使用 namDHC
* Linux 用户: 推荐使用 game-converter
CHD:光盘界的压缩“黑科技”
CHD 是“压缩数据块(Compressed Hunks of Data)”的缩写。这是一种无损压缩格式(Lossless compression format),最初是为 MAME 模拟器开发的,现在已成为存储光盘游戏的首选方案。它能把杂乱的光盘文件打包成一个清爽的 .chd 文件。
让我们来看看它和传统的 7z 压缩包的对比(以一个原始大小 700MB 的镜像为例):
| 格式 | 压缩后大小 |
|---|---|
| 7z 压缩包 | 约 420 MB |
| CHD 镜像 | 约 360 MB |
【提示】 CHD 竟然比 7z 还要多省下 60MB!这简直像魔法一样,而且最重要的是,模拟器可以直接读取 CHD 文件,无需像 7z 那样先解压再运行。
如何操作?
第一步: 下载并安装对应的压缩工具(如上文提到的 namDHC)。
第二步: 将你原始的 *.bin / *.cue 或 *.iso 镜像拖入工具中。
第三步: 选择转换为 CHD 格式并开始处理。
第四步: 处理完成后,将生成的 .chd 文件放入 Batocera 对应的 ROM 文件夹即可。
【注意】 在转换前,请确保原始镜像的完整性,否则转换后的文件可能会导致模拟器运行崩溃。
CHD 格式:哪些系统支持它?
CHD 格式是光盘游戏的“理想伴侣”,我们强烈建议在以下系统中使用它:
- 3DO
- Dreamcast(DC)
- Mega-CD
- Neo Geo CD
- PC Engine CD
- PlayStation 1 (PSX)
- PlayStation 2 (PS2)(自 Batocera v31 版本起支持)
- Saturn(土星)
【注意】关于防盗版文件的特殊说明:
如果你手头有一些带有 LibCrypt 复制保护(LibCrypt copy protection) 的欧版(PAL)PS1 游戏,你通常会发现除了 .bin/.cue 文件外,还有一个 .sbi 文件。由于 CHD 转换过程中不会处理 .sbi 文件,第一步转换完成后,第二步你必须手动将这个 .sbi 文件移动到与 .chd 文件相同的目录下,否则游戏将无法正常运行。
如何获取转换工具:chdman
chdman 是由 MAME 项目开发的一款专业转换程序。根据你使用的操作系统不同,安装方式也有所区别:
1. Batocera 系统
你不需要额外安装,因为它已经内置在系统中了。
* 操作方法: 你需要通过命令行界面(Command Line Interface)来调用它。在终端中输入 /usr/bin/MAME/chdman 即可。
2. Windows 系统
- 操作方法: 下载官方的 MAME 压缩包,使用 7-zip 等解压软件像打开文件夹一样打开它,从中找到
chdman.exe并解压出来即可使用。
3. Linux 系统
- 操作方法: 在大多数发行版中,你只需要安装
MAME-tools软件包即可。
4. macOS 系统
- 操作方法: 使用 Homebrew(macOS 的包管理器)安装
rom-tools软件包。
开始制作 CHD 镜像
chdman 是一个命令行工具,它可以处理 .cue、.iso、.nrg 或 .gdi 等多种原始镜像格式。
生活化类比: 这就像是把散装的零件(.bin 和 .cue)放进一个自动打包机,最后吐出一个整齐的礼盒(.chd)。
操作建议:
* 优先选择: 如果你的游戏文件夹里有 .cue 文件,请务必将其作为转换目标。
* 其他情况: 如果没有 .cue,则选择 .iso(适用于 PS2 的 DVD 镜像)或 .gdi(适用于 Dreamcast 镜像)。
* 【提示】: GameCube 和 Wii 系统并不使用 CHD,它们有自己专属的压缩格式。
第一步: 准备好你的原始镜像文件。
第二步: 打开终端或命令提示符,定位到工具所在目录。
第三步: 运行转换命令,将杂乱的多个文件合并为一个简洁的 .chd 文件。
手动制作 CHD 镜像:分步指南
要把零散的游戏镜像打包成 CHD 格式,你需要使用命令行工具。
生活化类比: 这就像是把散落一地的积木(.bin 和 .cue 文件)收进一个专用的收纳盒(.chd)。收纳盒不仅更整齐,还能通过“真空压缩”节省空间,而且随时可以把积木原样倒出来。
基础转换步骤
第一步:准备环境
在 Windows 上打开 命令提示符(cmd.exe),或者在 Linux/macOS 上打开你喜欢的 终端(Terminal)。
第二步:整理文件
将 chdman 程序和游戏文件放在同一个文件夹内。例如,你的文件夹路径是 /totally-rad-folder-name/,结构如下:
/totally-rad-folder-name/
├─ chdman (转换程序)
├─ Spiderman.cue (引导文件)
└─ Spiderman.bin (数据文件)
第三步:定位到目标文件夹
在终端中输入以下命令切换目录:
cd /totally-rad-folder-name
第四步:运行转换命令
输入以下指令开始打包:
chdman createcd -i Spiderman.cue -o Spiderman.chd
第五步:耐心等待
这时候你可以去给自己倒杯茶了。转换过程会消耗一定时间,具体取决于镜像的大小。
第六步:清理现场
一旦看到生成的 .chd 文件,你就可以放心地删除原来的 *.cue/*.bin、*.iso、.nrg 或 *.gdi 等原始文件了。
进阶技巧与注意事项
-
无损还原:
因为这种压缩是 完全无损(Lossless) 的,如果你以后需要找回原始文件,可以运行以下命令“拆盒”:
chdman extractcd -i <文件名.chd> -o <文件名.cue> -
DVD 专属优化:
如果是针对 PS2 等 基于 DVD 的系统(DVD-based systems),建议将命令中的createcd替换为createdvd。
【提示】: 这样做通常能多省下 7-10% 的空间,而且游戏运行时的性能表现也会更好。
CHD 批量转换工具
如果你有海量的游戏镜像,一个一个手动输入命令太枯燥了。你可以使用脚本进行批量处理。
Linux/macOS 用户
第一步:准备脚本
在存放 ROM 文件的文件夹中创建一个脚本文件(如 allimg-to-chd.sh),并将下面的代码粘贴进去:
#!/usr/bin/env -S bash
# 脚本自修复:防止 Windows 换行符导致错误
grep -rlq $'\r' "$0" && { dos2unix -k -q "$0"; echo "脚本已修复 ... 请重试"; exit 0; }
pushd "$(dirname "$0")"
# 扫描当前文件夹下的常用镜像格式
readarray -t array < <(find -maxdepth 1 -type f ( -iname "*.cue" -o -iname "*.iso" -o -iname "*.toc" -o -iname "*.gdi" -o -iname "*.nrg" ) -printf "%p\n")
第二步:执行脚本
在终端运行该脚本,然后放松一下。脚本会自动帮你把文件夹里所有的 .cue、.iso 等格式转换成 CHD。
【提示】: 如果你的镜像格式不在上述列表中,只需根据需要修改脚本中的后缀名即可。
接上一节的脚本内容,如果你正在使用 Linux 或 macOS,以下是脚本的剩余逻辑以及更简单的命令行方案:
# 如果没找到任何镜像,脚本会自动退出
[ -z "${array[@]}" ] && { echo "未找到磁盘镜像文件.... 退出脚本"; exit; }
# 检查系统中是否存在 chdman 工具
[ -f "/usr/bin/MAME/chdman" ] || { echo "未找到 chdman!... 退出脚本"; exit; }
# 开始循环转换每一个找到的游戏文件
for i in "${array[@]}"; do
/usr/bin/MAME/chdman createcd -i "${i}" -o "${i%.*}.chd";
echo; echo "转换完成!你可以根据需要删除原始文件: $i 及其附属文件。"
done
popd
【提示】: 如果你要转换的文件非常多,这时候可以去练几组瑜伽动作,因为这确实需要不少时间。
进阶:使用“一键命令”进行深度扫描转换
如果你想一次性把当前文件夹及其子文件夹里所有的镜像都转成 CHD,可以使用 递归查找命令(find command)。
生活化类比: 这就像是雇佣了一个超级管家,他不仅会检查客厅,还会钻进每一个房间的抽屉里,把所有符合要求的零散物件全部打包好。
- 转换所有 .cue 文件:
find . -name "*cue" -exec chdman createcd -i {} -o {}.chd ; - 转换所有 .iso 文件:
find . -name "*iso" -exec chdman createcd -i {} -o {}.chd ; - 转换所有 .gdi 文件:
find . -name "*gdi" -exec chdman createcd -i {} -o {}.chd ; - 转换所有 .toc 文件:
find . -name "*toc" -exec chdman createcd -i {} -o {}.chd ;
Windows 用户的“懒人工具”:批处理脚本
Windows 用户不需要输入复杂的代码,只需要利用 批处理脚本(BAT scripts) 即可实现双击转换。
第一步: 将 chdman.exe 文件放入存放镜像的文件夹中。
第二步: 在该文件夹内新建一个文本文件,重命名为 convert.bat(确保后缀是 .bat 而不是 .txt)。
第三步: 根据你的文件类型,将以下代码粘贴进脚本并保存:
- 针对 .cue 文件:
batch
for /r %%i in (*.cue) do chdman createcd -i "%%i" -o "%%~ni.chd" - 针对 .iso 文件:
batch
for /r %%i in (*.iso) do chdman createcd -i "%%i" -o "%%~ni.chd" - 针对 .gdi 文件:
batch
for /r %%i in (*.gdi) do chdman createcd -i "%%i" -o "%%~ni.chd" - 最强全能版(一次性转换所有格式):
batch
for /r %%i in (*.cue, *.gdi, *.iso, *.toc) do chdman createcd -i "%%i" -o "%%~ni.chd"
第四步: 双击运行这个 .bat 文件,系统就会自动开始忙碌的打包工作了!
更多格式转换:CDI、NRG 与 CSO 压缩指南
如果你有一大堆文件需要转换,不妨拿起吉他弹上几曲。这个过程可能比较漫长,请保持耐心。
转换 CDI / NRG / IMG 格式为 CHD
对于早期的光盘镜像格式,如 .cdi(常见于 Dreamcast 游戏)、.nrg 或 .img,你可以使用老版本的转换工具进行处理。
【注意】版本兼容性:
* chdman 0.138b 及以下版本:支持将 .cdi 转换为 CHD,但需要一个名为 cdifile 的额外执行文件配合。
* chdman 0.139 及以上版本:不再兼容 cdifile。
操作步骤:
第一步: 将 chdman.exe 和 cdifile.exe 放到同一个文件夹中。
第二步: 根据你的文件类型,在命令行中输入对应的指令(以 Windows 为例):
cdifile.exe game.cdi -createcd
cdifile.exe game.nrg -createcd
cdifile.exe game.cue -createcd
cdifile.exe game.img -createcd
【提示】: 如果你在使用 Linux 系统,这些命令也可以通过 WINE 环境(Wine Is Not an Emulator) 顺利运行。
【注意】: 在删除原始文件之前,最好先启动游戏测试一下转换后的镜像是否能正常运行。
CSO:PSP 玩家的压缩利器
CSO 是“压缩 ISO(Compressed ISO)”的缩写,有时也被称为 CISO。
生活化类比: 如果说 ISO 是原封不动的游戏光盘镜像,那么 CSO 就像是被抽真空后的“压缩包”,它剔除了冗余空间,让文件变得更苗条。
它最初是专门为 PlayStation Portable (PSP) 的 UMD 光盘镜像设计的压缩方案。
支持的系统:
CSO 格式被多个系统支持,在以下情况下它是推荐使用的格式:
* PlayStation 2 (PS2):在 Batocera v31 版本之前推荐使用。
* PSP:核心支持格式。
【提示】: 虽然 Wii 和 GameCube 也支持一种叫 CSO/CISO 的格式,但那与这里介绍的压缩方法完全不同。如果你需要处理任天堂系统的镜像,请查阅 Wiimms ISO 工具(wit) 的相关文档。
如何制作 CSO 镜像
我们可以使用 MaxCSO 工具来完成这项工作。
如果你不习惯使用命令行,可以下载带界面的 图形化辅助工具(GUI-based helper tool):
* Windows 用户:前往 maxcsoGUI 下载页面。
* 【注意】:你需要把 maxcso 的执行文件手动复制到 GUI 所在的文件夹中才能正常运行。
对于喜欢使用命令行的朋友,maxcso 是一个跨平台的免费应用程序,支持 Linux、macOS 和 Windows。
操作步骤:
只需输入以下简单的命令即可压缩 ISO 文件:
maxcso <game.iso>
执行转换后,你会在同一个文件夹里看到生成的 <游戏文件名.cso> 文件。
由于这种压缩方式是完全无损(Lossless)的,如果你以后需要找回原始镜像,随时可以像“解压缩包”一样把它还原。
还原命令:
maxcso --decompress <游戏文件名.cso>
MaxCSO 批量转换技巧
如果你有大量的游戏文件,可以使用简单的循环指令进行“一键打包”。
生活化类比: 这就像是工厂里的自动化流水线,你不需要盯着每一个产品,机器会自动把传送带上的所有 ISO 镜像排队塞进压缩机。
- Linux/macOS 用户:
创建一个名为iso-to-cso.sh的脚本并运行:
bash
#!/bin/bash
for i in *.iso;
do maxcso "${i}";
done - Windows 用户:
在命令行(或创建.bat批处理文件)运行以下指令:
batch
for %i in (*.iso) do maxcso.exe "%i"
使用 ciso 工具转换
如果你追求更好的硬件兼容性,可以选择 ciso 工具。它也是一款命令行实用程序,特别之处在于它生成的 CSO 文件与真实 PSP 掌机的兼容性比 MaxCSO 更好。
【提示】找不到图形界面?:
* Windows 用户: 可以使用带界面的辅助工具 CISO Multi Compressor。
* Linux 用户: 目前没有原生 GUI 工具,但你可以通过 WINE 环境 运行上述 Windows 工具。在 Debian 系系统(如 Ubuntu)中,需要先安装环境:
bash
sudo apt update
sudo apt install mono-complete libmono-microsoft*
sudo apt install wine1.4
ciso 操作指令:
1. 压缩 ISO 为 CSO:
ciso <压缩等级> game.iso game.cso
【提示】: <压缩等级> 取值范围是 1 到 9。1 代表速度最快但压缩率低,9 代表速度最慢但文件最小。
2. 将 CSO 还原为 ISO:
ciso 0 game.cso game.iso
这里将等级设为 0,意思就是“不压缩”,即执行解压操作。
ciso 批量转换指南
同样,我们可以通过脚本来自动化这个过程。
Linux/macOS 平台:
第一步: 创建一个名为 iso-to-ciso.sh 的文件,内容如下:
#!/bin/bash
for i in "$@"; do
ciso 9 "${i}" "${i%*.iso}".cso;
done
第二步: 赋予脚本可执行权限(Executable permission):
chmod +x iso-to-ciso.sh
第三步: 运行脚本开始转换:
./iso-to-ciso.sh *.iso
Windows 平台:
直接在文件夹的命令行窗口输入以下指令即可:
for %i in (*.iso) do ciso.exe 9 "%i" "%i".ciso
PBP 格式:多光盘游戏的“终极合体”方案
如果你正在为那些拥有好几张光盘的 PlayStation(PS1)大作感到头疼,PBP 格式就是你的救星。它不仅支持多种格式(如 .BIN+.CUE、.IMG),最强大的地方在于能将多张光盘压缩成一个唯一的 PBP 文件。
生活化类比:这就像是把一套好几卷的长篇小说,重新装订成了一本厚实的“精装合订本”。你再也不用在书架上到处找第一卷或第二卷,拿出一本就能读完全篇。
【注意】:PBP 的压缩过程并非完全无损(Not fully lossless)。虽然你可以将 PBP 还原回 .CUE+.BIN 文件,但还原出来的文件是重新生成的,与你转换前的原始文件在数据上并不完全相同。
支持的系统
目前,PBP 格式主要被以下系统支持:
* PSP (PlayStation Portable)
* PSX (PlayStation 1)
如何制作 PBP 文件
我们将使用一款名为 PSX2PSP 的经典工具。它可以将你的 PS1 游戏备份镜像(无论是单盘还是多盘)统一转换为 PBP 格式。
- Windows 下载地址:点击前往 Brewology 下载
- Linux 用户:虽然没有原生版本,但你可以通过 Wine 或 Lutris 运行它。
第一步:启动程序
根据你的喜好,可以通过命令行或直接双击运行:
* Windows 命令行模式:
* PSX2PSP.exe /theme:以主题模式打开。
* PSX2PSP.exe /classic:以经典模式打开。
* PSX2PSP.exe /batch:以批量处理模式打开。
* Linux 模式:
* 使用命令 wine PSX2PSP.exe 或通过 Lutris 启动。
第二步:选择镜像文件
在程序界面中,点击选择你想转换的一个或多个 ISO/BIN 镜像。如果是多光盘游戏,请一次性全部选中。
第三步:设定输出路径
选择转换后的 EBOOT.PBP 文件要存放的位置。
第四步:美化设置(可选)
为了让游戏在菜单中更好看,你可以至少选择一张 ICON0.png(图标)和一张 BACKGROUND.png(背景图)。
第五步:调整压缩率
【提示】:默认情况下,PSX2PSP 的压缩等级设为 0(不压缩)。如果你想节省空间,可以在“选项(Options)”里将其改为最大压缩等级 9。
第六步:开始转换
点击“转换(Convert)”按钮。
第七步:整理文件
程序会自动生成一个以游戏 ID(GAMEID)命名的文件夹,里面存放着 EBOOT.PBP 文件。
第八步:重命名以方便识别
【提示】:为了让系统能更准确地抓取游戏封面和信息,建议将生成的 EBOOT.PBP 文件重命名为游戏的实际名称。
如果你想把已经转换好的 .PBP 文件变回原来的 .CUE+.BIN 格式,操作流程是一样的,只需在输入端选择 .PBP 文件即可。
使用 PSXPackager 进行转换
PSXPackager 是一款功能强大的跨平台工具,支持 Windows、Mac 和 Linux。它不仅提供命令行版本,还为 Windows 用户准备了图形界面(GUI)。
它支持将 .ISO、.IMG 以及 .CUE+.BIN 镜像转换为 PBP 格式。对于多光盘游戏,它还能配合 .M3U 播放列表文件实现一键打包。
【提示】: 如果你使用图形界面版本,可以一次性选择多个镜像排队处理,这就是所谓的批量模式(Batch mode)。
安装准备
该工具需要 .NET 7 环境支持。在 Linux 系统中,你可以运行以下命令安装:
sudo apt install dotnet7
命令行操作步骤
第一步:单盘转换
运行以下命令,其中 -l 代表压缩等级(0-9),-i 是输入文件,-o 是输出文件:
psxpackager -l 9 -i 游戏文件名.cue -o 游戏文件名.pbp
第二步:还原镜像
如果你需要将 PBP 还原为 .BIN+.CUE,运行:
psxpackager -i 游戏文件名.pbp -o /输出路径/
第三步:多光盘处理
生活化类比: 这就像是给多集电视剧编个“目录”。你需要先写一份目录清单,然后告诉打包机按照清单把所有剧集装进一个大盒子里。
1. 先创建一个 游戏名.m3u 文件,内容如下:
text
游戏名 - Disc 1.cue
游戏名 - Disc 2.cue
游戏名 - Disc 3.cue
2. 运行 PSXPackager 指向该 .m3u 文件:
bash
psxpackager -l 9 -i 游戏名.m3u -o 游戏名.pbp
操作结果: 系统会生成一个文件夹,里面包含你打包好的 游戏名.PBP 文件。
PSXPackager 批量转换指南
当你有大量游戏需要处理时,使用循环脚本是最高效的选择。
Linux/macOS 平台
方法一:转换当前文件夹下的所有 ISO
创建一个名为 iso-to-pbp.sh 的脚本:
#!/bin/bash
for i in *.iso;
do psxpackager -l 9 -i "${i}" -o "${i}".pbp;
done
方法二:递归扫描(包含子文件夹)
如果你想把当前目录及其所有子目录下的镜像全部“一网打尽”,可以使用以下命令:
# 转换所有 ISO
find . -name "*iso" -exec psxpackager -l 9 -i {} -o {}.pbp ;
# 转换所有 CUE
find . -name "*cue" -exec psxpackager -l 9 -i {} -o {}.pbp ;
# 转换所有 M3U (多光盘)
find . -name "*m3u" -exec psxpackager -l 9 -i {} -o {}.pbp ;
Windows 平台
在命令行窗口中直接输入以下指令(以 ISO 为例):
for %i in (*.iso) do psxpackager.exe -l 9 -i "%i" -o "%i".pbp
【注意】: 批量转换会占用大量 CPU 资源,建议在电脑空闲时运行。
接上一节的 Windows 批量转换指令,你还可以针对不同后缀名分别执行:
- 转换所有 .cue 文件:
for %i in (*.cue) do psxpackager.exe -l 9 -i "%i" -o "%i".pbp - 转换所有 .m3u 文件:
for %i in (*.m3u) do psxpackager.exe -l 9 -i "%i" -o "%i".pbp
如果你觉得一个一个写后缀太麻烦,PSXPackager 还支持更简单的通配符批量操作:
- 一键全转(将文件夹内所有支持的格式都转为 PBP):
psxpackager -i "C:\游戏文件夹*.*" - 一键还原(将所有 PBP 文件转回 .BIN+.CUE):
psxpackager -i "C:\PBP文件夹*.PBP" - 按特定名称匹配(例如只转换名为“GAME – Disc”开头的镜像):
psxpackager -i "C:\镜像文件夹\GAME - Disc ?.bin"
RVZ 格式:任天堂模拟的神器
Dolphin 模拟器团队基于 WIA 开发了一种全新的压缩格式,名为 RVZ。
生活化类比:如果说早期的压缩格式是为了“瘦身”而删减了一些细节,那么 RVZ 就像是用了高级的“真空压缩袋”——它既能让体积缩减到极致,又保证了里面的东西原封不动(包含所有 Wii 光盘的填充数据和系统必备文件)。
支持的系统
由于 RVZ 是 Dolphin 模拟器的专属格式,因此它是以下系统的首选推荐格式:
* GameCube (GC)
* Wii
如何制作 RVZ 镜像
你需要准备至少 5.0-12188 版本以上的 Dolphin 模拟器。在 Batocera 中,目前的转换操作需要在文件管理器中进行。
第一步:按下 [F1] 键进入文件管理器,在 Applications(应用程序)文件夹中找到并运行 Dolphin-config。
第二步:在 Dolphin 开启的游戏列表界面中,找到你想压缩的游戏。
第三步:在游戏名称上点击右键,选择 Convert File…(转换文件)。
第四步:调整压缩参数。虽然默认设置已经够用,但如果你想获得极致的瘦身效果,请参考以下设置:
* 格式:RVZ
* 块大小:2MiB
* 压缩算法:LZMA
* 等级:9
第五步:点击转换。别担心,这个过程是完全可逆的,你随时可以将其还原。
RVZ 批量转换
第一步:在 Dolphin 的游戏列表中,按住键盘上的 CTRL 键。
第二步:用鼠标依次点击你想转换的多个游戏。
第三步:点击右键并选择 Convert File…,模拟器就会排队帮你处理好所有文件。
SquashFS 格式介绍
SquashFS:将整个文件夹“封装”的神器
SquashFS 是一种可以无损压缩整个文件夹及其内部所有内容的格式。它的神奇之处在于,即使文件被压缩了,Batocera 也能在启动时自动挂载它们,让系统觉得这些文件“就好像完全没被压缩过一样”。
生活化类比:普通压缩包(如 ZIP 或 7Z)像是一个扎得死死的行李袋,你想用里面的东西必须先解开倒出来;而 SquashFS 更像是一个透明的展示柜,虽然东西被紧凑地码放在一起,但你隔着玻璃就能直接操作里面的开关,无需“拆包”。
这一功能在 Batocera v33 版本中得到了完美支持。
使用前的温馨提示
虽然 SquashFS 很强大,但有几点局限性需要注意:
* 只读属性(Read-only):SquashFS 压缩后的内容是不能修改的。如果某些游戏(尤其是 PC 游戏)运行过程中需要向自己的安装目录写入数据,就会报错。不过,简单的 DOS 游戏通常没问题,Windows 游戏也有相应的解决办法。
* 系统支持:只有在系统配置信息(_info.txt)中明确标注支持 SquashFS 的机种才能运行这种镜像。
* 最佳适用对象:它非常适合 PS3 和 Wii U 游戏,因为这些游戏通常以文件夹形式存储,且运行过程中系统不会往游戏文件夹里写东西。
支持的系统列表
目前,以下系统已确认支持 SquashFS 格式:
^ 系统简称 ^ 运行状态 ^ v34 稳定版 ^ v35 测试版 ^ 已知问题 ^ 更多信息 ^
| :— | :— | :— | :— | :— | :— |
| ports (移植游戏) | 正常 | ✗ | ✔ | – | 需要创建 run.sh 启动脚本 |
| scummvm | 正常 | ✔ | ✔ | – | 部分游戏需预先在 ScummVM 中配置 |
| wiiu | 正常 | ✔ | ✔ | 查看问题 | V34 已修复 .rpx 文件路径识别问题 |
| windows | 正常 | ✔ | ✗ | 查看问题 | 仅限 .wine 游戏;.wsquashfs 性能优于 .wtgz |
| ps3 | 正常 | ✔ | ✔ | – | – |
| dos | 正常 | ✔ | ✔ | – | – |
| daphne | 正常 | ✔ | ✔ | – | – |
| xbox | 正常 | ✔ | ✔ | 查看问题 | 曾存在无法加载路径的问题 |
| easyrpg | 正常 | ✔ | ✔ | – | – |
| mugen | 待测试 | – | – | 查看问题 | 存在 Wine 兼容性问题 |
| ecwolf | 正常 | ✔ | ✔ | – | – |
技术细节(面向进阶玩家)
如果你想了解它是如何运作的:
1. 第一步:系统识别。为了让游戏能出现在菜单中,开发者必须先将该系统加入“SquashFS 准入名单”。目前 DOS 和 PS3 等支持文件夹运行的系统都已加入。
2. 第二步:自动挂载。当你点击开始游戏时,系统会将 SquashFS 镜像挂载到 /var/run/squashfs/<游戏名> 路径下。
3. 第三步:模拟运行。模拟器实际上是从这个虚拟的挂载路径读取游戏数据的。
如何创建 SquashFS 文件
目前,制作 SquashFS 镜像只能通过 SSH 远程连接(Secure Shell) 来完成。Batocera 系统内置了 mksquashfs 工具,专门负责这项“打包”任务。
它的基本语法很简单: mksquashfs <原文件夹/文件> <新文件名>.squashfs。
常用操作场景
第一步:进入游戏目录
首先,你需要通过终端切换到存放 ROM 的文件夹。
第二步:执行压缩命令
根据你的需求选择以下对应的命令:
-
打包一个文件夹(以 DOS 或 ScummVM 为例):
bash
cd /userdata/roms/dos
mksquashfs skweek.pc skweek.pc.squashfs
如果你想要更好的压缩效果,可以加上-comp xz参数:
bash
cd /userdata/roms/scummvm
mksquashfs "astro chicken" "astro chicken.squashfs" -comp xz -
打包单个镜像文件(以 Xbox 为例):
bash
cd /userdata/roms/xbox
mksquashfs crazytaxi3.iso crazytaxi3.iso.squashfs
(同样可以添加-comp xz来进一步压榨空间)。 -
【进阶】批量打包所有文件夹:
如果你有很多文件夹需要转换,不用一个一个输入,用这行命令即可:
bash
for i in *; do if [ -d "$i" ]; then mksquashfs "$i" "$i.squashfs" -comp xz; fi; done -
【进阶】批量将所有 .iso 转为 .squashfs:
bash
for i in *.iso; do mksquashfs "${i}" "${i}".squashfs -comp xz; done
第三步:测试与清理
【注意】:在删除原来的文件夹或 ISO 文件之前,请务必先启动游戏,确认它能正常运行!
生活化小贴士
- 压缩算法(xz):就像是用了强力抽气机的真空袋,虽然抽气时费点劲(压缩时间长),但最后能省下更多的衣柜空间(硬盘空间)。
- 关于 Btrfs 文件系统:如果你在安装 Batocera 时选择了 Btrfs 文件系统,系统本身就自带“透明压缩”功能。这就像你买了一个会自动收纳的智能衣柜,你把衣服丢进去它就自动扁平化了,无需再手动制作 SquashFS。
如何解压 SquashFS 文件
如果你想把“封装”好的文件重新变回普通的文件夹,有两种简单的方法:
方法一:图形化操作(最简单)
通过 Samba 共享协议(SMB) 也就是在 Windows 电脑上直接访问 Batocera 的文件夹。
1. 找到对应的 .squashfs 文件。
2. 使用你熟悉的解压软件(如 7-Zip 或 PeaZip,注:原文中提到的 Picodrive 应为误记,此处建议使用主流解压工具)。
3. 使用“解压到新文件夹”功能即可。
方法二:命令行操作
如果你已经在 SSH 终端里,可以使用 unsquashfs 命令。
基本语法: unsquashfs -f -d <目标路径> <游戏文件名>.squashfs
例如:
# 这会将游戏内容解压到指定的 destination 目录下
unsquashfs -f -d /userdata/roms/dos/skweek_restored skweek.pc.squashfs
使用命令行进行解压的完整语法如下:
unsquashfs -f -d /userdata/roms/<系统名称>/<游戏目录> /userdata/roms/<系统名称>/<游戏文件名>.squashfs
第一步:进入对应的游戏目录
在终端中输入 cd 命令切换到镜像所在文件夹。
第二步:执行解压指令
输入解压命令并指定目标文件夹。如果操作成功,你会看到如下反馈:
Batocera$ unsquashfs -f -d ExtractionFolder SuperMario.squashfs
Parallel unsquashfs: Using 4 processors
23 inodes (2649 blocks) to write
[=============================================================] 2672/2672 100%
created 23 files (已创建 23 个文件)
created 4 directories (已创建 4 个目录)
...
【提示】批量解压小技巧:
如果你有一堆 SquashFS 文件需要还原,可以使用这个循环命令一次性搞定:
for i in *.squashfs; do unsquashfs -f -d ./"${i%.*}" ./"$i"; done
手动挂载 SquashFS
如果你不想解压,只是想临时看看里面的数据或者拷个文件,可以使用手动挂载(Manually mount)功能。
生活化类比:这就像是你在压缩包上接了一根“临时管道”,让文件夹里的内容直接显示在你的电脑里,用完把管道一拆(卸载)即可,不需要占用双倍的硬盘空间。
操作命令:
mount -t squashfs path/to/file.squashfs /mnt
WUA 格式:Wii U 的全能合集包
WUA 是 Wii U 模拟器 Cemu 专用的一种格式。它的强大之处在于能将游戏本体、更新补丁(Updates)以及 DLC 扩展内容全部打包进一个唯一的压缩文件里。
生活化类比:原本你的游戏、补丁和 DLC 像是散落在地上的零件,WUA 就像是一个精密的收纳箱,把它们严丝合缝地拼装在一起,不仅清爽,还方便管理。
准备工作
转换操作必须在 Cemu 的界面中完成。你可以通过 Batocera 的 [F1] 文件管理器,在 Applications 文件夹里找到它。
【注意】路径设置:
如果 Cemu 是第一次运行,请务必确认以下路径指向正确:
* MLC 路径(MLC Path):/userdata/saves/wiiu
* 游戏路径(Game Paths):/userdata/roms/wiiu
转换步骤
第一步:启动 Cemu
从文件管理器中打开 Cemu 配置程序。
第二步:执行转换
在 Cemu 的游戏列表中找到对应的游戏,利用其内置的转换功能生成 WUA 文件。
【重要提示】:Cemu 无法直接识别 SquashFS 文件。如果你之前的 Wii U 游戏已经转成了 SquashFS,必须先将其解压缩或者手动挂载,Cemu 才能读取并转换它们。
制作 WUA 文件:整合游戏、补丁与 DLC
在制作 WUA 文件时,Cemu 会自动把你已经安装好的更新补丁和 DLC 全部打包进去。
【注意】:在开始转换之前,请务必确认你已经先完成了补丁和 DLC 的安装工作,否则它们不会被包含在最终的合集包里。
压缩为 WUA 格式的具体步骤
第一步:打开标题管理器
在 Cemu 菜单栏中,依次点击 工具(Tools) -> 标题管理器(Title Manager)。
第二步:选择要转换的游戏
在标题管理器列表中,找到你的基础游戏(Base game)项目(通常显示为文件夹格式)。
第三步:启动转换程序
点击对应的按钮(通常位于基础游戏项目左侧),选择 转换为压缩版 Wii U 存档(Convert to Compressed Wii U archive (.wua))。
第四步:设置保存路径
将输出的目标文件夹设置为:/userdata/roms/wiiu。
第五步:最后的核对
这是你确认补丁和 DLC 是否被成功检测到的最后机会。
【提示】:基础游戏、更新补丁和 DLC 必须属于同一个地区(Region)(例如全都是美版或全都是日版),系统才能正确识别并将它们关联在一起。
第六步:完成转换
确认无误后,点击 确定(OK),稍等片刻,你的“全家桶”游戏镜像就制作完成了!
原文: 镜像压缩与解压教程 • 翻译: DIY8 Bot



暂无评论内容