设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
8 |9 w" Z; }. V, a; M! v+ ^2 [0 x
很快速的整理我自己常用的指令
- [( Y2 j, g, d
4 t4 @! U" p/ I; C& z2 Y  L{:4_112:}
& G) E) }' W  E, t4 C4 L7 i6 ~6 y+ v, e" w* H7 H7 G: J
MAME DEBUG常用指令
3 p$ d+ I$ F5 u" F/ J
' j: A. ?* d1 v' N! A8 O内存搜寻: ci, cn, cl9 j8 K: x( _) ~7 h. U

/ z  B  [/ k+ B8 ~    ci
' t* r4 P$ F; j    搜寻任务初始化, 每次搜寻一开始一定要输入这指令% C* `' N. p) i  j
% C0 o! h& z! h
    cn
7 T! m( n, n* ?; m# c    搜寻指令1 i) R" o0 X  c/ M* d6 H+ U2 Q
    例子:
  w  ]! S# ~9 C4 J# |' s# V! K. n    cn eq,60- z& M6 Y& G2 I+ _, R" S3 u
    搜寻目标等于60 (十六进制)# D+ {1 T$ v5 G3 w
        9 X. c. W& Z( E+ h7 ?
    cn eq,#96  Y$ Q  b3 }+ A  ~
    搜寻目标等于96 (十进制)9 ^6 ^- O) J& u( ?, i( h" z

' I% }! Y$ k& `4 C, c4 J    cn eq
  A# T; K  [& _0 b) @; w    搜寻目标的数值没有变化
2 ~" }; i! W4 T& F" s0 s5 q; {! R. e- p- d, j
    cn ne
( Z& Y, M  ~3 v0 V& N: k* q! j0 k' y6 D    搜寻目标的数值有变化: G" Y0 i/ _# w. k5 J3 O
        
; q/ K7 w8 Z" m+ H3 w, {    cn +
6 X4 }% L7 e4 ^. ?4 s& G7 r    搜寻目标的数值增加" g: V8 y4 G, P! Z% v, g
   
: }/ W  C6 o. U1 Z' @. H    cn -
2 F6 L! ^& Y2 K) @    搜寻目标的数值减少! I7 z9 {2 k3 A! I4 L" _
        4 e$ c3 b  m9 B% L* e. H# N% f3 n; J; B
    cn +,3& g3 L% G. V2 @4 ~4 x6 k
    搜寻目标的数值增加3 (十六进制)
, o4 S( D8 W9 M$ \
. H2 x, W+ ]- A4 r1 U5 S2 F    cl
) d# B4 `( S+ g: I: d0 z    列出所有搜寻结果
0 g3 B& U, r$ @; g" j0 W; K: M4 i" i/ ]; g! g7 r, T. Q# G
    cl xxx.txt
