设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

( o2 e0 A9 X& i/ D0 @很快速的整理我自己常用的指令
# C2 i; j. E- S, l
" F( A$ U9 O( i4 g{:4_112:}
2 E/ E' D  S) T" ?# I2 b: ?7 ^) z* F* ~  H" q' j* T7 W
MAME DEBUG常用指令/ j% q# l9 j0 O3 d* y/ ]7 e& ~
& i8 Y5 f# K1 Y6 Z) A! f
内存搜寻: ci, cn, cl
: D- K# s* z# |2 H9 `+ i' E, ~2 `- j! c
    ci* M* C! u& J# L' S& c# \/ f
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
1 @" A  A' G; P
$ D% k3 y5 F% a    cn0 }% ^3 H3 j: r8 H6 j
    搜寻指令, q/ a! R2 P) u+ P
    例子:. K5 J+ o; _9 B9 w
    cn eq,60
- v. ~! a! d5 z. f    搜寻目标等于60 (十六进制)  C! D8 A+ U4 h( D6 q* j
        6 S$ _/ ^' n7 J# A7 n, {
    cn eq,#96
* [+ O0 E+ j5 _    搜寻目标等于96 (十进制)
% v8 F9 ]" a8 e+ d7 Y/ _+ E/ p
    cn eq8 |' Q& P9 |- a2 X; s4 O  |
    搜寻目标的数值没有变化) h# j. p) Z1 X' m7 O: h

9 `- S! H9 {! T- N# \: n    cn ne
: o8 a- ^7 \; m2 M0 d+ W* |    搜寻目标的数值有变化
/ g, C, ]' o; l% |# i. c: _          G' a9 d  L, q1 o
    cn +
$ q& m4 ?) R; F4 T2 N    搜寻目标的数值增加
6 `9 J# s5 Y6 X& F, t- X    % X' @- u3 m2 o3 C1 x9 Y) z
    cn -
9 }0 y* l( n0 }' d  w3 k    搜寻目标的数值减少
( A5 N* O3 r' W$ h" h" g3 Q+ l        $ y, L8 n) C) j/ Z
    cn +,3
8 Y. m) @! h6 n6 k" l# S    搜寻目标的数值增加3 (十六进制)) w  B- Z1 K9 p! `+ A5 J- t
. x0 m* N1 W7 }  B
    cl
