设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
0 h1 O% f7 W/ m6 s8 b
很快速的整理我自己常用的指令
! d& R% z/ L& v. |( [* A# _* T1 J& {( F8 m1 s
{:4_112:}
* H( ?& J1 m% L0 B
: ^1 N' Q9 l" |; P2 U* b; ]MAME DEBUG常用指令/ t+ [, M8 t" E. v3 h

) ^+ `' _& S- |" L0 m, ^# _内存搜寻: ci, cn, cl/ P6 I) H, J3 n- q8 r1 K; \+ B

0 o3 z/ f  J7 X% i1 I5 G    ci8 L2 `: A# C7 f( h
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
% E* J1 o- e+ q5 }. Z
7 E* z. q7 S# c  W+ H# y) y/ x    cn! t, G( g; ]' c% [+ q+ U$ ?9 j% A
    搜寻指令/ v; P( C" O3 \( t
    例子:% |* b/ z. d2 |) b* W3 Y6 w
    cn eq,60& A7 v; {7 J; m; v5 n
    搜寻目标等于60 (十六进制)
- |- d" t( g- S& e2 q, _        / A  q( i- v9 I# I" k. w" \
    cn eq,#96( H/ |- X: M) c# {! u6 A) p' N
    搜寻目标等于96 (十进制)) t7 X6 @3 ^0 ?6 ]- s# i

4 }0 `2 m9 c! E$ f% e    cn eq
* o9 k' Y. Z' W    搜寻目标的数值没有变化; C! C# f, Y7 c7 m

3 n* v  _6 i/ j. J1 O- U    cn ne1 P2 H2 D" j8 e( W" x& F) N8 r( {2 S
    搜寻目标的数值有变化" d5 {& q% ~. d; F/ c. W2 x5 N
        * u% s2 O( u$ u' I' ^/ N
    cn +% R3 I$ M- B% F; g1 T/ u
    搜寻目标的数值增加
3 X- }. [8 ^2 M& c! i  i: [1 K, x   
; k& }6 X2 S) B2 M    cn -) m& l3 _* Z# K
    搜寻目标的数值减少3 Q8 ?/ g- z! _6 ~. k) q
        
  F. h. v. K3 i6 t5 P# U  n    cn +,3
. k. y  \7 e' p  n' L    搜寻目标的数值增加3 (十六进制)1 a2 l( p/ x' r9 `3 D
4 T1 |7 N7 J9 J: \
    cl
