设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
) G; k. e- F7 P- {$ @2 E
很快速的整理我自己常用的指令
+ y5 g# ^/ B8 u- ?( C0 y) U" A$ O& u: {$ Z% X- f$ v
{:4_112:} ; _0 `" o" j4 O# d: O3 r# R7 Z
2 |; C) w5 H7 k) D: c/ C6 n
MAME DEBUG常用指令
! h+ b9 a, v+ |
8 p! }# y: A3 d6 M+ T" ?6 R内存搜寻: ci, cn, cl2 _0 J0 |6 Q+ O2 S3 c0 ?
& G# C9 i7 @, a& G  }/ y
    ci
% e4 y- P( Y* V; y    搜寻任务初始化, 每次搜寻一开始一定要输入这指令+ a+ J8 T9 m8 C

: |  Y4 E$ H' G/ R, \- S) |: b+ P) f) v$ M    cn5 u  W, N1 f: Y0 `: P% n
    搜寻指令2 i8 G. N5 h. t$ o' C/ x0 H/ a
    例子:
' b" t7 i' H- ^8 \" {    cn eq,60
/ X+ e  N# ~: [3 `1 l    搜寻目标等于60 (十六进制)
/ W+ ?; C( `% k! d* `        9 m# A4 X1 S  h  p
    cn eq,#968 L/ I' p' D8 {: u# z9 a6 {, ~
    搜寻目标等于96 (十进制)5 _4 m  W, `" [. H" J- j) o
1 m- @% |+ f/ x& }) ]
    cn eq
9 U5 K* m0 }  }7 L. q3 k    搜寻目标的数值没有变化3 B- x: Z( O/ D- Y: c/ x
+ j! Z2 M' @1 _& j! z- j$ M
    cn ne3 P2 `0 \( v  f, `
    搜寻目标的数值有变化0 c% `9 a* @5 o$ i. n- f1 {# Y& t" m% ], J& K
        . Q: a( c- s9 g4 _
    cn +* X' O; _4 Y! Z- r
    搜寻目标的数值增加
+ U5 J* K/ Y5 j" [   
6 F) N6 X$ T) z9 v: ~4 O    cn -
8 x8 t* B$ {, y: w    搜寻目标的数值减少3 N2 d( H  u; X
        
& x- c& x; Y4 U' L: x    cn +,3
2 D* a' R. _7 F0 ?3 J1 h: g    搜寻目标的数值增加3 (十六进制)/ T' k8 p# A9 L$ N# m$ u5 L( b
; f5 p! B( }+ t9 }
    cl& u+ p! \' m( c
    列出所有搜寻结果
7 A: f5 `' ]" S) q. L0 E1 O
4 @1 e) \$ t) L+ J: p* R" ]    cl xxx.txt
- d7 q( }: w3 R" I    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
3 S+ ~3 O- P2 [) }+ `  N$ `1 L3 M: t( }: T9 s7 L3 M
    $ ^( L/ s4 m, R3 t+ R. ~
内存监视点指令: wp, wplist, wpclear3 E0 R; C/ [- a$ _; G
    例子:$ G' N  Y) C7 P
    wp 1234,1,r
. ~0 ]3 Q  R* Y' Z8 z8 G9 B" N      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
, {% T# @" ^/ U( Y; @' m* P* ?% n8 N( S& g6 }# c9 s
    wp 1234,2,w+ `9 T4 S- X" k9 Z; U6 B1 y, U
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2$ u# R7 b$ N% V6 U7 ]- b
     : X5 m! @2 W2 W" k
    wp 1234,6,rw9 N- _6 D, E) s8 ?
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
4 d2 T  I; E9 C' f$ h
% m- n3 G* n) l0 A; a- @7 [- Y    wp 23456,a,w,wpdata == 12 R8 I* j8 H3 A1 D# ]  n
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
3 }  w; n5 |, s0 O" P( x# }
7 l: b8 z4 W6 P6 G0 X7 P5 ^    wplist
$ B: e5 @3 \$ e6 j" z1 b      列出所有监视点( u* Q0 Y1 O$ Y4 B' ~* u& t
8 R! l( j* |4 L
    wpclear 3' }* E+ k: T7 f; D8 V1 e0 q9 a
      删除编号3的监视点& D: s: g! Q" B8 {
" O4 d+ R" L. z$ l
    wpclear
. h2 }5 c3 s& ~+ p' T      删除所有监视点$ G+ k- t: \+ |4 A: L# H6 _
, ?, f7 v+ i" X' M0 x
      
6 [$ t0 h  d3 E; z+ `1 a3 x
9 |) L* o/ t- m( A0 v7 c) X程序断点指令: bp, bplist, bpclear
3 w1 |. L; M. W/ o% y) z. v    例子:& y8 m+ V; W% |5 p! d; j
    bp 12342 z$ O6 z! R% Z& m9 D  H& j
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断0 S9 m0 p1 _* e  q" T2 l
* k- s' ^) f8 J' Z; v& m
    bp 23456,a0 == 0 && a1 == 0
3 M3 |/ x! S( f( F- r      在地址23456下断, 且中断条件为a0等于0以及a1等于0/ Y! z' H  Z" `3 s0 B7 D( ~

; _6 _$ x% p  {! d    bplist
! H- e! X2 A! ~8 @& N% F      列出所有断点& p4 I# D4 P) B& X  t5 p1 a

8 ~% a+ ~) z/ j' Y    bpclear 3. w0 {) o# b. E' T
      删除编号3的断点
. f: S; O) r5 x1 ~, H# s. V- [; _4 n: ^# D4 M& h) i# ~
    bpclear
; ^/ R  M. x  O* t1 W( y      删除所有断点
& Y/ ]1 `: a  z  b3 Z1 H/ G7 r4 q) U2 F0 Q! i2 t* }- @
      
# ]% x2 R9 C5 d. A( }8 ^      # q4 s1 l& G) a6 q9 C3 }
跟蹤紀錄指令: trace
% g, s6 J$ m' [    例子:( g, p" u- w5 H" o
    trace 01.txt, V& q! M3 ^% ]5 S
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
# q* r9 w, n3 |' A# j1 b8 l
' j0 n, Q7 v( ~$ v    trace off' g7 c& z! ~; i$ p7 r
    停止跟踪, 并且关闭文件' Y; ?2 k+ A' K( h+ ^8 B, k3 f

# Y2 ?, ^; B: A" o4 d: Q* S    trace 01.txt,0
2 X( T$ j! a- X7 U    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
: [- B+ `/ x5 E& q( M& [) Q4 c) Q( a" x, g# ]$ g8 I  Z
    trace off,0. |* {1 q5 |; n! F. t% _3 \
    停止跟踪编号为0的CPU, 并且关闭文件0 [" O' l  q1 N

9 ]6 [# w* ^$ Z- T9 [1 t    trace 01.txt,0,{tracelog "A=%02X ",a}# N- U) u& k/ o  X
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
  W2 B" f) P* p) E5 k, y" \    并且在每一行的前面, 写上"A=a "9 B. l6 z% S5 [8 M
    "A=%02X ",a为一个C语言printf函数常用的输出格式- B3 o0 R1 e6 g% I4 S
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入% e; [- v3 e2 }% }5 [
    X表示为大写十六进制数
3 x! H" R, ?# G) d2 a* h. ~* O7 f8 l) |4 D7 D

% s  m3 r2 q+ W; e# Z; L' Z
* N& Z- {0 s. C0 B内存直接写入指令: maincpu
, c9 ~& U& Q3 y. E* M    格式为 maincpu.[][]@地址=数据
; ~* e! h  n8 e, |& n# ~) B. v    第一个[]:
( w% @+ ~7 g! h3 \( ~# H' y; S) Y    o 表示ROM地址! M' B: d8 l! O4 [4 F0 K
    p 表示RAM地址
" k! |0 p) l8 m0 t( l' ^7 j- i( v! Z% n. p- _% c3 t9 }  r) h
    第二个[]:* x5 u) V$ J" e& ]/ N1 \
    d 表示4字节/ ]% }7 }. K" j% h$ a" i3 {
    w 表示2字节
! I) }6 u( B& z( k' p    b 表示1字节
" z2 K2 n5 o4 _7 X+ w( y4 y$ w$ J& L( K$ p
    例子:
- |% m5 L/ e0 P- w2 H/ o    maincpu.ob@1234=FF5 K8 f5 B  R1 H3 K- f+ o! j
    在ROM地址1234处, 写入FF一个字节
. B+ O3 }1 _3 ]9 s  e! Q3 c- L- Q; G7 _8 A$ A  o
    maincpu.ow@1234=4E717 V7 [: n' G8 d9 |
    在ROM地址1234处, 写入4E 71两个字节% A% a3 w; p. q9 C" J$ B2 y9 A1 h( L

- x* X5 D* f7 f  R- T& z5 ]    maincpu.od@1234=600A4E71
4 _& W4 z/ G, J& u: ]    在ROM地址1234处, 写入60 0A 4E 71四个字节
6 }. [2 W0 s! g# }( L
3 P3 d* j  U) L1 k$ ~9 c# }$ I    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写$ v6 _3 g! c$ I3 f
    8 E  P+ e* P" _7 E# |1 d' H
5 V$ y1 E  S: E8 b1 y5 N1 ]
其他:# J+ A& S- _( D# ]5 x
    dasm 输出档案名,地址,长度# o) L6 l1 j9 N& E) `
    输出程序的反汇编代码
2 l1 _) A+ p0 L: t    例子:! m  C+ ~: z4 U+ Y6 c' W2 }
    dasm 01.txt,0,100000
% {+ P- L( u' Y; l  |: U    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt& h8 C( m& M& x4 a
5 f6 K1 R2 [* q" H1 \& f& j8 w
    softreset
7 U$ L" J2 S0 B8 N$ L; s* q0 p    游戏重启, 但不重新载入ROM7 j- f4 A" G8 l* e4 a: D7 V- B! O

0 l" i& r3 b1 J    hardreset. }& S1 U0 ?" {6 Q6 H7 b) ?/ R
    游戏重启, 且重新载入ROM4 g9 X3 F+ i8 B2 f
# z, q9 w# i) k. |5 [, [
    snap xxx.png
8 Y+ @+ k" K8 G2 e* ~, u    截图为xxx.png, W  s3 X# H; T2 B0 @

* }" c. [6 X" B+ q' t2 j  7 n6 v1 Y! \2 L# N6 l# D6 L0 e. l
  
( n, c; W( i3 @2 e( Q) e. U  
' g( D  b" @* r" q; V热键:
2 \3 y3 O; G& g    ~ 中断游戏% x4 I) p" L# v/ s9 [1 d- B" z: C
    F5 运行游戏) }& P; c2 ]" s% m1 A
    F12 运行游戏且隐藏调试窗口
8 q4 b6 |: N  b) l) U! \8 t) f    F11 步入, 单步执行, 会进入子程序
& a  q9 n/ p5 d! o. F/ _    F10 步过, 单步执行, 不会进入子程序
- R0 E' o# Y+ P    Shift+F11 执行到子程序返回
( r9 D5 P$ C$ t    Ctrl+M 内存浏览窗口$ o- ]  w7 Z0 t4 S
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU/ G( q4 F7 \9 [3 N
1 F) ^2 Q) z3 \
{:4_94:} : o& N& X, Y; \& y# B

$ I9 ]3 V: L1 u% c

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2566 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。! T# {% {5 s, N3 J9 ~
8 z( n# m' P9 m9 \
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 B( I7 a- W7 Z2 Y, X* E! X11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-31 10:46

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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