设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
6 W% i2 o. y: m  e
很快速的整理我自己常用的指令5 j! |7 X) v) @; a

# O6 C1 t5 T) }% |{:4_112:} 3 E4 t8 x! f1 |' e9 z

+ C# S1 T% n( {6 H, yMAME DEBUG常用指令# ~* c8 N/ C2 T" e5 s* r; z  _
, N  ]* \7 K! s' l8 M/ K$ |
内存搜寻: ci, cn, cl5 f- O  ~5 A. N, |8 u6 ?1 b4 o: m
: M$ |) v" M# P* _
    ci
8 Y  Q$ e: X* u/ B( ^    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
+ ^# ]; Z" y' p/ L* I/ O5 ?
" H  |7 }, ^7 N: F+ n& T- k) Z    cn+ h  x4 d, r7 M9 ]
    搜寻指令) W: t- q" s- T6 L
    例子:
  I6 o- H& e1 l* _# G7 B    cn eq,60: g0 I1 {* i3 g2 V2 @0 l" L
    搜寻目标等于60 (十六进制)
& U& j% p! _( i* R        ) m, t) u7 j/ R  z
    cn eq,#96
  h* Q1 `! J6 B5 l, c. Z    搜寻目标等于96 (十进制)
- ?) N! u0 I& [" _6 Y( f. y% k/ N4 \# U& _6 G
    cn eq+ x6 v% f4 a' ^- u; p( N& v7 @' X
    搜寻目标的数值没有变化" K+ H  _6 n# C4 r; C( b1 e0 k3 b

- p) N4 R; {- o, k* F( [8 U    cn ne
& s# D) f; z7 k) _6 D% W    搜寻目标的数值有变化
2 Z, O$ l8 Y: b) m# j        
9 K3 h8 K& d# n! I4 w8 X    cn +
' ]+ P. X! ?, t4 H1 R1 J5 S2 Q0 P    搜寻目标的数值增加/ M  A7 U0 ^7 b! N8 o6 u$ F
    " K# D# P/ ?5 _) @" A' B
    cn -! r! |% _( E$ M$ n" s0 c3 l& j
    搜寻目标的数值减少
( B. f8 \3 r" X8 ]+ `6 n( Q        
' g$ Z# A% q* J  `7 m( f, h; ^2 U    cn +,3
0 S6 h% z  G3 O, m+ @4 s    搜寻目标的数值增加3 (十六进制)
+ ~. q7 Q; N0 @, p$ C8 x
- z3 J9 m' A/ Q" P9 m2 m+ \    cl1 s# N4 L# S( u3 C$ {! U9 k
    列出所有搜寻结果
4 j4 p$ b- v( f6 `2 \, X( \, @) ?+ K1 F7 J4 x
    cl xxx.txt3 g' d* K7 [- @7 V. U3 L
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
5 F. R  J9 n. y3 }2 o' ?& \5 q
7 T9 O# ]% ]; X" o, G( M* ^    ) V* p+ T- Z+ N" g
内存监视点指令: wp, wplist, wpclear
* y+ ~. t  N/ D7 Z/ U" z* K    例子:
  {  y) P% N' J8 W$ k5 Y$ R    wp 1234,1,r
; j" A1 F3 v% r      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1* _. |, I' s% J: [) W' o: y2 C

) ]: M$ S: k# S* x# i. D0 j: G    wp 1234,2,w/ L8 H# D: [; T6 k8 Q+ [+ }" F" A
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度22 |- f" j9 z  Y
     
$ C3 G. z# v; C, ]/ w    wp 1234,6,rw  n3 C. r' p+ ?# \% G' m# Q
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度67 O6 R. `( s/ L  w0 A1 K
& ]0 `7 c. s. m: ?* v0 E7 z% l
    wp 23456,a,w,wpdata == 1
( c8 B8 \( y# o; Q" M4 v6 F+ N      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
  A1 N/ _5 i2 L3 \
9 w5 {) h( r# g3 [2 A6 _  z9 B2 E+ o    wplist& [& S4 G( ]' {; k% w
      列出所有监视点
+ E/ H% w6 ?7 J8 N5 l0 M' q0 K4 _. @% e; A7 b) V$ e# ~/ c
    wpclear 3
, Y2 O7 J1 e0 S# {      删除编号3的监视点
/ R4 {5 \: y! ?1 x6 ]6 M; _
# _( r) f. Y3 M    wpclear+ F, Y- ~- E4 k% i" M
      删除所有监视点3 Y. _$ i- u0 ], V* m9 G

' J& q' G& X, H2 X5 n" ^      9 H0 [" [0 w8 M2 q/ j
( \  ]* O5 T# d. `5 I3 j0 I
程序断点指令: bp, bplist, bpclear
2 `  }2 P: H' @7 o    例子:* q' F" X3 N' J* p0 k
    bp 1234! U7 d2 z- P1 l# t" h
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断  f4 Z* X& I6 _

$ W+ A# i3 i+ t. K    bp 23456,a0 == 0 && a1 == 0
# N. G7 `3 k! u5 M% p  ?      在地址23456下断, 且中断条件为a0等于0以及a1等于0
1 n" t* v" @8 E! G% W. V& |! x, l! v0 N. K( Z) c2 k
    bplist" u4 G: d) O4 |
      列出所有断点
, A$ l4 Y0 W. f+ Z8 T
" N5 `% [4 B5 n# S6 q    bpclear 3
/ d! _2 X% j& k! X      删除编号3的断点
4 `. Z1 t2 S: f- G( U- }- B. k
; R8 n  K) Y3 N    bpclear
, t  e8 S& F6 q7 [' s$ w- t( A      删除所有断点
5 `: j) s; |0 R0 E& w% k
- P9 ]0 M# d7 Q2 T3 V      
% R/ {& X2 V- @6 P      1 W: b# v' b0 X( r7 \
跟蹤紀錄指令: trace
& u9 y, S9 L  I2 U2 t    例子:
" R* S" S# C0 F    trace 01.txt2 N4 p: v$ H- P, m' p% l2 W* s, L7 \
    跟踪当前CPU运行的所有代码, 输出至文件01.txt& B6 H6 M2 F' M5 i3 G5 s4 _, B9 D1 {

9 z$ i/ `4 r$ H6 g2 @    trace off
+ H6 a; ?! w+ N9 K    停止跟踪, 并且关闭文件
8 ]& d0 }. K5 w% |$ ^9 X
$ B$ T0 m& H( h% s  }8 G    trace 01.txt,0
, i) _8 K3 ^6 ?' M- Y    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
# ]  c- y! @  ?% S8 t1 |, t. V; P' Q, j/ {, f0 `/ q8 E7 Q
    trace off,0
; l& n, T+ q( I$ y1 L    停止跟踪编号为0的CPU, 并且关闭文件8 o& B: L( |& s! Q% T
4 Q  g3 [( g% |* G% a5 K; z6 Z
    trace 01.txt,0,{tracelog "A=%02X ",a}
" W' @) ]& X1 {' t# @- W    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt ( R& ]3 E: K9 h, b
    并且在每一行的前面, 写上"A=a "
$ l: \' v9 q; C4 S    "A=%02X ",a为一个C语言printf函数常用的输出格式3 a0 @( ^9 P. o* F
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
/ B8 }0 y1 |; I8 V    X表示为大写十六进制数0 c: X& _& [) O& _2 O8 Z5 L: T

" ]" ^- r' f  p' X4 s7 w
! s, o6 ~0 Z. |) ]0 \
8 v3 [' [, p; n内存直接写入指令: maincpu- i* U' }$ ]7 R! ?
    格式为 maincpu.[][]@地址=数据
  H% d3 |6 A: p/ q    第一个[]:4 f* O/ r' `  q& J
    o 表示ROM地址
/ _& s. ?$ i6 R    p 表示RAM地址
# ]* [5 K3 U. W8 G- g  e: `4 L
) a; v, x1 U# p# {4 x* G7 @3 H( J2 m7 T    第二个[]:' V+ v$ [  U1 N- A1 W; b
    d 表示4字节* f7 U1 \0 C& `) {; H' p
    w 表示2字节
8 v4 G! \1 \/ H) D6 o$ l    b 表示1字节
* A- S" ^4 R2 V; B6 M3 M! ]- }2 V6 W6 [9 }! a# {, a. ]% N
    例子:5 L3 ~) }0 o9 o. S
    maincpu.ob@1234=FF8 G& t, c$ m" u3 V
    在ROM地址1234处, 写入FF一个字节$ W! R' t7 I3 ]. J' {* O, j' A3 _

9 t& r4 Q) ^8 G/ ?' E  f    maincpu.ow@1234=4E716 n" P: H' x) ?9 F
    在ROM地址1234处, 写入4E 71两个字节
$ @8 q8 w5 H  I2 z/ T) A; _! K7 M3 t/ {: N3 K
    maincpu.od@1234=600A4E71
3 ~, o# s  g. n& m! d    在ROM地址1234处, 写入60 0A 4E 71四个字节3 W$ M" B8 U6 j% V$ t6 }
  Z; F, i4 ]% D2 Y
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
0 |2 }2 C& e% d' E' ]+ T  X7 E   
# ~+ f: t+ h5 P1 P* ?! L! Q! t# t* H# e( i9 X' M6 \8 n1 U4 M- I: @
其他:0 G: J9 u) E8 A& e4 s. a3 {5 G
    dasm 输出档案名,地址,长度
+ B+ _8 \) p( l" s$ Z, a    输出程序的反汇编代码
; l- j/ y/ w5 Z% k) k; k' y    例子:
" o6 K4 F3 k6 O4 G7 o+ O) K    dasm 01.txt,0,100000
! J' t! G" _9 C4 l1 l+ p    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
7 s8 j2 o% P) }  O) ?2 J: s* N) I6 ^- n" k8 j; h
    softreset
8 {! {7 L! ?! x3 F+ L    游戏重启, 但不重新载入ROM0 X* R4 Y: Z% U) @6 ^/ ^

' y  j3 o# g* y/ ~& p; l5 w    hardreset; X* |$ r2 I" H+ {# u) h
    游戏重启, 且重新载入ROM
# i$ r6 m' K% K+ a1 Y$ D- Z) O9 w9 d% a) }, d: q$ f1 L  f
    snap xxx.png( t1 i/ q6 p3 ]* N& N
    截图为xxx.png
( q0 n" z8 r, J+ ?$ V$ k0 ~
  m; v) V5 U+ \. A  
/ G" U. {* R4 ?! S& M  ) @& N, Z( o( N# k3 u% U: A
  ! f' y" B3 a5 s; A- H
热键:
* X; @' R1 ^- g% C; L    ~ 中断游戏+ I6 T% ^6 p0 G$ J  S
    F5 运行游戏
! G9 o6 g. k: o1 m    F12 运行游戏且隐藏调试窗口
' {6 P# f% m+ \$ f    F11 步入, 单步执行, 会进入子程序/ ^# T2 x% C6 W
    F10 步过, 单步执行, 不会进入子程序) @6 r$ |( ]4 p! E" a  J
    Shift+F11 执行到子程序返回
4 s5 w7 p( K' s5 L! W5 ]3 w5 r# s    Ctrl+M 内存浏览窗口! L9 u: X& C' w
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
7 t3 u( l5 g3 V/ ^5 E  _0 c& x9 ?# [9 p
{:4_94:}
6 W% Q! V* f4 I3 _- n
) f8 P; B' c" k7 ^8 x& r

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2549 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。; n4 k6 i7 b/ C

! ?6 t1 M- ]! G5 m& \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 | 显示全部楼层
要详细些的东东
$ D7 ^. K% [) B11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-17 16:20

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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