签到天数: 1930 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
7 k- R# X( z" n5 W2 ]" O7 ^* Y
(1)如何加载ROM
' x$ J4 l/ B7 t P: ~- F$ R2 n) U$ Y' }" L; z
先说说如何加载ROM吧
0 V* Q( n; Z1 R/ y& ]
$ U* }. o3 f; |; Q9 u/ N& H/ [7 a以MAME 0.148 DEBUG版为例:2 G6 Z4 M$ O( p$ w& [2 x8 d
0 M8 d! t* v( M. G. f
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
6 H/ U4 Q* t' b! D. a
" b8 x9 p4 {8 f, C, ^注:MAME官网的MAME是命令行程式,没有GUI。
( X( c( Z6 D5 @, D" c7 I
. O% u* A" C; e' L' X2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
! s2 Q2 \' ? |( b; j9 x( z4 [0 X. A' Q4 N9 O
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
! d! c3 c( y! p9 X, c5 y: N4 {, v+ u$ l6 R2 c* M9 o
d:回车6 Q4 C! o/ j. M
. x4 J. ]- c, i% a+ pcd mame0148b_debug回车) _# I! P6 n* Q2 [
4 l* [* ^2 d5 D" ?6 g+ {2 j% Q
如图1:+ T6 a2 b- ]/ {' i7 l9 B% U8 U
2 Z& L, d) g! @+ u3 S1 Q' b8 ^% D, ]: u! p
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:8 j8 ?. m B4 ~$ N5 `% E
: l' o8 ?9 x; k
" p" f0 [% x8 C( a( Q' E4 y W+ {# Q
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;# D# N" z& B: i1 z2 b
, O3 N# W0 j" }5 b N6 i' l& E4 @6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。, j1 U& R3 ?5 C6 O2 P
; K( I* g$ x/ F
(2)如何呼出/隐藏调试窗口( Q Q5 Z! e; g) O) @
: b# Q( S) ~( b# P" W4 N7 u1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:" S# I, ^" m6 K4 K7 X4 l/ p
5 {& J9 r! h3 q9 n# o0 K! |5 ^+ J4 M" o8 u5 s! l6 }% U
% i* f1 s7 f3 c2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
9 |( ~9 ~( C$ t1 T& ~4 c4 Q6 a* P/ d$ Q6 z
# K0 C3 p7 v W& w1 Y
: K2 t/ Y- p: t1 N3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。/ u D- v, Y5 y
+ z" a$ w4 ^% _+ ~+ D& R" m
(3)如何下读/写内存监视点以及程式地址断点: J( S6 _1 k8 S7 S9 [! b
& C0 n7 b& \$ o4 ?
先说说如何下读/写内存监视点吧
- R& n; a; e6 z8 b4 n* E# c P: A9 G; \! P# {8 x
监视点命令格式:wp <address>,<length>,<type>,<condition>
M7 Z6 x: q: c$ x4 Q- y
7 |1 } r* f) P# g<address>是地址/ v1 ]# J1 b/ x; N2 q4 L; d
, }. q; n5 _. H; _& j' Z
<length>是数据长度,长度必须用十六进制表示( P% f9 M9 M! r4 e3 ]
A' X1 \2 G; f) G% b3 B6 K) Q
<type>是监视点类型,r是读,w是写,rw是读写$ @5 D$ m( b1 R* I: r* n! H/ S1 ]
( {+ D9 F; }7 `例子:$ U1 S7 l4 L, V$ Y5 X0 Z
4 i& m* a& N9 d
例如对ff8569地址下写监视点,数据长度是1个字节
" g* p- v1 a$ f$ }' s# }5 z; `1 j8 q& d% D$ x( o5 w
wp ff8569,1,w
& @ C# p3 D' F0 T9 ~1 |
' C, O6 B. E/ {$ H% F; f: e5 k' z例如对ff2235地址下读监视点,数据长度是2个字节9 a& B. S+ K# _3 R- {( M; {& ?
4 s' g4 f3 J, ]: mwp ff2235,2,r; Y; |+ ?# n3 ^' E, D E( N1 e
) s5 k6 O8 p# u
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
4 T6 v6 Y0 f" g6 B+ B( J/ M0 O/ R; t% o
wp ff7533,1,w,wpdata == 0
0 W, ?, u7 I. e6 o' h# y# U4 |- r1 s4 d V5 T9 X$ g* @: [3 i
以龙王战士日版为例:
. A Z6 T7 o7 M5 t5 t! w9 }
1 @% D9 k2 F- ~1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
3 p, P, |+ z- R- k3 ]
1 a9 c0 {5 U$ T, j
- H$ U) b3 T% ]3 U8 z0 Y. o5 T! \# W
6 A( y6 ]" _, g; @& V2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
: d. V( O* `* T% Q! l4 Z1 o: D6 A5 _1 z+ C, W& |2 F" d
: ?5 F: O1 ?. O. k/ B
& @' g( ?: W% A" t& Z5 U接下来说说程式地址断点
0 g8 X! u! n' m+ R w* s. y: p3 d- p/ @" T, a3 i
命令格式:bp <address>& p% x6 {9 `: G& V, [
; \' n6 l" E4 }& r9 @
例如对000488汇编指令地址下断点
. d! O- u2 S4 V% ?2 E3 R: ` n* t. U2 N! a4 }' Z
bp 0004889 u+ N9 q% K( e1 V0 f1 u e4 k
- b3 T0 u# b* X) \( r$ E
当程式执行到000488地址时就自动中断/ A8 v2 t6 Q5 q9 V
/ `9 M9 b' T1 y* g) e
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
. `6 U* A' }1 m7 d: r( }& n3 v3 B' b: b1 y" @# I
有错误请指正。
5 A1 S' {4 ^4 z- B4 B
* m3 k* }- Y9 s2 s1 h补充一些命令:
: v3 |2 n* S7 ^5 w- d; o1 @
+ V* w; s# P# H, A( L& i _6 H"wpclear" 清除所有监视点* O6 t/ @& o6 Z( H6 X
"wpenabld 数字" 开启监视点/ r( n o0 X6 j0 H% H& H$ G
"wpdisabld 数字" 关闭监视点
! C2 a" `7 z2 H& {; i$ p3 X8 Q"wplist" 显示所有监视点
; A- s/ Y6 {4 d8 q6 d9 F! {& s, `
"bpclear" 清除所有断点8 [, {: E! E1 v- u; w4 |3 \1 K+ }5 T
"bpenabld 数字" 开启断点) E6 Z' ~" w2 {6 l5 ~% _3 }
"bpdisabld 数字" 关闭断点
1 E6 n4 }7 B3 B# r: B# ~"bplist" 显示所有断点# v% G+ e5 X+ W- K+ l
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
3
查看全部评分
-
|