签到天数: 1825 天 [LV.Master]伴坛终老
|
1。准备工具和资料" U0 @9 M) X; d9 I- V
(1)NEORAINE 1.2.1.0+MK68KDIS.EXE(注:官方NEORAINE模拟器是不附带MK68KDIS.EXE,你要在官方网站另外下载MK68KDIS.EXE,并放在NEORAINE模拟器目录里,下载页面:http://rainemu.swishparty.co.uk/html/download/dev.html)
( C$ _8 B% F) j5 \7 P; [/ j. `1 j(2)十六进制编辑器WINHEX或ULTRAEDIT: o0 c% t3 E+ [7 O. ~
(3)68K指令集资料
+ h# i! ^/ T8 b& G/ N$ D2 a(4)笔、纸
2 F0 p5 f" A) |% t
# o1 t3 ~5 _ C- T1 [) h+ T本人以NEOGEOCD《合金弹头2》为例,目标命不减。2 g% @1 D- i1 @9 j7 r
, C* u) t, O7 l9 G h/ m
2。下载NEOGEOCD版《合金弹头2》,将ISO里面全部文件解压到任意目录下再重新打包压缩成ZIP,因NEORAINE不能提取ISO镜像里面文件出来反汇编,所以要先将ISO里文件解压出来再重新打包压缩成ZIP。
7 U# v, r7 ` d
3 a7 C: O: O2 [1 Y3。首先要找到游戏命数存放地址,我已经找到,命数存放地址是:101276. E7 B# l5 H) V" a' e/ P% O
+ u O: ?" o2 i% Y
4。运行NEORAINE模拟器,读取《合金弹头2》ZIP文件,进入游戏后,现在你看到生命数是2,如图1:! D; R$ _% `$ _7 |6 Z3 ]+ q( D9 U
0 e% t/ c# G+ L0 f- o1 R: ~: E2 I4 {
. |! Z" X: W! {- c6 X; @4 B
5。按ESC键进入NEORAINE菜单选择界面,选择Console,输入watch $101276 1 1回车,这样当有1字节数值1写入生命存放地址时就发生中断,说明一下watch指令格式,watch [read] [adr] [size] [value]
8 b; Z! m3 o" l, P) y6 O5 P- N
7 G, z$ }' l( Gread不加的话,就是写,adr是地址,size是字节长度,value是数值,数值必须用十进制表示,监视读取101276地址2个字节数据,可以这样打:watch read $101276 2+ \; l ^* ~3 Z. u
( I% ?/ M5 y+ v m" c要删除断点就输入watch del [n],n是断点编号
6 u; F7 i$ _4 D% z! O8 i' ~+ Q0 l8 m9 C# @$ K
再输入watch查看一下断点是否设置好,提示"watch #0 adr:101276 size:1 read:0",说明一下,#0是断点编号,adr是地址,size是字节数,read是1的读,是0的不读。如图2:
0 L1 \ I6 S9 G
& W4 x* d6 ]' z8 T2 V4 j; V* J0 i; Z7 g" }, O1 U
提示:关于其他NEORAINE的控制台指令用法请输入help查看。1 E. |+ T, u* T/ Z( r! ~
6 V/ c4 `( R- U: B7 [4 C: U) i6。回到游戏故意死一命后,模拟器发生中断,程式停在000cc086 6400000e BCC $cc096一行,用笔纸记下。如图3:! S# t" Y$ j1 n% E
: u( h: |6 s" q5 @4 q k6 V# t6 ~1 m( W' y% p+ i7 S# j) t
7。进入NEORAINE目录下debug目录,你会看到模拟器在发生中断同时在debug目录下生成2个文件。如图4:
- \: L! h2 k% X# a) l( c2 E1 v* G% g1 Z$ m* N
! |9 G: b' l; A/ ]$ ?- W3 f
8。用记事本之类软件有S后缀文件,查找000cc086,光标停在000cc086 6400000e BCC $cc096一行,现在来分析一下:. t. n0 ]( N4 N
9 {; w( K& K" q+ n$ D
000cc082 532e0082 SUBQ.B #1,130(A6)
. J, Z% {* F% x+ k! A9 N4 o# s5 C000cc086 6400000e BCC $cc096
) h& l4 R" M, \' N# K1 L3 S% d" R$ }* _+ O
留意000cc086的前面一行000cc082 532e0082 SUBQ.B #1,130(A6),查了一下68K指令集资料,这一条指令作用是将130(A6)地址数据减1,结果存入130(A6)地址。
' ]; K1 L: `% }) P t" p
r) \7 o. E/ M X/ g0 X9。回到模拟器用regs指令查一下寄存器,A6寄存器数据是001011f4,将130换算成16进制是82,再将82和A6寄存器数据相加,82+001011f4=00101276,00101276正好是1P命数存放地址。如图5:
, ?0 k5 |/ @. [2 Q. ]& u8 v
. n- T$ ]1 a' q2 v M J- e/ ]+ {& g0 I" y) M7 K
10。只要将000cc082 532e0082 SUBQ.B #1,130(A6)这一行指令NOP掉就命不减,关闭模拟器,打开ZIP压缩包将MS2CD.PRG解压出来用WINHEX打开,来到cc082地址,将532e0082修改为4e714e71,保存。如图6、图7(注:4e71是NOP汇编指令机械码):' ~" k5 y7 {5 B& t5 h; h
5 y5 P; \! ^9 m, Y0 u: C) L3 p$ _. D1 Q. z" Q9 `
b/ g; R4 q3 c, D1 ]/ F- u- v# @11。将修改好MS2CD.PRG添加进ZIP压缩包里替换,再用NEORAINE打开加载合金弹头2 ZIP文件,测试一下是否命不减了,命不减说明修改成功。如图8:
& {8 Q( f) i9 c+ q' S. h$ v1 S
w- Q# W7 H! X2 i$ L
9 `1 L. w1 C) X. I% v9 ?3 |教程到此结束。
# X7 c: } h" X" ^! C2 X6 }1 J) y2 x) K1 N) r9 h* Y
疾风之狼
, u7 M: r4 r& u( N/ z B" g* k( x- {4 h' ]% M. S
2010.3.23 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|