签到天数: 1952 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html, @; T0 G4 C* p; X7 t0 X; |
: a! t4 m% P: W1 t" @+ J3 x. {+ Q( s火炎纹章776修改笔记
$ }& S7 q+ n" W% N- Y, K& h2006.1.25
8 m# B: Y5 W' {+ p作者:zHAOsILi[EGCG](.zZ~~) 转载请注明8 v2 i7 `5 q s) n( w
/ j# f2 z; T& h& m; u
9 |. A" o1 ^, l7 p6 l# @' F) j修改工具:Geiger’s Snes9x Debugger Mark 9, h# }! s @- f3 x, g2 N
0 G) ?1 D4 X+ { m# v. F战后升级% w; A5 i" a* }! V: A
$ 83/EFDC 90 05 BCC $ 05->EA NOP
! d' L' D; M+ ]( H EA NOP
$ c5 T$ |% R5 H; n
1 S5 s( q% r8 L% v# N% c战后能力+1# m4 `/ a, e- ^! f! O; q% _* F: d
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001
- e7 O- }2 E' \! D% @8 s有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
6 P$ R6 B* G2 H! _- S2 _
( Q! K& S- P- ^, U* L武器熟练直接到A
A! j) Q$ D+ i, c$ 83/E4E9 90 03 BCC $ 03 ->EA NOP$ j, f+ x. P# Q8 I
EA NOP- r0 t$ w1 I3 K, g) R% u0 ^+ Q
存放所全物品锁定
" r f* p% @6 H" y存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
% j4 ~$ h5 q! W7 g要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
" e% N- m( L6 S; k3 w而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
" @3 I( i0 e* R/ A# M件物品,故可以突破存放所128件物品的限制,改出全物品。
a. p2 C/ q9 K( }/ K% X) @" t$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
( M) }3 P" `- k* r: O4 y$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
! ^3 @4 r0 W# V$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
0 R- V$ x1 L7 \& l3 h P$ 85/C78E CA DEX
6 A1 W- G0 f) C1 h9 c5 a- x1 K$ 85/C78F CA DEX
3 c1 o4 c# w/ i4 ^0 L$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次# O: a! m- s* e! d' ~: W7 r
$ 85/C792 6B RTL ;返回时X=$ FFFE
4 y, }5 t+ M R3 A7 u. N$ 85/C793 A2 FE 00 LDX #$ 00FE
/ Q5 [. W" L; a* N* Y$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] # D; b4 [2 Y: J! G! J
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
8 v# R, X( E8 A3 ]( [5 c$ 85/C79C CA DEX 3 A% ? {# g4 C
$ 85/C79D CA DEX ; M8 |# F3 \5 @
$ 85/C79E 10 F6 BPL $ F6 [$ C796] $ }* U' N% Y( f! X/ d- _& I6 h
$ 85/C7A0 6B RTL * ^4 F) r/ a2 M) Y& R, T! d
实现全物品的代码如下:
7 N' a' _8 K( zStart@ $ 85/C7853 F+ x' ~+ S- g4 f; [+ R
LDX #$ 014C A2 4C 01;X=($ A7-1)*2& a- Q$ r9 J5 N! w
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
! O4 Z: X. \8 i" i- q, G@2 STA $ 6FCB,x 9D CB 6F4 P2 n9 A5 s& e$ k! ^# c$ m0 x
DEC A 3A Y/ Z; S2 t3 }: L
DEX CA* {: b4 Z- s4 ]# X# @
DEX CA, v) \" R* [* u0 }/ b" [5 f# e4 F' N
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
2 v8 G0 I) ~! U) A4 X, @# G$ e3 [- z, DLDX #$ FFFE A2 FE FF;-|; v q& o7 z \4 M
RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序4 p' f% e1 C* i# t4 e8 L" [
@1 BPL @2 10 F2;循环$ A7次+ d( w' J& k( @% C
RTL 6B/ `% E3 p: T" M
最后改完后反汇编出来的结果:5 F+ S( z& N. v" _
$ 85/C785 A2 4C 01 LDX #$ 014C
# U4 W5 `$ b& i( a% d$ 85/C788 A9 A7 3C LDA #$ 3CA7 : h& x, B" e! {5 t3 z
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] $ n) ]3 m3 T& b8 @+ }, j+ i* j, D
$ 85/C78E 3A DEC A & Q3 e; E4 |; B- _" W
$ 85/C78F CA DEX : S, ]0 `5 b, \
$ 85/C790 CA DEX 2 F4 U1 N6 Y9 A
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
0 g! K4 I' q( F- C+ o, G0 U5 `4 R9 R) }' O$ 85/C793 A2 FE FF LDX #$ FFFE ;
( ^& m; f( Z" R$ 85/C796 6B RTL ;注意一下,看看原来这里是什么) s" o" j! ~' k
$ 85/C797 10 F2 BPL $ F2 [$ C78B] ) C6 ]: H; i H5 r+ X2 [- V6 F
$ 85/C799 6B RTL
; p9 h6 m) f6 Q9 j$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
+ K+ @% x& T- W! W( u- c1 A$ B$ 85/C79B EA NOP ;
+ H6 j% c2 [% J) I6 E$ 85/C79C EA NOP ;' |# \1 C' u- V
$ 85/C79D EA NOP ;
X0 ?4 o& N5 C) e$ 85/C79E EA NOP ;
. ]9 P3 a2 }0 s' t# Z5 b' G$ 85/C79F EA NOP ;8 b3 b4 x- ]! c2 I0 g2 {
$ 85/C7A0 6B RTL ;/ _9 u0 U( a. F
8 y6 [( t8 v1 g6 t
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|