设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

9 [3 V. U# \9 z1 H# m  l! s很快速的整理我自己常用的指令( ~! R) F+ P! f- C
% ]6 W1 n" F$ H  G6 T' o, x+ y
{:4_112:}
5 I4 L2 [. e' T, q, [# u, f) P; m9 U. X8 t0 \! G* z6 s6 C
MAME DEBUG常用指令
- s8 e! g- G+ q2 Q4 G' f1 O$ w/ v/ |& e" \
内存搜寻: ci, cn, cl& }: G, U- Z8 g

) C* _) R8 j* N; H; F* Y    ci) r; I/ M6 \; |1 I% D+ ?
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
: v+ U3 v+ D& M  H+ N3 e- m
- U5 y( b) g, J$ X* u    cn
1 T& R) I- G5 w    搜寻指令
4 M& z5 H' e8 R    例子:
. j0 C8 h* y0 Z2 W    cn eq,60
# n) Y& q0 b; f4 b# s4 G$ }0 \" {    搜寻目标等于60 (十六进制)
- x8 c9 ?+ S2 V* b+ \# J        1 G, V. D! n9 }  c. v7 r0 c* r, t  {* r
    cn eq,#96
: q, u# e: [' J" m- Y: Q( G    搜寻目标等于96 (十进制)3 Z  y, u) w- M
$ a0 `/ e$ \3 e9 ~4 F) J
    cn eq
" W/ n2 q. y3 i- @  U- R    搜寻目标的数值没有变化9 J. |0 `6 f8 m, w5 }

& n* b: `6 H6 ~8 s! x. C  d    cn ne$ I% p, c  m) F. f% y3 I, p5 w
    搜寻目标的数值有变化8 C+ [8 J0 S! w# T
        ( M2 D& r, W' _/ G/ X/ I( P
    cn +7 @# ~7 o& o# r8 C2 Y6 x, Q; r
    搜寻目标的数值增加: D6 t, Y* p* j; @
    ) X1 A# L3 W; ~) e/ i
    cn -
  ]6 A- m. Q0 M% R    搜寻目标的数值减少, }: {- v% u9 i4 f, d
        , M2 }% W# {1 F
    cn +,3
. ^' c$ {  j; c2 U4 ]8 i# w% i    搜寻目标的数值增加3 (十六进制)0 ~$ \$ j, j( I: o

7 z. {- E. E! p$ k7 {    cl, b: ]5 u- Q" w# M
    列出所有搜寻结果
" s: j! d- M; G# {$ W& ~
) R) w; i' H. Y8 L$ K( i0 ?    cl xxx.txt
& T" h0 U9 k3 L/ Z) e! d& h    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式, S0 w/ P  L* c2 g9 s" d: j/ G
6 w0 R. }( w5 ^# G
    " p$ [: r  O) v) S( V' _
内存监视点指令: wp, wplist, wpclear3 g1 x; Q* T! |7 M
    例子:: P2 `' N: B& z" g- `1 l9 \
    wp 1234,1,r
$ i2 S& J! @- z, |      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1  L' q. a: f3 i+ j
) X6 w2 \  t7 a' A. H! C5 _& ^
    wp 1234,2,w
) W$ @. x, u4 c, c      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2) f! x* t$ x' d. L
     
3 L) G4 }- a* j! R( V5 d    wp 1234,6,rw
# D5 Z8 Y0 G: [* s9 l      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度63 o& u; b3 f: j0 _6 D3 d, B

( ?5 S' l9 P* y+ A% G0 P    wp 23456,a,w,wpdata == 1. |* T6 t0 t1 @% ?. }; q0 {
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
2 I* ]- t% e/ o: j; q/ X1 c
/ T( x: m$ B1 C1 A3 m5 a* W    wplist. T, x- l9 ?: G7 _5 v
      列出所有监视点/ z* S" n) R' ?
9 F) e( c$ L1 y' L
    wpclear 3
4 J; b$ k$ y' P5 d      删除编号3的监视点1 v. `7 k3 K* P, V; }
- Y7 G: g) W  r! [- _
    wpclear! k" g6 s' X/ a$ m7 V7 ^/ o
      删除所有监视点) V9 Q4 y% X6 b# X
) Q6 b3 J- H- M" b" f/ i& b
      1 `0 _) `# }; k# `* P. M
( d$ n. t* Y( F- I- g
程序断点指令: bp, bplist, bpclear
! e2 k9 m, H) z! `& ]5 d    例子:
* F: `6 V, L. x) @    bp 1234
4 T1 Q( s3 h( {      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
1 A) f8 J- o. Z
# p" j! ?1 X2 C; k8 F    bp 23456,a0 == 0 && a1 == 0* m  X3 R, a" v+ O) b) T3 V
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
$ }' ^4 [1 E; S) l$ G6 Z
& D- y! ]3 P: B! E! f    bplist
2 O6 a, U) C- s# @2 Y      列出所有断点
% n" h8 O. f1 X+ ^/ ^
) J) H; Q9 S! J5 j    bpclear 3- v  j$ w4 U) N, x% \. o
      删除编号3的断点7 J5 |  a  ^" @% f

8 A6 L5 H3 {9 j$ T# U9 g* V    bpclear
2 Y8 O' W; U/ y+ n! n+ r' _* |7 T      删除所有断点, J5 u: I- _' c& D

0 w' D6 }( L* _9 f        [8 [3 A2 v+ {! L* S
      
; ~. }! B3 C  y  ~8 n跟蹤紀錄指令: trace7 g+ ~" Q. S, a7 Z
    例子:
