EMU618社区

 找回密码
 立即注册
搜索
查看: 2305|回复: 1

[转载HACK教程] 火炎纹章776修改笔记(作者:zHAOsILi[EGCG](.zZ~~) )

 关闭 [复制链接]

签到天数: 1954 天

[LV.Master]伴坛终老

发表于 2009-3-9 22:09:11 | 显示全部楼层 |阅读模式
文章来源: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 编辑 ]

签到天数: 2 天

[LV.1]初来乍到

发表于 2009-3-10 12:41:38 | 显示全部楼层
学习了,但是有些专业术语还是不太明白
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2025-5-20 05:36 , Processed in 1.074219 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表