签到天数: 1975 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。' n3 q' Q' c' T: c
: S6 U6 c* h1 @2 C% t' d* g1 K
(1)如何加载ROM& {% \# Z/ S7 e8 _$ b8 S& L
5 f" h; @0 z( i先说说如何加载ROM吧" s; f3 {. {- z6 G
3 ?3 O4 y/ j; |/ Z. \/ S2 @# L
以MAME 0.148 DEBUG版为例:# _+ h1 j6 Y( k+ n! Q- ]
# a0 _& i8 a! t- m& w1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html2 C) l6 p( k3 e q
: }1 X" D* l5 L注:MAME官网的MAME是命令行程式,没有GUI。) w6 Z/ C8 A, f# u9 a# \" [# b. f
5 Y+ \! C* a7 N' T# e+ f
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
A# W, \: h# ~; \' |, {
' t; Q; F+ I. A2 k5 u+ }& L- V9 ?0 j( W3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
! L L/ Y2 K; ?* v9 `, O# d" b- C# C2 u. A- P
d:回车
/ c+ K# ]$ S' u# y2 o0 B4 p" P, L7 l* i4 `
cd mame0148b_debug回车
3 j6 _; T2 {, |0 K4 L7 p: S3 @* a% _
如图1:
4 D" c8 Y! b; [" |( `. Y3 _
7 [2 t4 h( y! B1 @. i6 ?6 W1 p5 i
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:# x- D# H$ J0 X# f# l
5 \ K2 Y3 \6 l4 }' M# s
0 p& W! I3 s: @. Z* a" w
5 R3 p" g7 o4 B% }4 `5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
; O6 ~: a v' k. o9 z
+ Z* I' G4 _' o, Y5 K6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
, i/ ?& I5 d* l6 F% H% e4 y3 |4 z! N
/ M R6 E' @8 B! ~(2)如何呼出/隐藏调试窗口/ o; |$ S/ C: r- j, \6 U6 |
# U2 \2 N6 O# q2 N3 k' O5 r I7 ?
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:( Y5 j5 S# @5 c9 m& h8 x$ B/ A# V& F/ x
, C- y# I+ |* `+ w- D
4 B B* w4 @& e+ Y
* e) Q4 M; q% w/ s2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
4 k6 j6 g$ Z q6 x; ?9 W2 |
0 t- [8 G" U# E' J! L
5 M: \# v% e! y" r
z( `4 n" K2 p4 \) D% q! u3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。/ `- d. l, B( ~( g) _( I4 g
& X6 f9 `% c& k C+ J7 _. R
(3)如何下读/写内存监视点以及程式地址断点
& b9 J7 Z! M4 V( [7 V O
; w/ B7 E5 q' w( U) J9 v先说说如何下读/写内存监视点吧
+ f5 ^; \& y, N' \5 |
- M" ~$ u( {8 X! Z监视点命令格式:wp <address>,<length>,<type>,<condition>* q$ J8 C" p! o) n
+ N$ Y* j' P% d( r+ {<address>是地址' F6 a$ Z! w$ Q
7 r7 E# ^, a i' V
<length>是数据长度,长度必须用十六进制表示$ Q7 B& _' |6 ]" {
- j9 B* _1 A0 I, ^1 ~: k
<type>是监视点类型,r是读,w是写,rw是读写
6 _8 s( U+ u/ o M( u# v4 E
j7 w; x8 f; C4 `/ N例子:' Q1 i# |7 I/ G2 w) L/ I) e% U
# S+ a( t7 A7 Q6 l8 J- Y# Q8 {
例如对ff8569地址下写监视点,数据长度是1个字节* P7 S% p- h# h9 D s- o
. Q3 P ]" T( ~+ ~0 v$ o: |wp ff8569,1,w, `0 V- r+ `5 ]8 X2 Q
! f ?! w/ H ~2 ^: X- [& U/ g# o) B例如对ff2235地址下读监视点,数据长度是2个字节8 S% c3 r# P8 S l
) q: {1 @: |4 Y6 u# j. s
wp ff2235,2,r6 u( U. S' F. Y3 c. U L. T U
4 L0 H% a0 W+ \! p+ Q w" @; Y例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
& V3 B! c1 d: f
# F& Z0 h D5 W' L( E& W, ywp ff7533,1,w,wpdata == 06 u( x z) f$ J
2 }' g" k% F% b/ N/ Q! K1 V! l& ]& ]以龙王战士日版为例:
( C: M4 J% i5 {
: j' L' V5 {, @( u( i1 j- C# C1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
2 J! P' E3 d3 \" A* M9 s
2 ?: u0 L, @* J& \1 [1 {, Z2 m6 h# I- B$ x! e
5 V- L% \0 |5 d0 K" A
# H/ p3 d: B! J
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
( i3 K- s. w- X% ~
. d- j, A9 {: _; n- S- W, b' ^ x5 t1 }" s/ b& v/ Q) q
# e7 N8 E4 ]# ^/ A1 m3 _3 z
接下来说说程式地址断点
$ u6 ~4 l$ f! J5 f' W$ y7 V0 i3 m7 ^% q
命令格式:bp <address>
+ q: Q+ x% Z# ~3 T# V8 q2 k0 g7 j' C* M
例如对000488汇编指令地址下断点, N# K* Z' m+ M" s
; K/ |' X% W6 N5 i: ebp 000488
& _+ _( G; `0 K% ~2 F% p
h8 {5 v' `0 n% B! h' C. x当程式执行到000488地址时就自动中断& o6 F( N# B" e0 y4 f
8 @* @0 ]0 K j8 h; |更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看' X$ u$ c7 s3 f3 C: n
. |7 e% S9 m7 @$ P1 o
有错误请指正。/ F9 p$ w8 k( T0 P. L, M* y& D. X& g! R
5 d" J: `) T- c补充一些命令:
1 a) r3 Z: |" l4 q% t, `
/ z5 z! I& \0 _0 |; I"wpclear" 清除所有监视点
; o# @! W/ ]* k"wpenabld 数字" 开启监视点
/ R+ W* \5 R$ N `4 U+ ^"wpdisabld 数字" 关闭监视点/ \+ ^: u f' L/ ]) h
"wplist" 显示所有监视点
/ O! c1 m4 }; [( y2 [& L
* N' d$ M4 B/ G: Y6 f- z2 A9 K"bpclear" 清除所有断点
1 b6 s a- {# v6 Q2 N0 M"bpenabld 数字" 开启断点
9 S1 [7 P9 C9 {+ F; x"bpdisabld 数字" 关闭断点/ C/ i* }& \% N3 p
"bplist" 显示所有断点7 C. W5 m' p6 ]
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
3
查看全部评分
-
|