浅谈模拟游戏的汉化
暗黑兔 发表于 2009-12-09 09:45 | 来源: | 阅读
原作者:屎王
这个可是屎王的大作之一,我的汉化基础知识就是从这里学的。发出来给同样想汉化游戏的同人分享。申明任何个人和组织未经“屎王”本人同意不得将本文用于任何商业用途。原文如下:
模拟器的出现给我们带来了很多好的东西。我们不仅能在电脑上玩到各种游戏机的优秀游戏而不用一一去购买相对昂贵的游戏机,同时,由于游戏运行在 电脑上,使得我们可以享受到很多在游戏机上无法得到的乐趣:例如,你可以打开 FPE,修改游戏的参数;你可以把游戏的图片截取下来,保存到电脑上、或者 上传到网上为你的主页添光;也可以将游戏音乐录制下来随时欣赏;或者把你的游戏过程录制成动画在朋友面前炫耀……然而最令人兴奋的是:通过电脑提供的丰富 功能,我们可将外文游戏制作成中文版,在模拟器上运行!
这意味着什么?通过模拟器,你可以在电脑上享受中文的《最终幻想》、《时空之轮》、还有《勇者斗恶龙》!一品这些世界顶级游戏的深刻内涵而不是靠着一本功略糊里糊涂地攻关(结果玩过以后连游戏讲的是什么故事都不清楚……)。
其实在国外,已经有很多日文的模拟游戏(游戏机上的 game 基本都是日文)被翻译成了各种各样的语种(如下图:《勇者斗恶龙6》英文版)