$ v4 Q" A$ C# I    列出所有搜寻结果
  \3 k! D, ~, O7 ]; ]1 S0 c' o7 A( ]4 O' ^$ j% R1 R- o8 Z( V
    cl xxx.txt
( i; u; H& k7 r* f( V: O9 Z& `    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
4 T; h9 L2 _3 \- J" D( q8 E) s$ g
6 H4 g1 ?% [! E' S' n" I/ [2 F9 p   
' t% J% C) C9 |) x$ O, C8 L内存监视点指令: wp, wplist, wpclear- U2 Q( F# b+ J8 ?# G3 k6 ^
    例子:
* l8 ~+ X+ U1 E' D0 T    wp 1234,1,r2 o7 W& @& K' X1 @8 z- I6 X9 `
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度18 P. [7 I3 d- b

( P, _3 N2 W& f& B    wp 1234,2,w, e$ ?+ k8 T! M3 o
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
$ e: d1 ~, v% Z: h8 |/ j     * B# |5 n7 g0 k/ F, U2 n- z% @
    wp 1234,6,rw0 N" J% M" u3 H5 u6 b! z
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
6 Y; R  p, P$ B5 V$ n" c9 a' q5 ^$ h: Y( ~
    wp 23456,a,w,wpdata == 1
8 K6 i5 u: k9 w      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1; G! Z9 Q8 P! N0 A3 Z: j) s1 N  P
* M6 ?! q" d& B9 b
    wplist6 m. t4 j+ P* O3 P3 O
      列出所有监视点
1 N. k& v5 B: j) M6 U: y. f* i/ k& {+ d7 t, B, _- i9 d5 @2 y8 {
    wpclear 3
$ }) p/ H0 v+ H9 d! r! N% U! \+ [      删除编号3的监视点
3 Q9 o. R9 @' b/ w6 Z* K3 J5 r
1 e8 z+ a* {; k* G7 x    wpclear, f/ D5 B" A2 M9 o$ n7 _0 G1 }
      删除所有监视点
+ ]% F8 ]& f7 n* i. c# Q5 T! T5 Q$ ~% V! a9 r7 Y2 i( ?
      
& x6 n# [2 \" R
: ~  l% s6 U" g% n7 w+ l5 n程序断点指令: bp, bplist, bpclear2 h  x, l/ r4 ?. w
    例子:* \( I# ~0 z" v- |5 f' ?! P
    bp 1234- t+ W2 v/ @3 h. G& P7 U/ C8 T5 L
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
; ]' S5 v( [+ G$ d" V  F5 v  l, J. K7 k
    bp 23456,a0 == 0 && a1 == 0/ s# n! ^* L" _4 _
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
# E7 [: D6 f1 z8 E6 |9 `) |
7 |. g( Z0 `5 U4 r9 P    bplist
/ k; ~, k! Z* J# \      列出所有断点
# C; |' f4 W6 L: c, O0 G% H# U) S, @' {5 g5 G0 C
    bpclear 3  I0 z( P* }$ S
      删除编号3的断点
1 M  ^/ N0 ]% B" X$ O( l/ ^9 ^$ b
. `9 q7 C3 _! }# G- A  |    bpclear
4 I/ ^9 Y6 B( g! k      删除所有断点) C5 v! v( W; \/ a

% v+ p! x9 o8 Y" W6 h8 s      
% J; Z. K' a$ b" O+ L, i4 c* {      
( Q2 `3 x. k% T- r* u- N跟蹤紀錄指令: trace
8 m6 i2 D! a7 X" h1 ~: o    例子:
3 }; E/ H! ?+ n8 i. ?    trace 01.txt
% t/ X) `; ]5 V    跟踪当前CPU运行的所有代码, 输出至文件01.txt3 D. F) J% m0 G2 n5 _

) ^6 G/ T0 c$ o8 a2 ~' q    trace off
, o) Z: ~; F2 M* w$ N3 p" H1 u0 Z    停止跟踪, 并且关闭文件  @/ _- _# e2 x7 ^6 p
, A0 Q2 ]' D6 h4 ?, Z2 o$ ?
    trace 01.txt,05 F; K1 ^' p$ q0 q$ e- y
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
8 O  @" d, y8 d1 }
& ^* z) E6 A# V: S% _( q8 B. s    trace off,0
5 x$ \! u) V  g: R: v" _    停止跟踪编号为0的CPU, 并且关闭文件, w/ V$ v0 h& o3 w0 D3 s
- J/ x, W1 [* e0 i4 R
    trace 01.txt,0,{tracelog "A=%02X ",a}( i% t7 s% ?, W8 ]: g. t
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
9 V* I4 H! ]: l' [+ F    并且在每一行的前面, 写上"A=a "
# E) b8 o" |9 A, a( p/ q: i4 P    "A=%02X ",a为一个C语言printf函数常用的输出格式
) C8 W3 g  {4 ]4 [3 }# X    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入3 z& U% d4 Z7 Z) [( c" v. A
    X表示为大写十六进制数& u+ `+ {) [: A7 N
  u% O  S# ?. v5 D+ p* I, ^

1 @$ r* u4 y( a/ \6 C# ^
2 D% w( m& n1 ?内存直接写入指令: maincpu0 l0 N5 f+ r8 u
    格式为 maincpu.[][]@地址=数据8 }: M; s" o% A! K! U" b  h
    第一个[]:: k+ F8 G% J6 \5 F- M
    o 表示ROM地址
( U# m; q3 z/ i1 ~8 L    p 表示RAM地址
# e5 b  _( D' {6 ~7 P+ M4 G: _) Z+ u+ p
( V9 j- S: z, L2 S" N" l    第二个[]:
+ W3 o# j. k5 h. e$ u    d 表示4字节
  B- h4 h0 J# w- G    w 表示2字节- e0 p) J$ V9 Q
    b 表示1字节" B( t; C; L& w8 d' x
- U, [4 I9 g2 w- Y: ^' `
    例子:
% A/ t3 o2 _* B  b: D    maincpu.ob@1234=FF' X; A" ^& F, y+ Y* [
    在ROM地址1234处, 写入FF一个字节* z0 u! \/ P9 c! D& k, H
: R; T4 [+ T0 S1 r$ o
    maincpu.ow@1234=4E71
! H0 w1 `. g4 v5 y, b) P% X" |    在ROM地址1234处, 写入4E 71两个字节: U/ U* [* i. Z1 }/ X
5 G/ Y+ `# |, g2 T. E0 Z2 C
    maincpu.od@1234=600A4E715 @# s, t5 Z# _2 b6 E
    在ROM地址1234处, 写入60 0A 4E 71四个字节
; }0 d' t( W$ ?% b0 c& v) A: L) Q: K8 d7 H! q: T+ v1 b
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写1 ]; J! V# H: s9 c, K+ E/ P
   
* \( q% n; J3 N  P
) g  V/ d& }: B% s/ [# ^% |. Z, v  p其他:
6 y( c: n0 q/ w8 Z7 `' W    dasm 输出档案名,地址,长度
1 T$ N; d% M% ^1 ^1 q" m    输出程序的反汇编代码2 Q- @( L$ w$ W1 J- A- [& t
    例子:- i" t9 e7 z# f" f. W2 x- K3 Q5 K
    dasm 01.txt,0,100000
" K0 c6 N& A  f& O    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
1 f8 O3 e3 M$ p  c+ X5 d1 P  ^  @0 k& s5 T& P9 i+ g+ Z
    softreset
! T. \. @. A6 {' ]    游戏重启, 但不重新载入ROM! k8 a3 E2 P' J1 u" o. U
2 h0 w2 {5 z* ^* r/ t+ I
    hardreset2 A- l- s( y8 F' c& T
    游戏重启, 且重新载入ROM8 n5 B* W1 A0 Y
7 Z; U9 F( c0 Q( ^& C) f5 t0 y1 D
    snap xxx.png* M" @* j- b- U
    截图为xxx.png/ p* j9 ^, y9 Q+ ~- y& w  N0 m. [9 V
, Q$ G& Q+ D5 E, v3 ^- x" Q  v
  * t" m* e1 V9 Y. l
  
7 m' O2 s5 H" [5 [; m) Q. N2 Q  : I. ?( q/ ?1 |+ P4 O% j% E
热键:
6 l3 }; m  O* _9 B, V    ~ 中断游戏1 S2 z* v/ u, \* `8 A! S& f* J4 K
    F5 运行游戏/ o: z3 ^0 ?4 ?7 p$ S) q
    F12 运行游戏且隐藏调试窗口
8 y  o- S3 ^/ e. J: Z+ G( j- j4 ?! ]    F11 步入, 单步执行, 会进入子程序) v2 E; I' U# A+ g# P) b
    F10 步过, 单步执行, 不会进入子程序
: r5 p+ D. p/ b: b# O; b    Shift+F11 执行到子程序返回6 z8 ]. ?4 ~" K: Y! A- A
    Ctrl+M 内存浏览窗口
" a7 Z; ~# f8 \. D  g' n    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
( m' U4 i& R. [* G( U& N9 |7 M9 W' ?8 {3 b* ?  D+ S. {
{:4_94:}
  @+ R/ S5 S+ Z8 _( D
" \) y; @8 }0 T, z. Z

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2558 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。+ |8 N! W) {0 ]

5 {6 X0 D  U6 oPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东) I  f$ t. o1 ?" }% K* H* B
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-9 01:39

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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