签到天数: 2074 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
5 h; s/ k9 r1 _6 h+ d( L
% V7 ^$ E/ J$ ]6 I5 E S(1)如何加载ROM# Y5 Q0 A0 W: V. L
( p) @; v1 v, }! G3 @
先说说如何加载ROM吧- R9 e7 f5 w' M4 M' R; ?
_/ _; X1 A9 X$ n
以MAME 0.148 DEBUG版为例:
/ c* B5 I% `/ D0 u) y
- g& w- @ t) N3 w" P1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html3 M* j, q" l; _3 c
, S) l. a+ ~+ g/ o% S7 I8 ^ l注:MAME官网的MAME是命令行程式,没有GUI。
\4 p) j, ^% I6 r0 E& `2 w% A! V6 D# W$ ]
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;+ r* W$ f3 C) ^. N/ F
( H u: y$ |0 {- O
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:; k9 r3 Y- u# [9 X7 R
& G! B; I9 k' C0 ud:回车
4 y7 _$ X2 a* \7 ]2 s: `4 L3 C5 r% t- e# w! s/ I
cd mame0148b_debug回车
( f9 X& f4 O, Z& y
8 c2 o, m; f5 }5 R如图1:
# p0 W) F' n: }) A3 A0 G/ a
: \- I4 `* X' |! a/ E0 `- U5 R& p S' W/ u; k9 c6 T
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
4 ~% P% d/ Q( V# I- J0 A5 V
( x3 E: a& t, [, A9 H/ h, _ X
; t& [5 W* O% L- `3 k4 v% z2 ]/ H. q# z- C, {
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;! ^0 O* G* |' o1 w% o# c/ Z: u
1 h ~: R0 ]1 ?% H0 i3 X ~
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。! [/ q; ?# E, Q0 c
) f# F% {" P) m* L% _7 _
(2)如何呼出/隐藏调试窗口
; e2 E y4 J5 F9 O
# e7 l& c9 K: Q7 w1 S- f& Q1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:2 G( O/ ?9 M$ N
9 E- H5 ~ _4 n0 A Y5 m' m D: F- K5 \' W+ G6 t
2 L4 q0 y, i5 w# y7 |# a2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:2 a: p# y, J, O8 j) ^9 V
, h+ B l" _% _. d% m
9 K: H! N8 ~* d
( \, m) M" i) P6 e# ~/ q! ^. x3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。: D' U% @# g& I( y3 W
. C: }! Y1 W4 N! t( G' m, w3 ](3)如何下读/写内存监视点以及程式地址断点
3 R2 ^+ y5 P& u4 J+ \; A
7 a8 \. i0 O D% x# J0 [1 _先说说如何下读/写内存监视点吧
: T& Z: W! z* C7 C" G
- t, y- S6 t) x$ i6 `! Q) P监视点命令格式:wp <address>,<length>,<type>,<condition>
% f Q3 v" N' ^: r p5 a( q* i8 L, W5 I2 d) M' P% V
<address>是地址: ]" d1 P4 [3 R
) H9 o; s3 ^7 O) ^* t
<length>是数据长度,长度必须用十六进制表示
3 {9 Y& H6 A: M5 Z
1 z7 {+ w( J) g$ i: M9 c<type>是监视点类型,r是读,w是写,rw是读写
% D8 E8 p# B1 C+ j1 I; `5 z% R: x. \
例子:
' M4 ` n' U0 q# q; M* [! F0 O' i W. Q
例如对ff8569地址下写监视点,数据长度是1个字节
6 Z, L$ T7 V7 i" L& {- [5 b2 C0 z6 n3 v! v& J# ?' x
wp ff8569,1,w
& R; N$ J6 J. J9 b: P" d3 r2 G/ W) v6 h
例如对ff2235地址下读监视点,数据长度是2个字节
/ F- u7 }0 h; b# Y: F% \
2 {& e, t6 i+ W4 y" b) s2 j' H3 y' Gwp ff2235,2,r& s! y; \. c0 L3 M; y+ ]" N+ u5 D: i
R, G% T- Y r例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断. J& j7 d* Q2 c: @3 V
) q. f2 V2 D5 V# Awp ff7533,1,w,wpdata == 0- z5 m- A" h% C2 N
" Y& |/ ^/ J. D! a) C0 |7 k以龙王战士日版为例:
) s6 v$ `9 n2 Z( z% i7 Y$ f
/ X$ O* L# d6 Q, \/ w I8 [1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:8 F+ S% [* l! }" m& D
* R/ ? [% `4 M( ]: N& {% ~" Q* s4 e* u5 } V
6 `, r% v" D# ^, z7 L1 b! P) v4 U/ K
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:$ `, k1 N: s7 p% X& M- z5 Y
6 D+ E; G/ D' @* l f6 W' S1 i$ W' I0 x( n4 f
+ T/ h: r! \/ D( h0 X2 l接下来说说程式地址断点2 _7 l, k$ \1 W3 u% a/ m, K) e
- u( P2 W, w1 ^& v. e命令格式:bp <address>- V+ W, C2 z+ s5 }. n
: B( M' D5 S P0 Y, z例如对000488汇编指令地址下断点
\# M& a7 j: _% z4 r
' i5 ~- C9 s0 u2 A2 ubp 000488
- e! Q& j' N$ Y4 ?) c" t! h7 V
+ x4 u6 z4 j# P! E4 ?$ z当程式执行到000488地址时就自动中断6 ?& j0 i B# a/ Y, t0 L) E- x3 @
2 B! @& ~4 N1 X更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
. ~# H3 @# A$ J! @5 |* X4 o0 C f( a+ c; g0 `1 T6 }9 B: Q
有错误请指正。1 `+ F. v( X/ y
1 M4 \6 d) Y ]$ E6 @" U" K
补充一些命令:
2 P0 m6 M# m! Y m9 ?7 l$ H0 u) T- V3 F' s9 W+ t% _. `% B. |+ ^
"wpclear" 清除所有监视点& }2 h: A- B7 q, }
"wpenabld 数字" 开启监视点7 S3 C" D. K/ l
"wpdisabld 数字" 关闭监视点1 H; S6 r. B- w$ a2 e
"wplist" 显示所有监视点
) ~4 d! {3 }7 z* }/ O& Y7 O- C2 }$ _" u8 w/ `
"bpclear" 清除所有断点
& Y5 A2 B2 k2 A"bpenabld 数字" 开启断点0 K% J. c) E {) k- z
"bpdisabld 数字" 关闭断点' [* `0 n- l3 C+ K3 @
"bplist" 显示所有断点
, L; E7 L( |1 {' P3 a6 r |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|