老外把这种翻译模拟游戏的操作成为 romhacking,把从事这行的人称 作 romhacker,顾名思义就是专门修改 ROM 的人,他们将游戏 ROM 改成英文,然后制作一个“补丁”(patch),而我们只要用这个补 丁在原游戏上“补”一下就能和日文说拜拜了。这的确方便了大多数既想玩高水准的日本游戏,却又看不懂日语的游戏玩家,你可以在这里下载到很多日本游戏的英 文补丁:http://www.zophar.net
补丁一般是后缀名为 .IPS 的文件。得到补丁后,你需要使用专门的软件将补丁“补”到 ROM 里面。我比较常用的是 IPS Plus 这个小程序,你可以在 http://romhanhua.yeah.net 找到它。这是个DOS 小程序,通过命令行方式执行,它的执行命令如下:
IPS <ROM 文件名> <补丁文件名>
例如,你得到的补丁在c:\windows\desktop\dq5e.ips。要用它给e:\games\dq5.smc打补丁,那么执行:
IPS e:\games\dq5.smc c:\windows\desktop\dq5e.ips
即可。注意在打补丁之前一定要备份原来的ROM 文件。
然而作为中国人,相对于英文而言,我们更希望玩到中文的游戏。令人兴奋的是,国内已经陆 续出现了一批批汉化日文模拟游戏的组织,在大家的努力下,正不断有日本游戏被翻译成中文。但是和庞大的老外翻译团体相比,搞中文化工作的人还是太少,我们 的进度还是太慢呀!所以本着宣传倡导的(爱国主义)精神,本人在此特别向各位介绍汉化模拟游戏的初步知识,希望以本文为桥梁,国内能出现更多 的 romhacker,国人能玩到更多高水准的中文游戏!
1、选择适合你的游戏主机
模拟游戏原本都是为游戏机设计的,不同机种的游戏,其汉化方式、难度也有所不同,如果你 是新手想找个机种入门,那我推荐你选择超级任天堂(SFC),原因嘛:首先,SFC 游戏中有太多的极品,随手一拈就能找到理想的汉化对象;其 次,SFC 性能强大,能够很好地支持中文;最后,由于第一个原因,目前关于SFC的汉化资料非常丰富,几乎任何入门级的问题都能找到满意的答案。此 外,MD 也是个不错的选择(不过资料就不如SFC丰富了)。但我不推荐FC。因为 FC 的性能太低,要支持中文非常麻烦,各位如果观察一下就能发现, 大多数日文 FC 游戏的文字都只包含假名而没有汉字,就是这个原因。
2、汉化游戏需要了解的概念
字库:同 Windows 中的“黑体字库”、“宋体字库”一样,游戏也需要一个字库,它储存着游戏中每个文字的图像信息(模样),这样游戏机才知道哪个字应该怎么写。
码表:文字总是被转换成数值储存在电脑中的,不同的数值代表着不同的文字,而这个数值就 是该汉字的编码。不同的游戏有着不同的编码,例如有游戏用一个字节 00 表示汉字“我”,而有的游戏用两个字节 AABB 表示汉字“我”。而某个游戏 中所有文字及其对应编码组成的表就是它的码表。
脚本:游戏中的对话、文字信息,这些都是脚本。脚本是按照码表编写的,例如某个游戏的码表中,CD 表示“化”,05 表示“戏”,98 表示“游”,45 表示“汉”,那么,脚本 98 05 45 CD 的内容就是“游戏汉化”。
3、汉化游戏需要具备的能力
首先你要懂外语,或者你拥有一位懂外语的同伴。翻译是汉化中最重要的一环,所以高素质的翻译人员是很必要的。
其次,你最好懂一门编程语言,为什么?因为汉化中有很多重复性的工作,手工操作很容易出错,如果你会编程,将方便不少。
剩下的就要分等级了。不同的游戏,汉化的难度是不同的,这主要看原游戏的程序员手段够不够狠。大多数 SFC 游戏的程序员是很和善的,你一般用工具 软件配合本文介绍的方法就能轻松汉化这些游戏,面对这些 ROM,你不需要懂太多的东西,即使初学者也能很快上手。而最毒的,比如《勇者斗恶龙5/6》、 《重装机兵2》的程序员,他们把字库、脚本全都压缩了,要汉化它们,首先就要对这些东西进行解压缩,这时候,你必须具备对游戏程序的分析破解能力,了解游 戏机所属的汇编/机器语言,充分了解游戏机的技术信息……当然如果学到这一步,你就可算是真正的 Master Of Romhacking 了:)
那么,具体来说应该如何汉化呢?首先是寻找。这里说的寻找,指的是字库的寻找、码表的寻找、以及脚本的寻找。字库找到了,我可以修改它,把某个字改成 别的模样,例如将“あ”改成“啊”,那么游戏画面中所有原本应该是“あ”的地方都变成了“啊”;码表找到了,我可用它来寻找脚本,例如在某个游戏 中:00 代表“あ”,0F 代表“な”,0A 代表“た”,那么,我要寻找“あなた”,就可以在 ROM 中查找 00 0F 0A 这 3 个连续的 字节;脚本找到了,我可以翻译它,例如把“ありがとう”翻译成“谢谢”。
其次,你最好懂一门编程语言,为什么?因为汉化中有很多重复性的工作,手工操作很容易出错,如果你会编程,将方便不少。
剩下的就要分等级了。不同的游戏,汉化的难度是不同的,这主要看原游戏的程序员手段够不够狠。大多数 SFC 游戏的程序员是很和善的,你一般用工具 软件配合本文介绍的方法就能轻松汉化这些游戏,面对这些 ROM,你不需要懂太多的东西,即使初学者也能很快上手。而最毒的,比如《勇者斗恶龙5/6》、 《重装机兵2》的程序员,他们把字库、脚本全都压缩了,要汉化它们,首先就要对这些东西进行解压缩,这时候,你必须具备对游戏程序的分析破解能力,了解游 戏机所属的汇编/机器语言,充分了解游戏机的技术信息……当然如果学到这一步,你就可算是真正的 Master Of Romhacking 了:)
那么,具体来说应该如何汉化呢?首先是寻找。这里说的寻找,指的是字库的寻找、码表的寻找、以及脚本的寻找。字库找到了,我可以修改它,把某个字改成 别的模样,例如将“あ”改成“啊”,那么游戏画面中所有原本应该是“あ”的地方都变成了“啊”;码表找到了,我可用它来寻找脚本,例如在某个游戏 中:00 代表“あ”,0F 代表“な”,0A 代表“た”,那么,我要寻找“あなた”,就可以在 ROM 中查找 00 0F 0A 这 3 个连续的 字节;脚本找到了,我可以翻译它,例如把“ありがとう”翻译成“谢谢”。
这就是汉化,不管你相不相信,汉化就这么简单。基本原理就是这样,不管是简单的 ROM 还是复杂的 ROM,其基本步骤都是这样的,不同点仅仅在于“寻找/修改”的难度不同,但基本的原理的确都是这样。
在这里我以我曾汉化过的SFC游戏《天地创造》(如下图)为例子,向大家介绍汉化的基础知识:

在这里我以我曾汉化过的SFC游戏《天地创造》(如下图)为例子,向大家介绍汉化的基础知识:

第一步:寻找/修改字库
前面说了,字库中储存着游戏所用文字的图像信息。找到字库将有利于我们寻找码表和设计我们自己的字体。用来寻找字库的武器很多,其中最经典的莫属 Tile Layer Pro 这个小工具了。你可以在http://romhanhua.yeah.net 找到它。其操作界面如下图所示:

选择 File -> Open,打开《天地创造》的 ROM(如下图)。图中五颜六 色那一块就是我们要搜寻的区域了。你也许会问:“那乱七八糟的都是些什么呀?”当然,那些乱糟糟的东西我们不用管,它们可能是程序代码,也可能是游戏数 据,总之,我们的目标只是字库。

上下拖动滚动条,在ROM中寻找类似文字的图块,突然发现这么一片区域(如下图),它看起来很整齐,但又看不到到底是什么:

