签到天数: 2034 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。; \6 U: w( j2 W7 x; W5 q: G' U
* V$ F; F0 {; C& q% A2 p9 c3 i
(1)如何加载ROM
" _/ a u. f- t2 S% E
y; r# A" K" K7 [ V/ K先说说如何加载ROM吧4 k, l4 l" e' M6 P; r
e8 }4 P1 A4 x( f* S9 ^4 M
以MAME 0.148 DEBUG版为例:7 A+ z& c. R7 c3 Q
- A' V; h: J" @' f1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
- \3 z6 M: R0 Z" J( p) K
8 |1 o4 {* A# k1 K% p. b注:MAME官网的MAME是命令行程式,没有GUI。5 X: ~$ |7 o! \0 F" k
4 V. w. X+ m: t
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
9 J' G9 s' m8 |* T/ x( ]$ b, L6 K; A9 o# P( B
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:2 ~' S9 Q& S- n J8 u5 m
4 w j% [9 `" ~+ {" M
d:回车
. Q( @5 T' O( n' D7 ?1 t5 b( }+ Z- S2 z/ C; n9 U% H8 O
cd mame0148b_debug回车: K4 ]( }9 C& f( ?
% n: L' ?( W" \& e
如图1:
6 q$ X; c% a, J( H! v5 g9 U$ f c( \8 `+ f8 v
4 j2 h' t2 ?3 R
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
9 x9 J* t- E G# W+ v- n+ X& G6 z; J$ D- w
) q" F( f4 i, z' C/ n2 l
5 G, H* ^- x2 |5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;4 H7 J+ D+ k% F
$ |7 S# g% u/ n" R! [6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
# `7 b2 G. D9 z; l
2 x3 m5 |; o# E k# N1 ^$ `(2)如何呼出/隐藏调试窗口
% Z5 t7 \2 t0 j7 _2 m7 n+ M9 e% ~6 I3 a; Q% B
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
( |0 y" u, {/ e5 A1 z+ }, L8 v0 I+ \* v& h
% D, q# s1 Y" Q# G; v
7 ^% H; D. }0 G; q
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:- }1 \8 S; l! F% p
9 ~ }$ D% q7 y" O6 X: U( r+ N2 k0 M% y& P8 V( d# v# H9 A
7 `' o- s/ h2 C1 j3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
1 d7 M5 w) o7 A, n+ e- ~$ H) a! A, Q/ K2 V
(3)如何下读/写内存监视点以及程式地址断点
0 S0 \. N: q7 f# z, z) N8 P! i
3 `( b5 x2 P# B5 M. [! L先说说如何下读/写内存监视点吧
# _7 P, U T; n9 J1 r, D, h
1 D# I' t8 k3 {8 h" A" h监视点命令格式:wp <address>,<length>,<type>,<condition>
# | Z* u3 x! d' Y3 Y7 ]
% ]# }* Q. Y) ^: B6 Z% B, @<address>是地址
7 \ S& s6 D+ A" i/ `* n+ H, |, C' w" |* O6 a
<length>是数据长度,长度必须用十六进制表示1 q% v, w5 d7 [) @. Z, l5 D& Z
+ W$ z6 a$ |0 m5 e+ ~9 @2 v2 ^8 J' E
<type>是监视点类型,r是读,w是写,rw是读写) k4 S8 _8 u1 J% a: l: L1 S) R
( L: i# C6 K9 a7 l
例子:1 ?! \% d' M( ]% `3 G) i" ?
. Y* \7 y" z$ R# v例如对ff8569地址下写监视点,数据长度是1个字节
* H% H) a d# b8 O& [( _1 N( [. l5 L: d' j; u
wp ff8569,1,w% T! R* M+ y% v
6 l( ^. T5 B' p# M, J
例如对ff2235地址下读监视点,数据长度是2个字节. u0 u! b* z' }' [$ q- e/ G' ` e
$ X. u; F7 x. S" w8 Rwp ff2235,2,r- z5 d! b: a3 c, w& ^, V
# o/ W+ r# t9 l/ g/ I例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
( E/ Z8 `* h$ B0 \* {; b
' w7 w" a0 ~/ c( g/ ]7 w) Y) m* A/ Vwp ff7533,1,w,wpdata == 0+ U5 R7 M& B# @) ~1 F1 M( l
4 X. r, n: q0 S& K: o* V3 i以龙王战士日版为例:
' t0 h* a/ G: o1 A9 A
, c+ T& o. L7 B. }) ^3 X6 S1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
4 S1 P4 t( I3 U: z& L! y8 U4 d6 v3 i% c7 W$ D5 k7 p
! |+ y+ S6 I5 w
* o; S: K" B2 S
& k9 Y2 x8 L6 {) Z. J) Z2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
% n, O) j; y/ e2 B
' R( J; J; w2 r ?( b1 Z5 C! M
' O4 ^+ j2 c. w: L8 [
x, W3 N7 E: @( y: _' N接下来说说程式地址断点
# o0 j* O5 d' @3 `4 u1 t
# G, \8 \' W: Y命令格式:bp <address>
- k' k6 K7 ?! H. t- T. L" p3 ~& W! P! F5 w; {- M ^9 ~# R7 A
例如对000488汇编指令地址下断点; K- c& L7 P( z
: Q/ t9 m/ j* G
bp 000488! d8 r0 w8 O5 `$ K: @
; p4 n2 W4 [) {7 I- G
当程式执行到000488地址时就自动中断
- u5 M) v+ A' L1 c( a. Q- c
! d1 Q6 K; t$ R4 @) h: g: L2 y更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看0 U" E/ f( l( r* X: j! ]
3 j. O) O5 ~- v0 f5 w: ~& }有错误请指正。. u1 X3 O/ ]. G
7 k6 A) i8 n/ d9 G2 \$ t% @6 D
补充一些命令:
3 h$ ]* F# k: n* X# S2 G* h7 g9 I0 A$ s e$ G5 m, T. k9 ^
"wpclear" 清除所有监视点) G$ A9 {. K4 s& i, n0 Q
"wpenabld 数字" 开启监视点
5 J0 B5 L! C7 c& G"wpdisabld 数字" 关闭监视点( D* b7 A; }8 l
"wplist" 显示所有监视点
; s6 T5 x" A! g& ^" C
' u. I; J7 f/ T! k"bpclear" 清除所有断点
& N. K, C6 B( z. `"bpenabld 数字" 开启断点! @# k% n% J6 ?# t1 ^
"bpdisabld 数字" 关闭断点
! X9 [0 t4 S" i( b3 N8 _( F/ h% V"bplist" 显示所有断点
& U& G6 G- l% {; @ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
3
查看全部评分
-
|