签到天数: 2181 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html
) M/ l& ~4 Z' ]2 J% ?; Q$ z9 w
" B2 q' `6 S7 g火炎纹章776修改笔记
5 o4 ~2 y3 N8 g! I2006.1.252 x5 p1 [8 A( i, j
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明/ t0 s9 W8 f D
, }+ p- E; T8 ], ^8 ^" x4 l) r F( K4 m; \/ M
修改工具:Geiger’s Snes9x Debugger Mark 9, ~9 a4 s. \5 i6 t+ y# H
8 a6 s9 b* q5 C& u7 {% t
战后升级
$ ~1 y6 R4 c/ t( }) B) W" u; R$ 83/EFDC 90 05 BCC $ 05->EA NOP" y8 d8 W3 ]' q& X; K/ d
EA NOP8 D& v1 r( n' s$ k, K
# z4 _& Q0 `0 ^: q8 h( p. j) Z战后能力+18 u; p( f% p4 y/ y- Y" W3 C
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001) V: x) K+ i7 m f. C
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b6 G8 `# U; o1 G) E; p
9 b5 R0 j' K7 x( D9 b武器熟练直接到A
7 e% h, b# k0 b+ }( g% ]7 f6 [$ 83/E4E9 90 03 BCC $ 03 ->EA NOP( g1 H6 [9 S2 q8 v
EA NOP
' r( g5 @& D6 w' X. @5 y! ?6 [存放所全物品锁定
+ ^4 D7 q9 H3 i8 s) b5 A9 m, N存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
, |) b7 g( w L& b, e6 V$ b. q要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
5 ]1 L. O+ Y: Q) x# P8 w" V |而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
: U5 l" a. T) O, _ I8 s7 ?件物品,故可以突破存放所128件物品的限制,改出全物品。
; K/ [4 }1 l' r! v4 O3 B$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
# i* C8 w# s$ Z! \6 z$ O$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] , B" e/ [9 `$ o4 k( v+ x+ p
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB. P0 D; f Q: O4 T X9 h! h# R
$ 85/C78E CA DEX
7 l: c+ U2 i: D `$ 85/C78F CA DEX / a8 ^ G( a1 r9 n3 i6 t1 a
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
2 {$ k1 i- r# W5 r- Z$ s/ p$ 85/C792 6B RTL ;返回时X=$ FFFE9 M! a5 O1 P K
$ 85/C793 A2 FE 00 LDX #$ 00FE
) P: P: i6 ?) W% L' L! \$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
* M' N2 A! H; W$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0- A; k2 d5 V. ?
$ 85/C79C CA DEX 1 g7 ^& P# Z! ~( n
$ 85/C79D CA DEX 7 ?+ ~# W" b. N L$ d
$ 85/C79E 10 F6 BPL $ F6 [$ C796] ( [3 I2 @& U l+ s
$ 85/C7A0 6B RTL
0 B% n8 ?1 f! a0 e0 w实现全物品的代码如下:
3 j4 `8 N# |+ A9 i/ W2 z( H/ cStart@ $ 85/C785. y/ T' e( D: E* @; A# P- o N
LDX #$ 014C A2 4C 01;X=($ A7-1)*2+ ? w: e X9 k
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量$ N( J' l+ r. j' T5 z+ P Q$ ^
@2 STA $ 6FCB,x 9D CB 6F
, G3 I4 N( u: Q) x3 y) f1 ~DEC A 3A5 d: v; W: ?+ d% n
DEX CA
; J' Z% |. j4 z5 o8 @" [+ QDEX CA$ P. G: k# Y- T4 A# U3 |* g
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间/ _( _& z5 J4 W1 Q
LDX #$ FFFE A2 FE FF;-|
8 a% m- Z s; r" RRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
2 \) ~- D8 i2 |7 i5 s0 W9 g# ]7 V/ }& C@1 BPL @2 10 F2;循环$ A7次
! t1 Q6 J/ w- n7 cRTL 6B2 `5 K) q2 V8 t
最后改完后反汇编出来的结果:
9 d0 t; f* y8 _$ 85/C785 A2 4C 01 LDX #$ 014C 0 Z" e/ C' B/ |! Z1 [2 L
$ 85/C788 A9 A7 3C LDA #$ 3CA7 ( t, T) w- l1 L! A% j& ]
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
' p+ }% j, O; q" H$ 85/C78E 3A DEC A ) y* e0 w& a2 B' N. t, E
$ 85/C78F CA DEX " y- M9 y- M, E+ F6 \ i* s
$ 85/C790 CA DEX , _+ f5 ?1 s4 r2 P
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间+ Y" ?4 ~& V( x2 d r$ M
$ 85/C793 A2 FE FF LDX #$ FFFE ;( j1 u8 l% x! d) s
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么+ }/ l) N9 l! p% s# C' F: I
$ 85/C797 10 F2 BPL $ F2 [$ C78B] 9 S7 q* X! j$ Q
$ 85/C799 6B RTL , q6 G8 q" a6 V0 v) ]) B
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
3 W2 r/ O& g" }) [2 {$ 85/C79B EA NOP ;
# _6 V8 S- B" i1 |# b" C$ 85/C79C EA NOP ;
9 e7 g: }& Z A; J% c2 p9 p) \; E$ 85/C79D EA NOP ;9 y0 ~( A! h" s/ |4 h, F$ c
$ 85/C79E EA NOP ;" a) h1 b; R& U" t0 G1 L
$ 85/C79F EA NOP ;) o9 k4 x7 J6 c2 z$ M, i
$ 85/C7A0 6B RTL ;
( q$ ?) { z4 T! e
& K% W& x; _7 d[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|