EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

' V+ d7 r% @' i" ~% B) q0 d很快速的整理我自己常用的指令9 p' _8 d5 z  X0 J9 p8 y5 n

1 O# r2 U. M" K5 b% G! b$ f$ {6 |{:4_112:}
# l7 I8 }" {6 {# K% l/ _7 D! R" U, ]4 m  f+ P$ S
MAME DEBUG常用指令# Q' j) t9 l' S  j, J" W
; }4 @8 \4 w- r9 S4 V! A# ]
内存搜寻: ci, cn, cl
/ a' R5 Z: }; x8 f$ u/ t1 ?
: F, B* t" L- ^2 {1 Z/ t    ci4 I. ~7 F. Z# M5 U, P; |0 n
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
/ w) K$ U/ ?7 Y1 y. A% h# j% m" w& O, K# N# N0 I9 z$ ?* K
    cn
7 ]" Y, r8 o* Z1 M1 b; d0 m& j. t    搜寻指令5 ^4 K5 b( Z" R7 S; ^& J/ V
    例子:, H) v' z- C, o# y0 K) |
    cn eq,60
1 |2 E* Z5 v* O8 S" m    搜寻目标等于60 (十六进制)2 [3 Q8 l8 X; }  L
          H3 I$ W& D8 a! \. z1 D
    cn eq,#964 a( L* I2 J' y( q* J1 M) d. M  e
    搜寻目标等于96 (十进制)
