游戏饭饭玩家社区  
  
查看: 9847|回复: 17

[教程] 游戏饭饭PSP汉化破解教程之五:理解字模(高级入门篇)

    [复制链接]

发表于 2009-10-12 00:00:12 | 显示全部楼层 |阅读模式
雷雷的汉化教程又来啦~~上次教程让大家理解了什么是天书,相信大家已经能够利用WINHEX软件来看懂游戏内文件的16进制内容了,这次我在让大家学习一下关于字模的一系列内容。

     我们在之前的初级篇已经知道,游戏内的文字其实是由很多很多的16进制数字组成的,而之所以这些16进制数字能在游戏运行的时候显示成文本,是因为在运作过程中,系统将这些16进制的数字通过码表来逐个替换成文字,例如之前提到的“CED2=我”。我们来做个最简单的比方:

日语码表中有如下对应关系:


89E4=我
8DDD=在
8ADF=玩
9FE0=游
9D45=戲


     那么,倘若一个文本中的16进制天书有这样一串数字:89E48DDD8ADF9FE09D45,那么在游戏运作的过程中,系统就会将这些16进制的数字通过码表转换成我们看得懂的文字,即最后显示为:我在玩游戲


     现在出现了一个问题,系统虽然知道了这些对应关系,例如89E4是变成我这个字,那么作为计算机,要怎么把这个我字,显示在PSP的屏幕上的呢,要理解这个,我们可以先回想一下什么是活字印刷。

     在古代,我们如果需要印刷一篇文章,就必须先把手写稿交给印刷工,而这个印刷工看着你的手写稿,分别把手写稿上的字一个个的用单个文字印章排列好,然后在这些印章上涂上墨水,在纸上一按,你就可以看到实际印刷后的文字内容了。

     现在我们打个比方,你的手写稿就是游戏文本的16进制数字,比如89E48DDD8ADF9FE09D45,而印刷工就扮演了码表的角色,他将你的这些手写字对应的文字刻章找出来,最后,大家就想到了,就是那些刻章,让文字最终显示在纸上。而这些刻章,在游戏中的体现就是字模。

     字模即字体模型,在游戏中扮演着重要的角色,是它让那些文字可以真实的显示出来让你的眼睛能看到,打个比方,如果字模中的“我”这个字,把它修改成“你”,那么,就算你的码表里显示89E4=我,而因为刚刚把“我”这个字体模型修改成了“你”,那么在实际游戏过程中,虽然系统正确的转换出了“我”这个字,但由于字模的关系,最后在显示屏上显示出来的结果变成了你,就好象印刷工人在排列文字印章的时候排错了一个,结果变成了错别字一样。

     那么,字模在汉化中起到了什么作用呢?

     首先,我们应该清楚一点,日语标准的SJIS码表中,是不可能包含所有的中文字的,这时候,假如你翻译好的文本中有一个“楼”字,而在SJIS码表中根本没有这个字,那么系统就不能显示这个字了。

     为了要让“楼”正常的显示出来,我们就要在码表中修改出一个“楼”字来,比如,我将SJIS码表中的“8C79=軽”,修改成“8C79=楼”,这样,一旦系统遇到了8C79,就会输出楼了,那么,相对应的,我们也需要把8C79的这个字的字模,也修改成楼字。接下来,系统就知道8C79=楼,而用字模正确的输出“楼”这个字。

     一般情况,文本较多的游戏,常用的中文字大概会用到3000个左右,而总字数大约有30-100万字不等,这么大的文本量,我不可能一个个的去查找文字然后去替换码表和字模,这时候,我们就需要利用工具来实现。

     首先,假设我们手头上有一个已经翻译成中文的文本、一个此游戏中使用的字模,以及一份标准码表。那么假设我们这时候什么都不做,直接将文本导入回游戏中,那么导入工具会提示你,一大堆的文字在码表中不存在,而一个个的去替换,等你替换完几十万个字的时候,估计人都吐血了。因此我们可以借助WQSG的码表工具,先做一次文本的全文统计,这时候,我们会从WQSG的右侧窗口发现一份新的码表,而这份码表,就是单独为你这个翻译好的文本制作的,不会有多余的字,而且也一定包含了翻译好的文本的所有中文字,是一份最优码表。接下来再利用WQSG工具,参照原SJIS码表,将这个新的码表制作成一份真正的码表文件,然后备用。

     然后,既然有了全新的码表,我们也要对这个码表的字模进行修改,我们利用crystaltile工具,将原始字模导出一张对应的图片,例如下图:


     接下来,根据原始码表中的顺序,一个个的将新码表的文字重新在这个字模中写一遍,这个工作就可以利用PHOTOSHOP来处理,擦掉原来的文字,然后修改成新码表中的文字,这样,字模也根据码表修改完成了。

     最后,利用这个码表和这个字模,再导入文本,由于码表是单独为这个文本制作的,因此肯定不会出错,而导入后,由于字模也被修改成新码表中的文字了,那么系统也会根据这个码表的对应关系和字模将翻译后的文字准确的输出到显示屏上。


     其中我要强调一下,事实上,码表和字模也是有对应关系的,很简单的比方,印刷工要凭什么来识别手写稿中的“他”字就是需要用“他”这个文字印章呢?虽然我们觉得想当然,但是这也是需要一个认知过程的,而这个识别过程,在游戏里就表现为“字模映射表”。

     假如,“我”这个字在字模里是第5行第6列,那么字模映射表就是用来告诉系统,当遇见码表中的“我”这个字后,从字模的第5行第6列取出我这个字体模型。

     用表格打个比方来体现映射表是最好理解的:

