设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
& a9 g; D: _& g/ @! P- H. d) P, G
很快速的整理我自己常用的指令- T8 ?9 z; o) c6 y- z/ ]% k

; d% ^; D3 ^( V8 O2 O5 W{:4_112:}
3 m+ w- ^; \1 ]( q1 o' U+ l2 h. o/ R" @+ h( {4 E' B
MAME DEBUG常用指令. m/ K% \2 n# B  I  P" v% w
, J) Q4 P9 \  |: w
内存搜寻: ci, cn, cl
9 q+ ?4 C0 {7 F' _- G1 U# L* s  s) F- D
    ci( n1 h0 ~- W) p; P8 K% y6 b
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
; N3 g" G: y) y6 y5 R7 E& }+ D5 B8 g; r3 a3 Y1 w, G
    cn% l- N2 U2 ?5 E& O/ p. z8 s6 U9 D# {# P
    搜寻指令& A2 B: [* V7 ]
    例子:2 {. s: |2 b% b6 K# i/ y
    cn eq,60
# ]3 G  ~. |" L: B, I! [9 V# x0 {+ h    搜寻目标等于60 (十六进制)5 |' R; Y3 F  E' \6 f, c
        
9 w; l+ V* P( o9 E    cn eq,#969 u+ m. D& E1 l) l) o
    搜寻目标等于96 (十进制): _" _7 }2 @4 u$ I

( E! C5 p; U  K; T% `: W% @    cn eq0 w' g7 s, v! H& w/ E. ^
    搜寻目标的数值没有变化
# O1 }8 e0 B( k( w1 s
3 |! K7 ?4 p' ]# O9 Y    cn ne  [: X: A6 X( d9 u: e) F% d8 w1 U  V' s
    搜寻目标的数值有变化
# |( f) g& ~3 X8 m$ d; {( [        % n* F9 t5 h8 o6 t- r' R
    cn +1 r- U, z2 x% j: ]
    搜寻目标的数值增加! d# V- I1 I8 N6 y
    ! f+ m* X. f6 g( E6 C" o& B
    cn -
0 ]; X+ T* k% X5 m7 ]    搜寻目标的数值减少
8 `! N. ~/ B- ?( P; L% Z        5 f5 Q: b3 b3 G
    cn +,3
: R9 l8 P5 @2 y3 Z3 L: m) s) y    搜寻目标的数值增加3 (十六进制)9 l, c; ?* Q4 }; O: Z# c8 n

! z& m& f% w, P1 |1 J0 k    cl
! x* f) o% n9 K* @7 V    列出所有搜寻结果0 ^, k* b0 ~3 F. e) V' G
5 @0 \* u0 {+ n: J% Q7 O
    cl xxx.txt' S. {* c/ B# m6 H( ~, L2 B
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
$ P0 Q* L# v9 M/ V& F* A4 |: i$ s- D8 |
   
6 k5 ]7 A$ n$ u! k) a3 f内存监视点指令: wp, wplist, wpclear
' B9 }: c. E2 U- f' R# S. n    例子:' P! `/ ?0 W; u1 z% [0 [) ^+ V# Y; Z
    wp 1234,1,r; |; Q. @" p3 J1 O, _
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
& D+ d4 T1 k! R6 f3 p. ?" T* i
  @# {3 x' Q6 W: t/ s$ M    wp 1234,2,w
" S  u; \  j& C' i      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2& F2 [: z' V9 x# a$ S4 x- ?
     
