设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

3 ]; @/ x7 h  s$ L3 n很快速的整理我自己常用的指令
3 x7 Q" }6 f: ^9 h
* _# W( z; E0 R# Q0 u0 d: x{:4_112:}
( C' _' G8 ?( U2 O4 }3 A4 y; c+ H: f& }& v; E
MAME DEBUG常用指令
3 i9 F4 {3 w: T! E( s& A) l9 V5 Q. q, P! i8 d7 n1 R# \. q
内存搜寻: ci, cn, cl% ^4 L5 V& A% O3 ^
0 v% D+ M4 f8 T9 T' ], v
    ci
( B8 M) ]! K0 f. B* s( N    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
/ k1 @/ j0 L% \1 x" Q/ {
" @2 _( Y, T# u. x5 {; S    cn" r, u- @2 ^2 e7 _' ^
    搜寻指令/ y" }4 J! }+ M
    例子:+ x, f8 G4 s" W0 Q
    cn eq,60
& g! J2 R2 Y; J    搜寻目标等于60 (十六进制)
* e" E2 p5 v) D$ T8 J: m        5 @4 O" G% p- }$ X
    cn eq,#96
) G$ U4 b  e2 w    搜寻目标等于96 (十进制)
' i, B4 Y' b2 j5 C1 R
& A) @. z* P; }: }; f5 C    cn eq7 D' L( s( {+ }0 B  P8 t  E
    搜寻目标的数值没有变化
! e2 f  D% S# j: C2 V- D- L8 I9 X- ?& L* h, u
    cn ne# ?+ {+ R8 `, P* s
    搜寻目标的数值有变化
, x& b! e+ C$ a        
+ R4 L, d5 [0 |& z& C' n9 [    cn +
- x. d' r- F- i3 D" u( d  H, M    搜寻目标的数值增加
2 O* _+ |+ _& a  ^   
& w8 R: b8 z9 v) M- s$ n2 a    cn -: I1 ]; ^9 Z6 U: N5 r& R- ?5 i
    搜寻目标的数值减少6 T  g. ^' M" A
        : ^# s0 B& O# H" Y
    cn +,3& Y; t; D/ |' z( O5 Q8 Y! p2 H
    搜寻目标的数值增加3 (十六进制)) ~& i+ j: Q1 |# R) t

