设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
% i8 _; `* L5 f, R- q# O
很快速的整理我自己常用的指令
7 }4 j9 S2 O5 K9 Y$ Z7 `0 |- V+ {7 W9 g# R& T# o5 A% l& |
{:4_112:}
' }2 v9 i+ _. O/ Z. O3 Y4 u
3 e1 U- L" G7 O2 P: h) j; @5 zMAME DEBUG常用指令
/ B. t' G  A) o$ p( L3 c6 Y4 N* o! |- N" d0 B6 ^( r2 g, p! S
内存搜寻: ci, cn, cl
2 l' p7 O7 `% d# D( K5 F0 I7 w; k6 W. m
    ci0 E0 D6 r4 l  j7 {6 \0 U' X' f
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
2 V' Y# |+ T2 w( Z. P# p) z' S: y! A( i0 Q8 t
    cn2 P( Z5 o  F: \# q6 d# J4 X
    搜寻指令
4 T( o5 u8 ^6 O) K    例子:
3 Z- f) d& c7 f& _! ~) R    cn eq,60
0 e/ b; d* X' J/ j6 q1 I% F    搜寻目标等于60 (十六进制)" j3 k& z8 T) l9 _8 c9 z- G& @
        / M' K( C9 H! x7 l2 q2 s- G
    cn eq,#96
" t! m, ?  l8 @    搜寻目标等于96 (十进制)" y1 T4 S; G1 n1 A
; f0 r* M$ ~% o1 w
    cn eq
1 ^) R# Y' M! O$ S- C) \# U    搜寻目标的数值没有变化
5 S' Q" E" w  g7 _/ x3 r% u8 n% ^- c6 @8 w' ^' k  a( U  m; p
    cn ne
1 `$ j! z& \: q  {1 @    搜寻目标的数值有变化
4 C. q7 d# h5 F        0 k, @( _/ I2 Q- s, W; X9 U
    cn +
7 ]- g3 a& c6 U8 @3 x+ y    搜寻目标的数值增加1 ?% C8 b  n9 K" ~% z- K0 Z( S
    + \2 C5 u. |2 F4 \# j2 F3 t5 \
    cn -
5 e/ }) R( p2 j    搜寻目标的数值减少. W/ h( R0 q( L! X6 u/ C
        
" J( l) @  O/ ?( x    cn +,3- p. \+ M7 J; `
    搜寻目标的数值增加3 (十六进制)
! a  \& A6 W9 `5 Y
4 v; N8 a1 O: K* Z  d+ z0 ~; h    cl
3 L, s, [3 I! ^6 x5 N    列出所有搜寻结果: R2 l3 \. Q- C! W
' }) v" \7 F5 ~
    cl xxx.txt
& C' n3 b6 c! P$ l# r* Y7 U    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
& v, a' W  n( Y$ E: H9 r9 w# {( a' t1 e9 s7 e* h3 G
   
( R8 s  ?( j4 X内存监视点指令: wp, wplist, wpclear$ y3 J* m' \8 |3 c( X" N: Q& n
    例子:
) a- H2 @+ Y  l& T    wp 1234,1,r
) z' w- f+ U1 y& S3 U; O' u! @      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
; y/ F* T; w" \& K) P# M
: ]9 ^  `4 P" e! G    wp 1234,2,w, e: p, s: `9 {( t
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
* ~+ E% n% e6 P% B! j     & G" y  e) m9 t% x0 b7 [2 j7 {
    wp 1234,6,rw+ E! f) l& g  C- W. z
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6$ h  Z& B& C/ F2 Z& E# n, v% H7 X
2 H; q: C& [8 i# {4 A. E
    wp 23456,a,w,wpdata == 1" R+ C  O  q2 P+ w, B, Q, ]
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
: \. M4 N5 c+ T6 v1 @7 t
) ^/ j* b' d4 L2 z* k$ [    wplist
7 A% i8 |" Z7 f' i      列出所有监视点
7 s( z7 W  u8 v; J- v
" t! `9 M6 M- h& F: q) t$ b    wpclear 3, l0 V! y% ?+ D
      删除编号3的监视点
, r4 p( f' b0 I9 {: s7 C6 s4 U) C& h' i/ O3 B5 P8 @4 k* ^
    wpclear
" U1 p% }% X: U- N6 l      删除所有监视点
; Q! Q1 q' t1 x, |
: F. Z4 r2 V: O      
) Z; r- }9 h8 }! a, E; [; \3 \, a. a, ^2 a, c4 [( n
程序断点指令: bp, bplist, bpclear
. L7 O( i, r- k$ \: h    例子:2 h% N5 W+ c3 `% R  h6 y! y- G5 V
    bp 12345 d8 v3 B8 V7 ~  f
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
: ~( T; `/ c- o, \/ \$ F$ E$ |4 i3 V; Q* Q% e7 D5 M# L) \
    bp 23456,a0 == 0 && a1 == 0$ N. `, m! l/ n9 i# Z' b) R
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
, i& `- M" H/ B( {/ r" `; s/ k
3 y$ E; r" v8 {# a- ], S4 k    bplist& z# ?$ w6 G: w9 R1 C4 n. Q
      列出所有断点
4 H$ D' }- [! v8 C1 L$ `1 e% \$ e# D4 h' r$ d: t7 E
    bpclear 3; E3 a# t* ?* e
      删除编号3的断点( ]. O3 Q) E/ f0 o& U
' N$ Y- F3 p1 ^: L1 w& l
    bpclear
3 T8 A  j" F$ Z      删除所有断点
! d+ H! H# M( z8 _% M6 k
# ^8 F8 ~" V- ~. e      
& [* F$ U9 q" m' t      % Q0 E! b, w" I
跟蹤紀錄指令: trace0 u! X1 Q& q3 T. m8 A
    例子:. ]3 J" }5 b0 r! p& d
    trace 01.txt8 o( b7 O7 _2 v6 t7 c3 U! a
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
8 H% a1 ~" D8 U9 v  }5 B5 ]: E
2 i0 q# b- w! ?9 x) J    trace off
7 B8 X8 m/ c2 {7 k6 `5 Y    停止跟踪, 并且关闭文件
3 ]" r$ }9 h( q& Z. t. j3 w0 k' I/ ?" N" s2 e4 ]" C( u* V; p' ?2 R
    trace 01.txt,0  M; o9 i0 P1 x* y, p$ C8 n$ I
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
8 l" N) z% q& D% @& g) l( B
# t' Y9 g/ n5 t* {% {  V( k% E    trace off,0. E( K% _  K- \9 `% N+ y
    停止跟踪编号为0的CPU, 并且关闭文件9 A' A$ T' M; X" S

/ c7 o5 x+ J" X. y9 ]! T4 l% m9 n    trace 01.txt,0,{tracelog "A=%02X ",a}
$ g. L" g0 N$ W: C! Y; D    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
+ _( p" D# S( l2 L    并且在每一行的前面, 写上"A=a "8 R& v; V1 L3 z; |
    "A=%02X ",a为一个C语言printf函数常用的输出格式
5 v4 d4 m' z; e& B9 a* k  n. f0 j    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入2 f$ g4 l3 X4 E1 c; k
    X表示为大写十六进制数3 r# _) r; g6 V, Q7 d. G& d9 \- {/ j
6 |4 ^6 t3 _/ p  Y. W0 C) b

3 U& C: }! E( E6 i+ R! [) ~' @1 u: U  b( u
内存直接写入指令: maincpu4 E- N. f" Z6 d
    格式为 maincpu.[][]@地址=数据
$ |; Y5 B1 j8 w+ |5 F/ Y( C    第一个[]:" h* o- C6 m; S) @/ _) F
    o 表示ROM地址
  [- g& v' r: Q6 P7 ~) j    p 表示RAM地址
7 Z/ |7 ^) j8 b9 R# o. y$ q2 x# \* V8 U4 G3 V( o- ~
    第二个[]:# ], c! J+ J; x8 R  N3 ~# L' |
    d 表示4字节
) j) P& [7 z) J/ f& y6 C    w 表示2字节
. ]) X' u- d) h# a# A1 L    b 表示1字节
+ o$ S0 l7 A% c+ ]
2 }+ c$ z6 w6 m! \+ h3 S    例子:
0 d& M' w& W' z- p, N1 s% p    maincpu.ob@1234=FF  R/ P2 q3 v3 E" i- z
    在ROM地址1234处, 写入FF一个字节