- p( t: x/ V6 M, U3 r. Q4 H9 ^( ~% L6 f* [  w! B/ E- S
    cn eq; z/ `! q% o9 B7 X
    搜寻目标的数值没有变化
+ H! f, A) T3 {( S/ p
4 c! c, _6 s0 p4 z8 q    cn ne
$ Z( [* N/ I* h& K, ~, m* a    搜寻目标的数值有变化
& D, n% B0 ]+ _$ \; s. V        ( ~, t) a8 u1 o6 j5 g. C8 S
    cn +( I# _& ~( P. e0 `9 v
    搜寻目标的数值增加: }' l$ c7 [* ?  L
   
2 `* z, ~! |0 m3 n/ a    cn -! ]$ p0 j7 P; a
    搜寻目标的数值减少) x! m( P( Q; n
        
. r6 N9 ?& o3 t* C    cn +,3- A& }0 T: R5 p6 q1 I
    搜寻目标的数值增加3 (十六进制)
' d; N/ P9 P: w2 A7 F9 b: T+ H2 j5 @" z; A# R4 w9 z
    cl1 {6 W" S: q5 J' c; _
    列出所有搜寻结果
6 f  O$ P- B8 f$ O+ ~/ B2 T
* o: j5 ~/ [! H    cl xxx.txt* g0 N$ j! N1 _/ [. o& `
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
: S6 A% m/ ^8 f2 @& \5 r; w( c9 `; c3 @0 H4 e
   
2 P# N8 P8 S/ K/ x/ b$ U" ^+ {内存监视点指令: wp, wplist, wpclear/ f' N; s6 V1 q
    例子:$ P1 A# i, E4 [) S
    wp 1234,1,r
( u2 B$ i8 H& B+ n: Q& R2 ^4 t: F      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度15 t% h3 Y* l! x, v) Z
7 R9 t3 L, X0 t- T
    wp 1234,2,w
! y% s) @! A% {& ?- z' o      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
6 A/ z* K& _' l; I: y" ~! n. B7 C     
5 W$ M5 Q$ _7 x    wp 1234,6,rw
2 f; Q6 q6 ~5 W- n' h      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6( ?/ S5 ?5 |9 r$ X1 I' t

0 @+ c1 g3 _' v/ L5 j    wp 23456,a,w,wpdata == 1
: R% @/ [( j+ R" Z1 I$ [      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
" n2 G. d% \! n' J5 m9 w4 K  _& f2 P+ j2 Y
    wplist
( Q/ }+ P7 e* @/ P! S' [8 n, ?      列出所有监视点
  L  [! |* |' f
& e) l/ Q8 N1 D, T    wpclear 3
8 C: u3 T+ {: k; h      删除编号3的监视点( o. ~" Y1 _! G; d% e4 j9 P
5 e% h6 L5 y+ {6 {, u
    wpclear
% l& B( _2 }; s6 h& ?4 d      删除所有监视点: M8 f. A6 {3 w* r- M1 p
- g8 x5 s% ]7 x# v* x' x
      6 z. z, e7 S5 ]" N8 \5 e
' J3 @# O! q% Q( Q
程序断点指令: bp, bplist, bpclear+ ?+ ]. ^4 B) n4 x
    例子:! ?9 Z) z3 K) C0 _* c% {. ~1 u
    bp 1234" X# h  j) ?1 T; F8 F( W" |* [' B
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
) u" ~, _  O; ~1 E! ^! c0 N7 f. D* _: K  X6 w* x6 X
    bp 23456,a0 == 0 && a1 == 0
& F" |' p# T( Y      在地址23456下断, 且中断条件为a0等于0以及a1等于08 O4 T4 h3 k4 `
% z( W( X; w2 y6 [
    bplist
0 O! p# u$ t% i& ^7 [      列出所有断点
) e) p% R0 Q; D9 S3 L- s
; b/ l$ T, `# V. o    bpclear 3
* I6 N1 z! l' q( A      删除编号3的断点: ?/ }9 k: }& u9 i# p$ d

9 g! X5 h; f. \' O+ |' s( M9 \    bpclear
& \) X# Q6 c& S/ j# o% ]      删除所有断点
7 ^* s* L: T& U! d0 O0 I! C; C' X' I& X+ c! R+ ]1 f1 x
      
9 |' m, V' ?4 e1 w; g/ X0 T# I$ L9 b7 {6 B      7 i, i! C+ j) q* j, z2 H
跟蹤紀錄指令: trace- N# n( ?6 h2 R0 }
    例子:
. \  L2 @3 b& P$ F/ n    trace 01.txt
. k9 @2 z2 ]3 O    跟踪当前CPU运行的所有代码, 输出至文件01.txt
& C6 U! g' M/ I. E) r4 h8 V7 v, u+ R6 h6 r( G/ f
    trace off5 I! x0 H5 e# s( r  \* r
    停止跟踪, 并且关闭文件
" @, _: _$ A4 a
! N3 [) i5 f+ {5 c5 Y& e( F: O- [    trace 01.txt,0; o5 l4 M' _3 G8 m/ W6 ~  n
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
: L- e: i7 f% [4 ^7 I  @6 @: y+ L: n2 }: C4 W$ }
    trace off,0
. c! }( D6 p0 S$ Z5 K7 v$ {: U    停止跟踪编号为0的CPU, 并且关闭文件
$ Y  m9 B8 C, B( h+ K$ \1 F. j6 n+ K6 U1 L9 w. E3 o7 J7 q
    trace 01.txt,0,{tracelog "A=%02X ",a}+ Z: g; B, b* n0 p. d1 y' m
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt   ]! X: Y7 m9 h  X# m  N' ~1 `
    并且在每一行的前面, 写上"A=a "/ t" V* G& a$ E
    "A=%02X ",a为一个C语言printf函数常用的输出格式
. n4 L) Y# }6 R    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
7 l2 G( g0 {1 @8 ?0 \    X表示为大写十六进制数
8 ]# c  W( T3 O0 L+ x' N1 G8 @. v' g2 i( K/ f

8 f0 k" d- [' b5 Z$ }5 |+ s0 `0 h3 x$ W9 k
内存直接写入指令: maincpu. V. ?( m, U2 E6 `; F
    格式为 maincpu.[][]@地址=数据2 h9 w) b1 a% z0 i( A# b2 c4 ?5 f
    第一个[]:: v3 n3 R6 K0 @% ^3 H
    o 表示ROM地址) _& R+ C7 q  n2 W6 T
    p 表示RAM地址
5 W) j2 c$ F+ C8 U+ K" e# B6 f3 I6 L; F4 P
    第二个[]:
5 S  t) ?$ r- S    d 表示4字节
: ^1 b( R( m. R' ]' o    w 表示2字节- m/ g# y1 X+ q( G0 O8 j7 z- A  N: v
    b 表示1字节  Q5 o+ }  P8 v& D* A( B! H/ b1 Z
! P: `5 ]4 ^# i
    例子:4 T3 g3 w$ a# H  _& v
    maincpu.ob@1234=FF1 s( w# U1 \- y$ F3 n6 s
    在ROM地址1234处, 写入FF一个字节
2 c* _4 d* b; m3 ]) Y
! z1 r. w5 z% O    maincpu.ow@1234=4E71
1 B9 v& V+ _) M: ?, a! f    在ROM地址1234处, 写入4E 71两个字节% N4 _: D8 K" ]! y7 ?( M! s4 d, y  c
" b- l) [' p, Q' c2 M: ]# e& h5 C
    maincpu.od@1234=600A4E711 U, Y& |1 a3 h# v
    在ROM地址1234处, 写入60 0A 4E 71四个字节
. ?6 D! A# A( [9 F6 [& ]+ k4 u5 K& O
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
! H" ^7 d( Z+ x2 A3 f5 U4 H      A& U: ?/ F# g; x

# V& `! T  I( p3 y) R& S其他:
, r6 }. H! \$ \7 a/ [    dasm 输出档案名,地址,长度% _. Y* [* a' i2 M" d
    输出程序的反汇编代码/ V! d, y. m9 w0 x0 `( i
    例子:. f- P+ Q$ {- j: K
    dasm 01.txt,0,100000
7 N7 [5 l, n, O% p2 @. O    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt( A# x" z% |8 c+ p" ~; S
# k+ Q8 h! H$ ~4 B4 K" n: l
    softreset6 i# m* e: K# ^. B; [
    游戏重启, 但不重新载入ROM) d: w# U* x# w7 m* N) h& f7 |5 @( Z
# ?" d1 f1 r5 @8 E" J! h
    hardreset6 Q8 j. T- n# i. C; L9 h4 j- l
    游戏重启, 且重新载入ROM: o. w0 G) p1 Z6 `6 \, E" z
, u' W! U2 p& i& l0 I/ I5 u
    snap xxx.png5 A: H& ?5 K! D! n, H8 c, o
    截图为xxx.png0 Z, @2 D& G$ p6 Z0 `
' }! K$ }, [. B4 D0 e% I3 Z
  ) ?( r: D9 g$ j
  2 F) k) O1 r$ G: v7 u# W0 J
  
5 }' [: g/ u% F( X/ ], r. ?# Q1 V  I" X热键:- a9 p7 V; W6 `0 ^, n+ b+ w; j
    ~ 中断游戏
+ G+ v) h% u- {    F5 运行游戏4 k$ M  I: t: g3 i3 F# I
    F12 运行游戏且隐藏调试窗口9 H3 v9 l& X# J+ h
    F11 步入, 单步执行, 会进入子程序
3 w8 e  R* g( v    F10 步过, 单步执行, 不会进入子程序
1 Y, S" ]4 L5 P& ^8 s( x1 P) k    Shift+F11 执行到子程序返回
- ^1 \1 C% f+ U4 i8 _    Ctrl+M 内存浏览窗口. X' I. i; W% O. n& u2 |+ B
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU3 T2 S7 U  N/ q  N6 J  j. U
7 f8 O# [& b% |  A, i$ C
{:4_94:}
& `2 F. G- l. b0 Z% U% A7 G. D* a2 [4 k2 d7 A* ]5 Q: t3 n. R

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2560 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
- j. p; n+ j: h) j* d& ~" O& i
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 | 显示全部楼层
要详细些的东东5 t6 O7 j8 H1 e1 c3 @! Q$ D
11111111111111

该用户从未签到

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

该用户从未签到

发表于 2013-6-19 19:43:21 | 显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-13 21:51 , Processed in 1.093750 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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