设为首页收藏本站
机战Z2破界篇 星组汉化 下载

星组游戏论坛

 找回密码
 注册(QQ注册+邀请注册)

QQ登录

只需一步,快速开始

查看: 4864|回复: 7

[分享] [转]汉化破解新手入门(一)——by WEFGOD [复制链接]

Rank: 12Rank: 12Rank: 12

UID
7594
星币
36
积分
636
阅读权限
110
注册时间
2007-12-14
最后登录
2016-7-23
发表于 2010-5-30 23:29:00 |显示全部楼层
本帖最后由 chyt 于 2010-5-30 23:38 编辑

这篇教程不错征得作者同意之后转过来
原帖地址:http://www1.cngba.com/thread-18649958-1-1.html
因为以前一些教程链接都扑街了,所以这次连内容也一并转载

————————————————————————————————————————————————————————————



这段时间一直想写一个关于汉化方面的教程,主要目的就是为了一些人更容易入门。现在有部分汉化教程用的工具比较老,有一小部分比较新的教程新人经常和我说不太看得懂,所以我就想干脆自己花点时间看看可以写出一个让更多人容易理解的教程吗。

      在一年半之前在一些人的影响下,我开始学习了一些汉化的相关知识。而到今天,虽然说没有汉化出什么质量非常好的作品给各位,但是也算是经历过几个游戏的汉化了,借此机会也想和大家稍微分享一点经验。

      其实很多人都是抱着对汉化的好奇感而稍微去学习了下汉化,但是中途不是因为自己个人的原因(这个占大部分,而且多方面)就是因为教程看不懂的原因而放弃了继续学下去的念头,其实很多前辈都说过这样的话——汉化是需要坚持的,不能三分热度,冷了就忘记这事情了。

      我也经常会想大家为什么一看教程有的同学就立马说不懂,我个人感觉最主要的是有部分教程旨在分析其原理,稍微忽视了教大家动手的过程。原理固然很重要,但是汉化不是仅仅熟悉原理就可以搞定的,对于一些比较简单的游戏,要汉化更多还是要依托于一些工具的使用,毕竟不是所有人都是会编程的,而且总不能见一个问题就自己写一个程序(尤其是16进制编辑器),要是这样为什么现在没有多少人自己独立去编写一个操作系统然后自己用呢?

      这里还有一个更大的误区,就是一些人以为学计算机的才算是学破解最好的料,其实不然,计算机方面的优势主要还是在于擅长编程和基本的数据分析,要想汉化更多游戏确实是需要依托于自己的编程功底,但是如果是汉化一个游戏却不一定就要依靠编程,毕竟这有难易度之分。

      以上只是稍微说下一下心态的问题,这个是必须要提到的。我这人不是很擅长用文字表达自己的想法,但是我尽量在我离开汉化之前写一个简单的教程给想学习的新人。由于我个人水平有限,有不妥的地方各位见谅,也希望大家指出错误和不足的地方,谢谢各位的支持。

教程2地址:
http://www.cngba.com/thread-18693642-1-1.html



特别说明下,这教程主要是给新人看的,而对于老手高手,就可以完全的忽视了···这里面主要还是一些工具的使用,我已经添加了相对来说比较多的图片,有的东西必须是要一定的文字进行说明的,所以文字相对来说还是占有比较大的比重,其实汉化也是考验耐心的一个过程,相对于下面的这点字来说,文本处理的时候面对那好几MB的文本,下面这些已经完全不是问题了···

  如果你是刚开始学习的新人,你能坚持看完1楼的话说不定你还真下了决心要学汉化了。我想很多人都不是很清楚到底汉化的流程是怎样的,在这我借用下P大发的教程内的一个图片来简单说明下问题:



