EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

9 \' ~0 T) k% z( K% U) P7 J很快速的整理我自己常用的指令
" x% ?0 \2 @/ H  c" N; C6 N- d( O, h# `+ v: E7 `& d6 ]* Z: ^
{:4_112:} $ m% p5 D, u# _* D; B) @
& a/ K2 D3 h" k
MAME DEBUG常用指令
8 d+ G# q6 a3 e
+ \4 }( E- b, h. Q: J内存搜寻: ci, cn, cl3 `+ b0 J% [" Z* t4 E+ Z3 [: K* g
+ f4 r3 D( h2 n* e( }
    ci0 u2 }1 _* t/ R& l% J- y
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
$ u4 m7 b5 B: e; @" _( M$ G* `1 Y
4 y; g9 S0 i: t9 j$ a    cn, t# v3 \3 y( S8 O8 p2 m% B8 v
    搜寻指令7 g) j5 S' ]0 D. N
    例子:
2 Z. j2 Z- Z: {    cn eq,60
6 O, K' e3 U# s# k7 r' ~    搜寻目标等于60 (十六进制)
3 Y& y+ C9 C6 j: l        % o( }; {  I# q1 g2 E
    cn eq,#96
" N3 d/ C" x% z# ?    搜寻目标等于96 (十进制)
) ?3 s  ]+ V8 k+ V/ ?0 Y# ?( P
    cn eq
& n. h$ @) g- l" c5 v; `8 l    搜寻目标的数值没有变化0 N$ i* w  V8 q0 v) S. \

+ x6 y4 U( R  }& o9 B, _    cn ne" F; h, _% P. d  R' @; c
    搜寻目标的数值有变化: U" z# k* G' K9 ?# b
        
# n: q. I7 Q0 E/ a8 R! ^    cn +9 l/ `0 d6 m, G2 W# A6 h- j7 ~
    搜寻目标的数值增加
$ U5 n" {' }5 A0 C; o    3 g* d9 Z  Z' Z  |3 _
    cn -
" V! }' X* j7 x& N+ O8 _8 L" j    搜寻目标的数值减少
3 n  y* p7 B$ V        / y* z; z# |$ C9 ?% G/ J
    cn +,3# B) N& t' {' V  A
    搜寻目标的数值增加3 (十六进制)
) I* v/ c9 j# \/ A* T
3 u4 r/ r  X& ^& Y) }    cl
2 X6 R, C; c6 q% P4 F    列出所有搜寻结果
! h, w' _' s' A; S$ \
! r& p4 e% w2 t8 D" t) m/ X    cl xxx.txt+ R- A5 h; u; `5 @" _
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式9 }# x3 r0 Q! m( H& {
( ]. o2 d1 _& e# m. x
      X. j1 S3 _0 w
内存监视点指令: wp, wplist, wpclear
0 b% E  l# G2 j) K* U    例子:# Z+ W0 u! D! x) c! o; k0 A# e; W
    wp 1234,1,r
/ W; @4 g! A! y6 f+ Z" L      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
1 X( h! I& O5 O. T2 Q2 I& z+ }) N% M9 X8 s$ f7 `6 O
    wp 1234,2,w. ^% l% q( l) V* O6 F
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
0 b$ s0 t( O2 l' r! z6 q: f     ; \) ]: c) W  i! s9 I2 h
    wp 1234,6,rw' U3 f6 t7 @) M7 S6 N3 w, o' s2 \
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度62 R+ Y4 e- k! [5 @

$ E) V( [6 g. `6 X/ j+ Y    wp 23456,a,w,wpdata == 15 e" N9 R7 q7 H; C3 S
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1' l" g9 l4 P+ G. X
7 i1 V3 t5 o! T8 W: o. m/ W
    wplist5 F0 d* f) q5 U5 S
      列出所有监视点9 v3 G9 {' D% z5 G7 X3 q

# i& z; S: [6 a$ x9 P9 H  y    wpclear 3& W2 E& O' v- v' P# r
      删除编号3的监视点
/ T7 w3 c  D7 _6 f: f3 K2 E, `: W
    wpclear
1 ~' u) T3 J, m8 M      删除所有监视点
) K4 H2 y1 {& \7 ]- G$ V/ ?$ u) q* O. ?8 T3 \8 Q, w
      2 c  P0 |" _, q& u4 w* k* c  J

2 s4 g: w6 @4 }$ o8 ?; f程序断点指令: bp, bplist, bpclear
( `) d' t2 l* K/ u3 Z. w8 ]    例子:
, ]" _0 w9 j9 I7 h0 r* a    bp 1234" j3 n) U5 @: a& H* f8 J
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断& [4 ^) p! V) J1 ]% R5 z