, _: [5 r+ W1 A+ X% o) G    列出所有搜寻结果
: i( B+ a2 J+ n* `8 }0 a7 A! [! E& w$ |6 g. O" b  Q& L
    cl xxx.txt
5 f' l/ g0 V9 M$ m, M    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
3 f, m# S2 O) \: p2 H5 a8 ]: ?: p/ ?; x4 p. C0 S
    ; n1 Y1 {; U4 @$ p' ?& P
内存监视点指令: wp, wplist, wpclear
/ Y/ y2 F* Z9 s. x! b: e    例子:6 g" e3 Z% ~% d" H; u' x9 [
    wp 1234,1,r% a/ }5 ^8 c# v; x3 w* L  s, k
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度15 K4 z# P1 f* S( E

! p9 V1 I& b$ j+ O9 F! l, q1 T/ j1 R$ ~    wp 1234,2,w; J2 h9 k) I4 Z; ^3 k$ ^8 g
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
+ D& }6 p) u' E0 {" @7 Z! d4 I     
0 k3 I% c6 r: x# `; c# R! t- G$ {; V    wp 1234,6,rw
; F+ m+ t. w( T. l, ^      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6- \- i3 G( C2 e( [

) T0 t0 {- K# U9 o- |6 h    wp 23456,a,w,wpdata == 1
. p. ^  Q$ [( V1 `      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1) B0 ^5 f5 B! ?# r4 i

- b8 |; Y! R8 {" t    wplist
9 B, ]8 w( j5 T. `. ~. v7 R      列出所有监视点& |8 p: W; D. z5 u
  D8 k; G. [9 P9 z
    wpclear 37 J! P+ y; e2 P4 \& C* w& z
      删除编号3的监视点- w. n  ^# r% X6 Y

* t! H8 X) S7 }  d    wpclear
" U3 }; N" Q% v/ [3 N2 g      删除所有监视点
% U" y- J2 ~6 x; r2 V0 F; T; s6 S* G% _% G  P3 c7 ^6 X# @
      
0 _% d% B* Q/ T8 C: {' S) [, H- ?( r
程序断点指令: bp, bplist, bpclear- Q, J9 P# g6 r! |  g) r) k
    例子:+ Q* k( w1 Y5 k$ ~6 S6 y
    bp 1234
5 S2 V+ C  o. O0 S' N, T* V      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断' T* i! W+ _1 r

) S$ K: U. T( _6 Z9 O    bp 23456,a0 == 0 && a1 == 0
0 k3 U  q/ M' |' f$ A      在地址23456下断, 且中断条件为a0等于0以及a1等于05 G4 W0 f8 S4 r+ E
0 T  D6 e0 y3 `0 v( T" |
    bplist
2 Q% U6 h# `0 C# h8 m, W. P# v& _      列出所有断点
, i: ~% Q$ Z% r2 W/ W4 w' i; z" q" R7 a, x
    bpclear 3/ ~" u1 p! C1 c4 h1 Z$ a
      删除编号3的断点, W8 ^' F& \) u
8 Z4 u" B. ?8 Q' x
    bpclear9 v: f2 E4 F9 D  K  i/ W% A
      删除所有断点) @7 e1 Z! ]9 Q$ [2 M1 a3 m7 v
7 F) [3 a% U4 Y, }1 d; ~
      / q6 t2 u# P1 V: G9 S8 i2 L8 L2 z
      
6 F! N1 q! i8 h' R, j& I9 M7 X跟蹤紀錄指令: trace
& Z( W3 w- @% X- S6 t; Y& u    例子:, F8 e# k) a) S7 k. v( N3 A  V! n
    trace 01.txt
( d$ w7 i0 j6 x3 @4 c    跟踪当前CPU运行的所有代码, 输出至文件01.txt# t. N2 q9 Z$ i6 m( n8 J

6 c& ]$ f9 B1 o; [9 }    trace off  G, K) g) z: Z
    停止跟踪, 并且关闭文件2 ?: p5 F, I% t8 k/ P

" [) A' ?6 W4 G" r  f    trace 01.txt,0
2 {) P; b$ e0 \" C( ~- y    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
# O, O& i% H! y3 I6 [9 S
/ J. f/ o1 ?- A; F! M$ L" N! D    trace off,02 g1 C# p1 X- s, l  x2 F
    停止跟踪编号为0的CPU, 并且关闭文件: D7 H; {3 C. p8 L2 y( {: a

8 h! g* c8 i( O3 n  _    trace 01.txt,0,{tracelog "A=%02X ",a}
1 h- U4 b( |& q    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
* D- y; ]5 L  h8 e- H    并且在每一行的前面, 写上"A=a "0 h* `# N3 x4 Z0 \7 Y1 N/ O
    "A=%02X ",a为一个C语言printf函数常用的输出格式
' D6 R6 K' q7 K' w$ ?% y, _    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
0 k9 ]- E4 b0 L    X表示为大写十六进制数
! h. Y- u  Y& F1 ]5 ^7 b: s2 j/ h/ I4 H# f# e# W
$ R% N# S, r6 T; g4 c9 j1 m6 E6 n

; m1 O9 ?' a1 C* s6 o内存直接写入指令: maincpu" ^( A: n: P5 ?) L+ x% V4 q; ^
    格式为 maincpu.[][]@地址=数据, Z) f% @9 N. g$ G
    第一个[]:& {/ Q  G2 ^7 B
    o 表示ROM地址
$ b- E  u9 F1 ?    p 表示RAM地址
0 |/ P3 T5 t: P7 Z/ W% _9 v3 x
( ], O' Z" q9 _# T2 N    第二个[]:
$ i. F; a/ F+ i, ?    d 表示4字节( e" a6 F8 _4 U% U5 P. m5 U
    w 表示2字节$ L2 D5 g7 V9 m& I* G6 ~8 }% q
    b 表示1字节# c1 M$ f- f" }/ A# b
" l" |' M, E: ?# q
    例子:
+ e, q" v: E8 `  N    maincpu.ob@1234=FF
, V4 m5 O8 j9 E; B( {( ?    在ROM地址1234处, 写入FF一个字节- z+ t# q! U, Z9 p9 `9 \) m

, n, m2 s" v6 |! J& I  M2 M) `    maincpu.ow@1234=4E71
5 g2 B4 z! A' ^. T/ z& j5 ?/ f    在ROM地址1234处, 写入4E 71两个字节
* H' B4 r$ N7 L' G" r; Q) O% u0 P2 ]  z; e. o# a- y
    maincpu.od@1234=600A4E71
3 C1 V- m& W7 [8 `: r+ V    在ROM地址1234处, 写入60 0A 4E 71四个字节6 J, b/ Z& F- J6 N) f/ X9 s
8 v' E" {. V& V! [
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
, Z$ `& h, ^* g  x5 Y2 {   
, l5 S1 c' W; e6 Z( ^
% A5 g2 V9 L* g& g其他:: F( p$ G' w. D
    dasm 输出档案名,地址,长度5 h& m' T% u/ l$ t% {3 z$ ]
    输出程序的反汇编代码% `( C+ T9 o* P1 [6 q
    例子:5 X& l+ }# R' W! ], i
    dasm 01.txt,0,1000007 \' ^$ Q) X7 C9 _& r) ~) [
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt1 G) ^" b/ i  \

+ t7 p, b! k6 Z( q. E    softreset
/ o/ `( x2 L2 }+ z    游戏重启, 但不重新载入ROM3 O- V# ]3 k$ n# _+ Z( @0 G
- d' D( `3 m" P) S& Z
    hardreset7 M( {$ a% v7 _2 _7 l
    游戏重启, 且重新载入ROM
' g" R8 ?0 l2 Q0 N: Z" ~! U: O, v, t
' J8 g4 R/ z1 [& f    snap xxx.png
7 O3 j- i" a0 c) Z9 j# f( t  g    截图为xxx.png. l) u4 T+ @& Z( x; P6 H& G' z* [+ o0 l

  M1 l1 i$ E) @. l# h  . B* d% \: Q2 a; g+ z
  
$ p' v+ F# x. M  ! G; y' {8 A/ l9 L9 p
热键:& x1 j, N2 _/ ~' B. m( A( }; b2 [6 S
    ~ 中断游戏
, f, x$ X% u! P1 W) V: S/ S    F5 运行游戏8 Q1 {: J. c! ~7 k" n) U( b
    F12 运行游戏且隐藏调试窗口8 N9 o, j1 _7 A& d
    F11 步入, 单步执行, 会进入子程序
( i4 v) N" v  n    F10 步过, 单步执行, 不会进入子程序' f7 m8 I8 j8 i# R( P
    Shift+F11 执行到子程序返回
" l9 t  U6 \5 d2 H1 x    Ctrl+M 内存浏览窗口/ m9 I5 r5 P4 T* @$ C5 G
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
8 G9 M, f$ H" W- g+ N# e1 e: h* Y$ s) t) y. c+ V& h7 f7 g" A
{:4_94:} . z8 j8 M/ [( J

3 z& K/ O) R  B" v" I

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2570 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
7 m" Q0 x- w' j9 Q/ n& K, p6 g2 o' A: F: |! ~' B# T, p
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 | 显示全部楼层
要详细些的东东
1 k( u6 o' S) Z/ Z3 N8 s" C' i11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-27 11:14

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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