" ?8 r' X0 V/ X$ j1 R4 s    trace 01.txt
& m4 }6 X2 w! ?# A- @' ]* [0 s# w# H3 a    跟踪当前CPU运行的所有代码, 输出至文件01.txt
, h. K# a1 B, U1 i2 b& [
* e. P  I  H6 a  N# p* j# R    trace off% z1 G& K! S4 G1 b
    停止跟踪, 并且关闭文件* H! ^! T% g" l
( @2 w3 X/ l0 Y+ y0 _
    trace 01.txt,0' R+ N' l" G  j: S2 L4 }
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
! l( [2 a  [' q
! k7 x& ^* l1 C+ G    trace off,0
  D5 k9 o' m- ]: S3 [    停止跟踪编号为0的CPU, 并且关闭文件
6 ]: o! T. _! ~/ d% Z% ?9 i/ \$ f# i: Y+ ?% U
    trace 01.txt,0,{tracelog "A=%02X ",a}% H1 j8 }" z3 H& z- r2 ^
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt . ?  x( h% E! d: f+ Z
    并且在每一行的前面, 写上"A=a "% k5 G7 ^1 L" ]+ K! l( l; G
    "A=%02X ",a为一个C语言printf函数常用的输出格式
4 l2 q0 ~, b7 S( ]$ O1 J8 p    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
8 T$ ]5 I. P9 Q$ G2 T) E/ z    X表示为大写十六进制数9 `; h) Y3 R6 D/ d$ v5 _: Z: h* Z

; W5 c, H2 O+ T0 x0 W
; w8 r% H+ R: h4 w* e/ \. d
6 g! z8 s& S7 x. H内存直接写入指令: maincpu: ~1 x8 e5 r& o' @
    格式为 maincpu.[][]@地址=数据
0 J3 l, b) U+ `0 K7 `    第一个[]:, e; }: n9 m0 ]
    o 表示ROM地址
5 w7 a- H& i* V) |1 b    p 表示RAM地址
( ^0 z  u' L8 x7 O7 F$ N7 W7 K
# q9 ]1 S& g2 P$ A5 J    第二个[]:  Z* Q6 V* K% }# l7 x6 _
    d 表示4字节) k( u: a; O( q3 u4 L5 K
    w 表示2字节9 @& h  J- [' @0 D! {7 X* D" h" V
    b 表示1字节2 Q! ^1 \- b# i+ R) w7 A
5 S% \  c  k8 x( s5 E: f
    例子:
; f' {  `/ l7 j6 b$ I# L    maincpu.ob@1234=FF5 ?* C: i- K  h) R2 O( L
    在ROM地址1234处, 写入FF一个字节% W2 S6 \6 f, }) [. O  n  D

- c2 K- L- ^( e    maincpu.ow@1234=4E71
; }$ A: A5 t* d& z7 Q    在ROM地址1234处, 写入4E 71两个字节
( \: w: j) ]: a6 Z
; N& Z1 y" [! e# X    maincpu.od@1234=600A4E71
" n) C- W1 }" w) G% E" Y2 h    在ROM地址1234处, 写入60 0A 4E 71四个字节5 F6 Q6 i4 r% m' i1 d3 V
- t4 `# o* u% B5 U' w* i* [
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写* b1 R* Z; v: _2 P  ~) s5 s* Y
    / V4 R! B) z' {

8 v% y/ r; ?4 n其他:
3 Z1 R7 q' T+ ?2 Q2 w    dasm 输出档案名,地址,长度
! a; v* U8 D# M% W& _, C) m& W    输出程序的反汇编代码; R% n$ l8 V4 h: y5 h4 w6 X
    例子:
9 y6 Y! X/ h  G1 l+ `9 x    dasm 01.txt,0,100000
+ ^/ l" C  Q, L. Q    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
3 \8 q2 b/ x* t, T5 v: U5 d3 T6 I; ]8 Y* o/ m2 u
    softreset
7 n+ ~- A' z& s3 M/ V- E" W! W: `0 e    游戏重启, 但不重新载入ROM
  v0 D/ Z$ w+ z, N0 w' N5 N# f8 A% o. K6 y! ^/ z7 y) H' J3 r
    hardreset3 K/ x  i. J- n& Z
    游戏重启, 且重新载入ROM
4 V# W" H% e8 M
6 K5 e. x7 g1 S" y  s5 y    snap xxx.png4 K! C2 {* y  t' ^  D
    截图为xxx.png
; Y( b  n+ A, Z8 m! h8 Q0 B; n/ z, ]+ K) f. l2 w% y% t$ x
  
' `- B3 ^6 V% I6 E+ k5 t4 J  
% s, J- j+ A- b. M  : I. n$ T, c+ T1 Y5 p
热键:8 v. n3 b: O5 `8 n. z9 ?: f" m
    ~ 中断游戏& j, y$ J/ n/ \& Q
    F5 运行游戏
, u6 B4 \0 H: B' Y0 o    F12 运行游戏且隐藏调试窗口3 z( f" K/ t$ p
    F11 步入, 单步执行, 会进入子程序) j9 j- x  U2 v: M/ d: y
    F10 步过, 单步执行, 不会进入子程序
/ p3 Y$ q. N8 Y5 Z    Shift+F11 执行到子程序返回& n( `2 |, Z- v* C
    Ctrl+M 内存浏览窗口
3 W# I8 K$ Y. `: l* s# W9 [    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
9 n8 B9 p( E& k( D: L$ I) g1 K. c5 ]' n$ D: C: }( y
{:4_94:}
; n+ g$ e3 W' L- e0 O0 O
: ?% I9 {% |+ {+ y- x

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2565 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
2 x' {* Z' d3 }% w: _4 p1 ]" ~7 |% a" Z# t6 z; r, o2 L7 f
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 | 显示全部楼层
要详细些的东东
$ w1 y% M: ^3 A* I/ I11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-27 16:52

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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