签到天数: 2201 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
3 e1 p3 Q$ t2 o1 n! s' J6 x) o$ d. a
(1)如何加载ROM# g- M1 G0 E3 L. N
7 [* C2 p \' Q" [9 Q% A
先说说如何加载ROM吧
4 K/ c& ?& E+ i9 c* V3 J7 O* x& G; D A) [9 K3 K! Z
以MAME 0.148 DEBUG版为例:, f: r/ _% h2 T! i/ w- |9 T2 O4 g
; G! ]! Z7 h" [% R4 r* l1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html( j! a7 y) P2 A* o/ C! G6 p
8 c+ y0 D$ w5 x( B6 u& V. ?7 t6 R
注:MAME官网的MAME是命令行程式,没有GUI。5 v+ V9 L* y7 T/ o7 l8 F" x/ B
7 N# A% \' s& g7 O9 v
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
* r$ ~; p/ `* Q2 \" G- J# g _1 _3 ?8 e1 W
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:% q2 T9 H) C8 t$ O' l
; l! O4 p1 k0 x8 v0 D3 o, vd:回车9 U6 k' Y7 M8 p
, `! i' \) s8 ~' w0 [6 Tcd mame0148b_debug回车& {) X' M4 D) t* S
0 c* W5 J4 ~7 @1 @ c0 S如图1:% o/ M0 h' n/ e
6 j$ A: ^" z% e. ]
% w0 I( s/ b) N/ T4 S
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:8 }6 t2 i, N. @; Q0 F
- T$ e2 M5 D8 a+ I9 @$ K6 F; ~5 e
: k' c+ Q& b/ R: L! I" W" E j$ b/ v0 D9 @: O1 H4 u5 C" I B& {
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;5 S# [; C" t+ P
, x G& w( ^% g1 T; S, Q
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。8 c. l9 m3 \2 l, X1 Z
$ M/ j0 q8 s0 I s2 \6 ]2 M(2)如何呼出/隐藏调试窗口8 j6 V2 p& ^$ w
5 A9 w9 S7 M/ y- {) L
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:2 G: z, I1 K' C0 g( B% a3 A X
( I H3 e' s! n8 J; [. Y$ F
; U# e* k) d0 o V( R6 J5 V0 ~
! {3 p, z. c" C. _2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:. Q4 k H6 H6 b) n6 J+ {6 }- b
7 O# j9 ?$ C* _/ p8 z' p2 u F3 I% ]0 I6 q. c; J! W/ E
# h% @4 ]( _% }6 d* c% A% l, g3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
- w# P) p& }! }: z4 b; }4 G7 G
* C+ W6 n( g. C) u(3)如何下读/写内存监视点以及程式地址断点
9 F. M( `& ]. M7 P
! `8 W- y; o6 O6 ]; q$ ] z4 ^先说说如何下读/写内存监视点吧
& t }2 }7 \( l+ m- I1 ~# P7 A% I
监视点命令格式:wp <address>,<length>,<type>,<condition># x: Z$ M2 w& D) {! C Y9 q7 u: h0 a
6 W* R! C: B- \7 |" S. F<address>是地址
4 e: X& N5 I* I4 B2 D1 T ]
/ o6 {' _2 p' d- C2 i9 o0 d<length>是数据长度,长度必须用十六进制表示# N$ Z; H8 o& ^. `
9 L& }; `' e2 t; j& q+ @, n; `
<type>是监视点类型,r是读,w是写,rw是读写
: B4 I7 \; n8 Z8 N6 `% G
4 b1 O. F: P3 x8 V: Q' {例子:
+ }9 q& ~ I) q* }5 E% y: `" ]4 @4 R: k2 Y% W }2 ]
例如对ff8569地址下写监视点,数据长度是1个字节7 F! M' A6 @+ C1 G
, M! X+ Z8 ^$ Gwp ff8569,1,w
2 g5 t8 U) Q2 d7 K4 K) M" N. a6 r5 W' w' C& {+ L9 f% M
例如对ff2235地址下读监视点,数据长度是2个字节& S4 _! ^; T0 P" f
5 k- x1 x4 r" a5 j& y" z' jwp ff2235,2,r
, r2 t, n! Q5 R8 e( Q8 T7 C, X
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
6 F( M, ]! c/ M8 F' [7 u$ o1 F$ |9 s f, P ]# Q
wp ff7533,1,w,wpdata == 05 Z. L! n$ z) v) W8 I- y% l) b
# O) Z4 Y( z! N以龙王战士日版为例:
1 N3 E& D& m: r
! a3 @- z8 _" ^/ F1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
. S( S# l& F) Q" B' K. I7 X
3 x" D' d5 p' ?0 C% O! U
! B$ `( a" f, d, P+ h3 T" K# W8 k3 J0 L
6 F$ U4 W$ A" C. W* m- V2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
. ]5 P) I$ I: j7 M# o9 N9 \6 G% V) P0 L' ]. B; L, ? j
0 W9 {# `, p8 N2 d/ E! T
8 \6 N5 }) m! m' A4 p- w
接下来说说程式地址断点
3 q) u3 e/ g( x' b t% ]$ ]2 D: G0 n% n( Y
命令格式:bp <address>: M" ~: s K: t% O
; X" w" X3 ^0 f8 f4 s4 ]
例如对000488汇编指令地址下断点' T w3 _5 I: ]$ {% K- a
$ Q" v" [2 y* w8 x) b/ n4 B
bp 000488 R& Y( l7 ]4 L
/ C5 B, e0 w& `1 L/ o% E) |
当程式执行到000488地址时就自动中断9 \/ ]' I( v9 q) e2 V
. N& D2 y; X8 e4 H# O# o0 b' _更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
: I! Y, x( }3 z
4 l- z, ^9 d4 Y5 b i; R. f有错误请指正。
/ Q4 i* H. G: k9 U
) Y# Z2 E' {/ @) |2 ~: g+ x6 @补充一些命令:, r: ~; G `2 n% W6 W0 \, s- R/ s
7 v! t% n- @8 z1 |' Z9 l+ A4 ?"wpclear" 清除所有监视点5 }2 v: y( ^0 I- D$ s
"wpenabld 数字" 开启监视点2 g4 m- `- E9 y. p
"wpdisabld 数字" 关闭监视点$ m1 G1 K9 p8 E' U& f7 E8 k
"wplist" 显示所有监视点
( l4 ]' I/ x$ w2 q8 y1 D- O% o2 Z4 _0 t! k$ V
"bpclear" 清除所有断点5 x M2 Y: K2 e* I
"bpenabld 数字" 开启断点7 j( h3 M. \) J" @- N- q) p$ p
"bpdisabld 数字" 关闭断点7 `# f5 {+ {$ K o2 n8 O
"bplist" 显示所有断点2 F) e9 y9 U/ v3 Y
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|