请选择 进入手机版 | 继续访问电脑版

电玩龙资讯台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1283|回复: 2

GBA1727哈姆太郎彩虹救援汉化教学BYflyeyes

[复制链接]
发表于 2015-2-27 12:41:34 | 显示全部楼层 |阅读模式
汉化流程攻略(一)——1727_哈姆太郎-彩虹救援(E)
flyeyes
2007-8-10这个的难度可能有点大,希望里面的一些方法能够对大家有用吧。

PS.这个可是可爱的耗子游戏啊~~~

新手拿到这个rom可能会无法下手,因为。。。根本找不到字库,把能想到的格式都用了估计也找不到,字库没有压缩,就好好地放在rom里,只是格式太特殊了,后面再说。

一、寻找字库

寻找字库的方法很多,用得比较多的有下面几个

1、用tile查看器在rom里直接寻找。

最麻烦 也是最常用 同时也往往是最有效 的方法。
虽然是个“笨”办法,不过也是有好多技巧的。比如事先观察游戏中显示的字的大小 来确定字模的大小,是显示在16色下还是256色下等等。有一定机会能减少工作量,尽快找到字库位置。
要提醒的一点是,找到之后要在rom搜索下字库地址,看看自己找的首地址是不是正确。一般来说,字库的首地址一定会原样保存在rom,除了极个别的BT rom,呵呵。

2、搜索字库

这个方法是有限制的。
先说过程,让游戏运行到显示对话的地方,打开Tile查看器,找到字模所在tile的地址,再打开内存查看器,看对应字模的数据。在其中选取一段比较特别的数据(为了搜索时得到的结果尽量少),在rom里搜索,搜索到的位置就可能是字库。
这个方法看起来比第一个简单,不过成功率不是很高,一方面只有字库是GBA 4bpp或GBA 8bpp时才可能搜索到,另一方面有些游戏有文字变色的功能,内存里的数据未必和rom里一样,虽然显示出来的字形是一样的。

3、跟踪代码

为找到字库所作的跟踪一般是比较简单的。通常的做法是监视显存改动,以这个游戏为例。



设中断:[0600E510]!
继续运行,中段的位置为




这里可能有点技术难度,看一下代码段,还有寄存器内容,尤其是r2,r7,r14。
如果你曾经跟踪破解过《旋律天国》你就会发现这里的程序和他的显示过程是一样的。。。这个,算是经验优势吧。。。
再注意寄存器r10,r11,显然是rom里的地址,又在显示字符的时候出现,没错,那里是字库。
用ct2打开rom,转到那个地址,格式选旋律天国,高宽都是16,字库的大体样子看到了吧~

好了,今天就到这里,下次继续。
回复

使用道具 举报

 楼主| 发表于 2015-2-27 12:42:30 | 显示全部楼层
二、字库处理
1、怎样看清
经过上一节,我们成功看到了字库,虽然看到了字,可是有没有觉得有些乱呢?让我们看一下。

显然,字符在每个tile里的位置不同,越到后面越乱了,怎么让它显示好呢?在跳过字节里填上4,再调整看看。

这个效果好多了。一个16x16的1bpp Tile占用的大小是32字节,加上跳过的4字节。一个字占用了36字节,为什么要用这么大呢,我们先按下不表,往后看。
2、加密
是不是觉得字库已经找到并解决了呢?那么往下看看,看到了什么?

日文假名显示得很奇怪,是哪里出了问题呢 ?
如果你观察力够好或者从代码读下去,就会发现问题了,字模的存放顺序不对!
旋律天国模式下,基本的tile单元是宽8高4的一块,相当于别的显示格式下像素的地位。因此在使用这个模式时,宽和高都必须有一个倍数要求:宽是8的倍数,高是4的倍数。
我们把36个字节这样划分

咳咳。。。可能有点杂乱,不过应该能看清。
我们现在看到的字库部分就是1~8这些,9是跳过的那4字节。
仔细观察不难发现,135显示的都没问题,而246一直是空白的,789中有时有一小块字。(9中的内容,把跳过字节去掉,仔细对着看一下就知道了)
好了,大概你也能猜到了,246根本是没有用的!
实际游戏的字模是宽16高12的,组成方式如下

根据这个变化关系去写程序,来显示出完整的字库吧~
注:之所以说是加密,是因为246的存在毫无意义,除非是程序员一时脑子进水。。。好在这个所谓加密的变化并不复杂,否则字库会很难寻找。
转换好的字库:

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-27 12:43:02 | 显示全部楼层
三、文本结构
有了字库,再用差值搜索,很容易确定码表。
01=A
02=B
03=C
04=D
05=E
06=F
07=G
。。。。。。


然后搜索一下文本,文本都存放在同一一块区域,很容易找到,再搜索一下文本指针,指针表也能找到。
不过这个游戏的5种语言的文本是混在一起放的,要研究下指针表才能完好导出。
这个大家可以自己去看了,不算复杂。
四、杂项
再回到字库,也许有人发现了,字库首地址搜索不到。
怎么回事呢?
那么,在16进制下,看看字库的前面,一段数据,有什么发现没有?
提示一下,游戏里字符的宽度不是固定的,而tile大小都是一样的,显示程序是怎么知道每个字的宽度的呢?
对了,这里就是字库宽度表,这个表被作为字库的一部份,所以字库首地址应该是宽度表的首地址。
数据33h是字库标志,首地址知道了吧,搜索一下吧~
宽度表以4位保存一个宽度,不过顺序和字库有些不同,至于是什么不同呢,大家自己比较一下就知道了。
其实破解有时并不需要太高深的知识,只要善于观察,一样可以破解游戏。
至于编码扩容,这个游戏相对于其他游戏是非常简单的,没多少讲的价值,呵呵。
第一篇也不能太难,这篇攻略就到此为止了~~感谢你能坚持看下来~~
最后是广告~
我的群44386481
只是探讨gba汉化的地方,愿意学习gba破解的或者翻译美工等等喜欢gba的人就加吧。不过,希望加之前先确定自己有足够的耐心和毅力,坚持不下来变成沉默的潜水员的会被清掉欧~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|电玩龙资讯台 天空联盟- SKY LEAGUE

GMT+8, 2018-10-23 01:39 , Processed in 0.078924 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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