守护¥云 发表于 2010-8-24 16:33:47

【GBA、NDS、PSP】汉化基础教程——文字篇(五) by PGCG

本帖最后由 守护¥云 于 2010-8-24 17:31 编辑

汉化基础教程——文字篇(五) by PGCG

  
   翻译完了也整理修改完了接下来就可以考虑把译文中出现的所有中文汉字的字模导入游戏文件里面,如果以前的日文字模都不会再出现的话直接覆盖掉原字模就可以了。多数时候可能还是会保留英文字符、符号、日文平假名、片假名而仅仅是替换日文汉字部分。由于中文汉字数量庞大,一个剧情比较简单的GBA角色扮演游戏少的都有八九百个中文字符,而原始的字库空间有限无法容纳下那么多中文汉字。比如《光明之魂2》原始字库有700个左右,去除英文大小写字母和符号就更少了。对于这种情况我们就必须对原来的字库扩容。
  一般的情况下,每个游戏之中总会有部分空白区域,换句话说文件的内容并不一定连续,我们可以适当地利用这些空白,如果这些空白仍然不够使用就可以把新字库生成到原来文件的末尾区域以达到扩容的目的。新字库扩容后还需要修改字库地址的计算公式,很多时候文件中都有一个基址指针,适当地修改就可以达到目的,不过寻找起来有点麻烦,倘若运气好就是一个绝对地址,就像文本脚本的指针一样,这样寻找起来就比较简单了。还有两点需要注意:即便是在游戏末尾添加的字库也不能删除原字库,如果删除了会使字库后边的程序迁移而失去原有功能,指针地址会指向错误的地方,所以只能替换,绝不能进行添加删除等会造成位置移动的操作,这也是整个汉化过程自始至终都要注意的。有些游戏的容量必须使用标准的容量,特别是任天堂的游戏。1Mb 2Mb 4Mb 8Mb 16Mb 32Mb等等,这些是任天堂定的标准容量,如果字库扩容后超出了上一级的标准容量就必须满足次级的容量。比如说一个8Mb的游戏扩容后可能到了10Mb,我们就需要继续在文件末尾添加“垃圾”一直到16Mb为止,某些游戏在文件的头部还记录了整个文件的校验信息甚至文件的容量大小,扩容后这些地方也需要改,比如SFC。好在对于GBA来说并没有这么多的关联地方。
  新字库的生成最好使用工具来完成,除非你觉得有那份闲情逸志喜欢手工描绘。生成前需要把翻译文本中所有用到的汉字都统计出来(可以使用《Counter》),然后再生成,这样做既避免了字模的重复又不会产生垃圾字模。

  字模生成后就可以制作新码表了,其实这个步骤可以在生成新字库的时候一起完成了,每添加一个字模就产生一个对应码,依次进行下去。这里的字符编码并不是由你自己定义,而是由原编码来决定的。比如在原码表中“0001=A”,在你把“A”的字模替换成了“啊”以后对应关系就是“0001=啊”,字符编码是用作位置计算的,特别是在扩容字库后一定要认清楚对应的位置关系。整个字库都导入完毕后可以使用《TLP》这些工具再次查看一下字库是否已经按照要求排列好了。
  以上都准备完毕并确认以后就可以导入文本了,这个过程基本上和导出相逆,同样建议自己编写工具完成,《SIN》实在不怎么样。导入的时候注意整体的统一,如果个别句子移动了位置还要考虑是不是有指针等等,每个细节都需要去考虑,考虑得越多出现问题的机率越小。

  导入完成后基本上游戏的文字汉化就结束了,最后就是找几个爱玩游戏的朋友适当测试一下,看看有没有什么BUG的。对于GBA游戏来说最好是VBA模拟器上和GBA游戏机上都进行测试。虽然说VBA模拟器游戏兼容性很高,但模拟器绝不能简单地认为是电脑上的游戏机,等你对模拟器实现原理有一定了解后就知道为什么要这样说了。换句话说就是这个世界上没有100%兼容的游戏模拟器,除非游戏机也使用Inter的80x86CPU。在发现问题后记录下详细的情况,以便后期进行修改并再次测试。模拟器上的测试可以适当使用记忆功能来进行测试,再次提醒大家,慎用模拟器的即时记忆(VBA的.sgm),尽量使用游戏自己的记忆功能(VBA的.sav)。
http://bbs.cntgb.com/attachment/Mon_0705/19_2_8e2b8058da9cc92.gif
http://bbs.cntgb.com/attachment/Mon_0705/19_2_32c1b002d764493.gif
http://bbs.cntgb.com/attachment/Mon_0705/19_2_10027dfb0b10c27.gif
http://bbs.cntgb.com/attachment/Mon_0705/19_2_93640fd6800b287.gif



小结:

  多数时候,一个游戏并不是只有一个字库系统,有两个三个是很正常的事情,各个字库分工不同,有些是用来显示正文的;有些是用来显示道具名的;有些是用来显示人名的等等。比如《光2》就有两个字库系统:游戏开始输入玩家姓名的时候使用的8*8的小规模的字库,而游戏中的文字使用了16*16的主要字库。基本上每个字库都是独立存在的互不影响,这时每个字库就可以单独研究并进行修改,但有时候也是有联系的,比如《光2》虽然有两个字库,但这两个字库是重叠的,8*8的取名字库的码表和16*16字库的开头部分是一致的,因此16*16这个字库的最开始的百多个字符将会出现在取名系统里,为了符合取名的意义,所以也要适当地排列一下字模的前后顺序。又如《SD高达》里面12*12的字模和8*12的字模就是完全独立的,互不影响。
   到这里本教程的文字汉化的基本原理介绍就结束了,教程的介绍相对浅显,还有很多很多问题无法通过几万的汉字就能说清楚的,多数时候遇到问题都需要你自己去解决。教程介绍的情况都是最基本的,但实际情况下很多时候都会存在压缩格式甚至OBJ对象这些比较难以解决的问题。要想修改的话就必须先进行解压缩(可别以为需要Winzip WinRAR什么的),因此就必须得研究压缩的算法等等,这些都是需要进行ASM跟踪破解游戏程序。只有ASM才是破解游戏最万能的方法,下一节适当地为大家介绍一下ASM,不过你得对汇编有一定了解才行。
页: [1]
查看完整版本: 【GBA、NDS、PSP】汉化基础教程——文字篇(五) by PGCG