签到天数: 2118 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。! h) K5 [/ ]) a9 e& a6 P
4 `5 G1 g* C" v3 o6 B s% Z
(1)如何加载ROM
, P6 f$ w/ ^, k& n5 F- p, g5 G8 W& _
先说说如何加载ROM吧* f @* N1 W; C9 {
- c( B% I0 R3 i0 G$ A
以MAME 0.148 DEBUG版为例:
# z8 G0 j! A. z+ R" K1 |' `3 Z
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
* w* G. J* l% }" [8 m
. {0 i8 `1 l$ O K& P' g注:MAME官网的MAME是命令行程式,没有GUI。0 j; _: P7 D% m! C
, Z7 M4 |7 d, z2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
/ x* J" [6 q" [# t/ F( q: D' t
/ M7 R3 m: Z9 R6 {: ]3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:8 T' @: ?( i B2 ~
- a% z+ V0 b4 sd:回车
1 J" y! X/ Q$ |5 O& O* V
) e- d# U# D) w% i- Rcd mame0148b_debug回车8 n" u& ^) Q+ q- M; }
' b* T/ Q$ R) d U0 d3 Q
如图1:
' {0 N. B1 C5 D* P8 `: c$ W# l6 b
! O# @- |5 ^) I1 x( V5 W8 K: w/ s% p
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:7 a4 I( j1 R4 Z4 x
( c5 V! {* C0 O& D/ c- b- ^" S- X& E- M1 n3 K" Z
+ B0 [+ S2 V4 k6 c
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
1 ]; Y# \; `& _; v& \, X2 {4 l; c* @
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
6 T4 E/ B" C% c8 W- x! b
% } d6 X" T9 }) Q- d(2)如何呼出/隐藏调试窗口
3 I! X8 I. X* a+ p6 @$ S5 f7 k8 |& b; x
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:! N9 D! W, X, P8 R7 E0 V5 L- V4 A
5 H" W8 r j% x. P: A+ p7 `
( E$ f4 c, u0 R; g4 F# ?7 M7 m8 x* K. X3 Q) e4 Y3 `, R V/ ~' R
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
9 h" j5 m6 r. i6 L" w; E/ H( G# l& M! G' p$ S8 y
+ A: H: I9 O( k& C- I1 _+ `3 U1 k, G0 j% a4 l
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
) X# W; x' {% g7 Y- F
7 M" V' T% {3 Z9 ^3 K7 Q% P6 I& G' `(3)如何下读/写内存监视点以及程式地址断点
; h I0 Y; T7 N. F. @2 C* P9 F# ?& b
先说说如何下读/写内存监视点吧
0 h& T, v9 I+ N
3 [+ |' Z+ _) z% ?监视点命令格式:wp <address>,<length>,<type>,<condition>. y7 h) g/ [# }: U2 I
6 @2 a& G1 ]0 V$ |4 m N+ { g<address>是地址) b# s# z4 q* g# i+ X- a
( S, f0 b7 H0 l& o<length>是数据长度,长度必须用十六进制表示
4 a( S' F! a3 F8 ]& W+ z* `0 f4 A( I& ]2 N: @! _! c
<type>是监视点类型,r是读,w是写,rw是读写2 k6 r/ {$ r8 X) p3 i* {
+ q p! i& p$ @9 `7 C# U% @7 Z2 B例子:
2 Y6 ?+ d4 g: [3 V3 ^( |: d/ g) l7 x% d0 s% N
例如对ff8569地址下写监视点,数据长度是1个字节, f% A6 u, d7 h! Q5 u: i
8 {8 ?, _6 N0 N2 e# E
wp ff8569,1,w
0 M$ v u9 z2 p Q
. Z- M0 J( h" b! g7 d例如对ff2235地址下读监视点,数据长度是2个字节/ s' V' Y6 [ P" \2 b+ _
5 \ x# T. u* o3 q2 ?8 Hwp ff2235,2,r
4 f& U0 T: q* ~5 y/ y
& f8 n: N5 ^. l# H' F0 }4 m例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
. X4 x7 ~$ r' T# g1 L/ p Z" Q4 R$ Q# O4 U: x
wp ff7533,1,w,wpdata == 07 g, ]5 X/ F w* K" F% S
+ _, l) e- n# Y2 L* f4 `
以龙王战士日版为例:! e2 K7 @2 i6 l1 K7 W" _3 i
8 n% L) r6 _9 e1 M6 ~' m1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:2 ]. ]) k5 l0 x( q
2 ^; q; ^# A' y5 i
+ I: `5 s+ t8 L( y4 M. O1 g
5 C- y2 `0 R' k( B) J
1 _ h. e* [( q- w5 d4 \2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:! _3 @' p; F/ Z6 O
9 h' c+ a5 x8 O$ n) F3 ?6 b' w6 H7 z1 D& A1 H( n! y
( K. `8 ^ ^) d9 ]- d接下来说说程式地址断点
; G! ^( T \8 J# D/ d4 J2 K5 R5 M
命令格式:bp <address>
4 g% J1 P7 G$ y0 }% Y1 X) Z4 v4 A. }3 F+ b
例如对000488汇编指令地址下断点
5 N! U7 X* [9 ~! w, z8 _$ V9 b5 J. S" E! \6 L
bp 000488" ~& Z/ \# ^% _4 y o8 b
! S0 w2 I: G( Z# p J' O/ K( N
当程式执行到000488地址时就自动中断: t' `! a" P0 W3 d+ X) s* l
& ^: f, ~, K3 M* h7 ?, C更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看* I' z o1 b3 b$ \. ` Y
" E& ]+ Y y- E3 b% U0 ?, c
有错误请指正。
5 z' F( T, _* T! V7 j( q% a
* y4 A* b& i- }: M" f+ |( m% i补充一些命令:" X$ C Y4 A7 ]1 A2 }3 q
% S' a9 d. U! ~5 _) I5 g b"wpclear" 清除所有监视点5 A+ n4 I# z! j) v
"wpenabld 数字" 开启监视点1 C& Q( s! G- L% U
"wpdisabld 数字" 关闭监视点
F3 _9 G5 ~: Z1 [0 k"wplist" 显示所有监视点5 u1 D" y( A H& Q
8 \5 {( q+ Y1 N/ J. C* v
"bpclear" 清除所有断点2 ~. L: }- ^9 n6 C3 B) Q8 u$ `9 h2 I
"bpenabld 数字" 开启断点
, C4 }( P" n7 Q% ~ G"bpdisabld 数字" 关闭断点" M- U1 ^- d1 A) |
"bplist" 显示所有断点
; _" }4 o! {5 L: ^4 [' l- r0 n |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|