火炎纹章776修改笔记(作者:zHAOsILi[EGCG](.zZ~~) )
文章来源:http://zsltools.ycool.com/post.1074234.html火炎纹章776修改笔记
2006.1.25
作者:zHAOsILi(.zZ~~) 转载请注明
修改工具:Geiger’s Snes9x Debugger Mark 9
战后升级
$ 83/EFDC 90 05 BCC $ 05->EA NOP
EA NOP
战后能力+1
$ 83/DFFF 20 B0 E2 JSR $ E2B0[$ 83:E2B0]->A9 01 00 LDA #$ 0001
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
武器熟练直接到A
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
EA NOP
存放所全物品锁定
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
件物品,故可以突破存放所128件物品的限制,改出全物品。
$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
$ 85/C78E CA DEX
$ 85/C78F CA DEX
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
$ 85/C792 6B RTL ;返回时X=$ FFFE
$ 85/C793 A2 FE 00 LDX #$ 00FE
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
$ 85/C79C CA DEX
$ 85/C79D CA DEX
$ 85/C79E 10 F6 BPL $ F6 [$ C796]
$ 85/C7A0 6B RTL
实现全物品的代码如下:
Start@ $ 85/C785
LDX #$ 014C A2 4C 01;X=($ A7-1)*2
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
@2 STA $ 6FCB,x 9D CB 6F
DEC A3A
DEXCA
DEXCA
BRA @180 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
LDX #$ FFFE A2 FE FF;-|
RTL6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
@1 BPL @2 10 F2;循环$ A7次
RTL6B
最后改完后反汇编出来的结果:
$ 85/C785 A2 4C 01 LDX #$ 014C
$ 85/C788 A9 A7 3C LDA #$ 3CA7
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
$ 85/C78E 3A DEC A
$ 85/C78F CA DEX
$ 85/C790 CA DEX
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
$ 85/C793 A2 FE FF LDX #$ FFFE ;
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
$ 85/C797 10 F2 BPL $ F2 [$ C78B]
$ 85/C799 6B RTL
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
$ 85/C79B EA NOP ;
$ 85/C79C EA NOP ;
$ 85/C79D EA NOP ;
$ 85/C79E EA NOP ;
$ 85/C79F EA NOP ;
$ 85/C7A0 6B RTL ;
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] 学习了,但是有些专业术语还是不太明白
页:
[1]