设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

' `. q: E4 h; t很快速的整理我自己常用的指令+ t! u4 I; L5 l1 u3 W5 x
. U4 C& Y8 K+ [7 y8 I
{:4_112:}
) V' f( a2 K) o; d1 Y! ^4 n
9 s' c( N+ P( E8 u  h' WMAME DEBUG常用指令$ w* u$ `8 d, ]4 n+ Z( f" o( O* R
6 p3 [7 k' S! p- w$ a6 A
内存搜寻: ci, cn, cl4 @* d7 h- \5 n' m) H. @: D: L

/ F7 K6 X2 W! C' n1 T/ H, G3 `    ci
' g( w* b) Y7 A) ?2 y3 [" ?    搜寻任务初始化, 每次搜寻一开始一定要输入这指令  s6 L6 i$ N! _$ j& r( E

& D# w: ]6 \- b    cn' a; J3 k. l& `$ h5 U
    搜寻指令
# @0 d  y* T4 e! m6 `3 N7 p9 [( [    例子:1 b% D/ d1 W! k2 {5 N# a; ?
    cn eq,602 r" V- |0 }5 n: P  O
    搜寻目标等于60 (十六进制)' l- y: c; W5 i% e& I4 d
        3 K" c9 F3 Q1 r
    cn eq,#96
/ k8 ~( w+ F+ h! E& ?    搜寻目标等于96 (十进制)
5 h- V/ a- l, i) Y0 l/ \/ i) {
, u. c/ b1 Z$ B4 r) C" a% @    cn eq
  |1 k& o' m) q' H' b* f    搜寻目标的数值没有变化- X2 |5 S! t$ K; i

' C; |! l6 m1 Q) j% c+ D4 B    cn ne
' W8 K  D1 S8 W: Y" b) i    搜寻目标的数值有变化
. E5 K0 c8 B& Z* ]$ e$ r        
2 S% V2 x0 k& @% W1 x    cn +* c6 o7 M# V* i. M6 i
    搜寻目标的数值增加& h/ ^* V' x0 ^7 S
   
! }7 ^% S2 M- e' v" ~; v, y9 T    cn -
! ?$ Z$ ]6 ^# [' _7 p0 G2 q. R    搜寻目标的数值减少7 L  x$ |" U2 m* l  u
        
. j; f& q0 I2 l8 P! _+ l    cn +,3* x* S' i* ~, u/ U' |3 _/ H
    搜寻目标的数值增加3 (十六进制)/ I: q4 U+ x/ v" j
