签到天数: 1972 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html
: @2 j4 q- n+ x# q$ X1 H
+ f' ~+ ] u& \: e火炎纹章776修改笔记
3 X) G. R* Y5 A' x( y" g' S. m2006.1.25" X0 I% C. R- n$ }3 {+ a
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
, t& f. b3 m4 ^: W) A. M) G" S4 y& h& @
8 A2 N$ x& v4 W修改工具:Geiger’s Snes9x Debugger Mark 9/ Q% f5 w5 G9 _4 ~& Y$ ` Y2 p0 s
6 F' K" w* \5 z战后升级
0 _4 ]; R6 I0 M+ r0 N7 f8 [/ ^$ 83/EFDC 90 05 BCC $ 05->EA NOP# \8 c+ ]+ T8 B/ o6 I
EA NOP
6 C; M/ d4 {7 b, _0 F$ T% O+ h, ?1 b j8 r$ R/ a) a7 h
战后能力+1
2 K. G& M! ~( V& l$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001- r/ X6 t* l: h7 }1 H' p2 T
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b N7 F( \0 N$ F0 P; W- T* d
! I9 v3 `% h7 m" S; H1 \2 h
武器熟练直接到A
! l3 T8 v( \5 B L) ?$ 83/E4E9 90 03 BCC $ 03 ->EA NOP* X$ @# w" ~5 C
EA NOP
& u" N- ?4 N1 k) C存放所全物品锁定( C0 _1 K6 j. z# j1 t) W
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只4 X8 O$ q8 C; V
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,5 k* {0 }" g- Q v
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
4 H4 Q) m# V6 Z$ ]3 Q件物品,故可以突破存放所128件物品的限制,改出全物品。
' s3 A7 B* w$ p9 G- z- M3 y$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
/ r V$ n( \# x" h) _3 w8 G& A* z$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] 3 ?, q8 n) S/ l
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
7 b$ ?% G G% l3 ^/ [& M$ 85/C78E CA DEX " {5 v# e+ M& e
$ 85/C78F CA DEX : D; ]- D& C. R5 b
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
" @& [) @3 y; J1 ~3 C0 m$ 85/C792 6B RTL ;返回时X=$ FFFE
" J& i2 O1 i+ y5 ?8 ^$ 85/C793 A2 FE 00 LDX #$ 00FE
Z! k/ m* k4 ^. W2 C$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
7 Q( z" o& \+ k* @' e$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD01 b) z5 h5 ~0 c
$ 85/C79C CA DEX 7 O$ S3 X( x$ h* C+ p+ g: i% F
$ 85/C79D CA DEX 8 ?4 G: U5 S0 [* Y3 T" B: C$ T
$ 85/C79E 10 F6 BPL $ F6 [$ C796] 3 o; w/ p( b; a+ d
$ 85/C7A0 6B RTL
2 I4 e t! L9 ^6 U# N, a: |% ?实现全物品的代码如下:+ i1 Q- d" o+ i" U" H7 U2 S
Start@ $ 85/C785 i, s; D! N% E* E; ^8 Y
LDX #$ 014C A2 4C 01;X=($ A7-1)*27 N# j3 L, a+ O' ^3 f/ q$ {( ]
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量2 [* T( {7 i, C" Q+ l3 n
@2 STA $ 6FCB,x 9D CB 6F# x% d- U2 ^1 w0 \9 }# D+ T
DEC A 3A! q" r9 Y. j* h6 \5 N: q
DEX CA
K- Q) L$ _% X; b+ F- }DEX CA, y. X2 i, X( m/ S) t3 a
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
7 A! j8 Z1 D l; T1 [LDX #$ FFFE A2 FE FF;-|
. V) m* t* @% ^8 z) fRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
' _8 C J" r1 N+ c8 n2 u: {" k@1 BPL @2 10 F2;循环$ A7次) e/ r8 |; r8 t# o
RTL 6B
: @5 s- i! ?0 a! p7 z5 D5 h# r* ?最后改完后反汇编出来的结果:
3 b# ?& n* J7 |6 D, C) B3 B0 Z7 o$ 85/C785 A2 4C 01 LDX #$ 014C
( ]% }+ D8 b# S* I$ 85/C788 A9 A7 3C LDA #$ 3CA7
2 P' E& ~, W2 x+ w* I K5 I$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
1 p/ M1 @! m1 B4 \+ j$ 85/C78E 3A DEC A
. H5 M _# {( S8 M w" ^8 Q$ 85/C78F CA DEX
# S9 X( a. S" o9 m7 K" M$ 85/C790 CA DEX
) V* U9 Y8 V( g0 S$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
0 T) k4 T' V# V9 e- M& o$ 85/C793 A2 FE FF LDX #$ FFFE ;- Y. g, r3 N% r5 I( L% d
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
* y' S- Z' t6 ^& S! {$ 85/C797 10 F2 BPL $ F2 [$ C78B]
3 v; |) E2 b* i I. N" V9 W4 U: ?6 w$ 85/C799 6B RTL
7 s- Y' [# o1 i1 C5 v+ O! }$ 85/C79A EA NOP ;避免出错,把多余的都NOP了/ W/ _( B! Q! S. y
$ 85/C79B EA NOP ;
1 o" ~9 C, B! a$ 85/C79C EA NOP ;
% ?# ], p" J0 c$ 85/C79D EA NOP ;$ a4 G2 r7 \% {' y. A+ s
$ 85/C79E EA NOP ;; s( J! p/ d+ Q# r
$ 85/C79F EA NOP ;% t8 k( N' L# x# C' n
$ 85/C7A0 6B RTL ;
! A% U9 ^2 z L* O# U0 d
7 D% F1 E, f5 q2 Z4 ?8 y1 p8 S[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|