设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
! y4 e$ A# j# k; i! R1 }
很快速的整理我自己常用的指令
' q  m  U5 e9 Y; r: E. f6 |; S2 d4 N6 L9 c  p" o2 h4 x  l5 f7 N" I3 `
{:4_112:} / o, Y. ~# k+ A6 X" ]6 i( ^

: V8 w: j: {2 c" o5 AMAME DEBUG常用指令" F# M( M& X* j$ U
0 F' U' _4 T# s; R8 Y
内存搜寻: ci, cn, cl& T7 m" h4 m; z. e. a  H, L  Y
: b9 S! h2 f0 f+ K. g/ F2 E% v4 m
    ci! u& M: V. l0 ]3 U
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
3 A3 p0 E" R8 D/ ^5 E2 z+ j8 @1 n7 ]) R
    cn$ ]& N, a8 r( Y! T
    搜寻指令
, q+ W+ z% U4 \    例子:5 t- H, e' s* M
    cn eq,60' R9 P5 B# A8 V1 _
    搜寻目标等于60 (十六进制)
% ^& ~% i  [% m2 S2 k9 @# B% t        
+ @8 U) ^4 \3 G4 W. w    cn eq,#96
3 O4 c% Y( h2 n$ Y4 V, P- u$ b, N    搜寻目标等于96 (十进制)
  j' K1 N7 W2 N  H) i  O" r0 I( ]( F! g0 }
    cn eq2 O4 K# I# }1 {& u
    搜寻目标的数值没有变化8 }0 L. R8 e, }

