签到天数: 2051 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。: M- c' H3 b) g8 N3 R
# Y2 h. p# ^# j(1)如何加载ROM0 r h/ R( u6 U7 }; G- B: X" r
6 K: b0 r% l( m7 m
先说说如何加载ROM吧
+ `2 L; e; v& b) c
/ {( U' b, F$ g5 r以MAME 0.148 DEBUG版为例:+ d' L4 o3 C' u; k% a5 U( B
' c+ `* V( f! e; T9 [! E1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html3 |6 k- {- Z1 x- [' @, ^
# h% C7 S7 g, T
注:MAME官网的MAME是命令行程式,没有GUI。 ?# t. ^) x Y4 X) Z g
9 W6 q/ _! L q( e1 {2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;3 N _. [" m% t
1 S- a( H* M# b; M. q& n
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:) O2 _/ |2 o. ^! e- z# D
# n) `0 v- x0 J3 u t5 k8 ^9 t
d:回车 P/ g1 I( N, s2 _4 t! d( O$ F
, T. ~7 x7 ]' E: w
cd mame0148b_debug回车* q2 F& Z3 ]# T. [" y A
# q1 X8 a4 p! e1 L
如图1:
, N; o( d* ]( Y& A0 h
( ?" Q% l+ }; L; f2 {, N3 j. r1 T# w# Z2 |. O* N. T8 b1 w I% F2 K
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:! h! C% @9 w% e- S, d, J& d' H
3 ]0 p0 N3 Z# E9 e- z" W, z5 J* m0 d4 `/ V2 l5 H5 q/ Z+ Z! {
2 j- A* v- g9 `1 A# F2 D5 D8 X# V5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;' u) K; \8 h0 ? q
- E, `9 q5 A8 E3 l& ~6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
" D& ?2 R% Z: q1 k! C0 S* ?8 p- E/ }' Y3 k. f) W
(2)如何呼出/隐藏调试窗口
: }# L4 y# Q+ V+ k3 O
& t$ ^ b5 B' C* E' y. K1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
7 a% [8 V" V$ B% d, L1 n1 |& R
/ A1 N9 E j" R; F2 y
; {9 j: L9 V% r1 x- \+ d7 Q9 b2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
$ v( U7 v7 x1 f0 ~! V4 d; Q! ~ i5 T: ?& w+ V, e! ~3 P) p- {
) [7 j7 ?. g- p8 T. c% ?. K7 y: w# J$ ~
' Y: |5 a% ?* X: E, F( E @! ~6 X3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。% ?& ^' L3 M& O6 j
B) ~& m9 C! E( c(3)如何下读/写内存监视点以及程式地址断点
2 C5 x# q" n' |) o0 o# l! c3 ~0 R/ g R m6 ~3 I5 I1 y$ ~
先说说如何下读/写内存监视点吧1 L; ~4 e( U5 N: Y- U/ z
9 z, v, e4 t2 i' t! q7 g! Y; J
监视点命令格式:wp <address>,<length>,<type>,<condition>
5 E& o' N4 G' w2 h+ Z2 O; y' p% b" Z3 @ Q- ]- v: E* s: d9 L
<address>是地址
; ]" F6 E. ~ B% O' n" ?
7 p6 K _* E; L<length>是数据长度,长度必须用十六进制表示 g7 G) \* }' Z5 Q
4 F9 K/ F" ^" I2 S% L) l L8 s% z7 y/ v<type>是监视点类型,r是读,w是写,rw是读写
: v. O y& C8 m0 _" F! v2 [
- |1 h: Z5 j7 i例子:
9 S% ?7 e+ }, j( f% Y$ {- b7 f6 t( D8 v9 \* x
例如对ff8569地址下写监视点,数据长度是1个字节
0 S& ]7 k( l# w6 Y1 a8 }6 x& D3 P: s F: d9 f! W. M8 _
wp ff8569,1,w
1 p. }6 t4 Z1 R) C$ X( m/ Z- r3 C1 @" }& |3 Z1 o. y
例如对ff2235地址下读监视点,数据长度是2个字节
; p7 I. o4 ] U. k# a& J' {. u# o8 p+ k1 V1 v- i, Y
wp ff2235,2,r2 q! I! t' `0 E/ W: M8 I# e/ ?! q
% ]' E- W, n7 }% P
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断8 O O) s- y, r: c
! U2 X4 a/ \6 ?( x5 X" w& j2 j2 Q
wp ff7533,1,w,wpdata == 0
/ o8 n. V1 J0 ^
$ T }( r) U/ o% `以龙王战士日版为例:
+ ^* V7 ]0 U, f! g
8 F; T. B- m9 M! t# @) O1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
; ?0 @% Y- T8 w! I7 N
, _+ m" {8 w+ F; y+ A# |- G5 w
1 J3 {. I$ }7 ]% r+ |5 q( A- r: F z6 W( p( G
' I0 p# D) \7 j
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:4 C q! q& L- E3 L' _$ b
9 [% H; E- |2 b' |' F( z
- t2 {9 S& K) M3 c* m
; k) T9 \# J. i1 d接下来说说程式地址断点# R& f' K/ C0 `+ f
( g* e2 N! f2 W! `2 Y) [
命令格式:bp <address>
2 @( Z" P8 A- R5 w e1 j! I- k' _$ E; r
例如对000488汇编指令地址下断点
9 U9 {; X4 e2 r
6 M3 s2 Q+ i$ a, U+ wbp 000488( t1 S# g! a/ M- F
8 p" V" g- v N0 ^
当程式执行到000488地址时就自动中断
* f7 t1 g! {6 n& y9 O* F( j- a( t* {3 F9 ~+ F& y+ [8 R b0 [
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看6 e) q3 o- ]0 T
; B+ z W) T$ V9 ?有错误请指正。
- s, R/ X1 }& ^' C+ G( g# p. h* F2 @, F( {, I( e8 t4 _
补充一些命令:/ G! d* r! C4 c; \" ^9 O9 {
$ k9 i; Z) D$ d" G8 W; F% k"wpclear" 清除所有监视点6 [7 n, N0 b2 N. j
"wpenabld 数字" 开启监视点
2 c% ]2 U) H- i' \$ |* M" e"wpdisabld 数字" 关闭监视点
6 F7 {2 ^2 h8 G' ?0 T8 B/ r2 I"wplist" 显示所有监视点
. A" m$ G# ?6 g( N
6 G7 T; p3 S$ s% p7 `"bpclear" 清除所有断点
2 `; U) ] u' n5 ?"bpenabld 数字" 开启断点* v, P( d: M& r" B' r+ B
"bpdisabld 数字" 关闭断点1 p$ ^ s% p O2 u2 ^2 E
"bplist" 显示所有断点
/ G! Z! Y. k, O) m6 [& B |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|