设为首页收藏本站

 找回密码
 立即注册
搜索
查看: 1171|回复: 7

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式

+ x3 V' U( {2 \3 O8 J/ Y; @6 T很快速的整理我自己常用的指令  u  c6 _- b8 A  E$ n9 y

* F! K- j) ?0 F3 {{:4_112:}
  q$ Y/ N6 H" t" x& {$ c5 F- b/ O( K, H
MAME DEBUG常用指令
- o, m) L- K) n+ T, P6 `& a
" e  N8 Z6 }2 g6 ^# r内存搜寻: ci, cn, cl& b4 m: j6 D( u0 o$ J9 M

; I6 Q& R9 Q* w$ V: U* ^' \4 V, o0 \    ci
0 V3 Q! W8 r( i7 ?0 x    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
1 L2 N. [! H* L, D$ o  ~
9 O: E2 e$ c: a2 W, R( _  o    cn) c9 L- k$ p: n- _, q0 A
    搜寻指令
1 A' R" |( g9 B+ s1 ~+ w. _    例子:
3 U8 u% v8 c  M    cn eq,60- @' x' K& ]9 o( @2 v
    搜寻目标等于60 (十六进制)
. a* U' z+ K" S& I0 V, K        
) }1 A1 N: h" |4 F  n) |7 Q  M    cn eq,#96
" m7 |* x: f- F3 U    搜寻目标等于96 (十进制)
5 b* q% y0 ~3 l& `. F
5 \7 r8 ?1 Z! h$ ~    cn eq6 ?6 x& _: C! i- v# T, ~9 m
    搜寻目标的数值没有变化
8 w8 X5 `5 U! i/ j: I
# g  w$ g) o- t: y0 `' R    cn ne
! D+ i& h& U& A+ H' A6 Z* z6 P    搜寻目标的数值有变化4 g* d; h( o$ D$ @4 `4 O4 q1 F
        
- n. y; `- d) S4 [    cn +1 x3 G( n8 p. U* B) g, r6 P
    搜寻目标的数值增加
  d8 a$ C1 o# M  V% u   
6 A8 @! ^$ T3 a' O. S$ f    cn -- B; b& i9 g9 U+ ?
    搜寻目标的数值减少
: y5 [+ f1 f! i% g        ( i4 J( T) H4 r  O- A
    cn +,3: ^: g9 {; s3 t( a5 n: I% K$ _
    搜寻目标的数值增加3 (十六进制)) g: c% Y* ~& b- \" `
9 N# R; q' V" W+ ~6 |4 @9 B
    cl
8 {: e9 ]3 o" T( ~5 X( ^, ~" L    列出所有搜寻结果& U9 O0 x4 s! g2 z" |
3 H( X) }9 w2 q+ G/ H, _5 T# w
    cl xxx.txt
/ j8 H% y. X8 g+ M6 E    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
6 ], M' H! `+ N6 f( K3 `7 i0 k& x+ ~' N0 f5 p9 X- I( \
    ; e1 v* {/ l2 _8 G! u" S
内存监视点指令: wp, wplist, wpclear6 U+ y! h) e' b' L) }5 d$ F
    例子:
* _2 W$ G/ x4 {1 ]4 r    wp 1234,1,r) M9 Z- x9 p5 N/ R
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
* a/ R, D2 V; @% z2 R* a
0 P/ ~) F% a6 Q; {% X    wp 1234,2,w
9 {6 F& R! Y5 b  k4 E1 h! Z. Q      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度24 z4 |; M1 x2 E
     6 ?' `; N: t9 t. x- d
    wp 1234,6,rw( o7 S/ ?4 ^# X# \: i% u5 K
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
% L& Y1 a' s( _, Q5 Q7 r
8 @, v/ B9 \7 j# k- G& t) G! T    wp 23456,a,w,wpdata == 1/ C4 i# e. [. s' y  s- P, |1 ]2 J! j) @: ?
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
1 I7 E. K$ ~& n, t! ]" @: V  ]/ `( F. z, E/ ]% e
    wplist* h' x, G9 d/ ?2 n
      列出所有监视点
# x  e. H8 T5 e; V9 r- y
4 ~! `7 P: t- o& M% w    wpclear 3
4 W( F' `$ L3 K. L6 f- g& r: K0 o1 z      删除编号3的监视点' O8 U' F& N7 x- g$ {3 M
4 i/ F2 X) A& U  g; ~# S' O
    wpclear
+ g; }$ a: V7 f0 T      删除所有监视点
1 w) C9 U$ q) P. V! M5 F
9 {* \( d7 ]4 r! f9 h  Q      $ ?/ o+ u2 R0 G" t" z/ B+ _# S) T

. }; r& T! K, f# k% i! ]$ d程序断点指令: bp, bplist, bpclear, N3 L- v  @9 q
    例子:
