设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

0 b/ X) i' |' R9 z# v: ?1 Q! W很快速的整理我自己常用的指令4 \! l. v& b* M; o+ ]1 _

8 {; A# o4 v: ~7 ~5 E$ R3 U  k{:4_112:}
0 ~: A! a6 W7 e( M. I2 Y
, i0 _" {* z5 tMAME DEBUG常用指令# |; G. Q: h2 F2 V* j( H

7 x" e# Y8 o7 ^* }% E6 O" G内存搜寻: ci, cn, cl2 o% Y, g# B0 {
# r( ]/ x) I8 `5 Z  [) h' C
    ci! D, `8 G6 |/ S) K7 E1 ^
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令# v' O$ \6 `5 n/ G
) I0 y: Y: D6 l. O+ V
    cn
( a" r0 {6 \4 B5 W; N0 i    搜寻指令
8 k. L3 [6 t. [" x6 `    例子:. I; U# F' v  ]6 n" @( Q  w
    cn eq,60
) j4 x  L5 u, H1 {& I    搜寻目标等于60 (十六进制)1 R8 `4 ^) p/ x' y
        
6 ]) R3 W! }+ l9 F* z    cn eq,#96/ ]' a- M" }; b1 r: a* a2 R) h
    搜寻目标等于96 (十进制)
( j) V2 T" _! X  K$ Q
: W5 V6 _; [3 c3 \. {) f    cn eq6 L0 V: B/ w9 s& m- X
    搜寻目标的数值没有变化3 p( q" E' P' D+ Q

) X- Z" a" r/ X" c    cn ne7 D( f! X7 ?. _0 v% }5 x
    搜寻目标的数值有变化' o# P4 ~+ _! f  \- K; F
        
, F1 X; B+ L" t3 K6 U* H  u    cn +
  Z) P2 y( X) q7 X- P$ I; ?    搜寻目标的数值增加
6 w3 J2 v4 e* {, @& c' p9 B; P    - u. J" [4 N0 U
    cn -
3 y& ~( F' _8 c    搜寻目标的数值减少; ~+ V7 P3 G# ^8 P& u' h8 L( f
        
  y1 M, |( y& y7 P3 ?8 Y    cn +,3* z4 ^- Z$ i5 i9 X( n  d6 o
    搜寻目标的数值增加3 (十六进制); U) a- h* T( i. S4 Y
: Q: X' U3 W1 B/ |8 F
    cl! ]# z% |8 E( |' U; t/ ?
    列出所有搜寻结果
7 Q( X+ U& O4 }+ G+ o2 J8 c
3 u( p3 e; a  C  X  }    cl xxx.txt
7 f* @9 F0 G* s% X5 L/ M* M) p    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式, @. w; a, N+ A
" \/ G4 P4 E9 r
    5 G; x  B5 \6 g+ h) n' `
内存监视点指令: wp, wplist, wpclear( i7 v" d$ S/ W
    例子:! G) j, K4 k% l( h; X' }
    wp 1234,1,r) H8 R- L3 A+ j" p9 i
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
1 C/ L5 n0 r) r0 p5 ?0 |2 B: N5 ?, t  N5 ]5 r& N) f) _# w
    wp 1234,2,w
/ U7 w2 ?0 {0 `5 C0 N/ G      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2# Y- [7 u+ F0 }0 ~* k0 k
     
! b7 d4 S7 M& {: B, A- E4 V    wp 1234,6,rw
, W2 U% B# O% z5 x      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6% b1 @. S6 ?: k# u) y
% C! Q% X0 @* C3 `) Z, h( g# I
    wp 23456,a,w,wpdata == 1% [* n' }: T3 \+ z8 o9 H* ]
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
. \* g& |/ V8 F  R2 B7 M3 N  P0 c5 A$ J% _5 L6 {
    wplist
8 |% U7 ~' w0 Q  @" e  z      列出所有监视点& y/ E+ ]  b, U3 `1 a- B
4 d8 T0 F% T0 @/ O3 l' _' H% ]
    wpclear 3
) U  ^5 I- J! J( }% i8 ?9 ~' v      删除编号3的监视点+ Z2 H2 o* D- `) R- h; u8 }& n
- i& _; \% |& @! r
    wpclear& z% s. V; m$ Z  n. T% m
      删除所有监视点( S6 k" Q; n, a/ g
+ N2 s5 [9 @1 T$ T/ S. M: p! ~
      4 F5 v. H' O! ]2 K! C

) m8 e, o7 v. I程序断点指令: bp, bplist, bpclear
$ t* j5 n* C% K  z& `$ S: ^/ [    例子:
' C1 {9 R' c6 V2 I    bp 1234
1 H7 t+ @( u. [$ B0 p      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
. M( b" j( F, L  x) J5 B+ b" F) t6 o+ o0 @
    bp 23456,a0 == 0 && a1 == 0# v0 q6 @  O% P- j- t. f1 c+ @
      在地址23456下断, 且中断条件为a0等于0以及a1等于0) I: R5 }% T! L8 ~! V! z" B4 ^

7 g* b  C! P! U) Y1 F: a    bplist( K; Q* D6 _; q* p! P7 L% q
      列出所有断点- G& `- V3 q+ B6 T
; n1 H# a2 q2 o. f/ l/ `  I
    bpclear 3
! k" h! Y$ w: v  E4 p' E      删除编号3的断点! i  a! ~* i/ d4 F/ Z5 l6 j  Q0 E1 Y

; T) g0 T* E% A; _! ^: L$ W    bpclear( j9 m: A% M( ?  f! c
      删除所有断点6 c" U( z$ f0 R  G2 g7 F

$ ]: G, P. ^; ]6 C3 I, t1 [      
- d. k. {9 Q& k. |# g4 N  ]& |$ Y      
& |/ N' K( a4 z/ o9 S跟蹤紀錄指令: trace
3 O3 J( Z2 C* N: p& z    例子:
8 z  y2 a5 \4 ?3 y9 J    trace 01.txt* o' S4 u5 I1 O8 n" M' C  I
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
# Q( F3 `: V* ^- }- A
6 g3 W) ?/ {& }/ {. Z    trace off2 W( E  g' t- H3 F
    停止跟踪, 并且关闭文件
0 G1 h% {9 B* }& O( {# x
- F4 S! g  }4 b$ T- P- ^    trace 01.txt,0; B9 l" V0 ^+ c
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
. i3 K, K$ H: h  t4 F! ^) L! h
; `( Q' S% U$ k5 `" q! q# n5 R    trace off,0
8 D1 a) ~7 v* |! _; ]    停止跟踪编号为0的CPU, 并且关闭文件% v8 Y) ~9 k/ `1 u1 i' k9 B! I

; I3 U/ n" r, v" Z4 h. D0 H    trace 01.txt,0,{tracelog "A=%02X ",a}
9 A: U' _. {( u/ m3 H    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
, G+ D7 E6 r7 K, ~    并且在每一行的前面, 写上"A=a "
+ G% J6 Z! {/ s! w    "A=%02X ",a为一个C语言printf函数常用的输出格式
! {- a# S$ g9 i5 u% P0 s: J' M    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入1 w4 a5 E& h5 W+ R7 |
    X表示为大写十六进制数  W" _/ Q  G5 ^. r( e

; V! Z! [; E$ D2 u" i; l5 N9 l7 C( h. G# T
; X% T5 f+ h. P# U9 o0 k
内存直接写入指令: maincpu
1 P4 P8 d6 y. H8 K    格式为 maincpu.[][]@地址=数据
' X4 `. ]+ T. k: q! c: c    第一个[]:
- C8 u9 B0 F' W( q1 C+ Y+ ^$ r    o 表示ROM地址
. K" W: I' O* j6 l$ }# W. C    p 表示RAM地址
; \$ A6 S! R8 n  o0 n# L* a+ E4 o/ v. D6 G7 f# s! G( G% f
    第二个[]:) B% d- t# M4 ^
    d 表示4字节" T( ]* E/ ?" L+ Y# [' N
    w 表示2字节% Y4 x2 n7 W1 z4 P
    b 表示1字节8 R, V8 B: I9 d" q% @, V2 m: X' @* [* R
3 F7 b6 Y3 x- h' b0 N
    例子:
' r- `1 ~7 m- m1 g3 k& j7 R    maincpu.ob@1234=FF
# T1 ?  b# I; n2 S; V    在ROM地址1234处, 写入FF一个字节- |# e7 I' Y9 e$ V
5 @. l* R4 M# L+ N+ V
    maincpu.ow@1234=4E71; j# b3 `1 V4 {+ p# G0 p" F
    在ROM地址1234处, 写入4E 71两个字节3 m9 u0 u( ^) A9 ?* g4 t+ l

9 V8 `  x% B4 ^    maincpu.od@1234=600A4E71: |/ b( e8 u' s' t4 t
    在ROM地址1234处, 写入60 0A 4E 71四个字节# T+ h3 C- c2 C1 I6 p- a
' S4 \& r* J! t3 M- ]/ s/ e
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写, f3 @9 ?8 n8 w3 \% ^
   
5 B# \  r. R# R! y* ^5 g. I' Y/ z( d$ h1 Q, z6 i0 O
其他:
- i4 Q9 V7 d# @: k" {8 @    dasm 输出档案名,地址,长度
' {7 g1 F) e4 r8 e: [    输出程序的反汇编代码0 x# N' U6 F( Y& q, s4 c1 T
    例子:. N& \8 O6 `, h5 x8 S) {1 \
    dasm 01.txt,0,100000. \2 [  ~9 q8 v& G9 u! h
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt' R5 Z$ _! {' o' u

' F' w8 p5 N' @% m    softreset
4 _3 |1 b) e/ k& a    游戏重启, 但不重新载入ROM1 V) J9 x2 S7 p6 \

