签到天数: 1911 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。0 C, [/ j* J8 \% b8 m$ b2 U
* t; f8 a- c! D
(1)如何加载ROM
% z9 \! R+ S1 @$ c. s! }! q
1 s- }, `9 S7 X8 |% m- o" x6 Q1 c/ X4 f先说说如何加载ROM吧# r7 L- {' P/ b; Q9 ]
5 C: F8 S, j1 |! Y; u
以MAME 0.148 DEBUG版为例:
* b6 \7 a9 H/ t
- t" Z9 R# O3 f: ^* Z5 T1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html/ W9 l$ G4 v- Y; y2 D. K8 t0 Y
9 P2 v6 f) p) Z9 R) c8 S: _注:MAME官网的MAME是命令行程式,没有GUI。
1 y: ], ~0 O' n D# B4 f2 @7 I$ o9 a
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
% M$ p+ t) e0 b {) |% a
' U( V) i2 @; |& D+ i! y3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
0 b1 z& ?7 f0 M. o7 {" b2 F
9 H# k3 J( f, }* n) C5 c5 `d:回车- e8 J4 p/ m7 Q4 J/ V2 u
2 f7 D( J6 |% Q6 q9 T; x- ^
cd mame0148b_debug回车- b U- O; ]$ M4 y% p
7 R; b0 P' a5 ^, E- c% S
如图1:4 E, |# L; M2 U6 y/ K: O/ k. W
! j9 ]5 S# `9 ~- f" u V) L
& N% }! j9 F0 ?4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:1 s( _7 }& b2 }3 Z+ ~
O% \. z5 j1 u" r3 ^
2 y7 b. K A5 }2 l
, l$ S( ^: L& i7 Y$ O/ G5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
4 S& K7 c5 G& Y+ v
( s5 u6 w% ]+ t: \" \5 o9 f6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
1 q0 `5 w+ Q. N$ o# |0 c9 `! ]% I+ ]
(2)如何呼出/隐藏调试窗口
, F3 P# O" C @7 q& z' @- W
5 P) [4 J# X) O# B# [. ?: Y3 ~1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
7 K) }6 n7 }4 q7 [# M- N" H8 m& e
8 o" @& e" F. Q" x
) e" w( V7 X ^) }8 j, I# q/ E. M
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:, w/ W4 z! v" l4 Y' G. ^
7 ]- b; ]# q& H8 W
3 H( Y& a# ]+ D- |$ i! X, C
* u' O# @: j! G3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。. ^- W( u% ^. Z! L/ `/ {3 B9 R
3 c1 P4 }- ^: q" L! _( ](3)如何下读/写内存监视点以及程式地址断点! ^' \! [- T/ n
- {* n g. ^. A* |9 F/ ^" @& Z先说说如何下读/写内存监视点吧) O& X# Z n9 a! [2 m
7 z/ |. I) s/ ?# A9 s监视点命令格式:wp <address>,<length>,<type>,<condition>
8 T' S1 z9 v; C
. A( k& W. w: F5 s: e* [8 x<address>是地址
" F/ V7 a2 w, N' G; i! @8 S- R* X }1 D' X2 d) i! L
<length>是数据长度,长度必须用十六进制表示7 U# e' C- I( m' j- N7 @4 c
: v- ~. r( f0 V+ ^: U6 V3 {' [<type>是监视点类型,r是读,w是写,rw是读写
7 S! ^- z# D9 a2 n% T$ L
1 L2 ~5 p0 T' J/ z. I& H& \例子:
( E3 n5 k" I/ [3 f
; p! [" i0 K0 |例如对ff8569地址下写监视点,数据长度是1个字节
7 h0 G3 h* z K
5 ^+ d) v2 P9 \ ?2 M8 Q6 rwp ff8569,1,w+ U& A2 I; V/ n9 F4 c' e
( e) W5 P! Z& e7 f6 w$ y例如对ff2235地址下读监视点,数据长度是2个字节
$ l7 H& B$ m) ]1 v: f. L P1 W
wp ff2235,2,r
: @; Y7 W/ C) h( K! s3 C. [; p4 G, x1 Y" @8 G) e+ t+ _' T
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断" o, e* @! {/ u* K2 Q* m
. {9 G$ h' q! u" e9 V' twp ff7533,1,w,wpdata == 0
0 I8 b6 B$ y; u# a1 l4 W! M$ u! _. p0 ^5 D
以龙王战士日版为例:
: o/ x) u' }4 n/ d6 ]: u+ e* N* T# h/ G8 H2 ?8 C+ `& d) ^- T7 d6 g
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:2 b* E! Q8 J) _1 v: g% c
/ Y4 W1 i( P s0 b
/ F _) p' N0 R4 H0 q
; D3 j4 x% G% _* L1 z$ j) G
4 S- D- K4 H8 Z' v$ V2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
" E( o5 F3 k2 E0 i: v& T. X9 t/ J4 b6 B( B
$ B" f1 y8 C) e3 f5 q. W& v# T" l: C( P0 V/ W/ L: Z0 ^
接下来说说程式地址断点
# @& T7 d8 v- l. W; }8 v: j
9 W# B, g* \. v' W/ N命令格式:bp <address>
$ |- ]5 R; d( _( {" g# R( Y
9 p: g) R9 Z7 W" e' ^例如对000488汇编指令地址下断点, v. X$ W' X' m0 ~
& A, b: v: A) a% K
bp 000488
! T6 y3 Y5 G+ ^8 \
v- n! [4 N0 ?, G当程式执行到000488地址时就自动中断# k- y4 m3 e! b0 w
7 D7 K* h1 z$ U i/ l
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看- M2 C4 S- W1 w9 O5 L0 M5 d8 y; j, m
, T6 Y$ v x; Q: C3 x( _ z1 T8 U有错误请指正。
9 o; D0 P* P n' K$ I5 o
9 \5 Z% V3 [* n7 }补充一些命令:
. ]$ Y" [" z* v: X: W3 F% g7 n: L( H9 X" j
"wpclear" 清除所有监视点9 k% }/ g- H) W. p0 u
"wpenabld 数字" 开启监视点
$ Z! B3 [7 ^( q$ @0 ["wpdisabld 数字" 关闭监视点
) M; _5 v6 ?0 X" T9 {; R"wplist" 显示所有监视点7 t% j0 F9 I+ p6 _7 a9 ~+ G
/ \1 ~5 t! d, }"bpclear" 清除所有断点
) M# H* K2 k' u; ?2 Y1 K, L"bpenabld 数字" 开启断点
) v5 h& b% s# w, ~"bpdisabld 数字" 关闭断点
+ ?3 S& j% e1 z+ j"bplist" 显示所有断点
& A8 A9 s8 F* r |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
3
查看全部评分
-
|