可它和前面看到的大多数混乱区域又有所不同,隐隐约约似乎还能看到英文字母的样子。不管三七二十一,先换个格式看看,也 许就能看清楚了,选择 View -> Format,可见 Tile Layer Pro 支持各种机型的图形格式。试试不同的图形格式,当选 定 Gameboy 时,奇迹出现了(如图):

这个看不明白?那么看下图:

看出点什么没有?很明显,最左上角的四个格子(说专业点,那叫做“Tile”)组成了英文字母“P”:其中前面两 个 Tile 组成上半部分,后面两个 Tile 组成下半部分。也就是说,每个字体由四个 Tile 组成,前两个组成上半部分,后两个组成下半部分。 为了证实我们的猜测,让我们再做几个试验,试试后面的四个 Tile,可以拼成“Q”,再后面是“R”、“S”,“T”(如下图):

……哈!原来《天地创造》的字库竟是如此的简单!
字库找到了,格式也搞清楚了,下面我们就练练手,试着乱改几个 Tile!
好的,那么我们先拿“と”字下手:在字库中找到组成“と”的四个 Tile,然后用鼠标左键选中其中一个,此时这个Tile 将出现在右边的编辑框中。

然后我们就可以从调色板中选取相应的色彩来画 Tile 了。

比如,我们可将组成“と”的这四个 Tile 画成下面这个样子,一个表示胜利的“V”型手势:

然后选择 File -> Save。接着运行游戏,你发现什么改变了吗?没错!游戏中所有的“と”都变成了我们的“V”(如下图)。

很有趣不是吗?要说原理嘛,因为字库中储存的本来就是每个文字的“模样”,游戏在显示每个文字时都要从这里打听每个字该怎么写,这里的内容一改,当然画出来的图像也会改变啦……simple!
以上的内容就是字库的寻找/修改了,不过请记住,并不是所有的 ROM 都这么简单。每个游戏都有自己储存字模的一套方式,上面的仅仅是《天地创造》的格式。针对不同的游戏,你一定要学会多观察,多分析。但也不必担心,查寻/修改字库的大体原理都是这样。
什么?你问修改字库有什么用?废话!你能保证游戏本来的字库包含你汉化所要用到的一切字体吗?在日文字体中,你能找到“你”、“是”这些汉字吗?当然不能!所以我们只能通过修改字库,往 ROM 中添加这些字体。
第二步:寻找码表
然而对于整个汉化过程而言,仅仅把字库解决掉还是不行的。我们最终的目的是要翻译游戏中的文字,因此我们还必须找出游戏的脚本,字库的修改是创造我们自己的字型的基础,而脚本的修改才是翻译的基础。
要找到脚本,首先就必须找到码表。
码表是什么?前面曾说到,码表是“某个游戏中所有文字及其对应编码组成的表”。因此和字库不同,码表并不是实际存在于 ROM 中的数据,它只是我们为了方便查寻脚本而建立的一组映射表:每个文字对应一个编码。
那么,怎么寻找码表呢?寻找码表的方式有很多种,比较常用的是下面 3 种:标准猜测法、字库猜测法、ASM HACKING 法。
标准猜测法:
这是比较菜的一种方法,利用标准的日语 50 音排列顺序来定位编码的顺序。标准的日语 50 音图如下:
あ:00 い:01 う:02 え:03 お:04
か:05 き:06 く:07 け:08 こ:09
さ:0A し:0B す:0C せ:0D そ:0E
た:0F ち:10 つ:11 て:12 と:13
な:14 に:15 ぬ:16 ね:17 の:18
は:19 ひ:1A ふ:1B へ:1C ほ:1D
ま:1E み:1F む:20 め:21 も:22
や:23 ゆ:24 よ:25 ら:26 り:27
か:05 き:06 く:07 け:08 こ:09
さ:0A し:0B す:0C せ:0D そ:0E
た:0F ち:10 つ:11 て:12 と:13
な:14 に:15 ぬ:16 ね:17 の:18
は:19 ひ:1A ふ:1B へ:1C ほ:1D
ま:1E み:1F む:20 め:21 も:22
や:23 ゆ:24 よ:25 ら:26 り:27
る:28 れ:29 ろ:2A わ:2B を:2C
ん:2D
ん:2D
冒号右边的就是各假名所对应的标准编码了(注意是 16 进制)。不过请注意,这些编码只能作为我们所猜测的码表,后面将介绍利用“相对搜索”找到真正的码表。
字库猜测法:
如果你已经找到游戏的字库,那么推荐使用这种方法,它比前面的“标准猜测法”更精确、成功率更高。字库猜测法的原理是:利用字体在字库中出现的顺序来设定码表。比如说《天地创造》的字库:
从第一个字体开始,依次是:が、ぎ、ぐ、げ、ご、ざ、じ、ず、ぜ、そ、だ、ぢ、づ、で、ど……

