签到天数: 1897 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html6 q* r# ~4 ^8 J) N% X2 ?0 z" A% ^
" o6 `( @7 r/ w火炎纹章776修改笔记3 g8 Z$ S+ L0 Y
2006.1.25
% p" d( I1 @$ ^6 k& E. Z作者:zHAOsILi[EGCG](.zZ~~) 转载请注明
# J3 M9 s: v; J8 ^, u* ?" u0 \2 @5 ]* B) e! F% l4 g+ E9 `6 k. n. K
6 e5 L' f& S) `, \修改工具:Geiger’s Snes9x Debugger Mark 93 M" M/ t' L, \6 P+ E' ?
" i7 W: @: e7 v
战后升级 G6 _5 ]7 D: x B+ l
$ 83/EFDC 90 05 BCC $ 05->EA NOP
. p0 X; [0 n% f- L0 y9 A# k. j EA NOP5 {% S0 [0 q* m3 S& G
$ l, z" N9 k$ T5 r7 c% ?
战后能力+1, d9 X' M. i: U# J
$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 00017 |3 u. W9 v6 u7 w: c4 W
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b2 Z4 R: Z7 n! z2 Z
, y6 {4 [0 Y7 n0 S武器熟练直接到A
5 u2 N& O2 n) d3 M6 x6 U* U$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
% j( \+ a+ s2 P$ c9 D; p3 c EA NOP" i o) [' z$ r" r
存放所全物品锁定: ^, _6 \, q3 N& g& f- U
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只
& }) ]0 e8 Q" w3 I6 Q要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,
/ B, R9 y6 j c4 J" B/ K* u3 H- [$ v而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128 F$ R# W+ h3 K' m; g
件物品,故可以突破存放所128件物品的限制,改出全物品。
8 |9 J. k. q8 p6 u1 c/ ?: J2 u$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2' S$ _& O1 z V4 C3 j$ V5 {
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] ( D. o% {/ ?1 O8 ]) ~- A$ b7 k
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB( d& K, u' U5 q
$ 85/C78E CA DEX
% Q8 ?; o. m1 M% f: c& `. R/ ]0 `$ 85/C78F CA DEX
: c4 w# M8 a) V$ D5 J$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次& ~% R, G; t3 C. `7 F9 \1 |5 \. d9 n4 ]
$ 85/C792 6B RTL ;返回时X=$ FFFE
' ~2 s+ g0 C- l% g5 f; P+ {$ 85/C793 A2 FE 00 LDX #$ 00FE 6 v- v) ~/ I8 u1 [
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
( f$ k1 e1 P* K3 m/ x" |$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD01 ~+ A/ `& n [
$ 85/C79C CA DEX
; {. {+ x1 C' K# q# y- s* J$ 85/C79D CA DEX 3 v! u& ?+ Z6 R8 W& ~4 y
$ 85/C79E 10 F6 BPL $ F6 [$ C796] , C2 I0 r5 P8 A( p" f
$ 85/C7A0 6B RTL
. F2 D2 V* ]' `! _7 K; i实现全物品的代码如下:- r( r: F+ s4 M6 d8 j, \
Start@ $ 85/C7853 `( T6 M; D5 J( D
LDX #$ 014C A2 4C 01;X=($ A7-1)*2
9 ?$ c' n; N6 p6 b+ ZLDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量
+ }3 B- U5 R7 q( c6 v@2 STA $ 6FCB,x 9D CB 6F
0 y+ \- U K0 hDEC A 3A/ K9 s. k' a+ Q3 F% L" X6 @
DEX CA( I4 t# x- q' c f3 X2 ~
DEX CA( a& m8 q$ D. H8 u9 J( |8 M
BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
4 H1 m3 m0 O |+ Q0 YLDX #$ FFFE A2 FE FF;-|/ f$ Q Z3 D- c( M
RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序& n7 w, S; w) ^; s) y7 Y1 t( b
@1 BPL @2 10 F2;循环$ A7次$ M1 ^+ A5 D$ {( l. g( w+ H
RTL 6B; J6 W4 S1 H; G
最后改完后反汇编出来的结果:7 |5 V# C8 z1 F) m; U) g
$ 85/C785 A2 4C 01 LDX #$ 014C
* f, k3 F* B0 M4 N" H& k& F& g$ 85/C788 A9 A7 3C LDA #$ 3CA7 2 j- l$ {" o% I, Q6 Z; q
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] 0 o0 m. N, t# L4 B/ e$ v; p1 p. [
$ 85/C78E 3A DEC A " V& ]! E1 |5 ?2 I# S) w
$ 85/C78F CA DEX - L* T/ O! p+ d# g J
$ 85/C790 CA DEX 9 {$ c' o) V+ O- ?
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
! J6 z e: I5 X2 {$ 85/C793 A2 FE FF LDX #$ FFFE ;
2 r3 s/ P, c- J/ m4 s$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
6 h1 Q- ~4 L' j. m, h. F3 f8 g$ 85/C797 10 F2 BPL $ F2 [$ C78B] 5 @: q: K) y1 T. z7 _! t+ I
$ 85/C799 6B RTL
7 h# H& u1 @& m2 y+ ? S$ 85/C79A EA NOP ;避免出错,把多余的都NOP了) S1 V- R5 q, H* P' m
$ 85/C79B EA NOP ;! `7 ~; [3 W$ I1 i5 e9 _
$ 85/C79C EA NOP ;
+ t. s6 F6 y* S$ 85/C79D EA NOP ;
% w; ~+ V- L. J( `/ S7 ~, o$ 85/C79E EA NOP ;
) V- ~) C9 L+ L$ B0 I; v$ 85/C79F EA NOP ;
' [7 _: d8 b5 Y# j3 z$ 85/C7A0 6B RTL ;
* E. N! P7 ~8 ?+ c) k# x1 g
8 D0 d5 n9 D- @[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|