设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
4 x' U1 [8 N, B' k0 N
很快速的整理我自己常用的指令) x0 p; S0 x8 j/ H" j9 [$ m
3 M( o' @  O8 K6 s
{:4_112:}
. i; P9 s% d& i* t* [+ u6 C/ U2 u2 W9 ^( r! s+ t6 q
MAME DEBUG常用指令' y/ f: R; ^+ D& b& f, x
8 d5 m6 g* H8 k2 i* s% x
内存搜寻: ci, cn, cl7 b6 L1 W$ w0 ?0 U  |

" e( c2 M4 O3 d; I& w9 R/ z    ci
# ?& W6 A% s1 p; [$ g; P    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
- {& P) ~6 C+ R: w
$ j; h$ F! _' |: d    cn
% o: Q4 K' O) V- p6 |7 ?    搜寻指令3 T2 G5 x6 |& m) ?4 H0 {
    例子:
- H) I; z0 A  P1 ?, N& F1 i+ G    cn eq,60* T* e! G) }# Z. T8 r+ ]7 N  W
    搜寻目标等于60 (十六进制)' u3 B. m; k$ h8 u
        : E) A6 w3 w7 h7 Z
    cn eq,#96
/ H, O; e4 @- S! I3 D, o3 t    搜寻目标等于96 (十进制)
2 r# ]0 _9 K: f" Q( p; u: Z! A# V3 b* K- O) N. |
    cn eq  \0 a2 y  h+ a1 L) k) K* k4 F
    搜寻目标的数值没有变化
! r* O8 Q2 w  @3 M5 `& b
1 I9 B+ [+ A0 ]$ @5 x0 T    cn ne3 Q5 E1 ~3 s; ~, j- P4 J
    搜寻目标的数值有变化' r: \1 H# f- D( w
        8 t, I! G- ^6 \5 [
    cn +, L! }3 {5 n$ x. ^. f/ \! f7 O
    搜寻目标的数值增加5 E% c0 ~, T, M* e7 a
   
' d8 G5 Z7 p* {4 T% u    cn -
% b$ e6 i8 r& v6 j# L# D" T; u6 P    搜寻目标的数值减少, B2 J! j" w; A" k. _
        : I5 b/ c) K3 q2 @. B
    cn +,3
. _3 [4 _3 {* Y) P    搜寻目标的数值增加3 (十六进制)
, j  u4 S& p: ]) O: S( A* s, P+ M1 S9 P2 j8 X0 s/ l; r, k
    cl
7 Z3 e/ D$ A* E# G8 P! z. i3 m    列出所有搜寻结果
& N* q3 n( k  I8 x1 F8 y7 a! ?5 t; @5 U
    cl xxx.txt
, }5 |: H3 ^" @9 f* _3 K- t    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
( I2 N' A7 }% `3 z
% ~3 z# J) |' s  X8 P7 G   
. \0 U5 }' n( Y) z: `  i2 N+ ^内存监视点指令: wp, wplist, wpclear
: A2 F. ?: n" ?8 d  I    例子:
2 j0 e4 [' d. ?0 J* v/ \! ?) M    wp 1234,1,r% Z! a) Y. G/ R6 [
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度14 s/ v9 |! X* l# M8 }3 i
* i* e) u) Z7 }" v, ?& Q
    wp 1234,2,w
