设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
0 J8 D8 v. w3 t! S5 k- A4 N* b
很快速的整理我自己常用的指令
1 k) ^- G8 O6 ^' c
; j2 K/ }3 T- W; E5 R{:4_112:} + x6 O0 u! t  v  e) G

% Q+ P# b" I. Y; u) y( ]2 hMAME DEBUG常用指令
, \: M; e3 K+ F3 D& V( M% E7 h( v% G3 T+ O
  V( x! q3 m: |  c8 i) H- ]内存搜寻: ci, cn, cl3 M) d! F  V& O& w( G
* k, j3 _! E" B8 H# f
    ci
! L* @/ K$ @& `, _7 X  ?    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
: I1 l, R/ u: }/ J3 P  z6 m9 Y3 `6 w7 ~% B8 [
    cn1 x5 T# d* i+ f' e, o; {# t
    搜寻指令
$ ~* q) Y! t4 H1 L. m6 [    例子:
3 S5 d1 A1 N1 m' F6 _* Y3 _    cn eq,60
. j; v* u9 e/ k, V7 e  `, ^# r    搜寻目标等于60 (十六进制)$ }5 `" D) K! b5 l5 `/ }& V- r4 I
        
* O+ C6 P1 M) j- c    cn eq,#96+ _1 n4 O0 [( x
    搜寻目标等于96 (十进制)
9 z3 {" ~- {9 B/ F
1 g( Q/ \! q/ r$ ], F    cn eq$ U- P: m, D, x& j; N& b! l1 ^
    搜寻目标的数值没有变化
* Z, H0 n2 A$ f' _2 H. P/ b$ E7 d6 a$ K9 r% Y& \& Z  W
    cn ne( v6 g" ^2 R' b9 b. I% h5 C" }
    搜寻目标的数值有变化3 h1 f  g& [3 m$ V! W0 F3 z
        " l- @9 D# I/ ^8 U2 m) @
    cn +3 ~  y8 N0 ?1 K' n: b
    搜寻目标的数值增加2 a( q& R5 C% T: @  P: U. }  R! k
   
1 B9 X# \5 ~, w+ M" S9 k5 @    cn -( L! g* c0 {6 q% ?5 f5 \
    搜寻目标的数值减少
2 x9 L) a# c7 @        ) A1 N% ~3 U, E" x& _& O
    cn +,3
7 R) `, w4 d) K6 K    搜寻目标的数值增加3 (十六进制)" K4 S1 y7 {7 {' c! _

9 n9 W+ N* B) L/ Q# {    cl0 T2 F& r. S* K4 P! ]: J, w, u
    列出所有搜寻结果2 z# k2 G, l4 G$ y, B3 b/ ?
" ?& k3 u% g5 i# {
    cl xxx.txt
2 m' B( B! P3 d* b    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
3 q( Z3 S1 l! [2 e. y2 w
7 [2 T/ `, T  n" ]2 v" m    1 p- b9 l; O3 S9 |; V& h+ {$ j  g* m
内存监视点指令: wp, wplist, wpclear
" p7 y6 \* d: [' X- q' R1 @% U5 g  T    例子:
$ b$ T$ N. W: @+ I' n% B- _    wp 1234,1,r
) o# X, i. y) m      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
( D2 r, S" K" k1 l! O$ y; Q) ]% K) S3 m( t
    wp 1234,2,w* y4 q' h6 i  a/ L/ _; T% o7 _6 B
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
4 Z" e; k6 a* u8 m  R6 X3 U     ; t3 X: u) h$ K# K- f# h) A. v
    wp 1234,6,rw4 o& i( V3 k+ t0 O* Q$ W
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
+ i& G: k; w" }
& r4 G: H* I* d  e" j4 E, G5 j    wp 23456,a,w,wpdata == 16 D" q- u4 z+ C+ O
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1. g( n3 z1 e0 @+ G
1 F0 N9 A% |! s' Z& e6 Y0 s3 b& U
    wplist9 p6 a4 x/ @  M$ V. @/ q$ I
      列出所有监视点6 E- P3 e5 R% u+ r0 U

/ h' T, r7 ^; M( H3 U6 e# H    wpclear 3$ Z4 C$ i  x& T  v, H; W9 [4 O4 N) {, c- ~
      删除编号3的监视点
7 m4 c- ]# B5 q( l" M  {
  M1 Y& l  X3 U2 J9 C3 H& x" b. n; d    wpclear
9 o) j/ q& M, Q+ |# y      删除所有监视点
$ w- |8 f9 G$ ], ]# M/ W2 J% J$ \' O
      
