设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
; W+ Y4 m/ t' \: t& g* e
很快速的整理我自己常用的指令
6 b& h5 G+ W. ^& g5 b' x0 c1 y- p7 `7 p5 z! O& J" c
{:4_112:} 6 \: m) s8 X) A5 j, A7 K0 e5 m

+ T. p! x9 o5 y2 o2 e! `MAME DEBUG常用指令5 @8 u$ H; ?$ P: {

; y* o: D8 i% g( P( ~内存搜寻: ci, cn, cl
9 }$ A* E* J! }0 Y/ ]; B  A# \& M; o: X
2 R5 T' i$ n! `  o/ P( b/ ?. }    ci) s: a0 _7 P* n4 v# b
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
0 Z& r1 c' G1 ]+ a
3 v9 m0 f5 S3 f! V1 V    cn/ a% R7 `  C- [6 ^) O! l
    搜寻指令( M" o, ^* f* h+ t% @# I# ~0 S
    例子:& }4 ]; P5 d( c
    cn eq,60  z3 F& G5 M7 Y# K
    搜寻目标等于60 (十六进制)1 `& E  F, k8 S" Z( i" K
        $ c( {8 |: I  m+ j
    cn eq,#969 a- U; \  n- N' i3 f7 \0 O4 b5 N/ i2 O+ r
    搜寻目标等于96 (十进制)
( F5 ?! g6 q: W6 F: n$ Z2 |( a" ~! W3 s0 x# d
    cn eq/ b, j/ u' T( J
    搜寻目标的数值没有变化* g) P! X' l5 I3 `) k! H$ t

, \. i  s- \9 L3 E8 r3 z  O    cn ne
! {. ?4 O% t7 Q! f  d1 _0 ~    搜寻目标的数值有变化
6 i" H+ w# X# R& V5 {        " a9 Z4 }+ R% @4 `* d+ q
    cn +
. T4 l2 e# e9 F# y& J5 j: L    搜寻目标的数值增加# O4 A6 @" N) |  i9 U; `
   
6 n* d7 J8 P0 w8 G0 @: U0 X    cn -
; P, g' \+ B, M0 K/ |- S7 `& G3 ^    搜寻目标的数值减少# O0 h: p( W& D& F
        
9 M$ @) E/ N! r4 J1 ]8 H) ~    cn +,31 h2 P3 t# S" F" r" c
    搜寻目标的数值增加3 (十六进制)
- Z, e3 b& l7 @
9 d  v% G9 |$ ^( Z! N5 L! u    cl
: b; `6 |  j5 y- |    列出所有搜寻结果- Z; H: ?/ N6 X0 F1 G3 c
4 l4 Q# u- P5 l0 m# _& `8 `) q
    cl xxx.txt
4 |5 C9 D2 k8 K" |% ?' B" ^    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
& n$ e: Z, K# E) b6 X& w
" Z2 |5 M: @! g. d7 d0 T6 U. S" e   
) v$ A  w" G+ g, H3 E* B7 b+ }内存监视点指令: wp, wplist, wpclear* b" X4 B% U. g( q# K
    例子:; S# q7 N) l6 n+ r
    wp 1234,1,r
: u* ]6 G+ Z1 `      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1% M  [; a9 d! r/ B& c0 y
  J2 C7 b: T) t  l) W& K
    wp 1234,2,w
0 n/ x9 F" V" P& K, O      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
2 B2 `9 n; M* R9 W+ N( F     
  E5 T6 X, s, K* I; }    wp 1234,6,rw
1 }8 N* k; Y9 [" I      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
0 N; R8 c5 Q5 u, H" T& p/ \( U( n" c( `7 d
    wp 23456,a,w,wpdata == 1! k7 R. I- Z# \9 R7 Q
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1; w" j9 d4 J. r

  h, T7 o" K! W5 R5 J: Q    wplist
