ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Dolphin模拟器RVZ压缩指南:3步为存储优化省下空间

Dolphin模拟器RVZ压缩指南:3步为存储优化省下空间

Dolphin模拟器RVZ压缩指南:3步为存储优化省下空间

【免费下载链接】dolphinDolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.项目地址: https://gitcode.com/GitHub_Trending/do/dolphin

Dolphin 是一款开源的 GameCube / Wii 模拟器,它的 RVZ 格式正是为游戏镜像做存储优化的方案:把体积庞大的 ISO 压缩成明显更小的 RVZ 文件,同时模拟器可以直接读取运行。这篇文章带你完成 RVZ 压缩转换的具体步骤、参数取舍和报错排查,帮你把镜像库的磁盘占用降下来。

为什么选RVZ:原理只用三句话

一张 GC/Wii 镜像动辄 1GB 以上,镜像库稍微大一点,硬盘压力就很明显。RVZ 是 Dolphin 基于 WIA 格式扩展出来的压缩镜像格式,仓库里的官方文档给出了完整定义。

它的做法可以概括为三句话:

  • 把整个镜像切分成若干块(block),每一块独立压缩,这样模拟器想读哪个位置就直接定位解压缩对应的块,不需要先解包整个文件;
  • 块数据支持 zstd、bzip2、lzma 等压缩算法,全零的块只占极少字节;
  • 光盘里大段的伪随机填充数据,用专门的 "RVZ packing" 编码无损记录,而不是硬压缩。

所以转成 RVZ 之后,文件会比原始 ISO 小上一截,游戏内容却完全保留。

转换步骤:把ISO变成RVZ

方法一:图形界面操作

在 Dolphin 主界面的游戏列表里,选中一个或多个镜像,右键选择 "Convert Selected Files..."。弹出的转换对话框里可以用下拉框选输出格式、块大小、压缩算法和压缩等级,支持一次批量转换多个文件。转换结果会另存为新文件,原镜像不会被改动,这点可以放心。

方法二:dolphin-tool 命令行

图形界面能选的所有参数,命令行都有对应的选项。一条最基本的转换命令如下:

# ISO 转 RVZ:块大小 128KiB、zstd 算法、等级 5(均为项目建议值) dolphin-tool convert -i game.iso -o game.rvz -b 131072 -c zstd -l 5

注意:RVZ 转换时块大小(-b)和压缩算法(-c)是必填项,不指定工具会直接报错退出。如果镜像里有大量无用填充数据,可以加--scrub先清理再转换,不过对 RVZ 容器来说额外收益有限(工具会给出相应提示)。

参数怎么选:块大小与压缩算法

块大小的规则与取舍

工具的建议值是 131072,也就是 128KiB。源码里对块大小的合法性有明确校验,你可以照着记:

  • 最小 32KiB,再小不合法;
  • 小于 2MiB 时必须取 2 的幂次(32KiB、64KiB、128KiB、256KiB……);
  • 大于 2MiB 时必须取 2MiB 的整数倍。
块大小读取特性适用场景
32KiB寻址粒度最小,压缩效率略低随机访问多的镜像
128KiB(建议值)读写与压缩效率平衡大多数游戏
256KiB~2MiB压缩效率更高,寻址稍慢优先省空间

图形界面的块大小列表就是 32KiB 到 2MiB 这一档。源码注释也说明了原因:块太大反而不利于性能,所以不建议超过 2MiB。

压缩算法与等级

命令行支持none、zstd、bzip2、lzma、lzma2五种算法,项目对 RVZ 的建议组合是 zstd + 等级 5:

  • zstd:速度快,等级范围宽,等级越高文件越小、转换越慢,5 是个稳妥的起点;
  • bzip2 / lzma / lzma2:等级范围固定为 1~9,高压缩比但转换耗时更长;
  • none:不压缩,文件只分块不缩小,一般用不上。

如果你追求极限体积,可以把 zstd 等级往上调,然后对比转换前后的大小再定。

常见问题:报错怎么排查

⚠️ 提示 "Block size is not valid for this format"

原因是块大小不满足上一条的规则。直接改用建议值131072即可通过校验。

转换完如何确认参数和完整性

转换结束后,可以用随模拟器提供的两个命令做检查:

# 查看 RVZ 文件的块大小、压缩算法与等级 dolphin-tool header -i game.rvz -b -c -l # 计算文件摘要(sha1),方便核对完整性 dolphin-tool verify -i game.rvz -a sha1

转换后游戏无法启动

按顺序排查:

  • 先用verify命令检查源 ISO,源文件本身损坏是最常见的原因;
  • 确认header输出里的参数符合预期;
  • 用建议参数(128KiB + zstd + 等级 5)重新转换一次。

上手清单

动手之前,把这几件事过一遍:

  • 保留原始 ISO,转换时输出到另一个文件,不覆盖源文件;
  • 默认用 128KiB 块大小 + zstd + 等级 5,先跑通再调参;
  • 批量镜像用图形界面多选转换,或在脚本里循环调用dolphin-tool convert;
  • 转换完成后用header命令抽查参数,用verify抽查完整性;
  • 想深入理解块结构和 RVZ packing 编码,看下面延伸阅读里的官方文档与源码。

延伸阅读

  • docs/WiaAndRvz.md:WIA / RVZ 两种镜像格式的完整结构说明
  • Source/Core/DiscIO/:镜像读取、格式校验与转换的核心源码

【免费下载链接】dolphinDolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.项目地址: https://gitcode.com/GitHub_Trending/do/dolphin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进