从第一个字体开始,依次是:が、ぎ、ぐ、げ、ご、ざ、じ、ず、ぜ、そ、だ、ぢ、づ、で、ど……
那么,我们可以这样来设定我们的“猜测码表”:
が:00 ぎ:01 ぐ:02 げ:03 ご:04
ざ:05 じ:06 ず:07 ぜ:08 ぞ:09
だ:0A ぢ:0B づ:0C で:0D ど:0E
…………
ざ:05 じ:06 ず:07 ぜ:08 ぞ:09
だ:0A ぢ:0B づ:0C で:0D ど:0E
…………
和前面说到的一样,这个也只能作为我们所猜测的码表,在后面我们将利用“相对搜索”配合我们的“猜测码表”来寻找游戏真正的码表。
ASM HACKING 法:
这是最究极的,也是要求最高的,但同时也是最可靠有效的。ASM HACKING,说白了,就是“程序破解”,换句 话说,这种方法的原理就是通过阅读游戏的源机器语言程序来获得游戏的码表,但这对新手来说确实太可怕了……好在大多数游戏都能用第二种方法解决。由于本文 定位于汉化入门,所以也就不打算对 ASM HACKING 的相关知识做太细的讲解,总之它是最高级的汉化技术,只有它能实现完美的汉化,但要完全掌握 它,需要很长的时间……
前面我们说到了“相对搜索”这个概念。那么到底什么才是所谓的“相对搜索”呢?
我们通常所说的搜索,往往指的是“绝对搜索”(Absolute Search):也就是说,我们指定要搜索某段数 列,搜索程序就严格地在目标区域中寻找完全匹配的对象。而“相对搜索”(Relative Search)则不同,如果选择相对搜索,搜索程序将按照我们 指定的数列各元素之间的关系(差值)进行搜索。比如说有下面一段数据:
2,3,1,2,3,4,5,7,8,9,0
如果我们用绝对搜索寻找目标“3,4,5”,那么我们只能得到 1 个答案。因为上面的数列中只有一组“3,4,5”。
而如果我们用相对搜索寻找目标“3,4,5”,那么我们将得到“1,2,3”、“2,3,4”、“3,4,5”、“7,8,9”,为什么?因为这些结果中,各个元素之间的关系(差值)和“3,4,5”相同。明白了吧?这就是相对搜索,非常简单!
而如果我们用相对搜索寻找目标“3,4,5”,那么我们将得到“1,2,3”、“2,3,4”、“3,4,5”、“7,8,9”,为什么?因为这些结果中,各个元素之间的关系(差值)和“3,4,5”相同。明白了吧?这就是相对搜索,非常简单!
那么话又说回来,相对搜索对汉化(或者精确一点说,对寻找码表)到底有什么用呢?
首先看看我们的猜测码表,我们真正猜测的是什么呢?实际上,是各个文字之间的编码关系,例如标准猜测法:我们实际上 是猜测游戏的实际码表中,“あ”的编码比“い”小一(也就是“あ”在“い”前面一个编码)、“い”比“う”小一、“う”比“え”小一、“え”比“お”小 一……而在游戏的实际码表中,“あ”的编码到底是多少我们还不得而知。也就是说,我们并不知道每个文字的实际编码,但我们能猜到各个文字其编码之间的关系 (差值)。
在这种情况下,选择“相对搜索”的理由也就足够充分了。
那么,概念搞清楚了,现在我们就开始寻找《天地创造》的码表吧!
既然我们已经找到了《天地创造》的字库,那么,我们不妨使用“字库猜测法”来寻找它的码表吧。先看看《天地创造》的字库,我们编辑出这样的“猜测码表”:
が:00 ぎ:01 ぐ:02 げ:03 ご:04
ざ:05 じ:06 ず:07 ぜ:08 ぞ:09
だ:0A ぢ:0B づ:0C で:0D ど:0E
?:0F 「:10 」:11 (:12 ):13
ば:14 び:15 ぶ:16 べ:17 ぼ:18
ぱ:19 ぴ:1A ぷ:1B ぺ:1C ぽ:1D
、:1E 。:1F :20 A:21 B:22
C:23 D:24 E:25 F:26 G:27
H:28 I:29 J:2A K:2B L:2C
M:2D N:2E O:2F P:30 Q:31
R:32 S:33 T:34 U:35 V:36
W:37 X:38 Y:39 Z:3A あ:3B
い:3C う:3D え:3E お:3F か:40
き:41 く:42 け:43 こ:44 さ:45
し:46 す:47 せ:48 そ:49 た:4A
ち:4B つ:4C て:4D と:4E な:4F
に:50 ぬ:51 ね:52 の:53 は:54
ひ:55 ふ:56 へ:57 ほ:58 ま:59
み:5A む:5B め:5C も:5D や:5E
ゆ:5F よ:60 ら:61 り:62 る:63
れ:64 ろ:65 わ:66 を:67 ん:68
ざ:05 じ:06 ず:07 ぜ:08 ぞ:09
だ:0A ぢ:0B づ:0C で:0D ど:0E
?:0F 「:10 」:11 (:12 ):13
ば:14 び:15 ぶ:16 べ:17 ぼ:18
ぱ:19 ぴ:1A ぷ:1B ぺ:1C ぽ:1D
、:1E 。:1F :20 A:21 B:22
C:23 D:24 E:25 F:26 G:27
H:28 I:29 J:2A K:2B L:2C
M:2D N:2E O:2F P:30 Q:31
R:32 S:33 T:34 U:35 V:36
W:37 X:38 Y:39 Z:3A あ:3B
い:3C う:3D え:3E お:3F か:40
き:41 く:42 け:43 こ:44 さ:45
し:46 す:47 せ:48 そ:49 た:4A
ち:4B つ:4C て:4D と:4E な:4F
に:50 ぬ:51 ね:52 の:53 は:54
ひ:55 ふ:56 へ:57 ほ:58 ま:59
み:5A む:5B め:5C も:5D や:5E
ゆ:5F よ:60 ら:61 り:62 る:63
れ:64 ろ:65 わ:66 を:67 ん:68
…………(后面还有,不过对于寻找码表,上面的已经足够了)
好的,有了“猜测码表”,我们还需要一个相对搜索工具。由于我一直没有找到好用的16进制编辑器/相对搜索工具(也 许有,只是我没找到而已),所以索性自编了一个 - ROMEDIT,你可以在我的主页下载这个小程序。这是个DOS 程序,支持文件的16 进制浏 览 + 编辑,同时具有强大的绝对搜索和相对搜索功能,是每个romhacker 的良好助手(怎么打起广告来了……)。
运行 ROMEDIT,出现命令提示符“-”,输入 open <文件名> 打开《天地创造》的 ROM,比如,《天地创造》的 ROM 存放在 e:\games\tiandi.smc,那么,在提示符下执行:
open e:\games\tiandi.smc
如果文件打开成功,将出现这样的信息:file e:\games\tiandi.smc opened successfully。如果文件打开失败,检查你的文件名是否有效,也可能是因为文件的属性不对,ROMEDIT 不能打开具有“只读”属性的文件。
如果文件打开成功,那么,我们就可以利用 ROMEDIT 的相对搜索功能寻找码表。
首先,我们要确定一个寻找的对象,运行游戏,选择一段文字,如左图,我决定以游戏开始画面的“はじめから”作为目标。

