EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

1 A! Y' T" P2 r3 d8 g很快速的整理我自己常用的指令: l( v! q! G* F# G
% g3 ^: K$ ~0 _$ m2 |4 K/ ]
{:4_112:} ( }5 n0 p' i9 X) B; l
' u! T0 \9 q+ B+ {
MAME DEBUG常用指令( h' \2 e3 g, B' ^; R
0 Z1 Q0 `: f( |2 o5 R/ P
内存搜寻: ci, cn, cl
# z  z2 P4 Z$ m5 R% z( j: \, N4 U6 j1 Z6 E0 o8 |1 n
    ci6 B4 B9 N6 U# ]
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
3 R6 s/ M4 J  n# f8 q5 ^
7 J+ ~6 `% v+ G    cn
! O; y$ m0 h/ @" t    搜寻指令, C) W) g. Z7 [& [9 _2 W
    例子:  A+ b. N# y/ q5 F+ B3 [
    cn eq,60
+ @5 _% k/ S+ j/ J' ?    搜寻目标等于60 (十六进制)
1 O- ]& B4 M9 ~5 D        
; \( r% ]) D4 \6 S. q  L! q7 `- c    cn eq,#96- k* P/ @3 D7 {! e  F4 {7 Y" c
    搜寻目标等于96 (十进制)" ^) x  P  ~* ~: u% n( k
9 Q- e2 D, P$ T) W2 D) n9 }) ]
    cn eq. b) q. Z9 P% u6 s3 p' S# y- i
    搜寻目标的数值没有变化7 w  P* |% f+ I1 e; @9 t# a

5 f. U  Z, c6 C8 H    cn ne, d. u: b8 @. b
    搜寻目标的数值有变化" p% H# }2 c/ j" N3 P
        # }: J0 p' X' S8 G6 ^
    cn +
' ^) d9 n* E$ k: S1 h* ~    搜寻目标的数值增加
: R% A4 B' a0 S/ [! p   
; K+ i) z; }% V, b1 g. Z    cn -
2 ^" M( k: K7 b    搜寻目标的数值减少
8 N5 C2 N) Q/ }        
1 o6 `" j' L% L. i, l4 ]& ?+ \    cn +,30 X# }$ e# _7 E
    搜寻目标的数值增加3 (十六进制). Q( d# ~+ U5 W9 s
- F( F  w- q# w  \- Q$ S0 t: D+ V
    cl7 `: a  r4 o9 D4 @2 T: H$ ]6 F
    列出所有搜寻结果
( n# s, }7 Z% }' L' }8 P; d( h4 N. X. @- Z
    cl xxx.txt/ ]  I% F" [5 c% q) `
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
1 h  ?0 @3 s9 Z
7 V" Y' K2 @6 C% C   
/ b3 I9 c# X. w2 z# `/ ?: X( B& M% Z内存监视点指令: wp, wplist, wpclear
8 u% c' @0 q4 d    例子:
9 k9 D3 T; c- }! Q2 e2 f: S    wp 1234,1,r: g2 o1 }6 |' J# X3 B. i
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
! C3 ^+ C( F! q8 Z
9 _/ O7 A1 r: V    wp 1234,2,w! H) h9 W$ y5 ^
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2  c6 o* z' n4 b( k
     