6 P3 \9 E2 _! I& P  Y/ k
  X; q2 [$ w5 r! D- q2 K  e    maincpu.ow@1234=4E71, B0 W* w' s8 a& F/ C, k
    在ROM地址1234处, 写入4E 71两个字节
4 v' `6 i) F1 }% z' j! r4 l/ G# u" N: |2 X, w
    maincpu.od@1234=600A4E71
" @0 T* p6 C+ W( s& j! m    在ROM地址1234处, 写入60 0A 4E 71四个字节
( \. a* ?& k2 x
- }5 a  X9 I( H/ L4 X2 z/ r    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写" ^7 j' M# E6 ~9 j/ Q6 x4 ]+ J
    9 H+ j& z" X( V9 T$ o

5 k; e; [' u, H. L7 Z- j6 W% t, K其他:
8 c6 I) D( J) Y" ]( V6 Z    dasm 输出档案名,地址,长度& I& f+ U" D2 A) H3 n- m- L
    输出程序的反汇编代码- ~7 d8 ~# G0 c% d
    例子:
3 ^- j9 Q' k5 ?' D    dasm 01.txt,0,100000
- h# ?4 z' b: ?' v6 s    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt- \9 I/ I& ~" E2 R1 A8 x! A9 \4 V

4 @9 y! C, f4 i  g1 w( B( |5 P    softreset
$ R4 X- r* ^$ |: _% I4 J: P    游戏重启, 但不重新载入ROM  o- I6 j7 c& l& v9 q

7 j# U- [# I# x2 q    hardreset
3 {5 N3 E) z# a& ]  `) e    游戏重启, 且重新载入ROM
! Q% A4 q# I" u0 E
' S  m& C4 R* {: n: w! U  {    snap xxx.png
) a# N9 i- R7 @, {) i    截图为xxx.png( X; i% P' }( d4 i; q

8 b& J9 m. j+ j/ g* U  
/ v/ D) ]. c  Y* l  
" A; J/ R$ T' Q/ d2 r' ?2 g' b: `; v  
5 n1 U  N, _+ r% I" h: E4 s热键:9 C% W$ O- s9 f' R/ _
    ~ 中断游戏
2 k: ?5 q3 z' W# }3 l% `7 ?    F5 运行游戏
; S6 _+ E) N* {$ U    F12 运行游戏且隐藏调试窗口
, `8 `9 E6 q: L; [    F11 步入, 单步执行, 会进入子程序2 M" w0 D+ S0 I
    F10 步过, 单步执行, 不会进入子程序  ^" j. ], T7 l; O2 s7 f
    Shift+F11 执行到子程序返回
, J5 I8 _: Q4 h2 f: M! Y7 D" M9 `    Ctrl+M 内存浏览窗口
0 i0 I: C% M1 [/ d    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
- V, F2 [7 S* p" P( w
; \: O2 t  v) o4 a{:4_94:}
" L3 n+ \, T- ?) B) u- [# s8 \
$ i& a8 ]- F6 `+ W6 t, ]: v

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2564 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。6 C! X3 L/ h' M& B: N- {  _, h" P

3 h3 B" @! k. N, O8 p* d# m/ R) o! vPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东
' q8 L5 y' J( R11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-16 07:50

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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