签到天数: 2072 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html1 W1 {7 }8 I d) r7 d) O9 R
9 i& `( {3 x# L5 {' ?7 }7 |3 }5 u
火炎纹章776修改笔记- A I, a2 w z
2006.1.25
+ _" J% z3 {9 i6 G% |# ` s作者:zHAOsILi[EGCG](.zZ~~) 转载请注明, T; p) b7 ]+ H* C9 w H. `
! }' T" B; w) E
2 j8 p! m1 [( W4 I
修改工具:Geiger’s Snes9x Debugger Mark 9' V. ?0 i( h7 E1 f0 P1 }9 R
& D: I) X& b G' P; u( d6 z$ r
战后升级1 Z, \( Y. p1 I
$ 83/EFDC 90 05 BCC $ 05->EA NOP9 s+ \" W4 O1 e
EA NOP
8 E* I; C5 |2 q. o
% a( L8 m" o; N; B& F4 n( m& q战后能力+1
- n7 Q+ r" r0 W0 J" x$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001
$ N6 A. i9 X7 s+ } s# k5 c有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
! V: T- s( P5 r: \8 z3 X! o& F$ v z4 R; E- p! m! C
武器熟练直接到A8 \( q2 w, F( e2 X1 r: G/ W
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
, }+ u' m( k4 D n; z EA NOP
& N- N F+ F# ^7 V6 V存放所全物品锁定
1 |( X% K, K6 |6 w+ J# ?2 R0 Q/ }* Q5 q存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只# L ^' E* c+ K4 ^( _: g
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
- O0 u" [- I }4 Y! k而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过1286 i Q W% U5 G
件物品,故可以突破存放所128件物品的限制,改出全物品。
- v9 l( C0 e0 |$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2/ D% u: h4 B* I3 m& j# Q: R
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] . D6 {* h. x5 Z( \9 }- P! F
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
' V; f: E* |$ n' F4 W" U3 S c$ 85/C78E CA DEX % h' d4 ?% w9 N- `* V9 n
$ 85/C78F CA DEX
! D6 q6 h( j& ?8 a! Q9 Q$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次( R& a1 O" i# n0 X
$ 85/C792 6B RTL ;返回时X=$ FFFE9 a6 Z" }, q7 s4 i
$ 85/C793 A2 FE 00 LDX #$ 00FE
0 Z6 E" O0 i$ D u$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] 3 D9 X& k. g9 _% S
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
5 f7 S" A+ l, g, p+ m& R$ 85/C79C CA DEX 0 G+ i* E4 X7 g! t; k, Z" k; F
$ 85/C79D CA DEX 0 _/ W0 g. C3 t, c$ B
$ 85/C79E 10 F6 BPL $ F6 [$ C796] $ f. O7 O0 X& D, C/ f8 V
$ 85/C7A0 6B RTL + ?8 L+ H) a q& g
实现全物品的代码如下:
; ^* o9 p5 F# }8 i. m4 JStart@ $ 85/C785
0 Y9 p0 }* D4 [5 b; _7 r: S+ VLDX #$ 014C A2 4C 01;X=($ A7-1)*2
# C* n: u* [! `! |& cLDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
6 w1 e' ]: @! B R0 H@2 STA $ 6FCB,x 9D CB 6F
/ J" }" z" v0 t4 `' KDEC A 3A
% T9 |: E9 l" q& b. ~DEX CA% z9 ]( H' y: c2 E0 V; x* j7 m' ^' j
DEX CA: Q8 P V* G& J) I
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间/ t# M2 f) h' P7 a! O2 d3 Y
LDX #$ FFFE A2 FE FF;-|
! e" h* s- n6 n# t3 _0 Q, k9 mRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
, L6 n3 v) F8 U@1 BPL @2 10 F2;循环$ A7次
8 ~4 m2 W; x: z4 D% NRTL 6B
) V0 ]2 _6 m- j+ `, R最后改完后反汇编出来的结果:
- \+ z5 C$ v' T5 C$ 85/C785 A2 4C 01 LDX #$ 014C
8 X& X7 t, v T$ 85/C788 A9 A7 3C LDA #$ 3CA7 + b5 ~7 i7 N* R2 Z3 m
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
: T" X6 E: D+ s# ~$ j4 p$ 85/C78E 3A DEC A
8 v6 F e$ A. l$ 85/C78F CA DEX & i' i5 ~& k$ ~7 {
$ 85/C790 CA DEX : {1 E J9 L+ b: i' n7 C! }
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间& u3 N6 Y* F. o ~. i: X# C
$ 85/C793 A2 FE FF LDX #$ FFFE ;4 Q$ p: t. q2 l+ v! e, S
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
8 ]& Q3 W6 q. U% m: C: d+ a2 V$ 85/C797 10 F2 BPL $ F2 [$ C78B]
$ j+ h# H( c4 C% ?$ 85/C799 6B RTL
% C j7 ?1 i# E. P- ~+ s. P$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
6 X. N- Q. B" @. R% K6 ~4 G$ 85/C79B EA NOP ;
6 r% p6 k- A& k" N" v; ]9 ^. g" c$ 85/C79C EA NOP ;
9 H) M, q; B: O$ 85/C79D EA NOP ;; @: K, W( w: |1 ~9 }1 @8 D. ~: R1 i
$ 85/C79E EA NOP ;
, E' Z. H7 Q0 O( o4 Y5 h% t$ 85/C79F EA NOP ;' {' z% l# @# t! n* N5 y9 c# `! d1 E
$ 85/C7A0 6B RTL ;# [, j) y! c: A+ H- X9 H. Q
' s4 j, e- m% X1 ?
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|