0 R/ [7 D) x& ]. E% @$ Y  d  A      列出所有监视点# G" q- N) s! J! k# r& p6 f
& M2 m$ B# R# E/ F" P) j
    wpclear 3$ ?; z% R, f" C+ H3 S3 u3 b1 i$ C$ h
      删除编号3的监视点
% I0 s" \3 I0 {$ S: E8 Y
; g6 Y* |9 L( C4 m& U    wpclear
2 {: ]* v1 L, u: e- e% u2 `      删除所有监视点  }3 v) Z4 z/ A5 x+ i2 s. o
0 z' y1 c+ d: I6 h! `! A/ g7 {3 \
      5 c) d; m' U. c9 c% y$ u

+ k& s0 i; z, s9 y- |/ S程序断点指令: bp, bplist, bpclear3 j6 K3 e, v# G: u# e: k6 W& w2 C6 E
    例子:
3 E- G- A& @9 m2 S    bp 1234
. @" J% m0 Q& d6 w; P      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断# @, _( D, u5 {' \: Z7 H$ Z

3 Z2 N' C1 x3 m# U    bp 23456,a0 == 0 && a1 == 0' A5 z% g$ H- b
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
. v* l8 x  Q- X2 K; Q1 j8 U. h2 G9 [4 [9 s; D" \2 E
    bplist# G7 @+ ]2 P) R: u
      列出所有断点7 Z; Q8 b7 Z: Z
( n) T6 {6 ~3 e8 f) ~1 z( ~
    bpclear 35 B) D7 k5 j1 _* p/ _4 h
      删除编号3的断点
, F! G$ C4 G" v9 N8 x& A( \3 e
% I, ]) \! ^7 e6 B9 a! T4 Z    bpclear% N5 c8 b4 b9 k: _: c
      删除所有断点
7 n  o1 E" n1 I6 W& J& `- K( F5 y) a  E- P
      ) ?# d1 R1 ^0 U, H; L
      
( e8 j; W" D6 _跟蹤紀錄指令: trace
) U1 u# I& R" d, `    例子:& t$ v9 i8 x7 r) f# T
    trace 01.txt
- s+ q  @. i& s: _    跟踪当前CPU运行的所有代码, 输出至文件01.txt8 e4 Z! E1 |) u' [1 C. d
  r' z! l2 @/ r4 _
    trace off
% \7 `0 G  W5 q; m( _' G    停止跟踪, 并且关闭文件
  f3 i9 E  p: \: J# I  E- R, P- A, ~
    trace 01.txt,01 ]3 j( m) J: Y
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
0 }. j7 r" E: z; X0 S& d" k9 Z' S5 n# X  g
    trace off,0
% V8 M% [' m# b    停止跟踪编号为0的CPU, 并且关闭文件
6 s: l2 Y( H3 |7 S5 `) o* e# k4 C3 ~: C3 B- b  L
    trace 01.txt,0,{tracelog "A=%02X ",a}
. o1 W% ^$ _" E$ @! b, n2 Q- T    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
5 r" X$ n4 ~  G4 k* f    并且在每一行的前面, 写上"A=a "2 d0 w) ~5 b( o) B6 D. f; }$ W
    "A=%02X ",a为一个C语言printf函数常用的输出格式2 m, E7 L: q! Z& d+ l- M; r# M7 B2 g
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入/ J: V8 \) _& |. i" F
    X表示为大写十六进制数; E9 ]4 h- _6 P8 V
* `8 K- ]3 z- _6 G2 ?  i4 H  T
0 \3 }+ f! o$ N0 ~/ m

4 U. S# E, f8 S* S" k  h# w内存直接写入指令: maincpu/ ~" @: r8 w/ m! E9 u
    格式为 maincpu.[][]@地址=数据0 R1 u7 ^- B5 g3 o9 U( {1 g
    第一个[]:. f+ S! X. W& d4 X- U. E
    o 表示ROM地址8 r6 x' p/ m: g3 l, T7 e
    p 表示RAM地址* O9 g1 y2 e. H" F0 ?# N: o! J
" R$ R# h0 W7 R% N9 K5 ], f6 Z
    第二个[]:% j# R! N- I& k# C
    d 表示4字节) G0 b; x8 d6 [# j( e
    w 表示2字节
, w1 o/ _7 ]% M3 m. n) @    b 表示1字节
! P1 s- q: I  x7 p. t1 \7 d2 Q. x4 M3 z
    例子:/ E+ Z0 m9 }6 `0 K) ?9 C6 U
    maincpu.ob@1234=FF