用 ROMEDIT 打开《天地创造》的 ROM,利用命令:
rsearch <开始地址>, <结束地址>, <版本>, <模式>, <查找对象>
即可实现相对搜索。下面简单介绍一下各个参数的功能。
开始地址/结束地址:这两个参数决定了查找的范围,如果你想对整个 ROM 进行查找,那么设开始地址 = 0,结束地址 = 文件大小 - 1。
版本:rsearch 命令支持 3 个版本 - number、asc、japan,在这里我们只用 number 版,其他两个各位可参考该程序的自述文件。
模式:rsearch 支持两种模式 - byte、word,分别表示每个查找的对象是占用一个字节还是两个字节,如果 byte 找不到,就试试 word。
查找对象:实际要查找的数列,不同的版本对象的格式也不同,在 number 版中,在这里直接输入我们的“猜测编码”就可以了。
比如,我们要在整个 ROM 中利用我们的猜测编码配合相对搜索查找“はじめから”这段文本,那么可以输入:
rsearch 0, 4001ff, number, byte, 54, 6, 5c, 40, 61
其中 54、6、5c、40、61 分别是“は”、“じ”、“め”、“か”、“ら”的猜测编码。4001ff = ROM 的大小(400200)- 1,注意是 16 进制。
回车,开始搜索,运气还不赖,果然找到一个(如下图):

记下地址 12CD36。接着我们不妨用 dump 命令看看这段区域的内容:
dump <开始地址>, <结束地址>
其中开始地址和结束地址的意思和 rsearch 命令一样。不妨用 dump 12CD00,12CDFF 看看 12CD36 及其周围的内容:

嗯……原来如此。为了证实这里储存的就是游戏开始画面的“はじめから”,我们不妨试着改一下看看,使用 edit 命令即可修改指定地址的内容:
edit <地址>, <内容>
我们试着将 12CD36 的内容由 54 改成 53,看看有什么效果:edit 12cd36,53

接着运行游戏,你发现了什么?啊哈!原来的“はじめから”果然改变了!(如下图)

