签到天数: 2074 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html- _7 J a4 f7 {/ } ?3 r
1 t9 c o& g0 V; `% l* P! u3 t" D
火炎纹章776修改笔记 M, A4 H( L+ Y2 C
2006.1.25# b+ m, n M) _: L; ~6 l
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
! n$ ]5 f' ?; h7 m7 y7 Q3 k
, _2 d' e# d5 d/ o) X& M6 J% s |! m: A2 x1 C ?' S* l+ s( O
修改工具:Geiger’s Snes9x Debugger Mark 9: \5 q% z( Y* _9 m/ s T, k. E B
% ~2 E# _) x. S! q$ u
战后升级( Q2 R8 K( a: I6 H! {
$ 83/EFDC 90 05 BCC $ 05->EA NOP
5 ?8 {, C, x5 O9 P EA NOP
: B1 P! N* @2 ]* M( E
; ~5 c2 p/ s n0 v0 x战后能力+18 I5 ?' @6 K% X. q
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001: u" m3 f/ q2 Q+ F
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b j# v% v0 V+ g6 r6 }9 p6 g
2 y. i8 E9 I: F) ]4 I
武器熟练直接到A) ^% _0 L; v4 b& X2 A8 Q, i9 f
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP8 y- b6 p$ u. B# s5 R! v' i
EA NOP, ~; I& I( T* r ~
存放所全物品锁定
I. T. g/ Q! A4 Z2 S! w E; ~存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只3 w+ r! M8 z9 X6 m1 i4 {7 u
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
$ h& M& f- p5 T而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
4 s* n% t, V: v' d件物品,故可以突破存放所128件物品的限制,改出全物品。
3 b% K3 s9 T$ w$ ^# ~* C$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2/ O8 k5 X+ L5 h; r
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
' U* v5 `) h" k0 I$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
& L; _5 ~. V) |; z/ E) k5 z1 a$ s$ 85/C78E CA DEX }4 ?& ?# |: a; i k; {& q
$ 85/C78F CA DEX
; ?; k0 {) g2 [$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
4 d$ o% o. I, D/ } Y$ 85/C792 6B RTL ;返回时X=$ FFFE
' o! x* g( [, ^$ 85/C793 A2 FE 00 LDX #$ 00FE
4 O& W# ~8 A1 U9 q, i( b$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
6 K; }3 i# j2 F% l* k$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
+ y: K/ J. `1 ^& g$ 85/C79C CA DEX
- P6 S4 m) Q7 x. \" r$ 85/C79D CA DEX # w9 ` V6 D% `% @- I
$ 85/C79E 10 F6 BPL $ F6 [$ C796] & O, z7 R9 M8 o k# t
$ 85/C7A0 6B RTL & h( j+ i( e' n
实现全物品的代码如下:7 I1 s& x. ?8 [* L; W8 s! @+ _
Start@ $ 85/C785
& I. n H( ~0 Y* f* A9 t5 o( WLDX #$ 014C A2 4C 01;X=($ A7-1)*26 s* S' j, Z+ J# }, Q- E, w1 i& s! Q
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量0 b$ r( Z# _# _: u
@2 STA $ 6FCB,x 9D CB 6F
- k) n3 c( b7 V* f# @9 FDEC A 3A
) N4 R" c2 c( n8 E* W1 W# x V" K% eDEX CA- [9 _+ E% u, q8 d( N6 J) z
DEX CA+ Q: u) A1 E1 y
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
6 }# J5 W' c# B% {LDX #$ FFFE A2 FE FF;-|8 H2 r& p( P! S& t( r: N
RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序 _( _% L. Y$ M; @* X: w
@1 BPL @2 10 F2;循环$ A7次
2 p) o- G; I9 e6 y+ CRTL 6B% b) {1 L- r# \
最后改完后反汇编出来的结果:
5 b0 p+ y# y- r m8 }# ]$ 85/C785 A2 4C 01 LDX #$ 014C ; f+ b L1 M- U6 g! w4 c4 g
$ 85/C788 A9 A7 3C LDA #$ 3CA7
* V: X$ m4 q: ^! ]$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] ( [% {0 n) X2 _- L2 ?, H3 `
$ 85/C78E 3A DEC A
0 A# X/ j; _0 f, n$ 85/C78F CA DEX
1 f7 |% N- Q# w4 u1 [$ 85/C790 CA DEX ' z, z& x K5 u3 P, W( i' _8 h5 _
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间6 A2 T" ~" ]/ P0 h) U
$ 85/C793 A2 FE FF LDX #$ FFFE ;
! i9 K8 Y9 A6 Z9 x1 O7 P0 v$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
7 E8 V) r3 l4 E5 D2 K& x+ B0 F$ 85/C797 10 F2 BPL $ F2 [$ C78B] * f: D* h! V! t
$ 85/C799 6B RTL
& ~6 j( r1 P4 o+ W3 O) }; V$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
; {( k4 b3 G+ ~$ 85/C79B EA NOP ;
) v" S/ R; {- V+ B$ 85/C79C EA NOP ;
, _! A( q$ F* | y: q$ 85/C79D EA NOP ;" G) {5 M% L' `0 O+ O
$ 85/C79E EA NOP ;0 d6 w/ z! j4 q! o [
$ 85/C79F EA NOP ;7 H/ {: [! \& R8 ?
$ 85/C7A0 6B RTL ;: Y, ]- X& |5 [! V7 s( i
3 j5 C# @" B* n3 s. s/ \
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|