签到天数: 1992 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。 l! _5 g, p) Z, L' T- x
5 G! J/ z+ g# A+ y e- x9 }
(1)如何加载ROM. R* G H6 f5 A' i
$ m: K {- m1 q! N先说说如何加载ROM吧
/ [4 }& O) A- ]( \+ T8 Z8 g0 `! m
; ~% P2 }. {5 E& T以MAME 0.148 DEBUG版为例:
6 R) B* Z- O, d. \9 c4 Y5 W
) t$ |* k3 ?) o0 w1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html, i% |4 m3 ^: D9 J; j [5 I9 P
: s) P) m% M4 E
注:MAME官网的MAME是命令行程式,没有GUI。. a9 [# q" l; Q
# Y& a2 |. [+ Y2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;3 J/ |2 B0 ]) M" P1 A! w' A6 I. |; X
" z0 f4 n( }' x# Y; z3 d- d3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
" J' m9 B! z2 D3 x5 ^7 N/ P0 T! M$ B
d:回车6 i+ m* h3 z, C! k3 |- W8 [5 O* T
( g) ^5 K# [9 ~" d- E2 w+ D" p! P
cd mame0148b_debug回车0 z' X+ Y+ {$ L- Y: @
. X; Z' N! r7 K. \
如图1:# A4 y% T: n& w
5 V6 r3 a3 q6 d$ W
: x1 @" l+ x0 j4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
3 T/ t7 W$ n, F* x" X# B- G
5 F# P; k- f* ^: ?$ y2 ^& i* v
5 ?9 `$ T% O" z
. V. g8 h6 Y# l f+ L- w5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;( M( b ]: P& }2 Q$ a
8 h% s+ P7 ^* ^# D0 K& C9 n6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。$ v, b/ |0 W. N( N# i8 a
3 c6 k' x+ l/ ~: j
(2)如何呼出/隐藏调试窗口! U z" F- [' Q% P$ E6 y4 }' @
- c7 i: p# s1 y3 [1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
" | ^: I0 N! }$ _, N# T
3 Z- {$ _! W3 r! q; w
. N8 X1 M! \8 e
! n( d1 p. p! ^3 Q2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
1 p+ F, |$ i2 M/ R" q; k$ ~ H( a ]
: e& l) G8 U2 k- Y: S) | `4 ` B# E) B! u& u* v
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。9 M5 u) d% C9 B* O9 C$ O" y
3 {1 U( E ~% N, [
(3)如何下读/写内存监视点以及程式地址断点1 P9 R8 }+ j) w( M/ W. y
2 O+ g. p+ B( s- u) d
先说说如何下读/写内存监视点吧: L# b4 t4 b7 K. T( Z7 n% y
& Y2 | H2 I9 v! Y1 t
监视点命令格式:wp <address>,<length>,<type>,<condition>6 B: B/ u* a9 I* l, C
7 A4 O- e& z! b$ H S1 a" e* e
<address>是地址
: f. }6 S y' K, `% P; B# \' @- j: A! H$ s
<length>是数据长度,长度必须用十六进制表示3 n& w; X8 \0 i d: z9 A
0 k- h8 P T7 p<type>是监视点类型,r是读,w是写,rw是读写
1 G) V- t% P# G. ?7 Y2 E9 Q
/ M- G7 C+ h$ A0 r* R4 o例子:. c* G% C6 Q z) @' k
" E# n( t R- m0 ^( M1 f
例如对ff8569地址下写监视点,数据长度是1个字节8 i8 u1 e/ ~" Q( X9 I
. @1 w& z& p' r6 t8 j8 Bwp ff8569,1,w
; K& L ?5 m( g C9 ?2 n' @- [# y) P, B$ O1 m- E8 `; ?
例如对ff2235地址下读监视点,数据长度是2个字节6 v- J& F- W4 _6 a% b8 }
4 c! @2 I" a. h6 P6 C5 @- mwp ff2235,2,r
; m! a5 L/ x2 Z8 F) j, m+ j
- T0 v- k- \+ J- G6 z( N例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断4 z) m: L! l, u4 O- f, J/ w
6 u' R- i' U4 M* ewp ff7533,1,w,wpdata == 0
' f4 j# q! O4 Z( n9 v3 J: C0 R
+ v' s1 Y0 X2 @% A以龙王战士日版为例:' _' c6 g e& [( i% h
0 Z; c( ?: i+ {4 q$ ]+ O
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
2 u0 m: I' I* o, U2 F) R1 I# Y, j: ]* H
& d# B D( M% u) F( I6 k4 X1 n: `: }7 j. v) U
# l3 q& q! }. P# X) i2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:- j" v3 R! Y* K; v9 D- S" v- M1 E
1 r" `* m" U, C; G2 D; P
2 P5 A6 \, i' \' s3 O6 w0 _5 Q
0 \ m5 u% l* ~- Z5 I
接下来说说程式地址断点
Y& O/ c4 y, ]0 c5 u% K7 A8 x9 t; E2 A6 [9 }4 e
命令格式:bp <address>
6 ?: Y/ d" V2 Y+ j2 m0 L3 C4 w) U6 j) |6 H; f, m$ {
例如对000488汇编指令地址下断点2 [/ K* v) h- x
- B! D: P L/ x( N" D8 N- rbp 0004888 ?' H$ E. Z8 n, s% ^9 l
, N1 [- c; D- b1 y' z9 O
当程式执行到000488地址时就自动中断& z5 N$ Z- x) d. ?4 y" F* E
3 ^+ j1 J3 D) I' @- h. ^更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看% [- q. v. \+ o7 T" ~
! L: N$ `1 g. y) ]1 @( C: i
有错误请指正。
- _; T( X) [- R0 Z( Y) |$ P4 }$ ?3 s7 z5 A6 v
补充一些命令:
$ t9 S" r5 g7 w& q) h1 C! R
. A6 u3 b0 h% }8 ]: _"wpclear" 清除所有监视点
# q, O3 Z; d; t. X5 x' M1 a8 C"wpenabld 数字" 开启监视点
$ Y6 ?$ Q/ n# e$ p1 \( f# u"wpdisabld 数字" 关闭监视点
4 D0 |% x2 j+ \% Y& o: O4 a"wplist" 显示所有监视点
7 u9 y, B* G( l$ m( e: H. i8 k6 w l' H& |! n0 H# y6 {
"bpclear" 清除所有断点
% O8 m" T6 F8 t: P4 f"bpenabld 数字" 开启断点
5 p8 j( \: f2 q"bpdisabld 数字" 关闭断点
+ N) _7 q/ F- z"bplist" 显示所有断点4 t9 r, S! z" J; v
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
3
查看全部评分
-
|