设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

欢迎注册EMU618社区论坛

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

×
9 _  o# [( C7 C9 s+ E
很快速的整理我自己常用的指令  h  N3 M. A" ]- K) K

( h" d8 C' c% M9 V1 C' L; D) K{:4_112:} * }1 P. A& q( Y; D9 v

- S: h* @$ `# p* OMAME DEBUG常用指令" g$ @% G1 o6 |- w+ X

. F& i) G2 W, T" @: |' W9 V内存搜寻: ci, cn, cl
8 Z. h1 m0 ^' S3 C. G+ B! d; w. @9 p, X/ m" }1 B- |
    ci0 r; \7 R  I" [* P; a4 T, s5 z& b
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令: v, Y" z% w8 W

# h1 a2 {8 P( s7 u( l    cn
" G' Z  e& Z" R% \9 j    搜寻指令2 A3 w4 h5 Q) B' a, {
    例子:
) P- C$ V( U! e  m    cn eq,602 ]6 S1 s' K! A1 R
    搜寻目标等于60 (十六进制)
$ M2 |4 [; Z- F# s  e) R3 K        
7 l9 S3 T  u/ b    cn eq,#96
4 L3 c/ o! |' C- w4 M    搜寻目标等于96 (十进制)
3 s% M* ~- y1 |0 d
" o1 P* f. A% e7 c! C7 D! z    cn eq% N; a' F- t5 p6 O
    搜寻目标的数值没有变化
, J7 [6 l- B: U) b' o# j+ ]5 J( z8 d$ J- u0 f! @
    cn ne" K; k- M# R2 Q2 }* G  U  R
    搜寻目标的数值有变化6 z( J4 L  F) ], @& F" C0 W
        * X. |0 k5 Z) [8 s: x4 ^
    cn +7 B0 f; `+ G+ P/ U1 H. s
    搜寻目标的数值增加! x1 Z5 @" r; M* i. B' u! ~
   
) r6 W) ?+ E  Y8 g1 \    cn -' k& i  D1 U; Z: R( I
    搜寻目标的数值减少4 d3 }+ [2 K! m; r
        
0 ]+ X. Q$ r8 \. P; f    cn +,3
7 o- ^8 ]# X) Q0 i    搜寻目标的数值增加3 (十六进制)- w$ @% X5 `2 P/ Y$ r( Y

