签到天数: 2216 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
& O/ Y; a! Z) x8 O& K
5 m* T2 n3 r! h3 x2 `(1)如何加载ROM( A3 c; M' ?1 w5 t, H; x1 E
1 g( n; b) Y& n& y2 p# r _
先说说如何加载ROM吧
& {4 P5 Y; R4 A8 E) Z
E* i7 b; |: o2 F以MAME 0.148 DEBUG版为例:: T4 I% y+ X0 N6 R, R7 H
8 ]) E8 b* P. N' O- e3 l1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html; h" H3 W, `* H$ g0 U" Y
7 N" a! u& r2 b' w. I
注:MAME官网的MAME是命令行程式,没有GUI。) T- o0 t+ R0 I2 ^
" E! A% b/ ~1 A: y8 o4 Q2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;- u0 C1 g! f5 H. F$ M
" _! e+ I8 ^6 C A& R
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
" |! h3 [5 f- ?- H- o5 z4 K+ H6 o0 u! O% S6 [% x* y
d:回车
( B8 K1 ^+ [9 Y) s$ P% P
3 z0 L1 Y7 h8 H5 S6 }3 m3 P: |cd mame0148b_debug回车5 ~) F2 y' v `& h- }
) j' r3 x+ G* a9 z% {8 O2 S如图1:
0 X' C" S6 p4 g) Z
: y g, V& g% I+ m. ^* j3 n1 T* r2 ?$ F3 t- W# c2 b
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:9 ^9 e7 p- M5 F7 D4 r; ~
) S5 x1 s% O# i- S' G
+ _5 E' E8 C; \ g: L9 W8 B1 m) ~( e
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
" D% E8 H3 s1 {& e0 U9 z( s$ U
5 v0 s5 b ?) [" r6 k0 d$ c9 o6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
! m7 P$ _8 O, ^ d$ |, ]8 x7 x n
3 P" H6 {( y/ U1 ~2 R6 k(2)如何呼出/隐藏调试窗口
2 B. F% Y! x$ n) I9 x$ ]) W, X: y
5 H: `( x3 e' `' g2 `( k1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
1 V9 h( [. `3 R# N/ ]* ^5 H
( f4 ], S7 I* j( {8 s& u& f. k0 W" _; N
5 ]7 \7 {) a+ |6 |2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:0 b7 P; c* z7 y
' A* x5 g* ?( f( _7 q
# K8 D \8 n o6 j0 V0 c2 W6 m% f
- ?$ o5 m5 M1 z" m. m+ j3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
8 [' c7 j) P& J: r3 B$ ]# T- w# E+ I, y/ a
(3)如何下读/写内存监视点以及程式地址断点
% `+ o- R" d! p) E; w: [0 m4 I4 j6 K! F7 c. [2 t* z4 u2 v
先说说如何下读/写内存监视点吧! y$ H( U2 R9 U# z# _* i" {
9 V" z$ t( h7 u4 C
监视点命令格式:wp <address>,<length>,<type>,<condition>9 Y0 ^! p# Z) X8 h% F% T' d* \
0 C3 W& N5 B/ q! o4 m' O. T! q1 t
<address>是地址1 O3 o, W$ V# ^0 S
" ^, p5 D3 [7 R<length>是数据长度,长度必须用十六进制表示6 i1 u, g. u1 o* Q8 S
& [3 j4 H8 j! U, j<type>是监视点类型,r是读,w是写,rw是读写
* R: I8 o$ N% q+ i9 H* `, t, \% G" Z$ ^' U
例子:
5 a7 @1 E* V0 R* c" N: g# V5 I2 X$ O& c9 K: w2 \ h, i
例如对ff8569地址下写监视点,数据长度是1个字节2 c5 Z. j( G) H1 R" c# M" x. s
8 X- D8 x7 F$ D" M8 V" p# i
wp ff8569,1,w( u, M' P$ P1 S" B& g
' u6 @* f6 ~7 f- K, ]7 k5 i% O例如对ff2235地址下读监视点,数据长度是2个字节
: c- p) Q/ @7 S3 s( |/ Z O# @# \) `
wp ff2235,2,r
8 y7 u, c( T, O! N) F* {
% ^2 ?7 k8 M2 ~例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
) }% p% |4 E0 c- P5 R9 {: c' q" W8 e; q8 P1 t6 B. X
wp ff7533,1,w,wpdata == 0 C; j0 t O: V+ O( j5 R
j! U" x5 x: R" X# V2 [
以龙王战士日版为例:
7 ]5 [# U$ y- m/ M) p: \. V/ p1 l& k- V
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
7 H* M9 k) O+ a1 R; b
) Z. j, L6 S9 _5 V/ V! m9 \2 G' w8 ~! ?5 l4 w
1 h2 `* S8 u% {9 u+ w# U9 \8 ^
: v4 V! m$ Z0 Z2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:+ i) h% k5 k2 ^
8 u7 Q) P. ~$ O: Z
: _2 \. G5 A* V5 n3 @8 S) h
$ B! N* }5 ]; I6 v) H- f1 g; s接下来说说程式地址断点/ Y# ?4 B1 B2 Z8 ?* k# R# q9 Z8 g
( |0 t2 R _ j% |% I
命令格式:bp <address>
/ b' I" y$ Z: f
& b5 K5 P/ W+ z, L, M/ v例如对000488汇编指令地址下断点( F& T. h# g3 [ P0 y% C7 i
4 V: y' x6 k. Pbp 000488: M7 z0 P ?" o% g- _
, m: S, H; @. c! a: \9 ]
当程式执行到000488地址时就自动中断0 G n! M# ]( x
% Q$ v; S7 d7 L7 c7 P更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
/ L9 w# e2 E, l; e' M+ |2 @1 q. e1 b; b& E2 \/ s; g' o; A
有错误请指正。
, v0 ^& s- l9 _8 \3 D& O
+ ^% a: Y; U& ], m补充一些命令:. F, U2 K; X0 p, U. [/ U
2 C5 ^% ?" S4 w' `: z"wpclear" 清除所有监视点
1 L3 c8 d0 B$ F K"wpenabld 数字" 开启监视点! d/ W, G: e3 F" \
"wpdisabld 数字" 关闭监视点
( p& H6 @% s" j; m"wplist" 显示所有监视点
0 ]% Z! S" i. S, e1 ?/ A# ?: T+ r& u0 @) f* n- ^7 p( {
"bpclear" 清除所有断点
) ?: y9 @# v* u! u"bpenabld 数字" 开启断点7 p8 V3 j) J, i
"bpdisabld 数字" 关闭断点: l% A& h: W% a8 t4 }
"bplist" 显示所有断点5 r& e6 j; l& s+ D
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|