签到天数: 1890 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。0 @$ _/ F. u' Y' ^/ F! }2 ?
& E: W. {! V' \(1)如何加载ROM
; p8 ]/ o% Q% L# [
/ G K: O. Q5 o8 X0 t先说说如何加载ROM吧
3 B) p& x- d' {4 W0 R$ b
5 g2 L9 q( s6 N7 S以MAME 0.148 DEBUG版为例:3 l, Q2 C: M( b5 G' h- s
, D+ n$ P/ ]0 @7 ?
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
5 d% x' ^: V/ x7 I4 f0 O& G# D' H
注:MAME官网的MAME是命令行程式,没有GUI。
6 E! l* j, B" B
5 O: m3 n9 U: h; `) W- }4 y/ [) ^2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口; c2 N7 E9 c/ v, o
) x5 e: K8 C. B0 h6 C6 }8 ?3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
9 [" F* X- L1 b/ N6 i U
+ @, A5 d/ ^# Q1 X' v( m! w' ?d:回车
# b' d8 T8 q/ R# s! A' d" L, Q- S, J8 l
$ }- s/ M0 H I: \' @cd mame0148b_debug回车 l* I% V5 j1 ?. R2 T4 C' E! o
1 n2 a' }/ n2 f6 d
如图1:3 l5 `$ x3 Q: _7 ]# j
* U3 P# R- K+ V% V
( B0 s% l7 f. b# b( U
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:+ p0 h5 G: J, j3 H9 @; z2 n; L
6 {6 N1 \3 h; o+ \
; u8 p# W, {5 Q
" ?5 m& l5 e) a, V; V3 I& y' ]
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
% |5 n3 N( f6 \9 L$ M' x2 e$ D" b! M4 E3 B5 w' V
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。. W$ Y/ t, V7 m/ L
1 B: {/ W& P8 M2 z(2)如何呼出/隐藏调试窗口
) H) ~0 S/ m4 ]( f# I: P5 G1 O1 C* t( p$ q- D6 t2 j( w
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
9 K! i" z- \- ~0 t F
" O7 _" s/ K' i, ], G0 }1 ~: C" e
* g& m* E! O* K9 @4 u& ^" `; Q3 x4 `* w/ P1 w
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:$ }4 x7 S+ y# q" _3 V3 X. s
" X# w. u4 k* C0 b: k9 R b' A
0 u5 X6 M+ Z9 Y4 c* j! c" Y0 }0 ^, l$ W9 W8 v& e
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
: Q, X6 n* E- o
/ s7 C: c# c! T(3)如何下读/写内存监视点以及程式地址断点4 B; E6 _& \4 E) L) w) t2 H9 G
# Y: ~5 U9 D6 \* }先说说如何下读/写内存监视点吧# P2 J h6 {" f, S2 j" u1 O
+ T) S4 v7 M, w1 l: a监视点命令格式:wp <address>,<length>,<type>,<condition>
8 F3 }# e. ~9 X4 t8 ~! k. T0 R: v# t
<address>是地址5 t& B9 s, Q% z. M+ a( _# Z; z
& V: o+ K. V* C- X# E5 J$ L<length>是数据长度,长度必须用十六进制表示
" z6 ]' r9 _$ E" ]( m. k# ]* y, ]7 [. r z6 T, b
<type>是监视点类型,r是读,w是写,rw是读写0 G- [+ H0 U& J" d5 Z
. L5 D6 j+ [ R, d- H3 ^6 U例子:
. h o0 t- i w9 b, u5 V9 G5 z; ]! q+ Q, f( _9 X# l
例如对ff8569地址下写监视点,数据长度是1个字节( d# W+ f$ d- }! q3 ]1 T1 @2 i
8 d* |1 j+ u2 [wp ff8569,1,w6 o! V" o+ Q! Q
8 \/ e) i, x5 k$ j3 a& b7 ^/ c
例如对ff2235地址下读监视点,数据长度是2个字节0 F& k' H. |$ J
0 v5 t( L7 T* X( F4 W: h" B: [wp ff2235,2,r
! u% O8 y# J% O% K1 R! Q" n k
8 b* x! s" r: ^" l, y$ P例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断 h$ c7 d# j4 l, d8 E D( v: i
* \! ^! a2 r$ d9 Z7 g
wp ff7533,1,w,wpdata == 01 X5 N* @2 J! F! z- h$ I( q( N
* L4 c) O, t6 L. H y0 S7 J% \以龙王战士日版为例:# u' O0 O; Y- Q7 r$ o- u
6 U) b8 x: g4 T( D x1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:( C/ {4 [: A4 T6 E/ S# Q' b
3 P( K6 R/ a) [8 ?: m
% M, l6 ?$ A2 r( W1 U7 k* Z
+ w( E8 A i$ R6 O3 J5 I( c
' q8 ^$ x1 ^$ P. j# N& U. N; l, j2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:( s1 b2 j( P2 g3 ?% g8 E* Z( K
9 `- I! ^& J4 q
6 |4 _; l3 T5 D: Y% [
3 A0 v" X/ _, z3 J( Y! F8 @接下来说说程式地址断点$ B! s! j3 W& Q) e. W0 r% R) `! u4 T
3 s- S1 T% }0 f! n# k( n. N8 B6 ~
命令格式:bp <address>
) [% c0 d1 U/ o+ c( S9 _/ L5 |& y" |6 h& V& a- F2 \
例如对000488汇编指令地址下断点
3 }5 }5 z9 C3 V/ x" y7 ]. i& }$ X9 `1 T$ e- p
bp 000488
[7 ~3 D1 H7 B! T6 i& W" p8 \. f. R% a% L( {$ H# [( c+ ~
当程式执行到000488地址时就自动中断
/ z9 {# _) f+ d4 }
% h$ ]8 F) i/ X; T更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看7 \9 ]) ~" S. n) R, J
9 c3 H, |; ~. f$ U, k有错误请指正。
: }6 F! N- z* _
8 v2 x9 C( z; _补充一些命令:
& s8 M1 q6 \9 n
$ ^" v5 v, h# m"wpclear" 清除所有监视点
2 ^' I# ?1 A; k6 n1 A"wpenabld 数字" 开启监视点
4 t) m9 X! o' b) J9 }: O- m; s"wpdisabld 数字" 关闭监视点
+ t7 K A+ f( @" W& n"wplist" 显示所有监视点+ o8 I1 y7 B7 s1 U+ D$ T
: O0 c5 O Y4 h+ g"bpclear" 清除所有断点
' B! ^$ w Y, [9 i! \"bpenabld 数字" 开启断点6 v+ m( s* _- e F* X+ S. l
"bpdisabld 数字" 关闭断点
( \* e% @1 w: }+ j9 D"bplist" 显示所有断点
' E5 j' }9 |/ h: v, Z |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|