[转]NDS烧录卡存档格式研究
作者:实验小白鼠 日期:2007-10-29 21:06
口袋珍钻存档是个大学问
作者:实验小白鼠 日期:2007-10-27 21:49
初步的NFTR分析程序
作者:实验小白鼠 日期:2007-10-23 21:38
汉化界内的特务D——鼠也不爽
作者:实验小白鼠 日期:2007-10-21 22:42
NFTR深度研究基本完成
作者:实验小白鼠 日期:2007-10-21 15:52
汉化的?PS的?
作者:实验小白鼠 日期:2007-10-11 19:31
eDIY的玩家很有耐心
作者:实验小白鼠 日期:2007-10-10 22:39
[转]DS汉化破解技术之 Zelda DS PH NFTR字库扩容 by Crystal
作者:实验小白鼠 日期:2007-10-09 12:08
Crystal破解技术:
可以破解Zelda首先少不了的NO$GBA Debugger
这里先感谢某人提供此调试器(至于是谁,对方要求保密,这里就不说出来了)
这里先说声谢谢orz。
由于NFTR字库是放在内存的,所以无法直接扩大
她的CGLP段,否则在游戏载入字库到内存时,
会导致内存溢出,结果当然是黑屏的啦。
所以就要跟踪看看游戏到底怎么处理这个字库的。
小白就以 zeldaDS_15.nftr 文件为例子
扩容到了3xxx多字,够用的了,而且没降低字模位数、大小。
1。中断首地址(用来计算字库的字模偏移量)
这个字库的大小是14x16 4色 2BPP的,字库的结构下面会说明
和GBA一样,要中断当然要字库的首地址了,她的首地址就是
字库的CGLP段+0x10就是rom0x00A1303C
(rom地址以rom开始,以便和内存地址区分)
这个地址是无法直接中断的,以为她是被复制到内存的
所以要先跟踪游戏载入NFTR字库的过程,看看她载入到了哪个
内存地址里面,首先下地毯式内存中断(小白的常用方法)
r0=0x00A13000,r1=0x00A13000,r2=0x00A13000,r3=0x00A13000
一般下r0-r3这四个通用寄存器就可以了,中断失败才尝试其他的寄存器
结构在02040608中断,分析发现是载入FAT表
一般第一次中断到的都会是载入FAT(文件分配表的地址可以无视)
按下F9继续跟踪,结果中断在02007BCC处,但是发现还是不是载入代码
一般要中断在ASM处理B7aaaaaaaa000000设置文件地址时才是载入过程
继续中断吧。改为中断[40001a8]=0xb7,结果中断在02040374里面
按几下F7,发现[40001a8]=B7 00 A1 30 00 00 00 00(嘿嘿,字库地址)
出来后在02040608里面就开始复制到内存023C9540
记住了,字库在内存的首地址呀,可以按几下F7,会发现数据不断复制到内存
载入完毕后,首地址和ROM地址一样+CGLP+0x10定位到真正的首地址
就是023C957C,到了这里首地址的工作就结束了





