签到天数: 1803 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。% s. E2 f; b6 P
7 @3 `. \) g' ~* B3 u5 k2 U(1)如何加载ROM
0 F" @1 w3 d y6 v6 ?* D* _( y* L: W5 q
先说说如何加载ROM吧' x, ^- n1 m0 x( w5 J
0 A1 a( o% M0 `7 h$ H6 K以MAME 0.148 DEBUG版为例:
* q( ~& M4 f9 E+ y$ _( F$ W# g0 O+ N, @9 G6 Z8 p
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
; x5 R# c% A) H# Y% _9 X0 E- z: a! T5 x% n1 u' j5 ^
注:MAME官网的MAME是命令行程式,没有GUI。
! S/ v6 U& W4 A# H4 i O" J& S( i1 |9 Z
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
" j1 a) Z; @( }; N( k0 Y: Z/ @/ u/ Z! K
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
6 c U& z( \1 X) Q: Y" f; j( @* ^2 F* d) y: u8 G. w6 P" k
d:回车6 L" _' D% T1 j
) ^5 f7 y& J6 [cd mame0148b_debug回车0 N& c6 E+ `7 `
3 Q$ G. R k( z# e
如图1:" s( F$ \, {8 k- P+ Q' }6 L
, F% {, J& D: @: {7 }) @0 l$ x1 v2 c8 O1 P9 r/ J! V
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
; K; Q) t; P3 N3 X0 w4 U X: |' _$ W- J, d; k5 ~* _
" q; ]7 m; l4 K$ ^: Y
( S. X5 ?. t) @5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;4 G0 m: e* D7 k n& ~
5 Y( L/ p( ~/ N2 u7 B
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
0 `, e4 D6 D7 S6 {: y- s
2 ]. d- Y8 o- j N+ W+ \/ b(2)如何呼出/隐藏调试窗口" j X0 I; o/ z/ c; n, M$ l
7 w$ R. i2 B$ c6 j V [1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
0 u' U2 z5 }; ^" e% O2 l, D8 `; H' g$ v+ P
6 Q' u% a3 S) C, D# U
$ F. x: P/ V% ]; V- q6 K$ K2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:- n7 V5 g' G" o
3 s) v7 {) J7 U3 Y1 |) V2 Y
; \- V2 O5 P f% U. B5 [4 ~9 |3 I
0 ]: Y9 i5 L4 p `7 B. b3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。7 p; B, _$ |) b H N' i# k
! Z$ G( Z( l* }. D9 N(3)如何下读/写内存监视点以及程式地址断点7 @3 j4 `% w! W& S0 ]7 X; }
/ v( v: K* A& e* Z先说说如何下读/写内存监视点吧. {6 w, c, @9 Z
$ a6 g1 t5 `! J: ]1 [! {监视点命令格式:wp <address>,<length>,<type>,<condition>
[( G/ j2 L5 r* V: z1 u" M* d4 i3 b
4 Z5 s% m" ~4 y1 q7 }3 A<address>是地址( t E( ~ ~& n
6 M' Q3 I+ B" d3 ^! v( ]: d<length>是数据长度,长度必须用十六进制表示
A; |: t' D7 R3 c; G s' n V# c( X2 | U' z4 `
<type>是监视点类型,r是读,w是写,rw是读写. v% _9 V7 @1 V2 z Y8 `
4 s+ q6 v- W! E! @, f" X例子:
8 g+ l1 ^1 F# W2 p; w4 Z, ]
9 y' }, W7 h0 t7 Z! x% y, Z% |例如对ff8569地址下写监视点,数据长度是1个字节; g, O# o) W0 M( D5 X% M m
- e5 z- Q, L1 L8 P
wp ff8569,1,w
: b3 V4 t7 Z# D i# _) q" y- G5 L, U0 o) G( ?( D! l
例如对ff2235地址下读监视点,数据长度是2个字节
y$ A4 J! i, A+ v) N ]8 g3 x% J& x/ {3 N
wp ff2235,2,r
6 S* \0 U8 X) L7 l: f/ H6 t0 ?: q5 r1 s" ?
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
6 _6 o6 E \' z1 x) I* ^5 x1 r& e" B8 V8 z# J
wp ff7533,1,w,wpdata == 0
: Q# z& J: V" F7 Y% @
" B/ C1 B' w* ]9 `1 i以龙王战士日版为例:" J4 d* L. R- s- @% |
& [/ i+ n( E" l Y1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
! J- C$ @- U: o' k
: ^) R$ ~' W( F$ Z" V. }& J! k) B
$ z. c" X$ e4 z6 C% z( t; f2 y" [! W! @! P0 K
$ W8 L2 w- Y7 ~
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
2 |& a7 I" W6 B/ [4 B" m" y( Y8 o0 H$ m" B X
3 o* z! I1 W1 H) d, A) u# d, _8 k, m9 P, y
接下来说说程式地址断点
" c- Y0 N3 D0 L) n$ |' K' M' X, U3 o# b! f/ x7 O+ z
命令格式:bp <address>6 v% o) C. ^ l; d4 Y" K
8 _# a+ K5 W; z. K$ ~7 U, F
例如对000488汇编指令地址下断点
' k! S8 C( l# t4 n1 j3 n6 a# C. A0 i! O; t; F- h* E0 U
bp 000488* ^* c. \" z9 B% |
; r. E; ~5 ?! [2 _1 ^# k$ K
当程式执行到000488地址时就自动中断
' g5 |3 B. }& J4 X3 x2 P: r* H* e: ~1 g6 O8 j8 T
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
5 o3 {* T: h4 G3 [- o3 G( S/ i% O
( s6 u( C9 ^% }6 f# W& E% L5 G0 g9 S有错误请指正。
$ \% m" V1 p, W; X& E% `. i- g" u( z1 H3 Y1 c F
补充一些命令:
/ w% m5 D& z; ?% U9 E) Y ~: E0 d z5 y3 f* j! B1 G' }
"wpclear" 清除所有监视点
0 v- I( Y' l& I }9 s"wpenabld 数字" 开启监视点3 s- y* a3 b4 p0 {& L' H5 t
"wpdisabld 数字" 关闭监视点$ @0 d8 s6 m+ z
"wplist" 显示所有监视点0 X0 g' d; B9 {5 a" ?9 J4 E) ?0 W
1 E X$ v: q8 O1 G' g
"bpclear" 清除所有断点9 r+ d+ J ^& N) o
"bpenabld 数字" 开启断点
! R. i4 i/ R- F"bpdisabld 数字" 关闭断点
1 L3 B7 g+ ]8 X1 Y) }' `8 A$ ?" A"bplist" 显示所有断点
' M. e' d( q7 S |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|