3DS打包操作说明书——3dstool工具详解(下)

17 | 12 | 2014

在上文中,我们已经详细说了3DS的解包操作,那么一定还有打包操作,在本文中,我们就继续聊聊3DS的打包操作。

通过上文的说明,我们了解到,一个3DS的ROM是由几个分区以及一个头文件组成,他们分别是第0分区到第7分区,其中第0分区为cxi格式,游戏中的绝大部分资源文件,都会保存在这个文件中,其余1-7个分区,可以参考下图,第1分区是说明文件(Manual),第7分区是更新档案(UpdateData),第2分区是一卡多游(DownloadPlay),第3-6分区都是预留分区(Partition),但是一个游戏使用什么分区做什么,是没有强制约定的,而且分区的作用,只有5个选项:Application(程序)、SystemUpdate(系统更新)、Manual(说明)、Child(子分区)以及Trial(体验版)。所以说,具体哪个分区是做什么的,都是具体例子具体分析。

图片1

解包的过程,概括一下就是从3ds(cci)–>cxi0(0分区)、cfa1-7(1-7分区)与头文件–>exefs与romfs等资源打包文件–>各种资源文件与头文件的过程。其实,打包的过程,就是将这个步骤反过来操作,将资源文件一步步打包成cci(3ds)文件。下面,让我们一起来进行操作吧。

例子依然是我们在上一篇文章中操作过的开膛手杰克。

操作步骤一:将资源文件打包为exefs与romfs

首先,我们需要将3dstool-master\bin文件夹中的ignore.txt拷贝到3dstool.exe工具同目录下,因为在打包过程中会使用到这个文档,如果没有这个文档,工具中会提示出错,举例:

图片2

这段代码就不用细看了,下文会有详细讲解的,先拷贝ignore.txt文件吧。

工作开始,我们使用开膛手杰克的资源进行打包操作,先看看资源文件吧:

图片3

格式是cci文件夹中有cfa1、cfa7、cxi0三个文件夹,在三个文件夹下,又分别有romfs和exefs文件夹。我们在这步打包操作时,就是将exefs和romfs文件夹中的资源文件合成exefs.bin和romfs.bin文件,下面开始代码“3dstool -cvtfz exefs cci\cxi0\exefs.bin –header cci\cxi0\exefs\exefsheader.bin –exefs-dir cci\cxi0\exefs”:

图片4

成功打包成了exefs.bin文件,让我们仔细看看代码:“-cvtfz”与上一篇文章中的“-xvtfu”是对应的,对比下3dstool文档我们可以看到“-c”是创建目标文件,“-vtf”是显示信息、文件类型与目标文件三个通用参数,最后的“-z”是通过反向LZ77算法压缩文件,这里再次强调,exefs文件可能需要使用反向LZ77算法进行解压和压缩工作,是否需要使用“-z”与“-u”,需要看exh中的标记(查看exh.bin的0000000dh位置,值为1则需要使用“-z”)。如果在解包时使用了“-u”,那么打包时“-z”就不能丢。

图片5

exefs cci\cxi0\exefs.bin”指的是在目标位置生成exefs.bin文件,生成文件的过程中,需要使用头文件“–header cci\cxi0\exefs\exefsheader.bin”,并指定exefs资源所在的文件夹“–exefs-dir cci\cxi0\exefs”。

好的,那么接下来生成的是romfs.bin文件“3dstool -cvtf romfs cci\cxi0\romfs.bin –romfs-dir cci\cxi0\romfs”:

图片6

由于romfs没有头文件,也无需使用反向LZ77压缩,所以代码比较简短,去掉“-z”,去掉“–header”,将exefs改为romfs就可以了。

处理完cxi0中的资源文件,我们用相同的办法处理cfa1和cfa7中的资源文件。

cfa1中的romfs“3dstool -cvtf romfs cci\cfa1\romfs.bin –romfs-dir cci\cfa1\romfs”:

图片7

cfa7中的romfs“3dstool -cvtf romfs cci\cfa7\romfs.bin –romfs-dir cci\cfa7\romfs”:

图片8

到此为止,我们的exefs与romfs文件都已经打包完成了。

操作步骤二:将exefs、romfs与头文件打包成cxi/cfa文件

首先,让我们来看看cxi0文件夹下的内容:

图片9

我们可以看到除了刚生成的exefs.bin和romfs.bin之外,还有exh.bin、plain.bin以及头文件ncchheader.bin,我们现在要做的,就是将这5个文件进行打包,生成0.cxi文件。

