GB/GBC汉化经验分享之十一--Rom中的地址 心得研究

六级用户 RangerMarsh 2天前 543

十一、Rom中的地址


这一部分先简单介绍一下GB/GBC Rom中的地址相关的内容。

游戏中的地址都是两个字节,从0000~FFFF,大致可以划分为下面几部分

11-01.png

但我们之前在CrystalTile2中看到的地址是000F048C000123456这样的四字节的十六进制数,这两者是如何对应的呢?

GB/GBC游戏运行的时候会把Rom按照16384个字节一组分成许多个Bank。比如00000000-00003FFFRom000004000-00007FFFRom100008000-0000BFFFRom2…

其中Rom0是主Bank,地址是固定的,对应游戏中的双字节地址从0000-3FFF

双字节地址4000-7FFF,对应的是除了Rom0以外的其它Bank,他们在游戏中的地址都是4000-7FFF,但会用不同的Bank号来区分。比如上一节我们提到的de中的地址6FEC,它实际对应的是Rom4F6FECBank号可以在BGB调试器右上角寄存器的最后一行看到(rom=4F)。

11-02.png

这个地址对应的绝对地址应该是

(4F-1) * 4000 + 6FEC = 0013EFEC

这里都是16进制数,可以用程序员计算器选择HEX16进制)来进行计算。

双字节地址8000-9FFF对应的是VRAM的地址,我们需要把文本对应的Tile写到这里。

双字节地址A000-BFFF我不太清楚,好像和存档有点关系。

双字节地址C000-DFFFWRAM,游戏开始运行后会在这里进行数据读写操作,金手指就是通过修改游戏时WRAM中的数值,来实现修改游戏的目的

双字节地址E000-FFFF也是WRAM,游戏开始运行后会在这里进行数据读写操作,这里有一些特殊的地址,具体作用我也搞不清楚。

因为4000-7FFF这一区间一次只能对应一个Bank,如果要访问其他的Bank,就要进行Bank的切换,一般是通过把Bank号写入特定的地址来实现的,比如这个游戏中通过下面这个命令来实现Bank的切换,

11-03.png

切换Bank的操作根据Rom类型的不同会有区别,建议还是采用游戏本身使用的命令或程序来进行Bank的切换,以免出错。

如果要修改或者添加程序,一定要注意地址的问题,如果程序的地址在Rom0,也就是0000-3FFF,那么无论现在在那个Bank,都可以调用操作。如果地址4000-7FFF,那只能调用当前程序对应地址的程序,尤其在程序涉及到切换Bank的时候,一定要确认要调用的程序的位置。

我们再回到上一节的那个问题,现在我们知道游戏从0013EFEC这里读出一个编号7B,然后把这个编号的Tile写到VRAM中的9987这里。我们可以在CT2中去访问这个地址,也可以在BGB模拟器中来访问。

右键点击BGB调试器左下方窗口,选择Go to…,输入Rom:13EFEC或者4F:6FEC,可以来到这个地址

11-04.png

仔细观察的话会发现,这一段其实是对应的就是将要显示的画面,每一个字节对应的编号就是要在屏幕上显示的Tile的编号。这里的7B7C7B7C7D7E,以及隔一行的9B9C9B9C9D9E就是对应“いいえ”,我们修改一下,让它只显示为“え”。上方修改为7D7E40404040,下方修改为9D9E40404040(这里40对应的是全黑的Tile)。

11-05.png

这里修改的是Rom本身的内容,是可以保存的,这样我们就不用担心下次进游戏时会变回去。

采用这样的方法,我们就可以把这种类型的图片也汉化了。


上一篇:求助,电脑模拟器citra怎么安装mm4dlc
下一篇:GB/GBC汉化经验分享之十二--《圣剑传说》的汉化思路
最新回复 (3)
  • 六级用户 colorcat 2天前
    0 2
    加油,又是教程+顺便汉化一下游戏~~~~~~~😆😆😆
  • 四级用户 lamtheH 2天前
    0 3
    牛逼 等俺退休了就学!
  • 三级用户 人行横道 2天前
    0 4
    第一张图看不清楚啊
    • 老男人游戏网配套论坛
      5
        立即登录 立即注册
发新帖
本论坛禁止发布SWITCH和PS4相关资源,若有其他侵权内容,请致邮3360342659#qq.com(#替换成@)删除。