设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

* E' J( K! L4 P  z* c很快速的整理我自己常用的指令6 C. j1 i( O% n6 l( v: D, D

$ T/ h! R. l3 F, t6 W2 t+ T  t{:4_112:} & P0 O( [" ^' Z# B9 _, k  x
! D9 e3 P3 l- P( }4 E: Q: \
MAME DEBUG常用指令
, j9 ]) f/ O" W0 y1 E  R9 A
5 \/ r2 Y* S# I) D内存搜寻: ci, cn, cl
/ Q5 L! ^: I/ t3 x* s4 l
1 y2 l, `8 j, F9 j    ci
: }' z* ^& J: r    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
6 C2 t7 \2 g3 O9 }& {. |+ b4 z2 R  _& o( s1 V" i
    cn# }8 Q. p1 z! _5 v! |, l
    搜寻指令
* B# v, C8 S* H    例子:
/ l) y0 h6 p/ T/ ~- Y7 w9 l    cn eq,604 c; z6 a* d+ {% Y
    搜寻目标等于60 (十六进制)
& x* h% V* v/ M. T# k: y6 i# h        5 I* U# i/ H- S
    cn eq,#96
0 D1 L3 ?6 t9 h( E& z: R    搜寻目标等于96 (十进制)
1 v0 ?6 d9 Y/ ?& K  R1 k6 V3 p( N/ Z; ~# d* u: B3 F! [
    cn eq
1 q% G- @: w$ d/ |0 z3 V    搜寻目标的数值没有变化# k$ d/ M9 p- o3 H2 I3 P

- D8 R2 M" _0 m1 l, y$ C    cn ne
$ R1 e0 S( G' r% W, S& R    搜寻目标的数值有变化% o$ S: _' V# J# ~
        
) j' t; P. N+ D" a& \: D    cn +
) \5 g1 j/ |: D1 o1 n* R8 c" i    搜寻目标的数值增加
+ U  M0 l- t5 E9 T8 X# }    : d. J% z. @& N# |
    cn -9 b9 {: P2 C' [7 [: B# }/ C
    搜寻目标的数值减少& ?: }2 a" g8 G# @* z3 s& b# Y2 ^' M
        1 F1 j. C* X- b
    cn +,3, u* B; F9 P* E2 f
    搜寻目标的数值增加3 (十六进制)
0 E4 D, E; N& P9 E. ~4 y1 T5 o; i/ d9 u8 z/ j8 \
    cl% Y) D: Y7 Y, A
    列出所有搜寻结果
8 _" _0 ]$ b9 k( @8 O* l' V- t& j' ^6 f6 Z
    cl xxx.txt: r' [& g0 H1 m; l! {' h
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式+ _& N# ]8 h+ u4 K' a
2 R/ B; Z! b% }! @4 K7 g$ \5 H
    ; r3 p# ~  F- Z) G5 H
内存监视点指令: wp, wplist, wpclear& l  n  e5 M+ U+ U8 L" K1 `  D
    例子:
( \* t  r7 h4 z    wp 1234,1,r8 X4 j3 U- r7 D; G* a) x: b
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
, P- @% I: ~, P& @
; K9 T) ]8 h/ c5 P0 I    wp 1234,2,w
8 X9 O7 i4 l5 }5 n8 C6 ^      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
5 D; Q$ I. j' y  F0 J# |( D8 A     
) h* S- `0 b1 H6 p    wp 1234,6,rw
2 z4 T8 G8 \7 u. E; r' t8 \      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6! x( i/ q: ]( b! T( G; \. \

. O4 ^# I# k& V+ I+ i4 m! I% o    wp 23456,a,w,wpdata == 1
: z/ \, ~# f' `4 `2 k6 `      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
- p& i& F" v- P* Q3 Q, H3 s7 Y: o# E" }3 V" O& T+ c
    wplist
