2015-11-10 13:40:26 k73游戏之家 作者:SarvSarv
进行游戏汉化工作?这听起来相当的高端,不过在3ds时期,游戏汉化似乎成为了一项并不那么难的事情。只要你愿意钻研,你自己完全可以胜任3ds游戏汉化的全部工作,今天给大家带来的是3ds游戏汉化过程中的打包操作教程。
3ds游戏解包操作教程:k73传送门
3ds游戏汉化教程篇之打包操作:k73传送门
3ds游戏汉化教程之文本字库操作篇:k73传送门
在上文中,我们已经详细说了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(体验版)。所以说,具体哪个分区是做什么的,都是具体例子具体分析。
解包的过程,概括一下就是从3ds(cci)-->cxi0(0分区)、cfa1-7(1-7分区)与头文件-->exefs与romfs等资源打包文件-->各种资源文件与头文件的过程。其实,打包的过程,就是将这个步骤反过来操作,将资源文件一步步打包成cci(3ds)文件。下面,让我们一起来进行操作吧。
例子依然是我们在上一篇文章中操作过的开膛手杰克。
操作步骤一:将资源文件打包为exefs与romfs
首先,我们需要将3dstool-master\bin文件夹中的ignore.txt拷贝到3dstool.exe工具同目录下,因为在打包过程中会使用到这个文档,如果没有这个文档,工具中会提示出错,举例:
这段代码就不用细看了,下文会有详细讲解的,先拷贝ignore.txt文件吧。
工作开始,我们使用开膛手杰克的资源进行打包操作,先看看资源文件吧:
格式是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”:
成功打包成了exefs.bin文件,让我们仔细看看代码:“-cvtfz”与上一篇文章中的“-xvtfu”是对应的,对比下3dstool文档我们可以看到“-c”是创建目标文件,“-vtf”是显示信息、文件类型与目标文件三个通用参数,最后的“-z”是通过反向LZ77算法压缩文件,这里再次强调,exefs文件可能需要使用反向LZ77算法进行解压和压缩工作,是否需要使用“-z”与“-u”,需要看exh中的标记(查看exh.bin的0000000dh位置,值为1则需要使用“-z”)。如果在解包时使用了“-u”,那么打包时“-z”就不能丢。
“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”:
由于romfs没有头文件,也无需使用反向LZ77压缩,所以代码比较简短,去掉“-z”,去掉“--header”,将exefs改为romfs就可以了。
处理完cxi0中的资源文件,我们用相同的办法处理cfa1和cfa7中的资源文件。
cfa1中的romfs“3dstool -cvtf romfs cci\cfa1\romfs.bin --romfs-dir cci\cfa1\romfs”:
cfa7中的romfs“3dstool -cvtf romfs cci\cfa7\romfs.bin --romfs-dir cci\cfa7\romfs”:
到此为止,我们的exefs与romfs文件都已经打包完成了。
操作步骤二:将exefs、romfs与头文件打包成cxi/cfa文件
首先,让我们来看看cxi0文件夹下的内容:
我们可以看到除了刚生成的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”:
“--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”,即可完成打包:
然后是使用同样的方法对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”:
cfa7“3dstool -cvtf cfa cci\7.cfa --header cci\cfa7\ncchheader.bin --romfs cci\cfa7\romfs.bin --romfs-xor UpdateData.romfs.xorpad”:
完成!
操作步骤三:将cxi文件、cfa文件与头文件打包成cci(3ds)文件
如果上述步骤都认真完成了,那么你现在的cci文件夹中应该是有这么几个文件:
我们现在就是将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”:
到此为止,我们已经重新将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文件,你会发现所有的指令你都可以看得懂了。
老话重提,汉化工作并不是什么美好的工作,成天面对代码、文本与图片更说不上有意思。但是汉化就是这么吸引着我们,大家想要参加汉化的原因各不相同,有的是为了学技术、练外语,有的是为了自己喜欢的游戏,还有的只是出于对汉化工作的好奇。
这都没有关系,汉化并不是一个人的工作,与别人一起讨论技术、讨论翻译的过程,比玩任何游戏都要精彩。你现在所需要做的,就是参与进来,坚持下去。如果你对汉化破解有兴趣,但是没有基础,那么加入我们,从零开始;如果你跳过了上面所有的技术内容,直接看到了最后这一段,建议你从头开始试试,从第一篇开始,一步步做下来,破解不难,难的只是坚持。
参与进来,坚持下去,与你共勉。
SarvSarv
2014.12.10