2 {8 t9 F1 B+ o' O) ]0 k" d( m8 G7 c2 J' E    cl' h; a  b7 C  [! q( R) p: N- l% b
    列出所有搜寻结果
4 V: t$ [* {0 o" l
0 j7 f: S5 W6 o2 p# q9 G% M    cl xxx.txt1 e; J2 r% p7 m# k
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式( A+ P' z5 v$ e4 R4 e  Q( Z+ s

5 ]& J# C* L! W7 n* |. Y    - ?' v0 r- o. z1 w. k; K3 k
内存监视点指令: wp, wplist, wpclear
( u( ~( h7 _- o1 `* G" z) p+ e    例子:$ d" @- k( Q" g8 U. z  j
    wp 1234,1,r2 X) s) x% r7 X: _8 S0 X# Z0 J" |9 d( R
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
0 X: E& k/ |8 I& Q5 \6 m# u  J; X2 v. j* Z& }" z
    wp 1234,2,w1 D4 q5 {' f) j' [8 k
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2' x7 e+ d8 L  y
     
6 _$ v) C& B7 G5 E4 `    wp 1234,6,rw
# ?& Z: l  A( }) u, V- V8 Y4 R      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度66 i" ^. G' S& F+ @; Y: d: \
9 S  `/ Q5 [( i; D- z- P
    wp 23456,a,w,wpdata == 11 O+ L& E' e# R# j1 \
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于15 X' T+ S! N; n, o. R! k9 ]* M; O  V4 E

$ r6 u$ [* b' y: o- ^    wplist
; B' X4 w; \: U      列出所有监视点
" i. ^* K$ ~# o/ A7 F" `
' L2 N- r) V$ x- T$ w    wpclear 3
7 }/ {: R$ o, d* T5 v2 g# _      删除编号3的监视点
2 j3 V; A8 {: v9 @' m% F- I; e* k! D0 [- f
    wpclear$ d) Y1 l& @1 }, @" X# w5 |# Q% M
      删除所有监视点: Q4 v6 S" P- _; A3 I8 U+ l5 t  U
0 n& X, n' P& d! U
      
2 ?% ]  W- u2 X. w( [. t
" ^! S% c$ ~8 W& ^程序断点指令: bp, bplist, bpclear
# w4 h5 b. t2 }3 ?8 p    例子:! D' c8 f# q2 `
    bp 1234
8 ^6 x& v) Y& u. O& _8 B/ w& @4 k      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
* J0 b. y/ v. I" `; V* [7 Z# |' {% O
; r5 w/ ]4 Y  _3 Q    bp 23456,a0 == 0 && a1 == 0
0 @" b4 \9 H0 x9 ?      在地址23456下断, 且中断条件为a0等于0以及a1等于0  l# p8 v9 J5 I2 N/ a- \0 x, P
: `( {" B7 h- s. A: \' H6 h& `3 \
    bplist0 J+ o$ ~, l* M1 J) O/ y: @
      列出所有断点# s. D# a- Z7 a; d- J5 a  G
6 m- b: `2 b/ f) G
    bpclear 3$ v! |; c! }6 Y( ~/ k+ w' N7 \
      删除编号3的断点) B! j5 O* ]5 R0 [& Z5 }
2 S$ ]6 z. n$ o: }% j
    bpclear* A6 e0 U$ z$ z- X
      删除所有断点* g) D+ l3 @; S6 v1 W+ x1 n" H
8 C! ~# y" [/ q! l; I' k
      , J* p; `2 O% ?  Z
      - P& q, g9 p# g
跟蹤紀錄指令: trace
8 `8 E3 C# V7 F8 B2 |2 y+ C8 l, P% u    例子:
+ V9 y: `$ d3 @7 b# ]    trace 01.txt
2 \- t9 c+ E! I4 i' b2 U. J4 u- _    跟踪当前CPU运行的所有代码, 输出至文件01.txt$ S( ~+ x7 _! q  Q8 N$ H
+ Y3 _  G( ?4 v' S- Z& J
    trace off2 L( I( V7 v$ L( Q/ B& Z
    停止跟踪, 并且关闭文件! Y( K$ s! {' p0 z) v1 e% W
, j! E7 ^; B2 w7 z3 Y, U, U
    trace 01.txt,0$ H% w" h2 c1 }" k
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
# P8 g' e5 v$ |/ T3 p4 A* Z. S. m3 f% a1 j6 i9 ]5 O2 G, g$ |' A% `. A
    trace off,0
) R7 b& d) D3 m8 E3 u& f3 \$ i    停止跟踪编号为0的CPU, 并且关闭文件  @( R) L1 M+ k% g& R
: P- E- c5 ^3 E& O/ D
    trace 01.txt,0,{tracelog "A=%02X ",a}2 y' P, _/ j+ Y1 n5 \2 ]4 _# K
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt ( A) M$ X7 p: X8 Q
    并且在每一行的前面, 写上"A=a "' q: y# G  k& W# r
    "A=%02X ",a为一个C语言printf函数常用的输出格式
0 G7 T7 D: A: v3 Y# i    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入9 U7 Q! g3 e* q7 `# P3 f7 c
    X表示为大写十六进制数
4 W; h9 h0 W/ s6 F8 K$ t
" Z, E: p* O( j2 l6 C! A* }# p1 \6 _9 u6 ^9 r- d* W" I

5 C* D4 Z2 R) l内存直接写入指令: maincpu9 z6 G: q6 P+ C- W+ w  \) D, F
    格式为 maincpu.[][]@地址=数据4 l6 \* ]4 z' [) g$ z
    第一个[]:
* s7 D3 g0 X3 |. Z. Z    o 表示ROM地址
1 \5 n' K! s% g, B% P* ^' T- G8 R" V    p 表示RAM地址- u( m) f7 \! n$ b# T2 u
, i( u2 o) ^  i$ O
    第二个[]:6 c# t3 _. g$ p/ D: S  f8 Q
    d 表示4字节
5 E4 {5 J. o: l6 J    w 表示2字节
) Y7 d0 L$ }# u9 D/ Y) Y' `    b 表示1字节
  D$ [4 p, I. P: r; L  ~3 h7 i. t3 c% I, l: x$ D6 f, h: K. H
    例子:. g- `* W0 J$ g6 P  ~
    maincpu.ob@1234=FF
( z5 E) x: G! g, o8 e    在ROM地址1234处, 写入FF一个字节) }. f0 g) F. m" D' S

, \8 M6 w1 w3 o# f    maincpu.ow@1234=4E71
# C5 u: j# ^, `: ^- ]    在ROM地址1234处, 写入4E 71两个字节) I8 e9 ~  M' ?3 _& U3 u$ E

! u$ M" I# x3 Y$ n4 K    maincpu.od@1234=600A4E71
: U8 Z& G/ q- C; b" B    在ROM地址1234处, 写入60 0A 4E 71四个字节, l' G7 j" l' x( i: ?" B
: ?8 ]- o5 V1 \9 c, r3 a7 b1 X" ^
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
3 T6 ~) u* }  ]! u. [' v   
) n7 v6 \, d! V; A; k
% r* r; C: c4 Q+ z1 ]1 \其他:' j. s2 s' J7 Z' ^* A# Y
    dasm 输出档案名,地址,长度4 _1 m$ J3 H0 W$ z1 r. }5 g
    输出程序的反汇编代码; u& B& Z5 Z1 O2 F9 Z+ ~3 x& U
    例子:7 c$ w+ R/ w7 n) E" f
    dasm 01.txt,0,100000
