签到天数: 1772 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html2 l+ m! g1 R2 [4 c" z/ k8 ]
$ z5 o* o6 `; v7 i# [
火炎纹章776修改笔记! N) x# E! d% ?# u: H
2006.1.25+ g) p) X3 q& Y' d
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
! J. J) M2 X" }8 t! H( j' i1 O F [ u7 R6 ]6 {( P/ s
9 q! k( H3 e$ Q2 z/ W# b. h6 l0 Y; @修改工具:Geiger’s Snes9x Debugger Mark 9
' S# Z! a& x5 W, X! E0 s& ~9 f) ]8 h9 y# T- c
战后升级$ l7 ]' K) K% c4 J* U0 ]" j; E
$ 83/EFDC 90 05 BCC $ 05->EA NOP
/ G8 v" o, R# }3 a EA NOP' p q( F7 b% r7 y- L! y) R
. I, X" S6 Y, F7 S( u: M战后能力+1& }6 E& ~1 m# b
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001% ^' b+ |0 W/ [3 {0 `4 ^# v1 L' n
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
) |0 ?- O, U5 b1 b! t/ X
" b6 Z0 T, z/ ~( J武器熟练直接到A6 R* X- z# c" s, j! S
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP \9 {: e/ w$ O: D, b3 q# @
EA NOP6 W( Y: o t8 M
存放所全物品锁定$ ~' G4 A. }" `6 D) k
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
( n8 ^. O7 p5 q, d要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
8 K1 u1 L: l% P( D% v而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128( A" c; A" m" D
件物品,故可以突破存放所128件物品的限制,改出全物品。
2 J$ c$ O3 M/ L' h) j$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2! K8 `- r' A3 s) A9 O3 G6 o& c
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
; h* A9 U( B: Y& H. F, C$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
* T. q* z& h! E% X6 S6 V$ 85/C78E CA DEX - O0 `) Q' G7 u
$ 85/C78F CA DEX 7 p0 c! }' N( s* }6 m) m7 z
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
8 p6 I6 h4 U' B: ^- U$ 85/C792 6B RTL ;返回时X=$ FFFE
; y$ u+ |/ m5 ]* ^1 Q6 R0 x% u$ 85/C793 A2 FE 00 LDX #$ 00FE
# ^4 o" g8 I9 ]$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] 0 h, D! S* W( n2 ^, f
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0& k# p, ]1 G2 E5 Y- i
$ 85/C79C CA DEX ; o3 J2 a& R' Z5 j9 ?
$ 85/C79D CA DEX 4 ]% V" b. d/ i3 v, E, q) r6 J
$ 85/C79E 10 F6 BPL $ F6 [$ C796]
1 V) @4 G, T- P# o$ 85/C7A0 6B RTL
9 Y4 l. Q4 i, R3 W" \% J6 O5 w实现全物品的代码如下:
4 \1 m$ u0 ?7 Z5 \2 c( R* [6 {Start@ $ 85/C785
# A+ m" M- m; w6 z( n3 SLDX #$ 014C A2 4C 01;X=($ A7-1)*2
( \) \ \# E _4 ^; iLDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量2 R/ \; n( V- q! M5 c
@2 STA $ 6FCB,x 9D CB 6F
! b9 p, K+ y5 _, S6 x2 _& mDEC A 3A8 @4 H" l: ^ ^/ m/ }
DEX CA1 J! H1 }, L# U% b5 b
DEX CA( p% E. D; Y' m. j( ]
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间# H/ t8 z2 N$ g/ G( O5 K% h9 E! f! k
LDX #$ FFFE A2 FE FF;-|
8 y" m: Y* f/ F: ~RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序3 m' S& w" c% t5 }6 ~, f
@1 BPL @2 10 F2;循环$ A7次; ?; c; j8 `) @1 a5 S6 D
RTL 6B/ P! w) L2 j4 L$ n
最后改完后反汇编出来的结果:
' s4 u4 ]9 v; B$ 85/C785 A2 4C 01 LDX #$ 014C 5 d- N) n" w: Z9 v
$ 85/C788 A9 A7 3C LDA #$ 3CA7 / _( Y# h6 Q. i: A& I. C6 g8 J: y2 z% C
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
% Y4 \, t, q ^- C; N$ 85/C78E 3A DEC A . H6 X7 r0 S7 I% ~* s- @
$ 85/C78F CA DEX % [* h6 z) _% K' b- L
$ 85/C790 CA DEX . c! z* E6 d- O
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
' ~% }( @8 E) L; G5 \& T$ 85/C793 A2 FE FF LDX #$ FFFE ;3 f7 W; @# `- O ?) t4 f
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么: z X. \: D' D3 P" y3 h% ^
$ 85/C797 10 F2 BPL $ F2 [$ C78B]
9 E8 T- ], m2 \( G0 x8 [( Y$ e$ 85/C799 6B RTL
% g6 ^; N1 y( [$ 85/C79A EA NOP ;避免出错,把多余的都NOP了+ V# c* H x6 }7 N5 k
$ 85/C79B EA NOP ;, T+ L6 r3 g l+ T* e1 N$ K% t
$ 85/C79C EA NOP ;( {8 { r' V( p6 f ?4 _
$ 85/C79D EA NOP ;$ d1 T0 f/ ]$ W/ ?* w
$ 85/C79E EA NOP ;4 B1 O, ?% o& }/ u' V" P: v
$ 85/C79F EA NOP ;
3 ~; k0 n9 i% y! f9 H1 \7 A$ 85/C7A0 6B RTL ;* }2 f+ U* t, |
/ X# C& G7 a$ e8 c9 B. E[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|