EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
3 J1 O, p/ _$ V4 r! A7 F) F: x
很快速的整理我自己常用的指令2 @+ [" p" r# D/ a4 J

) F) P# Q9 Z! \3 h# v% l! Z! Z{:4_112:}
- t* C) |1 }" R! g7 {8 H, |4 R' J- F8 K
MAME DEBUG常用指令+ v2 U; ^2 X  v; P( F! m1 h. h
  e5 g4 y( y8 L( N+ T/ h! i; E
内存搜寻: ci, cn, cl
! ~. c. }4 C. ~% w6 b3 j( @. t4 ]6 Q' {! E. m$ j6 U
    ci. T, T/ M; e% D# o
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
: s; Y3 x; j: t" f9 a0 L; }. L$ f" m' M' \4 ]/ @# v+ E
    cn
, m3 O( s+ A8 Y7 x& N* l; x    搜寻指令5 b- b! `$ l) q: s# ^
    例子:
! V& @- r# k; U! [. [    cn eq,60
4 \. n1 U2 z; J4 V- a8 }  S    搜寻目标等于60 (十六进制)
  P5 t0 W, w+ x* v$ e! u7 _        ; L( o6 E; J0 ]3 Z* h
    cn eq,#96
6 K* A9 x. R+ S0 C- k    搜寻目标等于96 (十进制)7 c8 y- C$ P- ?" S" X9 |5 G

- J( h+ X2 I5 T8 u- K    cn eq* X. w3 |2 I1 I8 Y
    搜寻目标的数值没有变化
" ]+ E9 b& h" \5 X; y- ~
# Q2 C/ j( ]3 f9 s$ A8 v; e    cn ne
0 r) p  s/ U( b5 {    搜寻目标的数值有变化3 \0 R" s2 T& ~0 \
        8 r3 O- m) ^* X" q! J4 x, E8 W
    cn +; l2 z0 i6 F0 J' @8 ^( e
    搜寻目标的数值增加7 t2 z# [8 d8 [# S7 m- a& a. q
    : v$ e( t* e0 H- l; f6 g
    cn -* z4 ]$ \3 |5 ]
    搜寻目标的数值减少
( U) t6 s; f' {* F. ?' S        
" w# w/ \4 ~0 O" Q3 d    cn +,3
3 O5 a1 S# L% Y. w    搜寻目标的数值增加3 (十六进制)4 P& ]9 J; |4 @3 f
* m, H/ K( Y0 v
    cl
3 Y9 o' Z5 u  y$ @9 j- ^1 Q7 i" [# L0 {    列出所有搜寻结果
+ T) W) Z$ s# @( K3 a% ]& s+ X) o$ Y- F" T7 F
    cl xxx.txt
+ [2 W6 o# S' ~/ z/ s6 M* L    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
1 ^* @& d$ n6 A1 O" t# A& b1 w$ k+ g7 _5 I, N* T
   
0 a: s. L" w7 M  n- B& @内存监视点指令: wp, wplist, wpclear
+ O% ~! R% f4 o& ^    例子:
4 u/ g- b( ?( X# c4 s    wp 1234,1,r
" u; ?7 T' S; p  E$ F3 c6 f9 a8 j      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
% w1 B: b  Q4 V; s
; Q, W0 D, [7 x  h$ t! M4 G    wp 1234,2,w
. R0 s9 y5 w0 j1 o" j8 {      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2) |: |& I' X$ S0 }3 A5 f
     + v/ y0 R, v. o
    wp 1234,6,rw: ?; C% }7 ^/ J( \# {4 `
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6* `7 ^: g2 o0 @( }8 ~2 m

! v& Z% n7 Q: B+ R6 b    wp 23456,a,w,wpdata == 1
- R% c1 F& G* ~3 C1 |, L8 s, i* k/ t      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1- ~7 n4 Z3 ?! I7 U' T
  m1 T+ x, u7 z4 l) T# ~" z9 I
    wplist
; H4 @8 N* w& w! |4 s      列出所有监视点
5 j8 D4 l9 Z. J7 k1 e" C: w% I
' z8 q7 ~8 H* r3 r1 u    wpclear 3
2 j9 U; J. k# G2 i1 k      删除编号3的监视点
* B" H) l7 \5 r) F5 H
) {8 O  k9 D7 Y3 ~9 J1 I5 T5 l    wpclear% V7 [  N9 W+ H. i
      删除所有监视点
3 r/ m- V) P* P# V
8 F  P4 @* p& P+ Q" H# Z) @      ) A" y0 m' [% e' t& `

9 O, u% M4 Z& P2 c) J3 k! W% [* g程序断点指令: bp, bplist, bpclear' ?. M; l" K! i% F
    例子:
& ~, x: K( g$ P  F" S0 m% @    bp 1234
6 y7 I3 E# J$ y7 {5 n8 D7 e      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
0 [) Q9 O2 ]2 W) q
; ?& Q" |2 H5 x  `4 A2 J' Z    bp 23456,a0 == 0 && a1 == 0; r! l/ I1 b6 I" W+ ]8 v2 P
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
% r  @+ c2 z3 R$ K3 A8 |4 c6 ~* o- G6 k/ e' R8 w2 ~0 H, v% P
    bplist
