签到天数: 1804 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
7 X! d" E2 v; T6 P
: L# n6 c6 w8 \(1)如何加载ROM
, X5 V. Q# f# ?4 v" P9 \7 m7 @) u* G6 D3 X! p
先说说如何加载ROM吧! B. x- ^! B1 ? b
& r$ L4 ~! w. Y/ p- X
以MAME 0.148 DEBUG版为例:0 g% U) L k" t3 e; @" P5 @$ J: L
0 H, c1 D" u/ j; y P2 K% x
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html, d' C Y" g6 s, q& E# }5 [8 {
/ b* ~ v6 s+ T6 h, u, R e注:MAME官网的MAME是命令行程式,没有GUI。3 i* B! K& ?3 ]$ N. \
- Q5 e O( K# z3 v2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
/ m8 t: G1 }% O* A: Q, L/ }, V" P0 l* i0 X2 _* K3 l$ ~* D' ~
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:- _. O5 y$ |/ y9 [0 d
! T2 b; r4 z8 n4 g
d:回车
0 } u% r8 e3 c+ q% I: p% T N& \* I
cd mame0148b_debug回车; L! @% h3 T: g5 x4 N) R
0 U" S. A! R1 C2 H5 o
如图1:4 E0 [' W$ u# z& w* i1 V( v
/ e! A, N7 u4 e
& I/ ]3 E: i5 Q; E$ z% m$ A
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:+ d4 x8 w9 h9 z2 F4 J
- q* `9 r7 B% ^& ]
4 k7 X# ?: K( v, F$ B, ~( |5 ?4 G3 t& F( k7 j
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
9 F( [( G2 \0 y# J% E) t, `/ o. }
+ E0 ^7 R- S. E l9 C" m; t6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
9 d/ G4 N; y6 i$ v' N1 P) U, E. p
3 R" D* u, z$ n# F) U' K(2)如何呼出/隐藏调试窗口
9 m: C7 V! y2 o3 c$ h
+ {: d( f5 }5 ^! F1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:8 j$ |5 ^" U( T3 L& y
- e7 w/ w: J+ b" y2 m/ y, O0 \' B5 J- Y2 v* {4 X
. B1 H5 l9 f, m8 E# _/ l" c
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:7 @3 g" f/ a# S# u6 z% O# q4 V, W
1 A: ?$ ]) ^/ q1 ~
/ T/ p% N$ ?8 ]1 s1 x# G0 M
& B' a, K3 S8 p+ } ^, U5 y3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
+ [3 y0 n: k8 N$ i0 L/ d0 V0 U7 C6 u3 N7 C
(3)如何下读/写内存监视点以及程式地址断点6 }9 D3 h& w! O
) X9 L N" z- H& |# e9 o2 @- a V
先说说如何下读/写内存监视点吧& U1 m" O. B. U
9 O* r! z( j$ S4 a2 F
监视点命令格式:wp <address>,<length>,<type>,<condition>/ [4 r# P) i0 Y2 y- i5 N
; r. C' i( I6 E9 z: T<address>是地址2 s& `$ k) O3 r4 b
" e% T( S& }1 t8 A5 y6 u<length>是数据长度,长度必须用十六进制表示
0 s8 ]: s9 k* b0 ] P% R: h
, `4 y+ j, M0 H+ O<type>是监视点类型,r是读,w是写,rw是读写
# ?5 z: l! O% H# e' @5 E# T' F. L4 H* N% w. Q8 v6 N2 ]/ R
例子:
9 U- r4 A! k. v$ P( i/ y( t! ^/ X" n6 n
例如对ff8569地址下写监视点,数据长度是1个字节
2 C0 X H. c1 E' T h7 z4 M ~( u% c: B8 d c8 Z
wp ff8569,1,w" O0 E" B! j/ O2 s; p7 y! t2 L# P
* l& v0 S+ G, m# B4 |0 g! ^
例如对ff2235地址下读监视点,数据长度是2个字节
( V. C# {6 Y f- r ^8 N: j5 Z c2 m( e9 n/ ^3 Q) Y5 r5 w
wp ff2235,2,r
9 A, h: I- e3 `' |1 V1 L# k W1 N2 K; R/ t4 `8 E! x5 C8 a, C3 N" r
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断& T- o: a: r9 g; f( b" {/ K
9 Y& T/ D e( N) d% \wp ff7533,1,w,wpdata == 09 N9 K% a+ \- O) l _
s b+ d$ L/ O) s6 t
以龙王战士日版为例:
" _, x6 P6 x; j3 X, A' z; a% v1 O/ T8 Q* c! R4 ~
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
1 V- q. ? a6 p. g. F+ W
5 _# \* W$ N5 ^2 X1 @; F/ O6 U3 K2 O( a
& V6 z+ P7 e1 E) {$ Z1 Q
: [8 q1 p0 ^1 g2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:" l. {7 p5 W9 f3 p8 S
9 C. N! H/ z, J9 w4 _. x) I0 D1 N6 R. d3 x5 ^2 Y3 o7 ]9 J5 ?+ b
* s* @& x( T7 Z
接下来说说程式地址断点) G- `, N5 u. D q
1 v* i! p/ \, V9 y命令格式:bp <address>
$ b7 V& N- E. C8 f3 ^# n
- ?5 ?! `- W7 }例如对000488汇编指令地址下断点# u, {/ u, y, ^- [; |4 Y$ P
8 Q( f: c6 {' i* F$ r2 P
bp 000488/ X" n5 V6 ] s; j
$ a% Y' }* L8 b! [, X3 W: u当程式执行到000488地址时就自动中断8 w7 }$ v5 ?# |% J2 v& r$ f4 L
+ O8 l" s; [5 \
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看8 N- M! _, X& n9 s! d% S: u
! D7 U# h' p, X! T O7 e有错误请指正。
( c7 Y7 y( v* M8 z, V; Y) }: v. l2 L
补充一些命令:
" X0 M, ~* V4 z8 R4 ~! e5 ` l+ N+ O. h7 a! |1 ^ S$ L
"wpclear" 清除所有监视点 i- J' y7 t5 N) ?4 b
"wpenabld 数字" 开启监视点
9 R5 J. [# B, O, U1 W% ~"wpdisabld 数字" 关闭监视点0 b+ {) I& N L3 m8 S% ]2 \2 Y1 m4 M
"wplist" 显示所有监视点! {4 n* n5 |& y8 @
9 ~. W; |' O l7 `, W. W
"bpclear" 清除所有断点
- X! W& _; @7 k% E ?"bpenabld 数字" 开启断点7 y) [( ]) w5 ~* [' u5 E, O
"bpdisabld 数字" 关闭断点
: Y! ]: T( `+ U1 Y# B" K"bplist" 显示所有断点
4 j9 B( _; h$ K, u( E+ f3 @ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|