设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

/ ]& }: [$ `0 k; b' [很快速的整理我自己常用的指令  ?# W% L, g) c* R: p6 {7 b; Q

: \% ?" m+ @; x! x{:4_112:}
* l, ?% ]: }, \- M3 H' h) |# H: T- ?6 X
MAME DEBUG常用指令3 q4 M. w) a( f* B

3 [  y6 o& _3 p6 f内存搜寻: ci, cn, cl4 N6 o8 G& d/ _4 H7 w

- `' ?. }# M# f) X4 n  D, ?    ci
% R, k$ U+ ~( x# V* I  T    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
. t! h; d& x! b1 v; M* v0 f; r/ U+ C; e- x7 n/ E$ j& K
    cn( u: g5 h, H( \; M2 A
    搜寻指令
! i5 Q  a0 [/ D: U$ N& K    例子:
& B. z6 c& j) ]5 }/ |7 T    cn eq,60
) n9 a/ c4 K, f# b    搜寻目标等于60 (十六进制)% N2 I  U  Q$ H2 r
        
$ c+ V5 q7 q0 S- s5 w: I. F7 x    cn eq,#96& l' {% O) ~4 {5 z
    搜寻目标等于96 (十进制)
" Y' o/ @+ T4 |  U) m6 m& k2 j2 ^
+ K, r8 j4 j; N0 Y    cn eq
, M: Y. _0 O$ A0 I4 L9 H    搜寻目标的数值没有变化
. x  c% L2 v4 v" o$ }
* r  w7 d0 O+ {( o+ M    cn ne
: E$ j3 S% B% K0 Y- x# H' p    搜寻目标的数值有变化
2 X& \& h# f. q$ \/ m- V0 g        ! I2 e- }" u6 ^& w" U# n. {
    cn +- n$ v) `% m* Q: f* x# U: M* `) f
    搜寻目标的数值增加
# s; G  L% u" |0 O( |2 B! o+ p1 U    ' u  N# k6 {6 V) Y' D5 R
    cn -
* U9 l% C: C# ^: B& x$ e2 E    搜寻目标的数值减少
( H" Y, \2 m9 Y        
) ]1 v0 `4 k$ p! e! A    cn +,3
: ~6 e6 Y" g9 I, l5 B    搜寻目标的数值增加3 (十六进制)
+ Q1 G8 g: e; i' V8 \& J& ?! }- b- C8 |. X
    cl/ G4 [. S6 r- H( ~% q
    列出所有搜寻结果/ A* f1 ~/ E9 ^4 s( e5 n2 ]
' V) S6 l; z8 }! T9 z
    cl xxx.txt
; W. n3 ~" H4 d2 S& O! I/ i- u6 C    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式% v: T4 {& K) [/ q9 m) ?

& ^% [, B% {+ c- k% C, ~8 j4 A   
% T; l! I7 j8 y- N内存监视点指令: wp, wplist, wpclear
+ m/ A/ ~8 o5 a* P; s  E    例子:5 v  ~* a& l0 c- k$ Y
    wp 1234,1,r5 W3 C4 W% }# j. M
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1' q1 c7 f1 }8 F. S2 k* J
; V3 H7 q! \$ f/ j& v) z' [/ b
    wp 1234,2,w
* C& D) E! }+ V2 g! R      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度24 ?3 @* \3 U# j9 `4 _. O
     
. q4 d7 |5 x/ B    wp 1234,6,rw5 G. `* X2 V8 |) k5 z( D/ X
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
! K  m, Z( a, E& a" o' w2 n7 K; o; Z3 O
    wp 23456,a,w,wpdata == 1
7 D- o! ^; u6 D) y2 H+ }/ \      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
2 o2 A3 y( E$ ^
- i4 f0 N. n; e    wplist4 `+ Q* q) t) l
      列出所有监视点
" y: t; z. M1 _: N1 C0 t1 S& Y7 o  V( S% P9 D$ F
    wpclear 36 G( O% A# V3 W0 K/ }, s# \# l/ J0 ]
      删除编号3的监视点1 [; E4 A9 M: j5 U1 ]; W

6 i4 s+ S$ X3 ~$ ~5 `    wpclear% `* J) Q# H9 ?  B. ^9 a* U
      删除所有监视点8 t7 D% J) T! f8 S

