设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

欢迎注册EMU618社区论坛

您需要 登录 才可以下载或查看,没有账号?立即注册

×

% o: u3 g- ]) b$ r6 K; }. c很快速的整理我自己常用的指令
% `1 v, T. @: F6 }; I  v; f+ S; }6 X# W7 a! {, y5 v
{:4_112:} & L! H8 |! c7 [8 O! k
- H% V$ V4 `/ `- Z3 w7 c% k) v
MAME DEBUG常用指令
( N! f4 y" i/ o: K1 {; _
: S0 Q+ h* E- A, q$ s内存搜寻: ci, cn, cl
; ^5 h9 r$ o$ f0 k% o
! {  f! D, m* O% c5 F( K    ci
$ d. Y5 A! w4 s# a) f1 ~/ I& z: ~    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
% f7 }, j7 |( a; c0 W: R" P% B" ~7 P0 W. I+ X
    cn2 m& U9 ?# i4 x- A- z- i: L
    搜寻指令
2 m: F0 x8 J7 z    例子:( D% V5 ?% k0 D. v
    cn eq,60
) c1 q! I5 S5 I0 T  H    搜寻目标等于60 (十六进制). m) U3 q2 M, l% l# Y* _/ u
        
" y, _/ Q6 \* X' X9 C6 ^- O8 J- s    cn eq,#96) d* x3 m( }  \3 j
    搜寻目标等于96 (十进制)7 Y4 R3 ?  C+ v! k' I- ~
5 w# p1 j5 G& [
    cn eq
& O' p3 v3 b+ o: j) K) \( d2 L    搜寻目标的数值没有变化
% Y% f. n# H4 O3 A6 ]* z& H% N4 [& T/ d% k! x1 ]( k; W
    cn ne
; N% W! u; F. i4 r& \6 V% n2 S    搜寻目标的数值有变化/ I$ a! `, r% a3 `% g( L
        
$ ^, N/ N* |3 I    cn +
7 m" ^4 |% F4 j  K5 z" X" ]    搜寻目标的数值增加- x% \0 Z+ U7 l6 [: Z& S% F
    0 L/ w* T, \8 p- r* G! i
    cn -7 g1 W8 C7 u7 P- c1 P" ]* j$ M
    搜寻目标的数值减少) t/ b7 J) D: s+ ?( g) ^' W
        5 ?; q4 G# A# h3 h7 s. @
    cn +,3
3 B1 ?. q: F/ o8 }2 f4 U1 R5 Q: @    搜寻目标的数值增加3 (十六进制)) C6 G. S; P* _) u# j. R' Z0 v

1 @2 _& c; a3 S$ n7 ~8 E4 p5 H, y2 v    cl
" ~/ e2 b1 x6 {' z5 N) @    列出所有搜寻结果
6 R$ s: {) g* ?! B8 \+ r' N( t/ P* S& N- r6 e+ O
    cl xxx.txt
# a3 W: G7 D! c8 @; g    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
+ O4 O: H/ V* m2 {3 R, B0 O; d% m3 p6 s6 C# }4 S) _6 s
    6 Q! e% W6 t) J0 O/ y( _. V3 ]/ X! |+ }  N
内存监视点指令: wp, wplist, wpclear
" l1 _2 t( H! L7 K! d    例子:1 Q0 T$ W% m0 Q& ~* z% Y
    wp 1234,1,r: y/ X% }9 O& n) B# E
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度15 Y0 E# a# @4 g# [2 e4 L# d3 y

2 J" e- v# O  F% J$ g( s: M6 q    wp 1234,2,w6 N6 a0 x* f: ~* A& D6 R$ ]
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
+ i7 q5 l2 {# L! q: t     
5 ]% J! r0 ]6 }7 c+ L( [    wp 1234,6,rw5 R- s1 ]2 w3 S% k2 ~3 `
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6( h- T6 a, M- P8 p9 A% E( Y
* @. t2 \4 X; z7 i
    wp 23456,a,w,wpdata == 1) b8 c; L) k) D( m
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1% k8 D6 c0 v: N( n# }  Z9 s! O
2 F/ n0 E6 x1 M' w$ f
    wplist5 \$ ^4 V  T9 p1 i; P) E0 S/ X
      列出所有监视点4 D7 v* n) {8 ^

8 x& t+ X. `1 |# _    wpclear 3. F' l" L7 S% m! s% t1 j
      删除编号3的监视点" v3 E8 X! ^; H% l- n. \

- v3 N+ R3 j9 r- G% m& ?; D    wpclear
( q5 a9 Z% V  l' X8 M      删除所有监视点% E$ ~+ B8 Z$ S  }# u4 y/ U0 z
; y. A% U; v" _' z( Z7 y+ q2 z1 [
      # y6 j" h* p6 c( y* m

/ w& ]8 @' N, o& h" i; x程序断点指令: bp, bplist, bpclear
3 A5 ?6 i3 Z  @* d# T    例子:
# q$ q- n: K6 ?! D% D    bp 12349 l" l* l' P. \
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
7 ?2 x3 C& ]9 m! r+ C$ c: b
+ l! }9 A7 O" L    bp 23456,a0 == 0 && a1 == 09 ^7 t# B% m; m+ ^+ k& C
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
% O0 `& Q8 }2 v2 f
) \9 q# g5 |2 A. m+ Q    bplist+ ]) k" ?- m1 \' ^/ O5 g6 f  c
      列出所有断点