3 p. ~& W% M9 q, a    cn ne
  g; x* K/ [0 Z5 L    搜寻目标的数值有变化
1 K& R+ B3 L- _( }2 O1 ^$ n: O2 [2 [1 |        " R( D' W$ ^; W2 Z& W  ], C
    cn +" I$ u4 w# \" \" C
    搜寻目标的数值增加
* R7 X; k' {+ ]; L/ o* u: k* V9 M    ( o, h4 Q$ u" }
    cn -2 _. W- \: _( g/ X& c9 [
    搜寻目标的数值减少/ t  v+ B+ h! Z$ l9 C
        , `  N% a  Q) n' h
    cn +,3
/ Y3 r- X. Z* A    搜寻目标的数值增加3 (十六进制)
! s5 A' O2 T9 `. h( h# C0 b6 X/ i6 M. g( r
    cl6 t- i8 n4 K8 q+ _2 O
    列出所有搜寻结果0 I3 F6 ]1 J7 K% C" e
! P* o9 _' B8 u7 r8 E2 S! K2 o
    cl xxx.txt
% F3 y" J' X5 K4 ]- {# I8 g    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式6 r7 l& g. j2 b, P4 r) c

# f4 Q: d0 b) U' p    4 L: u% I2 u3 e
内存监视点指令: wp, wplist, wpclear
. m' c& J6 j1 H- F! u    例子:
9 O& S1 ~: N3 A# e! ]% K8 {    wp 1234,1,r( ?/ v+ ^' L; [" `
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度18 i2 L. K- h+ u  Y

1 U+ c; T4 T3 j& m8 E    wp 1234,2,w
! w9 O( L; c. S$ J5 A$ G  _      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
' N7 _% S# T' f' M$ g, p+ h     ; j$ s% N/ c5 Y# t5 W
    wp 1234,6,rw
  S! y* \5 q/ v( C  N      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
9 P5 D4 P+ v& @* T, X; N3 h( d# y# m7 w4 t! H7 C
    wp 23456,a,w,wpdata == 1
# W$ u' p& z" q. b" u  [* z2 K      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
$ m- V8 A% p2 ^0 x  t. _4 K( R8 `2 n: @+ W$ b. a9 _9 o  q
    wplist# |, K8 z; [1 W. }& }' Y8 N
      列出所有监视点8 \' c  P* F* Y1 C- V; p

2 R! V4 H. o. f' Q    wpclear 3
0 M( i0 j0 @$ U" m& Q- q2 a: R3 |      删除编号3的监视点
" f. m4 o. K# x+ h) `$ O. B. f0 ]
# a8 ^; q4 h" m9 Y- W    wpclear
" d+ Y5 }8 `- p- ~! u3 U3 _      删除所有监视点
( O9 a- i9 `9 k: [1 v/ }: d
  _! Q4 Y3 V# w& H- X; w0 h$ n$ I      9 C! g4 M; d/ G" x5 j5 o6 n% l

9 @4 Y2 H# n5 s1 u  u程序断点指令: bp, bplist, bpclear
# Y; @7 g9 S" h! _! ~3 G    例子:* ^, w1 x2 G5 |# |$ U. b  B
    bp 1234
  _. v1 T( T1 g8 v: D0 m6 Q8 q- B1 r      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断$ `4 f4 v/ U/ f+ C
* J; d% @* O& }1 `. b/ \
    bp 23456,a0 == 0 && a1 == 00 ], z' X7 I0 j" f) _( a; B
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
7 E2 J" n/ I/ ~& F  x/ @+ c2 j- |: z0 f4 L' x4 t$ Z
    bplist
9 d- t) I! f" L% b1 Z+ p: ~) O& ]! q      列出所有断点) ^  u: _; C3 M* W: ?- J
. o- v( A  K8 d7 k* D7 k
    bpclear 3
2 s, r7 a- R* `6 ~9 o1 Y      删除编号3的断点
' s! \/ J: b; M; U" w$ N3 M3 [. n
    bpclear' g: M6 j5 x" V; C  J
      删除所有断点
! G/ ?  U* T0 v9 ~' @
3 K, A; M7 Y3 J+ X/ t      
8 K% F' W4 z" u2 J* I      $ g  H( e9 K: l8 R) f) U; u- P' j
跟蹤紀錄指令: trace9 ^# S; ^# |, u0 Q5 a# F
    例子:
7 |8 ~% w/ O/ r3 A    trace 01.txt
$ X  F2 V: H4 Q    跟踪当前CPU运行的所有代码, 输出至文件01.txt; q3 Z5 M5 e( b# J

1 c3 W; K5 v" \2 o    trace off/ G! c2 r6 _" r' ~1 X
    停止跟踪, 并且关闭文件; [% H, }: M  y0 s" |

0 ~+ z& ^9 S/ V" R* Z    trace 01.txt,01 a1 ]5 E5 S  g4 Y6 u. ~
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
. V0 C. u" R. A4 j, I& L/ j. T8 s
$ N& I( A- z, @: y9 D6 g  r    trace off,03 K( C- F0 ^/ B, \8 Q+ D4 ^0 @( v5 U
    停止跟踪编号为0的CPU, 并且关闭文件& I$ e/ z! @, E7 p6 }" q

# v/ c! U7 n$ C; `    trace 01.txt,0,{tracelog "A=%02X ",a}# E1 H; i  x- L# K
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt : {' ]3 ?  @0 M+ H; K/ C9 K( F
    并且在每一行的前面, 写上"A=a ". R" K+ k' l0 Z0 n# h7 j
    "A=%02X ",a为一个C语言printf函数常用的输出格式. Z0 F- e" b+ ]2 ?. v( h3 H7 q
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
+ \0 \/ R9 F4 t: B3 U  Y/ e  r    X表示为大写十六进制数8 H) \- T$ S0 |  j+ T

4 u) p+ p. a: o* z/ M
! E3 Q; b7 J1 u$ P' s
1 Y/ _( N/ r! R内存直接写入指令: maincpu
5 q4 I% ^, Q5 a4 k* V    格式为 maincpu.[][]@地址=数据; R  e2 q: K- V5 J
    第一个[]:: s( M9 V5 e& F
    o 表示ROM地址: s' \% l9 H1 H: S
    p 表示RAM地址
. ~3 l6 w! f$ O. Y2 C) Y: E4 C, h7 [6 c
    第二个[]:' S7 Q& Q7 _& [  Q2 P2 m
    d 表示4字节
6 Y% E2 D- U* z& z    w 表示2字节- N2 y8 p, ~) _0 r: O0 Y
    b 表示1字节
; u/ P( }) [- L; c/ i  k2 N7 C! ~
8 k/ Q7 J: Q% k    例子:
& _) g  b% l- R4 k, O- E    maincpu.ob@1234=FF
. |* O% Q' H7 S! `# X% w$ Z+ m$ ^    在ROM地址1234处, 写入FF一个字节# \" |$ e( H) s/ u/ k# C

# M* Z% ~! k; p0 |    maincpu.ow@1234=4E71
$ u% S# ~# b- y    在ROM地址1234处, 写入4E 71两个字节
" V8 h+ ?8 r( n" R1 {+ C9 [! c& ?
    maincpu.od@1234=600A4E711 y8 W: a$ ^" e, K0 P2 d
    在ROM地址1234处, 写入60 0A 4E 71四个字节9 [' d' n4 F4 H, [& A7 u

$ m5 Q: Z; _: r    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写- [4 O. `# R3 r) p& t1 J" g) ^
    7 r" o1 I( k2 Z

' R; H) b2 {3 A( v3 }" v: x! H其他:
$ v  O1 {0 }% d    dasm 输出档案名,地址,长度
, ^% z: K8 V& Q* X! @7 E; N* H    输出程序的反汇编代码6 k3 |2 L1 U3 Q$ [
    例子:) j: s% }, Z) S4 M1 k
    dasm 01.txt,0,100000; t: N( N6 }' n5 @9 c
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
, S$ g9 o, x$ D2 L9 E2 O0 D3 U- J& M3 `! j
    softreset
7 I+ |5 u  o' S    游戏重启, 但不重新载入ROM3 C- [, ?) e; X* b) f( t: \2 G

' d) |% @( L: s, S+ m) |    hardreset
/ V; s6 z% ]2 E3 y- Y+ }! p5 Q    游戏重启, 且重新载入ROM
3 v8 d3 u! l% X* N, L3 B# ~1 Y- _( D1 G, g' I+ L% f1 [* y2 N
    snap xxx.png! V1 v; k  x1 F) G
    截图为xxx.png: x5 Z9 [. f3 a' f; c
) K1 R. G$ X7 a) k0 N/ w7 a
  
' _  O. S  o4 V; `  + J3 V& n# D+ e" I" V& q
  
: [" g4 u$ p+ x4 Z4 R热键:
$ [* r( E2 i; p, n- M) ^( S6 h    ~ 中断游戏
# d8 a0 T( v5 q7 _    F5 运行游戏$ c$ f0 A2 c6 t* D
    F12 运行游戏且隐藏调试窗口: H1 l$ M9 C* b
    F11 步入, 单步执行, 会进入子程序$ b6 w* A' u; H$ z  H& M; x; ^( U
    F10 步过, 单步执行, 不会进入子程序: {* a/ b( ?! W7 T
    Shift+F11 执行到子程序返回. T& o5 D3 A( p8 ?
    Ctrl+M 内存浏览窗口9 j) p4 }9 v4 P
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU* m% i. _6 p( y9 F( S* I7 N$ X
7 d8 [: U1 \: b8 ^( n7 G% n
{:4_94:}
. {+ k. t3 ?1 ]9 r4 o" h/ X
7 B5 J' G  ~- `2 L

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。. q# F0 d9 c* i

# \/ n2 l' C5 a: f9 UPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东6 K! j' G; E; j+ P' A% U* o
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-5 10:35

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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