游戏ISO一键转CHD:tochd完整使用指南,让Linux模拟器玩家告别格式混乱
【免费下载链接】tochdConvert game ISO and archives to CD/DVD CHD for emulation on Linux.项目地址: https://gitcode.com/gh_mirrors/to/tochd
去年我整理自己的复古游戏收藏时,面对一个尴尬的现状:几百GB的PS1、PSP和Dreamcast游戏散落在硬盘各个角落,有的是单个ISO,有的是CUE+BIN两件套,还有大量7z压缩包没解压。想用RetroArch统一运行,结果发现每个核心对格式的要求还不一样,而当时让我最头疼的,是找到一款能处理"游戏ISO转CHD"这件事的工具——直到我遇见了tochd。
这是一个运行在Linux上的命令行小工具,作用非常纯粹:把ISO、CUE+BIN、GDI这些光盘镜像,以及装着它们的压缩包,一键批量转成模拟器生态里的"标准答案"CHD格式。这篇文章会从原理讲到实操,把我在使用中踩过的坑和攒下的技巧一并分享给你。
tochd到底解决了什么问题?三句话讲清楚
在深入细节之前,先用最简单的方式说清它的价值:
- 把多文件变成单文件:一张PS1游戏通常是CUE+BIN两个文件,Dreamcast游戏更夸张,一个GDI经常带几十个bin轨道文件。tochd把它们合并成一个CHD,拷贝、备份、整理都变成复制一个文件的事。
- 压缩率惊人:CHD内置了针对光盘数据的压缩算法,实测多数游戏能比原镜像缩小一半以上,一个4GB的PSP游戏经常能压到1.5GB左右。
- 自动处理压缩包:你甚至不需要先解压。直接把7z、zip、rar丢给它,tochd会自己解压、识别内部镜像、完成转换,然后清理临时文件。
换句话说,它把"解压→识别格式→转换→重命名→清理"这条原本要手动操作五步的流水线,压缩成了敲一条命令。对我这种手上有几百个文件要处理的人来说,省下的不只是时间,还有大量重复劳动带来的烦躁。
它凭什么能做到?原理其实很简单
tochd本身不发明任何新格式,它更像一个聪明的"调度员"。真正干活的是两个老牌工具:
- 7z:负责解压各种压缩包,把藏在里面的ISO、CUE、GDI文件请出来;
- chdman:来自MAME工具包,是CHD格式的发明者和权威转换器,负责把镜像真正压成CHD。
tochd做的事情,就是站在两者中间:分析输入文件类型、决定调用顺序、管理临时目录、生成命名规则、最后汇总结果。你可以把它理解成一个全自动的中转站——货物(压缩包)进来,它负责拆箱、分拣、打包,最后送到你指定的货架(目标目录)上。
整个项目就是一个Python脚本,不依赖任何第三方Python库,只要系统里有7z和chdman就能跑,这让我这种喜欢折腾、也怕依赖地狱的人格外安心。
从零到第一个CHD:最短的上手路径
如果你的系统是Arch系,一条命令就能装好:
sudo pacman -S p7zip mame-tools # 安装7z和chdman yay -S tochd # 从AUR安装tochd其他发行版或者不想用AUR的话,手动安装也不复杂:
git clone https://gitcode.com/gh_mirrors/to/tochd cd tochd bash suggested_install.sh安装脚本会自动把tochd.py重命名成tochd命令,放进系统PATH里可写的目录。装完先验证一下:
tochd --version接着找一张ISO试水。最简单的用法是把当前目录整个交给它:
tochd -q .-q是静默模式,隐藏7z和chdman的进度输出,只看tochd自己的任务清单。不出意外,几秒钟后你就会在ISO旁边看到一个同名CHD文件。就这么简单,第一个转换完成了。
完整实战:把整个下载文件夹变成CHD收藏库
假设你和我一样,~/Downloads里堆着几十个游戏文件,既有ISO也有7z压缩包,来自PS1、PSP、Dreamcast各个平台。我的习惯是先把它们按平台分成子文件夹,然后挨个处理。但tochd允许一次搞定:
tochd -q -d ~/Games/CHD ~/Downloads这条命令的含义是:扫描~/Downloads里所有支持的文件(包括递归进子文件夹解压压缩包),把生成的CHD统一输出到~/Games/CHD目录。源文件原封不动,输出目录整整齐齐。
跑完之后如果你想确认哪些成功了、哪些失败了,加上-s和-n看统计:
tochd -qs -n ~/Downloads-s会输出类似这样的总结:
Started: 12 Skipped: 0 Failed: 2 Completed: 10 Elapsed time: 0:08:41-n则让每条任务只显示文件名,不显示完整路径,刷屏没那么恐怖。看到失败列表也不用慌,先确认是不是某些文件本身不支持,后面我专门讲怎么排查。
进阶技巧:几个值得收藏的参数
用熟基础操作之后,下面这些参数能让你的效率再上一个台阶。
用DVD模式处理PSP游戏
这是新手最容易忽略、却最重要的一条。PPSSPP官方明确建议用chdman createdvd而不是createcd来转换PSP游戏,因为PSP用的是DVD格式的光盘。tochd默认是CD模式,所以转PSP游戏一定要加-m dvd:
tochd -m dvd ~/PSP_Games/*.iso如果不确定手里的光盘属于哪种,可以用-m auto让tochd按文件大小自动判断(以750MB为分界线)。注意,我实测PS2游戏用DVD模式在PCSX2核心上运行会有问题,所以自动判断虽方便,特殊情况还是要手动指定。
多线程并行处理
机器够好、文件够多时,开启并行能省下大把时间:
tochd -p -t 4 -- *.7z-p开启多线程(默认2线程),-t 4指定最多4个任务同时跑,--后面跟文件名,防止文件名以-开头时被误认成参数。想限制chdman占用的CPU核心数,再用-c 2控制,给系统留点余量。
需要注意两点:并行模式下进度条会被禁用(多个进程的输出会互相打架),这是正常现象;另外-p和-s同时使用时代码里出于线程安全考虑,统计计数会不显示,不影响转换本身。
保留压缩包内部的原始文件名
压缩包里的镜像名往往带版本、语言等关键信息,但tochd默认会把输出的CHD重命名成压缩包的名字,信息可能就丢了。这种情况加-R:
tochd -R -q game_collection.7z先演练再执行
对一个大文件夹动刀之前,我强烈建议先跑一次-X干跑模式。它不会真的转换,只会列出将要处理的任务清单,让你提前发现意外:
tochd -X .自定义临时目录
转换压缩包时,tochd会在输入文件旁边创建隐藏的.tochd_*临时文件夹来解压。磁盘空间紧张的话,可以把它挪到指定的地方:
tochd --temp-dir /tmp/tochd_temp game.7z新手最容易踩的坑,以及对应的解法
我用tochd踩过的坑不算少,挑几个有代表性的分享出来,帮你绕开。
压缩包里有多个同名ISO
有些游戏补丁包会把"覆盖用"的ISO和其他文件打在一起,解压后会出现多个同名ISO。tochd对此的处理策略是:只要压缩包里出现了CUE或GDI这种分轨表文件,就忽略所有ISO,只处理分轨表文件。大多数情况这是对的,但如果转换结果不对,直接手动解压、清理掉多余文件再转即可。
音频文件格式不匹配
部分CUE文件引用的是APE格式的音频,而chdman不认APE,转换就会失败。这种情况需要先把APE转成WAV再交给tochd。判断方法很简单:打开CUE文件看一眼引用的文件后缀,或者查压缩包自带的说明文档。
单个坏文件卡住整个队列
有一个已知的边界情况:当GDI文件内部引用了不存在的文件时,可能导致后续任务全部停止。如果遇到整批卡住,先定位出那个异常的GDI,把它排除出扫描目录再重新跑。
强制终止后记得清理
普通Ctrl+C是优雅终止,会跳过当前任务继续下一个,临时文件也能自动清理。但如果是强制杀掉进程,tochd_开头的临时文件夹可能残留——它们体积可能很大,转换完最好检查一下源文件所在目录。想一次Ctrl+C就彻底停掉所有任务,用-E参数。
PSP转换后无法运行
不用怀疑自己操作错了,八成是没加-m dvd。这是PPSSPP的硬性要求,CD格式转出来的CHD在PPSSPP上兼容性很差,重新用DVD模式转一遍就好。
不止PS1和PSP:CHD还能怎么用
CHD的生态其实比很多人以为的更广。除了RetroArch各核心和PPSSPP,Flycast(Dreamcast模拟器)也原生支持CHD。把实体光盘抓成镜像后再转CHD,等于给你的实体游戏做了数字化备份,一套收藏多个设备通用。
因为CHD单文件、体积小,它特别适合放在多设备之间同步——比如Steam Deck和电视盒子共享一个游戏库,或者传到网盘做云端备份。相比几十个文件的GDI文件夹,单个CHD文件的传输和校验都省心太多。
另外,tochd支持的输入格式里还包括bz2、gz这类单文件压缩格式,加上-参数可以从stdin逐行读取文件列表,配合其他脚本做自动化批量处理也没问题。
现在就去整理你的游戏库
回到开头我的故事:那次用tochd批量整理完几百GB的游戏后,我的游戏目录从一堆乱七八糟的ISO、CUE+BIN、GDI、7z,变成了整齐划一的CHD文件,硬盘还腾出了接近一半的空间。之后无论是换设备还是备份,都只跟单个文件打交道,那种清爽感用过就回不去。
如果你也是Linux上的模拟器玩家,手上正好有一批光盘镜像或压缩包没整理,不妨今天就试一下tochd。先装好依赖,跑一条tochd -q .看看效果,再按自己的习惯组合参数。整理游戏库这件事,真的可以十分钟之内搞定。
【免费下载链接】tochdConvert game ISO and archives to CD/DVD CHD for emulation on Linux.项目地址: https://gitcode.com/gh_mirrors/to/tochd
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考