下面来看代码“3dstool -cvtf cxi cci\0.cxi –header cci\cxi0\ncchheader.bin –exh cci\cxi0\exh.bin –plain cci\cxi0\plain.bin –exefs cci\cxi0\exefs.bin –romfs cci\cxi0\romfs.bin –key0”:

图片10

–header cci\cxi0\ncchheader.bin”、“–exh cci\cxi0\exh.bin”、“–plain cci\cxi0\plain.bin”、“–exefs cci\cxi0\exefs.bin”与“–romfs cci\cxi0\romfs.bin”五个参数,分别对应上方的五个文件,应该比较好理解,就是将这5个文件打包到“cci\0.cxi”。

然后“–key0”则再强调一下,使用–key0打包后,下次需要解包时,就可以使用–key0直接解包,而不需要再去3DS上进行xorpad的收集,能够提高效率。若是需要使用xorpad打包,则可以将代码“–key0”改为“–exh-xor Main.exheader.xorpad –exefs-xor Main.exefs_norm.xorpad –romfs-xor Main.romfs.xorpad”,即可完成打包:

图片11

然后是使用同样的方法对cfa1与cfa7文件夹中的文件进行打包操作,两个文件夹下都是romfs.bin与ncchheader.bin两个文件。

cfa1“3dstool -cvtf cfa cci\1.cfa –header cci\cfa1\ncchheader.bin –romfs cci\cfa1\romfs.bin –romfs-xor Manual.romfs.xorpad”:

图片12

cfa7“3dstool -cvtf cfa cci\7.cfa –header cci\cfa7\ncchheader.bin –romfs cci\cfa7\romfs.bin –romfs-xor UpdateData.romfs.xorpad”:

图片13

完成!

操作步骤三:将cxi文件、cfa文件与头文件打包成cci(3ds)文件

如果上述步骤都认真完成了,那么你现在的cci文件夹中应该是有这么几个文件:

图片14

我们现在就是将0.cxi、1.cfa、7.cfa与头文件ncsdheader.bin打包,生成3ds文件“3dstool -cvt017f cci cci\0.cxi cci\1.cfa cci\7.cfa repack.3ds –header cci\ncsdheader.bin”:

图片15

到此为止,我们已经重新将ROM进行了打包。


代码汇总:

//打包为exefs、romfs

3dstool -cvtfz exefs cci\cxi0\exefs.bin –header cci\cxi0\exefs\exefsheader.bin –exefs-dir cci\cxi0\exefs

3dstool -cvtf romfs cci\cxi0\romfs.bin –romfs-dir cci\cxi0\romfs

3dstool -cvtf romfs cci\cfa1\romfs.bin –romfs-dir cci\cfa1\romfs

3dstool -cvtf romfs cci\cfa7\romfs.bin –romfs-dir cci\cfa7\romfs

//打包为cxi、cfa

3dstool -cvtf cxi cci\0.cxi –header cci\cxi0\ncchheader.bin –exh cci\cxi0\exh.bin –plain cci\cxi0\plain.bin –exefs cci\cxi0\exefs.bin –romfs cci\cxi0\romfs.bin –key0

3dstool -cvtf cfa cci\1.cfa –header cci\cfa1\ncchheader.bin –romfs cci\cfa1\romfs.bin –romfs-xor Manual.romfs.xorpad

3dstool -cvtf cfa cci\7.cfa –header cci\cfa7\ncchheader.bin –romfs cci\cfa7\romfs.bin –romfs-xor UpdateData.romfs.xorpad

//打包为3ds(cci)

3dstool -cvt017f cci cci\0.cxi cci\1.cfa cci\7.cfa repack.3ds –header cci\ncsdheader.bin

如果你认真的做完了两篇文章中所有的操作,那么再使用记事本打开3DStool帮助和教学中的怪物猎人4.bat文件,你会发现所有的指令你都可以看得懂了。

图片16

老话重提,汉化工作并不是什么美好的工作,成天面对代码、文本与图片更说不上有意思。但是汉化就是这么吸引着我们,大家想要参加汉化的原因各不相同,有的是为了学技术、练外语,有的是为了自己喜欢的游戏,还有的只是出于对汉化工作的好奇。

这都没有关系,汉化并不是一个人的工作,与别人一起讨论技术、讨论翻译的过程,比玩任何游戏都要精彩。你现在所需要做的,就是参与进来,坚持下去。如果你对汉化破解有兴趣,但是没有基础,那么加入我们,从零开始;如果你跳过了上面所有的技术内容,直接看到了最后这一段,建议你从头开始试试,从第一篇开始,一步步做下来,破解不难,难的只是坚持。

参与进来,坚持下去,与你共勉。