设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

欢迎注册EMU618社区论坛

您需要 登录 才可以下载或查看,没有账号?立即注册

×
8 q2 z! Y$ {1 d6 r( A3 O. A, A4 l
很快速的整理我自己常用的指令
" Y: X5 f: L1 ]# k6 R5 H
6 b+ N4 P; V) e1 O1 c9 n. Z{:4_112:} ) F8 j9 P6 k  g

5 d: W, e+ I1 x) c1 \0 ?MAME DEBUG常用指令
9 J- ~; y6 ^6 O! p0 G) j: \+ n3 U0 P9 ^
7 J2 x( G- I( q4 v内存搜寻: ci, cn, cl2 [  Z* Q  T$ ]- u

* m: u8 r( \8 F2 L    ci$ J3 u/ A' k' R% H( R! }) Z% @
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
! p% r( b1 z# ?9 T9 c6 ^1 b) k0 H, ~" Z4 }+ P7 r! ~
    cn
- Z/ p3 H4 \+ {% Q    搜寻指令( @( I1 ^# l0 R; t5 A; X
    例子:' E6 ?/ ~+ _0 y& S: }
    cn eq,60
6 Y& s" I$ n; h9 }6 E! m  B    搜寻目标等于60 (十六进制); w4 v) H, C: A* z! W
        
* P5 h2 o0 `9 l- @, W    cn eq,#96
$ ]# I3 O; y% }# y' Z6 m! z0 W    搜寻目标等于96 (十进制)
, ?. G; ?6 ?( h/ t# @7 Q6 O# Z9 U  [7 s8 p; j9 [6 c; v8 e7 C
    cn eq1 Z$ c* q$ Y* S+ V" _( c
    搜寻目标的数值没有变化3 O4 G+ Z5 L5 A, J$ `! c

, a* l4 C) }" L* A! {! e    cn ne3 Q! c0 Y' t+ h5 D4 W; {& @
    搜寻目标的数值有变化9 E) m8 D% p7 T0 O. B- i7 m" Z" l
          B, A- v3 q$ j. `7 X0 z" B  M
    cn +
2 G+ Z. M* X- N9 I  x6 v    搜寻目标的数值增加& N3 n( \, }- O1 R
   
  M3 R- g( o) U/ K- s) E# w    cn -
) c- c3 q5 ?( q$ x3 ?& ?    搜寻目标的数值减少2 I" g# g- w$ {! z6 z
        : E# H. B  z6 t0 O
    cn +,3
2 h7 r! g: H# l) r$ p5 {/ k5 m    搜寻目标的数值增加3 (十六进制)/ |5 B! q, m4 [9 e
4 |" w. \$ B9 h; K/ Y
    cl
: K7 h* B) R  S    列出所有搜寻结果
8 w, ]  H# o! F2 K" N7 f
# T# {9 m. @- f  i( t: h* D. M1 {    cl xxx.txt
' p$ I! E9 T8 D2 R    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
$ E4 q. W, ?7 z+ k3 ]6 l- n3 v# y" |3 s
    7 b5 n" q% s0 e% g! Y
内存监视点指令: wp, wplist, wpclear! E* i4 F& l9 I& D9 Z
    例子:6 d6 Z" |% V0 ~* {# p! \& K
    wp 1234,1,r/ `& c  o) D* T; y& {
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
% O6 Z1 d. S; g& S. m/ l" |- L+ }* c7 }
    wp 1234,2,w
+ q9 p5 H0 S/ L" M  o2 S      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
. y; N  f: T& Q5 [4 l& Y, B     
, R5 g% `4 ~  F* q' [& h+ {    wp 1234,6,rw
; q  g9 U# H. C& {* h      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度68 m/ q- G/ k$ x; a3 P- Z
- }5 n+ O+ D% Q  U$ U! W
    wp 23456,a,w,wpdata == 1
; R' j2 }8 h6 Q% ]9 m      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1% m- a3 s% [+ u

' ]: l/ l& e& d6 P+ w! X    wplist- P7 }5 r( Q4 U
      列出所有监视点
1 k: j8 ]/ X4 o, [# L3 F7 D7 o4 N  V- ^! n
    wpclear 3
; H; m1 m+ A; N      删除编号3的监视点0 u' s  o, D2 E! t1 R1 _5 _

# R1 w6 U( }) Z. Y8 J1 J: m! z) q    wpclear
$ ?2 L  h/ ]  o; ]- x# f      删除所有监视点
$ l7 l' M, g1 U
( S# s/ k: O( {! i! h$ B# A) q1 o      # G. i. _; V5 a7 h0 x
, U. F" c% y$ n
程序断点指令: bp, bplist, bpclear
/ i2 {  s' E, g( L) X' [, K4 u    例子:
2 Y9 O$ C# {! s    bp 1234
7 ^( }$ W) P* W      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
9 F) P* W+ c& r
& L+ Z, c) g) @, }* X    bp 23456,a0 == 0 && a1 == 0
4 e4 e$ b! N% Y% \      在地址23456下断, 且中断条件为a0等于0以及a1等于07 ]2 Z3 V5 I) i/ o

0 i7 b" b! x( C' t" h    bplist& h3 C6 ^* u( v8 F; ~
      列出所有断点
7 A3 Y: h1 s( P. q# b/ c5 S. R& ^' }0 w! V0 S" j7 [$ p0 s
    bpclear 36 t* G5 j1 D8 K, a
      删除编号3的断点# T% j9 |& {+ x0 |

# L6 [, X! k$ Y9 n0 s) S$ m    bpclear# x3 z6 {4 _# o
      删除所有断点4 ~9 |/ r5 [$ T! `

8 j1 `. z1 t. e  v1 \      
) ^: U) Q: B4 @/ W( m& n( K- j6 s      
' V4 l: G6 ^8 k$ _$ v跟蹤紀錄指令: trace& H  N% w# d$ G: f8 @2 C& m3 t
    例子:5 P& b! r5 i4 s( ~1 N( p- P
    trace 01.txt% I0 g/ y5 S1 x9 P7 o! p
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
3 Z9 H9 ~% {. ~4 ~3 E, Z5 i8 b& E; a8 p% a: J
    trace off5 T. `! [0 F: V6 ]
    停止跟踪, 并且关闭文件
( w0 |4 W/ O& l& |  d& B
" A2 w* [8 Z% s) u0 I    trace 01.txt,0
7 G9 t7 z8 g" d    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt) u% J! @/ K$ |: Y

+ F! t' ?9 j/ T  l    trace off,0
" C: @8 ^: ?6 w& o    停止跟踪编号为0的CPU, 并且关闭文件
2 f" E& g, g% C& ?7 E
+ O7 `9 {$ B6 k; |    trace 01.txt,0,{tracelog "A=%02X ",a}
. }% i6 v$ j- t' v( g1 M( L. F    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
1 n! \9 I0 G# \    并且在每一行的前面, 写上"A=a "+ u$ _5 t" O; H+ _" R
    "A=%02X ",a为一个C语言printf函数常用的输出格式1 [' u  d' k5 L+ b' R
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
9 }$ n8 `8 P8 j5 a+ S    X表示为大写十六进制数
& t5 b" v* J  v8 m5 E4 f, h
- v- Y, U7 Y/ h6 H; c4 D% @" l! a; C8 G: L7 h* W

8 F  [, F  ^6 u$ A) D内存直接写入指令: maincpu+ Z2 x8 B0 b. R/ U% S- w% `' \; p
    格式为 maincpu.[][]@地址=数据
4 L4 y; }- T1 }/ @    第一个[]:$ T$ @* J, k8 C  P
    o 表示ROM地址
) j2 W* m6 @+ l9 j+ R    p 表示RAM地址
, v- y' G& ?0 R8 N. e9 T# q5 J( v% L: t( @1 `3 P
    第二个[]:+ t- F( n! O! G0 P4 n) f/ N
    d 表示4字节: ~7 h9 i! s5 A3 X2 v  ^9 L+ w
    w 表示2字节
& K: x. _% z! G: q3 E# o8 Y    b 表示1字节
# F0 N: m' f" U, q% V4 e# y' E, s+ S5 \( N$ f+ Y; V
    例子:2 d) q$ R; n$ ^% \8 Q8 j' b
    maincpu.ob@1234=FF
. V- u+ U& o8 c) L# U    在ROM地址1234处, 写入FF一个字节
4 F7 v( V% G2 S
4 K2 A3 T" J7 |/ [; G6 q) D( l8 u    maincpu.ow@1234=4E71
: Y* Y9 a$ X, @* `" P    在ROM地址1234处, 写入4E 71两个字节8 @2 A7 o/ I6 ^( J$ b

% L7 D' C$ x* d2 Z2 B& Q    maincpu.od@1234=600A4E711 S, p9 i4 C+ _9 A3 V
    在ROM地址1234处, 写入60 0A 4E 71四个字节2 u- x9 D0 R6 f; G; d- E
* c% ^3 U' `7 T; C3 S( M% y6 H
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
; A# d2 r6 X6 G  ]. ~0 d   
9 k7 E' z' h& ^0 R3 k
1 {, m  v6 T+ j' E2 p6 D! j其他:
5 w2 E( v& i5 `3 m( Z; L& X, _    dasm 输出档案名,地址,长度
+ |! \, `; a$ Z  h$ {( x+ e    输出程序的反汇编代码5 O' N  W  F6 y
    例子:
( I1 v/ _% m) }/ I% ^" K    dasm 01.txt,0,100000, N% ^3 U! z/ ~2 }; J4 o4 j+ @
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt$ P& u; o$ w# q+ Y

9 Z% v, ?  ?" q0 r0 d8 v9 Z    softreset4 G8 E! S& G( k% H8 P
    游戏重启, 但不重新载入ROM. L* ~* J/ w, |2 {% I) k
8 |/ @6 ^! j* Y7 K& m3 D; h
    hardreset
/ p' u1 U: V# V: H    游戏重启, 且重新载入ROM
$ M6 Z  J% w* |" |" H4 H4 L0 w
    snap xxx.png* G3 B( X( Q$ X9 y
    截图为xxx.png' {& |/ Z# \9 H. y
0 P4 [% A0 P9 U: b' Q7 p4 ]# l
  
- N+ y+ M- X( ?: w0 m$ o  
/ @2 K' _( c: D6 {  5 L0 }2 F: h* ]; m. F1 d( m
热键:
7 b: {0 x$ h/ q7 w! z    ~ 中断游戏
% F# [9 z" y7 }8 p. V% F    F5 运行游戏0 d( O# a5 N0 |
    F12 运行游戏且隐藏调试窗口
* {0 h/ j# z6 t1 Z$ a. L9 P" A    F11 步入, 单步执行, 会进入子程序
7 x& O& \6 Q- {6 A( a    F10 步过, 单步执行, 不会进入子程序' k: P4 L/ O  H# @2 [6 @
    Shift+F11 执行到子程序返回
! R6 ^4 [6 z8 s* K+ _* [- _    Ctrl+M 内存浏览窗口
1 A7 J7 F* x. j( v  N. B( ?0 l    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
7 ?. M5 |5 G+ H8 h9 A/ u& f" j, ^; c  z6 G+ A
{:4_94:}
; T: A( U' ^' ^; B) m* Y* v' H$ ?! Q( ]0 e6 K: l

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2550 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
; D2 r5 F1 t+ f5 y; |8 U1 S1 ?5 p7 ~( T( ^, B
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 | 显示全部楼层
要详细些的东东
  g% {! Q) d/ `" Y: h: p6 n11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋

GMT+8, 2026-3-8 09:34

Powered by Discuz!

© 2001-2026 Discuz! Team.

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