签到天数: 1834 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
" j7 C$ H5 u2 x. K3 X6 Q/ i2 j
: |4 z$ F% Y: K. H2 p3 W(1)如何加载ROM2 j5 A- v4 P1 Z6 n* Q. g# D7 i9 s6 O, A
! {) |$ M: y# P3 D) m0 Y先说说如何加载ROM吧
" j0 o$ H5 J5 E. O3 [0 `- `0 r' M
6 y. {% O' i8 E2 J; g以MAME 0.148 DEBUG版为例: H4 g; L9 G% E3 R" c5 I( K' U
4 X! Q2 _# \0 b+ N5 \" B
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
$ s/ i# l- q( m; C2 ^- j
' Z9 B3 r/ j8 F注:MAME官网的MAME是命令行程式,没有GUI。$ W7 t# |. h# C+ q
3 P, @& c1 H+ l l- ~4 j2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;5 \2 `0 x e5 o, r7 t1 ?1 Q
1 u. K* M: x* D( k, h. |8 g- k
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
) D0 q# R1 G. J/ `% F& q, L
j% J V% e0 m( m' sd:回车
, ]1 W8 O' y6 R2 j- D- X2 T; [6 p* n% E- R A- Y
cd mame0148b_debug回车" q7 U O0 `# l( j7 H5 Z' J
) D+ B* q6 f7 I+ G4 ^如图1:, Y+ d" s! g% |
% t" M. G" |2 h: o% H
; F4 X, z# C6 ?/ |+ M& v/ e2 A4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
: N5 T1 i# f; ~4 Q9 V
6 y- a& L( E. r6 o) ]5 y& Z+ r/ r* [) T( G
& ?1 N1 X$ W: i. U* g8 p
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
: T4 }1 z4 o( k' ]! M7 m) y1 d8 P
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
, x0 F0 s- e- b7 Y2 u1 Y }% L4 V/ _ N+ ^
(2)如何呼出/隐藏调试窗口5 _& e( h/ S9 ^2 a+ ]# D( l5 r
6 H* R$ A5 x C9 _+ Y
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
5 J/ }1 t+ L2 ? C5 s
# ?, K; a* a+ z! I5 u: v6 G* E+ d8 }. K l
" X( r# A d& J' O
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:- G4 F1 g' G/ t
9 O9 G( M8 O; M8 f
+ V7 p: F3 E- l: I5 F; R' K1 @4 a+ q8 D. |0 ]9 A7 f0 V1 C
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。5 l- b, {. y. d4 D; d+ Y
. K& V" Q0 ~( M8 x1 Z6 t- r; D
(3)如何下读/写内存监视点以及程式地址断点% D. b- p g, j7 _5 a* O7 G( R
4 b* K! A {( S1 r先说说如何下读/写内存监视点吧$ T4 B3 R9 Y% L" R' @! }; d* Z( q
% a, l$ O& w- c ~- i+ i1 k+ f
监视点命令格式:wp <address>,<length>,<type>,<condition>
. J7 X; ^- u. g% Z: K x5 n0 d! e3 X2 |, J- a
<address>是地址
+ w- _( d* p3 d% e, E( C# s- ~1 ^4 J+ c1 \4 f' k
<length>是数据长度,长度必须用十六进制表示% r- u: n- ~8 c" z8 v; w; I& _1 m# P
# G7 f( c2 c& \. l# w' N K<type>是监视点类型,r是读,w是写,rw是读写3 v% z2 b* w: \" d( D5 W; [
* C" [* I. p4 _5 y6 |
例子:5 o9 h+ F6 H4 @% D4 }2 d& z
1 b9 W8 A R& E+ D! E9 a例如对ff8569地址下写监视点,数据长度是1个字节( G) g6 W. @% v2 G e# C( c
& P3 p+ Q: b5 m- C+ E2 i1 d/ ~: ^wp ff8569,1,w
# |" N+ ^' P! s. }0 j
% x' g) I; v& k9 X+ N例如对ff2235地址下读监视点,数据长度是2个字节$ c2 F* |. F s8 o
' l) i+ u- E6 J, Y+ s, X7 k. r
wp ff2235,2,r; ?2 P$ v1 S, E9 S
1 ? A4 o; L( J5 z例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断7 l \& P+ c' ?- M
0 B& F4 l- U: c jwp ff7533,1,w,wpdata == 01 M" M6 G! Y8 o& h7 U/ q; v
$ A( L4 F; M1 r: }+ T以龙王战士日版为例:7 d0 [( @/ o7 g8 W* T, x J
( u! A! o2 j7 E* C
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
% f) U$ z7 V U. [7 V* }7 [: o: w7 s- a% j3 A
! ~1 F5 G S i: Y; r
) n5 A' [! g; V4 O
% O( d; I: D6 H* g3 m2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:# o# k( Q, R- M
2 e. W6 M) ]. O0 f6 c( d4 _* k
" u! q; ?; ?" |6 G6 v4 y$ l
K* f; x K( ?; q接下来说说程式地址断点9 J. K( f1 c4 E
: a+ _3 f0 V- u
命令格式:bp <address>
1 u% c* h3 J6 R) `+ I4 l" H' K/ A* i3 Z/ Z& ]
例如对000488汇编指令地址下断点
; L/ W' A8 `6 c }8 s
6 u4 ^1 ]" w, a* k9 Qbp 0004888 l9 x! O' I# I+ q8 j
: H/ ~2 Y$ S& j$ q' ]7 K
当程式执行到000488地址时就自动中断
3 I1 p+ ~! `' F+ q2 n& M! ]* ~
& L. X" S3 p9 {) b更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看4 g2 |$ F0 z3 H* e, ?
) u! S+ ^; h b有错误请指正。
9 {: X, U( x5 t. D5 C+ L* d' N3 k2 {1 z; O, b( E8 N
补充一些命令:7 |2 U$ k9 _0 F, o+ I9 R! I6 n
; s' E( |3 t0 F/ s
"wpclear" 清除所有监视点
' b% U! u5 v. [# f$ @' x' x"wpenabld 数字" 开启监视点, \7 l( a# d5 Q. q% P( }; r
"wpdisabld 数字" 关闭监视点) T% Z& K! R$ f% H
"wplist" 显示所有监视点
. C" q2 X, `! t& a/ r8 `0 p& b( L# n" z" l
"bpclear" 清除所有断点
$ a, Y0 g1 F& y5 }, M"bpenabld 数字" 开启断点
7 f9 ~& F9 i: N"bpdisabld 数字" 关闭断点* `, Z/ z- w& d2 I3 X& H
"bplist" 显示所有断点3 Z8 l' V) q* L0 y
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|