8 o  {6 g2 b8 D/ r      列出所有断点/ G5 F1 E+ |4 I4 R" ]
6 p6 w) \; F/ C
    bpclear 3
+ N% H3 q# i* \' U      删除编号3的断点
2 x! X3 z" W0 B6 j" m" j$ u/ W4 g/ o5 V# F- [$ @$ ?
    bpclear# T4 r% G" m1 @  B
      删除所有断点
5 x4 U" V, X: J6 y
# c/ L7 f7 E- G. p. n# T      3 q* |' \9 c5 i  K' E, ~
      
, B. t% h# Q/ a5 ~) F! D2 P/ D跟蹤紀錄指令: trace. W* l/ k4 |7 j
    例子:
0 a3 p5 }1 t3 v' j/ p9 F8 e: H  ~. k    trace 01.txt
: t7 F$ E% ]/ _" ?' y7 ]5 Q    跟踪当前CPU运行的所有代码, 输出至文件01.txt
( N6 Q6 r9 G6 q/ e7 ^4 ~! L7 M+ s3 S5 j* h7 S9 u( A
    trace off
/ j% F: `( t  s: l    停止跟踪, 并且关闭文件
- \5 x- r+ q3 q) s& Z! {
8 R+ V& D% U" F  Y1 D$ Y, d" @! _    trace 01.txt,0& [) C' ]1 z4 @6 c) k# W  n1 D$ B
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt# n& X. Z/ h% ~& T) z$ D! F
( U2 _7 z( Q( \; ~5 \% p
    trace off,05 N/ t7 \% c+ y# b; V+ e
    停止跟踪编号为0的CPU, 并且关闭文件2 J3 h% K& P3 x, ~6 ~

( n& F3 X( `2 [- Y7 G( O    trace 01.txt,0,{tracelog "A=%02X ",a}
  E! f9 ]+ \; W; w! A    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
& E  j# ]) Z( ]- J) r4 \    并且在每一行的前面, 写上"A=a "
2 b. M& L$ T1 @: N0 p+ b    "A=%02X ",a为一个C语言printf函数常用的输出格式: ^$ k$ X( S3 o
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入- W- a& P2 j8 _6 d5 W" @
    X表示为大写十六进制数3 b% ~4 E8 w2 t, O: m9 O. r$ n5 @7 A

. p' T  d  ?6 K1 O( N* M5 `' M9 L7 D, `2 l# ^
0 N5 A  {3 V0 \$ R, r  [
内存直接写入指令: maincpu2 J8 {: B' W* _2 b
    格式为 maincpu.[][]@地址=数据9 Y# V. N+ K" A6 z( R
    第一个[]:
* |* Q  x; `! J$ p6 d& r    o 表示ROM地址8 y# k! N$ ]; U; n' h# e- G
    p 表示RAM地址  X3 l- j* @  [# [/ m' h2 l$ T8 k+ b

4 p! l9 z5 G* ]$ r+ A& H' O& S    第二个[]:# U4 v$ I) s! L; Z0 U: n2 r
    d 表示4字节9 i1 X1 p& T6 g: [  p7 I' r
    w 表示2字节: f$ h; E/ X( ]$ ]& v& j
    b 表示1字节# v: k) g& c' T3 m2 O8 I) Y
6 y2 u$ N. s  |  |( V6 l6 l% C
    例子:# Q" B3 y3 I: Q( ]  t
    maincpu.ob@1234=FF
0 \' I) r' b. J% W# f6 Z* v    在ROM地址1234处, 写入FF一个字节
8 {0 R& j+ M+ w' F
- l# |5 [' ^$ c, B, t5 {    maincpu.ow@1234=4E71( n! ^1 G  I0 D6 L
    在ROM地址1234处, 写入4E 71两个字节- T  u1 ^  L! k7 [; p# q

. t8 e8 d; d9 ?0 b# k    maincpu.od@1234=600A4E712 r/ p4 p: `+ D1 W/ O
    在ROM地址1234处, 写入60 0A 4E 71四个字节) D! e0 C2 q$ c9 d2 V

3 F9 x6 k+ B6 I8 {% o    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
; h8 |( k' b1 |( b4 |  M    . _. C! l9 {4 V" i* E
) R3 c. `( G( \+ v
其他:% _& _' f9 D2 ~* R& W9 H
    dasm 输出档案名,地址,长度, m' ^; J9 Y9 d% ~. y3 O. R
    输出程序的反汇编代码
9 J# y1 Z& w9 D) N* T2 v2 c    例子:
9 l& m; M+ ^& v3 Z* g    dasm 01.txt,0,1000004 I0 Q( }+ R9 j" G  V+ c3 g
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt. ]& ~  i6 k1 f" I7 z4 z

/ l3 |  T$ I5 ]    softreset. F$ F. v) j0 R8 c  |. k* Z
    游戏重启, 但不重新载入ROM
' }* V% M+ L1 l8 h% y- C
& y/ X2 ~! S$ q  H- w6 d& i    hardreset+ v) w9 s, O+ m9 G! l
    游戏重启, 且重新载入ROM# V. E( ?) [0 O$ @9 |
, j# q  e3 L4 f/ ?+ i0 @
    snap xxx.png: @: P* z+ w* `$ i9 ~( B! Q
    截图为xxx.png0 G8 d7 B+ N& e, A8 h0 L* ^- g
( W1 p" y9 O" y4 }- V. P: A- P
  ; ^5 U8 y( [! U8 o! y! Q8 [
  
) X. t5 ^$ z9 s$ v5 n  
. Z5 n8 W0 ?6 [! z. X) R热键:
/ t5 ]4 H! x$ Y  F  a7 k; g. `    ~ 中断游戏
; w8 [' u( R  v9 U    F5 运行游戏1 z! m6 ^. u9 F( n. C
    F12 运行游戏且隐藏调试窗口  R8 ?* r# r& D3 g
    F11 步入, 单步执行, 会进入子程序
, _1 u8 S5 t& w% a    F10 步过, 单步执行, 不会进入子程序/ ~8 X2 Q7 c( _7 L! @$ _
    Shift+F11 执行到子程序返回
" E4 L# Y+ f6 q$ S& U    Ctrl+M 内存浏览窗口5 E$ e7 D/ H" G+ ~3 b3 o; T
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
# s" t* C( P3 `. B( Q9 i
3 C' w( W" I9 V7 {( b3 K{:4_94:} 9 O) y% R. s# W) k9 R$ K6 d$ b

6 ~" p7 _; |9 G: |% h8 E4 x5 ?

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2589 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
0 i- Z3 ~% n- h0 }
! M. M2 J( Y$ @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 | 显示全部楼层
要详细些的东东
7 d& l) q' }' W0 g) p: R11111111111111

该用户从未签到

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

该用户从未签到

发表于 2013-6-19 19:43:21 | 显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-18 17:12 , Processed in 1.114258 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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