EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
4 \) `4 |. e& g* y; w! [1 U, V
很快速的整理我自己常用的指令" h0 |8 E8 v: k0 f* T; Y

& a3 r7 N, L$ s9 N8 A# ^{:4_112:} " U- z- n  ?/ Y; H
: h# ?& X5 g# }; B) _  w
MAME DEBUG常用指令( _! \  I- W6 W9 Q! \! D* W

) W% ?, ~7 ^( S  j5 M1 `) }* b内存搜寻: ci, cn, cl# F, N5 C* \( r7 Y* E8 X% Y( j
1 [3 Z  g8 j  H4 c' ?, K! t
    ci
6 O4 }: H% W2 t( p    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
" A( p( P* [; ^! Q5 {8 w! V: p) k; ~+ [+ A- h1 ]0 M& o
    cn0 T8 H- A- @  Y5 p! ?
    搜寻指令
: O2 o, u$ u* e/ u7 E, F5 X' N' _, n    例子:
+ A1 ?9 ^$ q8 `* y* v    cn eq,60
6 D$ J5 J: i- n* [7 V9 `    搜寻目标等于60 (十六进制)# C& a4 P8 Z" S( {7 {  f
        
# l3 p" i0 [# G* p4 V# ]4 [" r    cn eq,#96
9 t) R. U$ ~/ q2 X) l# M2 F* y0 d! N    搜寻目标等于96 (十进制)& a+ O8 X3 t# a9 b