4 O" t& A) a5 C- N5 _# U6 ^    bp 23456,a0 == 0 && a1 == 0
2 ^& Q6 k5 |& \4 |4 J      在地址23456下断, 且中断条件为a0等于0以及a1等于0- E5 r# Z2 ~2 n$ ]$ q
( T6 H5 W. u- J2 H; S) v: p
    bplist
1 ]6 I4 h" g) u6 ^  y& b4 d. m      列出所有断点- W: [, @$ M$ j4 @- S
, z1 e8 l: S. v( n
    bpclear 31 i; r7 B1 Z, N, _
      删除编号3的断点  }4 t! N* F  O

. `% x6 u/ l- z7 O    bpclear
$ Z: ?% [) v; O# m% ~      删除所有断点$ R2 D! r" N7 Q6 Z1 R0 _' i6 h
  W# t" T* o4 L1 V
      / u( a& `5 o. ]: ~, l) a# `! v
      
3 q2 q" _* Z' W跟蹤紀錄指令: trace$ |8 O/ g  t" d6 i( {
    例子:
- P5 J9 A7 J9 L( q9 |" y. |7 f    trace 01.txt7 t6 a. d6 H" K3 h2 D' m
    跟踪当前CPU运行的所有代码, 输出至文件01.txt5 B# f1 H( j8 h- f( V, ^- a. f
; a2 w- I0 _" R. d* `
    trace off
$ B( F8 a- T8 @2 F# G) ~; N    停止跟踪, 并且关闭文件
" u; I& {! Z) D  x- F3 h0 q/ A
1 ~4 l# l" a1 N    trace 01.txt,01 o/ ]; N9 l( K$ x
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
& F, a  m+ d% ]$ W8 h$ D, m5 E8 }' S0 v' u
    trace off,0
2 m- R0 O8 w0 k, _    停止跟踪编号为0的CPU, 并且关闭文件
: e" n/ d, g4 a
( v1 U% i5 ]$ c. E8 b    trace 01.txt,0,{tracelog "A=%02X ",a}- v0 F' E6 O4 T$ u3 G
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt + t3 X1 V) u$ y5 Z& l* h
    并且在每一行的前面, 写上"A=a "
, j' K1 j. _% I! J( H6 b    "A=%02X ",a为一个C语言printf函数常用的输出格式
& o2 T9 P. B) n  q( L    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入* H! Z7 R: p+ W- ^
    X表示为大写十六进制数
: H2 [" n( E; L7 R+ f( j+ N& J! R& Y( e/ k
, V  V/ S) b. R+ U$ {; ^

9 O6 z  G4 N, \) }4 Q内存直接写入指令: maincpu
- g* W2 J' v! q9 N    格式为 maincpu.[][]@地址=数据2 K* [* P+ o2 w- y
    第一个[]:
* p6 C% L" i* f+ O    o 表示ROM地址1 v  A, W, |6 o! w8 A% L6 G( Z
    p 表示RAM地址. M4 x; x; b6 D7 v3 I# [