8 i. \2 U, r$ s" \, C& K, A      列出所有监视点1 F+ p8 O2 A5 X5 |; Y
' r) E1 x, L8 ~2 M0 L7 d' B
    wpclear 3
5 {7 k- `3 B/ u& a+ A9 A      删除编号3的监视点
6 {) u/ \8 T# t+ I* _, k9 o$ O, J0 p* j
    wpclear
4 F/ r: O$ {8 V0 r% J; X      删除所有监视点
% R. ~4 r: m5 }/ {2 B2 B" z* L, f4 a& ^, d
      3 Y" q: q; o5 c) M6 M
. {& l& i) `% G- @9 z7 c9 Z
程序断点指令: bp, bplist, bpclear
3 z$ B3 |- q/ ], X4 m  `7 r" ?  ?    例子:
+ P" U4 W" g7 s& Y/ P" P    bp 1234
1 F9 f. }# \1 k9 [      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断: ~* t5 P/ `8 e0 F

6 b7 \+ Y4 t" {( L4 H3 X. p. R) w    bp 23456,a0 == 0 && a1 == 0
+ N2 Y$ C. M) z  K  B      在地址23456下断, 且中断条件为a0等于0以及a1等于0* A: C7 X* g" e, T; V) p5 U" M
0 [/ s( R3 L5 J
    bplist
! H  C7 O% d/ Q: Y0 ?      列出所有断点
) o7 [) E, _0 M6 a: u. A; p8 l! k* K' \# K
    bpclear 31 V$ Y/ R; ~) Q: h8 I/ ^: L# Q
      删除编号3的断点( C- V- U8 q1 @. V; O! L! `
# l) K) j0 r* I: U: d8 K7 n
    bpclear
7 }& v  T' a4 L% k) z5 s: [. V      删除所有断点2 z4 y% x2 t% R4 @: m" }0 D
9 f, M4 j4 p$ ~( u: w5 c' V
      # ~* {- m# l) A2 h: [% e; h
      % w7 b' P9 Q$ K5 Y3 g: C
跟蹤紀錄指令: trace' Q4 C: H- G9 ]
    例子:5 f1 d& _! f$ |8 x( ~
    trace 01.txt
  N/ |; G3 t8 c( v    跟踪当前CPU运行的所有代码, 输出至文件01.txt
/ `  G1 }" D5 M4 w# x$ e6 I* g- `. i
  C: a/ O( W8 H    trace off
/ [4 S5 Q7 Q; [( ~9 ?  d7 X/ h    停止跟踪, 并且关闭文件
! d9 }# H: ]3 J" R+ r3 J
8 j8 }; r$ L* K" X8 V# n    trace 01.txt,0  {8 c% a+ ^& S( @; {
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt0 d: s. L4 c! q4 t
) F3 c( O) E) R6 d0 z0 T1 K# t( Z
    trace off,0/ n; p( v/ |, L: ~/ t  h6 C
    停止跟踪编号为0的CPU, 并且关闭文件
( a4 G. P: Y" V+ S  X% U) y# I( ]7 ^8 R: n2 p% u  p
    trace 01.txt,0,{tracelog "A=%02X ",a}
" ], z( P( m1 {( b$ }) V4 F& h7 q    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt   b2 v1 c) d' d1 S2 V. K$ B
    并且在每一行的前面, 写上"A=a "
7 p8 R5 r" |9 |+ a    "A=%02X ",a为一个C语言printf函数常用的输出格式
/ I4 L) F+ k0 z% Z! J- l    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
+ H6 m1 }4 I7 ~9 _/ T2 s7 v    X表示为大写十六进制数4 H  n# m4 Z1 N

