设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

1 W. n' N6 E% ?5 L很快速的整理我自己常用的指令
+ z1 j) P& g% o! H8 |; @8 f$ ~- ], z: p0 S3 ]* K
{:4_112:}
6 u# E7 v( l2 w8 {/ _% p3 {7 k
! ], w- C: T' H3 VMAME DEBUG常用指令6 ]+ D3 x) i" Y7 D

6 G- H6 b+ C: u  X- B) W( A) [内存搜寻: ci, cn, cl
& O* P# O* B' w
- M* u; O5 ~! W1 t  N. Y    ci
( O, X! {$ a/ u' Q& l5 ?    搜寻任务初始化, 每次搜寻一开始一定要输入这指令7 c9 g8 U, v  l1 L8 ?* y1 ]
2 J- Y$ f* s, D0 q
    cn
. Q6 @! q  B+ i    搜寻指令" {0 l) V# u$ w# D- `
    例子:
, F7 K4 A" u& }    cn eq,605 Q7 i! V1 Q  e8 x( f& H
    搜寻目标等于60 (十六进制)$ a0 _0 o  V; s3 `; y
        5 g9 H8 r% p1 B
    cn eq,#960 }; y: N5 x  i* z$ {; ~7 d
    搜寻目标等于96 (十进制)/ V# @7 S( E6 [; S6 v! A
0 f( `% L! \  ~+ v" b/ n6 j
    cn eq) B/ o- K8 M: h/ X6 E# P
    搜寻目标的数值没有变化
. m5 d: H6 n: x0 {0 p9 V  O' m3 b# j! w
    cn ne
/ f6 L( x8 g$ {/ Z' e' m    搜寻目标的数值有变化1 a0 d# Y7 P$ W( ^( O
        ( V2 X! T" ?; p& ]  q
    cn +0 [9 l! a; K& B) _9 r& s1 _# W( @
    搜寻目标的数值增加  Z0 H# T- @  R9 W8 k
    : i) ^$ \3 ~- F
    cn -
& ^1 g* D) @% Q9 j; }* E    搜寻目标的数值减少. k! g. T, {' ~* r; p) q- b3 ~
        , P  \0 B9 g/ f" I* h+ m
    cn +,32 r. R) ]3 c4 M9 J. Y) W
    搜寻目标的数值增加3 (十六进制)
7 r0 }0 N$ H# d6 g% m
  Z1 D, {: K' G    cl
% y; N( A. H( W" ~% X    列出所有搜寻结果4 a8 C, w) |! q7 c4 v. R

7 ~& D9 c. z! y    cl xxx.txt+ }+ ]- P9 t, G3 r0 X9 ^
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
$ Y3 ?/ q, n  h# w1 |/ B1 M& P4 h
- e) X) C  W6 N" Q1 l( C    7 N: {8 Y% e/ q6 b- _, `9 A
内存监视点指令: wp, wplist, wpclear
  l1 a( g: m7 o* G1 Y    例子:! E6 `  m  Q- `- V- c
    wp 1234,1,r; _" R, P  ]+ v3 A& ?: ~" I# G
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
" C; J2 ^# ]! F% \  \( `4 o
6 k% P/ _' T% S6 e2 N    wp 1234,2,w3 P! y, P8 {8 E- d- l  o5 T- e/ V/ g3 R
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2" l5 n8 ]( U+ @" n
     
! d0 E1 ~3 |" {! L! {    wp 1234,6,rw6 e/ V4 f( x* n( O" \
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
( l: f$ ]2 O: V* R6 m# {9 {, G0 J5 O4 g, r  J3 N: a
    wp 23456,a,w,wpdata == 1
6 I8 ~" P. D  r      在地址1234下写入监视点, 数据长度a, 且写入的数据等于18 A, p4 s7 Y1 u. l
* n, E8 D+ B+ f: K; t7 b# E
    wplist
+ g" `% i' `" w  p6 x      列出所有监视点
! Y% m9 o7 @& r% f  w$ b. G$ U  Y4 \! S8 |
    wpclear 3
# f8 Y# D& S, D* C* x      删除编号3的监视点
* f/ t4 D$ C& u$ }9 J& x  f" ^4 K" y% G# d6 S  \
    wpclear* R3 @- ]" h) J# x& \3 x# L. p
      删除所有监视点- ^3 X" O: z! R5 f, W