: Q! B/ h% Y" c; Q2 B    第二个[]:
  Y; w9 l! _& L# Q* o6 V    d 表示4字节
; Z7 \5 R1 k" ]6 f7 H2 m    w 表示2字节6 l# q* j5 q4 j# Z: S) D
    b 表示1字节
: z# F" G# B' O, t1 m" S9 ]+ E+ j- E( a% s: _
    例子:8 L1 v6 b# h( Z" B- t: \) }9 q
    maincpu.ob@1234=FF3 ~9 M" f1 ^! G- G. J" C
    在ROM地址1234处, 写入FF一个字节
5 s- K# a2 F6 t( V1 T+ q) M# l  J5 {
    maincpu.ow@1234=4E71
; _1 K+ K( \1 ?7 o# x/ [    在ROM地址1234处, 写入4E 71两个字节
' X& Y4 X4 _  d; y
. m/ _$ H& p) K/ G6 C    maincpu.od@1234=600A4E71/ a9 C. }5 `; H
    在ROM地址1234处, 写入60 0A 4E 71四个字节! C# s$ j8 _% q
3 s. h) I0 N  H- ]. I; P. u
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写2 Q( g# h. ^( j! {3 t' O% q
    $ K' F; ]$ x6 a6 ~/ b' q9 K
+ D' ]  B, |2 K7 w. d
其他:
2 [8 V" T* G! U; f- i! p    dasm 输出档案名,地址,长度
* c- t- J! {! K% R( l    输出程序的反汇编代码
3 j0 n6 P0 [2 |# \# `! x$ S9 g    例子:9 I) r! I: y& w1 [; o) b
    dasm 01.txt,0,100000% ~5 ^' b* A( @8 M- l
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt7 c/ C6 o# Q) G+ Z( t

$ ^, l3 I% Y: i/ N- `1 d    softreset, f8 G" Z0 h1 V, Y+ _2 k
    游戏重启, 但不重新载入ROM* Z: l& U9 Y( X+ y

. F: U$ h6 }- Q. B4 e, _0 {; ?    hardreset/ n3 h  l, G8 n+ q8 S& A# f
    游戏重启, 且重新载入ROM8 [5 [# R9 z- l. `: M

, [. M( u+ s7 v$ b* g$ v    snap xxx.png
) a/ S6 k, R, t* N7 y( R    截图为xxx.png
' L) d6 A5 F, E
4 Q+ e4 F/ D$ ~- S5 K2 c# {  j  
: e- W6 O' ~( t: e/ J* V  ' @8 F7 N8 q& D% {4 @& X/ I- {& N
  
) P" C) G- `& \4 R, b* K3 [热键:
6 s4 H' x4 }4 b* J# U" C    ~ 中断游戏1 n/ A: u6 Z8 H  C6 e
    F5 运行游戏; l) J! t- g- [1 N' Y/ _8 p2 D! M
    F12 运行游戏且隐藏调试窗口6 f7 l/ |4 H  ]; G4 d1 Y( W- L
    F11 步入, 单步执行, 会进入子程序/ r% o+ w9 O- D6 @7 D
    F10 步过, 单步执行, 不会进入子程序
7 x9 e8 j* I8 `    Shift+F11 执行到子程序返回
  f7 L  p) v7 L' S) e    Ctrl+M 内存浏览窗口
$ \6 n' q0 y( h) L& W    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU2 i+ g% S& I& N1 [$ r
6 D: q4 F/ c- _1 W  x( h3 `
{:4_94:} 4 Z% ~) W+ N! Y2 M2 N

" |4 h3 f0 [* Z3 e! d# ^

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2588 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。2 j: I" x) A' E4 V' Z
+ @% ]% o* o# K
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 | 显示全部楼层
要详细些的东东& c7 {+ _- X9 ^
11111111111111

该用户从未签到

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

该用户从未签到

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

本版积分规则

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

GMT+8, 2026-1-9 13:11 , Processed in 1.088867 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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