签到天数: 1972 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html& s; ]' }& N# ~' [
. ~) h6 s0 `# j. y$ ?# t" ~
火炎纹章776修改笔记; j: ^5 ? N6 H* V; b' W# w
2006.1.25
3 V. f2 j- k9 \* K+ _3 z$ E作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
$ M4 K& p5 }$ f9 Q1 A' D3 D5 F. P4 t& D/ O: X0 q8 E0 S9 w
7 i7 z, E$ Z ]1 f$ ~% I
修改工具:Geiger’s Snes9x Debugger Mark 9
4 [& F1 J6 C# w. N
% r- }! }0 V+ q$ c战后升级
, C' V' r" O( O2 r4 H/ H$ ?, p7 w$ 83/EFDC 90 05 BCC $ 05->EA NOP6 I. |* b- J6 W0 L" o
EA NOP/ v2 ^, g2 V- A% X1 D. g
' X( Q5 {4 J# ]6 I: \战后能力+1 v! A* J9 d4 w6 }: g6 u$ s
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 00016 [$ Y+ W5 v$ [& e
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
5 W' ~* M- Z9 u5 I, c
5 }8 C; O f- ]1 ?6 `武器熟练直接到A) q% g$ |5 P' {
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP+ s" M- l! w+ G# N9 O& Y
EA NOP9 a+ b% Z* \" I; |6 w
存放所全物品锁定
8 X- l5 C3 Z2 w存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
( O$ q* w$ d6 m要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,8 e1 j% h$ }/ t i: F) v6 H- k% H
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
- q5 E8 d4 _ E. I' M件物品,故可以突破存放所128件物品的限制,改出全物品。
- y# l) U; o! i9 l! [, u B! V$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
3 R# @: O9 B( s* o. _$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
3 w2 g' N9 d d0 C3 ~( m# R$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB0 ~" W2 n/ s, H& v
$ 85/C78E CA DEX
4 u' j. U( y; e- Q F |$ 85/C78F CA DEX
0 S7 X! q& J3 W+ E, z$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次8 Z! s) M2 t/ }* H
$ 85/C792 6B RTL ;返回时X=$ FFFE4 [' H( T6 |0 ]; X8 x( s
$ 85/C793 A2 FE 00 LDX #$ 00FE * `/ O/ R7 _5 ?* U. y
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
) Y/ [( K7 U7 Q' h4 D% S2 M( Y$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
' m5 o0 M7 u* p$ 85/C79C CA DEX
- s% i7 k( K4 L/ n2 K+ S4 U. Q! w$ 85/C79D CA DEX ( U6 W/ G. q+ c$ g/ x$ W9 I- `
$ 85/C79E 10 F6 BPL $ F6 [$ C796]
( `; p& m' C2 x- S: [5 F$ 85/C7A0 6B RTL ' C$ e7 U- `/ j- a4 I" |
实现全物品的代码如下:
0 N/ ?$ y" l% i& g" B9 LStart@ $ 85/C785( h2 _8 I2 P2 s3 ?
LDX #$ 014C A2 4C 01;X=($ A7-1)*2
) }( d/ Y! R) Q1 h9 PLDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
: i: ?$ j' U+ q8 G2 Z( D. W@2 STA $ 6FCB,x 9D CB 6F$ E/ k* O8 [( J
DEC A 3A
! |9 j k7 p( oDEX CA
8 s: p$ _9 M5 `# m- sDEX CA. |5 @* \7 S& ]; Q3 P' Y
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间6 R. f# i: _. S- _, p# m4 u4 u
LDX #$ FFFE A2 FE FF;-|
7 A2 ~" S$ J* t( D* I+ YRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
! h- b4 F( J3 O9 K/ W@1 BPL @2 10 F2;循环$ A7次( S# i& h' t' W2 o3 j+ A6 S Y
RTL 6B! A+ T1 b/ f% s4 Q
最后改完后反汇编出来的结果:9 j* X8 D( E0 i' i; k! _
$ 85/C785 A2 4C 01 LDX #$ 014C
' N% d( h8 M" e1 ]$ 85/C788 A9 A7 3C LDA #$ 3CA7 & q- q8 l. D9 T2 h& E8 Q3 C
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] + R' ?0 J. q8 }' T* Z, j
$ 85/C78E 3A DEC A
$ Y7 q( I0 O! r$ 85/C78F CA DEX ' k* Q2 F, g2 j
$ 85/C790 CA DEX
" K: d( I+ Y' _! e2 e7 z& l$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间8 L$ E; Y; g A! \
$ 85/C793 A2 FE FF LDX #$ FFFE ;4 S/ n) ~: K5 p
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
l+ q, ~# r3 t! ?( Q$ 85/C797 10 F2 BPL $ F2 [$ C78B] * D t! R; s7 _
$ 85/C799 6B RTL ( G5 D9 S6 L* H0 D* G# b6 L. g
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了
' R' B* F9 A2 j& C: g8 X$ 85/C79B EA NOP ;
( k# y+ T) l0 j% V% K& G$ 85/C79C EA NOP ;
& \$ N. T! _6 n7 `6 E `, a$ 85/C79D EA NOP ;6 v. M* ^1 V! Z$ m7 t
$ 85/C79E EA NOP ;) W# K6 h! Q) S7 X9 Z
$ 85/C79F EA NOP ;
& f2 N O, w5 V4 Z& w$ 85/C7A0 6B RTL ;' h- |. m$ B: N' C& [ s# y
& m& r* d0 H* V5 V8 |# ^8 O
[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|