签到天数: 1894 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html
, T8 Q# }9 N; b$ D9 z9 d- ]6 ]* h$ a# a2 d& h/ w+ y- v- M
火炎纹章776修改笔记
% g. P4 y. I2 \% A& O2006.1.25
$ W/ v f* z7 K, S5 ]) n. o作者:zHAOsILi[EGCG](.zZ~~) 转载请注明, f/ ~7 l' ~# X; j! Y# P( p# l( c! X
8 Q9 t0 X( K" S
8 Z" f9 I4 @$ z& Y \6 U4 l修改工具:Geiger’s Snes9x Debugger Mark 9& V* y% q+ ^. g3 z% T& f* r
! K! D1 t, o( B' i# q* p# n! K
战后升级
- @% n5 U$ y6 n$ 83/EFDC 90 05 BCC $ 05->EA NOP% O0 L3 z) {: |8 b6 e" R
EA NOP$ U9 I: V( J, C2 q. n
& }" A2 E* n; U6 n# q
战后能力+1
6 ?0 W) m( o$ G; j$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 00013 ]1 x& x: c, }, `9 b
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b. z1 w9 D6 Z2 J! T- p
) S( @ ^1 K; J8 S5 g" W) T8 v5 F9 X
武器熟练直接到A
) k/ b6 D4 O0 W; R% e$ 83/E4E9 90 03 BCC $ 03 ->EA NOP, U; W! W# S0 }4 P
EA NOP
& q; x' K+ E8 a0 g: e存放所全物品锁定+ a. A6 ^- M) x
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
, @8 x$ D# H. }! T& a8 y要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
5 O$ ~% u; s, O; {- Q+ G而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128) ~! {2 w2 [ m8 o, D$ L
件物品,故可以突破存放所128件物品的限制,改出全物品。" t* s& v+ k. g' a/ j# ~
$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
# ~! N% W; d+ U! J$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] & ?" y0 n( j ~" S* M) X
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB6 i& C5 ~7 \* t; d3 Z: b% g6 B5 |
$ 85/C78E CA DEX
# `5 f( o7 J) |8 h7 ?$ 85/C78F CA DEX # \+ D8 b: Q4 b; t
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
% C; {' K: ]2 v$ i! g$ 85/C792 6B RTL ;返回时X=$ FFFE
1 x8 l% P6 T' ]5 ?* [ T$ 85/C793 A2 FE 00 LDX #$ 00FE ' M% P+ C; g+ u1 k- p! a7 w3 P# m( g; A
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
. J0 V. M; ^8 Z$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0$ B, V, _! ^$ q4 y6 v% Y
$ 85/C79C CA DEX
( P, D! A$ e* T$ k0 X+ l5 \/ B$ 85/C79D CA DEX
8 d# ~6 m$ Q& E& D! n2 y$ 85/C79E 10 F6 BPL $ F6 [$ C796] 2 Q g) [6 l7 q* E8 [
$ 85/C7A0 6B RTL
0 o$ Q4 P, ]* k! G1 m0 J. G实现全物品的代码如下:
: i6 P. a" O% e" jStart@ $ 85/C785
$ v$ }5 d" `& rLDX #$ 014C A2 4C 01;X=($ A7-1)*2
4 j- ]+ c' Q9 }$ _2 XLDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
/ J9 T* y* g) ^@2 STA $ 6FCB,x 9D CB 6F
" f) c S0 D( I9 A6 {# Z4 Z: T- ?DEC A 3A
5 X! |) y g" H j, j' d& u- UDEX CA9 |4 i6 x3 m+ g* G) u6 w
DEX CA
5 g4 W/ D8 W- R& X, n, f: fBRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
# Z6 n& h$ C* y% DLDX #$ FFFE A2 FE FF;-|
9 `0 g0 M) O6 ~5 s- z$ C: t# xRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序* d9 O4 F" v, R6 L- j6 o
@1 BPL @2 10 F2;循环$ A7次
$ c' h% |7 b% z5 KRTL 6B
3 k, z+ f! N( i最后改完后反汇编出来的结果:
3 c# O* a& ?1 N( w8 f$ 85/C785 A2 4C 01 LDX #$ 014C & j& `. b& P5 |8 I2 M3 @
$ 85/C788 A9 A7 3C LDA #$ 3CA7 9 S& x. d: p: b- x% }
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] & o* o! }! o5 ^/ W! M
$ 85/C78E 3A DEC A
7 H5 A4 e3 E9 d- P$ d+ ]$ 85/C78F CA DEX
9 t, R1 J' B7 r7 C$ 85/C790 CA DEX
- c! j+ O. w) H1 x/ r; l* b5 @$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
! `) z$ {* x8 n1 `1 c C1 G$ 85/C793 A2 FE FF LDX #$ FFFE ;2 t$ f( }+ ]: ~
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
- ~) c# B0 ?$ l5 X* u1 Q! _$ 85/C797 10 F2 BPL $ F2 [$ C78B]
, g4 W, o( t3 `% {) r$ 85/C799 6B RTL 3 G/ F# k$ g# u* [, ^1 y
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了/ U0 q; [7 J% D/ U% K; Y
$ 85/C79B EA NOP ;6 F& M; R" m! \
$ 85/C79C EA NOP ;4 h, S) T! S7 k( \% T
$ 85/C79D EA NOP ;
2 y' w. K& _' w- K" V9 z$ 85/C79E EA NOP ;
/ a$ g& u# [5 a o6 ~: W0 S$ 85/C79F EA NOP ;! u2 x t5 W5 E0 y4 R& C' z
$ 85/C7A0 6B RTL ; P D) u6 u! `/ _7 t1 d
0 a6 J; _& w1 g0 d[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|