半年前写的文章了,原本是发表在兔友论坛上的,还是在自己的blog上也保留一份吧。
图片有些不能显示,点我去看原帖 (不需要注册)
---------------------------------------------------------------------------------------------------------------------------------------------------------
用 CT2打开 rom后很容易发现文本是标准 JIS编码,粗看了下文本在根目录下的 msg/jpn下。字库也很容易找到,在 /font/jpn下,但是用 CT2无法看到。这里需要 ASM 了。
在存档处可以看到这里的文本显示是以 OAM 的形式存在的, OAM 可以理解是用 sprite 的方式,所以在第一个 OAM 那里 0x0660000 那里设断点: [06600000.. 06600004]! ,关于如何在 No$gba 里设置断点,请看 No$gba help 文档里的 Debugging 部分。
这里停下来:

可以看到最后停在 strr4,[r3,8h]。而 r3=0x040000D4。这里用到了 DMA4,关于 NDS的 DMA请看 gbatek: http://nocash.emubase.de/gbatek.htm 。
0x040000D4,存的是源地址,是 0x2273440
0x040000D8,是目标地址,可以看到上图右下角这个值下就是我们刚才设置的地址。
0x040000DC,是复制的字节数
可以去 0x2273440看到里面确实是可以直接显示(这里主要是为了区分前面无法直接显示)的字模了。这时候你可以 dump memory然后用 CT2看一下。这里说一下 No&gba