+ x! h+ C% c5 \    bp 1234) b. v4 n( @/ _6 c: y
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断4 Z# e$ U0 z4 n/ `7 F% m

3 _9 s+ m0 s4 S& Y9 g' ]/ ?5 p6 \* t    bp 23456,a0 == 0 && a1 == 0& r: V! R. j6 Q& a0 E6 f% T" X
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
8 t: t3 f+ v" m3 @* m& o$ S! X, f& w
    bplist
) ~0 h, ]. G$ l) f) d      列出所有断点4 u* }5 ~5 _' x; B
* I. e; @+ V, b, F: L1 [
    bpclear 3
8 J0 K$ {  M  h7 g      删除编号3的断点( l; ], u: R# U2 I9 j) c  F, z

* ~6 V- b& W0 t1 b3 y+ z    bpclear
" d1 Z3 \0 N! a; G7 ]: V      删除所有断点
, W4 r" C9 |$ R. M" b9 D7 f5 ~/ r/ k1 V0 h
      
9 ], s& D$ k  g; o& ~- q      ) \9 z5 H! R, v! {. Z- V" ?6 h1 [
跟蹤紀錄指令: trace" z. U9 \) t* R& G6 K5 [
    例子:
) I: Q0 K( I/ ^$ I* n    trace 01.txt
2 Q" v! s$ m; e5 t5 k    跟踪当前CPU运行的所有代码, 输出至文件01.txt
+ t; d2 m) _7 f! W+ {9 j( A0 J* ]5 {/ x
    trace off
+ h/ l. d2 A1 r% F7 v: G. X# a; M& M    停止跟踪, 并且关闭文件
0 t- y1 v- _2 Z/ U& K6 D1 _1 d. X- `& R  r
    trace 01.txt,0& n1 Q4 z! W6 B* ]& F' U/ k( a
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt8 I5 x5 D; U1 [% u- [6 O
; z0 y7 y: N8 X4 Z5 q4 M/ Q% ]
    trace off,02 M4 d8 Z6 n0 U" N- |! l! r
    停止跟踪编号为0的CPU, 并且关闭文件0 L, i4 C6 \2 ~. _

6 ]7 n' k+ [" t& `4 W    trace 01.txt,0,{tracelog "A=%02X ",a}
9 D; R  o) S9 r& d0 h. |    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
( R7 V# f2 B) ~/ @( b    并且在每一行的前面, 写上"A=a "  ?- B8 `+ ?; ]- ~" @, p  n" h
    "A=%02X ",a为一个C语言printf函数常用的输出格式9 q) A, G# u. e( {5 ?
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入: `. I  S9 z  m: V0 ~. Z6 w2 b! h
    X表示为大写十六进制数
) g9 ^. t. s) W) M3 ~+ W- |0 E8 s( o4 P! E

% E9 l6 Z2 r' q, J; p6 O0 p4 J7 @8 I* o" x; V
内存直接写入指令: maincpu" M! ^9 n- O; m: p4 ~, S
    格式为 maincpu.[][]@地址=数据
+ r6 ^" y' X* c  R7 \7 l5 Z    第一个[]:4 @% S" u# h1 P5 s4 H
    o 表示ROM地址# W" ~3 ^% U0 n& M6 Q, e& A
    p 表示RAM地址
2 v% R, W5 J. p/ e& r: z8 s( Y4 D8 s
2 Y/ M$ k' I5 m7 ?. S    第二个[]:
. w% q# `# K- T1 B. p: A    d 表示4字节/ P( ]$ G$ @0 C' E& X
    w 表示2字节! x( z& d0 R' m# J
    b 表示1字节
/ t, |. K: U, \7 l/ ]3 i
6 l; K' f* N* W6 q1 d; a    例子:
! l! y$ x7 P, v    maincpu.ob@1234=FF& b! T2 b4 k% o+ z# H. @
    在ROM地址1234处, 写入FF一个字节  D/ z. w7 e* v9 a8 k" g9 k7 f

+ I6 m- s  d( r3 h  C' [! j    maincpu.ow@1234=4E711 M& W  k- I# K7 R
    在ROM地址1234处, 写入4E 71两个字节
" I; {8 M# _( r& O. V2 `) g/ r
. [+ O' g6 ~7 V+ V/ B% D    maincpu.od@1234=600A4E71
* L2 r- y% r/ I- U    在ROM地址1234处, 写入60 0A 4E 71四个字节
1 f/ [4 O* e5 b) v& D: j) A" v& ?% h0 B" F
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写, C- g1 D* ]7 ?2 S& s
    " _, h5 b! o( M9 g4 W
" n: H( |% o9 l' p0 {7 a
其他:
+ J9 \( u. }. w; H3 x    dasm 输出档案名,地址,长度) B  E6 G9 t; [
    输出程序的反汇编代码( M( ~& i7 _) t0 q3 z- w$ f
    例子:: s, l- O+ B; i6 ?" }/ s' ?( z
    dasm 01.txt,0,1000007 ?; o8 z2 u1 j# o- [& f" V# p
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt  P- v! v5 `, \0 v3 D

5 A7 O7 f& Q/ Q3 W    softreset
) K- d$ P, \$ d6 L/ `3 S" w! U& K0 ~    游戏重启, 但不重新载入ROM6 R) c5 z2 D! D/ e" p# y/ n! M+ q
* Z% P% J4 |. J3 _- r
    hardreset
: V* t% r" m3 y6 ?! U" ]1 o    游戏重启, 且重新载入ROM
0 {; c% m. h* w4 `
: J% C: z' T$ }2 C+ M' ^    snap xxx.png" n3 i) j& D. i
    截图为xxx.png  j3 C* b7 ?" o( [- }

- G1 B" J7 s- ?; @$ }, P9 ?  
) S" _# L9 r6 T* l2 w* }  
; ]8 g' g" ]! G, Y    `: O5 ^5 `' P" w; S. ]/ q
热键:
9 E  @; |5 D) m, s) e! c    ~ 中断游戏
3 C6 U/ }$ L* A6 j/ E    F5 运行游戏
) I- f  w6 Z$ A5 R9 q5 a: a2 ^    F12 运行游戏且隐藏调试窗口
2 _4 a$ C8 N$ \: H3 j* w    F11 步入, 单步执行, 会进入子程序. ]0 r9 t. P, Q, A/ _* j: Y
    F10 步过, 单步执行, 不会进入子程序
% ]" G0 W3 C: k# U$ W; @* o" u3 k    Shift+F11 执行到子程序返回
  {( B. r6 K/ p$ ]$ |# x1 f    Ctrl+M 内存浏览窗口8 x5 n" r+ m) R0 M/ K7 v
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU+ ]/ N5 w% o7 W( `

7 Z7 N# [. o2 P4 e% L% f. f{:4_94:} 9 M) q9 R9 Z- L4 U

6 j: h+ P7 [/ }" n. b  `; T

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-3-20 10:14:03 | 显示全部楼层
我又来顶帖子了
[发帖际遇]: 银河漫步踩坏了花花草草,被罚款15 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2556 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。0 [/ V8 B/ j4 L/ E) I0 u  q
! B6 ~! ^% E1 _7 i3 R
PS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 2013-3-20 16:27:53 | 显示全部楼层
看到二楼就忍不住顶顶
回复

使用道具 举报

签到天数: 31 天

[LV.5]常住居民I

发表于 2013-3-21 09:48:53 | 显示全部楼层
先顶一下!有时候研究一下
[发帖际遇]: sdiencelee 在论坛发帖时没有注意,被小偷偷去了 1 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 149 天

[LV.7]常住居民III

发表于 2013-3-22 23:02:26 | 显示全部楼层
要详细些的东东, p$ h1 N5 s: e6 X6 m1 }
11111111111111
回复

使用道具 举报

该用户从未签到

发表于 2013-6-14 19:10:18 | 显示全部楼层
感谢分享,谢谢。{:4_118:}
回复

使用道具 举报

该用户从未签到

发表于 2013-6-19 19:43:21 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2026-5-13 20:45

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表