8 x6 S  C+ x- L! ~" {4 X      4 O  I6 S, F% O' z" G2 @$ P
4 D( J- O  w, @# n& [
程序断点指令: bp, bplist, bpclear
$ K4 Z2 p. D  B/ j. O. Q* C* g1 x    例子:
0 L7 F- _8 V" i- C. W) }    bp 1234
$ x" p4 I" I: w8 u      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
! ?3 b/ Q5 @; n5 \6 z
" K5 k) X) c0 x) Q( v) R    bp 23456,a0 == 0 && a1 == 0  g: B% @2 W/ g: V6 _4 \
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
& Y5 ~1 D$ P. y0 F3 [  \6 e
& p: T& y  w. m8 x    bplist
" w9 l- X% s& i* i" G$ j( J* ?7 t0 P      列出所有断点
; q/ s9 |% W& K* M. b/ B" h( k8 x, a  G3 _6 ~
    bpclear 39 J+ |3 e% S8 L0 ?
      删除编号3的断点
7 K3 z% u' s& G
# [; A0 C" F6 k2 t" c    bpclear& n# o. ?* n* Q3 c
      删除所有断点
' r' n7 W6 x2 P( b- n' G; M  h, H( Y" s. p
      $ Z9 N/ V5 l7 W8 k9 z. H
      0 n" [  y" [5 y- e. Q' e
跟蹤紀錄指令: trace
0 L' a+ p5 \$ b& c8 ^3 K5 E    例子:- \$ v+ e/ x  m# }9 s6 o
    trace 01.txt
+ Z4 a' S/ o3 V1 J& S1 Z    跟踪当前CPU运行的所有代码, 输出至文件01.txt$ M9 l7 ~8 {9 @' g) n
; H/ T4 Y. Q1 m
    trace off1 S5 d3 _; f# C
    停止跟踪, 并且关闭文件3 _( D) u. U/ ?: f. z
! ?5 C! P0 }+ [% [% \/ }+ v; r
    trace 01.txt,0/ K+ h" f' ~' @
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
+ Y5 }$ K( p6 j; u, C( Z( p$ o) a$ Z: X( P, m
    trace off,0
- W8 P: T* M0 M# E    停止跟踪编号为0的CPU, 并且关闭文件" {7 k! I* q9 t* o5 ~$ x
; ]  j8 h; E' ]7 m
    trace 01.txt,0,{tracelog "A=%02X ",a}
2 w! W: A: m, \5 O    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
9 V. D: R9 w. h0 E6 ~    并且在每一行的前面, 写上"A=a "
/ B( J  m4 h/ Z. K' ^6 J    "A=%02X ",a为一个C语言printf函数常用的输出格式$ L+ ]# W9 m4 s. v: l
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
- W* d) M* ~! E    X表示为大写十六进制数- S1 B2 D4 R$ |7 Q

. F, U6 _3 N+ I; L, l! r  b" D" W6 K5 v
4 }- {+ ]% G) _' {4 P
内存直接写入指令: maincpu
4 w7 L. v* F  ^# }4 j+ R    格式为 maincpu.[][]@地址=数据
; U+ E$ P8 s' g% i2 D7 V    第一个[]:
; U) P) L+ Y$ X& ]9 o3 W+ \    o 表示ROM地址, @; Z6 r$ U& _, a1 T
    p 表示RAM地址2 O( ]9 E6 q$ \  _0 \& h

* D' n7 b$ Z/ ]! g! S    第二个[]:
( s0 p0 W) \4 r; S    d 表示4字节. _5 W9 H2 c: f6 b- E% d% u% b
    w 表示2字节/ b  q7 b0 v8 `' \+ ]
    b 表示1字节
; }) j& H  `3 E0 d$ D6 c* L$ Z' D5 `% q
    例子:
3 _# r4 c+ U5 y$ h) a; C    maincpu.ob@1234=FF( T3 q' N- f3 z. b6 b
    在ROM地址1234处, 写入FF一个字节# X" A6 a" L& Q4 h$ k4 ?7 M/ ]

$ L# J0 b1 C# W* d/ E! k& g% h. b    maincpu.ow@1234=4E71
8 V$ l$ p1 E, }, r    在ROM地址1234处, 写入4E 71两个字节, C$ k9 E: ^( Z/ R3 r

2 ?9 v! V2 f9 S    maincpu.od@1234=600A4E71& b+ A9 P/ J0 J5 z5 F
    在ROM地址1234处, 写入60 0A 4E 71四个字节
4 P9 _# @. @. M: R+ {/ \7 |: [
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
; s5 K+ W7 \  c7 i    , f: n$ w1 v# |: X
  H$ Q4 x) g7 V  w( p2 F( k
其他:
# [$ v' E& k9 V( `    dasm 输出档案名,地址,长度
- X; X1 W: G1 `: A3 j    输出程序的反汇编代码& K1 W6 D1 ?# R; m5 J
    例子:
3 X, _7 I$ _( w    dasm 01.txt,0,100000
' [$ b+ ]  v- R  t0 _& O    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt- Z- _# R! g/ Z6 @) P3 T
8 Y  p8 L& y4 Y6 j$ g+ W
    softreset
* d4 y" t- T. j. i& r- m    游戏重启, 但不重新载入ROM8 x) b+ e; g1 X, m4 Q

! S* h# e1 E) z) D  H) {' K- k: j5 c    hardreset
1 v8 Y6 }  }" v- q( d    游戏重启, 且重新载入ROM
5 |& v( n" I# d0 H  k5 a/ s  A" j2 ?
    snap xxx.png& l. G' N  Q+ s7 R" q- \, s
    截图为xxx.png1 ]% k$ I. T! W4 R# W- T' b

/ \$ x9 d- E( h% K  
- p2 `# j& n7 V) @  
, ~; X0 w& ~2 i- j  
8 b* I$ R; F) z, G* w  q6 N热键:
) D* O- S* X' y, f. F$ T    ~ 中断游戏2 ]+ b4 A0 ~/ x
    F5 运行游戏
4 i4 M) k. q5 \5 V0 L# ]' {    F12 运行游戏且隐藏调试窗口
7 ?  J7 h+ {$ i! X& W    F11 步入, 单步执行, 会进入子程序8 t* M/ J* @2 F' p% T8 y' c7 t8 m, F
    F10 步过, 单步执行, 不会进入子程序
" _/ `% a  j4 `% |+ q* w    Shift+F11 执行到子程序返回
' N0 G( ?  d8 g1 p) w( k: _    Ctrl+M 内存浏览窗口
3 r" `( @/ X0 K" H$ M- l6 ]    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
9 z9 q' d: G  n+ z
9 k6 R) P: d7 |; u& @8 l( D' K: [$ x/ |{:4_94:} + U6 ]& o7 y3 A  m$ m9 R4 \

& ^6 @& N. m  N3 I+ p( [$ k

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2554 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
) K) Q4 a3 l' e+ M+ E1 C  M
0 W: B8 P; @  M5 x% Z; ?# K3 a' ]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 | 显示全部楼层
要详细些的东东
% Z, ~6 u) T. m- Y11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-23 18:05

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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