5 z9 k4 V. E5 @: _! @' J. J+ P) Z1 F) Q3 ?
程序断点指令: bp, bplist, bpclear3 d8 d1 t' r+ H) Q
    例子:
1 I' Z0 t. Z1 i# O    bp 1234
! `  {- G3 V4 _( U      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断( D+ G+ e( F- p
" F9 @# L4 o5 E) D7 ]: X/ r
    bp 23456,a0 == 0 && a1 == 0- ~; R2 j/ |* u7 b4 |* q
      在地址23456下断, 且中断条件为a0等于0以及a1等于0% |0 Y- u1 ^3 g, F
( T/ _9 a! W8 k$ p/ E1 \
    bplist9 Y  v( s2 T# T! N9 G9 C7 J9 Z: o
      列出所有断点) I( w( z" ]  w% B* N, T
; e1 k: i+ @; }% w: R( _
    bpclear 3: i5 S: d9 Y6 A. r: O' T7 _! n
      删除编号3的断点
2 T/ D. R( P9 r  _
' l8 [# V  _9 x8 g2 R    bpclear
7 `4 ^% O& g% }7 P3 f3 g. x; x      删除所有断点
! E  z7 O- ^2 I" Q
* G0 ], F" Q2 q' B0 w' T/ a      
# n% U% q+ j# a5 J# R      4 J. X5 ~5 |& j) A! M% G$ k, u* I/ m
跟蹤紀錄指令: trace+ r" w' T$ Z. G" P% O. B) |6 J
    例子:) U3 r  v% Q0 H' U# _5 d8 M$ l
    trace 01.txt
