EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
/ e1 W8 t% K3 Y% I$ [5 }
很快速的整理我自己常用的指令; c/ _0 F9 l% c, N' y$ V* T. N8 ]
! H0 ?1 F6 r2 E2 p) \
{:4_112:}
9 {% V7 L7 ~; w) ?$ _% |( a
! Q1 D  b& F5 c# X2 k# JMAME DEBUG常用指令
3 y* U) f& S0 ?& m; y$ r3 @% I( |$ Y4 Y3 p3 e7 D
内存搜寻: ci, cn, cl
% e0 ]0 I- O: l0 ]* E# `7 O& w2 m' E' e
    ci
) A" W) a* |* j( W& X; O$ g4 r& Y    搜寻任务初始化, 每次搜寻一开始一定要输入这指令" i5 P9 @, \; u" `* p

9 B* a; q2 q# e" o, @* P    cn& I8 }, l/ Z( ]3 i- |
    搜寻指令
6 Z3 D$ }9 x8 Q    例子:) {+ C3 G9 K5 h  t# D/ }- e- A& H
    cn eq,60
7 |% G( k9 V2 |3 [; j9 e% A    搜寻目标等于60 (十六进制)
# H0 {# ^: y0 J7 ^2 M9 h0 o; B        
; J1 d7 `& L# ~- O$ m3 }5 K    cn eq,#967 A4 r8 ~. ^( g9 _" w% a- l4 C
    搜寻目标等于96 (十进制)6 g' O! @. L8 Z0 l4 u, ~

' Y# `' d+ ~: q9 E( Y    cn eq" W8 m* Y  \8 [* s, X  ?
    搜寻目标的数值没有变化2 I, F- Q, h6 H; X, C" {" x) S+ p

; _5 o0 @6 ]  J3 G' H, ^    cn ne' A. M" I- D# E6 n1 `6 Z
    搜寻目标的数值有变化# Q$ A7 l% Y9 ^5 N
        ! y( `: U# o) Z) e$ ]
    cn +
3 n& l2 e9 K  D    搜寻目标的数值增加
# w7 C- E' U; K2 u! o% n2 {* e$ [; r, n    0 C. Z0 Z6 u* k0 {/ h, K- B4 j
    cn -" u3 m. C# G2 y3 a
    搜寻目标的数值减少! }4 C9 ?; `- {" b2 j
        
' ^2 j# u8 v- R    cn +,37 j! f( X: M- `, O" Q
    搜寻目标的数值增加3 (十六进制)! s* Q4 [% m4 A. n. r

# l: F3 R$ G) [7 F' @    cl
7 K. K) a% a8 S$ O( f8 X    列出所有搜寻结果
% H2 J9 u' R: d: r4 g
" l% \0 ~! b9 h5 I/ G$ n    cl xxx.txt
( ?8 F2 B. y+ y3 i) M    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
! p; D/ k, i6 |
% K& v! n" [" j) o: y; J, c    " d! I9 i. A% b& C% R3 E
内存监视点指令: wp, wplist, wpclear, C! e  k# B% l9 ~7 Y( Z# Q# u
    例子:
) X5 y0 h& g. d/ O  A* ^% s    wp 1234,1,r! q" \! n# @" J. J6 ]4 q2 C
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1) Q; S) ?8 w; f
* [, h  k: e1 T9 E2 n0 @4 K
    wp 1234,2,w
2 [& D/ d# ]% s  e      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
, _+ V; Y7 `+ ^: `7 R3 o/ p& K/ q' n2 \     ! ~) s9 Y$ _3 |2 a5 W
    wp 1234,6,rw
- ]4 A6 g9 t8 J8 x      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6) ^' ?. Z: s2 k+ |. E& `