& Z- @" N  t/ |4 r# G5 ^    hardreset
& n& o0 M. ]; N; Y* n    游戏重启, 且重新载入ROM
4 Q: N9 Z- A  @9 b  F3 q
( W  P" L" H: O2 B, C$ c. ^, k    snap xxx.png
& V& v, f  i6 R, t0 V& v$ z    截图为xxx.png
: _9 Y: i4 \3 ~$ I9 U! H# N, k' a
; p# d* P3 G6 D  v  7 V7 L: |5 f- ]9 g
    Q2 M1 c% ^' I0 S) D1 W3 F. E
  ( r' @9 W% Z- X, w4 N; |6 |6 G
热键:* ~$ c0 G- m1 R! ^- D8 g5 X
    ~ 中断游戏6 W0 R% w& Y5 y: l
    F5 运行游戏
2 m( t! @; J" [! D" L    F12 运行游戏且隐藏调试窗口
; L. F' [- l; g    F11 步入, 单步执行, 会进入子程序
; l/ y: h3 J3 x; N    F10 步过, 单步执行, 不会进入子程序  \  t! R9 {6 T% ?
    Shift+F11 执行到子程序返回5 G/ e! e% ^( W0 A
    Ctrl+M 内存浏览窗口2 [. N6 e9 d) ^) \0 x
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
5 Y. D, m3 P9 [; r5 Q( v
# p2 q/ [. O* i. }{:4_94:} . J5 f& e) O% d+ B5 r

4 e6 L7 e" M3 S, e

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2561 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
, F4 e# s! g6 ^! d
+ w% k9 P) }/ I7 A. u+ ^3 h6 nPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东
$ l: f7 I. k4 H11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-25 04:34

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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