! M* O$ G3 K5 w) L# D    wp 1234,6,rw. ^. Q- M# t8 n/ T
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度66 H+ h5 R) A: X' S1 H' ^
( \! ?5 {- p7 O% C2 U( t
    wp 23456,a,w,wpdata == 1
/ z$ k. }: L* j      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
# o- g" N2 E9 N- Z- n1 o8 p( s% G  W3 d; Y5 D) f
    wplist
6 ]. z0 C9 V. r3 k% V0 k8 [      列出所有监视点
; K' [0 x, D- P- ^( {
( a, n* c: W# C4 H5 ^$ V    wpclear 34 b5 o: N# `) D, Z6 T& K( |
      删除编号3的监视点
- E- l6 d/ A0 g  @- p2 ]* T- k9 Z( g# h7 i3 h3 q
    wpclear
, ^# B* g8 q3 B# I      删除所有监视点7 `  k1 O6 _! x+ \6 x* D; `# S

2 d: [$ J6 U2 r      # e, m$ o/ g. y+ O1 L2 F7 P2 R% L
8 ~5 K0 Y8 k% v& v8 n
程序断点指令: bp, bplist, bpclear2 `0 a! N9 r( U' _) S  o% H0 F
    例子:$ [9 A; x' ^+ N; f7 p
    bp 1234/ s. d6 e+ c7 R% Y2 g8 L! F( [
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断, e5 j2 E, ]  K% M4 r2 `7 y, ~
$ n) ?& D5 v# N- C  D4 K& U- F
    bp 23456,a0 == 0 && a1 == 09 G/ {5 c# T0 O# o7 N: ?7 |
      在地址23456下断, 且中断条件为a0等于0以及a1等于0: H5 f* W: \* O

1 C* V! V7 V+ [" [! g6 f8 [0 W    bplist
+ i' }8 n$ c3 E& T      列出所有断点
4 Y& ?1 U% T8 y' ~7 c) n; i: X' m0 e( i4 S
    bpclear 3
2 G& O* g8 w1 C      删除编号3的断点% S; A( R0 P9 ]) Y' q
* v- F1 a3 X* l0 d) V
    bpclear; T; L  ^3 p+ P
      删除所有断点
3 I$ ], [- n8 O/ t. h
+ L  j# D8 s" a7 U% I1 L1 z      ) S- s; u' o8 Q+ f9 N& S  j
      
* W- L! C  e8 e0 T  k跟蹤紀錄指令: trace$ g- v: M: d0 F: D+ W
    例子:# g4 h" Q. b' _8 ?
    trace 01.txt
2 `8 K  l& r( k! g* O. j% Y  B    跟踪当前CPU运行的所有代码, 输出至文件01.txt
+ ]' w: k1 C$ a+ \4 n4 L
* Q7 F3 f$ I# y    trace off# \  M8 D7 S0 x8 n
    停止跟踪, 并且关闭文件- M! ~( H( N; }* q( ]7 T" Y
2 c$ }- E4 o5 ]
    trace 01.txt,0+ I7 x6 I5 M' j8 Q" x' I
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt6 [+ K  R( Z- I6 z8 Z

. j# f6 I* x1 h* e4 O" ]    trace off,0
: Y& j2 ~8 H+ n" x7 U1 m    停止跟踪编号为0的CPU, 并且关闭文件
6 Y2 [$ N. ^9 c' K* O8 j* o) q
$ ?  i% P' ?! G    trace 01.txt,0,{tracelog "A=%02X ",a}/ A  j4 R& K  f- C- L0 q: L
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt / y: [* Y. }; r/ h( C
    并且在每一行的前面, 写上"A=a "
9 h" e" T' i- w) C9 A1 f    "A=%02X ",a为一个C语言printf函数常用的输出格式
! v. _6 M* O  n8 M    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入* Q) W/ c) x0 y& U" B$ L+ `/ e
    X表示为大写十六进制数4 w8 ~) Y% @& E, T6 o* m! n

0 \* Z) q$ J8 }8 q3 Z4 D' q/ v; F5 c, s9 i

2 E. m+ g6 ~; W% r内存直接写入指令: maincpu
& L4 D/ I# R6 F' A" ]    格式为 maincpu.[][]@地址=数据* E- f, d) l  m% \, k) K& V, U; Q
    第一个[]:
- T8 V  F: x" _    o 表示ROM地址
& x1 v3 k8 \6 [  ]) M3 a    p 表示RAM地址
5 M! ~' L1 \$ k8 [% F8 {2 \! M0 Z! a4 d3 e5 \5 R3 A
    第二个[]:# W* m/ ?/ H$ p% P7 D
    d 表示4字节