+ m$ Z3 z4 t0 h
& E; b- L) j3 B8 A5 _" Z8 V
/ T- l3 r; G( `内存直接写入指令: maincpu3 [7 D+ o* `9 f; p* s
    格式为 maincpu.[][]@地址=数据
4 e% U1 O! S/ p: [# X    第一个[]:' f2 P! |* z# f- G! Y6 X
    o 表示ROM地址5 W. e/ H$ }0 |6 I" O
    p 表示RAM地址
3 d# x' i9 N% v! S" @* I
4 a6 b  p9 c5 {, j7 `: C: C$ P4 n    第二个[]:/ Y6 M* V9 C* j/ W
    d 表示4字节
/ z$ Y7 W' A0 S* u' z    w 表示2字节
' d" ~. g/ q8 M2 }# o2 D4 W9 R9 M    b 表示1字节
. ?3 d) D, ?/ b9 W2 z" j9 _+ a' r
    例子:
1 W$ W# U: d! [2 J, o" v    maincpu.ob@1234=FF& S) K" V3 Z0 O+ {' |
    在ROM地址1234处, 写入FF一个字节. N# k+ `+ S# A& s

& H. H8 B! @& Z) w1 h    maincpu.ow@1234=4E71
! [4 x: ?; Z4 T9 Q& n: d    在ROM地址1234处, 写入4E 71两个字节
$ |+ ^' |8 y4 n/ Q% `% [
, l0 G; Q% F3 [4 W/ q, `; }; u4 h    maincpu.od@1234=600A4E71
  V: X) {* v+ P0 @& r4 t    在ROM地址1234处, 写入60 0A 4E 71四个字节7 ]0 d# y; }/ |: U
$ Y; j/ A2 d/ q. d2 U; O( v* W8 M
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
; ]7 U7 Q1 O* t6 u3 e   
* o- n6 j& J/ ?4 D3 `9 i5 Y3 w) h
其他:4 Z4 K  n  G" t  Z! R
    dasm 输出档案名,地址,长度. n" y& V% A* {
    输出程序的反汇编代码+ ?* K. n/ d( z0 d: V
    例子:
6 m' L9 H2 L8 H2 |6 {$ N! _    dasm 01.txt,0,100000& G; g& n( x) B& J( J: _
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt. F# A9 B4 U: @, O; X; D
1 j& X# X2 x- ]1 P6 F. m) C" b
    softreset5 k5 ^$ u0 R) d
    游戏重启, 但不重新载入ROM8 S5 J* y3 v* ~: d, \+ {- ]- i

4 l; ~7 Z+ F3 l/ U( u    hardreset# G8 b* C$ l. P4 k# w: f
    游戏重启, 且重新载入ROM
* P" ?/ V# `# d" A. K( w: W
" d6 g: q' P  d- c# ^* t0 |    snap xxx.png* v8 w4 f  u. Q6 D: @2 l
    截图为xxx.png$ ]" V# {. W, Z9 }& z! E$ q: T

( \$ i+ r  n" y) k! ?  
$ ~) m7 n" T& l' v. E' h  
0 `4 r# r7 z  d5 A  
  w8 N1 R/ O/ [5 L热键:4 v6 o* [/ K3 Z
    ~ 中断游戏& z- K6 D- C( G! H
    F5 运行游戏
( K8 N7 f) m: k! y& z) A: I; |, D    F12 运行游戏且隐藏调试窗口
2 l! g, a8 U! c2 l& D& {) }5 |$ u5 j    F11 步入, 单步执行, 会进入子程序
( O9 n8 S3 Q  `    F10 步过, 单步执行, 不会进入子程序
" k* v6 V2 ?! o& a    Shift+F11 执行到子程序返回
' N$ q, t9 C5 G+ z. i    Ctrl+M 内存浏览窗口
  g0 V. e+ L% S6 X' x    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
8 g& r* D9 t. I# Y+ W- T( R. s% }8 f/ k/ C
{:4_94:} 9 r4 ^/ H" U$ h: |4 K# T/ V
1 R% E, }: k, B% m7 W

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2554 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
& H  J8 [  ?6 W
; u3 w' O' j# J6 U  qPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东
6 h& s: P  H! C8 B$ V9 B- `11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-22 20:52

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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