签到天数: 2050 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
2 b) P% S ? T
8 f/ \4 C5 I: a$ [8 h1 ](1)如何加载ROM
0 K$ _) C" \5 I) _9 h/ _1 y7 \: e, f4 T
先说说如何加载ROM吧
1 B3 g/ w; B! L# g* _5 ^- N2 p, |% A) K f
以MAME 0.148 DEBUG版为例:! y. O5 V2 h7 M" H- z
% X, @* N6 N; i% M8 @7 }1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
: s& [" z6 D- `; C9 m) k/ L5 S) m9 _0 `$ q+ ^$ m2 k: S6 K
注:MAME官网的MAME是命令行程式,没有GUI。
/ }& j5 {$ @& R- V& w& r
, N# h' |- A$ h# l( I0 {2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;4 t& R$ Z0 u* q' H% v% g+ l% [
3 m3 Z0 w$ L+ H- c) J- J
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
! _) g H: r/ q$ C3 b' P. }* n: I5 x, w
d:回车/ X3 A; T5 c' ^
( p+ Z( e. E" A# H/ tcd mame0148b_debug回车2 |9 j+ s# X/ {) j% T* }
$ w) b( r' r& h! G8 p) R
如图1:/ E. E& t: j6 t+ W+ e+ W
+ f( s5 d& h, U" q
0 @* I, o( j+ v) t1 K* S# N
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:0 f5 v' e; g1 D* u
2 u- B% u( p! P* q9 {
4 V4 M+ \9 {; d# i4 G) b2 ~$ R. l8 [ K/ {$ l( m
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
* F. A3 n+ q( t2 P0 ~
( n. {0 S1 H0 X' y7 J6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。. Q% w# Z6 o" l' ~+ K% l4 _
- y* p) ~1 j/ t# W5 V' o0 o* `
(2)如何呼出/隐藏调试窗口
$ a$ Z3 b# |$ I) v3 G# `+ h
0 j4 r3 w: V2 p: M/ K: I6 D1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
+ i; H; ]9 m# S" }+ f
. a: i( [2 Z. x9 h4 U7 H
6 k7 ]! V. e) M& e
" r" z0 P0 N5 L% l7 j+ o0 Z( ^7 V2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:/ z+ C0 @. g0 c/ o
2 B6 W) h' c1 k, x; i2 B
, ?. {( W# A c/ ^( Q% f- A3 U
. j* X0 {( T4 M/ g+ f5 F
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
% M/ _& C: y6 ]2 d. u* e
5 {( `5 R' b% o/ y. C(3)如何下读/写内存监视点以及程式地址断点
; f' P# Q% F5 z4 o$ [; |9 {( i
- C- ?0 c+ }2 \/ q先说说如何下读/写内存监视点吧3 r0 Q* i; A8 d7 [: K
2 ]4 [4 G" t; }) f( U监视点命令格式:wp <address>,<length>,<type>,<condition>
) u) `6 L, w- ^7 b% m- _' P3 b* z4 |/ D
<address>是地址8 f- E# ?# ^. \- A9 G
, Y( a1 a4 D4 Q T% H, Y2 y<length>是数据长度,长度必须用十六进制表示4 }# L8 d% v9 Z. [4 g: P
$ e' V. ?. a( O) X: s0 g- F, |6 s, x9 \<type>是监视点类型,r是读,w是写,rw是读写
5 D+ e3 G0 X& }- ?' Z4 Z
" v* Y7 [+ k, ?例子:
8 X& @/ O+ @' x3 Q( b5 `( C9 a- T @) W" b1 Z$ l) ?2 ^) F$ D
例如对ff8569地址下写监视点,数据长度是1个字节0 i) _ w9 k+ q, \
" `+ L: j& L: D. ^7 E7 F
wp ff8569,1,w# m: g7 m2 ~9 F' P
+ z. ~; ^9 G4 z7 j2 U, J: A2 ~, K例如对ff2235地址下读监视点,数据长度是2个字节5 v6 u) b7 t$ e7 U- g
# ~5 Z6 c( F; V7 j
wp ff2235,2,r3 J5 O2 \$ c6 s# \$ a
; z7 Z* H1 P, K
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
9 I! B' A f" c k( M5 |8 A4 b( _/ u& Z m7 ]
wp ff7533,1,w,wpdata == 0
, k2 e& W2 j3 _5 f* w m
" h% k1 M4 w; q- L! a. r8 J以龙王战士日版为例:
( V: d5 }$ t x! D4 L+ d0 o& {. `9 a
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:( i- V y- z' w, P, D
+ u5 t0 I* i6 a* D7 @; t$ i2 X. {$ {
- a) R S& E+ h7 M7 X( K ?, e; c! t1 C
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:% ` ~8 ?/ r/ J Z/ e4 O
, ~1 T/ p5 R, O0 t5 p* s
0 ]+ ?- q) q2 Q" ]% Y- W4 }, E$ y3 q$ S' y& @) W
接下来说说程式地址断点1 u& ]( b ?) W/ q. v/ N$ r
8 Z4 e6 v$ z% l0 W L$ h
命令格式:bp <address>
7 y) {7 B$ V. q! i. z5 y
: Y; Y# |8 d4 W3 ?2 \例如对000488汇编指令地址下断点
t) @' U$ b5 N" S# {
" E6 {' z; e) [/ Z4 r0 L/ w Obp 000488 m* o( x" o. F& u% [- ?8 o$ v
3 B% U6 O8 H$ g# g1 h9 z当程式执行到000488地址时就自动中断
- ]7 K/ V% r1 a8 A6 {5 Z H2 |+ s0 j3 K( q5 M# X
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看. M$ J2 Y2 f4 z2 `/ M9 w+ N* S
' d6 N+ N' K7 g: H6 b$ Z
有错误请指正。
A- j/ m" y- N" H5 z4 J4 _" Y$ Y. p* p l9 g4 u. n
补充一些命令:$ o! n6 i2 T3 q
5 I2 o) [$ S# Z) N, [
"wpclear" 清除所有监视点
. ]; S" o3 j9 s6 R% L5 n"wpenabld 数字" 开启监视点
0 k+ v! ^' k$ B) e"wpdisabld 数字" 关闭监视点
0 ~7 ]& u) n+ |' `+ n( X7 w( |"wplist" 显示所有监视点
5 K/ H5 Y* }% G9 J# C3 |9 ?: X
3 Y6 d: ^$ g$ F7 |6 Y$ B# ?"bpclear" 清除所有断点& t# C9 \$ i/ g5 O/ T0 ?
"bpenabld 数字" 开启断点
: M! m7 @8 y: A3 @"bpdisabld 数字" 关闭断点5 z/ }# |1 ~& _9 n0 p
"bplist" 显示所有断点
& D$ R7 o' W) ^8 s3 W R |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|