: C3 H8 i6 \- n5 T* X+ H
      5 P3 w6 E4 Y" o4 C& Z

1 H$ D& v# s( G% o程序断点指令: bp, bplist, bpclear
# Q2 [& F8 h& b: L* P7 Y    例子:# O$ L. _0 j9 {5 f: A
    bp 12341 z/ C8 G7 i1 C0 n' h
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断  T) @7 J6 b  K: Z3 f5 m1 c4 e
. V6 y  k- `9 ^4 M9 l" K) F
    bp 23456,a0 == 0 && a1 == 0
0 B% L0 t  {# f* k, W9 j      在地址23456下断, 且中断条件为a0等于0以及a1等于0- `% r& n9 t- m$ t

  @: D0 c" t7 _  S& G    bplist* X  K3 ]" i1 A2 n" U
      列出所有断点& [# }# M$ Y  |" z; {- s  D4 I
# e6 E4 I8 {4 b% I' P7 h/ L
    bpclear 3
0 u  M3 ]( n. `      删除编号3的断点
/ O; H$ I! K# O5 F5 I) P( L5 I% A) [; W: J
    bpclear
) W6 V; f' E8 g9 C      删除所有断点
' u  M$ w1 t9 n) ]+ }" ?1 W5 h8 ]: V! s
      
. Y5 Q6 u' P" s/ d      / }5 i# W1 z+ \
跟蹤紀錄指令: trace/ o7 d* C) f, [, L4 N: h
    例子:
9 i" F. b( k( ]) X& O/ o    trace 01.txt) O0 U$ _3 r6 w7 [& W: V& c' A
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
6 i/ [7 ]" A( E/ [1 a
- f+ d  k& t5 d. M) `1 h, @    trace off2 I" L/ B$ |# F8 h% J! K
    停止跟踪, 并且关闭文件) b' O% f( U) s, {3 }

