本学期学习asm,加上上学期一个fe4pc的需要,所以决定干fe4 rom hack。
是从昨天开始的,不过因为debugger使用不熟练的原因,所以今天又把昨天干的重复了一遍,并作了些记录。
由于个人习惯的原因,希望不会给大家带来阅读的困难……
首先我使用的是znes1.7版,所以不能dump出缓存,按照前人的经验,我从战斗画面开始读代码(就是一开始男主角站在那颗树上攻击第一个斧兵的动画)
废话少说,开始读:(这里写下的只是代码地址和我的理解,一些不懂的东西省略或者用??表示)
这里首先程序进行了DMA#0的一些设置:
Source Address=$D204; 我认为这个地址应该对应着ROM中的某段地址,但是由于对DMA知识和snes硬 件知识的缺乏,所以还不是很了解
DMA reading size=$78; 是120个字节
最重要的是这两个,还有一个Source Bank Address ,我理解应该是内存中的地址
Source Bank Address=$7F; 而且这个地址在后面出现了很多次,有很多命令对7FE4XX的数据进行了操作
在进行了几次程序的跳转后:
8081BD~D4-〉80BF04-〉95C368-〉95C3C2-〉跳回80BF04-〉969FD7-〉跳回80BF04-〉96D5DB
-〉80BF04-〉95A086。
中间可能有疏漏,这是没办法的事啊,代码很多……
接下来这段,可能是对这些地址里面的数据进行操作,因为对7FE441~7FE4XX进行操作,但是还没来得及分析代码的意义。
又是子程序的跳转:
80BF56-〉95A086-〉95A0BD-〉跳回80BF56-〉96EB1E-〉跳回80BF56-〉80A34F-〉80807C
只有其中有一段我理解了是,7FEC70~7FEC7A 全部被赋值为0,我猜想是不是为rom里面的数据初始化空间。(好像有点问题,应该不是这样初始化吧……)
然后得到了:Source Address=1C00
DMA reading size=20
Source Address=0100
Platte=0000;
具体作用,还不是很了解,要找点计算机结构的书看看,了解一下DMA到底是么东西!!如果有大虾了解,恳请赐教阿~~~~!!
接下来,又出现了个DMA,不过这次的是# 7
然后由设置了:Source Address=E1F6
DMA reading size=??
Source Bank Address=7F
Platte=??
反正在内存中,7F肯定是存放某些数据的地址(这是废话……),应该说是对我要的目标又作用的地址。