' Z$ F) |9 x/ o1 g. x& R      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
% s1 a* [3 X( B+ _4 G6 Y: b     
( F8 h; t# N2 B2 T5 ^3 c    wp 1234,6,rw% H2 O4 s1 A1 `
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6% K" E8 t$ G( w& Y( U2 _! N& Z% G7 z9 z
! y7 q8 y+ U7 \
    wp 23456,a,w,wpdata == 1& o" I* e2 {( _# V: M
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于13 Q2 a1 W$ ^2 S& `
$ v" }: F5 C' O+ {
    wplist0 u5 N+ Y" R' }6 U9 z% s
      列出所有监视点
5 n  A( H/ B1 c( g8 m( b! p$ Z
9 N0 V/ K. n, {) t, }+ g    wpclear 3: G/ A0 {- H( b, B9 e
      删除编号3的监视点+ t" f* x( q6 T8 A' U

' n6 p$ ^' S# P  i    wpclear$ j* h2 K5 ^) q, K* R& A
      删除所有监视点
6 @9 O: z2 s6 s! R( c; v
1 C1 S+ k( Z. F      
! G. d' w+ T# M. R. T2 e/ o( T* j
. b) A: r. N4 V$ ?% `程序断点指令: bp, bplist, bpclear
' ?" L, }" |; l/ a+ a' ]    例子:/ K8 z. j$ w' r4 L: F' s+ Q3 }
    bp 1234- M+ g  ]. o8 y" j8 J; l# r
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
: L( x! ^  b' V7 W, P3 T+ r+ z$ _. W# Q8 s) L2 {+ X
    bp 23456,a0 == 0 && a1 == 0
9 L8 r5 }9 [) y8 `) L+ t      在地址23456下断, 且中断条件为a0等于0以及a1等于0
8 c5 |' {! q; D; a! q1 g
% G  J  T5 x& f* I0 Z4 G' l! p    bplist
% s& X: {4 |: I& M, U' H1 y8 o      列出所有断点
/ A; ?0 J1 o& Z$ i
1 s& h$ O( p. v" j& T' ^    bpclear 3
$ t, n& x0 G2 {# n; b2 Y1 Y8 E0 ^# x      删除编号3的断点
2 l3 @# R" r5 p/ U3 N! n4 O3 r( K, h+ f7 w" l% d* n. p
    bpclear
3 D  D6 e" C3 `1 ^4 @' D' W      删除所有断点( }, p9 j3 O6 `' J$ w' M

6 S) N8 w. h6 i" \  r7 J8 e( v      ! v) j% F8 P9 p8 e+ Y2 F% @% b
        |6 k6 v( l' a: H' M) n
跟蹤紀錄指令: trace6 D, {" n& s. d7 W, Z. a
    例子:
* \* h& H! m3 F1 |3 a4 ]) C    trace 01.txt, {8 P& {1 W: D# l7 j6 `" {+ q
    跟踪当前CPU运行的所有代码, 输出至文件01.txt3 U  b, U. o! r/ x+ Z
8 J% f. g% k/ k: A/ m* I  l
    trace off9 K3 `! O2 q. m( _" }8 f
    停止跟踪, 并且关闭文件
2 L+ W8 `. t; r! J! l" l/ ], l
    trace 01.txt,0
. [/ L0 _5 [8 Y    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt3 J4 R  L; h' P  S% H2 u( b/ _) ?, L/ E

# u: ?0 v! q8 {) y- M    trace off,0
& ]) m* K6 |- H& _4 t    停止跟踪编号为0的CPU, 并且关闭文件" p2 V) f# |7 x2 ~8 [& V1 E
( }$ ]" i. ^% P+ c
    trace 01.txt,0,{tracelog "A=%02X ",a}, w" f# U: o* |" k% h
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt ) R5 n* h4 k, ^* D5 x8 B
    并且在每一行的前面, 写上"A=a "
