EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
; o! I  c3 }* y. M! E# m- r7 ^% z
很快速的整理我自己常用的指令% v) h+ t: G( V, }

4 e' g" [2 A% O{:4_112:} / `, L- X4 o! b) }

2 m# V, M# z2 F/ C- BMAME DEBUG常用指令5 @- F8 P6 A7 e# M0 I0 s
: w5 P  S$ @) |4 q
内存搜寻: ci, cn, cl
/ L  Y" N8 C4 g% m! Q
" d+ M; j' _* h. Y) X, M4 P) w  [6 r# a    ci6 ], ]$ ^" [7 ?
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令  S+ s" h* v# _

5 k5 J2 w2 ?- y$ u% C    cn
0 |7 v& T$ a; C# c+ N    搜寻指令! f" A% f9 ~- F8 l$ d: N+ l
    例子:" U" \. }2 w9 C7 b
    cn eq,60
$ r$ U% n; h) }$ M$ x    搜寻目标等于60 (十六进制)
2 f5 `2 j' [( U        
" f! S$ p8 m2 ~( {* x    cn eq,#967 t+ _5 k' H- E0 F& u9 R" C5 @
    搜寻目标等于96 (十进制)' V" O$ q& j8 O; W

! l, h9 V9 D- F* {, Z7 G    cn eq9 t: }( U& v/ R! x
    搜寻目标的数值没有变化
# ?+ z3 a1 w( ?, b1 Q0 B, e; d" z( j4 v5 H
    cn ne% y3 t, V8 y# f2 p  t! U6 t
    搜寻目标的数值有变化
6 H4 l( Z- _' `% k# s' g4 S  }        & o8 X2 V/ v+ z
    cn +
3 W: |8 X/ r  b7 W/ G1 k    搜寻目标的数值增加5 l/ e# ]8 U/ P0 U
    7 d" x4 V' o2 Y
    cn -