* _" S" r+ K: e% b    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式7 c/ G( @' l- x( u2 N4 G' J9 P

3 ]8 v8 o; I. b   
2 N  @! D' ^* x: m, Y4 f; b. ~内存监视点指令: wp, wplist, wpclear
! a4 [% a! Y2 A0 p    例子:
4 @. v2 `' \0 l6 e* F    wp 1234,1,r" l. Q9 u. N% I
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
+ ~4 N/ @1 h3 P- }
2 \1 c9 `6 v. t) w1 {    wp 1234,2,w
! {3 X' E4 i7 o! s* ?5 h* g% K      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度24 \& W6 f6 @. ?2 X
     1 [  G4 x: _5 ^$ @3 \% g! ^
    wp 1234,6,rw
5 v/ n/ f' z  k0 y' j      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
6 s2 T# p0 j9 g* j, |4 s+ ?- v  Q# ?! h) f
    wp 23456,a,w,wpdata == 1. g; t( u: w0 `
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1* t3 K" `1 }2 V0 r+ Z
. `" W1 X' r1 D0 R
    wplist+ Z. h: R' k, S2 \$ h4 H  Y) I+ V( J
      列出所有监视点
4 q. |5 w; t! P3 g' V5 s. ?
! m' D% I0 _) [8 |    wpclear 3
0 |1 p" X7 P, B5 y% b: }      删除编号3的监视点. X  V. x0 X% T0 u

: e$ _. ]$ g- `, J; U9 t    wpclear
* d$ A- D7 c2 Z, j      删除所有监视点% l2 F4 @  X+ z7 G( e. t

: q; ^! Y) I7 P! j  g      
+ F5 q5 `7 W* E3 ^* z, Y5 X) `7 z7 S& ~4 r, U. k
程序断点指令: bp, bplist, bpclear$ Y: Y- u5 F+ e% o& W$ m8 }* f
    例子:
% |4 Z, @  f2 C" [1 k( v3 }' [8 |    bp 1234
' s9 W. X: f/ ^  D& g8 Z- }      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断* H( Q1 c, H! g2 N2 P

7 \/ e& V! L# A3 z: ^    bp 23456,a0 == 0 && a1 == 0
! ~  J$ _+ \. [/ }6 N7 d      在地址23456下断, 且中断条件为a0等于0以及a1等于0- o( y. ?7 J2 _& e7 A5 {2 X& ]

/ U0 m# m0 r: z    bplist
9 M* V$ Y& i$ x  K4 Q2 ?* k      列出所有断点
- A. i% {/ \# u9 _+ Q0 v% _$ Z5 c
    bpclear 3- L( V/ `$ g2 T3 s0 N$ C0 j
      删除编号3的断点: k2 N( J! z1 Y9 L7 x

1 V' F3 ], `+ J  r0 G    bpclear
- b9 ]" Y- o& z5 @, v      删除所有断点  H4 [3 ~  Z3 Z
2 R' P2 e  P! s0 w; B: n
      , r5 @+ M% v8 O8 H( X
      4 [) A% j- q, b3 G6 m2 w1 w, ~! S
跟蹤紀錄指令: trace
8 K, B" k' |  O' z, |% L    例子:
4 O# y: h7 t# X$ ?8 w) ~9 r    trace 01.txt( v3 ]! l/ y; {: [
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
6 [+ d" R8 F4 j* T, U7 S) E- F7 u
$ ~4 M% }  }* Y6 h/ l: X    trace off% E- b. s7 s: J  M! v
    停止跟踪, 并且关闭文件
7 I: c* b1 q3 E" M( |3 F
1 _7 o$ S" q( U1 S! }    trace 01.txt,0" n+ ~4 H$ p, K5 q# Q4 N
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
4 p/ `* z' u" Y$ ~% d1 }0 m- P# k& a2 ~7 _* m
    trace off,0
9 W- C! B# [% n$ ^    停止跟踪编号为0的CPU, 并且关闭文件$ Q& q  A! w- w1 ~' @5 u5 Z
8 u' v$ `% y* x* C' u( B8 a
    trace 01.txt,0,{tracelog "A=%02X ",a}
2 D' o' l. ?7 T) `, I8 a    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
* `. i( j9 m( z. M1 z6 K    并且在每一行的前面, 写上"A=a "! v5 S5 F) U% X, a4 z$ |
    "A=%02X ",a为一个C语言printf函数常用的输出格式- u1 ~; m/ @, O' J
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
- F3 o5 {+ C3 h- A1 R' A    X表示为大写十六进制数
4 A: r# b; ^$ B1 T
  i) G3 r. C4 g, ^7 P: g
( [5 ~( i6 C$ o4 ~, Y7 M6 a8 H- B3 u" U2 h# O! c& o. j, ~$ A
内存直接写入指令: maincpu: j3 _1 ^$ j* \7 O7 f
    格式为 maincpu.[][]@地址=数据$ c, `9 l+ s3 e% h% j8 j- |) A
    第一个[]:( z& i4 f' d0 O3 @/ R: T3 q
    o 表示ROM地址7 o7 ~1 ?/ r# Y0 o
    p 表示RAM地址9 G! F* d: ~" l4 u; M# N
4 U8 f6 _! U5 u
    第二个[]:$ a/ Y" M- i) S) u) W+ X+ H
    d 表示4字节2 h+ i, j: T) u; k, {) U, d
    w 表示2字节
6 @, C5 i5 G. a' S% [2 ^4 N    b 表示1字节" p0 \3 P# U, Z, _
+ i  t( u! n' Q: V$ h8 F: I
    例子:" e2 _/ v) O' }( v6 ^0 i
    maincpu.ob@1234=FF. K# ^3 J/ r/ H" _- t8 x* ~
    在ROM地址1234处, 写入FF一个字节+ |" W6 V2 o! z. {1 N) K

' l. F! m9 E  w5 D- W    maincpu.ow@1234=4E71/ I- \9 p: h" s, r' B9 B) ~+ M
    在ROM地址1234处, 写入4E 71两个字节. N6 k8 u: [3 q* X2 P7 t2 n+ t8 p

; l$ e8 l7 B' A  A7 T. y1 X    maincpu.od@1234=600A4E71% P# G3 a8 k! G( J/ U
    在ROM地址1234处, 写入60 0A 4E 71四个字节
+ O; e! S* E/ N4 y$ u* y! p- _3 T/ s
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写" X! t% _  g; j& A: Z
    + e$ j, B  x( t7 U; q2 S% G

/ S+ v' ]6 l0 _# I8 I其他:# k. V' {) X0 g3 D4 J. ]4 w
    dasm 输出档案名,地址,长度: J2 m/ d" c' }, m% O3 d! n
    输出程序的反汇编代码& g5 m3 a" T- Q6 X) X: ~
    例子:# x: Z" q8 C7 O% x! N; v
    dasm 01.txt,0,1000001 {4 L$ H6 r4 I7 k' r* F
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
( j. q0 p4 w3 w# l
4 {/ e8 z, K4 W! E    softreset
8 a- h2 w5 O! ^* k1 ~0 h5 k0 w    游戏重启, 但不重新载入ROM, A+ Z; a' m$ r; e, t  _
1 n, l; e1 s) c7 S8 e
    hardreset# V+ Y+ k3 j0 |$ E" I5 j! n
    游戏重启, 且重新载入ROM
" Z' Z" f6 J* Z5 ~7 @! D6 m' @3 {5 s
    snap xxx.png& B: P8 n7 }4 N* }$ N6 U
    截图为xxx.png
3 o: y1 l/ i2 B6 r; ?: \, d! O' n3 ^$ h3 i2 @
  
. a: j0 p* C! g& D5 W  8 r& o& g4 t1 f8 D: J, [4 e) R8 s
  6 u! T+ `7 K! [5 h& l  h( z% w9 C
热键:, p6 O  G5 h" k% l! x' s
    ~ 中断游戏5 }+ f; H8 k3 [& t& i4 N
    F5 运行游戏- K- }. R2 k5 t2 A- j# z1 j* D% k
    F12 运行游戏且隐藏调试窗口# [* S; L$ Q) f  u
    F11 步入, 单步执行, 会进入子程序
4 @7 Y0 v0 D- b  s$ e    F10 步过, 单步执行, 不会进入子程序
' ]& G' l* b0 c0 e' F9 @6 m9 r    Shift+F11 执行到子程序返回! g: \0 b( v/ e) z" K
    Ctrl+M 内存浏览窗口' `+ e, b  T9 s. a: H. b
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
: P2 L; ~: V# h7 l+ V5 ~
; e  p) u. \* `" X7 z) |# i{:4_94:}
1 z! w, W% M# Y" }3 K& g0 t7 \4 [
$ O$ f; M$ u9 u% d  ^3 K# l

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2550 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。) j7 H; g$ N/ j& V! R( u; E+ S( D

4 K) D0 u% K. P  _2 D  KPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东: H4 F* b( h/ g# C& s
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-22 21:16

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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