" X6 ]# G- o( ^, r- }    "A=%02X ",a为一个C语言printf函数常用的输出格式% K; Q  J- J  X& a: v5 S
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
# X& D0 F1 U$ m- E    X表示为大写十六进制数
* }2 z. U' ^( `+ Q' o) |
/ K  t/ j- d. Y& X0 m* q
1 M4 K6 P: a; j9 U0 l3 {$ G6 \* U- A9 S" ^) {% ~
内存直接写入指令: maincpu
$ f& T3 |' q" u9 B    格式为 maincpu.[][]@地址=数据
& e3 S6 u2 L! j0 _. a* ~/ i& _    第一个[]:+ S3 w2 [% ]( ?
    o 表示ROM地址
& x% T! p4 ^/ A" z; M    p 表示RAM地址2 h1 v) w- C4 ?8 y8 F( s
/ Q5 C! `" ^0 b+ z
    第二个[]:) M) x- E) O( }3 W& O
    d 表示4字节2 Y) u5 `, E. D
    w 表示2字节+ i, i( i' I; ~2 d
    b 表示1字节. A" j( K2 c2 g+ i/ o
- Z$ O6 O3 g; ]
    例子:3 p# u' m( H, A5 K
    maincpu.ob@1234=FF
$ M% |8 o9 F+ l/ k! {# H    在ROM地址1234处, 写入FF一个字节
6 }9 \( t" f, s+ ]7 A! h4 o& H( W( U) A
    maincpu.ow@1234=4E71+ g2 H0 {9 A3 Z, y
    在ROM地址1234处, 写入4E 71两个字节
# r4 k; |. d8 K. h/ C9 O
4 F( |5 w4 q7 `) A/ x    maincpu.od@1234=600A4E713 w5 @/ S7 r+ n
    在ROM地址1234处, 写入60 0A 4E 71四个字节( F# {  I& Q1 M$ {

- c  X# O0 _( }' C    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写8 m0 A6 g5 p* _. a0 J6 J
   
  L% W) ]9 k/ K1 {5 y% @' o$ u$ H; s2 m6 C: {) T" f- u
其他:
7 `$ }9 t# b" x1 Y& g% V: W    dasm 输出档案名,地址,长度$ U! N+ U" w( w- o# K/ l
    输出程序的反汇编代码6 k' D$ n# y7 M0 c0 f4 h6 j9 [
    例子:
& s  m. v4 R3 C+ W" D    dasm 01.txt,0,1000001 A  Z- d4 g" r# t0 }' H( K) |
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
" M5 y; }1 O& S0 p( c" {
9 }. ^4 K. [  z7 ~1 C    softreset1 J7 R4 X: }' J1 Z+ [% e5 d
    游戏重启, 但不重新载入ROM5 D8 C& A: n1 L+ T/ b
+ C+ x; V# n: D6 b+ ^9 t5 e
    hardreset
3 P8 S* q) H) C3 K5 w) M( q    游戏重启, 且重新载入ROM. J. \- E2 c: x

: _  l! U) d' x    snap xxx.png# |8 i$ P# X) O. R; X$ l
    截图为xxx.png
4 {: r% L/ K! _" o- Z# G2 A: X! }4 S
" k) t6 S# i, f! p- u5 P  
; M4 F2 Y% ?6 |7 e6 z2 k0 g$ h' y' t+ a  / W+ c' S1 @- G, t4 g3 K0 @
  + R: ?, l, N6 ]* ?- H
热键:. q9 G* m$ X5 f& x0 T
    ~ 中断游戏
/ W% l0 L0 E5 t' N9 ^5 T7 P    F5 运行游戏
$ [. l7 p0 L8 k    F12 运行游戏且隐藏调试窗口, ^: A  R3 u) Y
    F11 步入, 单步执行, 会进入子程序
  j6 Z$ a: I1 G6 c4 N0 h* f8 t! D    F10 步过, 单步执行, 不会进入子程序) p/ |3 @9 T1 }5 H1 e4 x
    Shift+F11 执行到子程序返回
+ ^" H' K8 T: Y6 _3 j7 ^& I* q    Ctrl+M 内存浏览窗口/ y/ @+ O3 g  g# J! n, U' Y8 v' I* \8 e
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
' R1 I. |, L- @2 J) T1 A; X2 V
{:4_94:}
3 O& u; r# B) }: ~7 U! z  r) F% E! W; k# D

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2563 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。4 W. Y" x* G( e! T

- U3 i7 Y7 s8 cPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东
0 u5 @& Y) ~* v: Q" N. Y" x% }11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-14 05:20

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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