设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

$ m5 B8 U8 h$ Y+ A) Z, ^1 H9 ]4 ~* |很快速的整理我自己常用的指令
; J; o" S  {* D9 ~* f4 |/ @9 s4 w& w' s* n' [5 L& s! }* A
{:4_112:} : Q5 o" _( C4 b4 G/ @7 c/ y$ t, D

4 S& |4 D7 Y8 m7 AMAME DEBUG常用指令" |% W! {: s0 d7 v
) ^. C( V. T7 e8 o. f& g0 d: {" V
内存搜寻: ci, cn, cl" I( J1 p/ N% q  H9 o
& ^; H' D8 R8 j; k1 p& R
    ci! A+ j, U. [5 \
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令, A( I0 R) Y) h, t: J
' a% \; G) b. F
    cn; o4 u/ i& u  {- \
    搜寻指令$ g. ~0 G- m; {4 L2 I5 o$ F
    例子:( R% }9 n# D% i
    cn eq,60: j. ]& ~2 R# a2 f2 y  f
    搜寻目标等于60 (十六进制)8 }3 i6 P# ]* }! Y3 u
        3 u7 K% y7 o  h9 U. J/ x
    cn eq,#96
# ^, x. U4 \. T! V; h3 U) E' w$ N    搜寻目标等于96 (十进制)
" j# C9 ?  |; y4 C( g* x9 v: O3 a, S, Y" c- i
    cn eq" y' t) U7 O. |" y" f* f9 j
    搜寻目标的数值没有变化
- O3 s0 D) _! ?# k& `/ C  b2 y2 \; ^' i* y7 s, y, n* W
    cn ne
; d% S; x  d. ]4 f( c, q  G; z7 Q    搜寻目标的数值有变化* Q/ U  A, V- N5 {8 ]
        " l: S$ E$ i1 u  d8 G6 X
    cn +- Y9 Z* [0 y6 i( |7 S  G
    搜寻目标的数值增加9 y1 e5 }4 X% Q; y$ `' V# _
   
' q% T9 O; V5 J+ I    cn -
) k1 Z  Z) v% F    搜寻目标的数值减少" p( N  Y4 B4 b4 X4 [  K
        " W& u8 S9 E' Z" b" m
    cn +,3
. B2 P1 D1 q8 r    搜寻目标的数值增加3 (十六进制)
8 C5 ^2 c, ?$ |8 }9 \' Z" j$ u( j1 @/ w: _$ I* M3 }
    cl: {2 Q, t: W0 |
    列出所有搜寻结果5 o8 N, V! C" _. `

# I7 B8 P7 T! k% }; s    cl xxx.txt1 M8 F' O; C; N) C: i3 L3 O( [  l0 u
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
3 e/ C8 J7 D/ i) m  W
* }5 d2 R3 X3 F7 Q) E3 E5 \4 C  h    4 Z) R3 G8 D- ~& S
内存监视点指令: wp, wplist, wpclear7 R2 l7 C( Z; ]5 R+ S
    例子:
; _" C; R/ [# A5 f  h    wp 1234,1,r1 F1 K9 z4 ^% B! l* G' f. Z; y
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度13 C, A; d3 |1 `0 Q( W5 D' v6 C# l8 z

3 W- e  [6 J( H. ~& D1 {+ a    wp 1234,2,w5 Y( B& D% G1 H( W( F3 b
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2. R2 y) M! l% G, A8 s1 Y
     
/ B& o* S& N* n2 Q5 M1 I$ i% {$ j    wp 1234,6,rw1 E+ _2 A& r! R; H  n3 I  p6 P
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
8 q: A2 z3 n& b9 A1 o/ r- @' N. N9 v, q; k3 `+ N
    wp 23456,a,w,wpdata == 13 D6 y$ Q8 |1 c' g1 [9 ~9 i4 `
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1. z; t: u  N1 r$ \$ e* u, W

