签到天数: 2185 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html
w x0 S9 |0 J
) g2 Z4 G S* u+ k. T' c火炎纹章776修改笔记
8 u: y5 W6 a# C8 ?: u+ W2006.1.25
5 |' r$ c o$ f作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
" R& @8 l7 _' J( g5 N. t
% E8 U, j: @6 f) R0 [' h) u7 m, b; o1 [2 P5 z: I" V5 S% w
修改工具:Geiger’s Snes9x Debugger Mark 9
. v0 G c7 D. i
" x/ l& ]9 I$ d- e+ W: D3 F战后升级
V3 e+ d& k8 N2 d$ 83/EFDC 90 05 BCC $ 05->EA NOP8 c4 G8 x, M$ N3 J
EA NOP3 Q3 S8 _6 b8 [9 [: Z( g
( F2 V$ G) Z' g$ o0 `7 d
战后能力+12 K9 M7 ?" A) A7 \2 L
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001
1 x/ O* a4 }' Q! M. x有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
- h% ?. o$ y! c4 \8 b6 h1 a
* a/ Z# p% Y& R9 V! @1 F4 h武器熟练直接到A% I9 N9 e0 U7 \
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
; n; Z: M, F1 Q6 J# g) w EA NOP
3 H2 F) x# H, x4 g& ~. L存放所全物品锁定
0 y4 X) Z9 {8 p存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
' i/ F7 t( [) C2 X8 Y要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
* q/ P: m! g& R i( \8 t% j而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128# r( V2 Q" Y+ Z6 l
件物品,故可以突破存放所128件物品的限制,改出全物品。- J# v+ n) a. L! B; E
$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*20 w& g* F: N3 Z, y6 f7 R: _! k
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
0 v3 k1 _' H1 C$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
G9 v$ w3 T; Q$ 85/C78E CA DEX
) h+ W/ B2 T* B7 a* R$ 85/C78F CA DEX - f7 e' J; H, k p2 A
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次 D: U! y2 z- q! c
$ 85/C792 6B RTL ;返回时X=$ FFFE
8 e! G! v( U4 ?' P$ 85/C793 A2 FE 00 LDX #$ 00FE
$ p8 W2 [' q0 K9 l$ D$ I; `: w5 b$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
]2 o$ L6 I. w: s/ |$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0" A' f3 U) \/ \: `! U# s- O
$ 85/C79C CA DEX
: Z* t; c% w& y) h4 E3 q$ 85/C79D CA DEX 6 A4 R C h. Y1 l2 ]# }
$ 85/C79E 10 F6 BPL $ F6 [$ C796] 1 r' a+ M8 F7 e2 i$ n
$ 85/C7A0 6B RTL ; t* W7 A5 s3 l
实现全物品的代码如下:
& F8 G H' ]% v/ ~0 `; OStart@ $ 85/C785! G2 D5 J- k+ [
LDX #$ 014C A2 4C 01;X=($ A7-1)*2
' w8 x, U4 I. Q! T# qLDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量- ?- H6 y" L' w5 _
@2 STA $ 6FCB,x 9D CB 6F& h6 d) C& D. W" z. g+ P. M
DEC A 3A9 E1 Z/ Q8 r' n
DEX CA
3 q& {, M: z2 o$ w% BDEX CA
/ i7 ?+ s' o9 ?7 eBRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间# K% M8 t. J7 Y2 P. m
LDX #$ FFFE A2 FE FF;-|
2 z/ O; _/ W/ ~0 z$ wRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
/ B- H: g8 A8 _- D& v@1 BPL @2 10 F2;循环$ A7次
7 G) d6 O& H: ~; a, A: cRTL 6B
* k, F; L1 n( A) V2 e$ d0 J最后改完后反汇编出来的结果:
$ s+ x& ? H- o9 k$ 85/C785 A2 4C 01 LDX #$ 014C
0 h0 ]' l# N( Y# O$ 85/C788 A9 A7 3C LDA #$ 3CA7 0 F( A, N+ t' q
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
) b/ W1 c1 D$ C b% T7 o0 k$ 85/C78E 3A DEC A
& \, T* |9 @7 _2 w- {: O$ 85/C78F CA DEX , f! u4 y& _& z
$ 85/C790 CA DEX
- J0 e% u7 b$ A9 n$ H z1 z$ z C* l$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
7 n7 V8 L& N* w9 k, i; \$ 85/C793 A2 FE FF LDX #$ FFFE ;
3 _3 }1 ^2 F* @- o$ 85/C796 6B RTL ;注意一下,看看原来这里是什么: T7 \0 { q2 P) e; l! Z
$ 85/C797 10 F2 BPL $ F2 [$ C78B]
& o0 @' h; f& B$ 85/C799 6B RTL 0 K h; k1 L+ E* R$ M
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了! x* T) q" p8 W5 L: j
$ 85/C79B EA NOP ;2 L- {( C5 ?. C4 Q8 \
$ 85/C79C EA NOP ;. p8 c4 N+ Q- @5 w" o6 s7 f! ?
$ 85/C79D EA NOP ;
( V# ?! n% n9 `2 [# w' ?& h5 n: z" Y( T$ 85/C79E EA NOP ;
# g6 C+ B1 {; g0 H$ 85/C79F EA NOP ;
/ k- c9 m" h1 X# M1 n- U+ J$ 85/C7A0 6B RTL ;
3 p) r& t/ O4 M% `% ^2 o; K8 w7 O, _, @& N! X& }
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|