签到天数: 1909 天 [LV.Master]伴坛终老
|
文章来源:http://zsltools.ycool.com/post.1074234.html3 L4 [# C U- U3 i: i/ ]
7 t) z9 v: s7 U- T火炎纹章776修改笔记+ C& L! M5 i6 L M y: \ O5 d9 X% N
2006.1.25" W J- F. P# R0 E. [
作者:zHAOsILi[EGCG](.zZ~~) 转载请注明! K; r3 N9 W" D4 L' A6 }
l w# k+ ?4 ~6 ~: O) |( f( u8 T5 E3 c6 B" h# F
修改工具:Geiger’s Snes9x Debugger Mark 9
1 y7 P6 ~' j* c. X0 k- j2 s
) L6 F& @, `% S `7 S战后升级
% Z8 L; `* x8 g5 V& x( c" U/ {) \$ 83/EFDC 90 05 BCC $ 05->EA NOP
+ A* v8 l# }0 N EA NOP; P( W; ~* _0 E. F
, ] F, s8 G9 g4 {战后能力+1
% Z5 d# _% }8 {7 M$ 83/DFFF 20 B0 E2 JSR $ E2B0 [$ 83:E2B0]->A9 01 00 LDA #$ 0001( z/ d* |. Z) g# ?6 z6 S" p6 @
有BUG,敌人杂兵能力好像也用这段程序算,最后LV20的敌人杂兵能力基本全20-__-b
9 |+ G( q7 ^2 b0 Y5 n4 r" r& K3 F* q( p
武器熟练直接到A
6 F+ N: [ N6 V) F$ 83/E4E9 90 03 BCC $ 03 ->EA NOP; T" _1 k2 h5 h% u i# Z
EA NOP
' x9 ~2 _0 n1 }( }; G存放所全物品锁定; r4 g% E8 |4 j+ `
存放所里的物品地址在$ 7E:4FD0,在整理道具菜单里选存放所时,这些数据会被传到$ 7E:6FCB,根据整理物品操作,在退出存放所时,把做的改动存回$ 7E:4FD0,所以只2 p# `8 t& _3 T' J
要把读取和写入$ 7E:4FD0的操作用自己的程序代替,就虚拟出一个全物品的存放所,2 F H- ?$ e& D3 M- \
而且由于$ 7E:6FCB数组的空间大小不像$ 7E:4FD0只能存128件物品,足以存放超过1289 ^2 } G C2 O3 E
件物品,故可以突破存放所128件物品的限制,改出全物品。
q* I F7 S4 s) [) ]& v$ 85/C785 A2 FE 00 LDX #$ 00FE ;X=(128-1)*2
% ?! \4 J/ p7 r$ q6 ^9 ~" M$ 85/C788 BD D0 4F LDA $ 4FD0,x[$ 7E:4FD0] * O1 j M: B' ^) u! E: ?' ]
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FCB] ;从$ 4FD0存到$ 6FCB
" P5 ^8 k( [5 O8 m% }3 u$ 85/C78E CA DEX
$ @) ]6 F! d1 u4 ~/ z# g% Q1 C$ 85/C78F CA DEX 6 \& }9 a+ u" {) a
$ 85/C790 10 F6 BPL $ F6 [$ C788] ;循环128次
0 D7 N1 W$ G! [! a" T$ 85/C792 6B RTL ;返回时X=$ FFFE, Z: V1 o/ a4 J# S$ P
$ 85/C793 A2 FE 00 LDX #$ 00FE / J3 F; s$ U U1 q% M+ {
$ 85/C796 BD CB 6F LDA $ 6FCB,x[$ 7E:6FCB] ) D" ~* c$ p0 {
$ 85/C799 9D D0 4F STA $ 4FD0,x[$ 7E:4FD0] ;从$ 6FCB存到$ 4FD0' X9 X/ @! h" {+ _2 t
$ 85/C79C CA DEX
7 j0 I7 d: I' y" S0 s" J$ 85/C79D CA DEX
8 s" n2 l: e' n; w% k& Y$ 85/C79E 10 F6 BPL $ F6 [$ C796] : v) o% L9 C! t* }7 K+ w; ~
$ 85/C7A0 6B RTL 9 e* h4 [3 i4 U4 v
实现全物品的代码如下:5 @: L- }5 p% [) k
Start@ $ 85/C7851 ?4 \" X- T9 i# G0 j
LDX #$ 014C A2 4C 01;X=($ A7-1)*28 v* _' q4 s& m3 P5 d
LDA #$ 3CA7 A9 A7 3C;从物品$ A7开始,数量为$ 3C个,如果用$ FF则是默认数量8 D5 r+ b! W8 H7 @- H" H$ X5 c
@2 STA $ 6FCB,x 9D CB 6F, |% z7 e# I [5 e9 c7 t
DEC A 3A
2 ^& F* L9 o# \3 Y- WDEX CA
" H, A# N9 j# d( L: |2 HDEX CA
c5 Q$ ^! e! S. P, T& `BRA @1 80 04;空间不够,利用从$ 6FCB存到$ 4FD0那段程序的空间1 k) T* Y' w. j2 c. n7 o
LDX #$ FFFE A2 FE FF;-|
/ ?' ~5 \) y0 P- H, RRTL 6B;-------|这两句补偿$ 6FCB存到$ 4FD0那段程序
5 o& q+ _1 d3 t: V& F& m2 _8 [1 e@1 BPL @2 10 F2;循环$ A7次( t/ v, a6 V) a3 X; o9 Z1 _
RTL 6B
" o6 X! [" z8 n7 ~9 h+ b最后改完后反汇编出来的结果:
+ ?, Y: u) c$ ]% ?6 F$ 85/C785 A2 4C 01 LDX #$ 014C
+ H- [6 f6 E+ Z4 y" f' U$ 85/C788 A9 A7 3C LDA #$ 3CA7 0 E0 `2 @$ b, J* j ]! O- J; A
$ 85/C78B 9D CB 6F STA $ 6FCB,x[$ 7E:6FC9] ) f( s2 a2 ]- }0 c `
$ 85/C78E 3A DEC A
! B, b v& |8 C+ Q0 W6 z2 [5 F$ 85/C78F CA DEX 1 ^' w! ~* j4 y/ `
$ 85/C790 CA DEX
: s! A# A! {' u- S4 ~9 r, O$ 85/C791 80 04 BRA $ 04 [$ C797] ;利用后面的空间: R* R, S" N. }
$ 85/C793 A2 FE FF LDX #$ FFFE ;
' w* g3 L7 A4 h4 j$ 85/C796 6B RTL ;注意一下,看看原来这里是什么
% R: c7 D% _% U* [5 ~- d$ 85/C797 10 F2 BPL $ F2 [$ C78B] 7 g, u+ G7 K1 h. P. @
$ 85/C799 6B RTL " D, \8 Y* j& h- |% h* |7 Q) U
$ 85/C79A EA NOP ;避免出错,把多余的都NOP了7 f6 c: U( [% @" r5 z& K, W* r
$ 85/C79B EA NOP ;) j, z" u3 r8 Q* c0 m2 E
$ 85/C79C EA NOP ;
( h' k$ C" C/ [- H$ 85/C79D EA NOP ;
3 i: j0 D, L5 d$ 85/C79E EA NOP ;; p4 _. g* b7 J* f
$ 85/C79F EA NOP ;* C# K& |. o0 A- N2 }5 R5 t9 }6 o" Z
$ 85/C7A0 6B RTL ;
& p4 K, G' j6 C, H* o3 _, p2 U
* K6 _2 T7 N9 l, ]" p' A[ 本帖最后由 疾风之狼 于 2009-3-31 20:37 编辑 ] |
|