签到天数: 1894 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html
! V4 x9 r, ~" p u: c9 h) e) H3 a/ k4 o, f: E r
火炎纹章776修改笔记
1 t, [# {! C ]9 m6 T) ]7 r2006.1.25
) {& I# w4 @8 Y/ t" h$ Y) L n作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
: B9 e7 @, ?0 d5 }! Z: Z* `+ u1 ?; D6 ?6 |
7 a% R9 h% r; U7 {: J9 f
修改工具:Geiger’s Snes9x Debugger Mark 9
0 \. x: l h* S9 D; ?0 v. v; o+ r
, ?# I6 D. _1 m5 D1 G. q0 r' g# y/ g战后升级* _9 y2 p7 T+ Q% N
$ 83/EFDC 90 05 BCC $ 05->EA NOP4 W. X. X0 s: s8 v9 Q( C
EA NOP
# H. Y0 g, A+ n4 h. R! ^8 Z+ P( \* }2 y7 _8 i; w7 l1 A9 z
战后能力+1 [1 j& m( W7 H4 ~# B: y
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001; ?1 _2 x" D& q8 u+ W7 n
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
7 f1 x0 m \ r" r' p+ H. @3 C! S
武器熟练直接到A. \" y4 F1 K& B1 Y9 S
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP3 B2 u: b V% X% C' s5 I# q6 }# h
EA NOP
+ i% K% e. u2 Z1 ~# Z存放所全物品锁定
' q) v9 O0 k' {; ?" u存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只; [7 z% v$ z4 A% y
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
7 R* |1 d# d, s% N而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128; P& X, a+ s+ ?( X3 r1 x8 ^- X
件物品,故可以突破存放所128件物品的限制,改出全物品。
0 m3 W9 L7 k! H! b/ J6 C$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
5 s1 P3 a P' t% O4 G5 u. n$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] 3 V1 h r' W8 e p( Y; i/ H5 H
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB/ P8 X! {: L( y* ~
$ 85/C78E CA DEX + G% X2 a/ F; [ _: A+ A
$ 85/C78F CA DEX 2 \8 T& p# S N; @( M$ G3 X
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次% p8 U: U9 W& ]$ s3 L) d$ q
$ 85/C792 6B RTL ;返回时X=$ FFFE9 [" _3 l, L) N, Z. }1 e) X
$ 85/C793 A2 FE 00 LDX #$ 00FE 7 H6 e4 s3 p# E, j
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
2 c6 \" T0 ]# Q; d$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
+ h8 _( p! L+ X1 x; `: j& X! `$ 85/C79C CA DEX ! N% {0 R9 B. \. b) k
$ 85/C79D CA DEX
3 Q. Z d$ E. @, X% G$ 85/C79E 10 F6 BPL $ F6 [$ C796] % [; K; L! A3 v( |' o% r# N7 h' G* q, T
$ 85/C7A0 6B RTL & j, h1 S0 |, a- I0 v
实现全物品的代码如下:" W; X# n9 t# ^$ }$ p1 Y
Start@ $ 85/C785
+ N, i4 `" Q5 i% k' CLDX #$ 014C A2 4C 01;X=($ A7-1)*2
5 {; e7 k' K/ v; s- {LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量5 ]) ^1 ?! r0 o
@2 STA $ 6FCB,x 9D CB 6F. n! ^5 @# g7 r, I( v
DEC A 3A; @4 v h( m0 L6 p S% q
DEX CA3 ]0 e z1 n$ A8 z
DEX CA
v p1 B# @2 H( t; J+ t# GBRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
4 v6 D1 O3 Q3 q4 mLDX #$ FFFE A2 FE FF;-|3 U P L5 T# n, g: j
RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
$ ~# E; i+ w7 A@1 BPL @2 10 F2;循环$ A7次
" f8 \7 Q# x/ \: l' ]RTL 6B
" M: }9 z2 Y1 w最后改完后反汇编出来的结果:
5 E$ B% _5 t8 {0 W8 n$ 85/C785 A2 4C 01 LDX #$ 014C
6 h9 m) y9 Y* n& Z$ 85/C788 A9 A7 3C LDA #$ 3CA7
) i7 c; T1 h# \! N6 F. K5 u$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] 8 \4 [3 u9 Y' ]; c
$ 85/C78E 3A DEC A % H( ?$ M: @! s7 J+ ^
$ 85/C78F CA DEX
& X4 P% a( w. V# b$ 85/C790 CA DEX / v9 z- m: ?1 O( [
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
8 h& A0 C, p4 x- P6 R" m0 e8 W$ 85/C793 A2 FE FF LDX #$ FFFE ;
) J5 [! b" h" y; c" T$ 85/C796 6B RTL ;注意一下,看看原来这里是什么- H2 D' r$ h4 f, t# x9 A
$ 85/C797 10 F2 BPL $ F2 [$ C78B] " r# J9 P [0 n/ Y! }
$ 85/C799 6B RTL
) M, M$ d" L/ E7 Y% K u! e$ 85/C79A EA NOP ;避免出错,把多余的都NOP了0 U+ J" J0 O$ M0 u
$ 85/C79B EA NOP ;
1 I2 U& Q! ~; j' c3 U* c$ 85/C79C EA NOP ;
4 H% \& |) R# Y+ x7 Y) x0 t$ 85/C79D EA NOP ;7 M: I* o* f1 }
$ 85/C79E EA NOP ;
, {& G4 b1 Y4 m) v$ 85/C79F EA NOP ;' G3 C. `4 d& ^$ x$ O- ^
$ 85/C7A0 6B RTL ;% J9 V! J/ t# j! q) ^" t/ V
# {& Y J$ { G" G[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|