+ z2 d  e# L% f6 F    跟踪当前CPU运行的所有代码, 输出至文件01.txt- j$ r9 h- c7 J  F  X
2 [  n$ X% u4 G, p1 R% l$ S
    trace off- \; }2 B! C1 ^) o9 t/ c3 j
    停止跟踪, 并且关闭文件/ s8 [6 M9 S7 p5 W! v

1 d  H+ O; ?& u6 P. p$ L    trace 01.txt,0  c. M% {3 I2 Q4 g* s3 K& A
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt" m# }' r6 W- H- X
1 i* G0 v# t# t2 A+ ~% P
    trace off,00 \# F# P4 @3 W8 B
    停止跟踪编号为0的CPU, 并且关闭文件
0 X! F* i: v  x0 b7 [7 c+ U) F4 {; F; U# [) A* p* n
    trace 01.txt,0,{tracelog "A=%02X ",a}' m4 E( [, n1 p% t
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt ' B2 ?; n# m+ P+ z' {3 T4 D
    并且在每一行的前面, 写上"A=a "3 F8 W( V* M. R1 r5 G
    "A=%02X ",a为一个C语言printf函数常用的输出格式
) t- `  E. h$ `5 P* q7 R    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
1 c9 g3 I0 u" o5 M: P    X表示为大写十六进制数
/ V% B. D4 V$ |; {2 A# v
, ^; L5 u' `/ r  ^8 a
% u3 V5 G# M, \" m0 R" U  s: u/ `( o! u
内存直接写入指令: maincpu
, U' F/ S, y- [+ }    格式为 maincpu.[][]@地址=数据9 l1 D- r5 {) Y2 J1 I4 P6 q
    第一个[]:
- Q1 K- L; C( v4 G. A7 v* |    o 表示ROM地址: A8 k8 |# b, Q8 u8 q+ R
    p 表示RAM地址& @0 x& N6 q8 ~- i& r

9 f6 |, V/ Y7 O, d3 K    第二个[]:
  }. I6 \  a8 N+ I! e7 s    d 表示4字节
" _! {( F! f% L" G+ k" H    w 表示2字节. z: ?( M" l! ?5 u
    b 表示1字节. l# Y/ Q4 `" t9 \# d+ a

; u: _% l/ N# ~! s1 E    例子:, D1 y" F9 v' U; K! E
    maincpu.ob@1234=FF
8 d+ J6 s9 {: H1 y    在ROM地址1234处, 写入FF一个字节( G5 A% y! @" A  N) e7 E

# ~$ z* _# s1 Z1 ]7 i/ l; i* @    maincpu.ow@1234=4E71
9 ~* O( G6 p5 l" X! U& ?) E    在ROM地址1234处, 写入4E 71两个字节2 I: Y8 M) m) |
' z% u% i) r2 W9 Z* a" b. X
    maincpu.od@1234=600A4E71
# E  y! a! ~  \% R# t  M    在ROM地址1234处, 写入60 0A 4E 71四个字节* r8 J3 U/ ^9 G, \, I  t
3 n: _3 h6 r; \. J& a2 j0 R
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写1 F4 C" b8 @5 `, K: s% u) y
    , M+ L& z, o' L2 v$ e: v
4 t1 w5 r7 V6 q" l. z
其他:
7 N9 f# k1 h" X  I/ ^5 B    dasm 输出档案名,地址,长度+ Z3 |5 K$ r' Y4 D! V7 p
    输出程序的反汇编代码. @1 h2 C6 O4 U" ?5 Y8 @
    例子:* q( S4 ^" _" C- u* l! i
    dasm 01.txt,0,100000- l+ o/ y5 N& J- M' X: c2 M* E
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt; i8 ^$ i) Y; J/ Y" o8 g# b; k
8 H9 T- y& U! ]
    softreset
7 f9 x& t* m. X! Y# {    游戏重启, 但不重新载入ROM
3 E* a6 o' Z& V  ?* t& O3 ~( ]5 N7 O" x
    hardreset
7 v: ?- J  d' O4 d; j    游戏重启, 且重新载入ROM
) V- H1 _) B8 A) O/ p
, D, h( a& b: C) _6 Y    snap xxx.png: m8 ]: `; c# r7 [6 `8 u6 W# ~3 X
    截图为xxx.png# c0 I5 n, S; y( B
5 o) j8 \' q/ A: K/ }3 ^
  # O7 z8 b8 P6 e# r0 f
  - e) c  c9 P2 V" J8 J6 U
  
" z- {, i9 d! _1 r7 Y/ h2 D热键:
. q# Y1 u5 Y# ~9 @$ k    ~ 中断游戏5 ?+ T+ \6 o2 n
    F5 运行游戏
, w& w- h- a* c    F12 运行游戏且隐藏调试窗口6 x+ ^2 T6 f& Q( w
    F11 步入, 单步执行, 会进入子程序0 C, }% v# ]0 ]. k" i: z" r
    F10 步过, 单步执行, 不会进入子程序
& m3 s6 o: y! c    Shift+F11 执行到子程序返回
) H8 D5 l9 N- L! e) N    Ctrl+M 内存浏览窗口
" M& b5 P0 E4 `6 U    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
3 h3 H2 P5 ^6 I- x) a: c1 k) e
+ F3 a+ D9 o: j! u{:4_94:}
* l. U; o7 J; f& l! g/ r5 w, t% R9 G1 a
2 O1 R5 m0 J6 C" d- L) }. W' I

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2559 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
6 d  M. _+ u. F0 X% U6 }
$ `- e/ n1 h  F. ^  @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 | 显示全部楼层
要详细些的东东3 \, @2 J- }) J8 G
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-11 04:22

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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