(图片来自http://zt.tgbus.com/acghh/Teaching/2009/01/16/1513024365.shtml 这是一篇很好的教程)

本文主要针对“破解”一环进行讲解,对于其他方面可能不会涉及很多。
破解一环主要要干什么呢?
1.导出文本
2.破解字库
3.导出图片
4.修改测试

  总的来说主要要经历以上4个大的步骤,但是这4个步骤细分下来可以分为很多方面,比如导出文本,如果文本是压缩的,你要先解压缩,如果是加密的,你要先解密。具体来说,压缩是什么呢?平时大家都经常用比如RAR和7Z的压缩格式,简单的说压缩就是将文件体积减小,并起到了一定的加密作用。那加密又是什么的?最简单的解释就是:为了让你看不懂他们就加密,加密就是把你能看懂的东西变得让你看不懂。稍微正式点的解释是:加密是以某种特殊的算法改变原有的信息数据(将原数据重新编码),使得非授权用户无法观察到其真实内容。暂时就扯那么多,下去先说说关于导出文本的问题。

一、文本导入导出1

  可能很多人对于找文本会稍微有一点疑问,想知道到底怎样才可以更快的找到一个游戏的文本具体是在哪个文件里面。其实如果文本都是明文(未加密未压缩的原数据)的话那有
方法很快就找到文本,使用的工具主要就是CT或者CT2。下面我们先介绍下CT2的使用。

CT2可以说是最好用的汉化工具了,目前应该是注册版是最新的,而且功能也最全。注册版需要发邮件去注册。注册方法还是参看原帖吧
http://bbs.emu-zone.org/newbbs/viewthread.php?tid=631209
不想使用注册版的使用CrystalTile2 09.03.10这个版本,我会发到附件。

CT2一览


  由于使用的是WIN7,所以代码页(就是右上方那个0F旁边的@%SystemRoot%那个 下载 (5.91 KB)
2010-2-2 18:17

,就是代码页)显示不完全,XP下会正常显示。
这里先介绍下代码页,其实每个编码都有自己的一个代码页,比如Unicode的是1200,UTF8的是65001,shift-jis(简称就是SJIS)(这个是重点,很多游戏都使用这个编码)是932等等。点击右上方的代码页,然后选中932,就可以将右边的视图切换为SJIS的代码页。我们先不想那么多,拿一个游戏来试试找下文本。这里随便找一个硬盘上有的游戏,NDS的天元突破(1568_- _Tengen_Toppa_Gurren_Lagann_JPN_NDS,下载可以到http://nds.cngba.com/ndsrom/2007102917614.shtml)来下手看看。

  先进入游戏,随便找一句游戏中出现的对话 ,把ROM拖到CT2里面,代码页选好是932(SJIS,如果找不到可以换其他,以此确定该游戏是使用什么编码的),然后ctrl+F,我们就寻找“仕事”这两个字,点击搜索,很容易就可以找到对应的文本了,如图:


  很好,我们注意看左下角,显示了一个“SPC.NFP”,这个就是文本所在的文件名。CT2有功能是可以直接把单个文件导出,也可以直接分解ROM,点击工具--NDS文件系统信息,里面可以很直观的看见ROM中都有什么文件(文件这个菜单项里面有分解ROM的选项),如图:


  选中“SPC.NFP”,点击右键,导出文件 ,选择好路径然后保存。好了,文本就在这个文件里面。这样我们已经把游戏中的一小部分文件确定在一个文件的范围内了(当然不排除还有其他文件有文本,现在先不考虑),剩下的就是两种选择:第一是用现成的工具导出里面的文本(对单个文件导出,不要对整个ROM),第二是自己分析格式,然后针对这个游戏写一个导出文本的程序。由于是新手教程,所以我们不涉及程序的编写和数据的分析,下一楼我们重点说下用WQSG这个死神编写的工具如何导出文本。





二、文本导入导出2

  嗯,在说导出文本之前稍微说点点的原理。其实很多教程都有说到这个,就是关于编码的一些知识。一般NDS游戏使用的比较多的是Unicode、 UTF8、shiftt-jis这几个编码。再者,什么是编码呢?其实我们看见的这些字符并不是完整的把一个字符存储到文件中的,大部分都是存储了他对应的编码。编码就类似一个映射的关系,基本就是要做到“一一映射”,一个编码对应一种字符,而单个编码是一种代码页的一个元素。简言之,就比如
30=0
31=1
32=2
33=3
34=4
35=5

这些是ASCII码中数字的编码关系。也就是说,如果存储在文件中的是
30 31 32(16进制)
那游戏中读取到这段的时候就显示 0 1 2。

  又比如,我们刚才搜索的那个“仕事”,在CT2左边的16进制编辑器中我们可以看见对应的就是8E 64 8E 96。大家先不用深究,以后看多了慢慢就会理解了。
码表也是基于这个而制作的。我们现在先来看看WQSG这个经典的工具。

WQSG现在最新的版本是11月5号的版本,开源,在这演示我还是用的9月份的版本,大家需要新版的话可以到http://e.ys168.com/?wqsg 下载。
WQSG界面一览:



WQSG是一个功能比较强大的工具,可以配合CT2一起使用。
WQSG的基本功能有:
1.文本的导入导出
2.简单的补丁制作功能
3.基本的码表制作功能
4.文本替换
5.差值搜索(感觉好遥远···)
我们这就先说文本的导出,其他功能以后有机会再补充。

  由于一些标准编码是有现成的码表的,我们直接使用SJIS的码表对刚才的天元突破的SPC.NFP这个文件进行文本的导出。码表一栏里面先选择好附件给的码表。“验证码表重复”这个钩去掉就好,有时候是需要有点重复的,这个以后有机会再具体说。

  点开始导出的按钮,选择SPC.NFP这个文件,没有问题的话就直接导出了文本,我们先看看按照默认的设置导出的文本。
00002EA9,14,アダイ村入り口
00003939,18,アダイ村顔神様の間
000041F9,14,アダイ村食事処
……
00070E6D,16,毎日毎日掘ること
00070E89,16,だけが俺の仕事だ
……
以上是直接导出的文本的一部分。

先解释下那些数字的意思。
00070E89,16,だけが俺の仕事だ
00070E89指这句文本开头的地址,也就是だ这个字的地址,16指这句文本所占用的字节数,因为比如8E 64表示的是2字节,表示的是“仕”字。简单的说这句话其实每个字的编码都是占用了两个字节的存储空间,一共8个字,就16字节。说到编码这东西能说的太多了,所以大家可以先暂时这样理解。

既然看见了文本,就干脆先导入文本测试下试试。
先看看导入这,填充就是当翻译后的文本比原来的文本还要短的时候,缺的那部分填充什么信息。一般填充单字节就可以了,很多时候都用00和20。



修改文本 00070E6D,16,毎日毎日掘ること
为           00070E6D,16,仕事仕事掘ること

选择好原来的码表,导入到文件中,然后按照下面的图操作添加修改的文件:
选择导入文件



选择对应的文件,确定后点击工具栏的

下载 (1.25 KB)
2010-2-2 18:29



进入游戏中看看



  修改成功。毎日毎日掘ること 变为 仕事仕事掘ること。这只是文本导入的简单测试,其实具体的还要修改字库等然后一起测试一下。文本导出先说那么多,还有一个控制符的问题可能要提到,具体的到时候在后面的章节解释。
有事不要给我论坛留言了,经常没看见,给我邮件吧……

Rank: 12Rank: 12Rank: 12

UID
7594
星币
36
积分
636
阅读权限
110
注册时间
2007-12-14
最后登录
2016-7-23
发表于 2010-5-30 23:31:21 |显示全部楼层
本教程其他都是简单说下,最主要还是为了配合找人导图的,所以图片这块才会占有最大的比重。由于NDS有小部分图片的特殊性(当然也可以导PSP游戏的图片,下文会说到),使得那部分图片暂时还没办法直接用程序导入导出,但是我们可以借用CT/CT2本身的拼图功能去导出并修改图片然后导入。由于前面得到的一些反馈信息,所以本次和导图相关的教程不讲任何原理,大家就先看看大概是怎么来的,这部分必须要自己动手。
  本教程设计的示例文件的原文件都会上传到附件给大家,大家可以自己动手试试。

三、图片

1.CT2 NDS map图导入导出
  依旧是基于CT2的注册版(这里要特别注意,过去的版本不支持这样的功能,但是可以有替代的方法,见下文),先举例说下手动导MAP的方法。

  MAP图是NDS游戏的图片里面最容易导入导出的一种。我们打开CT2,这里用你的勇者的战斗结束画面的图片来说明。拖动BattleResultBgM.NCGR到CT2中,然后选择tile视图 下载 (3.29 KB)
2010-2-4 14:02

,默认情况下的tile视图如下:
下载 (92.29 KB)
2010-2-4 14:02



  NCGR一般来说可以算是包含了一个图片的数据,我们还要用到另外一个调色板的文件.NCLR的那个文件。
在CT2左侧的tile属性一栏中,修改缩放为100,tile颜色格式为GBA8BPP,一般来说MAP图使用GBA4BPP和8BPP两种就可以看见。而偏移地址的话NCGR一般都是0x30,如果不设置也可以使用CT2的快捷键ctrl+左右来调整(大家要注意,CT2这个功能经常使用)。如图:
下载 (12.42 KB)
2010-2-4 14:20



点击左侧”调色板“,然后点击导入,如图:


选择BattleResultBgM.NCLR,会发现视图变化如下:


  好,我们依稀看见了点东西。然后继续调整。回到属性一栏,将偏移地址填为30(这个数字默认是16进制),然后按下shift+左右键,调整图片每行显示的tile数(简单说就是那个8*8大小的格子数目),然后按shift+上下调整显示的行数,当我们调整到32*24的时候(如下图CT2的状态栏上显示的),会出现如图所示的情况:
下载 (73.76 KB)
2010-2-4 14:02



  然后选择好整张图片(方法很多,可以直接拖动选择,也可以点选第一个然后shift最后一个,这些是计算机基础,出问题也别问我啊),点击“导出”    下载 (2.19 KB)
2010-2-4 14:02

,选择好保存路径。然后就可以得到一个导出的图片了,要导入的时候点选该图片的第一个tile,也就是位于0,0坐标的tile(最左上角的),然后点击导入(导出旁边的按钮),之后记得先看看效果,然后鼠标呈十字形的时候要双击那个图片,这样才算完全导入了,导入之后保存,可以进入游戏中看看效果。

下面说一种更快的方法。
  直接用CT2打开你的勇者这个游戏的ROM,然后在NDS文件系统信息中找到BattleResultBgM.NCGR,然后点击右键,选择”解析MAP图像”,如图


  然后可以直接在CT2中显示出正确的MAP图,而不用自己去调整。后面这个方法比较快捷,但是不少用CT2的人都没注意到这个功能。对于遇到图片是压缩后打包的这种情况,可以解包解压缩后将图片按照NDS游戏格式用工具打包,然后就可以用这种方法去解析MAP图了。MAP图的就扯那么多,写程序导的我们就不讨论了,下面看看非MAP图如何处理。

2.其他NDS图片导入导出
  这个相对来说要麻烦一些,而且据朋友说还是有办法写程序导出的,但是可能比较抽象,具体的没深究。我们还是继续来看看你的勇者这个游戏里的一些图片。
我们看看TitleObjM.NCGR这个图片,发现里面并没有包含NSCR格式的同名文件。拖动到CT2,选择好调色板TitleObjM.NCLR,设置后可以观察到8BPP的显示不正常,我们按照下图来设置:


会发现依稀会看见一些东西了,然后调整下行tile数为8个,行数若干,可以看见如下图所示的效果:
下载 (14.03 KB)
2010-2-4 14:02



  很好,显示出了大部分东西了,现在我们要把TitleObjM.NCGR的窗口还原为CT2的子窗体,也就是可以在CT2里面拖动的而不是最大化的那种,然后点击CT2的“新建”按钮 下载 (1.22 KB)
2010-2-4 14:02

,会出现新的子窗体。切换到tile视图,按照上面说的设置设置好这个窗体,然后可以点击 “视图--自适应tile行列数”来自动填充好tile,如图:


下去就要开始拼图。比较下原图(这步不是一定要的,这只是说一个例子,不是每个图都要去比较)

选择断开的一块的前半部分    下载 (3.66 KB)
2010-2-4 14:02

,右键,复制,然后选择刚才新建的窗体的某个位置,右键,粘贴然后双击粘贴的图片(没双击旁边会有白边,可以拖动),效果如图
下载 (7.96 KB)
2010-2-4 14:02



然后选择后半部分,重复上面的步骤,然后粘贴到对应的新建窗体的位置,如图
下载 (9.87 KB)
2010-2-4 14:13



我们就基本算是拼好一个图了,然后选择好,重复上面MAP图的时候的导出,修改以后将之导入,结果如图:
下载 (9.32 KB)
2010-2-4 14:02



剩下的是分段,然后导入游戏原来的文件的对应位置,这个大家自己发挥下,我就不多说了,附上我导入的修改以后的图片的一部分给大家看看:
下载 (4.27 KB)
2010-2-4 14:02



  如果使用的不是注册版的CT2,可以使用“导出”、“导入”两个按钮,来保存到磁盘上然后再粘贴上去,效果等同于这个复制和粘贴,但是要麻烦一些。教程主要基于最近的两个版本,所以就不特别的写过去非注册版的,大家还是自行体会吧。

  大家多发挥下自己的想象力然后多动手,导图自然就懂了一些了。有部分游戏可能要分很多块来拼合,具体问题就具体分析了。

3.PSP GIM图片导出示例
  依旧是使用CT2,不依靠程序(其实完全可以写程序导出为其他格式的,但是还是再说明下这仅仅是用来做例子),在这仅仅是做一个例子,一般来说PSP游戏的图片可以直接看
出整张也可以对整张进行修改而不用像NDS的那样需要拼图。
下面用对战传说的一个图片作为示例。
比如vs_ch001.gim,先直接修改为GBA8BPP,可以看到下图的效果:


  此时发现图片显示比较诡异,按理来说,如果不想分析数据而单纯用CT来看一个未知或已知格式的图片,只要设置对,都可以显示出一定效果的图像。
在这我们可以从一些前辈的经验中发现,一般PSP的图片都会和8的倍数有关系,我们可以逐个尝试宽高的调整和行列tile数的调整。我们按照8的倍数递增,比如64、256和512
当我们设置到宽为512的时候,发现图片会显示的比较完整,然后按照下图的设置会看见如图内所示的效果(偏移地址可以靠微调ctrl+左右来调整,我这是直接观察数据填上去的):


附上原图转换过来的PNG图:


  调色板稍微套用了一个现成的,默认的调色板还是可以看出一点端倪的。除了一些有规律的图片,有部分还是要考经验才可以的,大家只要多换宽高和tile 颜色格式一般都可以看出一张图片,调色板的话稍微要点技术,大家可以去稍微研究下BMP这个格式就知道了,在这就不提了。
  另外一个例子暂时放到字库一环上。
有事不要给我论坛留言了,经常没看见,给我邮件吧……

Rank: 12Rank: 12Rank: 12

UID
7594
星币
36
积分
636
阅读权限
110
注册时间
2007-12-14
最后登录
2016-7-23
发表于 2010-5-30 23:33:09 |显示全部楼层
最后来说下字库,和一点点补遗。

四、字库
现在用CT2搞NDS游戏那比以前的简单多了,尤其是最常出现的NDS标准格式

的字库NFTR。比如我们直接拖动一个NFTR格式的文件到CT2里面,会直接看到如下的效果:


CT2可以直接设置好并完整的显示出这个字库。其他非标准的字库也不多提了,其实实质上也是类似于看一个图片的方法。

再来一个PSP的GIM格式的字库。我们看看装甲核心(ACFF)的一个字库。
拖动sjisfont_00f.gim到CT2中,稍微调整下,只能看见如下所示的东西:


就看图,这个是不是字库不好说,但是文件名却是在暗示着我们这个是一个字库,然后我们继续,宽度调成是8的4倍即32的时候,会发现:


可以看出一点效果了,然后调整行列tile数,当为16*64的时候会完整的看出这个字库,如下图:


好了,字库的就简单说到这,这个东西要靠点感觉和经验,大家要多看多总结多想下才会更容易的设置好并看出一个字库。

五、补遗
  这里要简单的说点原理。前面说文本的时候有说到控制符这个东西,不过具体说来什么是控制符呢?比如0A,一般情况下,ASCII码都是使用0A来作为换行的,我们来看一组数据:
30 31 32 0a 30 31 32
如果游戏读取文本的时候遇到这样一组数据,会这样显示:
0 1 2
0 1 2

即是一共两行。在这0A的意思就等于是换行,C语言里面的\n与之等效。
还可以举这样一个例子:
ff ff 30 31 32 20 20 20 20 20 20 20 ff f0 30 31 32
而显示效果是:
    0 1 2       0 1 2           --中间一共7个空格,20表示空格
(红色)(默认颜色)
在这就可以看出,ff ff两个字节就是用来控制字符的颜色的,即遇到ff ff 其后的字符都会显示为红色,而遇到ff f0其后的字符都会显示为默认的颜色。
我们就可以定义如下的控制码表:
ffff=红色
fff0=默认色

然后配合WQSG里面的”控制码表“一项导出文本,可发现文本会显示如下:
{红色}0 1 2       {默认色}0 1 2
其中的{红色}和{默认色}就是控制符。

找控制符需要一个16进制编辑器的帮助,新人就直接使用CT或者CT2就可以了,左边显示的是16进制值,右边的是对应的文本,点击对应的文本左边的对应值会变颜色,很直观,如图:


其他的大家自己研究了,如果具备了一定的数据观察能力,这些控制符完全不在话下,你们会轻松搞定。
有事不要给我论坛留言了,经常没看见,给我邮件吧……

Rank: 1

UID
64801
星币
20
积分
13
阅读权限
10
注册时间
2011-1-10
最后登录
2011-1-10
发表于 2011-1-10 16:54:00 |显示全部楼层
慢慢学习

Rank: 2

UID
84215
星币
86
积分
52
阅读权限
20
注册时间
2012-3-20
最后登录
2015-3-9
发表于 2012-3-21 10:53:54 |显示全部楼层
看个教程不容易!!不卡行不行

Rank: 2

UID
90287
星币
34
积分
25
阅读权限
20
注册时间
2012-7-5
最后登录
2012-8-19
发表于 2012-7-19 12:18:06 |显示全部楼层
真是看得我晕头转向

Rank: 1

UID
112133
星币
17
积分
3
阅读权限
10
注册时间
2015-11-5
最后登录
2015-11-5
发表于 2015-11-5 16:01:58 |显示全部楼层
多谢。来学习。学习
头像被屏蔽

禁止发言

UID
115225
星币
59
积分
350
阅读权限
0
注册时间
2016-7-25
最后登录
2017-10-24
发表于 2017-9-26 09:41:28 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Archiver|星组游戏论坛 ( 京公网安备110403080002 )  

GMT+8, 2017-11-22 15:15

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部