设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

欢迎注册EMU618社区论坛

您需要 登录 才可以下载或查看,没有账号?立即注册

×
6 C" C4 j+ c; ~4 m9 {) F8 g# ?
很快速的整理我自己常用的指令, P; t  l; Y5 Y5 _. Q1 i. F
, d* H7 Z  q& H5 ?3 c" R' g6 N/ a' n
{:4_112:}
  F+ z1 V$ _/ y& h4 ^- F; i7 j3 Z- P
) E8 u! F' q  Y7 r  h. |8 aMAME DEBUG常用指令( o1 M2 \: T4 a5 C: h

0 |, Z; l6 x  X4 u内存搜寻: ci, cn, cl3 C9 F# S  C7 [7 e/ S5 @3 Q
8 d' i" i; Q- X$ u2 }$ e
    ci6 o; ^# G5 D0 u$ o1 Y! N5 {
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
" R& ^! A( p3 F% x/ X; ]" `, E. `  m! N: g! h* |5 E+ m
    cn
; y7 ]: J. w# ~- O5 B+ P* ?- V    搜寻指令* E( e. i$ N1 j+ U' R- I  D
    例子:
# h+ [, n, t) O1 v, P    cn eq,60
8 v% a6 K* o$ R0 Z' s! k0 _* |$ U    搜寻目标等于60 (十六进制)
: D  `$ l2 E& ^. f" L        
  h  Z5 z5 G  [) x    cn eq,#96
/ d- Z1 y2 h/ b# C% |    搜寻目标等于96 (十进制)
! r8 \: H) K) J. L
# @* i8 a1 }. U; k" \' h    cn eq
5 n  u: g" x  t) z( J    搜寻目标的数值没有变化
9 `  y* d0 _( O
1 u% E% i* }9 Y+ P    cn ne( E7 V( h7 s/ {( P, u
    搜寻目标的数值有变化1 q3 g4 N& x  J. Q
        
/ A0 h0 n; a% i) x& d6 E# W    cn +
3 x: ^# W  I, t% @( z    搜寻目标的数值增加
. ]4 |+ z: l8 T) A! M  l   
; _& l8 B. |% X    cn -3 c8 S% Y6 E* r5 I+ A
    搜寻目标的数值减少
' @8 ^- s6 w/ o# N4 C4 Q; v        1 S; `( Q" D) B
    cn +,3
3 P& x- r* Q# ^: ]- k    搜寻目标的数值增加3 (十六进制)
5 @& h" G' `) U# P* t! T% w+ y$ j$ S5 _; _
    cl4 A- e4 d! x: s+ }6 X0 Q8 G
    列出所有搜寻结果
/ ?1 [$ \) z$ b5 P; G+ W' \. U6 V, V0 g
    cl xxx.txt