! [0 [- K- s% L+ @    w 表示2字节
: z9 I8 n+ C( ]    b 表示1字节
3 A: J0 Y9 C' |/ V2 V
3 }( d% O2 c0 [( j# i, v    例子:8 q, q4 n# }+ x; T. Y$ H" ?( _
    maincpu.ob@1234=FF7 W& S7 n6 I- t, ^$ Q& i9 k, U% b; j
    在ROM地址1234处, 写入FF一个字节7 e% ?" ?& V% y; l9 }

- t* d' @& h8 W' j    maincpu.ow@1234=4E71
- h5 x# ~$ d9 \* \4 H    在ROM地址1234处, 写入4E 71两个字节1 |! I3 p$ T! N, L+ T

# f' i4 R; ~+ Z$ X, L1 K, @    maincpu.od@1234=600A4E716 S9 ?6 e" W' i" Q
    在ROM地址1234处, 写入60 0A 4E 71四个字节
/ u6 P$ Q7 N3 S8 ^# m+ O9 g1 {2 `
3 G9 @* w7 ~9 K: }" X    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
" [% ~: R% z( Y  w* C   
+ Z" G; _! I* a* N) \9 l3 U9 _, Q1 ~. J+ s7 b5 H2 i2 s4 ~
其他:
) R5 G# q% i2 b1 u$ j5 s7 x. ^* V    dasm 输出档案名,地址,长度
* j9 E0 A; C# y5 Q$ a) X8 J    输出程序的反汇编代码/ s% H& ^! k. z$ `; N4 F
    例子:
6 h: x( y8 @, K# v" K    dasm 01.txt,0,1000004 t: \& T" J+ k' l
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt) s( e, z# X. \' v, ~0 D; v. p5 b
7 o# U& g7 S3 M! c. v6 l
    softreset  P8 {+ P$ N- x; ~2 o# l. w
    游戏重启, 但不重新载入ROM
5 ]9 ?- W8 @  F4 F; _. }
6 E: e% L0 f7 z2 \    hardreset
. c. ]% r' G. _$ \# s) n    游戏重启, 且重新载入ROM
1 G% u2 @! [4 _% Q
# P# T9 I3 {" ]3 b; B* t4 `    snap xxx.png1 h* h4 w: j  o4 g- c. ?) _
    截图为xxx.png
; w' `: J- J4 F* `% R# g1 E( K, @1 A! @5 Z# B+ r' R
  
# G1 z- c, R4 f9 _: M& J" x  1 @7 O7 v; d) i! S, Z
  
/ Y/ b3 R2 m! t6 ]7 }3 P/ c热键:
/ Q( t. |3 s* k3 y; ^% O& }    ~ 中断游戏
  @* P* P/ t1 {  N  J    F5 运行游戏: Q- }# n% T3 E9 z
    F12 运行游戏且隐藏调试窗口2 i, m  R3 o4 `* s, b, z
    F11 步入, 单步执行, 会进入子程序+ K4 J5 ]/ E) ^/ i, S: S7 j
    F10 步过, 单步执行, 不会进入子程序
) G7 f; f0 T/ _    Shift+F11 执行到子程序返回9 W- v& l' c1 ?* T
    Ctrl+M 内存浏览窗口8 W& j" M* m, }0 S2 I
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
. {. W) Z* ?9 o) e; G7 ~
2 N0 d! Q% @" t( S: Q. Z{:4_94:} + v: f% d  P  y

  u8 G: T9 P1 Y$ g) H

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2521 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。2 }3 l7 }$ {7 ^

8 g2 i; d% ?+ g6 I: x( Z$ YPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东
5 K) @: z' C8 h4 P/ H+ W, _+ Q11111111111111

该用户从未签到

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

该用户从未签到

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

本版积分规则

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

GMT+8, 2024-9-24 12:20 , Processed in 1.131836 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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