签到天数: 2072 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html. Y: C, W/ T! X+ K9 {" S* F% ?
( s6 V; g- k7 I- {% g. N火炎纹章776修改笔记) F3 u, c* a* Q
2006.1.25% `6 e/ _! g8 S. @( }( w
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
- R) d1 K6 x1 h, q9 t3 Z9 V. X- ~7 Q
% T$ P& e1 D4 l
/ j- z# m |9 A修改工具:Geiger’s Snes9x Debugger Mark 9/ e' w! M( V0 Z& Q
# \9 K* z6 V6 r1 G3 i战后升级
( { Y- c6 ~4 ~2 t; }+ n$ 83/EFDC 90 05 BCC $ 05->EA NOP. j9 ~ n( B( ]$ H. e l) K
EA NOP
8 X) H; l" o9 d+ |# V3 j! L, b* n% N' w$ ]/ h0 T4 P
战后能力+1' t! ?; f9 ^6 f/ n6 b
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001
% ]/ y# a9 _* J: b有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
9 ^' u$ R# M/ m P0 Z2 |8 I3 S) E) o' i, d7 f, G6 l2 X; O$ R
武器熟练直接到A @% Y" \/ O! z1 C
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
8 R+ |0 P! I2 ]' y: n" E. y EA NOP3 C: @# j4 q+ g$ a" S; Z4 D
存放所全物品锁定
! \0 u4 H/ X, O; n存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
X' P( I( s) u. Z: U要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,# l" S# j; h) g! ` H+ Q- J, r# V
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过1286 L. N1 P: l) K) J) M( l: w& P: k
件物品,故可以突破存放所128件物品的限制,改出全物品。$ V; m Q* C7 ~3 C
$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
% ] A6 ~# c5 E7 N0 L$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
% ]2 ~7 s5 H1 q* `# d2 H2 B3 q$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
9 q' Q* o. i: a$ 85/C78E CA DEX : L1 _ R1 o; c" l
$ 85/C78F CA DEX
1 W! I1 i/ v6 u8 W0 }$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
% J( R9 i$ Y7 ^! `3 K0 P: l$ 85/C792 6B RTL ;返回时X=$ FFFE4 _' {7 [ L- g
$ 85/C793 A2 FE 00 LDX #$ 00FE
+ q: R* _ E' S# L# \+ {$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
" J9 I8 P* T$ P& p: D: @+ V$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD01 J! ~# o3 t. X8 K. f1 I
$ 85/C79C CA DEX b- W; v7 D7 X9 |/ Q9 g" B
$ 85/C79D CA DEX
, _* W$ i8 `' ?+ Y" a$ 85/C79E 10 F6 BPL $ F6 [$ C796]
* I3 c J3 E6 Y2 x/ L$ 85/C7A0 6B RTL
, N+ r& ~, A) n3 N: I: i实现全物品的代码如下:
& W, u) Z4 R5 |4 ^3 ?Start@ $ 85/C785* _* [( j; G% c5 b
LDX #$ 014C A2 4C 01;X=($ A7-1)*2% w$ b; K: z7 L; _. k# n
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量2 T, L8 _$ h( r' i9 E! g Z$ U
@2 STA $ 6FCB,x 9D CB 6F! ? X" ]# X0 ]2 {. {& \$ P8 G: }
DEC A 3A) L4 |$ V, p& N" M' b" z
DEX CA3 o7 {, C. b. {9 N( L; L
DEX CA/ `+ ~5 k9 k! j
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间2 N' q& |* h' o! q& S" c( K5 }
LDX #$ FFFE A2 FE FF;-|
/ G( T# G/ X' i& K( n) j+ _RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
) k9 }% D1 B. ~+ i, }@1 BPL @2 10 F2;循环$ A7次
6 ~4 V# ~0 k- yRTL 6B
9 S2 I% K& G" d$ |2 V最后改完后反汇编出来的结果:
; \/ E, d1 J/ b8 p1 m& g$ 85/C785 A2 4C 01 LDX #$ 014C
, C; |: W/ Q9 I+ f" G6 C$ 85/C788 A9 A7 3C LDA #$ 3CA7
8 R8 `. U1 _3 N Z$ K* H" X8 u: ]$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] 2 E* Z8 S4 y6 G6 ? }+ a E9 U$ j
$ 85/C78E 3A DEC A
$ [1 f( g: E; P; y$ 85/C78F CA DEX
) |7 X0 p) `1 U/ A1 U2 ~4 G7 y$ 85/C790 CA DEX 2 e% A' T! u, d9 s" G/ m2 u) Y
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
' r# C# g- A+ b4 H$ 85/C793 A2 FE FF LDX #$ FFFE ;8 \8 `, o& }6 g4 A& F0 Y2 q
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
) y# V0 ~" ?: o$ 85/C797 10 F2 BPL $ F2 [$ C78B] / t. r+ F4 c# c! _0 ], n
$ 85/C799 6B RTL 3 {5 H" \+ U5 D. y' s1 C
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
7 I8 c X* Y+ z0 Q; S& @. z" l! Y$ 85/C79B EA NOP ;9 T4 r) \ }* f, g; l* g
$ 85/C79C EA NOP ; X0 @, i' [1 p! y: _8 t4 M6 D3 S
$ 85/C79D EA NOP ;% v N. |" K6 q' R% P& q2 a3 e
$ 85/C79E EA NOP ;9 G8 s$ u7 k/ s/ Z+ k
$ 85/C79F EA NOP ;
! v9 W4 E# p0 k$ d/ U$ 85/C7A0 6B RTL ; u( v% i; h4 f: q; z6 S' E& Z0 O
" m3 u6 g; A4 F$ P. R$ u- o[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|