设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
. I6 y  W9 V5 k8 |
很快速的整理我自己常用的指令
0 H; s& P8 A/ W
, Y! ]8 {6 Z% x; v0 g{:4_112:}
/ J1 p; U7 B: I8 I! x/ e. q
1 ]2 [3 g& ^- ]MAME DEBUG常用指令( t! {$ h* w! W- h
! O6 m- Z# @4 x' Q7 {
内存搜寻: ci, cn, cl$ `! A* k5 J1 t- a: V! O' K

; k- C5 i( Y1 \# u. J( n1 o! v    ci
/ ]# w, u: I+ M: x    搜寻任务初始化, 每次搜寻一开始一定要输入这指令8 g  a+ ?2 x: `2 j4 j0 C

( X0 l  ~8 t/ }" a/ n8 h    cn# X6 l2 p% v: t! {% n& n
    搜寻指令
# T6 a& y/ c9 S" u, q& \9 O2 E( F    例子:" b: w- e! Y5 }1 O# P
    cn eq,60% f, j7 L2 ^- Z( C
    搜寻目标等于60 (十六进制)
, W. `) {5 N) {; p; o8 t; J. T8 ~        : K3 m1 x- r9 O
    cn eq,#96
" J5 X; C2 U% }9 W) u    搜寻目标等于96 (十进制)
; B6 ?  L0 A* w! O  t1 }' D5 ?5 l6 H" n5 L' H- [
    cn eq. [3 P0 M" z1 i" y' [
    搜寻目标的数值没有变化$ r6 l9 P; f8 x6 M* h7 l

& {* m7 `# ~# \& |. j6 }+ N7 h    cn ne. A, O  P! V7 d2 u4 P
    搜寻目标的数值有变化6 @4 c: V7 H$ V' u
        
5 |+ y, Z# V( k    cn +
( K( Y# N* D0 M    搜寻目标的数值增加6 N" S& d& e3 R6 [) W4 I, a. L
   
7 h! k( P+ H2 D& C& r# x  O    cn -
4 S9 I5 g7 y, c# z& M0 t" L    搜寻目标的数值减少
. m! G: {6 ]- \" L9 b! l        9 {) x! g$ R5 L* s' C# r
    cn +,39 A; _5 ?8 c: @
    搜寻目标的数值增加3 (十六进制)
) @( r6 b% T* x: T4 u
+ h  ^' B# f* C- L    cl, A+ w. M) I2 C# c, ?$ D" K
    列出所有搜寻结果+ U5 X3 ^: P% D: K* h; S4 k9 ?

2 \/ M( }4 y1 G1 K- S    cl xxx.txt
) |* u* Q6 z( c5 Q    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
+ ~! a! t1 U, U! d1 ]5 Q, |5 [! V2 M" X5 y, E1 {8 b
    # e& E, B/ n2 [
内存监视点指令: wp, wplist, wpclear% {0 {8 u7 ^+ y' x4 Z7 ]$ c
    例子:
3 Z) Y4 Q' K1 ]7 l: P% ~0 W* T+ z/ l    wp 1234,1,r
. ^/ O' Q6 H" z7 ?9 g9 O! Z  @      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度18 U9 a8 J0 V4 Z2 w7 C
  s9 {9 E6 b' E& k( ^3 Y
    wp 1234,2,w# l" l) m# Y( j3 ?2 ?9 ?1 K0 b: X
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2( d6 w& L6 d7 V; l; b& H
     ; g' u. e! L0 \$ d  K
    wp 1234,6,rw2 o. a: S+ Z# J7 J+ _
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
2 M6 ]- C1 g8 f7 ^  Q3 h  N* x( t4 w  _1 E
    wp 23456,a,w,wpdata == 1
' R: j7 G% K7 w9 a: ?8 G" y      在地址1234下写入监视点, 数据长度a, 且写入的数据等于14 v7 e5 [! o" m& c# U+ c" I% o7 A5 q

/ \3 p: K/ ?1 L- H' S8 v4 b4 ?    wplist% f6 z" J! p% N* M" r
      列出所有监视点5 c& O" e6 Z( j) x. z

1 p( ?+ ^2 a$ W' a" j    wpclear 3
  Q3 W5 I' X: p# v; n      删除编号3的监视点" b- H+ [7 N7 q8 G

2 `: J/ I* c- f3 W! M    wpclear
4 }( T5 i, e( `+ A* U$ h      删除所有监视点4 x! ^  B1 s6 [5 P7 R, h" Y
3 i- o& ]  ?. E2 h
      
% K, I. l+ O0 B2 Q- _8 V2 m2 q8 B9 M. F* r- Y) w
程序断点指令: bp, bplist, bpclear
7 ]: J8 @7 m+ z7 P    例子:
* P' N; v6 R8 |# f4 M( Y    bp 1234
! V7 F1 p2 q. ?9 A; t      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断* f/ _) M* [# Y! m

9 j; B# B. P, W, M    bp 23456,a0 == 0 && a1 == 0
3 c0 O, u( s1 R( o: |      在地址23456下断, 且中断条件为a0等于0以及a1等于0" y- f4 @( U4 r8 u3 d1 N- \' Y

3 K) [2 K9 d3 H' y% e1 a3 g. m' X    bplist7 ~$ Y( d; Z4 f5 w0 n% j
      列出所有断点; q) r& ~: f  i' w/ [# m+ z3 x5 q

  N0 l/ h% I- Q( c    bpclear 3) H/ e8 `! ]& f$ ]8 b7 y: V( d
      删除编号3的断点
( l: N1 ]; w( Q, P  ^6 W$ A2 B/ B4 {/ A1 o: V, c4 J
    bpclear
3 Z9 J. K7 M$ W, i$ s      删除所有断点
* e, R6 \0 C0 s1 p& [( @' `" Y
5 l& {$ @! x* D  n2 X0 k! w      
7 r* ]$ A4 X6 `7 l      
  ?+ K1 R0 c) o; {跟蹤紀錄指令: trace
# G7 c7 x, a5 U" d; Z% {1 e    例子:
) s1 {+ e4 ~  O- v. w- z    trace 01.txt
$ ]) z6 F! W0 g. [1 W    跟踪当前CPU运行的所有代码, 输出至文件01.txt
) m6 {$ Q1 |# X; Q: K! d' b/ p/ ?0 I  d+ a8 w5 [9 A
    trace off
% f0 [2 M7 g9 a* }7 s" h( z    停止跟踪, 并且关闭文件; B. Z% S7 w  X. e9 ^
* L, @; H9 O0 K7 V
    trace 01.txt,0, |& j3 W! O+ `+ @4 X3 I
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
* V. _! X1 e' w' ?& H0 i+ P& K" N: k% \* Y0 |' y7 d. x
    trace off,0
/ g: r! H- A5 K0 y# j7 R    停止跟踪编号为0的CPU, 并且关闭文件2 P, M: j7 e) M  t5 y7 E3 c7 H; g
0 Q4 J  k6 m, @/ @' I4 _$ e
    trace 01.txt,0,{tracelog "A=%02X ",a}
2 p4 r1 X) E. c  z" @7 r    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt + V. ^, @8 y, U( K8 X" U
    并且在每一行的前面, 写上"A=a "6 A5 ]# c! V* x! \2 c' [
    "A=%02X ",a为一个C语言printf函数常用的输出格式
3 ^4 D, T" G9 ]% M+ b    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
' t6 j# Z/ [0 Y    X表示为大写十六进制数( V- A. O( y1 ?. ]( G+ U& @  T) `
+ z( z" t0 {) x  {

; o4 w2 `0 B1 @- H& @% G2 b$ H3 Z3 D0 O2 T; [$ ?9 a3 Y
内存直接写入指令: maincpu, Y- F) ^0 q# Q0 s2 v/ ^
    格式为 maincpu.[][]@地址=数据1 m4 ]) w- K/ |" I
    第一个[]:) w7 m( a7 i0 O! ^3 v3 i) ^
    o 表示ROM地址( E& @; U4 {; }
    p 表示RAM地址8 c: X4 l' ~2 Q3 g

9 p1 h- V) A1 j3 z1 P# b  R    第二个[]:
$ C8 P$ k1 G. r) _1 j0 R% n    d 表示4字节
% m3 o) g, E3 U2 G4 u) a; ?; b    w 表示2字节
6 X. L4 r  P- m3 ~9 Q. {- z    b 表示1字节
% n  e; z5 C. T  s4 \: G+ i6 O/ M* k1 Z
    例子:
, _1 p: L4 Q* d, V: [    maincpu.ob@1234=FF
3 r6 d. ?4 u5 n% a$ D' ^    在ROM地址1234处, 写入FF一个字节9 g: u$ E( z: t/ m- F7 s
7 C* v; q1 d3 j* j, g1 U6 u
    maincpu.ow@1234=4E71
6 T8 {) `" m9 ?6 X7 P8 r% R    在ROM地址1234处, 写入4E 71两个字节
9 J8 m5 S$ Z' M
$ D( Q/ p, D8 V* {    maincpu.od@1234=600A4E71
3 p! x' p6 O/ M' y! o: o    在ROM地址1234处, 写入60 0A 4E 71四个字节9 w4 h1 B1 N% z6 r- Y
) q& B9 Z: K4 ^  G
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
( S8 ]) p, W% R2 T: Z    1 O- o& }; G& _

* W, e7 ]: X8 [. V- r其他:7 a: H4 {" }% f
    dasm 输出档案名,地址,长度
3 F! H. S9 `3 ?    输出程序的反汇编代码3 H4 K3 C8 L5 B" l& q; v
    例子:, y6 }$ ~6 i7 x( Y2 }9 E
    dasm 01.txt,0,100000
8 p* d1 }. {* t    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
9 r7 ?  C( f! I& v# h
# {7 h  U4 N4 u7 U: m& u/ ]5 A    softreset
# N! g2 k+ V6 s3 K. f  W- q# g    游戏重启, 但不重新载入ROM
! C, A1 b/ B/ [$ a3 u$ l* T
% r; p# G# ?9 L) d    hardreset
7 `1 j; U; W  t/ Q    游戏重启, 且重新载入ROM6 C" u3 z/ f; J7 t+ a
+ x8 K8 ]/ Q. ]) h# n; I) i
    snap xxx.png
5 Y, N! j3 N0 w/ Q" ^" W    截图为xxx.png5 t* D2 o5 w$ F, A
$ q* w; ]; E- W; d
  
1 Y! p) L3 b6 s6 r. e# n  
% R, W- m& e8 }8 x2 S9 Z1 `( }  
: F9 T5 H( k3 x' E# _热键:/ R; J" ?% }! o1 m/ B; l* }
    ~ 中断游戏0 V, X$ [, k  f8 v. H# m3 ]
    F5 运行游戏
* Z' u. k6 w+ J2 f, Z# a    F12 运行游戏且隐藏调试窗口) q9 k/ C4 [" L$ ]' k) t2 N
    F11 步入, 单步执行, 会进入子程序
2 g: k/ Y5 Q; u. I    F10 步过, 单步执行, 不会进入子程序
6 M' b! a+ `3 f- k$ R; T    Shift+F11 执行到子程序返回& l( p, x( P$ a9 O, G! P: m7 l
    Ctrl+M 内存浏览窗口4 Y2 U! J1 U4 O$ x0 `
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
+ _9 W; J, b6 P9 ~6 ^0 F5 k; \% N/ @) K- X5 v% [6 l
{:4_94:} " ~8 g/ S% o8 r: _$ i0 X: @( O1 f

* `1 H8 M0 N! C7 F# C4 w

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2560 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
) y) o! z5 M7 f! A9 r- h. s& t+ ]
0 {# w$ |4 q8 \* L- `( g, F  f4 PPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 w/ K# V" m; z. s
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-22 14:13

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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