设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式

# O% V# q8 s" R$ c) T7 a很快速的整理我自己常用的指令! x5 ^% C1 u! w. h: t
# k: V  C$ y5 `% r2 O5 N
{:4_112:}
5 M$ x& u% l+ O. h( t* s$ a# n" B7 B7 Z; ]7 ?
MAME DEBUG常用指令" ], Q, h/ s7 b! E3 H

  Z: }9 F, V# A+ v内存搜寻: ci, cn, cl) x3 k: V9 P3 e% O8 c
# a$ J. ~' \7 w' S  @
    ci
! V$ r9 N: e, e7 h  J    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
, G  R0 x1 \6 U+ _1 Y/ G3 l! a2 [7 a% `1 P6 b8 `7 X5 b$ k
    cn
* {/ g0 ]: u% C! _; s) M    搜寻指令1 ^7 w. G  r5 |+ ]: K
    例子:+ S$ s4 I; A/ Q# k, M# Q
    cn eq,60% C; T9 J2 i- `4 G/ r
    搜寻目标等于60 (十六进制)/ H- }, i* l, }
        
! o5 h) A5 U' j; m6 L7 T! [  u    cn eq,#96
! |3 g2 ]* a$ C* A    搜寻目标等于96 (十进制)% L% L7 g. t2 f, l
+ h5 ^: H5 u& K8 B4 A; f1 j
    cn eq  V3 Z- s8 N, [$ p" r8 E& U
    搜寻目标的数值没有变化
2 n" y; E+ h( k6 N6 J# w, f/ b3 D
    cn ne
# F8 r. i+ C0 j1 }- ?: {% x" j    搜寻目标的数值有变化
3 |5 u* X" _9 Y  k" c: ]9 f7 P        
# T* W4 P; s  G( V4 u    cn +4 v8 l/ w" N) y- ?* H
    搜寻目标的数值增加$ V# B$ n; E8 h/ E
   
: k% }8 z: o; [8 k7 \) y    cn -
$ [! v( `7 X: g- F, ^9 T    搜寻目标的数值减少
! g. |' y2 X7 y) _7 u) S4 C        8 n7 N# G2 F( N2 Q$ @0 T
    cn +,3
: F7 R, v$ X' y- ~    搜寻目标的数值增加3 (十六进制)5 N$ _) o6 ^3 S. q7 i& @
+ c7 N! r! j  D/ F, q
    cl# w0 T' v* d9 F1 c
    列出所有搜寻结果
2 J5 L$ O: c0 r8 g; K. j4 p  }3 u
; Z" k3 l, w& J# }! v3 S    cl xxx.txt
, N7 S$ Y% w2 Z2 k3 S    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式( V9 k: S  S: p8 t6 \$ s1 p' C

% u! J6 P" G" I    8 m' S5 p8 U: Y5 A8 f
内存监视点指令: wp, wplist, wpclear
. A" v" L5 b, z# H# ^' D  ?1 R    例子:& e9 V/ s) N7 \$ e3 H3 {; J2 Y
    wp 1234,1,r
' P, ^) p4 w8 k+ ]* X. I      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度19 {6 ]: o0 o0 t5 O# Z4 H/ p

; J) W; \! n, j# }, Q5 L    wp 1234,2,w
$ D. p7 `. T/ l: v. E      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度27 c7 D7 i8 O& o1 y
     
  v$ q8 L7 B9 i% [' t( k    wp 1234,6,rw& A2 {4 v! ~& a. ?+ E/ W
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
. B5 P% U# b* a' |1 s$ l) B3 h, d: O- ]6 h4 X
    wp 23456,a,w,wpdata == 1
  q3 O1 d# q/ p9 c4 \: X      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
3 x6 d; V) q/ G' N3 d) a, E, N0 j" a- Q( d
    wplist
1 \; G4 K& A& o& T      列出所有监视点1 c" s. U! [; i  `
1 X) \. }* K2 R3 y5 s
    wpclear 3# j" @* N; H. P# f( F0 K5 J* D
      删除编号3的监视点