如图:“はじめから”变成了“のじめから”。呵呵。
接下来该做什么呢?既然让我们找到一个突破点,当然就不能轻易放过它啦!以这句文本作为对象,我们可以一一找出《天 地创造》的所有编码!比如前面,我们将 12CD36 的内容改成了 53,文本中的第一个文字就变成了“の”,这说明:在游戏的实际码表中,“の”所对 应的编码是 53,那么我们再试试将 12CD36 的内容改成
00:edit 12cd36,0 → 运行游戏 → 看看是哪个文字;
再改成
01:edit 12cd36,1→运行游戏→看看是哪个文字;
再02、再03、04……看看所对应的文字依次是什么。如此穷举,很快就能找到游戏的实际码表!very simple!
在试过后你可能发现了,《天地创造》的实际码表竟然和我们的猜测码表完全相同。呵呵,其实这只是巧合罢了,不要放在心上,上面介绍的是绝对标准的码表搜索方式,猜测码表是必要的、相对搜索也是必要的。出现这种实际码表和猜测码表相同的情况的几率是非常少的。
值得注意的是,游戏文本中有些编码是“特殊编码”,它们并不对应文字,而是对应某种功能,例如换行、翻页、文本结束等等,这类编码我们叫做“控制 码”。每个游戏都有不同的控制码,有的很简单,就只包含换行、翻页、文本结束这些常用的控制码;而有的却很复杂,不仅包含常用的控制码,还有文字显示的速 度控制,文字显示时发出什么声音,文字显示的颜色等等。要搞清楚一个游戏的控制码如何工作,没别的办法,只能多观察,看看游戏本身是怎么使用的,然后自己 找一段文本试试,多研究研究。《天地创造》的控制码就很多很复杂,在这里我仅给出几个常用的,剩下的大家可以自行研究。
值得注意的是,游戏文本中有些编码是“特殊编码”,它们并不对应文字,而是对应某种功能,例如换行、翻页、文本结束等等,这类编码我们叫做“控制 码”。每个游戏都有不同的控制码,有的很简单,就只包含换行、翻页、文本结束这些常用的控制码;而有的却很复杂,不仅包含常用的控制码,还有文字显示的速 度控制,文字显示时发出什么声音,文字显示的颜色等等。要搞清楚一个游戏的控制码如何工作,没别的办法,只能多观察,看看游戏本身是怎么使用的,然后自己 找一段文本试试,多研究研究。《天地创造》的控制码就很多很复杂,在这里我仅给出几个常用的,剩下的大家可以自行研究。
CF - 换行
D5 - 翻页
D3 - 文本结束
寻找码表是一个蛮复杂的过程,操作十分繁琐,但这一步却又十分重要。总的来说,寻找游戏中码表的一般步骤是:
1、根据情况设定猜测码表(可利用前面提到的标准猜测法或字库猜测法)。
2、在游戏中寻找一段脚本作为试验对象(例如我们前面选择的“はじめから”)。
3、利用猜测码表,配合相对搜索在 ROM 中寻找这段脚本(前面我们使用了我编写的相对搜索工具 romedit)。
4、如果找到了,就利用这段脚本作为试验田,通过反复的修改、观察效果找出游戏真正的码表。
第三步:修改脚本
在前面,我们已经找到了《天地创造》的码表,而且我想你现在应该已经知道该怎么利用码表寻找脚本了。什么?不知道?hmmm……ok,那么我们以一段具体的脚本为范例,看看如何寻找/翻译脚本。
就选定这句吧(如下图)“ありがとな!”,我决定把它改成“谢谢惠顾!”

首先看看我们在前面找到的码表(注意是游戏实际的码表而不是猜测码表):
あ:3B
り:62
が:00
と:4E
な:4F
!:7D
り:62
が:00
と:4E
な:4F
!:7D
用 ROMEDIT 打开《天地创造》的 ROM,然后执行绝对搜索命令 search 寻找这段文本,search 命令的格式如下:
search <开始地址> <结束地址> <查找对象>
同 rsearch 一样,我们仍可将开始地址/结束地址设为 0/4001ff 来搜索整个 ROM,执行命令 search 0,4001ff,3b,62,0,4e,4f,7d

哈!找到一个地址:15AD58,这应该就是我们的目标了。现在我们要把这句脚本改成“谢谢惠顾!”,那么,究竟如何修改呢?follow me。
首先,我们要在字库中创造“谢”、“惠”、“顾”这 3 个字体。运行我们的字库修改工 具 Tile Layer Pro,打开《天地创造》的 ROM,为简单起见,我们就把字库最前面的 3 个字体(也就是“が”、“ぎ”、“ぐ”)改成 “谢”、“惠”、“顾”吧,前面曾说到字库的修改方法,也就是——画:

