签到天数: 2156 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。# A: V! Y" T* i# m9 S- @
2 T0 l/ a; _3 h9 ?3 w0 Y3 `7 D
(1)如何加载ROM
* [, o% S i+ w6 A3 E
) L" N4 I7 n2 a# G先说说如何加载ROM吧2 B! N, ^' {9 e" q( `+ d% b# b
: |) S5 Q; Z4 Y# F& h以MAME 0.148 DEBUG版为例:7 e" l0 o3 ^% C5 K2 u( `& g. D8 D
/ j$ b+ b9 F+ C [1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html0 z5 \4 F) S& w' N _6 a* `
/ n% Q$ ~' W3 l4 y
注:MAME官网的MAME是命令行程式,没有GUI。1 C, l$ E0 R* X+ ?% O
+ `1 I; i# g* M8 x6 w$ z5 U
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;' p+ Z$ k( E2 \3 E: g
q/ I) R0 t! ?9 Q% g/ }) _3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:2 h1 C! J5 W) f+ u! ]* o) D
8 P2 J4 t& ?3 y+ R% n' ^/ k
d:回车
( |* [, z8 ~! u
& w* u, ^5 }- P% Ecd mame0148b_debug回车
/ q" g2 Y/ ?* |9 _, n2 A+ c- s4 Q0 W2 e$ R- R
如图1:1 |/ @ Q( ]# ^8 i5 h. O5 D
) u# ]% `4 X, E
; m/ U0 D6 M+ j4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:' ^& ~. T% E% B( _; f
7 P; ^; L: J, r& ]& s9 l4 C' E5 u* |; N; c& H% `0 c% G
/ D; S: p% c" f- d
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;" ]1 T$ d6 H* D
7 T5 i) q, P3 C: O
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
9 O4 W& c, a) b9 z4 O) s+ {3 T1 @4 c6 C8 e3 O
(2)如何呼出/隐藏调试窗口& p- J7 N8 @! i, b2 x; w6 A2 Q
% H. z: w) A+ l r6 m1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
* d. q0 [8 T2 c- N* r/ T* o4 P' X) a0 [% N V$ Q1 N b8 I5 W
! q/ ]8 g% t. x/ }+ R) p
" L8 m Q1 _! N- X; R' _8 d) h5 T, n
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
! ? a/ f9 n8 {" m& A- h' E$ y$ V% Y; w7 c1 K G
3 q3 j$ L7 B/ U" G' S1 h
* `; O* U0 w( ]+ g) \3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。7 T& j. q' b1 K" F; V
) ~ F& o. v0 c" O, x" Q2 A' U
(3)如何下读/写内存监视点以及程式地址断点
' E& u3 A# m1 U# U+ {+ T3 Y7 s J8 k% w5 x7 J( S% [
先说说如何下读/写内存监视点吧
' R2 s& u& E, t6 B8 ^, Y: |% A: o3 p; B
监视点命令格式:wp <address>,<length>,<type>,<condition>
1 B# a" P3 f1 E, ^, a
* r& u( `. C0 b1 X6 n! a' U<address>是地址 f# H9 ?2 H& p% K
- P5 E% d) b6 |; Z3 q
<length>是数据长度,长度必须用十六进制表示' U D& n- y w) N7 d0 x, p) i) ^
! S6 u! d4 T' G( ^2 _$ [1 \
<type>是监视点类型,r是读,w是写,rw是读写9 F/ k/ P8 P+ x. K. Z/ |( `' o8 ]
5 v8 J0 K* g4 A
例子:! A: H6 G8 T. u9 i1 [5 h ^
8 f6 F* U# `6 m4 R
例如对ff8569地址下写监视点,数据长度是1个字节
H0 o& `. g! U: w* c& e$ Q$ C1 _4 [$ x
wp ff8569,1,w- E) [; G4 r0 x; D6 ]
1 \' Y. K: O' |9 R$ n5 S4 k
例如对ff2235地址下读监视点,数据长度是2个字节( B) a6 l" N. O( f) m9 n& H
# J" g' J8 q' x( Owp ff2235,2,r
' K# Q( z7 \, e; {: K) S. |$ |9 I! J* ^0 {
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断. ]1 F( r4 g7 W: _/ w% O- E, i& a
6 X, h- \3 [) `" g3 ^wp ff7533,1,w,wpdata == 0
% E, J% M; K3 r4 C. g- r( O( g0 u* k n
以龙王战士日版为例:' y n2 ^0 W2 b4 {
# t" r8 f- P) z/ o# U' W
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:7 n" ~8 z+ c+ P
4 x8 b$ M+ B& ~! h$ A
7 C0 n3 u: Q" c( H/ I* ]
) M1 z) z7 o# V/ Z! ~+ h: n' n. Y
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
- q8 c7 X( }5 k; U2 u$ _& s' N3 o: s, j3 \
& V9 ~: z% u( f: |6 j" y
+ E' f# E$ J0 A1 k x- o
接下来说说程式地址断点
6 C I" N$ P* G8 G) y/ N9 L9 p" W1 G2 ]! k
命令格式:bp <address>1 r" l+ B, K+ W U' L3 q3 o( z
5 t1 Z$ ~+ ^) p例如对000488汇编指令地址下断点
; ]! J( A: Z, k- N& I0 V8 h8 p- n- a5 a. B4 e3 r+ @9 Y) S( A
bp 0004880 F6 o6 z q3 ^: s, J- F" ]3 q0 y
+ |9 ~3 r) T9 L! ~/ Q9 ` E
当程式执行到000488地址时就自动中断0 m% n4 f4 j! |+ ]1 c$ b
9 e) M* l6 i* k- Q: J更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看( w: i9 c, E; p/ z7 O
6 S( B% q0 L, p2 M t2 x( X$ P
有错误请指正。
) H2 w: S6 A" O4 k4 q" R) ?: _
- g( `4 `- I1 O: ?3 D补充一些命令:9 X: ?! T6 B, I$ @; m- |! r
. F' Z/ T/ s( v% K! S* `, c"wpclear" 清除所有监视点4 ], t; f( ]2 A3 ~$ N
"wpenabld 数字" 开启监视点+ e8 T: R! O. Q0 S
"wpdisabld 数字" 关闭监视点: z; k( j: v8 M
"wplist" 显示所有监视点
! ]$ R/ x8 B1 J8 V5 }* T. s* D
4 g" [1 k* R% k/ J' M, m"bpclear" 清除所有断点* s6 @9 b( L$ L$ J! B
"bpenabld 数字" 开启断点
$ _4 d$ U1 ~! Y0 F$ ]9 Y2 E/ k0 e"bpdisabld 数字" 关闭断点
& j4 G9 w( x! f8 c6 l& l"bplist" 显示所有断点3 g8 t6 x: o/ n: q8 X5 F
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|