设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

* n( Y! ?& W: w1 Y, N很快速的整理我自己常用的指令0 v, H7 Q$ u' w; V  X% M
" M7 V# |8 S3 A. s4 T. c0 ^, o
{:4_112:} 2 D$ ~6 s4 ~$ u% u
" Y! v2 k: D; |+ u: N" G. i
MAME DEBUG常用指令
  j& {6 Z+ B  V# d' }6 q/ b! l5 E- r* r. W- E
内存搜寻: ci, cn, cl; Z) H- F) a* X; l9 X9 s0 q

7 {3 [1 _+ b& T5 C# R    ci
! h( g, f( E& f* @7 x    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
5 H' q& Q6 q0 k8 h+ ^* L# X: h3 s
7 `, G& r9 I, z    cn
. p4 G* M; b; ]' ?' P    搜寻指令
2 L! E0 Q+ P) u5 o) s    例子:, o8 j3 E( B" b& }
    cn eq,60
% b9 E0 T. Z. M  B" ~3 l2 w9 u    搜寻目标等于60 (十六进制)
' W2 }3 A( s! w! L        - V% G7 s& j1 c  U* y
    cn eq,#96
( r: z; D* u# E9 {    搜寻目标等于96 (十进制)
7 {+ E2 ^# g  H# X* Z) |$ q. _8 z
4 l+ O' A! z- H    cn eq& [/ j. _8 x/ u/ r8 {+ k8 m, |
    搜寻目标的数值没有变化4 x0 v5 q% t) r' `0 u3 p' R

% f2 l$ f# Y; d! j7 A2 c8 _  u    cn ne
/ ?: V- U1 _" ~) B% c. X    搜寻目标的数值有变化( N9 B7 ?( `! ]4 S  B
        
; q. J2 e: D% }( `: K$ l    cn +: ~( `0 S) m* X* W: M& P/ P- @' T
    搜寻目标的数值增加
* `8 w6 P" B* ^3 y/ Q    3 \& |5 d* ?8 p- u8 g9 `; @3 H- ?) N! \
    cn -
3 C( {7 v! E& n: O, k5 _    搜寻目标的数值减少
" E5 j8 E. C0 O7 s        
0 j$ n$ x' E( J* `- `! V- {# d4 F- j    cn +,3* H" T$ q3 ]& J: y8 A
    搜寻目标的数值增加3 (十六进制)
* s0 e3 a7 i/ d% H+ V: R) t
2 \6 G0 j% A( e: F5 X    cl
; R" Z% P8 r1 y    列出所有搜寻结果4 X: N' g* Z% j& |
& f2 Y2 Y5 h0 ?# X
    cl xxx.txt6 ^9 p5 u8 F& E5 B# @( U* x0 G  p
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
# E5 j, F. C1 x) j. p$ a
5 D9 f) C1 T; l6 P; ?    : ^5 ]4 C- ?! S' C4 |
内存监视点指令: wp, wplist, wpclear
+ g. A7 ^% a$ [, j, R* ~    例子:
- w. n  j" P% |) X/ a: h' L    wp 1234,1,r5 c9 ~6 u% k" O' s
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1) F' C8 b# m6 p- e' {, P

9 x- D4 T& M  [8 z" H% Q    wp 1234,2,w
# B& ~  ]# `5 {1 t' N* n      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度29 z- A" @8 j9 o& w; b
     
6 G4 l1 M% v$ ]    wp 1234,6,rw
* e' g! C$ g4 n# G2 p) L" e      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
  D7 ^3 _( j9 p# F& D3 q3 V7 ^9 o* g; a2 ~& v  V
    wp 23456,a,w,wpdata == 1
: v5 Q% G6 x9 P! v      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
  Q8 {' y0 L& t" B0 @9 a+ Y! _" m" l& |4 U7 H" F# r' J7 T9 D1 A
    wplist
- p) g- S" V" F" F/ x4 G% F( ^      列出所有监视点6 _; d; P6 @( c
, x( G. W: }2 B  H, J! T
    wpclear 33 d9 L# P: f& m6 Q% X3 F
      删除编号3的监视点
1 P% P; B' [# y5 p
& C% M: B# F/ {( b( C/ a& D    wpclear/ X4 h$ Y. W" c$ o0 O0 x/ B; l
      删除所有监视点
! \6 o% U+ P% D  d- s% W
4 a1 i$ v  y1 W; S5 a1 {      / [4 @/ n+ G/ [; H
- L9 Y$ j. `/ |* `# Q+ r
程序断点指令: bp, bplist, bpclear
6 }& F$ \2 z& @) W    例子:
  [, K( @' n  }- m3 _    bp 1234
- ^6 Y7 I" T4 F5 f) J) u0 |      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断6 X* |4 n0 t% d2 P. ]: H5 j

) {# _/ ?% m9 \' y* v; n+ }- \    bp 23456,a0 == 0 && a1 == 01 H+ H4 [; F2 ]# Q
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
+ T$ A. Y$ J9 n4 }4 u7 v: s" M: e+ b+ L! Y2 Q  f
    bplist' Q( I$ d0 p. {# L, Q
      列出所有断点& M. |$ [* \4 j; W0 j# h3 M, `
1 j& ~, t& g0 A/ ?( ]
    bpclear 3
  Y7 p7 H7 ^( b. y7 D+ C      删除编号3的断点7 C, u2 C6 f8 b$ ]5 l2 \2 G

6 _* b6 ^0 `& E    bpclear
: {2 |7 H* R0 C4 w0 ]      删除所有断点
. `* k2 \5 F8 W4 u; g3 X2 f& w
$ K" |; V8 ^4 h; `9 G7 I      ( H* A6 s5 a- u
      3 I# q6 H' Z) w5 F+ o; F
跟蹤紀錄指令: trace8 G8 P! I* ^1 K( `
    例子:5 w6 R3 p9 J; T4 M
    trace 01.txt
5 Q7 r1 I! v7 p, q( ?" I" u) X$ Q    跟踪当前CPU运行的所有代码, 输出至文件01.txt: L& H* _& |' b: c* W' C9 O
1 U( g- o" C) a
    trace off
& |9 }  W1 s) V( ]$ V. f% k1 A    停止跟踪, 并且关闭文件
1 C% \% R% {1 w# b8 b. _, x' H9 F5 `! m% R. Q, E- w
    trace 01.txt,0
; N+ E  ]" h9 K1 e' g3 I8 k5 M, o    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
/ b6 y) c, J+ b1 g1 @; S9 e$ o$ ?0 b9 @  S- `- e% R
    trace off,0
$ ^! F7 q2 Z$ C% I' v7 F    停止跟踪编号为0的CPU, 并且关闭文件$ |; K5 O( P1 v8 l, {9 M+ y# H

7 \  n/ q, z" c7 S" c3 I0 ~0 z    trace 01.txt,0,{tracelog "A=%02X ",a}
% f* b' H* n+ K( p1 I8 K    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
+ S+ S# ?" \6 a: f    并且在每一行的前面, 写上"A=a "4 u- _* C: i9 P# P
    "A=%02X ",a为一个C语言printf函数常用的输出格式8 e+ `1 `$ s( q* i  E2 Z, b
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入) |8 W! ~( X( t; d' y  ~* ^
    X表示为大写十六进制数
* N; E# E  I0 w% d5 F5 ]6 R5 g! A4 b
, _, A! P' b, M' _/ }

) A" a8 N% `6 X0 A/ m! o+ n- ~内存直接写入指令: maincpu7 v) m* @& O6 S0 s) n
    格式为 maincpu.[][]@地址=数据6 t& D6 g; ?4 @) g: M- p& K
    第一个[]:
& w) E% H% V# b' j8 Q    o 表示ROM地址
$ J- l5 K" u) x    p 表示RAM地址+ p  a0 N% e  h( R% q

0 W0 ^( y: ~; q" X  q; Z8 I, I    第二个[]:
* J+ C$ P* c: u. u7 v8 b    d 表示4字节! U) e$ e) T7 G
    w 表示2字节
; i' o( P6 {% s; [4 Y, H    b 表示1字节% o$ I" I1 i7 m6 ^3 t6 K8 L

) R( d: M+ M% ?: O+ I4 l" ^& c    例子:  \, V2 |) w: U
    maincpu.ob@1234=FF
9 g" l' G6 k3 Y- d9 K% N# Q, |    在ROM地址1234处, 写入FF一个字节! |# @# e# L7 M9 `

& n+ l& d# j) s    maincpu.ow@1234=4E71
2 J( m4 y: `1 e    在ROM地址1234处, 写入4E 71两个字节+ n/ O2 B( P/ n7 s0 [9 ]
% x8 r- C( B9 o8 |9 @. ~
    maincpu.od@1234=600A4E71
& G/ q9 h# c% e5 h: q    在ROM地址1234处, 写入60 0A 4E 71四个字节7 V6 v, ]9 o" M
1 E! r: r0 n3 y0 z  h0 `' v( S( N
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
' C% I" g# s; r; f   
- E  u6 N; h; L. h' J3 h* i$ o7 e1 b5 e* y4 O3 T: l9 T# \
其他:9 R) q, ]4 k  ]& ]" B9 [  I9 e
    dasm 输出档案名,地址,长度( p( ]+ N: z/ t' u$ e* e' _
    输出程序的反汇编代码
/ Q" R- b! m, h' @0 k    例子:* }7 f4 E, i6 n5 a6 J
    dasm 01.txt,0,100000
/ H" M0 Q2 k6 T7 f) H3 \    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
# y1 J  L! s! ~6 ^
1 k( D' O3 }+ E7 |" O) Q    softreset3 r: G& e6 \& B$ }, L, @3 i1 a3 `
    游戏重启, 但不重新载入ROM/ M5 H: b5 c' A+ U9 G# d, ^
2 W. T# v; u) I2 Y5 M, i5 v) H( k
    hardreset- [+ v5 H$ y0 {! r& ?
    游戏重启, 且重新载入ROM! o+ ~. Y7 j- G# ]* o
5 ^/ b0 j- V- c1 g9 {# e
    snap xxx.png3 t, V" }( L7 Z7 N. d7 s
    截图为xxx.png
( S* F6 w! {; {1 K3 e( D
  G- o( x0 ~% P8 K; s) _1 h3 Z  9 N" C2 w% s' [( `& u$ `. t
  0 D# Y* r. A  b: R0 Y+ y- T
  . ]5 t! f& p+ i/ A  d
热键:
; o8 @% |+ k0 K4 p2 i) _    ~ 中断游戏
( Y2 K7 ?% w) h( j/ i6 e    F5 运行游戏
, K$ `* Q; q6 A5 P' g& N4 u. c    F12 运行游戏且隐藏调试窗口
  U! J" K8 l% n& d1 |' J: ^% ?    F11 步入, 单步执行, 会进入子程序
7 e( |. j, e# ]/ ]% M/ w; M    F10 步过, 单步执行, 不会进入子程序
: U7 X0 T) w  R4 F+ P    Shift+F11 执行到子程序返回$ N7 u8 E! G0 k
    Ctrl+M 内存浏览窗口: p8 F9 J9 T# s. u3 {+ ]2 P  t
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
- S& G. d7 Q) N* y* f# w( n" P- X
{:4_94:} 8 p( r4 G+ F6 q( l; E8 @9 B: B

2 |: j7 P4 c6 n

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2556 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。& T7 x" Q+ @1 m* a/ R' [+ r

2 p  c+ k% h: h! |3 P0 v8 C6 rPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东
6 }4 `7 ]" J1 @/ C+ p6 C11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-8 06:21

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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