$ H. Y4 }9 z+ k  k3 L    cl
+ a" s* m' ^: _, l1 ~; v  z. O- J    列出所有搜寻结果
9 ~* {/ d# D  v4 D1 ?, d9 x& J0 [0 c, i3 p" P
    cl xxx.txt
+ w  q( W! M2 {6 d) ~0 [& R( p    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式% P: R+ d# z1 C5 B3 }2 Q4 G
7 Y5 {) N1 c" \8 x
   
, I0 g- d6 I, V8 \* {0 o+ r7 Y) R- b内存监视点指令: wp, wplist, wpclear. J' f, C( I. ^( E/ I
    例子:
: A2 h2 u9 h6 @: b    wp 1234,1,r
" q2 e0 }# y( Y6 l9 ~      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度15 O3 \& E' t& e) T
5 S! B6 \$ f# X' u+ U7 }5 C) g
    wp 1234,2,w
+ ?0 ]5 [1 F7 W0 @/ h; e      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2, A/ n+ c1 [" t" B  v) ]$ X  O
     
- t0 s& n+ E' _3 b    wp 1234,6,rw
2 J: o" {' O' g# m5 H      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
) C( Q: Y- r9 b( v2 v( r9 w: t2 c2 l) [
    wp 23456,a,w,wpdata == 1
9 ]5 h1 p8 [# X      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
% U! A& \  \1 r# h
( B1 r7 c: w3 T) `    wplist# K, [' i% `; _  R. ^
      列出所有监视点4 Y  R4 Q+ y& A* K8 L8 ]

6 t! r/ j5 A% n' `0 V2 o' X3 U    wpclear 3% d- f# k/ b9 _4 x8 ^, d
      删除编号3的监视点6 H2 N0 D) U% K' z7 k% X
" t5 N6 b& |, }" a7 D3 z" v7 c5 c
    wpclear  s$ C9 D. A" w3 f7 M1 f
      删除所有监视点
& ?: n" J( m# _: O
0 g4 b/ N  M5 f6 s8 Q  q1 f1 S      
' l$ R) M, ?( o. j" D% H1 w( g) o# |1 N0 u
程序断点指令: bp, bplist, bpclear
- y9 Z( Z% b0 F- |% B8 b( X    例子:) @! [, _+ D! p! w+ \; @
    bp 12345 w0 n" Q) ]  Z5 V: S; d. p
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断  f; d2 g2 f4 y, N
# e( ]( N8 E. f4 p3 T  g+ a3 Y7 H5 e
    bp 23456,a0 == 0 && a1 == 0$ D. i7 N4 \8 R" C1 {( _
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
, X5 B6 R6 J0 o8 g- w% ]& k5 i
# v2 D0 u" X2 j  `2 v( W0 v    bplist
4 W6 T0 T) r4 y, K% `      列出所有断点# w% I! q; m% c; j
5 ]# z0 d5 v0 S) p6 G- f4 D: O* }1 N+ }1 e
    bpclear 3' `; Z  W$ \8 X% q* j
      删除编号3的断点1 Z( R) k0 f+ ^3 @5 h; D, f

$ C0 C' }% V0 b) b6 t' t1 m    bpclear
4 [4 O0 L5 M* n      删除所有断点6 P/ o: d( z8 U! n2 T/ |
) P/ G! C, l* R, G  F
      / U# p+ x+ e+ M4 {( o& K% V+ D) z
      
) z- g6 o# Z* U6 w) ~跟蹤紀錄指令: trace
4 v& q9 _, E% b* t    例子:
& F' k3 p, `7 O* @# i    trace 01.txt- O5 Y; V$ {8 k  B8 {# Y3 m0 C' y3 C( u
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
; o/ k- ?( H0 C, C, M9 L: i" @9 R4 o# G0 ^, r, e" h" M5 A
    trace off
$ Y0 M0 V0 i5 N. u0 O% B6 W    停止跟踪, 并且关闭文件; h1 {4 n* W6 g& U; ^: a
6 o# g. _0 A; X% P
    trace 01.txt,02 W5 l5 j* ^0 V! d" J
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt# Y1 {; e9 |# f0 t3 I. p

" ]" {! h4 \3 q' a5 R$ L1 j* I# J    trace off,0
6 v) r+ f* j- {+ Z    停止跟踪编号为0的CPU, 并且关闭文件- I# [* y6 j: e" Y7 v9 z& f

4 x% }# @5 ]% U8 `4 |    trace 01.txt,0,{tracelog "A=%02X ",a}( g6 e0 }& p# r/ D/ O- }- }  k
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt   B; ^. n0 ]4 o4 z5 W
    并且在每一行的前面, 写上"A=a "4 _" B0 L$ ?* I
    "A=%02X ",a为一个C语言printf函数常用的输出格式
+ B# `0 K% r  ?1 V  H* d; q    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
% C$ ^" V8 r/ R+ U; D    X表示为大写十六进制数  D6 t; S3 G: ?0 {$ N
& S" |- ?0 d! ?$ i1 b
: @$ ^' P- n: B3 V( V

/ P9 ^! i! C, a- h8 C  e5 T. d内存直接写入指令: maincpu; g2 B- y. X& A9 e
    格式为 maincpu.[][]@地址=数据+ @0 X6 A6 B) v+ O' w; R
    第一个[]:, `( ]9 O5 z% o! Y/ `+ k% p" V
    o 表示ROM地址
/ k. _4 |* t9 Y" ~% h! X- E    p 表示RAM地址
2 J; y. Y& i3 |) z( F# Z2 `1 K5 C% F3 O; j. f; E
    第二个[]:& j. M0 `7 c- z' J" d
    d 表示4字节( D  Z! T2 |( v% ]( F
    w 表示2字节
, |% V- U1 O- g/ I    b 表示1字节8 Z0 \! D: s; @" F1 o' ~( ?! L

* D4 n; p! C& O    例子:
6 k9 K, c, j) @# E$ j. e$ S, [: a    maincpu.ob@1234=FF' G8 c* ~7 S! l
    在ROM地址1234处, 写入FF一个字节
3 [6 y* D  j% _+ t
' R# R) [' L& ~  ]* @    maincpu.ow@1234=4E71
) ]& N+ j4 |$ w& M2 J9 g' M    在ROM地址1234处, 写入4E 71两个字节2 ?! \2 D0 `, i. n) C. K& [3 v
6 a: u# t* \2 l: i) P
    maincpu.od@1234=600A4E712 R( v; h3 _1 j
    在ROM地址1234处, 写入60 0A 4E 71四个字节
# g8 W7 r4 c3 x9 R! D( V: N# r
! F( G6 @) C2 N  |" ~    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
9 Z4 l  q  K7 o- D/ |   
1 E8 L; e* U5 c8 n
. B% m7 y/ @7 d; ^: V# S/ V' Z其他:
/ F2 T; G/ z' N7 D    dasm 输出档案名,地址,长度
0 r, Z5 v+ O4 }2 U) U$ n( h; j# o    输出程序的反汇编代码( R# \& l* P3 i
    例子:
2 b2 ?  A2 B9 U7 O    dasm 01.txt,0,100000
. o) r# [- d3 G$ ~) w    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
) Z3 F$ L6 C% d# P. P9 o
! A3 n0 M( V0 H* y1 ]0 N5 I    softreset/ d6 U# C2 U5 W! a
    游戏重启, 但不重新载入ROM  m4 H2 O0 |8 @7 r% F
' q& X( g3 ]5 w% s" m% I% G
    hardreset! ]1 N' Y* v$ V+ p2 g  H
    游戏重启, 且重新载入ROM  Y, X# Z5 Q8 @- C. G4 X  d

3 k$ {# O; C6 _2 E3 |    snap xxx.png+ Q6 [" e5 b$ B3 f6 b
    截图为xxx.png
1 N2 F' i) a% S, M* x$ V% U
5 S) _5 r, t" a" n  
1 x0 R6 c' n9 `8 u  
, c6 O, ]+ @& p( P/ B  ! B# B8 u8 w8 O! ~( x
热键:
3 @9 M' f" k3 S0 ]    ~ 中断游戏
: Y  R+ F; @3 Y, e    F5 运行游戏
5 N$ q% b, f, e! k" S$ D! x$ W    F12 运行游戏且隐藏调试窗口
. [* w# Z+ m7 I9 x1 p    F11 步入, 单步执行, 会进入子程序9 S) n% O: E( x8 z1 {5 R
    F10 步过, 单步执行, 不会进入子程序
7 d/ [6 p; Z$ `2 m" c; _    Shift+F11 执行到子程序返回
1 a, R1 i' ?) S( H' H' t. s    Ctrl+M 内存浏览窗口
/ b. R, F% [3 b7 Q/ l    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU2 m7 i( `0 p4 T8 t
$ Q9 {% |/ w, M% L% ~) K" Y
{:4_94:} 9 V  e4 S4 m0 v* i2 n
3 I. a" Q$ {3 f) U, _# G

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
9 S. a* u( _0 g" M- E. L
: ]5 q! _% a0 dPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东* G6 g: k% j6 g
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-8 07:13

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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