签到天数: 1813 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html
1 ^4 N5 }0 x- W$ Z, h1 `# O/ X0 q1 j( e! i$ S
火炎纹章776修改笔记8 _: z2 }5 C0 `- ?' L5 H
2006.1.25
7 V1 f9 ^- }8 f* G g作者:zHAOsILi[EGCG](.zZ~~) 转载请注明' Q9 ]- u* K/ ?( \
4 M. }: Q- ~, O5 `" P& w! `; o' c5 W P/ h# ?+ n
修改工具:Geiger’s Snes9x Debugger Mark 97 j( s) H/ t# a2 T' g+ O( Q9 [
: U0 [2 |% ^8 Q! @0 c2 R战后升级
' ~" E& y+ _! l% N$ 83/EFDC 90 05 BCC $ 05->EA NOP* I! q8 @ i' _8 f6 R/ |
EA NOP
# u; X4 d: ^4 P3 _
" n$ M! A9 h$ u0 X* y v战后能力+1
" z( _0 ~+ |, R$ v7 z$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001: C/ G' W1 V" W) s5 p; Z F
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b4 u5 K# J3 o- }
% n. o# v* E0 `+ p
武器熟练直接到A' @4 Q( F' M: h& Q
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP9 [; s/ g" `4 X( _
EA NOP
' I/ j/ A9 K" {8 J6 K. u3 l存放所全物品锁定- R0 E J/ d) g) \2 E2 S
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
[, \* g- Z/ N' H( x, M% ^+ \要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,+ g2 [8 L P g, M G( e
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
0 d1 `* U1 z) @, [! P/ s* v# h件物品,故可以突破存放所128件物品的限制,改出全物品。8 }% k9 r6 r( ~' _9 [/ t6 v5 @
$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2# ~5 r3 X7 j0 W) l
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
7 U: Z5 b& o: I: m6 I" s$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB9 X. I, F* b# ~7 L* o# M# R8 J
$ 85/C78E CA DEX ; u0 I$ q4 i7 U) j' o
$ 85/C78F CA DEX
' U& v) |7 G |/ p$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
$ G' m: p, r9 i# X7 s7 ?5 [$ 85/C792 6B RTL ;返回时X=$ FFFE
. d5 ~, d: J1 g$ 85/C793 A2 FE 00 LDX #$ 00FE
* ~5 X2 |. y4 O) F% r3 J4 `$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
+ P% y# H6 M8 h0 f" r9 \( w9 W$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
& g& E6 A* q; Q3 d2 q L" r$ 85/C79C CA DEX ' B8 P1 P! q+ m- k1 K& Z( i4 z
$ 85/C79D CA DEX
) m4 h' z: f6 y: q# ~* G$ 85/C79E 10 F6 BPL $ F6 [$ C796]
# f, `* J ]: |; x( }; g( x( E0 S$ 85/C7A0 6B RTL 7 l; _: |( t" ~& M) R2 y0 z0 j
实现全物品的代码如下: m9 M' H) \0 l* R* @
Start@ $ 85/C7852 g0 j& O! o9 T
LDX #$ 014C A2 4C 01;X=($ A7-1)*2
/ A1 `3 s( G" L6 [1 uLDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量) Q& Z" w" ] I$ ~% m
@2 STA $ 6FCB,x 9D CB 6F
2 t# U- W8 g6 t1 `; i# @DEC A 3A8 u3 h) g: p* ]! K2 _
DEX CA
5 ` R% b! G" w0 r& g. y( f* Q1 }DEX CA
" B8 v& F; ]& E! T( d7 c% v# yBRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
# t$ I( Q% b, h% @# KLDX #$ FFFE A2 FE FF;-|( o7 o. `: B5 _
RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序) o9 y! N2 T. k2 Q- Z. t2 @& ]
@1 BPL @2 10 F2;循环$ A7次
$ e: \. F1 [; t' t+ ]" P' N# lRTL 6B: n3 K2 a. d) H' q5 _
最后改完后反汇编出来的结果:
1 z5 B7 e) P$ J, S) f* ~$ 85/C785 A2 4C 01 LDX #$ 014C 3 R) V* E- N: F" \+ j3 n2 F5 x
$ 85/C788 A9 A7 3C LDA #$ 3CA7 O1 I- e0 K8 W# u, Z, b
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
6 c' F2 \; ` s) c" H4 R$ 85/C78E 3A DEC A - ?( s l$ f9 y
$ 85/C78F CA DEX 5 b7 O* F4 N0 {, T6 L! `' t
$ 85/C790 CA DEX 7 T& v. K" k7 ~4 P
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间; l3 {" ]1 P# @' L+ c
$ 85/C793 A2 FE FF LDX #$ FFFE ;
" E9 i7 h& N" |' u: w3 V$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
; L& l& g( T0 F# U+ z$ 85/C797 10 F2 BPL $ F2 [$ C78B]
1 v& i2 g9 Y4 s1 h5 V$ 85/C799 6B RTL
) X% h$ L5 C, s t$ 85/C79A EA NOP ;避免出错,把多余的都NOP了, x9 G- m( B# @
$ 85/C79B EA NOP ;
) j( P) h* b4 {) u/ X: B6 c$ 85/C79C EA NOP ;
& h, b+ x& S$ `$ 85/C79D EA NOP ;; q+ \; o$ Z; m L. I# J6 b" t0 i9 v
$ 85/C79E EA NOP ;. ~7 T+ r4 X! s X% _! Z! b
$ 85/C79F EA NOP ;7 w, L) S/ U2 S7 Q& h* @+ z$ G- j
$ 85/C7A0 6B RTL ;! C) Q: Q$ g/ ~! p& r7 l
0 B' }4 l3 ~0 u0 E
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|