签到天数: 2140 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html, X3 q9 a, C5 V
( B2 Z4 @( L" L+ c% A: Q火炎纹章776修改笔记
/ a& c- @: O6 T5 ^2006.1.25
6 b6 t3 a1 w4 F* J+ C作者:zHAOsILi[EGCG](.zZ~~) 转载请注明( }6 C& w: Y5 |/ E* m J
0 v8 m7 C6 ]0 w e! P* D4 U& T- p4 ]5 ?4 o) P) g
修改工具:Geiger’s Snes9x Debugger Mark 95 V) v4 L: }5 n, Q a
6 R, V! F+ `! s; h战后升级. s% P1 A* a& b5 I& E9 }, E
$ 83/EFDC 90 05 BCC $ 05->EA NOP
% J' {7 N; q0 f1 v8 t7 `$ ] EA NOP
7 o4 t# ~6 M3 E0 a% Y, R5 ]. l* ]7 Q2 c; y9 E4 v* \' F
战后能力+16 V6 o( S: ^& E- [5 o8 |
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 00019 Z0 A$ r0 f+ m
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b" f# O) B2 X5 x$ x. Q
/ a( V, |+ p' S/ e/ c! k武器熟练直接到A
' K" ^8 ]: R9 M$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
- f* r i% e! X& o EA NOP. B8 S, E1 b7 a( r2 s% Y6 r3 Q
存放所全物品锁定
% U4 P. Q5 @ n$ q x$ `# f0 F4 q) c存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只& V- \% \4 R+ F1 q; q8 O
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
* J- l6 v" m! y; [ y' y0 W而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
: u6 C4 }( [1 Q; R件物品,故可以突破存放所128件物品的限制,改出全物品。
& I+ n* p6 h, s q$ l$ g% r; C$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
6 i8 C% L* G% J$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] |, A; C L2 e- z/ _
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
: V# m w2 ?* p' Z$ 85/C78E CA DEX
+ F# U$ {& r. l' Y" l$ 85/C78F CA DEX * a) N: v" P4 h' X1 g4 |) u
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
2 [- f; W# U, J7 b, w! d$ 85/C792 6B RTL ;返回时X=$ FFFE
5 j8 u) N/ f: C) g( N: J$ 85/C793 A2 FE 00 LDX #$ 00FE
/ c7 G: b% k" M0 `& _$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] ) d* R! Q& Q+ L8 z% x
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD04 _8 I5 n! }6 B- v
$ 85/C79C CA DEX ( D5 [$ T# w3 K, t7 ?% f
$ 85/C79D CA DEX # P! R" j. w/ J) r2 N
$ 85/C79E 10 F6 BPL $ F6 [$ C796]
5 w2 }% A" g* w& L$ 85/C7A0 6B RTL ) a1 ~( B* Q8 W- r4 U3 Y
实现全物品的代码如下:
1 {1 K) g/ z' F9 LStart@ $ 85/C785
$ }/ p1 O W! ?+ D% ~+ x3 RLDX #$ 014C A2 4C 01;X=($ A7-1)*2: g% V- H$ C0 [1 t) {' ?
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
# A" r$ h5 s. W+ k& f@2 STA $ 6FCB,x 9D CB 6F" G3 a$ S& D( e8 o
DEC A 3A/ m6 o6 U; t6 E! r' H/ b2 @
DEX CA
: J Y- N' s! p" p& D& A3 [DEX CA8 v# ^" X+ S' s
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间% o7 {7 M, X% @3 n/ i6 G- U
LDX #$ FFFE A2 FE FF;-|
& Q, a" x, K- mRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
0 n, b- T& Y1 [; A@1 BPL @2 10 F2;循环$ A7次
& \' ~ F% V/ |RTL 6B% H" h1 E% l- G# w
最后改完后反汇编出来的结果:
: `# U9 E* T$ { b! n1 v$ 85/C785 A2 4C 01 LDX #$ 014C 6 x4 k4 v# V! X5 w- S% Z# W4 u6 K
$ 85/C788 A9 A7 3C LDA #$ 3CA7
0 i1 M0 l5 z& F) [& A$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] , |$ K3 j' [% P/ j3 _
$ 85/C78E 3A DEC A 2 {* _, f) z! _! e4 p7 E- W
$ 85/C78F CA DEX
3 `) K/ w0 c9 r3 l% J: p* q. E$ 85/C790 CA DEX
- q3 i. h6 }0 ^& b& q+ `$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
K2 P0 g# B: V9 z" V6 Z$ 85/C793 A2 FE FF LDX #$ FFFE ;3 b4 M4 L$ E) O9 O0 j, Y
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么# O7 A' T8 E* x' M. f
$ 85/C797 10 F2 BPL $ F2 [$ C78B]
, X( M. p# |- \( n; f" S$ 85/C799 6B RTL ! c! k3 O2 {) e
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了! @& d* O) y [1 n* N Q
$ 85/C79B EA NOP ;
, ~- a! D6 j% k6 j$ 85/C79C EA NOP ;4 _, v6 r) t9 ^1 |
$ 85/C79D EA NOP ;% {$ Z7 F$ |' r. j7 V1 o
$ 85/C79E EA NOP ;& d7 G, F! i% z8 F7 g; C
$ 85/C79F EA NOP ;
_" Z0 @8 E9 q( z U$ 85/C7A0 6B RTL ;
A# y4 f2 O+ t2 o" S' X& q) Y7 G
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|