3 r/ f: {% P: O' S
    cl
& \: W' o) ^$ U( n( s+ I* j1 d. `    列出所有搜寻结果+ R' K( ^# N8 k  E0 P3 U

! p& R( x/ ^! k6 a" z' ~# D    cl xxx.txt
$ ^8 [: ]5 @( u' N    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
) }( X7 }. H* R
6 s/ P9 r" }! _+ D5 v) h      t0 h6 t4 y0 x8 t
内存监视点指令: wp, wplist, wpclear
( f2 d- K5 O% k    例子:/ I2 `+ g& J. D  [. ~7 q2 W
    wp 1234,1,r
" k0 ]6 n5 g! _& I) g      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度10 H  t/ S& a: B' _; ]

' Z( h2 E# U6 i    wp 1234,2,w
& h" g) g9 }5 J2 I3 t" G# b' _      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
' X  x  S+ N  g$ J% ]% F     
' {8 m0 P$ f6 C    wp 1234,6,rw$ S3 m8 x7 p- H  i" ^+ Y" C
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
5 r2 G( D( I0 Q0 o# v3 ~* F
( |8 `9 b8 V% q1 m* M/ v  o, F- f+ ]    wp 23456,a,w,wpdata == 1
, ^# p. d" v1 Z4 X      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
8 Z" c1 R5 R: w2 P: n/ ^& t
& X$ W, M4 \4 t5 T    wplist
6 Z: v. M3 W8 f! \2 h' D4 ]      列出所有监视点0 X# [, |# u) l1 q( b4 @

# `- Z) R+ u2 a8 A/ U8 ~    wpclear 3" C- ?3 d& }: b4 k9 p  V- d
      删除编号3的监视点
. n/ y. G) \; x8 T- T7 F9 u9 t( u' G0 X
    wpclear
$ t8 t5 j, W! T6 K4 j      删除所有监视点. I2 t3 ^5 y3 X8 C. W( B& \
% t- X* R( D2 @& v) m
      
1 r8 l' y0 n- o. p0 h9 A
1 L8 {1 `# p1 e$ j程序断点指令: bp, bplist, bpclear
- }' B. K. n0 a, h  u6 k    例子:
: K$ Q" v! f9 p9 u/ o    bp 1234. J( d7 c# C' f( m3 ^4 k5 w
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断# G  C3 @3 Q3 A. I2 b5 ~1 e$ U

$ d, C0 h3 b9 Y" \9 `    bp 23456,a0 == 0 && a1 == 06 f$ W% a+ H  s. d+ P' `5 s
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
1 N* p# o$ _7 C/ T& H7 J( i, M1 L, U& J$ K' o! O, J
    bplist
8 n5 G$ F& t- U! S' ^      列出所有断点
8 m4 ~& B5 A6 e! d2 e& u, M8 T% M: U6 ~5 O. i
    bpclear 3. b3 K3 O( ~* T9 n
      删除编号3的断点% ?9 W! o, Q  f, }3 T7 @

) c, O7 L# }% V3 X1 C, n    bpclear
  Q$ Y- u! R! F0 _! m# s      删除所有断点5 A0 g$ u+ b! ^$ [0 o& k4 p) ~

5 N& K. u, B  v      
2 X1 H9 M  s& |2 s% J      
8 |* x. Y4 G. u4 l" J5 F* q' ^7 G1 I跟蹤紀錄指令: trace
" q$ L1 S3 ?$ K5 \    例子:
; g* w4 u& ^! U    trace 01.txt# w! v  ]; }& r, B+ A! h' T7 P
    跟踪当前CPU运行的所有代码, 输出至文件01.txt# N/ {* ^/ C$ @% W8 s- F0 m+ v6 i
1 H2 ?' o% k8 M& F! c# ]7 p4 ?
    trace off; P9 _6 M4 Z- |( f! E0 ^1 N
    停止跟踪, 并且关闭文件
- E3 f1 ^9 T* m- t9 ~) y. [8 B  E& g( W$ \; A" N
    trace 01.txt,07 I/ n1 u( Z$ e' ]/ l* `- i( o
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
% o* u) V/ ~6 c( [& ^. R6 A' C5 j4 i# D- d* V
    trace off,0  g) ^8 |  n( ^! E
    停止跟踪编号为0的CPU, 并且关闭文件
) t) Y; n! q- t& O; [  {5 B2 @. `- D1 e' c! z! ]/ V
    trace 01.txt,0,{tracelog "A=%02X ",a}
9 H6 a% G6 C! ]& p* j, {& V    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt 0 w5 X9 A6 z$ {/ \: J. M% E9 B7 N/ S4 s
    并且在每一行的前面, 写上"A=a "
4 F$ b& |1 m6 j0 v& ^    "A=%02X ",a为一个C语言printf函数常用的输出格式6 e) t& m- c" A% H  q9 c
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
/ s8 m, J! Q0 ?* Q    X表示为大写十六进制数" J& n4 p% f3 I: I' T5 ~
; R( S9 J* P" E

6 g) h2 w' r4 p% M7 ?4 a4 b: v7 m# v
内存直接写入指令: maincpu
. ~5 a6 T7 j7 b7 n8 R4 u+ x9 N    格式为 maincpu.[][]@地址=数据
8 D9 Q6 O6 u9 o* X) H    第一个[]:. ]3 _5 z# @/ Z  K0 b/ U
    o 表示ROM地址
/ B. O! u9 j) b. t9 W" p    p 表示RAM地址- s- C! _1 [5 X$ J7 O7 B' j* s
4 b- {' s9 ]$ C7 r' {: v
    第二个[]:
1 P1 v1 F! E& P) O9 v% M( r    d 表示4字节, K3 @, S* B) A0 m) X1 J1 C6 O3 F
    w 表示2字节
) L) O* x, j, K* u    b 表示1字节
- A6 C7 p" o, h0 M
  j9 _: p3 s; n    例子:9 F$ R2 j  G- N# T% E
    maincpu.ob@1234=FF
) m7 Q" C4 L4 R6 U5 {    在ROM地址1234处, 写入FF一个字节
8 L; M  u6 t' E  [+ q1 f+ B; T/ N+ F7 b8 ^
    maincpu.ow@1234=4E716 a) J( ?# ~1 A1 G" J+ V' w) q5 Q
    在ROM地址1234处, 写入4E 71两个字节* U# Z2 B4 P" b+ V
1 x4 _- ~3 Q) r
    maincpu.od@1234=600A4E71
! `7 l: r  p$ b5 I3 X' o( c    在ROM地址1234处, 写入60 0A 4E 71四个字节9 q. }' T* K. c" S4 _% R

. p0 ~7 G0 |+ l0 E$ U9 L+ v# ]    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写" T& R9 ]; J2 n: s" E  z1 [
    / k. w, J1 Y% `5 j2 _6 e
% ?: H- r' T# R: z
其他:" B2 G. T9 H" Q  k& C3 E
    dasm 输出档案名,地址,长度
" H4 b# Q/ b" }    输出程序的反汇编代码$ Q8 R/ y- K" g9 o
    例子:
; _0 c4 f, A6 b3 C3 V- z8 ?* n    dasm 01.txt,0,100000, y( {0 X; I! T
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
1 G& @5 R) a( f3 p  Q) L9 z) W$ m4 d2 P- N2 U8 s2 \$ |( o4 w
    softreset" s! c+ [6 t, E1 H# ?
    游戏重启, 但不重新载入ROM
7 v  J2 w) d8 U5 ?; u2 ~7 E  Y
7 Z5 _1 N$ C/ ~/ t* s    hardreset
: m* q' r( K+ l) I. T8 l/ f    游戏重启, 且重新载入ROM
# o) h4 U7 V1 r. N! c9 b7 h6 H8 w
. z5 z4 \& b8 G6 t    snap xxx.png
( W* A  A  ?0 I+ s  c" N: B$ F    截图为xxx.png; v' P: H! B/ ^6 M0 G2 l  |
3 Z) A$ L1 A5 ]# U
  , f2 v4 j% }7 j
  1 M  @) y* V% D# x8 [/ K. M! I
  
  J9 ^+ {; m2 {2 S. }热键:
" }4 C: E  W6 G4 H5 K% ~! \. l    ~ 中断游戏" B) D! r" K! S( c0 ^
    F5 运行游戏
5 {9 ]. S/ @+ }  m- n    F12 运行游戏且隐藏调试窗口
( N2 q9 n6 ~6 Y) g6 Y( w% z4 G    F11 步入, 单步执行, 会进入子程序
8 T* _. N" S4 x    F10 步过, 单步执行, 不会进入子程序
6 Y  |& E6 D" i) W    Shift+F11 执行到子程序返回2 P' M7 o  t$ j4 M9 N! ]. Q. s
    Ctrl+M 内存浏览窗口2 @# W* ^) f6 H
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
! C3 Z/ H9 C. ]* n6 ]! w% @: Z2 C; k3 K  J
{:4_94:} . e; t& P5 Z6 F' o% Y' z

( V/ s% J& a7 g/ i% `( \0 i3 L

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2556 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。1 c0 z4 Y: f2 N* @2 m5 T
7 W1 n, g* e& _' S, c0 b2 R
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 | 显示全部楼层
要详细些的东东! F( ^+ N) c3 d- M7 U
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-15 20:45

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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