/ W) q6 C+ m5 i2 H4 K. U% Y    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
' K/ K8 w/ d* g" z) B/ P
, `- m/ u- }$ {% ^0 w/ T   
2 S( [  y' q8 k& h4 u+ @内存监视点指令: wp, wplist, wpclear
" F# {" h0 x3 I) M8 u3 R8 t  l    例子:
+ P8 u  @2 m! k8 A' P/ a    wp 1234,1,r9 j# R' X( |! h1 T; }: k
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1/ |; K$ `# _1 U: }2 T! H$ @
- c. f9 R3 [8 o% C  k$ T2 y
    wp 1234,2,w
4 M! K2 y' o& m, u      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
8 A; f1 F+ r3 t+ E( E9 a     + [9 x  @# @( y/ q/ e
    wp 1234,6,rw
3 n9 i/ c9 e  Q4 V: p1 c) U4 O      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
3 g: g+ N, u' O! K& _# M3 D" m' `
2 Q8 D: N5 B3 V- E7 Q    wp 23456,a,w,wpdata == 1" a% \' ]; O- Q4 A2 h9 P2 X
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1; I" e: d: v4 b6 d# N+ o. h

5 B+ Z& J% |/ O. q0 \    wplist
5 e: J9 F, x6 T0 t      列出所有监视点
8 M5 X. @% q( E7 n3 _
4 `" G8 s( w8 a* z2 I) _    wpclear 3& W# M  z" C7 D2 b0 g- `
      删除编号3的监视点6 |& m8 B" b" c. q, h5 H: o! N* k: |
' }  V/ g6 n% J4 g
    wpclear- E2 P/ D& x6 r" f2 Y8 _& Z/ E* E3 w' H
      删除所有监视点: _# c% |; s" j. T- ^% l

/ t* j, m0 l5 k1 p* Z4 B. D      
2 r5 @; J6 y5 D
( R- v6 z* o/ P5 ]3 s5 f0 j程序断点指令: bp, bplist, bpclear; h) l2 N: ?5 N* {$ a2 f
    例子:7 E. e6 j% V, Q( ~7 N
    bp 12343 ?5 ~1 L7 N; k; B; G. v
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
" f! O2 b9 A( }+ h( M1 ^
( P, t$ Q, U0 @# a7 z    bp 23456,a0 == 0 && a1 == 0% k4 P$ r5 L1 Y& u- N$ ]7 w6 _
      在地址23456下断, 且中断条件为a0等于0以及a1等于01 ?$ }  H6 k7 k' Q

( g1 B! \/ r) B8 R    bplist
8 E7 Z- y8 X6 O      列出所有断点$ C% a$ _- r. z8 F: P
2 }' [' b  P" T. V
    bpclear 3
% H. ^( h% t  U4 T7 V$ a      删除编号3的断点
2 a+ J- y% S# q7 F* _7 `$ f5 i6 q2 }, ]( l: A! n8 O
    bpclear
. Z! \% I+ h1 _9 p9 e1 A      删除所有断点- _2 E  D# e9 K6 P8 |

8 P) U* \2 k, N      
5 _+ E* d0 U4 O% Y, k2 {        E8 J3 y$ B& k" `8 P' D3 C
跟蹤紀錄指令: trace
2 ?; Y. Z# r, X# w5 R' F    例子:/ D& l: l2 u$ o, t! a
    trace 01.txt
7 Z8 G  n; K! J( u' p    跟踪当前CPU运行的所有代码, 输出至文件01.txt
; V; T" G$ C0 n3 q  V, r+ X, s4 i9 b
    trace off7 E) i- }$ B# m2 d9 A0 N6 k* @
    停止跟踪, 并且关闭文件4 }" q7 t$ o# l( R$ |, K
0 b1 l: S- y2 j1 \" W
    trace 01.txt,0$ R: n( Q5 ^  q4 _8 q' Q; r
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt6 Z6 B( @* l2 m  I6 I# z6 K4 A

! f: n1 t. C) K9 [6 y    trace off,0) d" E1 e1 o3 d$ c6 ]0 I5 c
    停止跟踪编号为0的CPU, 并且关闭文件0 |+ X+ ~2 Z  \6 ?0 h, q
! T3 H5 x2 U7 R$ M- B% {
    trace 01.txt,0,{tracelog "A=%02X ",a}
6 j% K! x' j; I- ?: e2 _7 Y    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
. w/ z* B& j- U3 }    并且在每一行的前面, 写上"A=a "
- o8 w, w% H; ^    "A=%02X ",a为一个C语言printf函数常用的输出格式
) ?1 S" g8 A, L2 [' M    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
: W6 F' c1 _* e' J/ C! b6 D    X表示为大写十六进制数
- |+ \8 a, z$ W5 o# \! s3 R0 E8 M4 o; g' Y& J6 `" u4 Q