; ^! G' d) _9 N+ I+ \    wplist
7 D# b5 X+ O: [, V0 w, M      列出所有监视点
! n& M2 W0 H, J+ k% A4 P2 L4 g5 X/ @8 ?8 d3 U5 N" f0 n: a1 a' r
    wpclear 3' M! t0 h0 M5 X8 n* C
      删除编号3的监视点$ s' L( }, }; Z6 p& f9 m  i: L

! I5 ^5 U* v& U0 }: C    wpclear+ e- r* A: _% \- t
      删除所有监视点
( x# d/ ^  @7 D. v) w1 n! v9 W& o2 S$ H0 s( ?' A) Z! H' g; c& r
      6 _) m$ o% _! x: g& ~0 j: r

9 _% a1 U( T% ]) D; R" c, h0 z程序断点指令: bp, bplist, bpclear. |, d$ _2 J9 i4 D
    例子:& U- A1 Y, y/ ]
    bp 1234
" r  b: C7 w1 V' W  j: [+ j      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
4 N) b. A& t# o8 Y9 ~+ z# R, {5 d: ]
    bp 23456,a0 == 0 && a1 == 06 y% h/ D8 n1 i9 J
      在地址23456下断, 且中断条件为a0等于0以及a1等于05 c& s0 h' ?% k2 T6 }8 A
