签到天数: 2073 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
' r4 K6 ^. e9 {2 y0 A$ {' a+ \/ z; l' z8 T* V" X
(1)如何加载ROM
4 |" N# Y8 ?7 N; [. A9 C0 v- {
# C3 D2 v3 t; t5 |8 _; F先说说如何加载ROM吧
5 m# [) Q* a- G. u1 P5 {
7 d" J! |* e: N* \5 S+ ^+ B7 n以MAME 0.148 DEBUG版为例:
) U1 x% n( {* C! i3 ^) j9 E
e/ L! }9 |' Y1 ]3 u, Y1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
Q% p7 e% I/ E3 J6 ~! q% U6 G7 i- C3 }
注:MAME官网的MAME是命令行程式,没有GUI。) [. U0 [) ~0 h/ Q
9 |4 a$ K5 o5 ]' s$ \- M2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
4 C' V6 J- i& k$ ]! {) J% D/ M- V. h: K$ Y1 T, E" }
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
6 q7 W5 }( I7 o7 {
3 W$ }4 v5 ]0 j5 `8 Z6 Ed:回车
! x, v4 r% a2 \; l; F6 T5 S8 F/ y) h) H/ s
cd mame0148b_debug回车, \$ {" y8 ]8 H' C
* }; B$ B- t! Q如图1:6 E6 g8 |/ N8 C& H* b2 n( l
F9 |; p9 s6 J' j5 d% i8 |+ m2 _- V' c# ^3 b
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:4 u' r, W' v1 J' o/ }
) s7 k7 V. i/ Z0 P) Z
0 Y: o# H/ \8 h# c1 a/ _& x
/ U# [( B) |3 w( y6 G- K5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;9 X( e5 v2 d% f% l+ H
5 h& v; ~# C7 G+ r
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。, A5 ]2 J ^, r8 d
& S; C" s2 w, H$ l) l+ V' S( q+ D(2)如何呼出/隐藏调试窗口3 D+ s' a M& L8 G
% [- N0 a5 X, {, |
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
: w h# l4 o6 `9 Z( [1 ?/ q& Q; R& v0 U' o' M
& Z4 J3 U& L6 E- D: Q/ @7 T
& A; b& L' N; F/ z& D2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
) E# o# v& n/ [/ B( Q! L; D2 M7 K# _- n& z
$ @# f! o7 P6 V
3 M; x" M3 E( e1 @% X$ \+ i7 w; K' i3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。$ Y! P( g. v. i) h* Z) _) d: O
* s" Z( e5 M5 L. _# h5 p+ |(3)如何下读/写内存监视点以及程式地址断点$ h4 p3 @$ N0 |8 A( n" S
& z e/ S) z; v- I$ _. ^先说说如何下读/写内存监视点吧
, R0 [! k. {" u1 d5 o
& \) j# x/ N$ r7 q监视点命令格式:wp <address>,<length>,<type>,<condition>
' T' [! w, O' ^5 d' V
1 {8 V, G$ k c1 J, |<address>是地址1 u; u8 j2 ?& X# ^3 v) t6 L
" r; C4 ]: W) l! i<length>是数据长度,长度必须用十六进制表示9 Z; v: o" B7 r
( c" p1 x6 r8 |2 f" J) e' [<type>是监视点类型,r是读,w是写,rw是读写* @7 q) e+ U( L
$ L8 P0 |5 E- V7 C; J5 ~9 Y例子:
! g" R. f |, R9 O* i+ M: K5 n3 b9 s; w9 J7 q
例如对ff8569地址下写监视点,数据长度是1个字节
5 ]( \ q: w" z* n" u" C1 H
' P# q# i5 A* @3 [3 M! O) H# |4 qwp ff8569,1,w0 ]1 I# X2 Y( e% p
/ j& {( G% n# O5 R1 e
例如对ff2235地址下读监视点,数据长度是2个字节
' o& [/ {; |1 @8 G9 r1 ~, e4 {) J- F& S
wp ff2235,2,r
, G/ Y+ L- d0 N' i7 [% {% C9 X3 X! `* h2 Q X1 a/ |7 f3 J
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
$ y' U' W7 j; `0 T/ b) H
. _4 Z3 |+ z5 s: _wp ff7533,1,w,wpdata == 0
( c4 N L( ^' e8 e4 G7 V% \
6 M& z! t+ @5 a: s以龙王战士日版为例:
& P! Z- x+ J% O: ~ f5 l
% Q4 ^4 f' D/ P+ \* D/ Y1 \1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
. h! ~' V0 W6 j) I+ ?! p) D. r: s( R9 `5 K) i; G
4 _9 h; C/ T% d! j* Z6 F1 c0 T; s/ h; P% q, x! K7 A
7 t, l6 w6 S* `: T$ n
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:+ w; T7 Q7 @; c0 r
: [2 e$ `' Y/ f% H
; n/ P1 w9 N* t) {0 Q+ z
$ n( ^; F9 i7 E0 e接下来说说程式地址断点9 ~6 z8 W4 J# X9 a& ]0 j* T4 B
; X; L, }6 m2 C* q
命令格式:bp <address>5 H- ]6 K7 i4 K" w i, X
. i; C' e4 S9 g3 O1 i! p2 l例如对000488汇编指令地址下断点
5 e8 K0 a" b* L/ T6 L- j- ?, g' T- z6 H* }* m# w4 I4 L% x1 j9 V+ `
bp 000488
' r" r! h! J( |0 B
0 y, g3 {7 _, g% E/ \0 r当程式执行到000488地址时就自动中断; C2 w6 u9 ^. H
9 G$ j# o/ ~, [' O! C2 w+ |更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看2 Q1 V& i" K% r: B9 a* p
3 z! D2 P4 E' H! u! {! I有错误请指正。) o' j2 k$ |5 m! S9 [1 U4 n
% {* X" { Y6 W- F* b! |# { |补充一些命令:
* O# h* p; k4 w" K; T: H) t
4 t5 [2 V& u7 V( a/ ?3 G"wpclear" 清除所有监视点/ D2 u, [! E* x+ i; j! m% V, x
"wpenabld 数字" 开启监视点
( S3 L5 c% X/ {- |/ ]" _' ?' h: l"wpdisabld 数字" 关闭监视点
0 V% D$ X m O- B+ {: e. F \"wplist" 显示所有监视点
K* j; p6 T5 c. n& K
+ o7 c! ~* q* I* ]7 l"bpclear" 清除所有断点1 g6 B! ?# c4 ]: H! q9 F/ E
"bpenabld 数字" 开启断点
! v7 q$ F$ C) H"bpdisabld 数字" 关闭断点
( Y7 g& R* K+ @"bplist" 显示所有断点
- v* U% k* j( n# r+ ~, T8 v3 N |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|