, j" p" D* P9 i3 k3 O    在ROM地址1234处, 写入FF一个字节
! O. W0 A$ O0 `& x0 }9 }. N0 I! @/ p" ^! E
    maincpu.ow@1234=4E71- m: v) N1 C+ ^
    在ROM地址1234处, 写入4E 71两个字节
! [+ e2 }6 y2 Y. J/ m* X& P1 p' l1 ]" b- Z+ x* e
    maincpu.od@1234=600A4E71! D. N4 o. C+ k0 Y/ Z8 {
    在ROM地址1234处, 写入60 0A 4E 71四个字节
" r0 C2 q1 P8 A' o8 B! n) \6 U5 m& s! Y" P% J# D* t
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
3 w7 v0 h1 K. B! V  ~3 ^    / `  ?  ~& ^! S+ @. W: |' R4 @

) N8 I! v+ d* v$ y其他:
7 C6 g1 b! T* P1 \    dasm 输出档案名,地址,长度' T6 d) t8 l% g0 a3 q& r
    输出程序的反汇编代码
$ q0 `- O! M( \# H: G  c    例子:+ j; Y% D4 r, F, Q+ E) T2 S
    dasm 01.txt,0,1000001 L" M' _/ M4 K) U0 e
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt* N* J* j# k( }" n- i9 J/ v

! @+ f9 l" R' D5 {, X, V: K5 s/ L    softreset; N3 g8 G8 Y7 H9 S) \6 V9 x
    游戏重启, 但不重新载入ROM
; K3 C' h% p  U" P
. }" u& Y+ e, V8 c( X( D4 O8 [; g    hardreset$ i3 s: c1 U* o. F3 v% e
    游戏重启, 且重新载入ROM
* @  [  B: z5 {- ]: q7 Y; E5 W  O8 \% Y0 n* [
    snap xxx.png
* R. X, g3 k. F    截图为xxx.png# }! ~  B# V9 c+ @  z- W

0 x; x+ ?6 {/ @0 J  
7 G) v1 ^$ k; ~- s6 q    g8 w1 ?; O- M2 h8 ~# W& ^
  
/ }7 ^2 N4 N: ~. ]) K# J( }+ Y1 A* {1 J热键:2 O8 y, ?! j$ O8 L
    ~ 中断游戏! Z4 z5 a# q7 _7 z
    F5 运行游戏
- T3 a- q4 C1 K8 W$ c' i    F12 运行游戏且隐藏调试窗口: o, T- N0 ~) D- }. U$ z
    F11 步入, 单步执行, 会进入子程序
: a  h3 M& u; |1 r3 }5 l    F10 步过, 单步执行, 不会进入子程序
! |7 a& r5 E  e4 l    Shift+F11 执行到子程序返回
+ G! x. x; U/ z+ `& f7 u  C) C1 f5 O6 i    Ctrl+M 内存浏览窗口# x7 C9 D" s5 W  f
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU  {) L, h5 H+ D, [6 q- y% H
2 a8 ]0 D( v9 u. s( C
{:4_94:} , k* u, |8 m  W
3 k2 U. R" f( _$ f# w

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2567 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。1 Y$ O4 p4 o' a5 t' c) @$ m( T/ G
& b6 u; \" V" H, b2 z
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 | 显示全部楼层
要详细些的东东
( p: d6 v, Q# W0 ^) H11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-6 09:18

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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