签到天数: 2201 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
; r% F [5 M* w& T6 t: i* s1 ^( m6 t/ f* M7 D
(1)如何加载ROM
1 ~" P* D& X' ^. h) \/ f+ L9 k g: h
5 k3 z# C5 {4 r, X) H' m, v先说说如何加载ROM吧
5 o- |4 S L7 X7 f
' L5 M+ j+ S6 t6 ?. s. T% b+ u以MAME 0.148 DEBUG版为例:' w$ \8 U6 d+ Z
& }# g" j7 n. U4 r; h
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html, z" j' B7 K* O0 e# ^7 |
6 t6 O8 \5 g/ j& L+ F注:MAME官网的MAME是命令行程式,没有GUI。" ^: k7 g7 ?% h# _# \) D. [
$ {0 i+ {% r6 o% j) ~2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;+ F1 a& p6 L. X: U
/ e+ K. S% Y; v2 m3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:, o. }. A1 C2 T3 H# E0 g3 F
' c8 {9 s9 C5 y0 K# n1 X2 b
d:回车3 C W: [6 E" m M1 E5 ]0 A
% J9 a1 ~& W7 x( b. Wcd mame0148b_debug回车3 a G2 i7 B) [- _/ U. s0 x W
( u9 L3 ^( b$ f6 ]2 B如图1:
& X6 g, ~9 w" H; v# E& a o/ ^( [+ I# j! h
- ~6 h3 X5 Z3 z6 I
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
% |5 W* t: }" g+ B, i1 {# A. h, Z4 B$ H
1 M8 W, e S! B: y/ P
7 @* u) [& n6 d$ X7 u' L
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;( a. l, i0 @! H* C
6 d/ e2 @; y- G8 V6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
- d$ ^; d. l2 [% x0 b; D% M& p$ G1 R% H8 c2 h& Z$ s' {: p3 u n
(2)如何呼出/隐藏调试窗口6 A! R d' D1 d' B) z. i
@% ~" z6 Y4 M; \
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3: D+ ?, q8 m/ ?/ o% `8 ?2 j
! m& c$ w1 B. {
W3 T7 w( z9 }$ q7 E7 _0 n
- ?" R7 P! p6 O& O' K2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:! C2 v4 X$ z! W1 z- U* I5 a
! v9 x/ r; h& {* j9 [0 w
1 @ s9 A+ g( z; C6 X
0 O; t4 O2 B& C& u0 N" m, j4 h
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。+ F$ Y6 E6 i+ U7 D
. w) B+ y# {2 }$ ]/ T6 O$ B1 Y
(3)如何下读/写内存监视点以及程式地址断点, q7 A+ }! Z+ m7 \ M; _
1 F% }) h9 R: }先说说如何下读/写内存监视点吧( }: ]; Y2 O9 I* r5 g
' U2 {2 r' ]1 R0 T( {监视点命令格式:wp <address>,<length>,<type>,<condition>
& c5 x# M$ R; m, A1 r
! i& @& k" `, z8 [7 x7 H<address>是地址2 O# c- E8 q( s0 X
& a3 a1 J, O) S/ w8 w
<length>是数据长度,长度必须用十六进制表示9 |. b- x1 `# J. U7 T, V: p. g0 O0 B
, F, u3 }- ]6 P# w, i+ x+ N# b<type>是监视点类型,r是读,w是写,rw是读写% L! Y, ^' f3 g- a0 }3 v+ f# N
3 e* w: T6 N) S
例子:. E' w4 ~. r5 F/ I3 f$ |, W
0 ~* T$ G% J! w" R7 P- v例如对ff8569地址下写监视点,数据长度是1个字节. j& _$ ^4 [7 r1 k- J2 A
* U& Z$ ]3 H, j+ Z9 b( pwp ff8569,1,w9 @+ j3 ^, q( \9 |7 r" u/ p$ @5 C
& n; ~! o( _; D( p- d# g" v- l% j
例如对ff2235地址下读监视点,数据长度是2个字节
" c3 _$ [7 h4 b& Z# M5 d
" I0 ^/ N, r! s+ mwp ff2235,2,r$ f' C- L" E/ Z
* S( \' ]' Y2 {. c
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
) j: o. H, a/ h7 c* m! m- R
# s/ v% _3 [% D4 ~7 ^ {wp ff7533,1,w,wpdata == 0
" |- k. Y) x0 Q9 o; |3 t: [0 Z1 D) q" O) l6 x7 J+ o
以龙王战士日版为例:, v" N; }, c3 H
4 k" C" S+ r+ [8 O& r
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:* `3 b# f1 ?: A( O
, a0 G9 L2 ^2 T4 }6 F% o J4 v# U' w9 p1 d+ I4 j
( O# }- a3 b2 o8 `6 z4 ]7 d
+ T7 y2 G0 }% |* a
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
2 W5 p6 o( F: M* f, M" i& W% `1 x* U/ |7 ^' P5 [
: ~ [) U7 {( @: a* S" {
; W$ b0 h1 N9 j( M接下来说说程式地址断点5 }- f ~4 a8 x$ I
7 k8 U5 l& X" h, E/ D* Y+ x# n; B命令格式:bp <address>
c9 W: F8 F$ d- }' `' A4 P; \2 D; }: g% D5 ?
例如对000488汇编指令地址下断点( X. b9 N. H% o* a/ y
7 G' N) O/ e0 e3 D; J/ H0 M
bp 000488 t% x l `$ W' ^
0 ?) Q5 C; ~6 i
当程式执行到000488地址时就自动中断
; p$ ~+ X. ]* A1 E3 k2 H
4 N! W' Y- V$ B; j6 g) }' m更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
0 X3 `$ [1 w0 U/ A2 ^) l$ Q7 I3 K- E+ D( I& h' J
有错误请指正。
6 C7 }2 h( C+ u$ g$ N0 x( D/ N7 \* b T ?: x9 @! M
补充一些命令:
) _& v5 l+ P2 Z2 S5 X+ l) B P' [& c9 C7 I. b$ o7 G/ l- h
"wpclear" 清除所有监视点
* |/ X2 j/ w, Q"wpenabld 数字" 开启监视点
" H) F8 W% m6 M6 n"wpdisabld 数字" 关闭监视点
- p/ g, {& ?& A) p$ f( o+ ?# I/ Y"wplist" 显示所有监视点
! d6 ]" c+ X' F+ [ W5 ^' ?8 y6 |4 h0 j6 n. o9 e2 C
"bpclear" 清除所有断点
* p, s0 C& p( y; j2 X, L2 H"bpenabld 数字" 开启断点' Y& Z6 @5 i! j/ Z* J- \7 B* ]! M
"bpdisabld 数字" 关闭断点8 g/ K" l6 o. q( @8 Y9 x# s
"bplist" 显示所有断点
: y8 U- w! O3 x0 @ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|