' n: {6 O  r. e0 _) E( i" d
! u. a9 j0 e: _# u  R3 E内存直接写入指令: maincpu
+ T" V: ~7 i# Z+ Y4 p9 p3 R% p    格式为 maincpu.[][]@地址=数据
0 `# M1 t6 s1 o6 H2 N+ g0 w    第一个[]:
# A' Y+ i+ v; ^6 }    o 表示ROM地址
; h) d$ S% f6 _" V& C3 ?$ l( K# Z    p 表示RAM地址
8 {6 v7 n( O( y
( H/ X( w  w% o8 ?    第二个[]:& q5 q* l1 M. t% Q
    d 表示4字节( X* X4 _/ q+ N" L; l7 r+ M  X
    w 表示2字节( x* \" K" n' m: ?3 R+ h9 ]7 f
    b 表示1字节
/ _  o# J. @! @( @6 S' ]; B+ H/ s& t) j
    例子:
  g3 i# ~5 E" t1 z    maincpu.ob@1234=FF* u/ w% S1 v+ l
    在ROM地址1234处, 写入FF一个字节
: p, _; l0 c6 ]$ [( l! `9 K' V' d, L8 f) S! y
    maincpu.ow@1234=4E71! q+ g; i) T/ p& `& n
    在ROM地址1234处, 写入4E 71两个字节$ F- f" D& E) ~. ?# \

$ {3 B. ], s% A. C, T! T' y9 ^7 F    maincpu.od@1234=600A4E71
5 P* m* j9 t* B    在ROM地址1234处, 写入60 0A 4E 71四个字节9 V3 E; y* t+ W8 y* i- T7 \) \3 p

& P' s! b; ^3 M    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
2 t2 |+ M! N) L' G/ P% N2 O   
/ `9 w% l# E# j& p2 G0 s& }! _5 R4 j& X" b4 O5 m$ O+ r+ l
其他:
$ R+ }8 c* l7 d+ P5 k8 A    dasm 输出档案名,地址,长度5 T0 d# T& X( z
    输出程序的反汇编代码/ Y! I+ [5 P/ X; V4 L- [" F
    例子:+ g* W. G1 t" r+ T+ m" ^, i
    dasm 01.txt,0,100000+ n* T) t* H) ^* Y3 u) p/ O& P
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt3 h+ Q7 E% `8 Q" Q. j
. y) V7 }6 p8 f1 z  C( U
    softreset5 S$ M& L& E$ U5 I/ w
    游戏重启, 但不重新载入ROM
/ ]1 a! v. z( i# }; P% p5 a
; ~( `, O# S  c% x1 M0 ]+ ~+ H: j. ~    hardreset2 Y- _* L! `5 `
    游戏重启, 且重新载入ROM1 w) d  a7 P3 ?* q
; z( L" T/ e9 c& Y' O
    snap xxx.png
/ T2 m: p9 n- ]2 B    截图为xxx.png# Y% f2 X" Q3 H7 }4 d& ?+ `

; _: Q* ?7 U: w, Z* D2 j1 b  
4 c  M, d3 {. a4 z0 Q  
0 z# ~0 t- w1 G3 O0 M8 j7 Y. z  7 ^+ e7 V4 J6 q' Y9 c# S7 ~( S
热键:
3 x, q- h: J1 e1 y4 Q' x    ~ 中断游戏
7 s% O$ K  M9 x( v    F5 运行游戏
7 h/ b$ @% f, F2 a- W, E( R    F12 运行游戏且隐藏调试窗口' u+ v2 w0 f; s  |: f
    F11 步入, 单步执行, 会进入子程序
2 z  I4 D; D: l3 A& f2 t    F10 步过, 单步执行, 不会进入子程序; j0 B) z5 P) r
    Shift+F11 执行到子程序返回1 i; [& ~: Q- g" H7 A
    Ctrl+M 内存浏览窗口! p5 [1 I( B4 g7 z
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
0 p) a4 G1 v. y/ i- k6 G
# a/ s! P" p6 Y* p{:4_94:}
3 x' ^* G. h9 r; E' z0 z1 }9 c6 f, d5 s

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2550 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。. B$ d6 e9 U! @3 l4 n
: z3 s4 w: C# G! `5 b" |8 v7 T/ c
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 | 显示全部楼层
要详细些的东东
! W0 R' f1 G8 W- V11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋

GMT+8, 2026-3-11 09:38

Powered by Discuz!

© 2001-2026 Discuz! Team.

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