, z2 |5 w3 ]7 \3 N5 l- w- M8 _    wp 1234,6,rw
4 [. [: _' p" D. K1 M4 i      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6, E, k9 y" q! }0 u& U2 s2 r
# i2 a& Z  n% `& u7 t' P: @2 R; F, h
    wp 23456,a,w,wpdata == 1
. m( L. E7 i( Q1 P4 o      在地址1234下写入监视点, 数据长度a, 且写入的数据等于17 r0 H( x5 w2 k; G

! ^; f' [  ~1 @9 L    wplist1 T6 l" p+ N8 r3 d; K
      列出所有监视点
+ s& H3 v6 \% D7 L  ^# `3 X7 r2 v9 {4 D; t8 {
    wpclear 3% D0 I% V5 ~5 {& {
      删除编号3的监视点
  y9 e# x1 u" Y" s; A' g) ?+ B9 r5 r
    wpclear
" i/ Z& p7 c+ i! J      删除所有监视点
3 a3 F: L& p9 n, W- G4 T4 Q+ s
2 R0 t. |5 g( ~0 n; ]1 E6 V      - {8 f  n2 A3 L' M- x7 Q

6 J/ p8 P: E( C7 R" L程序断点指令: bp, bplist, bpclear3 T* E5 o1 `) R2 s( C' s; O# @
    例子:
! l/ d+ }6 A% o2 U% Q1 [( S9 |    bp 1234. C* b( k' G5 m2 s- s% e
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断% I: h7 n6 T2 s' E# }# b
. ]! a0 W2 [. S+ s. W2 h$ e
    bp 23456,a0 == 0 && a1 == 0
3 i/ S" a- N+ @) C- P      在地址23456下断, 且中断条件为a0等于0以及a1等于0
1 r" t& }$ G; w" c# u0 j
" ~( ^3 W( M5 Z1 p3 C    bplist% {0 u0 F& ^5 B9 C6 j& h
      列出所有断点9 x. }* |) p' z0 ]8 v
( |" c1 [/ P6 |0 n- G1 _' I2 r
    bpclear 3
4 y. j9 R* @$ u+ A, K0 b6 y      删除编号3的断点- v3 l, @* Q; |. ^

; q/ j6 a# i$ Y: r    bpclear
: o4 }1 N2 k9 v" e0 ~0 p/ k4 h" h      删除所有断点3 C" h5 B* z: H) X
4 Z' c4 L' C  [* L! f% f' K/ u
      
; s5 G6 V3 j; Z* D. y+ H      
. P) S8 k* m, i7 e8 ~  q跟蹤紀錄指令: trace
1 l" R" h6 n) _# K. ~# I2 n) W    例子:+ t1 @- \3 d6 ]- _: H) F% j
    trace 01.txt3 e1 R2 R6 b+ H" I
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
" I8 S5 k7 `5 Y2 P7 O2 R+ x. D2 t0 [! W
    trace off% Y2 C7 o/ x, m' @7 Z
    停止跟踪, 并且关闭文件
& a" r3 j& I* P* G1 [5 n5 v# D. E
    trace 01.txt,0/ }8 r- X5 U+ B5 B
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
0 Y3 S8 V3 t& R1 z# D
! w) {4 Y, \1 Z: @7 v    trace off,0  m+ l6 o: I% C( I! |& h- e, a
    停止跟踪编号为0的CPU, 并且关闭文件" i, e7 h& _  Y% G2 x
4 C' Q7 X: u! I. u  Z
    trace 01.txt,0,{tracelog "A=%02X ",a}
, ^2 y# h+ N- @  D3 k2 y" S9 }/ C    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
# Y3 W! z. a' T5 W  x! V5 P& ]1 I; h    并且在每一行的前面, 写上"A=a "
/ I" e5 L) ~- B+ E  R* z    "A=%02X ",a为一个C语言printf函数常用的输出格式
8 Q+ k7 l; z  r! ?6 b+ u7 a- \: h    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
( K/ o- p) K# \4 q" K; N    X表示为大写十六进制数) M& S: {$ D8 z5 F& e

- d# D* q" r! Z- y: V$ h$ e# t1 ]* W. ]- M& G

, a5 s! M' [# G& n内存直接写入指令: maincpu) l0 I7 y# S* Q( s' f' e
    格式为 maincpu.[][]@地址=数据
# B  t# f* c) K3 Q    第一个[]:
7 ~6 l. l8 N. g, D5 G    o 表示ROM地址
. E8 R6 U( u% x* ]0 A" @& i    p 表示RAM地址
9 ~* Z& X0 [3 h. D  d
4 P% g2 \* h" e- G0 q: }% b    第二个[]:9 l4 a: r$ D  m3 k3 g
    d 表示4字节
7 u# b# o, c6 I7 Q2 v    w 表示2字节
% Z5 n1 z$ w% q) c9 R, n    b 表示1字节
, z' _+ F3 i2 }7 S, D; @( n. R. j; c3 w! D" B
    例子:
0 L: [/ h/ N3 b9 n    maincpu.ob@1234=FF, I8 a. v7 [6 l
    在ROM地址1234处, 写入FF一个字节) r7 ]  G+ q# c4 f5 l0 A
3 C+ Q& x7 @: `' [
    maincpu.ow@1234=4E71
3 m4 X; i& W* E' e- B. D  c    在ROM地址1234处, 写入4E 71两个字节
6 [% l, h4 |' T4 P* _0 L9 l# h4 b: V/ [7 ?4 Z% v
    maincpu.od@1234=600A4E71* y' a; ^6 ^% }: N! P
    在ROM地址1234处, 写入60 0A 4E 71四个字节# D& c; Z4 m1 I

+ J6 E/ A9 o- U( a- T    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写# {! P) u: Y+ [$ `' H3 V2 J& t
   
, X1 i; a. _  E. I' M. O% p2 T# S# T# K4 j
其他:
7 A$ H5 L  {  m9 ]$ K# G    dasm 输出档案名,地址,长度9 }6 {) Q$ f2 E4 O9 L
    输出程序的反汇编代码
7 o- z# s4 o2 }1 t9 b7 m1 b0 L    例子:
; ~! E2 O  T" C" l/ P/ U$ G    dasm 01.txt,0,100000
# \6 U. k1 {4 C0 m& [4 U6 f; G! f* y    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt: h/ M+ L! V- R' u: j# i' c1 t8 r0 F0 [

$ ?7 L+ z3 x: v    softreset" ~/ {: b/ q; N
    游戏重启, 但不重新载入ROM
$ |1 J- R- S; z, {
3 j$ M9 C0 W. S    hardreset5 Z: s% |9 ~; L  Q- _) t
    游戏重启, 且重新载入ROM4 T4 z# F- V# w: F: n9 c, Y
8 l/ G9 G1 y: o* `
    snap xxx.png' E+ J* d2 l" b) R2 p3 s/ V) \
    截图为xxx.png8 F- d% s  K& B" ~$ g5 _
/ w& t5 ]% Z( D3 m! J2 W2 o2 `; M, H
  ( Q- S: ~- ]$ G7 R4 i3 G+ T
  0 H# k0 c' j. i& ]
  
% [! P! x! L# G' E热键:2 U! B5 X( H4 L5 T; e% x% S1 W
    ~ 中断游戏
7 U$ E. f  J3 v9 Y/ o    F5 运行游戏
  K% N, u/ x( h9 S' w2 A    F12 运行游戏且隐藏调试窗口$ O! H- S# m# D- p3 n, W% w
    F11 步入, 单步执行, 会进入子程序
0 s9 I) R" I9 f5 w6 M; H/ X" y  D) U    F10 步过, 单步执行, 不会进入子程序
* t: b, b& X+ K+ r# U" O8 b0 O    Shift+F11 执行到子程序返回
4 O  n6 C! V! K: G' e/ }7 P& C    Ctrl+M 内存浏览窗口
1 }3 T2 m7 l1 i: s. M    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
2 R! A( M- N- e# a: E9 M. Y) V5 W& E
{:4_94:}
& P8 Z& d% O1 r6 p" ?* Q
# C5 K) [- j  j* Z: M$ ~" M" C* M9 J/ e

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2553 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
* K0 y" P( W; h- K2 v% i1 w! P: G1 j+ J3 f' G% j' E
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 | 显示全部楼层
要详细些的东东, _0 R( Z% s5 y
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-16 17:42

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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