签到天数: 1999 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。) S$ ^! J" `# X; e9 r/ v: Y
4 Z% T, }4 d4 J(1)如何加载ROM
: {# o( j) A9 z1 [3 [3 B3 F6 F7 e1 a
先说说如何加载ROM吧
/ G6 A3 } |$ h- ~( w. h, x2 ^
8 _; D# F, [/ y- m- q' U以MAME 0.148 DEBUG版为例:! C) O( W- Q& e0 a- P: u0 B
; s+ q0 R, ^" |5 x* E( ~# T1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
" z' N) |2 d( {% h
' P0 R9 V5 S2 e/ @) p8 C# v) C注:MAME官网的MAME是命令行程式,没有GUI。
6 v2 ^4 n. E9 o7 Z
& ?* P+ T C, r g5 S- X1 y2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;+ m# [) [; f. O( C
9 X, T2 b4 [" } {1 `3 E
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:( S9 a( p" K5 q$ Z* O# ]; _
6 t4 ?/ Q3 ^# d# w+ O
d:回车
# R2 |* k( x' M+ h3 T1 V Z- N! Y ^& j" }% m
cd mame0148b_debug回车2 U- Q5 ^- O4 `7 W+ C
# q" V9 T; M/ A! t
如图1:$ T$ u2 v5 X6 x2 j
% q1 _1 h0 C5 g1 ]( w& i( z5 ~5 z; s+ u, y Y: j* y2 y
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:1 B9 J( |2 w$ v) A
/ h' s+ C( b9 X9 v% w! U; t( R
: S/ W j4 e) F$ `
# J: p7 m( s( }8 t* _3 \( T5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
* C4 F* u- [( R/ H I1 C
' ] c, @- j$ f( D6 i- W6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。- p% f% D1 I$ H F: H" K
" O" k: c$ c" ^" n# ^% ~(2)如何呼出/隐藏调试窗口" X+ v% X% |0 W( l7 I0 j
- K" ~& u: J5 Z! P5 i1 y- ]/ V
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
d8 k. r4 l3 i# L" O
% z) k( R4 L3 ^; C& m) j+ E8 I5 d
2 O7 A7 @- e; x6 n2 Y7 y
% E! m' |# T' P- U5 }2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:2 ^0 c, G! Q$ _2 {7 S
" y3 x% `9 r( Y7 b! q3 L$ o0 K# `& A! A. ?5 a4 X( m
% {' X: ^8 G" ]( F7 u
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
4 I; B" r7 a# U; F t! p
. M4 \1 A% P! l$ ^0 Q' V% }/ k) W P(3)如何下读/写内存监视点以及程式地址断点
( J/ S/ y8 M' \2 F9 z+ s& M6 L/ c3 R. ~/ \( {
先说说如何下读/写内存监视点吧
4 @2 H) J/ ~8 u6 {! y K7 @3 b+ D7 G/ h, j
监视点命令格式:wp <address>,<length>,<type>,<condition>, J5 Y3 ~# V; k, G9 x3 Q P
, O% v+ T( o7 ]# \9 O<address>是地址
E* y( ^8 r8 H) d5 j; j
# C9 h( x; z; L. [2 ] f<length>是数据长度,长度必须用十六进制表示
6 f9 i. a3 i2 j. \1 s6 x8 K* s9 \" Y) T
<type>是监视点类型,r是读,w是写,rw是读写
6 J$ \2 t0 Z4 k C! V6 D$ j: ]# C- ^* C0 S
例子:* L w$ ]% W' }+ F
* Q2 r3 c$ T( T例如对ff8569地址下写监视点,数据长度是1个字节$ ^) v; ^* k7 s% P( g
) g& \% G( |0 U: Q9 X, E
wp ff8569,1,w5 i0 J! N7 }2 X& ]' z% c6 T9 z
) R1 M( U$ U! x& j例如对ff2235地址下读监视点,数据长度是2个字节+ \; F4 m+ j. r: o+ u4 W! v
# K$ Q- V# [! H3 i" I: l
wp ff2235,2,r
8 m1 c& E# I! R2 u4 ]8 n
$ p& H$ y9 I5 H# y例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
6 W( [/ q. ^+ P+ G6 L3 _
# |3 h/ _ C" Y- F3 Awp ff7533,1,w,wpdata == 0# |6 h0 t5 M9 b( c& Y; m
0 O7 L+ ?" Q+ H4 w) E以龙王战士日版为例:
, C; t0 v e8 n6 j" k$ B" k5 ^" |/ A/ m: _$ ?5 @' y; o
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
- f! K8 p" t d( }' I% [
t* A. U, f+ K! N: O
5 }" `5 l$ I) e: l9 Q7 z# @
' a; y6 b8 H4 n, v& c6 q& h$ ]9 n$ h8 w6 K- t- k/ Z
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:7 R% C! p: Q5 i5 |' @% ]
) [( F6 T3 C- q# l" L
# L" G9 ]! M e
. ]/ Z/ w; i/ s) [- c. h
接下来说说程式地址断点
* \5 q% W P0 ~' M" R- J' X( {0 H0 Z) f8 e5 U! l; _
命令格式:bp <address>, ?1 U# p8 N6 W
4 l1 r; t) ~8 K( q8 |1 b# P
例如对000488汇编指令地址下断点5 z/ W. Y$ b: r1 `# V
# g2 P" k" l& @6 _% X8 nbp 000488: |! `, N2 y; |
' }% J$ O# g/ V) J G
当程式执行到000488地址时就自动中断6 A$ A) K' d' _
* h8 H) n6 R# z$ X+ ?; O3 t更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
2 B, m: S8 b- D' u) q/ U( H; v! ~) E0 s: H
有错误请指正。7 E. s1 v9 o( ~1 U* E- R; j$ g& M
6 I" U, | j4 b- C+ k5 T补充一些命令:# W5 i# B/ Z* V( M9 [ V5 ?
. d5 f( h0 B+ M4 e# c
"wpclear" 清除所有监视点
: d, L6 ^$ c8 b0 Z! ^: h/ p"wpenabld 数字" 开启监视点
T( l3 b" K5 h1 `' @1 @"wpdisabld 数字" 关闭监视点
# r" t. P$ `+ q0 ~; l"wplist" 显示所有监视点) T0 n5 j6 i% L+ I. P8 C
% b: r- H8 O6 k" Q. l6 s
"bpclear" 清除所有断点% W( j4 t9 K* l, G A" M
"bpenabld 数字" 开启断点9 G8 |& n; e2 L$ ^9 {: H
"bpdisabld 数字" 关闭断点
! J. B* ~8 h- k& Y"bplist" 显示所有断点! W) F% ~6 k" K0 X; Y
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|