EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
4 Y- I) l) O) D, {0 V
很快速的整理我自己常用的指令
- |, y, X* i- r  g3 C0 r* O: y( Y' I. e$ j- O
{:4_112:}
7 G. j) X& }# _5 b& t3 q7 K
& U1 y  z6 ^. X3 ?3 Y' k" fMAME DEBUG常用指令
7 W  ~6 S& b  `  V9 Q7 Z% k% Y* t/ l- b) |4 U- {1 f0 i. H, a& D8 T) `
内存搜寻: ci, cn, cl
2 h: A8 X! @7 r  n' ?* |$ X: ?- C4 A: {$ I% t8 y! W* \3 \: t! f
    ci, d( D1 }4 z& _8 |5 S
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
/ m4 D% y9 v( O0 E, L! F) ~
6 x" [, ^' N& i$ `    cn
2 ?* Y$ o" ]7 V    搜寻指令3 D$ ^! T) q( u9 G
    例子:  y( |, T& b  s  M( Q
    cn eq,60
5 s6 A% a2 V. v" S& J  C    搜寻目标等于60 (十六进制)
$ z# f0 a+ B# V  H- J          o! q" `3 Y; U6 U: m
    cn eq,#96
$ ?3 D, w  A$ F( A  G5 N    搜寻目标等于96 (十进制)' s* d1 |, _. u& w
! C; v) x4 K2 l/ w4 @8 @9 Q& h
    cn eq# o/ \$ s+ z' C6 F7 V# i# Q* w
    搜寻目标的数值没有变化; H2 e$ }* s4 i$ d* Z
' ?8 H# `. y- I0 K
    cn ne
/ t+ x; W0 T) E* u    搜寻目标的数值有变化
. d. [) m" d6 _4 H( C8 W9 U        5 D! V7 t1 e0 H" j$ |4 w: _
    cn +
( m+ F: ]; L# m7 ?7 X    搜寻目标的数值增加5 l& F2 X8 b- }, c/ u' \
    $ y1 Q) I" h9 p" Z: Q
    cn -* z, _0 Q* p# M
    搜寻目标的数值减少8 U# w2 I4 r3 G* ]
        
: ]5 i) X5 `2 G$ B/ ^; ~, s, I    cn +,3! I  c, l* J: ?" w6 X
    搜寻目标的数值增加3 (十六进制)
! Z5 W% P: C: S$ V: o5 |
3 \( G7 ~9 O9 }7 o, k    cl
+ d& U4 Q4 P8 K  t4 t! j    列出所有搜寻结果" c' Z) u* X9 Z, w  z

0 L; e. P4 z' K& V+ @/ D/ j1 I    cl xxx.txt
, A4 Y/ w  \. J7 p* w    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
9 g2 T+ S3 Z1 ]. X, {, F
! d2 A- a1 y& L& s. o    . G; q5 Z3 T- J7 N
内存监视点指令: wp, wplist, wpclear  v/ b, \+ ~4 h( N- P" |. X
    例子:5 @9 `7 F8 I5 K
    wp 1234,1,r
2 U8 P- W' m; y& |' ]      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度14 V- }* U3 E. T  ~$ s. ^

