设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
$ G# P- ^, d  T% l* o% i0 o
很快速的整理我自己常用的指令
" T* p& m$ e" i0 @" x. u
# G+ {; r2 S5 [+ B$ @& B' r{:4_112:} $ ]' o. N& `/ E, U! L

! q, h9 `* ~8 ^  h4 Q1 d/ i2 i( m7 vMAME DEBUG常用指令5 ?5 Z. q' b% ~0 n* |

+ u1 x/ ?8 B- Z! O, g内存搜寻: ci, cn, cl
4 _+ l9 q5 S, k( V+ F  g4 q, e3 ~! A2 n0 j
    ci
. g3 ~! q% w# K4 G: g8 \8 _+ d& t* z0 [    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
7 b' S1 ^* g& ^5 `$ @$ p/ l1 h8 p, v- B" j5 w' C
    cn
! ^2 Q6 Y; w6 ]9 F    搜寻指令+ p8 J2 I7 N- C: y( Q
    例子:$ ?6 c- P$ v1 d$ e* J7 l  X
    cn eq,60
' U& G+ a! \  A1 G: Y    搜寻目标等于60 (十六进制)/ p/ o* L6 v% D7 u9 ^7 S" {% A, c
        
6 g, ~* V9 A5 w; L- E0 I    cn eq,#96, a* g( {0 t4 r! l  D
    搜寻目标等于96 (十进制)0 I; d, T  s1 v% D! E3 A

+ L4 d% D8 R  R1 C1 S    cn eq
/ k6 Z; ]% m2 U" ]  i" e. t    搜寻目标的数值没有变化
, v3 m3 Q9 R% b4 ?" j
9 D, E. H5 O) d: H  t7 ^    cn ne
) l. _  w) V" u0 I- Q; ?, j# s    搜寻目标的数值有变化
+ X; b$ z- _& y. b, v5 K: z        
+ ~% `+ B1 R6 K    cn +# E: _! F/ T& R  l8 T
    搜寻目标的数值增加$ Z- v" ]: H" t
   
* _' T& G  M/ m& b: o1 ^6 O: u& k    cn -9 ~% l8 Y& C- G- W! i" I" M" K
    搜寻目标的数值减少
: F: O: L. G* Z9 \# F5 {        : \6 W" i+ z  `- q
    cn +,32 J, C6 l# W" ]: _6 B; P
    搜寻目标的数值增加3 (十六进制)5 ~* v0 i* m: C7 Z6 L  D

; W& V" |" D8 V4 o* ~  Z0 c, U3 Z8 T    cl$ s* y' u* ^4 ^
    列出所有搜寻结果
+ T: H' ~) Q8 G0 v4 A6 b. ^' Y6 H, R  ?* R" W
    cl xxx.txt
