设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
# ]0 j! `% I! Z0 M9 N6 q0 u
很快速的整理我自己常用的指令
- g8 @; u! b+ x) [6 m5 @
5 m# ?+ b3 a7 Z- ^3 {# _# g) \+ m  Y{:4_112:} 4 [: V% w7 |" W6 `  O, L

9 M* o3 p, U2 q0 t" p; zMAME DEBUG常用指令" _4 W6 r, N& Q# X7 `0 t6 X

7 x) x' ~+ @6 ?; W! R内存搜寻: ci, cn, cl
2 ^- {" `* L4 I; a: C( O, ^
; v' H) Y; G0 s$ q! z0 T2 z/ o) s- Q0 ^    ci- y& `! Q7 r; T: a% I
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令; w7 r$ b. S- K, C, K9 E

( Y0 g: O2 |* ?8 a/ v5 M    cn
. C! {! B9 L9 u* }    搜寻指令
# ]3 o8 f, a2 A, p, P7 \    例子:
! F" E9 g* U& [5 ~2 D- U    cn eq,608 s/ S- I. U2 C7 P
    搜寻目标等于60 (十六进制)
0 z* [; I. w- j: u        1 v. H/ I% L( K7 Y
    cn eq,#96- F2 [8 ]" ]& N6 _; ]+ d
    搜寻目标等于96 (十进制)% I. w9 J1 R9 k8 B2 L

, b0 L6 Z+ R( W1 G' a+ R7 j    cn eq
- P, [  S/ C5 C1 S% e    搜寻目标的数值没有变化
" l3 C* R5 x+ j
* x# X: }( K4 t9 J    cn ne9 i% z$ v* R5 @; c
    搜寻目标的数值有变化& E) c5 V. m& G3 Z2 x
        
( D7 r& x0 x- H7 K" U0 r+ Q    cn +5 V; j& w. _2 y, B
    搜寻目标的数值增加1 _4 z6 d* h* f  D6 C
    . r: D9 n2 ?  `7 x  M# V
    cn -
- Y  }; I" ?% R; y    搜寻目标的数值减少$ W: ?( w+ v; \& C5 @' z- f; z4 c
        2 a0 f: \2 x  z  h
    cn +,3
3 p3 o% v  k* d, U    搜寻目标的数值增加3 (十六进制)
$ ]( y/ K5 D3 S  s* G* \6 h- P3 T- \# Y2 ~% b) i* p3 o! k
    cl0 \5 R# X8 b+ r
    列出所有搜寻结果
2 d9 t" F/ o& b% N
; C/ O/ ]0 P4 K+ z: w    cl xxx.txt
2 \3 U$ C- u: v( w; `8 k, n; Y    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式0 B, U, K! f% n: q8 `

* X% J9 \" a" B. f% L) P    , Z, q( _: K$ j, y( Q% J$ A
内存监视点指令: wp, wplist, wpclear
% ~' B$ O4 r6 [7 z2 G( E8 X+ G    例子:
0 |+ l+ K* o3 I    wp 1234,1,r5 R* S+ O- u# |: k
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
! g$ z$ B( s- E4 a
- Z7 }- \4 B* K" {/ U    wp 1234,2,w4 E4 ?* x  M# B5 X# R' K
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2, e  b: h# q# Z3 h! i2 Y2 C
     $ M, O* \# X" `0 S2 r+ N
    wp 1234,6,rw
7 d/ I3 Y9 C( e+ ?      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6" w; V; _& R% F
( H9 I1 t$ M  o/ e1 J/ N4 n
    wp 23456,a,w,wpdata == 1
/ r; f; q; f2 C# h0 R      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
2 W7 o$ Y# [7 |4 ~5 Q
, j9 X7 B0 k+ v  {    wplist
. Q" H' V! C1 P      列出所有监视点% i5 c  H* B- t# v6 Q

9 \4 V4 a; d0 [5 V1 a- {2 y    wpclear 3+ X- o; F1 o8 v: L8 }! w
      删除编号3的监视点" B1 t6 ?$ s5 U7 V
# {% k+ }# t" g) D
    wpclear
) ~: C% ^, f" e+ N$ G. |" Q      删除所有监视点
  K8 ~& ]1 |! N0 c2 c
- P7 ^5 K6 O. Q$ D5 ?/ S) j      
1 E( K& G4 V' w7 x
3 Y9 \) o) X6 _2 m程序断点指令: bp, bplist, bpclear% {1 D& w- a5 O2 t- M+ Y( Z6 Y
    例子:
5 P% `! |8 W( V    bp 1234+ [. J3 v' f0 m& I- m( u. I" W
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
$ }  x! H6 b. C+ S+ N  w! j* j/ ~8 K4 K6 X5 u8 X
    bp 23456,a0 == 0 && a1 == 0
7 i& y; r5 Y7 V) f4 I$ C. _: p      在地址23456下断, 且中断条件为a0等于0以及a1等于0
3 s  c1 t8 `: V2 ?
  e: x9 |1 L& j. g2 N    bplist# ^2 C; J! r; U" f- b1 l8 K
      列出所有断点2 \* Z- U- q1 l+ t0 U& L  K

1 u6 p2 S8 y& q; K! ~+ c    bpclear 3
+ `7 V: j/ ^. s7 d2 K      删除编号3的断点
. `6 R" ^- n! l: o: ]* D! ^
" }  o$ {: [5 P5 `! S7 X$ ]5 b/ _    bpclear) D3 N: R" p  L  R: {
      删除所有断点
5 r& L, R9 f, n' q' h
8 B# k& f) L; c9 [1 F+ j4 O' U/ F      
( T+ H- r# T2 {* [      1 z7 J( T5 {7 m# f2 K
跟蹤紀錄指令: trace$ f  ]! S- g8 [5 R1 e
    例子:
+ P" |0 `7 s" }, d5 d. z# Z    trace 01.txt1 G7 w  i6 Y  U5 d0 U+ }: X, R
    跟踪当前CPU运行的所有代码, 输出至文件01.txt5 N) [$ e$ D9 |& i/ T) P% X
  d& \& t8 E' C% X
    trace off; Z1 g, b3 v& Q+ _7 ~9 b3 ~9 p6 M
    停止跟踪, 并且关闭文件
! _& ~- p( L1 S; R
4 w7 u8 k8 |( e    trace 01.txt,00 V- r' V6 k/ k4 g, [, @, ^
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
  X/ P  q9 W& i2 t0 X: h7 F4 r3 ~4 A+ h2 X, C
    trace off,0, t1 o0 W: K: m
    停止跟踪编号为0的CPU, 并且关闭文件3 Y( P3 \# B: t/ q) `9 d2 G

% n( ~4 i0 k+ F9 W: v    trace 01.txt,0,{tracelog "A=%02X ",a}
, O: O# j# p. y9 U$ l    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
; D  H, ]4 U) n. x4 B# o    并且在每一行的前面, 写上"A=a "$ ~  b. f% r! x
    "A=%02X ",a为一个C语言printf函数常用的输出格式' m" `' y6 Y0 J5 \0 o
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入" Z! N& b: a9 c! O
    X表示为大写十六进制数
3 |6 L$ x8 K5 F: f- `9 p2 Y" x# ^% c4 D# e4 V* `- ^- q& t
+ S0 E* v# m9 L5 I  R" X# X! C
/ N3 B- L0 b+ u, b$ G8 e  ~6 k: [. R) r% A
内存直接写入指令: maincpu# S7 _: I6 L2 ]/ O& s3 K( ^
    格式为 maincpu.[][]@地址=数据3 I0 e. Q) w% \: w7 |
    第一个[]:
  v+ f& G- v; A; a  _: u* E    o 表示ROM地址
1 w7 ]2 J1 s2 q3 [2 c    p 表示RAM地址
/ I, x# X) x5 V: ]
. v- p, W3 r1 Y    第二个[]:9 @( ^5 v* {! e
    d 表示4字节* ?+ N9 D5 w+ W2 b* Y
    w 表示2字节
) D8 f9 v6 `( J' R& z  h2 S    b 表示1字节2 E4 t6 A% ~+ L! B9 i' o) H

" c1 E' i% j9 |    例子:) g% s4 f; u1 n; o* G
    maincpu.ob@1234=FF5 ~* ~4 W9 \- Y" O2 O7 E% D
    在ROM地址1234处, 写入FF一个字节
4 b6 B5 o4 f# _) n6 ^
) [! i4 N0 N4 r! G3 O0 @) V    maincpu.ow@1234=4E71
# b: @- f5 A% B# D    在ROM地址1234处, 写入4E 71两个字节
6 h# e( x5 Q' L: a& d7 T3 Y- J8 b% d4 H5 W. X/ n9 [/ Z
    maincpu.od@1234=600A4E71- N" V$ |, Q/ M. {7 D' t. {# t( ]
    在ROM地址1234处, 写入60 0A 4E 71四个字节+ H, W" k6 b7 |" t) j

6 m) o3 p& G$ X: i' d    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
* b, C4 U% L; z& Q- [" S% u   
3 [! b9 J  c) [# U) o: D6 E( V- _
其他:
5 S7 V% G' \9 L/ r% s* r7 _, v! [    dasm 输出档案名,地址,长度
: _4 Y  {# V& o1 j" a+ [5 I  r9 d    输出程序的反汇编代码7 ]0 \+ q% |  }  C0 H
    例子:% u. O% l2 e4 d) r' e1 R3 r
    dasm 01.txt,0,100000: a7 M2 D+ V9 x6 o( n1 h
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
( s$ k. d, ?9 c( U& g  g, h
1 t5 V( g$ {0 a# h    softreset
. {  S0 y! m) A0 S3 e' ]) e2 G* C0 L% r    游戏重启, 但不重新载入ROM
) J; {5 e; P  L0 C
0 q* I; |7 X' ~" |$ m2 c1 [; ?    hardreset) |# d7 ]$ B8 v& F: f$ `  J
    游戏重启, 且重新载入ROM2 U* ~  M7 ]4 b$ `" L& h0 j
( b1 t* a, }/ `/ K2 }5 n; `
    snap xxx.png6 f6 g7 D0 v( Q) A, [$ n/ _7 ]7 k
    截图为xxx.png0 w& j! }0 s! d! c' Z

5 V  w2 i" V: ^  % H+ G$ X( b: U6 J2 M* a
  & s  @* ^8 m9 o& k0 R! R0 ?7 _
  0 k$ n& k: g& ~/ K6 G5 p
热键:
5 U. ~7 O* v1 h5 g    ~ 中断游戏* M4 V+ A. M! e; v7 ^  l  o
    F5 运行游戏
$ T2 k$ {& T3 h' K0 _& {    F12 运行游戏且隐藏调试窗口5 [) [8 }' c9 C, {  l1 a8 g
    F11 步入, 单步执行, 会进入子程序4 X/ P) U( P5 v6 |6 E: h
    F10 步过, 单步执行, 不会进入子程序7 B7 m$ o5 k. A$ i" N; K
    Shift+F11 执行到子程序返回
; t, E3 A3 c7 Q8 c* ^    Ctrl+M 内存浏览窗口$ P! M/ N7 @8 ~5 g
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
4 F. I! f0 J! y  d6 _3 F) Z& G2 e9 A
{:4_94:} 5 m/ e4 ~8 K. M( T. [8 U
+ {. h2 c( ]- T3 m5 v

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
: |7 K' [( n+ ]8 O% V
+ L+ Q' |3 f( b6 U) h' `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 | 显示全部楼层
要详细些的东东
, {) E2 n" s4 j) ^+ A5 t5 g4 [11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-9 10:27

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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