签到天数: 2180 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html0 N: \* I7 t+ U3 x
' A; ~% r6 a) x% b火炎纹章776修改笔记
! e# y! C3 O- a) k, w* s2006.1.25, W6 s! v( j& b) ]) @3 n0 ]
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
- B0 _+ e Q, o; _6 n4 I7 ^
, c4 F% [; P1 F3 T4 J0 E- N" [1 T" Y) k5 u1 Z- Y4 }% p0 @
修改工具:Geiger’s Snes9x Debugger Mark 9
S) Q' P! P0 R9 n( Q8 Y1 x* u1 F5 Z
* |0 i6 ~6 Z$ T9 |战后升级& {; `$ m3 [7 i5 T: u! s+ {
$ 83/EFDC 90 05 BCC $ 05->EA NOP
. b9 e9 S2 {; d# W k; c: A EA NOP
& y R- J) T2 J7 u. C
- {+ }5 J3 s" h+ k战后能力+1; i6 g- Y8 u* n8 _
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 00017 @4 {! T- x! i1 Y( T" F
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
/ d$ I# j. M" ~% ?! h; S1 l# l$ R7 W5 O+ w. d2 d
武器熟练直接到A/ M, y2 m* K9 j+ J: Z
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP. g( R( U U6 } {
EA NOP1 N- }* P/ a" q0 ]
存放所全物品锁定! \# C! N& f, B
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只! c O9 u. N/ z
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,( g. M5 h( G; Y+ g
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过1288 \$ a+ l/ ` z5 V( Y' I: j0 x" l
件物品,故可以突破存放所128件物品的限制,改出全物品。
; f+ b8 g& _2 }1 n3 a& u$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
1 {: s! x- g/ p4 e* p$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
* H% S' m3 _9 ~0 `! g) N$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB( [) A7 g* n1 J" t2 }* E. z2 O
$ 85/C78E CA DEX
) ~7 ?4 H/ R3 ?+ {$ U8 e$ 85/C78F CA DEX
0 O% T/ N- L. Q) V$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
% m* g6 f5 @; M/ ~ U5 v: u) F$ 85/C792 6B RTL ;返回时X=$ FFFE
* X( x% u$ W6 j3 L: Z9 e9 e$ 85/C793 A2 FE 00 LDX #$ 00FE
& }; c4 a( ~6 E+ G- m8 f# n' o$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
; ~4 ] H6 z+ k g7 l& P! @$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
; k: P* |+ q2 r! y$ 85/C79C CA DEX
) u( x8 w. @$ y/ b( J2 J- K+ q$ 85/C79D CA DEX + I4 F* C1 c$ i% U$ B% p
$ 85/C79E 10 F6 BPL $ F6 [$ C796] / F9 ?' Q0 {& N" |
$ 85/C7A0 6B RTL + P8 o0 _0 H) n& W: L" c/ i7 G
实现全物品的代码如下:
/ d3 [/ x* i- s/ Z; [4 P* }) @Start@ $ 85/C785
* L+ X3 N' G2 C7 l$ mLDX #$ 014C A2 4C 01;X=($ A7-1)*2
( r. j" i& T2 ~ ]LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量* n/ h' d( d, i% i" ]7 o+ R9 M% B0 x
@2 STA $ 6FCB,x 9D CB 6F0 U% G0 b9 m$ Z
DEC A 3A
' j6 I, M% B4 p! c8 L! y3 q$ W wDEX CA
, e' ]) @* p8 h5 J5 @* G5 R- QDEX CA
; j0 K/ s, | `* l( kBRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
: T* N1 T0 H( [+ {) y3 SLDX #$ FFFE A2 FE FF;-|7 Y8 t. @5 s8 u! \% Z2 s" V
RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
' v& c" U4 z' R/ R@1 BPL @2 10 F2;循环$ A7次
( o6 x( q6 `( k/ N) L, N3 ]0 v/ LRTL 6B
/ y2 D1 q. c9 }- N最后改完后反汇编出来的结果:
3 L2 F$ u0 V' O$ 85/C785 A2 4C 01 LDX #$ 014C ; a2 O5 S% D) `8 T/ a% r
$ 85/C788 A9 A7 3C LDA #$ 3CA7 ' p8 s8 _( [& e8 W0 @# T8 P
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] 6 E! V5 _: h& z9 j6 `7 w3 w% ~' A6 i
$ 85/C78E 3A DEC A
- u, B$ ?% Q5 }7 p5 g% s. q% c9 c% ~- h$ 85/C78F CA DEX 5 y1 ?( E" T/ K" ~ T! H
$ 85/C790 CA DEX $ p6 t, N- c; z: k# |
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间5 n$ I6 J4 D, h( w [! _4 f$ s( S2 I
$ 85/C793 A2 FE FF LDX #$ FFFE ;, |6 c! d: i8 S6 v) d
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么; N N7 O, W* f* v+ {( ?; @) ~
$ 85/C797 10 F2 BPL $ F2 [$ C78B]
2 T- v2 I. I6 }% V0 J$ 85/C799 6B RTL 0 i, G) ~# A4 I3 U0 f$ N
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了) z& J! A3 {9 i
$ 85/C79B EA NOP ;) [$ p( D( L6 O/ H. r' a; k! r
$ 85/C79C EA NOP ;! r3 e" d5 h$ Y& D
$ 85/C79D EA NOP ;; v4 B- ]4 Q k5 i& ]
$ 85/C79E EA NOP ;
; x' ~& m/ O/ d$ 85/C79F EA NOP ;
' s* a, }' I+ J x; a8 c, T$ 85/C7A0 6B RTL ;
: E3 K! X5 V1 t0 P7 f" ^; w) L, i- \' D; ?5 F9 W
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|