签到天数: 1954 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html9 I Q; ~$ |, y8 N6 ^- V3 j3 I
4 n" n3 v# s+ R% E: y e2 D! M火炎纹章776修改笔记
1 y8 ^& t! ?" O D0 z) H2006.1.257 B8 {/ `4 A' }" x B+ S2 b
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明9 d# F% L) }7 h1 N6 ~3 B8 s
2 z' M8 F( A& U8 w" n- U( U- c! o g& q$ v4 p2 O8 m
修改工具:Geiger’s Snes9x Debugger Mark 9
" S' E W6 t ?* k! D& |+ N9 T! G _5 B& A0 h
战后升级* ]$ o/ e6 R- a. B0 ? n/ {! a( d
$ 83/EFDC 90 05 BCC $ 05->EA NOP1 J5 e5 E/ R' A: q n' C- h
EA NOP
D: t! S V% f4 M/ c
( i7 a' o* c! `* u7 N' d战后能力+1
; a5 Z8 O1 q8 u" M& P1 p$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001; F- f! f$ S- v
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b! D( V0 |$ Z; S( Z0 i C
4 C- ^ I# B1 I4 \1 ?武器熟练直接到A5 `# F! W4 h- v4 }
$ 83/E4E9 90 03 BCC $ 03 ->EA NOP
% B+ I- r, O8 u0 F/ i S+ Y EA NOP3 l' Z% J- w1 j! P, u7 e
存放所全物品锁定
6 l$ g5 `+ y o8 C( c* v& J7 p存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只# s, R+ @2 Y8 p5 d6 l n( I0 @
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,# t0 P/ O! l& s9 M; e' q
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过128
; s; R" _% ^( X/ {, s. p3 @件物品,故可以突破存放所128件物品的限制,改出全物品。% o7 ?' X" E# h4 b9 d# m& g( t
$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2! w/ |$ t7 r; c* g) p& e8 \
$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0]
* [+ B9 u2 B! @; \& M# u$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
, ]! G: M( N: V- U$ 85/C78E CA DEX ) P8 X; D5 B9 D5 C' g1 v
$ 85/C78F CA DEX
5 n1 }& S3 @: i+ X/ } |- d: p$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次% V# J4 Z8 h' e( o( i5 A
$ 85/C792 6B RTL ;返回时X=$ FFFE1 w7 i4 Q8 {+ t( W& \" b' |
$ 85/C793 A2 FE 00 LDX #$ 00FE 4 s# g @6 t4 E4 m# |$ T+ o* o
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB]
' u( R9 p0 M; J5 j2 v$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0! d; j7 @/ B" f" |% u. w) L9 @* C
$ 85/C79C CA DEX / V% N& ^: i* r/ I4 V. u
$ 85/C79D CA DEX ' i# Q1 e' i# a* ]6 i/ K
$ 85/C79E 10 F6 BPL $ F6 [$ C796]
! F) V, k1 ^# Z4 ^2 Z3 d3 h$ s$ 85/C7A0 6B RTL 1 W# [7 Q/ c" M1 R/ v
实现全物品的代码如下:
/ u2 u7 r% f5 ~$ B! DStart@ $ 85/C785/ J" G" ]/ h4 Q# D7 q& l6 R1 q
LDX #$ 014C A2 4C 01;X=($ A7-1)*2
# r% d5 S$ Y0 P6 _9 ~# Q; y% ^! cLDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量2 u+ S, T) f- m
@2 STA $ 6FCB,x 9D CB 6F
/ @% z) I$ [; J: p1 kDEC A 3A6 n( z1 Z$ k m6 v. m# E
DEX CA
( W) _, D. f5 S5 K( Q% pDEX CA
# J( t4 X* O: I" e/ k& O; lBRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间
8 |9 z1 k% }1 E( Q& \1 g y6 O; QLDX #$ FFFE A2 FE FF;-|1 }) G3 V$ R& P, ^6 o# n S
RTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序& n: }0 ^8 z }! R# F4 C$ E
@1 BPL @2 10 F2;循环$ A7次
% J" E- [& v+ ?% A2 m$ rRTL 6B7 [$ Y5 T" J+ ~3 a" R
最后改完后反汇编出来的结果:/ A s8 e3 y# X1 Y: I4 C
$ 85/C785 A2 4C 01 LDX #$ 014C
0 I* _2 L" X7 P* v0 V; \5 `8 h$ 85/C788 A9 A7 3C LDA #$ 3CA7
+ w! t% K" w- m2 y1 p, @* j$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] % `9 c9 I% P$ \8 U
$ 85/C78E 3A DEC A 9 z2 k- U8 e/ z! N1 Q
$ 85/C78F CA DEX
% j& _' V7 f+ e/ U$ 85/C790 CA DEX ( s; i. g4 m% q+ ^ b& l+ p. S$ R
$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间
$ R1 [% X3 B/ I" S) G, v& z$ 85/C793 A2 FE FF LDX #$ FFFE ;2 R6 X/ U' |* e+ l% d
$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
( M7 {2 ~( V, x6 ]" t( k5 n1 E$ 85/C797 10 F2 BPL $ F2 [$ C78B] ' b" d. V: H3 t c/ X2 [0 ]6 U; `
$ 85/C799 6B RTL 5 A) d, F$ k8 M p' A8 p
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了1 h" R% G6 {# `6 K O) T& B6 b
$ 85/C79B EA NOP ;: V: K8 Z1 e5 Z% f9 ?, h' E
$ 85/C79C EA NOP ;' g/ q( o. K: S- T0 ?; Q
$ 85/C79D EA NOP ;
9 @1 Q, K- Q, l$ 85/C79E EA NOP ;
% m/ Q' @9 i1 `2 T: f8 g$ 85/C79F EA NOP ;
2 V# V% o* B }5 O# g$ 85/C7A0 6B RTL ;/ o j1 r. g: e' E
O' Q1 u. W0 o# E( q. P4 g[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|