签到天数: 2032 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。; p6 s: l9 V" d2 N
7 A; O4 I# d5 K* a
(1)如何加载ROM) Z3 x( D, L: k3 N1 g
. T- X7 \2 [5 S! C& B# a! J9 @
先说说如何加载ROM吧
& H- B* `6 h' B7 k; A
) F& {' `7 [9 w9 Y/ p' A以MAME 0.148 DEBUG版为例:2 z* U' {0 @% h
+ U- m b# d! {; S* O+ m! v; E' i1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html8 W5 D3 O! W2 Q8 W6 J6 G+ F( z$ A4 w
n4 C' `2 k: l6 E5 k/ Q
注:MAME官网的MAME是命令行程式,没有GUI。, ^: L0 v' |# P' \' H( z6 M
9 ^4 A9 U1 U, C& x# e# f$ N, h* E; q
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;9 I& O( G8 v( K4 h) o4 I
' t2 X9 k, Z0 |2 o/ M# R3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
6 q" ?' C; m s. H0 T$ _3 x+ _' p
d:回车
4 s. i$ z, G- @9 H. J& q$ t' u; r
8 T8 E4 V& h# F) k. _* j6 Xcd mame0148b_debug回车' ]) w+ |4 B/ e# h4 s$ W7 v5 R
+ n2 ^; {6 _: c9 I' e如图1:
% @% F! Q9 Z( `4 J" n' R' u& f- t& B) ]6 j* M; }1 ^* i) D
5 w. Y# N! G; a0 v) ?2 G4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
, }, X0 X5 `5 P8 c7 ?! }1 {# V2 l: K- M7 U
+ ~' |; B% v6 r2 z& z/ X
U! x/ H" p( T; L$ @ Y" v5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;5 T, P/ B$ Z+ a, [
1 _1 @2 ~8 J2 s) q: l6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
# ? p0 J; i' t& \% \; C) B1 m1 j
' f) d( g. l6 S R" L9 }(2)如何呼出/隐藏调试窗口
; h' ^8 y. G% Q( w& x. ]3 `* \" g6 v7 A5 Q' t
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:5 a1 b7 [: e- L" e; |2 ?
# h: i. V1 |; h: q! S
: S8 X5 k% ?/ W7 {7 g( [3 z- ]: K- `1 C$ {. U
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:1 Y; C5 E8 P0 q# F+ `
! |7 Q& Q" c `* `- W/ N1 q$ C
- z% V m7 C# e/ z4 d. `1 U* }3 }3 q) q
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。# X4 Z. T! s( x: _, P! R8 [
2 u; l4 f1 T5 s( D8 g% n(3)如何下读/写内存监视点以及程式地址断点. Q/ H( L+ ?; n! N
2 e s. N" n9 t7 e9 f, o" |* Q- r先说说如何下读/写内存监视点吧5 M3 E1 T' _! B+ X; [
+ I0 {; V" G) E [+ g" b) P7 t6 ?7 R
监视点命令格式:wp <address>,<length>,<type>,<condition>- i5 ~5 @/ P0 s
8 G# S* j( e( _+ p; n5 R<address>是地址
( B- q0 I- ^" a
% ~+ v$ q; h, P s5 }<length>是数据长度,长度必须用十六进制表示
0 \/ S% g3 y# r% z: O! Y/ w# t( R% L) d' c, P
<type>是监视点类型,r是读,w是写,rw是读写
& K# I* @6 _1 \
) g3 G1 \% I7 J4 N8 L例子:
* F( @8 y% a7 e( a. Q; |5 j. X* i/ L
例如对ff8569地址下写监视点,数据长度是1个字节8 o# `# z/ w) p$ b
3 c X7 S4 D- E/ w) v# t: Wwp ff8569,1,w
+ L2 P5 F- }2 X; \: o& q8 S+ q7 U; T3 m5 W8 H8 A/ n
例如对ff2235地址下读监视点,数据长度是2个字节3 g7 M3 n2 q! ?) Q+ m4 ^2 ?4 h3 W
& r( l# K5 L/ t* \9 }
wp ff2235,2,r% G9 C: B8 R, C# X& q0 g
8 D" o8 P$ T4 j6 D, U6 P4 U4 R/ y! O% y例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断, P/ P* h# B K* C8 T" n+ D
* G- ?0 J3 K+ g1 n( ~
wp ff7533,1,w,wpdata == 0' d1 f, ?3 H9 o3 s
8 c4 t$ O2 i4 k% {; g以龙王战士日版为例:& g; [- D/ o( F F" L8 y3 N
2 H; N x# E8 g
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:+ B( q: S( L. D6 P
, ~* v ~+ q0 h3 R
6 @0 x' b7 i8 P2 T9 }3 E
% y# R1 O# T3 C! B8 n
8 }' }' i) d7 j' x$ u
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:% _ @ D' G' q- B
" e" I2 n" K& |) z
* n9 v! |2 P5 f0 x1 n; |1 Y
. q1 w8 f8 M+ N4 g9 ~接下来说说程式地址断点% |$ C z* X2 J U+ Z
. C8 \, _( x5 q7 j! w命令格式:bp <address>3 o: a- r/ [& U4 k
4 ^, ^7 @8 V, p- U* Y/ E2 }7 ~
例如对000488汇编指令地址下断点8 u2 t2 x; J( j
u5 Y( @2 }. i! k1 t
bp 000488& `5 Z* x* ~7 v! q
% ^9 l! a4 M7 {; H) V当程式执行到000488地址时就自动中断
3 G; a6 p. l' z: |/ x% f; K
2 \& S' |9 D- _1 H9 b$ A更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
* ~2 {' T; q9 q& w, r6 n |# X! T
c/ Q& }. S7 R6 T: ^有错误请指正。
. c) I) `$ } g1 A0 S( A
& y6 w. G5 U" v5 W补充一些命令:# t1 G( l, T! k4 A6 S/ o% O T% O
q E/ w' A) n& i& s"wpclear" 清除所有监视点
, v+ a- i- a" j& W"wpenabld 数字" 开启监视点) u( ?% G# C- b0 B2 T
"wpdisabld 数字" 关闭监视点
, t: \: w& o- c"wplist" 显示所有监视点4 ~5 ?6 C' j$ g3 d* `3 f0 a' V
3 k( D* Y' x9 E: Q! \6 c5 G
"bpclear" 清除所有断点
! E- \* l! K8 F$ t8 [/ o$ S"bpenabld 数字" 开启断点
9 ~. K* B" K5 K" U7 R$ _% t' ^( f"bpdisabld 数字" 关闭断点
) y7 j8 T- R; T! f; y" T/ C"bplist" 显示所有断点( B J9 b6 H, [: o8 }
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
3
查看全部评分
-
|