* e2 ?( q0 Q* S5 M" o$ `% i5 a& ^
    bpclear 3( b5 q- @1 r7 H
      删除编号3的断点
* X9 r  I1 k# j8 s+ E9 w7 U$ K( S. T- k4 v* J
    bpclear
6 d/ w0 m$ S, K      删除所有断点0 v+ J  x( z% Z9 W3 U7 z& N9 v

! v2 a8 n$ N9 @      
) o/ l9 K+ |1 H  K8 ~: w      
0 j% u0 U3 y7 M跟蹤紀錄指令: trace2 `3 N; W7 E# g
    例子:
* R! {4 M" e, c8 }/ x' ]! e+ f    trace 01.txt
* G/ D: k: R% U0 T2 E    跟踪当前CPU运行的所有代码, 输出至文件01.txt
1 t& M6 P. ^% o( H2 D' \- q6 w" g9 V  C' l$ P2 i5 M3 w
    trace off
$ B' Q7 I5 {& v: M    停止跟踪, 并且关闭文件
; Z# T+ Y& W. t0 D+ Q( g  h; H% ~1 ?/ R2 T; L- q
    trace 01.txt,0
/ Q, m& q6 j' ?- Q2 I1 X, h+ u' C    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt' j' ]  t" W8 Y1 M# U; a$ a; C
# C6 O. H( C; @5 i0 Z+ i" f6 n+ ^
    trace off,0
+ M) M" h9 q* j2 N* `% J    停止跟踪编号为0的CPU, 并且关闭文件+ f  Z/ D, F0 Q9 y( k; r6 G

/ ?8 p4 z" A2 u6 y    trace 01.txt,0,{tracelog "A=%02X ",a}& F1 |  B5 s! k. d' h
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
" k4 o# K1 T) S3 k+ G; q! R    并且在每一行的前面, 写上"A=a "
# X* b) k9 g! K0 U    "A=%02X ",a为一个C语言printf函数常用的输出格式
9 p7 q' F# q3 m- v9 [0 z    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入4 Q0 d, ?4 ?' K" Q5 h
    X表示为大写十六进制数
- C: V1 p7 k6 Q! _, h5 f( W' W2 E/ r+ Y6 [& n, a

1 E. M' G) Z" y+ p8 Q9 f. i, Q1 H- E, v6 B8 F3 ]6 f& Y& l3 `) s
内存直接写入指令: maincpu
& x  S- Z# m) J1 e  [' m8 ]! F& B    格式为 maincpu.[][]@地址=数据: F5 g2 K4 e1 `  X
    第一个[]:4 ?' u( J% {$ x3 D2 e: G) A
    o 表示ROM地址
. C4 i: [' V& h, n& K    p 表示RAM地址4 e2 X" S) c( y9 |, v, M  h

, P8 O- @% |3 I    第二个[]:
% w$ i6 k+ M. Y8 n5 H    d 表示4字节
% X! N8 K) s! X( T" ]/ R    w 表示2字节
- z2 |' H8 K2 p4 h/ P- D# p    b 表示1字节
4 ^( M5 B, s. Z5 B
5 T0 Y- a8 D  B7 n/ Z    例子:
& Z; a( c" U. I# k1 J% a% J    maincpu.ob@1234=FF
- C' l4 ~6 b/ v4 W/ _/ N7 ~    在ROM地址1234处, 写入FF一个字节
5 _5 z0 _$ _8 S' I: g. ]4 K9 }7 b* J$ r0 i$ R! W
    maincpu.ow@1234=4E71, ]* a: P. }' w  B
    在ROM地址1234处, 写入4E 71两个字节
$ f* x9 |/ j8 V- x, r
0 ?/ }/ {5 H( X. D    maincpu.od@1234=600A4E71; s4 ?4 F1 Q: E! T7 _" Q
    在ROM地址1234处, 写入60 0A 4E 71四个字节/ t) B" ^1 |, `: c
- p7 g( D3 t' m/ n
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
  m: F# M. t; A! i    5 _5 ~! F( g' T" L
5 \! v/ O0 @3 o7 u
其他:
; K$ ~. b" V4 V+ |7 B' t+ _# P4 c    dasm 输出档案名,地址,长度: ^; u0 V# R% _+ K: j. t) q
    输出程序的反汇编代码
7 s! N$ ^/ X+ A8 y( w    例子:* S% {1 U( x& E8 V
    dasm 01.txt,0,100000
1 k5 T6 q: ~: x8 n) c8 @( m' ~4 V    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
3 A  i1 t. u/ n3 z6 T7 l+ }, q9 Q% v! ?5 f0 B
    softreset
* O% G9 v. S* `( L* u    游戏重启, 但不重新载入ROM
! }+ w; [5 b+ o) S+ E; K* [" n9 G
    hardreset
8 A% S$ i6 T& ]1 ]    游戏重启, 且重新载入ROM+ p: e- `( [# v" U9 _
7 H* L2 B5 M1 A! C" N+ C
    snap xxx.png
, q6 f6 f( K5 W3 {+ q. A    截图为xxx.png  E4 L& w  D1 q3 N
; ]" j* J" ?+ ^& b* `- I/ J- D  s
    b! M& v; s+ H6 j4 t; i5 e- s' e/ S
  " v0 ^7 ?5 I3 t; @  T1 o
  
8 z7 E2 K0 H0 j. E, D) y# U热键:9 p: }, k6 D* H% O$ A! f/ w
    ~ 中断游戏2 E. U- g3 T; p7 t& @% z3 L
    F5 运行游戏
1 B1 @9 J" R: k/ Y1 ?# L    F12 运行游戏且隐藏调试窗口
. x2 P) a6 V$ J5 d, I' `2 K    F11 步入, 单步执行, 会进入子程序
2 n' \( E: Q) O8 _6 p    F10 步过, 单步执行, 不会进入子程序3 A; q' V' g) Y4 G9 Y
    Shift+F11 执行到子程序返回5 O. u# X. N8 ?: S0 j
    Ctrl+M 内存浏览窗口; ]7 }5 A* @& X; e
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
) a& [4 s' W0 O
9 s( k$ A% ]% P. K{:4_94:} 9 c2 T7 x4 c2 A6 m% ?
: x( ^- a! n$ E: V

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2550 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。! o* \% _, f# s: O7 G
- ~, P( F" ^' O
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 | 显示全部楼层
要详细些的东东
* D3 Q9 K3 U0 `6 c" |  ~11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋

GMT+8, 2026-3-10 06:31

Powered by Discuz!

© 2001-2026 Discuz! Team.

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