签到天数: 2192 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html
* x* S, R- l/ q) \+ Q
' ?4 e( } v; X1 f" ?, y$ `: P火炎纹章776修改笔记
; w* [$ T7 J6 t! r3 r+ l& F0 ]2006.1.25
$ b4 Q1 C7 L" d7 P- F( g! y作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
$ b9 d: v2 a! Z! C: r3 p" G' f' L d, `1 D5 y9 C
6 j, L+ F. B9 x8 y% j& d$ @, H修改工具:Geiger’s Snes9x Debugger Mark 9
( P* ], V6 r* P8 c: f( P# F4 h4 Y9 D8 ?
战后升级
; l- E+ b! |6 Z# w. h7 ^' T5 m$ 83/EFDC 90 05 BCC $ 05->EA NOP
! p9 ~' q; F; s K2 P8 P EA NOP
# I, o& s4 ^$ P
5 y# `! E4 T5 R: V战后能力+1
+ v+ n! `$ ^) J1 r$ v$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001
$ ?8 H' z% t3 q) Q有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
, ^6 y$ M' g* v
( u8 |* j- U" u武器熟练直接到A6 G0 y1 Y5 N$ o! A
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP+ W( N8 S6 _' P T6 T
EA NOP
2 g( _- b6 f) E6 d9 w" Q. w4 f存放所全物品锁定
$ u+ v( z v0 h% Z+ w) D1 u# m存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只/ C/ S: a# r5 x1 q+ u
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
$ q8 A+ ?& u' w# d. A5 k0 y而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128, t( o, d8 h# `9 P: V7 u$ e& A9 ~
件物品,故可以突破存放所128件物品的限制,改出全物品。
2 C2 C& e# c5 u4 K) T6 k ^) V X$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
# @7 c1 Q; W) Q9 [: z$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] ) v% K0 [$ U9 D9 g7 v7 F
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
( ^0 J: C2 V, P- O8 e' H$ 85/C78E CA DEX
. T* i' `4 s' _4 L/ H' e& j$ 85/C78F CA DEX
2 X% `- k {0 U1 Y$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
, b4 ]& U+ A+ U: p" J& S0 B$ 85/C792 6B RTL ;返回时X=$ FFFE% m$ w9 }1 q7 P% G( v% {+ O
$ 85/C793 A2 FE 00 LDX #$ 00FE
6 I1 F+ w: x" R/ b1 c a, n3 Z$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] " M" ^7 T' y* |: S" M
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
! ~1 E1 }1 a+ J( }% v% I# w4 z: Y$ 85/C79C CA DEX
{/ K8 W# [& e. c& z; F$ 85/C79D CA DEX
4 m+ F. M0 t% E5 e U+ a1 C$ 85/C79E 10 F6 BPL $ F6 [$ C796]
% J9 i+ a$ U. k$ 85/C7A0 6B RTL
: x, R A" b; ~: \5 C+ n5 R9 I o实现全物品的代码如下:) _ Y# z) R3 R* M
Start@ $ 85/C785/ C1 Z8 _8 c6 }6 y1 ~7 E# b3 H! F
LDX #$ 014C A2 4C 01;X=($ A7-1)*27 h& F3 ?& _, T% R
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量; A) b0 Q& y8 @" C+ o
@2 STA $ 6FCB,x 9D CB 6F
1 C) M+ x; K; z# Q% A/ ?; gDEC A 3A
- d2 o5 I. G6 LDEX CA d( i5 Y# n( d
DEX CA
/ L7 H {" O0 ?6 \- _BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间: r- w; X% i- H, ]& k( r0 N( ~: k
LDX #$ FFFE A2 FE FF;-|* R+ _+ G% `) L3 e" x+ r& F
RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
" i' m# z9 a* T@1 BPL @2 10 F2;循环$ A7次
* C* m5 d1 ^! i4 l0 m' O ]RTL 6B" y e7 o% Q3 u( |# d
最后改完后反汇编出来的结果:/ {8 B8 O! L+ ^9 O( i
$ 85/C785 A2 4C 01 LDX #$ 014C
- P) N! E6 M: g1 Y, n! ]9 @$ 85/C788 A9 A7 3C LDA #$ 3CA7
- L! g0 F, Z! |8 A$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
: l4 h6 f# X) G0 D( _$ 85/C78E 3A DEC A 4 A U2 s/ c9 N% g' M
$ 85/C78F CA DEX
9 Y7 F. _; r3 U2 ^$ 85/C790 CA DEX
# X) t# X# L. N# i5 u' e$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
5 R) _3 r \% H+ z/ t/ t* y$ 85/C793 A2 FE FF LDX #$ FFFE ;
% h7 G. P1 n; l5 `% s) s$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
$ T6 M7 ^2 y1 f1 n8 u$ 85/C797 10 F2 BPL $ F2 [$ C78B] 9 k" j' T0 ]6 U; F, g9 m3 E' V
$ 85/C799 6B RTL
! v3 o% [1 ~# c$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
! f4 n! ?. T5 k& \. T, F- e$ 85/C79B EA NOP ;
7 \( W# u7 `; K$ l! o$ 85/C79C EA NOP ;4 F" z$ ?+ i3 |) U6 s
$ 85/C79D EA NOP ;
0 K# P: c0 U6 }' ]4 l$ 85/C79E EA NOP ; t) Z$ U0 V5 m" \. Q6 M
$ 85/C79F EA NOP ;( l, Q' a, l }4 V" c
$ 85/C7A0 6B RTL ;
" D. E, Z3 r, ]. d% Y4 k
! s* F0 e' r+ N4 @[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|