. \9 w, L% c& M/ d  R, d6 R    wp 1234,2,w! C2 B! R/ ~$ Y
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
, [3 p9 O, M; [+ H* L" Z     8 A, @" V& o" }5 V( H4 a
    wp 1234,6,rw
2 G& x& Q( J1 L9 Z* s      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6- v& w3 n% [+ \( X

, v) F3 l% F5 t7 j0 b9 ]  g    wp 23456,a,w,wpdata == 1) Z* A- w0 p* }1 e
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
0 t" V/ m( z4 V7 o- H  L( k1 H# y) C5 @5 `! j- T8 i
    wplist' @: f) d: O6 [4 J: n& M8 P" U7 `
      列出所有监视点' z9 Q/ |7 G/ ^# z; T0 `8 n

; G, `  W( j4 i. W! O; y$ l- I    wpclear 30 t6 L( {- k7 M  Q7 L, Z
      删除编号3的监视点/ @0 S6 r/ g2 F8 }
% O( W2 s' t/ s9 J
    wpclear
: m) s3 I# \# ?% }* V      删除所有监视点
5 [, F. j: _% ?# Y1 B( F4 L( G! ~
4 w$ L# s. }) J; X; l& O1 ~5 T      ' _0 B# c$ @3 {, Y4 v8 H9 _
+ q$ x, C8 b5 c& n) c+ z
程序断点指令: bp, bplist, bpclear
0 l# C0 L' z6 C5 J+ Z    例子:
7 p4 y/ s* B+ u1 ~- y' ]# S" m2 H& ^    bp 1234' |, O, v. O2 \: |5 S" v
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
& y' A, B; K4 i
3 |" W1 W. u+ a    bp 23456,a0 == 0 && a1 == 09 b4 S) m7 _: ~+ G6 i7 z% s
      在地址23456下断, 且中断条件为a0等于0以及a1等于0) ^) O1 m* v3 X2 F1 V) K
+ i) K8 c+ m9 M
    bplist
7 E/ g+ h9 J! O: Y- H% U1 T+ k      列出所有断点
4 y7 R+ D' _5 k$ V
4 q( |! k% N" L: g1 Y9 g. }    bpclear 37 n+ j' ]4 P# V4 E8 J
      删除编号3的断点
" `* ?7 C+ W% h5 O' c8 o- i2 |; V; O  e+ _: w
    bpclear
! Y. e5 @4 f% a1 o9 D% v9 j      删除所有断点: o0 `  c) P$ p  a2 f
( ]* A3 P$ J( G9 H. _' Y
      
/ e0 U3 i- E# h7 X% N3 x      
/ Q" i& j5 A/ E+ ~  R" }2 |/ U跟蹤紀錄指令: trace
7 U3 @0 b$ l. H, J0 Y+ k3 Z    例子:7 ]! ^9 b/ X2 S3 \; S# A5 B* r
    trace 01.txt
' g: N- u: U" N8 F# Y4 d" T2 {    跟踪当前CPU运行的所有代码, 输出至文件01.txt
7 z$ N  C3 m1 x  p+ E9 n% ?% w% ^9 o# v1 Z$ N
    trace off
9 g0 V* D, E3 ?; q. Z1 Z% s" U    停止跟踪, 并且关闭文件
9 E( b* J# x0 j6 J  K
+ t  v) k, r# T" x% w* I. i    trace 01.txt,01 m8 X" k+ b  ~: b6 U; j* a
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt2 [5 Z- \/ o. `3 |

6 X, X# x$ e* V8 y4 \    trace off,0
+ O6 f, F1 P* f$ ~! o1 v. M    停止跟踪编号为0的CPU, 并且关闭文件" ^& `7 k9 y5 w6 E$ d  T' @

6 T) C1 `  B$ l. G$ H6 Z8 G    trace 01.txt,0,{tracelog "A=%02X ",a}0 G( o1 s$ Q0 Z  c
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
/ j! y# K8 `, W( S- e) i& E1 g    并且在每一行的前面, 写上"A=a "
* r" U% L% V# d0 |6 t    "A=%02X ",a为一个C语言printf函数常用的输出格式
% \$ s- B" W, _7 j" Y    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
' O( E5 x+ j8 B8 `) D8 C2 w% U    X表示为大写十六进制数
+ _! r9 A; P$ M$ j3 Z# J) D
# U! A3 ?5 E( R, ?( y7 x/ \9 y( X

5 P( G, x% Z' h5 `2 G; E, _3 W内存直接写入指令: maincpu
$ U1 f$ h: `/ @, I    格式为 maincpu.[][]@地址=数据/ N) V1 C! E8 I) G; p
    第一个[]:1 Q- D2 [6 `+ K& A0 ?) `  O: P
    o 表示ROM地址
6 \, b% B3 e; h2 `    p 表示RAM地址
+ g3 \+ q# A: U% e4 U) x
  R; N4 I. a7 q3 T    第二个[]:
; q$ R! G: k% q/ i% X    d 表示4字节. R1 T. z5 X4 {& E# o$ p( ~
    w 表示2字节
8 ~% s7 G0 m& ^' w  R    b 表示1字节- ?. V& H8 b8 q+ {  o0 k
! v' p; B8 h1 {4 Y
    例子:3 O: y% j% H$ u9 V2 Y% E+ l
    maincpu.ob@1234=FF
' ~! F; ^# J1 \# M, V    在ROM地址1234处, 写入FF一个字节
5 B: X( p" j& k" F4 f
$ f# y7 C+ n' [! j& k8 y9 F: g& R    maincpu.ow@1234=4E71
5 T+ V4 C1 G0 w$ W2 t4 u+ v% F    在ROM地址1234处, 写入4E 71两个字节7 C' n" q4 R+ b, X; v$ I

# M4 i# |6 A2 _* j) B9 {    maincpu.od@1234=600A4E71; _& j3 l; W1 ]0 m1 y
    在ROM地址1234处, 写入60 0A 4E 71四个字节( r7 j  m6 p* a. a. p

; {2 Z' J! Y, N3 g    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写  y- p; O9 U8 w- p- P, ]
   
( w& f& q  ^+ ~% M3 P1 A4 d# I  v9 B2 ]6 R4 D3 W
其他:: \; U1 a8 c! V
    dasm 输出档案名,地址,长度
! m0 C1 o1 x5 N* {7 F* v; j$ _" |    输出程序的反汇编代码( z% p# |" b; S6 U4 ?( W' i
    例子:
2 G/ t7 R- L% _' |5 B# l    dasm 01.txt,0,100000
3 U( @: A' f) M4 u- w% a: K    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
9 X0 P3 ?) W, K  m
4 R$ N, Q& u! j& ?: `$ S8 l+ \& W    softreset6 g0 c* \  z$ S/ L& w! {5 m
    游戏重启, 但不重新载入ROM$ B7 D1 l3 S( N

/ l. l: A0 I/ w) R3 _. H2 M7 K    hardreset2 e, q; \& b1 `; A7 i+ j
    游戏重启, 且重新载入ROM# l3 `, X0 c. b; T" Z
( N% D# _) ?" V) ]/ d
    snap xxx.png$ y7 [2 M8 m* n$ [( l
    截图为xxx.png% I2 T  o  b: ~9 Y
" H: g: d: {: Q0 r5 i, s9 P
  6 i# ], v* I7 e- q  H% U/ d
  
- V" z/ n; w; f4 s9 Z- v0 h  
1 U2 F0 b4 O; c7 n热键:
/ N! s- s$ x1 \# \. U) M5 `    ~ 中断游戏
& y: m; p9 j( r/ |' X( U    F5 运行游戏
0 S5 _  s: Q/ ~3 o0 z$ w" `    F12 运行游戏且隐藏调试窗口
! f( a, H; j9 q( `& Q; M    F11 步入, 单步执行, 会进入子程序6 A! ~: c3 Y  z$ M& ^, R- I
    F10 步过, 单步执行, 不会进入子程序+ O( g6 \1 n6 C4 H
    Shift+F11 执行到子程序返回$ b, |2 e( H' t$ r# ?: i
    Ctrl+M 内存浏览窗口
1 B! K% C3 }, T4 i$ \9 Q    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
0 V6 V. J! X% m+ C% O0 B5 Y( Z, W
7 |' G$ m' @% U" |9 W9 c{:4_94:} 2 f( S3 j1 u4 }1 g; ~3 z! y
& C5 g+ z0 K5 S* w  x+ [6 H

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2583 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。3 R# P1 f$ M3 D, k0 d8 x

) _* J' ^' J0 c3 V: `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 | 显示全部楼层
要详细些的东东
3 f. Y( C( ^0 ]5 i4 p" O4 }11111111111111

该用户从未签到

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

该用户从未签到

发表于 2013-6-19 19:43:21 | 显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-9 13:06 , Processed in 1.072265 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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