! h/ V( w3 m  n: S7 o2 n. m    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
% U" v: k- y  w# Z# Z* c8 N' v
+ C6 {* O3 T8 e; w: d7 [    + u8 J3 T% u0 F; z& c! Z! R3 q2 w% n
内存监视点指令: wp, wplist, wpclear
2 B8 P& D5 C/ U9 o0 M, K    例子:
# ]1 q% G5 \8 ?5 ]; C  h    wp 1234,1,r
8 F. I  X+ c2 |- ~      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1' J% I; T) N' h: ^/ X* S
8 O! u1 w* Q3 X: U! ]) K( G6 T
    wp 1234,2,w
  ~4 h! h. d) W      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2. u1 @) n3 C1 ^) z6 r* _& [8 v- _
     ! R, D$ s# e3 i/ R/ L7 h
    wp 1234,6,rw; M' e4 Z8 c! O4 F/ I
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
* n5 D( a7 r6 T, n0 T. K9 c( N% N5 @$ Q* O9 [# Z
    wp 23456,a,w,wpdata == 1" _) j. z( u  s9 X0 v
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1- _  i! W" K& {4 g$ |& {1 d( d1 @! p: p

) |5 F4 R& d- `$ ^: d3 G    wplist# Q1 g4 x" ]9 C' w6 c2 R/ w
      列出所有监视点
' F' j1 e9 q, Y) x! ~; {: D4 Q" Z8 J6 n8 Q6 h5 W; c
    wpclear 3
5 T1 I! K3 d4 ^5 c- I( M0 Q      删除编号3的监视点! _! P" J- D% S( C* m4 g. \/ u$ ~, o& b
) ]9 ]# c- Y9 x2 M
    wpclear
. P8 Z+ \8 A* R4 S# k0 ]& p      删除所有监视点! B" F2 Y/ Q4 R0 @3 c

  ?% N" K$ d9 q. {% Z      8 X1 E+ ?  w; E6 I& k) w! U

, d9 E: o- n- A2 o" r程序断点指令: bp, bplist, bpclear
: H' O+ q0 d9 c; b  K6 T    例子:
9 T0 r) ~2 \% `6 S+ {' K  F    bp 1234
) G7 q& M: |# \      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断3 L! U% @* o* E$ K) \1 ~6 _

. \1 a& H  h0 N; y    bp 23456,a0 == 0 && a1 == 0
9 r' C# B9 i, v& E# F4 M      在地址23456下断, 且中断条件为a0等于0以及a1等于0$ x7 d! }& ~" s9 T

7 v/ c3 C: t+ F. Z    bplist$ ]& U4 J8 N" X
      列出所有断点
" W/ o( h$ u7 X* U! l" {) Y
: B1 N9 m/ [) Z$ N    bpclear 3
5 O& g5 u3 Z5 M9 L8 o      删除编号3的断点
+ R6 ?; O- w1 Y. N- m0 j9 \
# Z+ [- ?# r9 `3 J    bpclear$ Q0 k9 [& C' U' V
      删除所有断点' v' X( _  a, _2 _4 q0 g5 T  j
+ u/ m4 i; `1 i5 Y
      
! j  P4 ^2 _) u2 ]. E      
% @9 ]6 |/ _. @+ E# y! X% I' b$ s跟蹤紀錄指令: trace& A1 M) S6 m/ M/ M9 N% }* M
    例子:
) i8 [3 `6 i" D" f. x( E    trace 01.txt1 z$ I; H; R% I
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
5 G1 }8 G5 T- z8 t" V
, X  }! V7 u! L8 j+ f( X1 y    trace off  j/ L) ]  w& A, ^, L
    停止跟踪, 并且关闭文件
- J5 A8 _* ]/ O( p4 m" A9 q7 [* O  a# f  `# @. U
    trace 01.txt,0' g9 M! Z6 A2 @" l' J0 J% Z) Q
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt1 L# ^( ~& p8 ~7 _