, W# ]& s4 K& N* t' c    trace 01.txt,0
1 q, X  Z  o$ V/ X- X1 J    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt+ O, ]2 a& m) a3 b: i9 ~+ `
' _3 Y9 ~. a; Y/ ^! y
    trace off,0
9 @0 M7 F, a- u: |, x. i6 q    停止跟踪编号为0的CPU, 并且关闭文件
9 W( D' l3 |* l5 ?  F' D  A5 d8 E* W3 v: o1 O
    trace 01.txt,0,{tracelog "A=%02X ",a}
4 y( `8 I( r: p! f7 \9 d    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt $ t/ `* b* g+ ?+ I
    并且在每一行的前面, 写上"A=a ". G% G$ C- _6 a5 p. S4 P
    "A=%02X ",a为一个C语言printf函数常用的输出格式
2 L# H) B3 O! r% e- o% z    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入; L3 }, a8 e+ Z% I5 M
    X表示为大写十六进制数& @! s) z: v/ W* \0 v; _
* J& B$ M7 G/ t/ \( S
- e) I" J: d- l) e3 s! q

2 ]4 A  N; I$ l5 A7 l" D: R# H内存直接写入指令: maincpu
8 _" q* Z$ m$ k- O2 M    格式为 maincpu.[][]@地址=数据
1 g$ k  V8 F) E  s, Z+ W8 [3 N    第一个[]:
( v, Z# M1 V; l: I6 T    o 表示ROM地址6 [- I8 i9 U. F- o7 z" P4 z+ v8 ?6 _
    p 表示RAM地址$ f; Y) a2 M) e; N' @: d( t
1 o5 P; W# x6 [
    第二个[]:
2 y" m; Z. ~5 l  V, D    d 表示4字节
4 Y) e3 f/ E# q9 q, i! Y3 Y    w 表示2字节
: N  k1 {6 q& f( l! `4 O    b 表示1字节9 b0 S# r0 ~* k4 W, H) T0 R
1 b- H; O8 T5 F
    例子:; ~( H6 m" W8 h7 u3 N2 i+ @
    maincpu.ob@1234=FF
+ w- `- L; g0 j6 f0 L: E    在ROM地址1234处, 写入FF一个字节
4 u. h/ b% `' H" l+ n. s4 w7 q9 i- q- z/ D4 D4 V
    maincpu.ow@1234=4E71
3 [5 y- c5 }6 T0 R    在ROM地址1234处, 写入4E 71两个字节3 a. a/ a; P: W' a" W/ \3 l1 k

6 u) u/ Q* n& U  x1 n: X! M    maincpu.od@1234=600A4E71/ J! A! s" l  p' l
    在ROM地址1234处, 写入60 0A 4E 71四个字节+ S. J; L- ^: e6 d
1 p" b" M% A6 g- W1 g3 g4 H: h
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
. N  O( m4 m2 l9 `: ~" Z    1 F2 V5 E6 K4 I$ e) ^6 e" k; m% P

0 [/ ]% C- ?9 x: ?7 d  `& `' z其他:4 q6 i' Q7 A+ M5 E7 {0 e
    dasm 输出档案名,地址,长度( A4 P% a# h9 S2 I3 a3 T/ n
    输出程序的反汇编代码4 U4 y0 t1 a5 O" z0 }4 T7 x
    例子:
5 S8 y0 O6 g7 m- b7 e) X    dasm 01.txt,0,1000007 D5 T( [3 r: f
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt+ \# Z2 t* f+ `, y8 z- b

8 ]. T- d  s; ?+ T    softreset
7 j! i! i2 G4 N* M/ Y! S    游戏重启, 但不重新载入ROM* B( q( r7 K0 ~3 u* _

% X8 \; ^  L3 q* R" W4 Q1 @2 E    hardreset! t% c0 ?& X" M
    游戏重启, 且重新载入ROM
7 L8 r- G3 X) k' A& n) t& G5 Z' n0 s) ~, s9 d0 @
    snap xxx.png
; {- c$ T6 x& J/ N; i    截图为xxx.png
/ F2 \3 q1 H  T: l) Z" v9 u4 i% P
2 g( _' {1 W0 A# V3 P  
5 Y6 U0 Y! ~. N/ p) t+ j9 }( c- D  [  # U2 M2 R" R/ |: b! b9 H
  ' P- S$ [" n5 x: t
热键:
5 @+ c# Z3 |5 ^) Y+ q    ~ 中断游戏# }" ^* g9 e9 U
    F5 运行游戏7 ~' A) S9 Y6 y! J' S: v( L
    F12 运行游戏且隐藏调试窗口' N# {4 B. o5 G% J9 g
    F11 步入, 单步执行, 会进入子程序1 r0 f5 T1 d$ w2 F- O1 X1 G' m- \
    F10 步过, 单步执行, 不会进入子程序( D6 q  \/ `. r4 I. \
    Shift+F11 执行到子程序返回2 [2 I8 ]% k3 a2 V0 K
    Ctrl+M 内存浏览窗口
; z1 P' f! B* {3 i    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
! i: c! Q# |& `  t+ b, J! P) x
& C6 N" R, M0 ]4 ^1 M{:4_94:}
5 U% {, p* g3 R$ H) }5 f* }/ Z. A( i! k

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2568 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。( m2 `1 L/ ?- [! E- L6 w

+ F9 W0 |: w" W' w' d' T4 PPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东$ Z. n( H0 r& @) `; s
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-13 10:23

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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