' ?% Y6 R4 {( D; \) Q    cn eq* S5 u- |. A9 c5 m
    搜寻目标的数值没有变化6 ]& z1 M  t: h8 g% ?+ M+ {8 ^
; w# k* R1 \' L+ \9 z: V
    cn ne
' U1 u' {  H/ d) D: [7 a    搜寻目标的数值有变化' J' F  J- A5 t7 ^$ B! `
        
& c. f* P5 w, y. e3 q" `6 K    cn +
! u' l  S8 Y1 r4 \' g* a, v1 a    搜寻目标的数值增加5 w/ Q$ L+ G! {: G* q  h( }+ h
   
' x" @+ d) T# u! ]6 l3 Y    cn -8 w& j! G6 H: _4 \  Y' `
    搜寻目标的数值减少
' ?( q# `: h* c) ~- F, h        
: h; b$ h9 S$ m$ d! f/ Y    cn +,3- ^" `, s; I) H2 U& P2 _/ S
    搜寻目标的数值增加3 (十六进制)
& S/ _. z0 H2 o
& x1 w6 m; o& a9 @$ O! F1 E    cl
9 r8 ^! {" Z* B    列出所有搜寻结果2 g+ N. k* H1 }6 A! Q+ w3 [& \

6 r+ }3 K; B6 L, G$ J    cl xxx.txt8 b+ B- V2 [* b% j
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
' f( K/ W3 u. Z6 o, q( o. y  l5 D9 h9 g1 L/ t: g, y
   
8 R/ X* X. p$ z' M内存监视点指令: wp, wplist, wpclear
1 q+ ~$ h: c9 K* \    例子:
$ v3 k) ~/ `( E/ S7 Q! t    wp 1234,1,r& W* T5 m- `8 G, j/ F3 |. v
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度18 u: o5 _+ Z3 j3 t, P
+ `4 i- ~: G, H( |$ Z6 O
    wp 1234,2,w
0 j1 h" n$ C0 D0 o      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
. b3 X* v; M" Y, u) {/ W2 z; a     
2 J- f5 M$ P9 J% Z! a  c    wp 1234,6,rw
  V% h9 E4 t# [) [8 |      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
+ K# W9 z& [- U" Y1 |5 G. `" r2 m1 J, a) o# o
    wp 23456,a,w,wpdata == 1
/ |, e: F' t) H( [3 t. S6 j      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1" _( t( x  Y; j* B, T7 Q. ]
* t# D  p8 j* K( e) b( i
    wplist& x! f( M; ]* ^8 `
      列出所有监视点! q( ?  P3 F" {7 r  L
' M8 E" S( M9 z+ R. M! I
    wpclear 35 ?$ V- V( A7 q" Y% m2 e- h* T
      删除编号3的监视点0 z0 S! [" r8 \# z' I+ ^7 Z
" x. n6 l2 ~' C/ X; n: u1 X' F
    wpclear
, B- Y" U- D$ I: y4 |3 l' |      删除所有监视点
8 U1 c# @6 x$ P( n  w( X& E% M4 P- F8 p
      
6 g+ K1 H: W; r- q/ ~9 |7 |
1 ^0 x( E, T6 Y7 J程序断点指令: bp, bplist, bpclear
" D# u& S% {( X% Q& Z    例子:5 C! q. t) F: c5 j2 z5 E& E) W
    bp 1234# C$ m2 G2 a2 k2 e' R0 C
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断  y$ t, {6 U% y+ A8 t
: N6 g% q. n# b0 z- M
    bp 23456,a0 == 0 && a1 == 0
, [, x& ~% \% k0 \+ C3 N" K      在地址23456下断, 且中断条件为a0等于0以及a1等于07 a7 M( A/ p2 V7 p

8 f. X. [* W3 F- K9 z0 k. _    bplist1 q. A" r) u/ G" [) @! e
      列出所有断点- U1 Y8 `. z; I( Z* f. u

" |4 z2 s) q+ e0 p8 T# S    bpclear 3
; i5 Y) D# Y# @! z; w, G) Q4 U) u      删除编号3的断点
- s9 R: Z( w8 q) M3 p( h) `; V+ n' \
; e1 g( I/ y- V8 j' |    bpclear
" C' U" [; ^8 I6 D- T3 b) E      删除所有断点
1 z3 U0 m  C4 I5 _0 }, O1 Y
" e$ j% r, M2 n      
1 ]8 f- c! P, W2 ?/ t  u2 S      
' ]' R& ~9 U4 Y跟蹤紀錄指令: trace
; n1 k4 Y: Y" g+ |    例子:
, A7 L  l+ N  B1 [" ^# k    trace 01.txt) K/ {! ^, d! ?% F7 x9 z' l2 n
    跟踪当前CPU运行的所有代码, 输出至文件01.txt& {; G5 W/ C+ T4 w4 D
5 C  \, x2 F7 M2 N! f5 v
    trace off- l& S, Z6 J2 ^$ z
    停止跟踪, 并且关闭文件
* n* X9 V+ @& K1 `$ q
( t- ^6 i- V1 y3 l% j    trace 01.txt,01 X1 l; p8 D+ P" w0 o. v. E7 i6 y
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt& o* l1 _' w5 b& I% {. o) H

4 S$ `3 |# I# \8 @0 W    trace off,0
' ?# N$ E( g9 p5 g' ^% e    停止跟踪编号为0的CPU, 并且关闭文件: B, Q1 j" t# H% X$ G
( W8 a5 l0 R( Y
    trace 01.txt,0,{tracelog "A=%02X ",a}
7 I' N; d; y2 x  |6 m! ]    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
* V: W9 w  ?/ b    并且在每一行的前面, 写上"A=a "
& {$ Z3 j: I$ H6 s! c7 k    "A=%02X ",a为一个C语言printf函数常用的输出格式
+ l5 c7 S5 M/ Z- u4 U) X$ d9 V    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
) `( W) Y9 V) ?5 Y0 ]    X表示为大写十六进制数! L) l; P! ?4 D: c8 @5 O- z

( X0 Z4 A. L$ a
; }# r- s9 \4 Z6 u: H& i; z% R
7 s9 }+ B7 z2 o2 L, f8 Z' ?; `. Q: B内存直接写入指令: maincpu: b- o/ E% e. N3 z' L
    格式为 maincpu.[][]@地址=数据3 r0 v2 Z" \# o9 R/ `
    第一个[]:
! p- Z$ v& t5 m    o 表示ROM地址
. n0 p* |: h/ B5 D( p4 n1 K    p 表示RAM地址
9 i. c! q. N  {" o
8 X& v4 b1 m+ Z; w. X/ D/ m    第二个[]:# ]+ ?; v; Q2 M% ^7 I/ F0 J% }
    d 表示4字节) z4 {# k, r% k. m' D# m
    w 表示2字节# c4 S5 S9 j: p$ Y0 m/ _" T
    b 表示1字节
. w: m- N/ f  b, K" Y+ ]2 T% J/ s2 }4 ^# f& k! ?. w) ~% W
    例子:" o! I( S" Q( x) I  J$ v3 I4 J
    maincpu.ob@1234=FF& C  D  c( U: k
    在ROM地址1234处, 写入FF一个字节
9 i( }' o) u( ~' e/ `
4 S- U) q/ J7 ^3 h    maincpu.ow@1234=4E71- H! w  ~9 C" S
    在ROM地址1234处, 写入4E 71两个字节2 O3 P+ ?( X, A& P# j4 b% L
4 O: e! g6 A2 R( x: O; d
    maincpu.od@1234=600A4E71, Y& p0 [! d, E( h5 K! Z/ M) C8 G
    在ROM地址1234处, 写入60 0A 4E 71四个字节
2 {+ O, Z: }2 P4 {5 e: o, @( a9 y( }& I  X2 z+ S- X
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写% [# M/ p: [; w3 L: p8 k! ^
   
" c$ [: A: J+ Z2 n
# [4 `' L2 x" D% r+ M0 C5 i6 Y其他:
7 M; S, X2 V( M* k, o9 m4 b    dasm 输出档案名,地址,长度- a- u% d$ J1 ?$ V
    输出程序的反汇编代码/ P! x4 r9 Y$ B( k4 p# n+ M
    例子:
$ J1 w1 r0 F8 z8 N/ A' p* j0 k4 C    dasm 01.txt,0,100000. J" r0 U5 P; ^! }% Y: N9 U
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt5 s4 q' m5 q% H+ o- _

' ~" D! Y5 W& D- N5 [( ^    softreset& c! n3 |* T8 G, W6 Q
    游戏重启, 但不重新载入ROM, c9 G! F( u# n

( i  _8 v2 e( a" R    hardreset$ R# F. R# S/ V
    游戏重启, 且重新载入ROM2 I$ D* \3 \  R
3 G: W: g) p# v/ x  E
    snap xxx.png
: z3 [9 ?! p) P    截图为xxx.png
' W- D; I7 o& `/ ]. o
- p  u/ s+ H  {  
# f, O% ]& l0 j  
4 D" y0 `* V$ i, Y  
, h4 |4 {0 ]; Z& J4 A# S热键:
4 Y3 L+ s) O6 A5 z    ~ 中断游戏
, @, E6 a+ o4 O, V# S: M- Q2 A    F5 运行游戏
3 [4 p1 L: D! o* U' k: h    F12 运行游戏且隐藏调试窗口8 t* Q5 \6 Q8 B% G
    F11 步入, 单步执行, 会进入子程序1 A: N: ]( b+ E8 ~
    F10 步过, 单步执行, 不会进入子程序  s3 _, Y$ _1 n+ |. w
    Shift+F11 执行到子程序返回6 S. z  s! b1 b4 Z' ^$ J$ w
    Ctrl+M 内存浏览窗口; s/ g; p9 [$ U$ v, h
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
0 f9 W/ y9 r, ]7 n. x  h2 R- Y6 P8 U! Z
{:4_94:} 3 H; x% ?- f9 |' l) H& O

( j* w  t1 h  P- J

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2587 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
9 O* c: @2 H! X' d1 M4 T$ t9 Y& \" `7 d5 Z' i+ A  x2 m
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 | 显示全部楼层
要详细些的东东
" m. ~6 k1 b9 T  t4 K" Q; ]4 n11111111111111

该用户从未签到

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

该用户从未签到

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

本版积分规则

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

GMT+8, 2026-1-2 00:20 , Processed in 1.072266 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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