& g  h0 |  h7 e6 w5 y    搜寻目标的数值减少9 e2 g7 M- l% A% y
        7 J/ L5 M6 v; ?5 C) ^' E( W
    cn +,3( K$ ~0 d9 z5 K# u. G/ |" V
    搜寻目标的数值增加3 (十六进制)- q- m% Z9 ^, l+ B9 @( ?: {
, n7 M& M, J% S# Y3 T1 B9 m
    cl
3 S  T: q0 C' Y. }( N    列出所有搜寻结果
4 N' Q; y9 O( _4 g" B' D/ G) E2 Z1 M. g# A- K- ^/ }7 G
    cl xxx.txt, T3 k5 d3 j& I& L
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式1 r# e+ A, Y) e2 @: m8 V3 t

& J7 e' o: c; Y- g' Q0 G   
) t( f/ U6 f# I  t6 i内存监视点指令: wp, wplist, wpclear  U$ a& a2 E7 N+ ~9 U3 p
    例子:. j- Z9 y, g& H: \& G( D) D
    wp 1234,1,r- D0 x8 P2 K0 P, Z. x
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1  \) |; L. `  m' t* [  E6 F8 z+ Z

& E1 a3 ^% U( ]    wp 1234,2,w
$ T  n* Z' D- s( d$ d      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度21 ~# s9 J/ m, I2 @/ n. i% T  T
     ! ]( G4 a8 N1 ^+ [+ }! P+ J
    wp 1234,6,rw- Y1 C4 N8 K2 n, p
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
. D+ q. i% x& L; _  @3 o8 }1 C1 s( J9 k5 Z: h7 _/ D: j
    wp 23456,a,w,wpdata == 1
  b$ C+ f9 k. d- k4 v2 Q" X      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
+ h0 i& }9 t9 {# l+ u) g
. D# |0 H3 N2 H2 U" r) Z1 b    wplist
! @+ v' m& I: E' q7 y( N* p) w" h      列出所有监视点2 l/ Z3 [9 v7 J+ Z
9 z7 {, V/ Z6 J0 ?+ q
    wpclear 3
1 V6 R* {( H" m; g9 w7 o$ \& O      删除编号3的监视点
% ~" `2 n+ g4 U4 y4 ?
3 l& q# c, s" t5 C7 n    wpclear
  S( c9 ?, |) i3 }( V      删除所有监视点
0 Z8 M+ {: r# D, H! h9 U; A
9 m0 v4 W! x, c/ L6 @- r. j      $ R( W1 ~3 `! M+ E+ l! ~  D; d

0 p8 ?# P; G$ ?% ^2 }, Z! Y# U程序断点指令: bp, bplist, bpclear
- |6 [2 ]- h. e1 y7 _3 c) B    例子:/ ?8 a' T9 L* n3 L
    bp 12349 e; [( c  h  J0 j
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
4 ~* ~* }; f6 B3 H, _
0 E0 m; _- e' ]7 K    bp 23456,a0 == 0 && a1 == 0$ v* Y/ {! g, Z& m+ K* g
      在地址23456下断, 且中断条件为a0等于0以及a1等于0* z, ~* Z/ x$ r" {( H7 }0 L
* K( h* @6 G7 u/ `3 t$ X* I4 x
    bplist
3 g7 a# K: m$ a9 @3 e0 F      列出所有断点
+ E  m( d# r) `; R4 B+ w- D& P. A6 g: N
    bpclear 3
7 J- H6 S( l% F      删除编号3的断点' W; {- M1 r& v8 X! }
7 ]! ?8 g) g. J6 @# d" F
    bpclear
# ]  G; a4 i3 _- `1 y) L      删除所有断点; f* C+ P3 h* F3 E* c
3 [  p6 d1 \% ]
      
. Z, {3 w/ X3 k: M0 Q4 q) w      + T. x  r2 W( e% u6 n8 x
跟蹤紀錄指令: trace8 {, R/ h! j2 P% \* `' x
    例子:
. _3 b5 Z5 S1 r5 ~+ g    trace 01.txt
/ ?4 r, p+ V, e$ U& H+ o    跟踪当前CPU运行的所有代码, 输出至文件01.txt6 Q+ ^: @- i+ i+ P
4 K) I, K  l- `; K$ b) f5 U% x
    trace off2 L  c$ ~' l7 m! ?# n0 ~
    停止跟踪, 并且关闭文件
1 N* ?! z" H% n; o
/ h' F# w4 B& z. _. O* L4 H    trace 01.txt,0
9 I" Q  d5 I; C7 |; [. z% _. E4 J    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
: m0 V$ @: `- I, N, p
$ w+ K" r! V* c* L! B& o  t    trace off,0: a. y& }1 k3 w/ `
    停止跟踪编号为0的CPU, 并且关闭文件
7 V8 d; X* r! M
0 {/ ]; o! k. i% f" j    trace 01.txt,0,{tracelog "A=%02X ",a}$ s' y- [& K6 {; v0 e: }
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt . Q- ?6 D  {2 U$ `
    并且在每一行的前面, 写上"A=a "
/ l# G% I" p! l  Q    "A=%02X ",a为一个C语言printf函数常用的输出格式
5 m, v% x- k. A* }* \* K    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
2 \3 i3 Q7 ~+ F. j7 z( R    X表示为大写十六进制数
& V6 j: @  i% B& v" V5 Q& L( g% `
% r' K0 }( M9 A1 \" G- U7 T* @5 U$ o: p* ]- {1 W4 Q

/ n7 k& @: s& @" `1 \1 n内存直接写入指令: maincpu9 W; P4 T; \& [: Q- `
    格式为 maincpu.[][]@地址=数据" R: U4 O8 i4 o
    第一个[]:
8 \" c* C* m7 K! z    o 表示ROM地址
6 {/ b* z. F8 o( v0 [2 s0 ~    p 表示RAM地址
6 j  |/ G- D4 o4 T& _/ Q& }7 ?: a: Y. S% t1 J
    第二个[]:
6 v/ m7 X) c3 S5 e- _1 `- l/ t; t    d 表示4字节
/ W* t0 l: n/ l6 f    w 表示2字节
8 T) W) ^$ a: ^; I3 o7 T. R    b 表示1字节0 T, G5 m6 g4 s4 f. B% j2 R

  T) ?* l0 R1 v7 G+ D    例子:; f) x4 ^$ ?4 L7 v9 E. o' J0 n- Q
    maincpu.ob@1234=FF
3 ~6 o( J5 j) w& W    在ROM地址1234处, 写入FF一个字节
1 a' x2 W' ~  `( D7 t/ G2 U5 g( x: H& _& m* O
    maincpu.ow@1234=4E71
( a; ]) w  j3 `: Q2 g    在ROM地址1234处, 写入4E 71两个字节
: d* A& @: |2 E+ @, F" W$ \* {3 B- a- @) V' B& s# u
    maincpu.od@1234=600A4E71! l, N$ E/ z3 A$ r2 v2 K$ S+ {
    在ROM地址1234处, 写入60 0A 4E 71四个字节# m2 M0 x+ l. ~* W- c$ e
+ Q- n1 j2 m5 F
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写* [  h9 I- d8 B, C$ _: R
    , c% ^7 Q) Y7 ^" j  U6 k. T. L" L+ s

- u! a: h7 D. t4 z其他:
6 v5 p1 Y* Q" d" q7 j- K2 G" C    dasm 输出档案名,地址,长度
$ {, _. C: Y! {- N3 h3 N    输出程序的反汇编代码
0 L1 k4 w. W3 M$ j    例子:
' y; g+ x& h' {9 g1 e; t& w    dasm 01.txt,0,100000
( \/ G- u- q+ P$ l    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
$ F7 ~$ C# _/ [8 s* k( K
9 Y4 V. Z8 g9 X1 ^/ S( J    softreset
4 S" a2 R  D# `/ N# ]( I, p" A6 _    游戏重启, 但不重新载入ROM
8 [4 g0 T6 p( H7 p0 r( p* c+ r5 h& U& i. \1 A. w
    hardreset
, [7 c7 r4 R: a* f( Z- |. w    游戏重启, 且重新载入ROM0 y  a& {  `3 |7 A1 }
* G$ e/ |) \: ~2 T
    snap xxx.png
, g& ]+ ^( O5 N# H- x    截图为xxx.png
- W' Q, R1 A6 d; x; H: f. _. v4 l
  }4 k; p3 _# c  
4 H* x# G4 k0 d9 ~, m! M  
( T5 k; E# [2 V  
' j8 o  D9 ]9 X, K1 P: d* z5 U5 [热键:6 s$ Z2 }: t' ^' R/ ?
    ~ 中断游戏# P4 K: Z5 B* B& C4 c* ?
    F5 运行游戏
* Q( i  k+ Z% Z0 t    F12 运行游戏且隐藏调试窗口
8 B7 b; x1 ]' J    F11 步入, 单步执行, 会进入子程序
$ ?. C% _( c$ A! V2 A2 u    F10 步过, 单步执行, 不会进入子程序4 u$ g4 q2 f% ]- R) T
    Shift+F11 执行到子程序返回
" m. D% M- ^  P# \2 X# r* `) V    Ctrl+M 内存浏览窗口! G* d! P+ k0 B) U8 Q" m4 V  V
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU; p  y! V3 H9 t  l9 E" A+ u* p( Y

: U1 D# y6 M  [9 M% T; s  u{:4_94:}
3 E" s7 b# w' v- I( x# Q' O
3 t. I# Z, S' ^9 K0 P2 [8 r! T

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2591 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
4 l: Y5 u2 E) p
- o' B7 ~" b/ p+ ~9 X9 L5 ^4 t2 wPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东/ I  q6 C8 K$ }, j: j
11111111111111

该用户从未签到

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

该用户从未签到

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

本版积分规则

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

GMT+8, 2026-2-1 22:14 , Processed in 1.146484 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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