' o) I7 ~7 |) M  e
    bplist, s9 K+ x5 g( m( g' }
      列出所有断点5 ~. E: O0 e- p- w+ Q
- ]4 [# c/ u5 Z# T) _9 M
    bpclear 35 M4 B; g0 {1 g! Q5 b1 ^
      删除编号3的断点) R$ ?  I" w6 k7 o

1 d7 N- O$ ]* u    bpclear5 ?1 q% i! g4 `: S: J
      删除所有断点9 a) M% ~6 }0 o2 ^
5 }4 I. Q- R% x9 K& M7 ~
      
) B' A$ G6 t: p. |      9 ~- [% M  F6 y
跟蹤紀錄指令: trace: T. J; t# R$ B6 k" ^% q
    例子:" K) K3 s/ `$ a" \- J
    trace 01.txt
( S* z9 F$ Z' Q' G: h# m( u0 ?7 }+ k    跟踪当前CPU运行的所有代码, 输出至文件01.txt
, _7 V7 y* y. Z
+ o. v+ s. w3 I6 M0 }( Z    trace off7 `: T5 P" \( h1 l
    停止跟踪, 并且关闭文件9 ?6 H5 J1 t3 Z4 N9 i2 a" J2 K- i

4 I; B* k/ ~# T3 w! \7 x  k    trace 01.txt,0
5 R6 M% S- `& {$ @' x  i, n( A+ a    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt) _, c* D% C9 F) K5 A; _! O6 G
! S) b; _. }, Q/ I4 Y
    trace off,0
# o* q! y3 e, m# |4 u0 E- n    停止跟踪编号为0的CPU, 并且关闭文件4 q- J: ?0 }. j1 J# @6 J' C
$ H+ J$ F% v- x; f8 I* H
    trace 01.txt,0,{tracelog "A=%02X ",a}
: a1 H. G+ H& \( m    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
* `% b8 C% b/ Z0 @- F' |) T! S    并且在每一行的前面, 写上"A=a ", z  V1 o; ~. m& n% d0 O
    "A=%02X ",a为一个C语言printf函数常用的输出格式7 E% E/ E+ [1 E2 h
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入2 [7 m! A# w8 h  O" N! I5 ?( }
    X表示为大写十六进制数/ L; C$ B4 d  _9 h* C% R

1 R& f% S) t; `2 Z# x% I  x6 P: g; n. A1 J
9 `( |+ ?5 X+ {' s5 a# ^
内存直接写入指令: maincpu
  Q; ~2 z9 E  d6 B% y    格式为 maincpu.[][]@地址=数据
  A8 M9 {6 G/ k; ^    第一个[]:4 ^3 r4 J3 K8 k8 q
    o 表示ROM地址
1 ?* w; L4 |& m8 G    p 表示RAM地址
# C: |& o" K5 h0 \5 b' m
# d% \6 j2 X! w0 U8 }    第二个[]:
6 Z. D5 ^2 |/ f    d 表示4字节
6 U, {% }  b5 j1 l6 V    w 表示2字节
- o5 Z* S" [) u) O' b    b 表示1字节
8 s5 e& c# z0 Z3 l$ k9 v
1 V$ o8 o3 y  f! K+ c    例子:
6 @( d' P, q. [/ r    maincpu.ob@1234=FF2 c; B2 I; X9 j6 a& {8 A
    在ROM地址1234处, 写入FF一个字节  V% H- \6 N3 R7 d
' y) b/ r9 I2 S% x0 @
    maincpu.ow@1234=4E71
% K( E7 T! |" J. v* `% G    在ROM地址1234处, 写入4E 71两个字节
, ~. U( g5 F4 K& I4 A' X( ]/ E" x9 ^: u' w( [' }5 s- ?) x
    maincpu.od@1234=600A4E717 H7 H/ c  Z% g
    在ROM地址1234处, 写入60 0A 4E 71四个字节0 o0 j( _- q/ R, V

+ q# t& b; C, q* Z    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写$ E) b! l! x* ]
   
- L3 s$ j' d- X( M( M9 K: m6 Q1 G) M
其他:1 W) n+ T3 E& C# q& R7 [) C' n
    dasm 输出档案名,地址,长度
) J# B" W+ Q/ w$ R    输出程序的反汇编代码
, m2 H! u6 H. y% Q    例子:$ q  G/ ^0 ]+ R
    dasm 01.txt,0,100000
; Z; i( D7 e# o# C    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt: v" X! {' F1 [

" |% L& D6 n6 k/ O    softreset
5 G: v# N" Q& c. z8 p+ }    游戏重启, 但不重新载入ROM
& R( X% Q) c4 B, J& U# h: ~; Z. [6 {0 O! `2 v, K/ |* }
    hardreset+ ^/ l/ e0 I, x9 K
    游戏重启, 且重新载入ROM( P8 R7 [3 j: F) t; I7 ~

, i# M# _5 N/ |3 v; [7 r5 o( @    snap xxx.png
8 e7 H" Z# o7 x    截图为xxx.png% Z4 A0 H( f4 _: h7 C3 `

& v# Z! c  f2 ~  
7 |+ P! v* I$ @6 f7 k  
- W7 e0 u, F# j3 j+ }+ E0 X) F  3 o$ H( a. U4 v$ _2 x) \: s
热键:
  V' @: ]. e  \* \  \0 K3 V    ~ 中断游戏
! v' `. @: o$ g0 I8 q7 F: P# `* }    F5 运行游戏
) j5 r- [; [3 r& P4 d& F* S8 c    F12 运行游戏且隐藏调试窗口
& H7 C$ {$ y4 b3 z% }$ f3 h" h    F11 步入, 单步执行, 会进入子程序
% N7 z3 u$ r2 P/ w- ~* R    F10 步过, 单步执行, 不会进入子程序: {* o+ w+ C# ^+ G
    Shift+F11 执行到子程序返回
  b5 E+ |+ ~- E1 f    Ctrl+M 内存浏览窗口
: X- S+ k3 j0 S& _6 B5 l! j/ X% m    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
& Q4 m6 w" _. Q- ^
9 p  y& {3 Y% E; `# B' U{:4_94:}
8 _2 H0 Z$ j1 x; c* y4 y  n5 p
' P$ m. G( X( f2 a9 k$ A; g

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2550 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。8 Z: E" |, R+ F  R

2 Y) [5 r& u2 s/ GPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东  Q0 `* @- I0 s* n: M5 R# q
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-22 08:14

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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