码表中的文字该字对应在字模中的位置
第5行,第6列
第13行,第4列
第25行,第1列
第6行,第7列
第23行,第12列


     系统依照这份码表,逐个取出文字的字模,这就是所谓的字模映射表。

     一般在普通汉化中,映射表是不需要修改的,因为我们只要准确的修改了码表和对应的字模后,系统都能正常识别他们之间的关系,但是,由于一些特殊情况,我们不得不修改映射表。至于这些特殊情况,其概念过于抽象,就不做叙述了,否则长篇大论大家肯定要打瞌睡了。

     这次我们熟悉了一下字模和字模映射表,我相信,这一讲的内容是不太容易有东西让大家去练习的,但是,主旨是让大家理解他们的概念。从下一讲开始,雷雷将直接通过演示破解一个游戏的全过程来让大家跟着脚步一点点的掌握。而举例的游戏将是PSP《薄樱鬼》,在讲解的过程中,都会附带实际的工具、游戏中的内容来进行,所以如果大家希望准确的跟着雷雷演示的全过程来学习,就需要先去下载该游戏,以便到时候随时根据我的讲解进行操作。



游戏饭饭汉化组成员招募

本教程为游戏饭饭汉化组雷雷原创贴,转载请注明出处。。!!

下一篇:游戏饭饭PSP汉化破解教程之《薄樱鬼》实战破解(一)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入饭饭  

x

发表于 2009-10-12 06:51:08 | 显示全部楼层
赶紧来占个沙发学习~~~最近有些倦怠,需要把前面的教程复习一下了估计。。。

发表于 2009-10-14 13:21:34 | 显示全部楼层
真的太感谢了啊!我想快点学会!

发表于 2009-10-14 22:21:38 | 显示全部楼层
感谢楼主的教程!现在就下薄樱鬼去。。。

发表于 2009-10-15 07:51:00 | 显示全部楼层
恩恩~~这是关于导入的部分了,但是如果本身游戏文字因为进行了压缩编译,不能顺利导出的话,要怎么编写解压程序呢?之前看到个C讨论贴,提到了不同的解压算法,以后会有相关的教程么?

 楼主| 发表于 2009-10-15 12:16:04 | 显示全部楼层
解压解密这部分是整个游戏破解过程中最难的,它需要破解人员对编程有极高的熟练度,以及对解压加压的原理及其的理解才可以办到

发表于 2009-10-15 13:49:17 | 显示全部楼层
这个有点难懂,不过看完之后还是有所认知,密切留意教程动向,努力学习!最后要感谢楼主的辛勤劳动。

发表于 2009-10-21 20:14:20 | 显示全部楼层
多謝雷雷的教學~!!
  1. 接下來,根據原始碼表中的順序,一個個的將新碼表的文字重新在這個字模中寫一遍,這個工作就可以利用PHOTOSHOP來處理,擦掉原來的文字,然後修改成新碼表中的文字,這樣,字模也根據碼表修改完成了。
复制代码
各類教學中常常要求將字模找出來

原來就是要修改成對應的碼表順序~

那如果字模有3000個中文字

那有可能每個字都要改?

還是一般只對沒有的字做修改?

 楼主| 发表于 2009-10-21 20:42:38 | 显示全部楼层
要修改几个字主要是看新码表有多少,如果新码表有2000,而旧的字模里有5000,那只要按顺序替换到第2000个就行了,如果旧的字模只有3000,而新的文本需要有5000个字,那么,就必须扩容字模了。。。。

发表于 2009-11-16 20:30:18 | 显示全部楼层
感谢啊,很详细哦,谢谢
您需要登录后才可以回帖 登录 | 加入饭饭  

本版积分规则

快速回复 返回顶部 返回列表