签到天数: 1997 天 [LV.Master]伴坛终老
|
应人要求,就写写关于MAME DEBUG版用法吧。
! T; s9 f( E' j0 Z/ U$ T, K6 n2 m n! ? F
(1)如何加载ROM
4 t" `4 K% Q# Y# ~6 U/ Q% i7 W T0 Q# `1 \
先说说如何加载ROM吧
- ?! ~0 O* a) n6 R9 F
2 u& Q7 W2 Q, g% E; b2 P' D: W7 s以MAME 0.148 DEBUG版为例:
' z) T% p8 X, Q1 E$ F' j( j2 M/ }+ o* B7 y; t& R' C, K
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html V; P; D: H2 r2 T
5 v; w. Q% D5 v. _5 G. Z7 ^
注:MAME官网的MAME是命令行程式,没有GUI。7 T) [ i$ F8 \4 }# o* o/ e
! U- Y/ N5 h+ J, i, k$ f
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;6 z+ V a% A! q. g# d8 O# R
7 _1 Z+ Q# I* E8 E; ?/ H
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
* Q$ c1 C6 ]' a. ^, m. f
2 Z! j' W1 ^# U5 Kd:回车
0 X! T4 M- W" I7 i! G9 ~9 v- P, z# T' Q) i
cd mame0148b_debug回车
. `( `; z& R% @5 s' ^ q: ~" D' D: U. Q$ g+ @ J# c( c n
如图1:9 m( V, G+ g2 G, {: Z
2 [+ [! _" O2 ^( j3 L X$ ?, s5 }: w0 Z, g; G0 v) f3 v$ I
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
! b1 }; `: ]* @: Z4 |3 j, B& s
8 n3 ?' Y+ C! K( I9 _7 Q" R! p3 V; [/ d3 F! Z! C; q
% S" m9 X, K# n5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;: X5 X# ^4 T0 S
# z+ v' L" y/ a0 k6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。+ [8 g2 Q1 j+ M b2 Y D
+ X- v" n5 O% F( K9 Q/ C
(2)如何呼出/隐藏调试窗口2 z0 F8 c' e( l, O# A; o
/ K4 w+ ?4 G* z+ P
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
! W0 z2 O2 p' V
7 z2 r- w- f8 ]" n2 _
" y' a! s& [7 @# C/ K
0 C! N6 \: S9 y) _7 L' s! s2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
8 ^1 J7 B8 g ` c8 H* Z4 p4 d! t, \# s& {. ]6 F
* ]; Q. Q3 d9 k4 K/ v( P+ i6 X1 T4 A5 i# I3 {
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
4 R8 U4 q I& z0 U x8 J
. j7 K, k+ W1 K; p(3)如何下读/写内存监视点以及程式地址断点" B9 f; U# N+ {7 ?/ n% }8 I
* T2 s+ c6 c# K% u% Z& {# Q$ k先说说如何下读/写内存监视点吧3 `4 l+ P" R$ _5 [) w
* Z) b4 a3 \, z6 z. L: p- v# c监视点命令格式:wp <address>,<length>,<type>,<condition>
% N3 M. h2 ~3 D: ] W9 o. y/ E! ]9 V" y0 [; b
<address>是地址
8 G" ~: s1 p0 ?
9 Y' j: c) n2 j6 Q<length>是数据长度,长度必须用十六进制表示
7 h3 x y, j* V7 Y
, Z- A% d8 {# f<type>是监视点类型,r是读,w是写,rw是读写
, L# {0 K, v: Y8 w
' \; Z5 j9 M4 y& w例子:
& f/ `! ~: d, Q. r5 n0 g: q6 N% |3 W- ]0 v9 G# D
例如对ff8569地址下写监视点,数据长度是1个字节' B g6 Y! e+ e8 L
8 L* ?8 [1 r( x* e" q. Zwp ff8569,1,w( q' @" B0 T, N( h0 A- r5 z: v
; `7 k0 I1 K6 i5 e" a例如对ff2235地址下读监视点,数据长度是2个字节4 M# S& G. a; i6 S0 P `# X
7 N/ f0 Z8 _$ ~3 e8 K" e
wp ff2235,2,r5 E1 |# x7 a0 [
9 r, }' a/ K& D3 O- L4 k例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断0 X" G# r) k r" `. h4 k
' @: Q% ~% x3 D& F! c+ W
wp ff7533,1,w,wpdata == 0
( X! r% ^9 x) T
, d. B+ ^8 c" X) G' N( `以龙王战士日版为例:
& X1 g% `7 M8 X7 t' u! @; v& s; v- @9 U3 k
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:, M E( A$ z6 Z( g
& Q7 _8 s; v+ z# X% E" g1 h6 }( O! a2 o: E! X* \
$ t$ ~( o5 n( L! h3 V# `
( ?) j; P6 w3 \' D% o8 U2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
' x% J: k1 h7 i; ~0 F. b! `7 f! q+ M8 ]9 A' P/ w+ P) N! C
6 n& b( {! F7 X+ N l' {9 N( h
7 q0 E( _0 h) }8 q$ |' Y接下来说说程式地址断点
( w5 s6 w! k$ X+ ~* m0 z$ \ K, i, B
命令格式:bp <address>, o k% D) g" O1 h
_- g) F6 q7 x1 i; @1 ?例如对000488汇编指令地址下断点* Z+ I B. J8 `+ a2 ?* b: ]* l
/ ^4 V; L- }+ u% ~ C# ?
bp 000488- A0 ~1 C4 G# d; w
$ T( L9 Z7 Z; S" j5 B
当程式执行到000488地址时就自动中断
8 o$ R- |/ L7 Y# Y& W
" n6 m% m2 K/ O$ K$ q" ]更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
8 ?9 j- G7 l4 r( _7 ]/ l/ x
( D: ?& Q7 z) s# e& I- V9 b* m有错误请指正。
1 d* K- s" R2 q$ c% l U0 v/ O+ C! V/ |7 h- l; i
补充一些命令:) S7 c' J0 l, b' p. {: Q2 L5 ^' ?) t9 U
5 r- N9 y$ r, B8 ]7 H! ^* t" }/ `' u8 L
"wpclear" 清除所有监视点& \4 a% `0 G; C" e8 ~. C
"wpenabld 数字" 开启监视点
& T9 r Y# s( d# l$ { [; ^"wpdisabld 数字" 关闭监视点5 L5 ^+ P1 B$ K7 z0 j$ G8 Z8 ^5 e
"wplist" 显示所有监视点3 q: V( m s+ }
/ ]' d+ H$ e. |"bpclear" 清除所有断点
5 w8 ~# @( C. w"bpenabld 数字" 开启断点- o$ P$ P3 P) \6 |$ A; n
"bpdisabld 数字" 关闭断点
. [* M) W% M9 U! L"bplist" 显示所有断点9 U( x ]* L# y8 z' G/ m0 B- H
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
3
查看全部评分
-
|