签到天数: 2154 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。' G& W- v5 h ?0 P" y* m+ x
8 y! m' n* C. a' e- e5 d, G' @7 U
(1)如何加载ROM
. D5 K. b9 N+ l$ b& p! k. O: ~7 \) @" ^
先说说如何加载ROM吧, _) T. \8 J# d- |
4 L. Y# f" Q% I5 P) W$ |/ J
以MAME 0.148 DEBUG版为例:
8 O5 p6 \) R' i
3 a( ^' ~% C" }) r" P7 A1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html$ N7 k) F [ T6 N' X0 R
7 B& E% t# R ]8 ?5 }& }, [! z
注:MAME官网的MAME是命令行程式,没有GUI。/ l" g% ]4 r9 E: K; i
5 U8 e) T. u% ~$ @' t
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;1 w9 S5 Y/ }) e0 c/ s- ~$ d* z
8 M7 O* J" g; D, g0 D* n
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
9 O) [) A( v+ c2 U/ N6 m5 F( P, e& o% }
d:回车
6 r, r# X; L3 ]5 i% V; [) g" A; Z. A
cd mame0148b_debug回车
( h8 X/ y9 |6 p, I1 c0 q0 ~+ J, h
5 t2 i$ ]# Z8 J如图1:* X$ B3 _) H! E4 Z7 [, p9 a
3 D$ F: K4 A. U/ h
3 |) C) Z) y: o7 K" t" U
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
$ G+ h9 v1 R( Q6 v$ q5 `1 g
7 o" Y6 m0 `( Q. }! K
5 n$ [6 G: q- h( S- ~- O3 p6 H9 [+ Y- i2 w" b
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
6 ?7 V: a5 |4 U3 Y3 u% p5 O
, a5 s/ W0 G0 s6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
& A& N) D) ?, h ^2 J) D' R7 C8 R2 t5 f7 v, r; F
(2)如何呼出/隐藏调试窗口
4 e" u4 H- d+ S$ ~8 q0 r1 g( S7 P- U3 H
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
, c5 c g( j" a$ _
4 ~. p+ Y+ U) w& m9 k F7 U; X% X) o; f! v* s, w
3 ~! q* v" L( e
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
, E' w/ j9 ?2 F
/ [! K8 i) H- I' h4 `8 r ]7 {5 z2 a! g
# z3 n9 X1 l& a, H3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
6 ]! ?2 X# R# `/ M' |% l1 [; z7 `; P
(3)如何下读/写内存监视点以及程式地址断点
! i# x" @# e; k, _, o) b/ X) l! P
先说说如何下读/写内存监视点吧
3 Q& F9 |& ?* f; q. r, \' M% s0 v9 L( D6 C, y
监视点命令格式:wp <address>,<length>,<type>,<condition>% _2 ?5 i* o7 y7 d3 j, _
! m1 U/ m+ Y; b1 y
<address>是地址
' L9 T! I% X$ T" a$ ?
. |, J1 m( h: j8 k9 M3 H<length>是数据长度,长度必须用十六进制表示
4 U r( l G9 F" T2 T
9 ^: Z7 z9 Q' L/ M9 v<type>是监视点类型,r是读,w是写,rw是读写7 c9 N C1 R. p; ~4 P
3 l2 f! J6 D/ n& R6 t: i例子:
+ _" E6 d8 V. q, s; Z6 E
0 J/ b4 n& \7 ~% w* J7 E例如对ff8569地址下写监视点,数据长度是1个字节
, t$ v1 q4 r5 U& w! V9 s3 L, B( w+ f# s$ G/ w' e2 S
wp ff8569,1,w" V2 j; a0 y# b# w, {+ x4 n
6 b# H. Q7 U% f( M( ]$ P9 u; b例如对ff2235地址下读监视点,数据长度是2个字节. T6 g I) r- h: A; Z
% p3 K+ h- ~0 C. d* {wp ff2235,2,r
4 Z1 U( c# V& r" Y! H! \# a# e( v4 \7 {# S7 ?* R8 y
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
# n: h2 Y, b- D5 p5 o1 i
# Q0 \6 K4 G) R. v5 lwp ff7533,1,w,wpdata == 09 ^) r7 n+ p6 t. Q4 \8 r
7 O' n/ E9 m5 ^0 K0 T
以龙王战士日版为例:
5 `' A4 C7 c1 L; S( v. W! k% O7 W9 B2 \/ c& U+ f7 z
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:: V! O, |$ q- S1 }: A6 E8 A7 A
2 C. ?9 W8 v& Y' y9 Z* x
) t4 C0 E* q+ d
% k5 q* B& U9 h
; r) d g9 K) u! r& V: K0 P: C2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:5 q; Z) ^* U+ O( {; K
T* C2 M3 m: d6 }# u' V
( V$ ]+ \) U8 G5 A+ Z, s$ A7 e
# o7 V+ C9 D5 m$ k( `接下来说说程式地址断点
( q$ s# p3 p4 W4 O+ n/ _6 H# a1 I2 E
命令格式:bp <address> l) O; M- L6 D$ h) v" U$ Y+ p
0 `& u$ Z% }& D! m \. x例如对000488汇编指令地址下断点
. ?6 U: x7 _, L0 X# J. E8 O% l, n2 \
bp 000488
, L% Q0 ?( b2 G/ T
5 v7 W5 o% m& s9 _+ [* e, g' J当程式执行到000488地址时就自动中断- k( W& U* t: }) v E8 G
' n) e- Z! I- M, s! F
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看6 j! k9 D7 `; z5 b0 ^
% m9 [1 C5 l7 f: o有错误请指正。
* _& t2 }8 K' U- o( B5 W3 m% {2 {+ c! N i
补充一些命令:
B3 p7 b7 G% v* S
4 F( c0 H3 }- q5 ^$ l: g& N: Z; _"wpclear" 清除所有监视点( m) U7 r2 t- V6 D. ?# _
"wpenabld 数字" 开启监视点- {7 m( n& F. D* V8 c; N; a
"wpdisabld 数字" 关闭监视点. Z- r. \- `$ R8 F3 e9 L
"wplist" 显示所有监视点
8 H `) d' E" X8 q$ L. o7 d/ H) S5 @9 m( i: F
"bpclear" 清除所有断点( t4 ]' v, M% w- N" `% ]2 b
"bpenabld 数字" 开启断点/ R8 s4 o: y! G+ }0 N
"bpdisabld 数字" 关闭断点
. N0 h2 Z- r* R, _"bplist" 显示所有断点1 C5 n/ r1 f! R! l
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|