, e, {& L5 p' j! |+ @. p    wp 23456,a,w,wpdata == 1
$ U5 v$ f4 B% T& k/ m      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1- l! }& p* C! I- T* q
( r' b4 Z# V/ j7 q
    wplist
1 Y! f( E. E* O5 x  S5 I7 _8 O      列出所有监视点
( Q: _1 Q, s5 M$ ^
5 _( F' \: e8 w    wpclear 3
3 \) }: l4 p# [# ^" |/ F      删除编号3的监视点& s* S# |! v8 e/ D. }
! [+ \" T- X& [# I# z3 u
    wpclear) c# C; M. t* B% s3 L: I8 i( @
      删除所有监视点
1 a6 o& c4 R, m8 u+ ]# P1 X9 E6 j1 d# {  _2 m: t- v
      
, O5 g4 U1 ]( {# D2 _- \2 e# t6 d" a/ F
程序断点指令: bp, bplist, bpclear
) h% }4 }+ [% i9 R) l    例子:. h6 `! b0 y" i9 K
    bp 1234
  a5 D, P$ Y' P  ?* o" c2 G$ E" Y6 h      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
: C: d% g% ~. W5 j1 T' ]) s8 J  c, h# h* |! s
    bp 23456,a0 == 0 && a1 == 0
8 t9 Z3 ~0 w% |7 i3 D/ _4 D      在地址23456下断, 且中断条件为a0等于0以及a1等于0
* }& L' @0 z1 v$ A5 B5 _
) G+ x* g8 n' B/ j6 v9 V    bplist
9 M# R) Z# c0 q: r. E      列出所有断点
4 X. K! h2 _+ e7 V  P; \/ o1 W9 O- v+ j1 @5 d7 f- ?! s2 r3 s
    bpclear 36 v( P2 h( y; z$ e, R' j$ S
      删除编号3的断点
  `  J$ P( G( C2 ^: K; h7 z% g
( l' w0 ^+ l( e1 H    bpclear
& H! Y0 m5 \( Z5 V! A9 W6 d' j. |      删除所有断点
5 R& }" e) q/ P' N+ L, O) N& B9 ]7 P* l
      
0 p% V: U$ ^+ A7 t: B6 H, a; u      
( d4 e- x# {7 J: |跟蹤紀錄指令: trace
/ @2 L' v* F/ E1 s0 @; Q# R; V    例子:" p) s, s) y; {" U: l3 ?
    trace 01.txt
4 b2 X2 H0 ~8 ~( b& R    跟踪当前CPU运行的所有代码, 输出至文件01.txt. n4 O4 D& y5 s# U6 J9 Q
: W. i# i, S8 G4 {8 B' |. y- \
    trace off1 d% ?! t6 [6 |$ P" B  V7 Y8 O( D
    停止跟踪, 并且关闭文件
( ?+ D5 e8 i7 |$ t3 Y% P! n7 A! ^, ]8 m- R
    trace 01.txt,0
7 Y6 A) a  ~; ~- P    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt' Y& m$ _4 v2 U
  `8 K. G" B" Q( A! [: V( E
    trace off,0: y$ ^( L9 e9 q0 o1 b
    停止跟踪编号为0的CPU, 并且关闭文件, d: B' R& [* Y7 V5 l
7 P' ~7 U- [4 a& W1 n# s' b; \  z; i
    trace 01.txt,0,{tracelog "A=%02X ",a}
/ {" G* c9 O; B1 q    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt 0 ~4 B) _6 T, R' Y5 \. k) L1 [
    并且在每一行的前面, 写上"A=a "! `1 h7 h7 Q, H7 {
    "A=%02X ",a为一个C语言printf函数常用的输出格式, b2 K; d1 W5 u  U
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入: J4 j8 u  [7 o; I
    X表示为大写十六进制数& y# V0 }' N2 s2 S2 E! O

# Y! A) z! u" N* S: W  c7 k- W* u: d" N% x  G( u3 c2 p
/ }9 O! g: ^- _5 z4 d* g, q
内存直接写入指令: maincpu/ I$ w, Y& V# S0 e5 K6 S
    格式为 maincpu.[][]@地址=数据) V# o2 x' l' J2 F9 u+ S2 o& H
    第一个[]:
; v3 q0 Y# Y  A1 x8 ?0 x    o 表示ROM地址6 j+ ~% T" o- y; j. K/ f
    p 表示RAM地址
4 u. P/ R7 k0 p( L! m6 B. m  E. S9 z, s4 _' x
    第二个[]:
" v( g( w  `- d/ {6 c    d 表示4字节
. F4 ]: |1 |# @$ h5 J# @    w 表示2字节$ p/ Q# G0 E; h# l9 B1 W
    b 表示1字节
% M: V$ Q3 L9 V5 P9 A. r' ~) x* b" V: y# S$ w; j, u/ f
    例子:
) a! P& k0 M# R! k    maincpu.ob@1234=FF
4 y) P. a: i# N( B! m    在ROM地址1234处, 写入FF一个字节
, H7 H5 d! c5 ?
# Z3 e3 |- x) ]- G' ^6 N& J# f1 O    maincpu.ow@1234=4E71; P! U4 \0 v) O
    在ROM地址1234处, 写入4E 71两个字节1 J& @5 R* H" i1 z4 t
% {" b- v9 T' Z1 i8 ]
    maincpu.od@1234=600A4E71
1 Y* O5 c3 N' F    在ROM地址1234处, 写入60 0A 4E 71四个字节
4 E, r3 U. w& u: f2 ]& ]. N  v" s3 G: O0 A9 d: J. u
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写6 S4 O6 l+ U/ {5 |* `" _4 Y& E
   
2 w/ I* @. r* c  u- ?' g, w6 ~4 u8 ]% }( g
其他:$ b' G8 _6 }( A- W; @
    dasm 输出档案名,地址,长度
" }+ a$ @. h; [2 X$ A3 q- n0 Z    输出程序的反汇编代码
! ~( t6 z6 Y# {# E    例子:
6 D3 E  |+ C0 Y* f- d) t% |- h    dasm 01.txt,0,100000- m0 E4 F$ J* F7 d& a$ Y. O
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
. v: z7 e" N9 E: _) v& c
; c/ |4 t. W3 p# w: B- o    softreset
: {1 E& p& K2 s6 m2 Z( m  R4 p    游戏重启, 但不重新载入ROM/ A& f4 I# x1 l* H9 G% _
2 K6 w* i* U( n, E+ E) S- ^
    hardreset
6 L+ G/ y! E! |    游戏重启, 且重新载入ROM$ [/ @+ l. G) W% S, c
+ G$ Q+ z; l, L/ C
    snap xxx.png
8 }: i; ]1 G2 X- F, e+ x    截图为xxx.png8 C) n  U7 h4 Y* n. b, \

9 s" _7 g# d! X) [8 ~1 x$ `3 f  & o; n& Y- h: \( v" Z8 _
  
- n! Z# H3 M- H  % g: Q7 `# u7 E2 g+ u9 A5 ]/ {( n
热键:
: D' r' }* j1 i    ~ 中断游戏8 s5 W* M$ V  N0 |
    F5 运行游戏6 o7 n( v. N+ w1 m( i! R) j# t4 d0 f
    F12 运行游戏且隐藏调试窗口) `: v: J, y7 a" Y/ Y" Q+ Z' g+ Q  O
    F11 步入, 单步执行, 会进入子程序# @! s5 h7 `# J# W
    F10 步过, 单步执行, 不会进入子程序! B) V: e: c2 \
    Shift+F11 执行到子程序返回
% t% {, h7 |' d7 h1 P    Ctrl+M 内存浏览窗口
* v  S* r" Y, y. I    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
! m8 s5 j1 L% u4 U9 U' q: w% z$ g% e$ `
{:4_94:}
- b1 y/ g5 E4 v# K; V
8 c% r5 B: U& r

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2579 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。0 y& F2 G( y9 o8 ~! t
( l  p) M$ w, F' r! i
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 | 显示全部楼层
要详细些的东东
1 ^" g7 {  O) `& H1 v; `* ^11111111111111

该用户从未签到

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

该用户从未签到

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

本版积分规则

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

GMT+8, 2025-11-8 09:46 , Processed in 1.113282 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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