签到天数: 2180 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html1 J! q* V& j5 P/ C5 e3 f! H! v
7 F2 Z8 C- C2 b( i' E7 S
火炎纹章776修改笔记
9 G: `# ~, q0 x+ r( ?% |$ B2006.1.25& V1 I. f- J# K* c
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明2 Q* f% l% p1 u( f
1 @/ x! m4 Q6 w6 L9 U" @% U ^! ]: y3 R% c3 `3 r
修改工具:Geiger’s Snes9x Debugger Mark 9
% t0 I/ D; p' R( y' J) H+ x7 l9 i1 B3 y- j; c3 R! n: r* ]
战后升级+ G3 F/ O) c3 R! H) K! X
$ 83/EFDC 90 05 BCC $ 05->EA NOP1 V: a2 Q7 b) z
EA NOP- c( y' F8 R( S3 w* \5 C' [/ I
+ W# j& d& \, e' j战后能力+1
4 T9 D' f7 E3 Y7 A7 n6 b9 E$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001/ ^5 |* B) G9 S7 ^# }: t$ G6 |
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b. l; ?; t8 H7 k$ H: J# a. ~
( H+ V1 ]6 n; a) h. M0 ^0 q* R( {; D
武器熟练直接到A
# w8 v, ~1 w2 U. d0 C! _$ 83/E4E9 90 03 BCC $ 03 ->EA NOP K" v4 s! i: k
EA NOP( r1 a! W6 |4 @4 L
存放所全物品锁定
! e$ d- U3 |" R. K f, ~% n存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只' H7 Y F+ F* u9 L4 M; E
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,! \. l* J1 i/ @
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
( j! u3 P h$ x; j( i, V. x* |件物品,故可以突破存放所128件物品的限制,改出全物品。
; O! K- d" A5 [& c8 z1 r% L$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
* T1 H3 l4 j9 L) a. `$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] 8 s5 Z0 a% O+ t7 J9 ~ H3 _; F7 O
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB" y2 L7 j0 j; B
$ 85/C78E CA DEX
% j1 M- y( J A) W$ 85/C78F CA DEX
3 ]8 O8 |- g+ N2 H; v- ]3 y$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
0 I4 j, ?5 z7 Q4 W8 l+ M$ 85/C792 6B RTL ;返回时X=$ FFFE$ T7 A t+ S, y4 t' U F
$ 85/C793 A2 FE 00 LDX #$ 00FE
( [. j$ V6 K8 e% m! i) \5 n9 R5 Q) {1 p$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] $ b- H+ c7 A$ f& K4 u/ S$ E
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0- c9 O! i+ ~- H
$ 85/C79C CA DEX - ^" ~. K) J0 ?3 c0 l+ }7 ?, A
$ 85/C79D CA DEX 6 f6 ?: _( Y; }" u7 i; y' W% P
$ 85/C79E 10 F6 BPL $ F6 [$ C796]
0 J( p/ Y. B: p- o$ 85/C7A0 6B RTL - ^ ]% C4 x4 f5 a
实现全物品的代码如下:7 I( q. [' ]1 d" Q2 C* ^) [5 l
Start@ $ 85/C7857 T' b/ x6 c: i+ Q
LDX #$ 014C A2 4C 01;X=($ A7-1)*28 w. L% Q- a4 [5 L: @
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
0 `; y5 p2 K% ^1 ]3 @3 a8 I( a@2 STA $ 6FCB,x 9D CB 6F1 _1 I# e& ?, w9 o4 }9 p( m
DEC A 3A
0 a9 \* L x- H) N. X: K/ P# oDEX CA
* }; D: o, u- b; t% h0 p: ?5 VDEX CA
* b+ p4 ~7 {& h* k4 A% ]BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间: M- Z/ C" B4 t) o
LDX #$ FFFE A2 FE FF;-|
5 [1 i V% R- Q2 x9 i) SRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序, u) }4 Q1 |3 A1 x; ~! P% ]4 w
@1 BPL @2 10 F2;循环$ A7次
( k: F' ?# z) D. H% h" B( W$ Y lRTL 6B
3 D( y: x/ A! B' {9 ^9 I2 e3 [最后改完后反汇编出来的结果:
& F o2 e8 q4 {$ 85/C785 A2 4C 01 LDX #$ 014C ) x ^! `0 R8 |1 W
$ 85/C788 A9 A7 3C LDA #$ 3CA7
0 B! o7 c( J/ W3 o3 n0 y$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
0 W" b/ r. [' H+ o, P$ 85/C78E 3A DEC A . f# x. x" S; a1 q; l# o
$ 85/C78F CA DEX ; y6 ^5 [! h6 b W
$ 85/C790 CA DEX
* j0 M& g# t7 {# K0 o: @$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
9 E7 p. I7 r7 W' w5 t! V z3 k, f% Y$ 85/C793 A2 FE FF LDX #$ FFFE ;4 O$ Y* x6 k4 y) K
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
# ]2 \2 T0 c3 V$ 85/C797 10 F2 BPL $ F2 [$ C78B]
# o( \6 \6 r0 f1 C! {* k$ 85/C799 6B RTL
4 ]2 J0 ?! v& W$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
, _. g. |7 a& J9 I$ 85/C79B EA NOP ;: O1 f; g( N2 N0 D
$ 85/C79C EA NOP ;# R# l8 d" C7 ]- `' f9 r& l
$ 85/C79D EA NOP ;
8 |# P" y& G$ J$ 85/C79E EA NOP ;/ _2 A9 _$ z- \
$ 85/C79F EA NOP ;
4 c( }1 [/ [! O* h! J$ 85/C7A0 6B RTL ;
! t/ h2 [9 N1 {3 k' ]9 N' q' ]0 w2 p; L# r
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|