% e2 q$ [8 L1 \" t- U4 ?2 j2 m4 Q  n$ C9 B# `
    wpclear) [2 b3 G; X: m
      删除所有监视点- u0 ^: p1 T- Z4 V& Q2 J( E

6 {! ~  R& u+ Z      
+ x8 R8 l7 o- n% q0 G
7 F8 a+ V5 ~6 F) H. i- }程序断点指令: bp, bplist, bpclear
. a9 b! T5 Y  d6 }: p, X    例子:
6 M# ^8 e, z. W- M    bp 1234
: a/ k5 w5 ^/ f% c( j      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断6 N# g3 l" z! @8 ]% W. ^
: P: ]  t5 B) e0 e4 u( _% ~: [
    bp 23456,a0 == 0 && a1 == 05 O& q9 [2 F2 f. u6 w# v
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
, \9 M9 F) B8 g+ N7 L/ K! E& b" k2 ~& c: N: H3 u
    bplist
4 x# W! h8 T- t8 H$ S      列出所有断点
7 ^' i! M0 X- W" _; m0 }# @- E; T" W
    bpclear 3& r' T0 x  W9 \& U
      删除编号3的断点2 q) h, z; o$ I& l' W3 e

" w/ E# v0 L$ @    bpclear
  X3 ?( j) l( _3 J) D6 F      删除所有断点
6 ~" m# g! @" g, s0 X" h1 K# q  M  g* H1 j* F
      
1 J/ Z: h+ F0 {7 |+ g, X  `" H( ], i5 \9 S      
) S& B# Z3 f- T$ l7 I) ?% n跟蹤紀錄指令: trace& X% P# O6 W7 S4 p7 |* |" ^
    例子:
$ Z8 {1 ^# R- h/ p- _% i    trace 01.txt
: b4 }+ N9 O( i$ D  y# P    跟踪当前CPU运行的所有代码, 输出至文件01.txt
% @4 J! l3 C( F0 Q- {6 o/ o: K# R3 M; S) t% a
    trace off
6 R: h' s! ?9 e! x% j    停止跟踪, 并且关闭文件) k: p+ f* b1 e

# }+ f$ A% s. J) I+ i    trace 01.txt,0( m. d" X: b) Z4 _6 g; M' k
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
% j; {, x4 f) f" I/ X- Q+ F5 i! J1 n) E4 ^/ F  j
    trace off,0* M  H( s) B4 y7 ]8 V
    停止跟踪编号为0的CPU, 并且关闭文件
, C- T  U2 A  j& g, ~) i) d6 ~2 d# d( B7 s9 C$ E: f+ ]! K$ ], J! e8 }
    trace 01.txt,0,{tracelog "A=%02X ",a}
% N: l% J, j0 }5 t    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
2 ?6 Q- C+ I' _5 ~    并且在每一行的前面, 写上"A=a "' U: p4 o0 Z3 I7 D, }. k$ Q
    "A=%02X ",a为一个C语言printf函数常用的输出格式. b7 N/ v6 M6 t$ H5 N* n7 T$ v1 |" S" t
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入  b  m, v( {3 r, {2 u6 ]: p
    X表示为大写十六进制数3 {2 `% O8 n4 _5 B

5 w0 J5 Y& v" u% n4 W0 N2 [% e6 q1 R( W1 O7 z$ G

* d- o4 F" |: M- x8 e+ M) @内存直接写入指令: maincpu; z1 F, c$ P: n0 S" l  {
    格式为 maincpu.[][]@地址=数据, G4 d$ U, [  c5 l
    第一个[]:: ?' I% Q9 F1 T! [; `
    o 表示ROM地址
7 I3 K# A% A& s( Z4 u' t# W- O    p 表示RAM地址
! }1 p9 \" Y9 q* m( u9 R1 p5 `% o
) G4 y1 ^" J8 w    第二个[]:% T7 r8 I3 S$ ?* b. R: ^, k
    d 表示4字节3 n; w6 c+ L4 F+ y% I
    w 表示2字节6 y2 W& U0 M: M+ D
    b 表示1字节
5 Y! |' a2 G9 D; t# w
0 V: i8 ~) m, b3 B1 s/ _    例子:
2 k! ?! X7 z5 L8 z    maincpu.ob@1234=FF9 w5 }4 K; g2 a0 S1 k
    在ROM地址1234处, 写入FF一个字节
6 g7 k& b, }2 p
: X1 {5 E3 V" c0 i$ c2 L! E    maincpu.ow@1234=4E71
  @/ l" t: d4 _    在ROM地址1234处, 写入4E 71两个字节3 A  w, u7 r% w# _( E
8 i) U; u1 c, M& e5 w6 h% i8 I+ K2 p
    maincpu.od@1234=600A4E71
' H) F/ d" Z% @/ y" [    在ROM地址1234处, 写入60 0A 4E 71四个字节
4 J! g( \2 m7 M% k' S' L8 X# P! m' K
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写# [! e2 {: s7 n; L2 ?
    ( X- ?/ d5 o# m; ~; y
% O; y" \' W) m7 C* s
其他:' s, Y  y  l& g: q$ B% A9 F
    dasm 输出档案名,地址,长度
4 W. ^) p+ B& k/ `0 l2 q5 ~& N    输出程序的反汇编代码  Z, f8 r$ |4 @. C. P
    例子:
7 X8 a( K0 o+ P: k/ ~0 w    dasm 01.txt,0,100000
8 G1 a  N7 X0 ]( j, b" x    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
+ q1 x4 b& E' H" o* v8 h. g$ o! f* J, w; i
    softreset! d$ d: n) C5 {4 a
    游戏重启, 但不重新载入ROM3 J: h  G/ R" j3 S3 N
. [5 k+ `3 g4 ]( g1 n: @
    hardreset* V. C. O* Q5 D- g; N
    游戏重启, 且重新载入ROM
7 ^* Z3 r. S3 I' [) u7 m% y* U5 _0 a, m+ ^
    snap xxx.png  X, B* }! k7 D. }: e2 M  `) ]
    截图为xxx.png
8 x$ O2 \, N" L' `6 M1 ^
& p1 j$ T+ r$ z; Y& B/ y% }. L( ^  
& R1 b/ N* I3 Z' R% o7 h  3 P8 \* U% g" _
  4 L9 C) n' o# L. m7 Z
热键:
+ h6 r* ^9 ~+ a5 R    ~ 中断游戏
) W9 d9 R/ K5 s2 g- f" o4 L/ M    F5 运行游戏
  X; T7 c! F& f4 A/ e: x" G, }    F12 运行游戏且隐藏调试窗口& u* d/ B, }! V9 n) l6 q9 ?
    F11 步入, 单步执行, 会进入子程序- X! U% X0 |9 _' L$ |' n# w0 B0 x
    F10 步过, 单步执行, 不会进入子程序6 F9 _' {3 {5 R7 V# m
    Shift+F11 执行到子程序返回) d! X6 c7 _9 A( @& p3 _9 W
    Ctrl+M 内存浏览窗口7 O0 P; ]6 H* \: E
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
" A; b' b% a, B5 t9 D* W  C7 w/ L5 L) H: I/ I9 t* D
{:4_94:} & ^+ S* S8 T$ e0 `9 i/ j% ]: K

% _! t) D+ g9 Q

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
1 A/ b! E/ \9 T" n! z, C
, Y5 h- P+ H* TPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东& }2 i) r9 G7 F1 C
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-9 03:08

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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