这样一来,原先“が”、“ぎ”、“ぐ”这 3 个字的字模也就变成了“谢”、“惠”、“顾”。回顾一下前面学到的字库修改的概念,你大概能够想到,如果现在游戏中出现“ががぎぐ”这样的脚本,在经过我们上面那样修改字库后,将显示成什么……没错,就是“谢谢惠顾”啦!
那么再想想,前面我们找到了 ROM 中储存“ありがとな!”这段脚本的位置,如果我们把这个位置的内容改成“がが ぎぐ!”,那么,游戏中本来应显示“ありがとな!”的地方又将显示成什么……不多说了,用 ROMEDIT 打开《天地创造》的 ROM,看看我们在第二 步找到的《天地创造》的实际码表,有:
が:00
ぎ:01
ぐ:02
!:7D
ぎ:01
ぐ:02
!:7D
那么,“ががぎぐ!”对应的编码就是 00,00,01,02,7D。
执行 edit 15AD58, 00,00,01,02,7d,d3(注意 d3 是控制码,表示文本结束,如果不加 d3,结果嘛……)

经过这样一步,游戏中原本储存着脚本“ありがとな!”的地方如今就变成了“ががぎぐ!”了。而由于我们通过改字库的方式已将“が”的字体改成了“谢”、“ぎ”改成了“惠”、“ぐ”改成了“顾”,所以,这段脚本实际显示在游戏中就将是我们所期待的“谢谢惠顾!”啦!
OK,那么进入游戏,看看效果吧!哈哈!汉化就这么简单!

现在,用同样的方法,你可以把游戏中你所看到的一切文本找出来翻译成中文!而当这个任务完成之后,你就等于是成功汉化完一个游戏了!
下面我们回顾一下修改这段脚本所做的工作:
1、找到字库
2、根据字库设定出猜测码表
3、利用猜测码表配合相对搜索找出实际码表
4、利用实际码表找到 ROM 中储存脚本的地址
5、在字库中画要用到的中文字体
6、利用前面找到的地址修改脚本的内容
2、根据字库设定出猜测码表
3、利用猜测码表配合相对搜索找出实际码表
4、利用实际码表找到 ROM 中储存脚本的地址
5、在字库中画要用到的中文字体
6、利用前面找到的地址修改脚本的内容
当然如果你要修改游戏中的其他脚本,就不用再重复前3步啦!
第四步:制作补丁
假如你已经成功汉化了一个游戏,那么可通过下面的方法制作你的汉化补丁,然后发布给你的玩家们:
首先你需要一个叫做 snestool 的程序,它可在 http://romhanhua.yeah.net 下载。运行 snestool,出现下面的画面:

选择 Create IPS 回车,然后选择原 ROM 回车,接着再选择汉化后的 ROM,再回车。snestool 就将为你创建你的汉化补丁,如图:

——————————————————————————-
前面我们举例汉化了一段文本,如果你实际操作了,应该已经对汉化的原理有了一定的了解。不过,本文的目的仅仅让你学习汉化的最基本知识。很多方方面面的问题我们都没有提及,如果你打算深入学习汉化,那么有必要了解下面这些问题:
1、字库
我们在修改字库时,采用的是“画”的方法,实际上,一个游戏所使用的汉字数成百上千,如果一一用手画岂不会累死 人?所以看看前文,现在你明白我为什么说“你最好懂一门编程语言”了吧!利用程序,读取现成的字库,再存入 ROM,轻松搞定!至于选择什么编程语言, 会 C 当然最好,不过实际上只要会用最基本的 Quick Basic 操作文件就可以了。
另外,我们通常说到字库时,还有一个字模尺寸的问题,字模尺寸可以简单理解为“每个文字显示在屏幕上到底有多大”, 通常的表示方法是 MxN,M 表示字模的宽度是多少像素,N 表示字模的高度是多少像素。例如,《天地创造》使用的是 12×12 的字模,表示《天地 创造》中每个文字占用屏幕水平 12 像素、垂直 12 像素的空间。在设计我们自己的字体时,如果按照游戏本身的字模尺寸设计,将获得最佳的视觉效果。
2、码表
本文说的码表搜索方法可以说是最经典的了(而且还包含很多我的汉化经验,我写了很久的!其实我对那一部分也很陶 醉……)。不过,有一点你一定要注意:在前面的例子中,我们其实一直都假设文字的编码是单字节长度。但是在实际情况下,其实很多游戏的文字编码都是双字节 的,因为如果每个文字对应一个编码,而编码如果又是单字节的,由于单字节的取值范围仅仅是 0 ~ 255,那么这个游戏最多只能用 256 个不同的文 字了,但一般情况下游戏所使用的不同文字数都是上千的,所以,单字节无法满足要求,很多游戏选择了双字节。(其实天地创造也只有日文假名、英文字母、数字 和标点符号使用了单字节,汉字使用的则是双字节)。那么如果一个游戏选择了双字节,我们应该怎么寻找码表呢?很简单,ROMEDIT 已经针对这种情况做 好了准备,前面我们曾用这条命令寻找《天地创造》的码表:
rsearch 0, 4001ff, number, byte, 54, 6, 5c, 40, 61
假如《天地创造》的文字编码是双字节的,那么上面这条命令就无法获得成功。这时使用这条命令:
rsearch 0, 4001ff, number, word, 54, 6, 5c, 40, 61
即可假定文字编码为双字节进行相对搜索。
…………上面的文字需要一点计算机编程知识,如果你看不懂,那么死记住:在用 rsearch 命令进行相对搜索时,先设第 4 个参数为 byte 进行搜索,如果失败了,就设它为 word 再进行搜索。
3、脚本
我们在前面修改脚本时,忽略了一个问题:脚本的长度。每个脚本储存在 ROM 中,都占据着一点空间,我们翻译后的 脚本,其需要占用的空间绝不能大于原脚本所占用的空间,为什么呢?举个例子:比如某段脚本在 ROM 中占用 12A00 ~ 12A08 这 9 个字 节。而 12A09 及其后是程序代码。如果我们在汉化这段脚本时,翻译后的句子长度大于 9 个字节,那么 12A09 及其后的程序代码将被我们的脚 本覆盖,那么如果游戏程序执行到这里……天知道会发生什么事!
值得一提的是,很多游戏中都有一种叫做脚本指针的东西,它往往是一个地址,表示某段脚本储存在 ROM 中的哪个位 置,而这些游戏就是通过指针来读取脚本的,对指针的修改可以非常有效地解决脚本长度的问题。不过具体的原理比较复杂,我就不多费唇舌了,这里只是介绍这么 一个概念,提供一条继续深入学习的路径,相关的知识还请各位自行查找资料。
另外,我们修改脚本时,采用的方法是:首先利用码表找到脚本,然后画字库,接着改脚本。也就是说,我们在游戏中看到 某句脚本,然后再从 ROM 中找到它,再修改它。乍一看这似乎很合理,但是,你能保证游戏所拥有的全部脚本你在游戏时都能看到吗?况且,这种一找一改的 方式效率很低。假如能一次性把游戏中所有的脚本都找出来,待翻译完后再一次性写回到 ROM 中那该多好!没错,这才是真正“专业”的脚本汉化方法,不过 怎样把游戏中所有的脚本找出来呢?除了使用 ASM HACKING 大法,一个比较通用的办法是:把 ROM 的全部内容都当成文字编码,然后把它们统 统转换成相应的文字,接着从这一大串文字中寻找脚本,这很容易,因为脚本都是能读懂的通顺文本。找到后记下地址,然后翻译,全部翻译完后再按照地址写 入 ROM,从而省去了一句一句寻找修改的繁琐而不可靠的操作过程。
另外在这里,我还要向大家推荐一款功能极强的 16 进制文件编辑器 - Translhextion,它可利用码 表,将 ROM 中的数据自动转换成文本,以供查找/阅读脚本,这非常适合于不懂编程的菜鸟。不过我个人觉得这东西使用起来比较繁琐,所以我在本文中并没 有详细介绍它的用法,大家可以在 http://romhanhua.yeah.net 找到它,关于它的用法,大家可以参考网络上的相关文件。
有些游戏我们用尽了所有的办法都不能找到它的字库和脚本,原因可能是因为这些东西都被压缩了。游戏程序在使用这些资 源时,首先会对其进行解压缩。但这对 romhacker 而言可不是什么好消息,面对这样的 ROM,唯一的办法就是 ASM HACKING,即程序 破解。其实如果你有很好的破解水平,那么上面提到的任何问题对你来说都是小 case,不管某个游戏的字库怎么储存、码表怎么设计、脚本怎么压缩,答案都 是能在其源程序中找到的,所以,如果你要成为最强的汉化者,那么,ASM HACKING 绝对应该是你的最终奋斗目标。
关键字:


图片全部百度啦…
那个时候的世界我想和现在真是截然不同。 为了一头千 G 马破费卖卡的经历也许许多人都经历过。FB 中挑战着,焦急苦等中 TBC 来了一样对其报以着热情。战场上厮杀着,为了大鸟努力挣钱着。
人家的装备也渐渐赶上来了然后, 可是啊。缄默了400
恋爱和其他事情一样,在尚有可为的时候放弃努力,那是懦弱。在已经没有希望了的时候还在那里死不放手,哭哭啼啼,那是没有出息。不过想起曾经在一起的日子,心里总有点酸酸的感觉。我想初恋之所以美好,就是因为有那种蒙蒙的感觉吧。
。
人家的装备也渐渐赶上来了然后319
恋爱和其他事情一样,在尚有可为的时候放弃努力,那是懦弱。在已经没有希望了的时候还在那里死不放手,哭哭啼啼,那是没有出息。不过想起曾经在一起的日子,心里总有点酸酸的感觉。我想初恋之所以美好,就是因为有那种蒙蒙的感觉吧。
。
人家的装备也渐渐赶上来了然后309