签到天数: 2052 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html% S3 ?9 c' o, t1 J. P
1 C. d8 G5 j ?0 e火炎纹章776修改笔记
, x4 i% y7 V% j% R s9 X7 J2006.1.25
6 t! \1 y9 D; k6 V G# Y* X/ n作者:zHAOsILi[EGCG](.zZ~~) 转载请注明4 g% @4 w; i' y% w5 k/ f6 u
+ }) L" ~% k4 j! `- l
w4 c# u; X. Y) o9 N+ n4 o5 r$ b修改工具:Geiger’s Snes9x Debugger Mark 9
2 P7 {; Y- w- M0 ]$ ]& d
9 T8 G7 S8 k3 I7 d2 ]) P战后升级
: Y" D3 j7 X' S7 `$ 83/EFDC 90 05 BCC $ 05->EA NOP
- `# {) m. C# N& e$ z; ^5 x EA NOP
- @7 Q( f6 ]" y) U
. ]9 ~; ^8 C3 q2 v$ C战后能力+1% S0 Z* s% L% \6 n; t
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001, F+ D( v) g2 M8 E
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
, D8 j* U5 `' n/ |/ I* K
2 _1 F$ g2 N: D8 e武器熟练直接到A
3 W# Q0 p; F2 o; x; c$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
7 Z, E; H+ V; k% w EA NOP) T8 M, o$ i7 l0 b/ {, Y$ J+ r' t4 c
存放所全物品锁定' G' X! ^" ?' A' p' ^
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
% ?) E( ]2 b. z4 l: q! M要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,# q9 `0 ]: P* V9 S
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
! n& q6 s: G! ~' w6 G. @件物品,故可以突破存放所128件物品的限制,改出全物品。3 b# M. e: q% o# Q5 b) G; u+ b
$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
1 \; v' {7 o6 x' r" k$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
# G3 _% a1 ^/ B3 i, b$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
3 k* Q) c, {. d) T$ 85/C78E CA DEX
x0 _/ U0 n2 O! r7 M' u8 I$ 85/C78F CA DEX % |7 h! S6 _5 }, v; d5 X( ?# C
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次) C$ ~0 d! Z7 S
$ 85/C792 6B RTL ;返回时X=$ FFFE
" G d) `, Y6 F2 X( {: Z$ 85/C793 A2 FE 00 LDX #$ 00FE * o6 F/ C$ T) t8 v& y
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] - }2 b. t* ?) C+ k
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0
* M( L- S8 r) m$ ~) Z6 @. u$ 85/C79C CA DEX
/ K- J" ?" m" Z ~' O$ 85/C79D CA DEX + L5 g' e9 O' ]* e- R
$ 85/C79E 10 F6 BPL $ F6 [$ C796]
8 ]5 N7 n; S, V A3 _% B$ 85/C7A0 6B RTL ( P3 C' Q f0 j1 _& A. M8 l
实现全物品的代码如下:
* u4 b$ Z) p7 RStart@ $ 85/C7857 y3 c( P1 W; h
LDX #$ 014C A2 4C 01;X=($ A7-1)*2$ T" o3 c' X# C# i/ k9 A
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
( S5 u8 w: C" U1 F% I/ n K7 O@2 STA $ 6FCB,x 9D CB 6F& @; D6 R2 U' k! H; l* w: k
DEC A 3A
2 h) c* I; t4 aDEX CA
& F8 c K1 j' z# ^; w; aDEX CA
! ~, o2 H* d8 T: @* BBRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
0 l- {5 t5 x& ]LDX #$ FFFE A2 FE FF;-|
* m7 `2 g- v w8 RRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
( p% f# c: m% ^, ?: U: {@1 BPL @2 10 F2;循环$ A7次! z z( P3 M% z1 S0 v
RTL 6B
" ~- `5 D4 ^ ]* A: `1 m最后改完后反汇编出来的结果:
/ o, k# V8 z) R9 }$ 85/C785 A2 4C 01 LDX #$ 014C
, k8 v9 F4 e; b8 k$ 85/C788 A9 A7 3C LDA #$ 3CA7
* i4 A& R8 b4 W4 W6 u$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9]
+ i( i+ Y5 E+ v$ 85/C78E 3A DEC A
4 J' B2 u6 L( {7 a8 _$ 85/C78F CA DEX - V- P$ [% G! i& @, v6 \4 y/ j
$ 85/C790 CA DEX + V( x1 ?4 @1 _. t- L1 D. U
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
' o; i/ c/ P, ^3 [* s& q$ 85/C793 A2 FE FF LDX #$ FFFE ;
$ k, V7 Q& d6 M2 y B4 W$ 85/C796 6B RTL ;注意一下,看看原来这里是什么% d8 d4 E; W0 P; T* V
$ 85/C797 10 F2 BPL $ F2 [$ C78B] % t0 r" A. V, Y( Y) p
$ 85/C799 6B RTL
5 w: A5 s+ O" d M3 n$ 85/C79A EA NOP ;避免出错,把多余的都NOP了) o) H* D! a: D8 Q$ x% i
$ 85/C79B EA NOP ;" j" Q, a0 G, S$ q+ x0 L1 Q ^/ C) U
$ 85/C79C EA NOP ;$ v4 d* r! m* ?/ V
$ 85/C79D EA NOP ;: k9 ~5 V- o/ U6 J
$ 85/C79E EA NOP ;
. l. B, H* W! P; M0 {1 H( _$ 85/C79F EA NOP ;
0 g5 r9 ]4 \! z2 Q$ 85/C7A0 6B RTL ;
' d5 _8 B% o! e$ s
$ c- ?' l. M) T; z9 l3 U8 ~[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|