签到天数: 2070 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html
# G& h0 A* F& e: H" Y; d$ `* g' o9 I. L6 P# W# \
火炎纹章776修改笔记
' Z. o. d( G! Z! N* D6 R* d2006.1.25
. A. [& V: c0 f% u作者:zHAOsILi[EGCG](.zZ~~) 转载请注明, ?1 g) `9 ]& d# o2 o
8 _5 q* a2 J" `" ~0 ?: t( Q2 l" m. P8 l
修改工具:Geiger’s Snes9x Debugger Mark 9
" h; d' E! n9 x8 M
0 z4 v( E, p9 ]1 |) U战后升级) P/ `; d; ]# ^- b3 S0 n
$ 83/EFDC 90 05 BCC $ 05->EA NOP0 ^1 }! r( ?. S8 R3 a* q" z
EA NOP
6 [# G' q& a, e" |6 @( t) i3 J1 _7 I! L
战后能力+1
O$ j7 Q/ p& g/ G$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001
6 ~5 W, U! a5 a4 ^9 L( X有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b1 r4 ~/ F2 R8 o2 ~& a X. x
2 D! p" L0 v$ B( ]$ M% A
武器熟练直接到A$ K% C7 B6 r T# {! O: z
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
) _, v. A' H/ V) b3 ]5 X5 k EA NOP
' x1 V( q4 M( P9 M& p _3 R+ ?存放所全物品锁定
, K O" B) ]" W6 z0 `5 y存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
& J; x( ~, j/ N' o9 G要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
0 v) K& i. F4 v而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
$ D. M2 b5 V* E% E件物品,故可以突破存放所128件物品的限制,改出全物品。
5 L2 |3 v: g; ~% }/ c$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
1 S0 B0 _& {# u* G: Y+ n$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
4 P2 z! ~* \$ X9 ]% v$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB6 x5 R4 a& W. a% E7 A! N# K
$ 85/C78E CA DEX * A$ }2 n- T C( h& w5 Y
$ 85/C78F CA DEX
, n8 S7 _% m2 y3 H; T$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次( J+ {/ s4 h" P# f. x! u
$ 85/C792 6B RTL ;返回时X=$ FFFE
% T9 S$ g( m, O) u& V9 ?$ 85/C793 A2 FE 00 LDX #$ 00FE ' I( }) m% @6 s! y& n
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] / ?( n& B% ^9 ^- Q
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0% c8 B0 a. ]& D& i2 M
$ 85/C79C CA DEX 0 ~ [2 b( d) K( H% X9 L3 X
$ 85/C79D CA DEX 7 N6 b, W t% ^! a
$ 85/C79E 10 F6 BPL $ F6 [$ C796] ( ^1 V- d) u$ @% K [+ @3 u
$ 85/C7A0 6B RTL 5 q$ }( v+ t: g0 I
实现全物品的代码如下:
3 i' T7 G/ f, X$ YStart@ $ 85/C785
7 P2 c* I; f" }/ A6 X, cLDX #$ 014C A2 4C 01;X=($ A7-1)*2, m0 l. W4 ?0 n; e9 s3 e6 y5 ?
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
) a9 V: o, m2 \2 I# l: u" f4 r b@2 STA $ 6FCB,x 9D CB 6F( Y5 T0 Q* B6 |% E: v3 H
DEC A 3A3 o( {0 H9 l: x% P) \
DEX CA
# i: w1 `/ z1 S7 I" SDEX CA
) O: ]6 _6 a; S4 A7 \BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
5 L3 J1 j* U5 R$ @% h, p' `, L: LLDX #$ FFFE A2 FE FF;-|
1 X. i4 w; M0 S9 R- t4 uRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序4 E( B- A( n$ C" t6 t
@1 BPL @2 10 F2;循环$ A7次/ |9 E9 g( m! O% p k2 v( x+ }
RTL 6B6 t. ^9 L* a" _! q$ v* G% _" m
最后改完后反汇编出来的结果:! `: G; {1 K+ n, L" n; i
$ 85/C785 A2 4C 01 LDX #$ 014C , }: {9 _0 a8 c1 Q) A/ q
$ 85/C788 A9 A7 3C LDA #$ 3CA7 7 B" J% q& U; g) A7 k
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
3 ]$ O% o `* u$ 85/C78E 3A DEC A
2 D% I7 m) ~& |+ L a$ 85/C78F CA DEX " D: \; v {& h/ M% f
$ 85/C790 CA DEX ( X4 K; p& Q3 U. G
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
9 r/ j# {" H+ n$ 85/C793 A2 FE FF LDX #$ FFFE ;5 x# \3 M9 w5 W% @0 e) y
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
/ L9 \ r* S/ i& H. a3 G& D3 ^$ 85/C797 10 F2 BPL $ F2 [$ C78B] 0 M7 [6 ^) y5 X" {3 t7 h4 d1 |
$ 85/C799 6B RTL ' O& J/ N% N* e
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
w, I0 d$ F' E1 W% A `$ 85/C79B EA NOP ;
: x+ \/ e. i% A5 M$ 85/C79C EA NOP ;5 T/ W, G% e9 E n* Q
$ 85/C79D EA NOP ;
7 q& ]6 E! b3 s" C0 w4 l& h8 Q5 i$ 85/C79E EA NOP ;, \. O- n5 b4 f
$ 85/C79F EA NOP ;
2 F" _0 E0 m& i+ {$ 85/C7A0 6B RTL ;1 t" X* w- o% `. z0 G! p4 s. @! Z2 C
. X g* I$ X [5 o% {7 `% H9 ?
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|