设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
: N$ F% B/ j9 v' F
很快速的整理我自己常用的指令
  ?- b* m, f0 b" j/ y
/ m  m, s; g9 F: O; b{:4_112:} ; W: I- Y8 K+ {6 i! K) Z! p
* U6 N* X' s% w- H, g
MAME DEBUG常用指令0 h" u! s) y% |9 W
) Q( Y( y5 c) P
内存搜寻: ci, cn, cl
( ^& }+ O  W6 C, O" K$ P3 i+ B
% F* R+ {( A3 ~! }* [4 f; Q    ci4 |+ D  l- n8 D3 t1 [" c* s& [
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
1 [+ Q' h3 E  p6 S  K: ~2 L8 d2 \" z4 `8 G, V
    cn
9 I* S! g. ~# T4 c3 F    搜寻指令" l$ G  b6 D* j
    例子:7 c  N9 o; v7 w# {( Z5 c7 \
    cn eq,60
% P6 Y8 C" y6 z: [    搜寻目标等于60 (十六进制)0 I; V9 R$ p( Q
        
0 n" \/ a- N/ t9 y) h* ^& H    cn eq,#96, }: W' K* V. _+ }4 t9 ~7 b1 W
    搜寻目标等于96 (十进制)
6 i+ f. Q- ?( E* m3 C- o
, [; t0 w5 w( Y9 S& p4 I$ H    cn eq7 u# o( v, K% [+ `$ S
    搜寻目标的数值没有变化: w& Q% c2 t1 U9 S) K( W

7 E0 j2 T% E2 w8 V+ B+ ~    cn ne3 i, m8 f6 d0 D
    搜寻目标的数值有变化
3 y1 U# m( `5 _! b! f0 z, {6 P        - D7 M7 t* ?3 y' P% I
    cn +0 P" j/ K; l9 u$ b* D
    搜寻目标的数值增加! e8 s) `0 A7 Q
   
' [7 \! ?/ j1 u0 D! Z% E: Z) c    cn -, P9 K9 n) y% a: s. V4 o
    搜寻目标的数值减少* b+ L- f, b" x6 S1 Q
        
8 k% x# E, O& E" q    cn +,3
! n0 _! d- Z- K) T    搜寻目标的数值增加3 (十六进制)" v2 W/ B, F9 r6 N% a3 M0 Q3 w. k
# _. ^- F# z3 [6 J' t: h
    cl
1 ]& s7 E- W+ W; H5 ~: j$ j    列出所有搜寻结果1 B+ ?- s6 f/ p% {7 [. \( @( J8 M

2 {; C% b2 K, K0 [+ T    cl xxx.txt& {, \" d/ V5 @4 j
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式0 A+ W- c! [) Q1 j$ m9 ?4 N
( V  ^. L# n/ L2 @
   
; Q  e; [" F  ^; I% Z内存监视点指令: wp, wplist, wpclear
9 w) L4 U% ?8 l! V- |* Y7 D5 g    例子:/ G2 N7 m% C8 G& G3 z2 Y5 M
    wp 1234,1,r6 o& X+ W1 d; S1 Z8 K7 i) V
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1- [- K: q& |* D, R/ E3 x

. b* P) P- t4 v, s' d1 f$ ?/ m    wp 1234,2,w
% M2 H9 d5 i+ N      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
. e$ w: }& X% i( y- T     " }4 `# Z0 m! X6 G+ v! h5 {
    wp 1234,6,rw
( j/ r) Z6 U+ l2 j6 p1 d      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
& z7 m3 B! l7 b/ U4 p
# Q0 l! z! z3 b$ e0 N/ q5 F& t    wp 23456,a,w,wpdata == 1
6 E4 s! z6 L8 Q) @9 ]" L% R2 P      在地址1234下写入监视点, 数据长度a, 且写入的数据等于13 f( p3 y3 v, [+ B, ?

3 Q! {/ V9 X' [$ e  V    wplist% E* z/ |4 W4 e, K- z1 H$ c
      列出所有监视点1 _7 S9 H! v3 }0 m! f

1 p" k  g$ r6 F& N# p* T% G' o. w6 [    wpclear 3" ?' I2 p. h& w' |1 A( l! @5 o
      删除编号3的监视点
% e; x! Q& W- k/ F7 t, m
; ^: N6 p8 O/ X    wpclear* t' b# K  K1 }  |8 Q
      删除所有监视点
8 `4 p9 ]8 `/ o2 }2 ?
0 t9 r! C, F& d; b5 b      
' N; ~" e: ]$ m. ~
+ ~& \: R9 l- p程序断点指令: bp, bplist, bpclear* c) G% Y" W- M/ y5 h+ |
    例子:
( s  y  T0 l% e9 k+ L  B( x4 e* ^    bp 1234
7 l. L& Y+ U& Z$ _0 d3 ?      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断7 e6 t7 m0 {9 d3 T; E% }3 \

6 N3 ?- r- \1 G" L! E! H    bp 23456,a0 == 0 && a1 == 0
! f9 \: H9 e+ ?      在地址23456下断, 且中断条件为a0等于0以及a1等于0: X, w0 C3 c2 k8 E4 k

, j. T6 p1 S9 n    bplist. N1 `- _1 h; c1 ]* i% }
      列出所有断点
) p: d1 n) @7 c  t
% b' ^4 o2 i% M2 V) D8 U, ^    bpclear 3
7 p* I# d( B& g# F      删除编号3的断点
7 ~& x" M0 E- U; k# T7 b6 j* w9 N* d) `7 e/ b
    bpclear" r9 \" d( m+ t  T* g
      删除所有断点  T( n- C/ R% _+ K3 z
1 c- N( k4 x# c1 x$ j2 J
      , z7 f2 B" q1 p
      8 y7 p, Q3 |+ L$ W# `( J3 a
跟蹤紀錄指令: trace
4 x1 [' z% d, `, u    例子:. I% |3 i% C, J4 A2 G
    trace 01.txt4 b1 G- y8 Z$ D, V. D$ Y
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
3 S& P( [/ w* b  ]
" G9 B) {; \, E9 I! G/ O0 @    trace off
9 g  c9 T2 |1 @7 r    停止跟踪, 并且关闭文件1 \* B( \' d9 O$ }: ~4 }# z
/ ^5 D3 G- D) _/ n
    trace 01.txt,0
' e' u- U+ m  x$ t' z, b4 g6 \* B    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt, F; |% Z) x5 R5 U

/ {) P/ k8 G9 ~8 ^    trace off,0- i5 _0 P1 F7 w+ S) c% r: F
    停止跟踪编号为0的CPU, 并且关闭文件
# N+ B5 ^" _0 x0 N2 K: O1 B$ t: k* t! r: ~' M. v6 J5 m
    trace 01.txt,0,{tracelog "A=%02X ",a}
6 P7 _& j8 G. M5 p; [' B6 D& V0 h    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt # o3 _8 P9 P' b
    并且在每一行的前面, 写上"A=a ") @5 d. h- O2 j$ X4 L4 o
    "A=%02X ",a为一个C语言printf函数常用的输出格式
- ~+ i# g$ l6 p3 Y9 e8 y" |    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
. X% Q! t) t* L% d6 X    X表示为大写十六进制数
0 z5 X3 A6 e! [- c. b1 N$ O* A( k. H0 l: \4 b- w" _6 j
6 e% ~. ?' n5 o; u  Z

( e5 O& S& ~* c. z" Y内存直接写入指令: maincpu
, X" j5 D- m! }3 x, g- d    格式为 maincpu.[][]@地址=数据# V; V1 x1 ?5 V  I! n
    第一个[]:2 i+ |1 y3 T% D4 i& b
    o 表示ROM地址& q1 i2 w2 @- J2 s
    p 表示RAM地址1 X) |* X3 }$ v3 l4 O7 c& X+ ~
( {8 f7 G# T5 a) }6 B
    第二个[]:
7 ?9 Q: C7 r5 p) f' a, s% \  t    d 表示4字节
: _8 {8 F' @, B% C, v, h. s. x    w 表示2字节
# z0 N2 T1 k6 Z    b 表示1字节
6 Q( F& C6 i2 O3 C' `8 a: s0 |( q, Z$ z3 W; J% g
    例子:1 k/ q* N- L: h  s' \2 ]2 q
    maincpu.ob@1234=FF6 S  q* D4 O  {) |# i
    在ROM地址1234处, 写入FF一个字节# l- a  S; x: ^# ~

$ I# {! f1 I9 E9 d& V; ?5 w    maincpu.ow@1234=4E71
. C- K9 ?) _" f  V- N/ X    在ROM地址1234处, 写入4E 71两个字节# f6 W& ]9 X  r7 {0 K
0 _9 ^/ ]0 f' u. ?% L! T; \6 q
    maincpu.od@1234=600A4E71/ M* |; r& |7 U# }. N+ r* N7 E( c6 V
    在ROM地址1234处, 写入60 0A 4E 71四个字节
3 m, S- w, s) M9 X& m) }, L$ Z) Y6 ^( ]# Q% z# C! y& k
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写# s6 ^! R6 {% A* U6 o! S9 P- m0 I
    / @0 W# S% W. i' L$ \" U
9 y( o9 d" Z0 ?$ I
其他:
; }8 W6 G, L) z, E7 N5 ?    dasm 输出档案名,地址,长度4 w' l& B& e( W- R) t& i# p" _
    输出程序的反汇编代码
& D6 x) T8 ~( c! T9 W    例子:' K  o# |5 z" ~: t5 i& A
    dasm 01.txt,0,100000
# k0 V) z+ k! N, Z, ?    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
3 Y  N; L  X1 j: [
( ^2 K( m9 {2 U    softreset2 u% U( U! ?! B( ^+ U% _: b
    游戏重启, 但不重新载入ROM9 b0 u4 {3 j3 Y3 |. A
: V  i* p0 [8 |" c, o( K
    hardreset
9 l& p  X" z( r% z/ W    游戏重启, 且重新载入ROM
' m: ?. c  v2 H
: b1 h, o" Y' s* t3 j4 F0 g7 f    snap xxx.png
: v# u4 h/ Y! q. w5 G& S2 c    截图为xxx.png' o& ]! \, w/ n4 O* ^: b8 f6 b
& [0 v' w2 o; H0 q
  
! \/ x) ~( F2 M4 B: r: {  7 ^. y0 S- f9 Y
  
7 p! u* H# X- O& N9 d热键:5 h+ Y; \5 I+ `8 S+ K6 G
    ~ 中断游戏: R4 E7 q4 D. f" m2 @2 I
    F5 运行游戏
! M" D+ i+ ~( Q0 E    F12 运行游戏且隐藏调试窗口
! U1 ~3 `' L& t) k" V1 N. f) J- u6 c    F11 步入, 单步执行, 会进入子程序& p9 N. @, E& u
    F10 步过, 单步执行, 不会进入子程序/ n/ g7 f- ^; {( I  t' O
    Shift+F11 执行到子程序返回9 y. z" U. q& b) ~4 q
    Ctrl+M 内存浏览窗口
7 d- o( J, u3 O& X0 V, N! s) f    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU- j9 U, U& s$ K0 [/ S- ?, `/ X

3 ]/ {& @( }6 C& F0 Q: {5 f( o6 @" W{:4_94:}
! x1 o8 E- m( d3 I+ W4 s" G7 b) ^, ?! }& [

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2556 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。# s# i" b, h; N4 r2 K5 x$ U8 V

# a. [# ^7 w( E) J% @( u) UPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东4 e' j4 g# x( l! F$ |
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-18 08:48

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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