! U0 Q" N$ o0 s2 H    trace off,0" c' t$ R1 T- L3 @
    停止跟踪编号为0的CPU, 并且关闭文件
) B0 ?3 f+ O# H3 ~2 W# Q& @6 o; |+ k9 R
    trace 01.txt,0,{tracelog "A=%02X ",a}/ S! Z& o) n! J# C$ g) J( X
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
+ m6 j# h3 z# w8 }) }    并且在每一行的前面, 写上"A=a "
/ A7 ]8 s! A. l, S2 e* v7 Z    "A=%02X ",a为一个C语言printf函数常用的输出格式' _' l) u7 A( O8 o) g$ Y
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
% [( F6 B$ X# p    X表示为大写十六进制数8 }1 D! r' o  a0 K8 B7 u. G# l& K9 v: n
5 z" P$ V( Y4 @. j* o
$ [9 C9 X! X, D# j. _

, x8 s2 f. `. S: B. a  H  h内存直接写入指令: maincpu7 W7 `2 f1 U& i* [  P& w
    格式为 maincpu.[][]@地址=数据6 \1 s2 |4 ]6 ]( o/ h
    第一个[]:, `" |0 ]; T: h$ v3 P. k  N
    o 表示ROM地址" Y' ^9 T- @) [& G/ G
    p 表示RAM地址
* H7 r0 y0 L1 i5 a1 P9 B& u" e
4 x+ \' ^9 s8 \: f! R0 _) }    第二个[]:
5 d" N! Q, o2 U: H    d 表示4字节  n! ^/ S6 p7 ?* {$ D
    w 表示2字节( y3 K$ U5 C- z, b
    b 表示1字节/ [& f+ ]* y+ h
; A; `" v' S  i0 W2 O
    例子:3 ]8 W; {! t; X6 s6 q
    maincpu.ob@1234=FF
% M# O2 |, X, g    在ROM地址1234处, 写入FF一个字节! N8 b9 y' {# Y; L5 `
4 }/ S3 h6 B* ?5 Y
    maincpu.ow@1234=4E71
) ~! j: j5 u8 q, S2 d! e    在ROM地址1234处, 写入4E 71两个字节
# ]/ l) p; [& u5 o( A, R5 v. E# z+ z, k7 N- o1 C+ t3 f! |
    maincpu.od@1234=600A4E711 b1 O( V& l9 Q* q7 r$ U
    在ROM地址1234处, 写入60 0A 4E 71四个字节
5 ^6 K3 N5 i) J. W" s
1 `, r* c" ?+ J# Z3 C    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
8 U7 T8 t8 E+ U    . x& l+ X$ |  s7 S: y# h9 a& E, ^0 K

  O1 B' c( E/ F7 P+ [& S$ C4 Z其他:- H6 Q1 G; a  w# {7 K
    dasm 输出档案名,地址,长度# [) p; U5 u6 s" R! _
    输出程序的反汇编代码. B. E) i% T0 d# I
    例子:1 y' N1 J. w3 l  w3 f+ r
    dasm 01.txt,0,1000006 h  `1 ?) h5 g  }2 h
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
8 w& k9 s; N1 m! }% v  ]" i8 k. i+ B. q% F
    softreset8 d& [) j. G, l# z" q
    游戏重启, 但不重新载入ROM  |# u- T" ^  f

% q3 b7 n' z5 r+ R    hardreset& B; A, b- L+ W5 q: `6 E
    游戏重启, 且重新载入ROM* o9 f" P* G& T5 ?
' A4 @3 G5 J8 x3 H/ V
    snap xxx.png; M; Y6 g' s7 W' s0 x
    截图为xxx.png$ h" U5 c& c3 j2 S6 i7 |/ i& E8 m! n) q

$ _: C3 U, _- L# l  7 m2 o! `3 i2 u5 H" N
  2 z- d+ C: I( C, O5 w
  
  {5 j+ _- a. c热键:
7 o) @2 n' N7 y7 K- T0 ^    ~ 中断游戏
4 s6 c2 C* A) N; n3 O+ K    F5 运行游戏. _* B7 i6 Z/ l) w  @
    F12 运行游戏且隐藏调试窗口  |: C  Y' h1 [# g6 A) m, {
    F11 步入, 单步执行, 会进入子程序/ g4 e* }/ P( ^. d6 P( T! e* S
    F10 步过, 单步执行, 不会进入子程序  v- B6 I3 N8 d2 z
    Shift+F11 执行到子程序返回9 h; ?0 n. E9 L$ [' M8 }
    Ctrl+M 内存浏览窗口9 O0 b' |# z9 B! m0 N1 V. |8 T
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
' `' `8 Q. N/ }
- H- Q2 _) y& j8 u, M+ I{:4_94:}
0 x& {; V+ s6 f& c; H/ Z/ z$ r" \6 q7 O. T6 u' P

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2550 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。* _' T7 }% L9 k) H& z
, i" p' V' K) Z" o% a
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 | 显示全部楼层
要详细些的东东
  c/ J  P' m; t3 ~11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-23 07:17

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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