签到天数: 1953 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html8 R" E. p6 s! ~# V# N/ e
) [' G$ z: f, ?4 v$ i& M& C
火炎纹章776修改笔记
) j3 L# b5 o. w$ s) K8 }% m/ C! m) S2006.1.25* q1 N& c; U% H: p9 w4 t. D1 ~
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明9 z# e" t7 c0 a0 o c/ Y
3 w" e/ Q% b6 R3 d
+ U, S! C9 E* i4 u3 {# X8 }修改工具:Geiger’s Snes9x Debugger Mark 9
: e- ]" {' |+ ^" y3 ^
, L" G7 A* t/ O/ ]; M* y- y战后升级7 p; y& I) z; j8 m0 P; v% D5 p: D: `
$ 83/EFDC 90 05 BCC $ 05->EA NOP' j! G( K$ D: @- T, X
EA NOP# J" ?1 B* `4 s" ?+ t6 Z' g
: Z+ T9 e' X) M' J6 T
战后能力+1; l9 T; v/ a( O' s% E4 ^; v. ?
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001
, @+ T; } w2 c+ R9 e4 ?有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b \1 r7 o' [# f4 w x+ D5 U# S8 I* N
6 E7 j8 N8 ^' _9 i! ]
武器熟练直接到A, c' w0 s9 `3 F: [* T n! ^
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
. _6 q0 c5 v& S4 Q- z EA NOP
* G3 O0 s5 c- t& g存放所全物品锁定
# z" k, ^% L3 g- T; ?2 M1 y/ m存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
) G; v) ^! n* D R f要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
" \' B6 T- {, w q9 n0 X1 ?而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
+ _# l7 [( [0 u) x( D) S件物品,故可以突破存放所128件物品的限制,改出全物品。, U, b" J6 ] a+ D8 p+ D$ p( p0 G
$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2; p( Z- ~8 K6 U2 m
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
9 o+ P5 K, ]5 c7 F5 V; r- V; ~/ ~$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB2 k, \* Q$ `( A: N" W$ r+ I
$ 85/C78E CA DEX
6 ~8 \0 H. [/ v n. H7 m+ t$ 85/C78F CA DEX / N, r$ y: U T k; a1 i
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次% V* ]1 @5 ^+ u5 S. B
$ 85/C792 6B RTL ;返回时X=$ FFFE- F4 N, U$ \) D7 _7 n @" P
$ 85/C793 A2 FE 00 LDX #$ 00FE 1 X* E! ^" i3 X _% g9 X& N
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
/ |% ^1 c( C+ {3 T4 w# l: K e$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD09 K, @% e: a1 y9 p, `2 {. J. \! t
$ 85/C79C CA DEX
& k' j+ y$ L) n& b$ 85/C79D CA DEX
% O* _& |1 o! Q1 I3 |$ 85/C79E 10 F6 BPL $ F6 [$ C796]
; P6 Y/ L1 x4 d3 d% R5 H$ 85/C7A0 6B RTL
; a# s( `1 f& D: p/ C实现全物品的代码如下:
) @4 s9 O- j5 H# j2 H7 R- ~2 j% X3 f8 CStart@ $ 85/C785* C8 d1 b, A4 c6 C) w+ A c% F g1 t
LDX #$ 014C A2 4C 01;X=($ A7-1)*2
) B$ c1 ~; t. G& ~LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
; @' r7 `( N2 t% z z( J@2 STA $ 6FCB,x 9D CB 6F. |6 w& C! p3 F0 x' O4 d+ z
DEC A 3A% t7 f8 j( F% u. O% m, `) J
DEX CA. \$ x7 [% f7 z* e9 s
DEX CA! q5 }, Q. k5 p( e& S' U( g
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间% y, z, u- \+ {& i6 S, L
LDX #$ FFFE A2 FE FF;-|
5 S% Q; Q0 w! J# f& b4 {- ORTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
2 }& W0 |! ^8 x$ B9 A! ]' x5 P( y. R@1 BPL @2 10 F2;循环$ A7次
" b( j5 U0 s' f) ]RTL 6B
3 i# t! L* T- R3 u9 d最后改完后反汇编出来的结果:
' N# m- W8 z: y5 [$ 85/C785 A2 4C 01 LDX #$ 014C / u+ w& r/ Q/ ]7 p
$ 85/C788 A9 A7 3C LDA #$ 3CA7 . s; T ]8 ]) \. K4 F( E. P
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
% h: A; H1 x% J7 @" L$ 85/C78E 3A DEC A
% m& [5 y* m" T1 R1 c$ 85/C78F CA DEX # O# Z( B# K% `5 t/ Y9 A
$ 85/C790 CA DEX
}5 w: H+ f/ D5 i, u$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
3 O3 a9 Z) Q2 i! l3 H$ ?8 p6 c; m$ 85/C793 A2 FE FF LDX #$ FFFE ;1 W/ r0 M# Z5 f
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
, J" r. k0 T7 l% i3 S+ D ?$ 85/C797 10 F2 BPL $ F2 [$ C78B] 8 o: G) }. v" M4 Q* O
$ 85/C799 6B RTL
+ D0 I1 `* o8 H+ z2 N, h7 V* o9 I$ 85/C79A EA NOP ;避免出错,把多余的都NOP了# j& s" q2 q8 D; a1 u1 U
$ 85/C79B EA NOP ;4 T' f2 Z1 w# A! V- L
$ 85/C79C EA NOP ;( J5 P. m( k( _) ^* T0 E
$ 85/C79D EA NOP ;7 o+ p. N& p. n$ [! F5 @
$ 85/C79E EA NOP ;
8 y+ W2 C% c& t7 g: `3 J$ 85/C79F EA NOP ;% e9 h& @( d- W. h
$ 85/C7A0 6B RTL ;
3 h) g7 M0 Z; T5 z' ]9 j# {/ ]" W$ H( r( U" S/ a. c# Y
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|