3 ]( ]9 K; F3 _7 e9 W1 t: v2 L    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt( y1 g- d1 y2 q% a9 e
, v$ X0 J- m3 H  K. r1 y+ }& N
    softreset1 ]0 I# S: K5 n) J
    游戏重启, 但不重新载入ROM
5 ?+ p9 u/ k5 S& {
9 \" e6 D6 O& w/ N  r    hardreset/ |$ K7 t% x/ c
    游戏重启, 且重新载入ROM; m8 J* T5 Z& r  O( k
5 X) c0 m& @- }
    snap xxx.png' N1 ^# M$ b. a
    截图为xxx.png( a; b8 L6 _# s3 Z( I

! h7 m+ I+ l  \7 o  ) M+ w7 I# g% S3 T+ }
  
- Y7 A# D4 H; Z! O2 `( l" X  
2 ~% O" f/ ?, A: V. R8 T3 |8 l热键:2 H, m1 u( n3 a$ S1 @2 K. I- {
    ~ 中断游戏
+ g" N; j& {1 b+ |. r) O+ T    F5 运行游戏
: w6 G$ I% G- j6 |    F12 运行游戏且隐藏调试窗口6 [) p+ q$ N- N+ q+ d& `+ }) _
    F11 步入, 单步执行, 会进入子程序
3 n$ u& }: G0 v7 p    F10 步过, 单步执行, 不会进入子程序' y  b! b) \5 w% r* k4 o) N
    Shift+F11 执行到子程序返回
) p7 P, G. Q% o$ |6 ]( i* R  t, ~    Ctrl+M 内存浏览窗口
% M- T9 d. F# U* R8 }, O- D( P    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU+ g- m! J; O$ V- S8 _* Z

- O3 W$ B# a4 e1 Y" {5 l{:4_94:}
/ u7 O* Z1 @% h: ]0 N, Y7 G( X! v
7 Y9 Y) P8 e7 [( F6 n1 d

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2551 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。: N5 t7 D. K  s' b, Q

9 x: P0 \: G" \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 | 显示全部楼层
要详细些的东东: g% ?' r( \# k1 ?6 b
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-12 11:33

Powered by Discuz!

© 2001-2026 Discuz! Team.

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