签到天数: 2162 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
3 {4 Z" E! \! h- e* u9 Q# H4 m9 d. C% ], }
(1)如何加载ROM
! N2 F) V9 e( |& p( ~. [! K! {- V- V, ?7 h( r
先说说如何加载ROM吧# Z) v. v/ D) c L4 Z/ ?0 f* W, i
' ~! @# Q g8 R7 b, r6 m# d- [
以MAME 0.148 DEBUG版为例:% R& b* U5 I6 r! d
# _ Y0 d$ L8 v) \( Z" L) N) T1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html2 a3 w8 Q" C* M
2 N& @( H% g& U注:MAME官网的MAME是命令行程式,没有GUI。) g* ?/ ^: P5 D8 F
6 j7 u5 K. o1 j$ i/ e2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;6 ]1 I5 E8 h! S' k3 m/ g
9 \( T8 [+ ^. Q% s$ X
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
0 a6 o* f" h8 N7 K2 X. ^0 Q- f8 L6 r5 a* T- Z
d:回车' p8 l" L! l& m: ?) F9 ~
n @* w5 u% z7 X! `1 {( ^
cd mame0148b_debug回车1 m+ w6 v! |* L, P/ C
' s9 P6 {. H) C, y+ x如图1:; T( }0 I3 f5 S: o
8 f, M+ I0 R# V5 J0 @ K& A/ n$ G8 X/ s! D f# ]" u. z
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:) w) N3 z' k* d0 p! t. h8 k" j
- K, A4 U5 X* {, m/ ~" g+ J
1 o6 @0 Z7 j4 ^7 d: p- T, }1 d$ U7 J7 b3 f) d; n. |
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;7 M$ \" |2 _! ]+ J" O* m
8 q1 t3 R( S! y6 l' X# p& n1 [6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。) L- E( s- ?" t! T: I5 p) V
3 B2 V0 c5 ?* `: c0 e
(2)如何呼出/隐藏调试窗口2 E0 w* b- y, ~7 k8 M0 N9 M
6 a7 W- \8 Z( M9 d- z
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:0 a9 @* K8 H, T9 y. R. S: _
- t4 I" K- y2 U8 i0 F8 o8 V
4 }( C: v+ O, m7 H
, v/ G5 @/ ^, B/ T1 i# b. G2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
! R' ]4 I/ B' P) Y8 n0 F% j
9 w/ N. J0 V" O" ?# _0 q' ]& F: k) [7 ^, d2 M( S, O8 }
9 v% c! W$ W% K% W: h/ B, q2 [8 b
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。9 v2 P5 M; H- b7 ?# l. {
" a" Z A) H5 c
(3)如何下读/写内存监视点以及程式地址断点
" X; n4 n- t8 F, g) ]' b3 [, Q& o$ ^9 l, Q9 d- I
先说说如何下读/写内存监视点吧
: ~( U3 r* F x# v
8 X$ Q8 Y: I; z) V监视点命令格式:wp <address>,<length>,<type>,<condition>
* a, o; i% g: C5 s5 E& I1 ]! p4 S5 z+ O$ S$ T+ S! h/ H
<address>是地址
5 @9 w3 m# f# M/ ^1 i# }1 d; P$ y' F/ ^2 n! [1 D$ O
<length>是数据长度,长度必须用十六进制表示
& r% i, N& Q4 x: T6 @2 N, D) A- [2 ?" ^2 U
<type>是监视点类型,r是读,w是写,rw是读写
# ?& C, s2 N6 [/ u0 q# v6 u' ?' _; ~6 Z& @/ D$ i1 [
例子:) h- `7 _5 d% j( V- E7 l
7 i' s! b5 P) [8 F
例如对ff8569地址下写监视点,数据长度是1个字节9 J' _. h5 [, p. L! {
% l- Z3 x: n! v% v
wp ff8569,1,w! ] G! V- K& S
+ I; B! v$ R* |! |- B例如对ff2235地址下读监视点,数据长度是2个字节
+ }! Q9 [( o8 d/ W5 E$ _" d
9 v/ {, G8 f8 p- m1 f( twp ff2235,2,r% n# X# e# E; G$ R7 ^/ Y
% e# n$ U4 w8 r4 k9 Q
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断9 D4 Z# {4 B4 z! u
7 h1 u1 u$ S) }" G: ^; O
wp ff7533,1,w,wpdata == 0# d/ z$ _9 w! R" v2 ~) p) t
" {2 t9 T& D: {
以龙王战士日版为例:; }; ?, d4 K) `
/ Z/ r; S& X0 n. \% r0 _
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
T$ g) ^, U9 x7 e% D( P4 t6 J, M! Z# C7 m4 i
) h& r3 c% C. f+ ?
8 ^% @& T+ ]8 c2 C# S+ X5 }9 ]+ K. J
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
% Y ?, J) I! Q+ ^ O1 ?5 u2 z. B" Z5 A
; @/ Z* @1 J6 P! H, v
4 k0 W1 ]. {' r. p9 N
接下来说说程式地址断点
$ ~- e7 Y6 d: K, K( b2 D6 r( v( C
4 b: j. U# M' b- t" Q/ p命令格式:bp <address>
! F7 c( J9 {8 z: J
# b7 ~/ R$ x+ n9 n/ x: l/ v% d例如对000488汇编指令地址下断点
) D# S5 X7 j- `8 B j8 F; Y3 q- u6 T0 @3 v
bp 000488+ r9 J6 _5 b% @" d3 V
7 O0 a+ |# N9 M# A( {4 E' {
当程式执行到000488地址时就自动中断& [8 I! N5 Z& h2 G$ F) L7 B* z
9 t9 h- y) J) g0 O4 g0 q更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看3 j, g9 Y R3 y3 e* a, h
$ f6 G, _' ^+ Z! [0 u- G/ U
有错误请指正。6 S3 {% d9 }9 B
5 [- n5 T& ~2 ]/ c( E
补充一些命令:& z* Q* L [& L" T* q
. u, N) T' j+ c7 y/ R/ f
"wpclear" 清除所有监视点: v p1 z* m; X
"wpenabld 数字" 开启监视点
/ w. r' k9 C' `"wpdisabld 数字" 关闭监视点! j6 O- ]. I/ B0 k
"wplist" 显示所有监视点
2 o7 L7 ~9 z# X- ?4 F. f1 x4 Q7 o
7 s ~' h" `, i% c( ~: c( ^"bpclear" 清除所有断点8 ]4 f3 M1 l+ e S/ k1 }* i4 x3 j
"bpenabld 数字" 开启断点
1 [' D5 E9 C( L) ^3 d: {"bpdisabld 数字" 关闭断点
- X# @% h( n3 j/ f- d"bplist" 显示所有断点
4 k# D0 U8 S$ z6 w! K( F) l7 c* z |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|