设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

+ I/ F5 L1 j3 G1 K. _很快速的整理我自己常用的指令
% g' r# t0 i) \6 t! W# q* r* D( N3 v" A3 r+ D2 }
{:4_112:}
! b# {& ^" b/ c6 d& j& N0 n! z  i' [. F" g" Z
MAME DEBUG常用指令" {" X6 d/ ~. H; T1 _$ n& R

, @/ o" T4 `  A2 s+ d7 v3 l内存搜寻: ci, cn, cl
- l. p: c( K9 W- h. B
& w0 ]9 a* e% e& b0 n8 @    ci  \9 [( u2 @  r
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令8 L. b0 C! O# m1 e

. D/ {( g; ?& J. }0 n    cn# `9 Q9 V/ Q  o/ y( h, @  e
    搜寻指令8 U. Y8 W; F8 |- Z: B) m
    例子:
- K% J0 A& k$ R" l% F+ {1 i$ r    cn eq,600 R4 r2 y. a% U7 g, e
    搜寻目标等于60 (十六进制)" q6 ~$ ]0 B- o5 Q
        
- F: G: X# o8 K! L- g$ I    cn eq,#96
8 s% a. [7 A4 o& o9 ~" e# e- K- {- o0 b    搜寻目标等于96 (十进制)# M1 G6 F5 _# Z7 y! M
+ ]# }7 h7 a8 e3 e7 Z  q; u
    cn eq5 y' ?* _- N9 c) a
    搜寻目标的数值没有变化6 M" x) a1 N& G2 z# D9 C+ P

$ v2 K, v- N) R! G    cn ne( T0 u6 Y8 R% @( I' U! e1 w2 x
    搜寻目标的数值有变化; E  m2 i) t! Q" @+ L* u
        
: P0 ?" S3 P/ x* u! B1 S    cn +4 h  `" x& x! u
    搜寻目标的数值增加8 `5 K' z, _4 g  L& m9 M
   
0 @% y$ W7 |2 Y7 ?! D# Z1 S- E    cn -
! v  ~7 i  I" O  l, n& C- u' [    搜寻目标的数值减少0 |6 @+ S! q: a# ?( z
        
; M; r% R! _, z* q5 {    cn +,3
  r1 w! |& @3 i' i4 E; |    搜寻目标的数值增加3 (十六进制)
: T7 v! j  Y3 j8 @; |' ?2 ]3 Y3 {
5 G+ z: [1 R6 ^8 V! y    cl2 K6 Q) p  o1 u8 R
    列出所有搜寻结果5 g+ k8 B5 o% V+ \8 F3 e

5 m& R8 A7 i3 a) E    cl xxx.txt
. }' U3 q; Z, ~; b, |& ]" p    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
, `! |) P7 _/ _1 s( v* ~( L4 B7 z, M- d' A
   
5 S5 J% t7 d5 _9 [内存监视点指令: wp, wplist, wpclear
4 V& }. x' `8 q/ q1 h- {! h" _2 O    例子:
) A: v% X  B3 j  X* c    wp 1234,1,r
/ f0 o3 n: n8 e: G      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1( Z9 a+ I3 B# ]3 O
, V9 b  R5 H, i; z8 U: L3 l6 O* Z, c
    wp 1234,2,w- t" y6 K% t" K- ^8 T  F5 l
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
5 m( H: Z) k0 W" ^& X     & h- ^, I/ a+ W
    wp 1234,6,rw
" V+ B7 ]7 ~, ?2 b$ f3 b      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6" Q& ]3 c" B( G' m. v! {
* x- F7 d) f/ q$ W
    wp 23456,a,w,wpdata == 1
2 O' M. }8 ^* Z! ~( d0 N3 C      在地址1234下写入监视点, 数据长度a, 且写入的数据等于13 R6 P" X6 A. Y% \* R1 T( g: U

# t5 G+ o$ l  `: ]5 E    wplist. j8 G  C, @2 }. A0 f
      列出所有监视点; P8 {( |) g2 [! X6 x5 u
: p; e. G4 y! Q
    wpclear 32 h8 h! E) l, L
      删除编号3的监视点
5 d4 T1 {! `, P6 q8 z  y$ @
, Y, a% i' u/ W    wpclear
6 C1 ^+ B: [9 s4 `7 M* V- k% _      删除所有监视点
/ r/ j  w5 J7 H3 r, U
$ m, Z  o: l+ ?6 D      : y" x  r/ Q) `4 r# i
; s( p- S; _: q8 F7 p2 n
程序断点指令: bp, bplist, bpclear
3 U. }3 q$ @9 u: w+ P" l' d& G    例子:
& [3 y% c3 a) r  m4 l6 \# g$ m- e    bp 1234& u) ]; X! |! x1 {; b6 a
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断& v, X5 x6 p" T& w- p& m2 }% c9 D

- [  e) z8 Y8 O$ \    bp 23456,a0 == 0 && a1 == 0  K6 A2 |" k6 n( w. {! f
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
; m% |! t* c* M9 N/ G$ U! @: K5 I3 L7 I+ s- J2 @4 k
    bplist
; r0 ^/ v) E+ S- r      列出所有断点% R6 a2 ]8 z- Y' ^; s
0 Q; e3 ~6 g$ D; a- j3 |+ ^* s
    bpclear 3; \/ k* r' G# h
      删除编号3的断点/ V1 a( S9 _. h; _, X

9 U$ o  G' W3 O* w    bpclear8 m- ~) K8 H; ^% g8 `
      删除所有断点
2 N& P* q5 ^7 |' h8 f5 @3 y/ j: {" Q' ?- M
      
7 T- \" Z' l4 u3 b: q" ~. Y      : @0 _& ?4 {( d; ?
跟蹤紀錄指令: trace
+ @+ h3 k4 U' G+ u( s/ I! ]2 w    例子:. c( B! B9 P4 D: d1 g& o1 v
    trace 01.txt
# p# W/ ]6 H& P, A6 ~    跟踪当前CPU运行的所有代码, 输出至文件01.txt
4 p' s2 a: R2 ~- i+ M0 f. i1 i& Q9 E% B8 h; N
    trace off
, o7 F  E$ J$ x5 }    停止跟踪, 并且关闭文件
* ^( R- Q5 ^5 z
& o+ Q# Z3 T9 H1 z( T: S    trace 01.txt,0
3 Y% m7 y1 l1 Z1 U( B    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
8 y9 E3 {6 C! S0 O8 K) u8 i; w' B3 y' ?
    trace off,03 U" t% s9 w5 e8 R* K! a
    停止跟踪编号为0的CPU, 并且关闭文件/ y' G8 ?2 r* ]/ J

+ O2 \# ?: ~# h" [) p& T& T    trace 01.txt,0,{tracelog "A=%02X ",a}
7 m' u; X  B7 }( g    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
0 P( U# F3 V& t6 x* {! o    并且在每一行的前面, 写上"A=a "
* p- m6 T0 F8 f    "A=%02X ",a为一个C语言printf函数常用的输出格式' }6 L- x5 {. N4 L- @# n! J
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入' I4 p8 C$ A) Z- M% ~0 _
    X表示为大写十六进制数
2 Z5 x* K6 K$ B/ o( g& i9 y; R% Q4 q  k1 {8 T

- J$ @$ T6 t# t: `8 {
3 b0 e9 M7 _" F8 k9 o' @- ]4 r5 h& e6 v内存直接写入指令: maincpu
+ e# S. u- X+ z    格式为 maincpu.[][]@地址=数据
/ i: v5 Z" p6 H! o2 t( s    第一个[]:- l: B) [% S( {/ o7 y7 M6 i
    o 表示ROM地址
8 P( [4 Q) b3 ]" ?( }$ n    p 表示RAM地址
3 i+ g4 h# h$ u9 L& o+ X* y2 D5 y& e0 L6 I4 q
    第二个[]:
7 }. j7 [9 w: ~0 _1 z" }5 c# H" p    d 表示4字节
2 }% A* b: s5 N% l8 O6 g* [    w 表示2字节" x2 m" K0 z5 l
    b 表示1字节
2 A3 ^$ q; t: ~8 I" N" g* b% c! n, x* I$ k1 i1 W
    例子:+ n9 D  X% L2 X) x& s
    maincpu.ob@1234=FF! ^1 C# b. j, O9 r0 G/ v) h
    在ROM地址1234处, 写入FF一个字节
3 A% h3 d% z2 w% n
/ U6 t, C8 K1 T2 s1 q    maincpu.ow@1234=4E71! h5 r6 N/ A: t. x! d, A
    在ROM地址1234处, 写入4E 71两个字节
6 ], e; T9 B& M/ l
7 ], t8 _/ o  e    maincpu.od@1234=600A4E71
+ s) E. X7 C1 W3 O4 }    在ROM地址1234处, 写入60 0A 4E 71四个字节1 i, X/ r3 ]0 Q) q$ n7 D3 _! A

  y* j/ X+ V: Q& x$ o    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
$ |! y  B8 K; v. \$ {8 `* X    + Z/ }/ E, i; i4 x0 ~+ j

5 \# ?7 R" z. _% F+ B7 q2 A+ N其他:: ?6 H* T, |3 p& `! i0 }0 |7 f
    dasm 输出档案名,地址,长度# v2 j. e& e' P
    输出程序的反汇编代码0 v7 f! g9 l/ [) v4 {' ]
    例子:9 z, Z' T5 w3 @2 J7 ]
    dasm 01.txt,0,100000
& S# R8 w, X3 b- J% G: \3 ]    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt6 i) h+ r2 e+ r' H
; ?6 p' M. W5 i3 t+ a- t
    softreset! `& L2 |. q, M
    游戏重启, 但不重新载入ROM/ ]% K( I" q. B7 m

: C$ r: }& e3 U: R" M3 T    hardreset
8 J) r  z9 X2 D' E, z# u) V! k/ R    游戏重启, 且重新载入ROM+ d2 z" V/ n! D! x4 U4 Y1 J( C
- P2 v3 s! T; O2 D# `1 F( R
    snap xxx.png4 e- G% J; f# w8 _! N! O
    截图为xxx.png2 y" G! F6 e- W1 ]& x/ b
) N$ Q" ~6 {" O+ e$ c- l: c, P. }
  
: W+ t$ G6 C% {6 ~  4 H* o& @& e8 x8 |4 T
  
4 ~9 ?) U; U& \& Q热键:* \( k, h2 p* i! s
    ~ 中断游戏
8 B7 h. N2 D/ k% E    F5 运行游戏
$ S2 Y8 c1 u9 L    F12 运行游戏且隐藏调试窗口" d) e* f$ A' M+ P( f7 X/ b
    F11 步入, 单步执行, 会进入子程序
9 S. D' Z. C: Q: ^7 G6 |/ ]    F10 步过, 单步执行, 不会进入子程序; B9 [! S  X! @3 {' A* b6 [7 M1 z# c
    Shift+F11 执行到子程序返回
' h0 f1 [8 M/ C    Ctrl+M 内存浏览窗口' J* H+ z$ }7 d+ F; m4 w$ Y* h! }' X
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU/ w" W7 s! H. j+ l

! @* a9 G4 B- {& E0 z) c( T{:4_94:} ( n& K$ e, |7 j5 W
2 V) V8 b$ B. |) o

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
% I, R& {9 g3 z& w5 l0 E' W9 ?7 |
0 y2 E& x5 \( o' fPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 j/ @9 o* G5 a2 z1 \11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-6 12:04

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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