设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

. V+ a# N9 W- D# t$ S2 H很快速的整理我自己常用的指令
# e  k  h2 O( i" ?. H! w# W7 F6 N: C& q' J5 I/ t5 t
{:4_112:}
- T. @. t. m+ A8 h2 ?$ P& j+ E: [) w0 k% D
MAME DEBUG常用指令
& f+ L; \7 V. O$ [% O
" N1 i/ C6 J0 }4 B内存搜寻: ci, cn, cl9 j: B7 z, A# U2 h  F

3 D2 O  U, i, s0 O    ci
( _4 b( ~& ^! W* o3 Q    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
+ n0 I* G+ d. Q) b' P( o3 J; x, ]  x* p7 o0 u
    cn
7 T( _$ M6 c1 V0 v; O7 u* U- t# A    搜寻指令; I- D! i) n$ Y; E* X* W7 T; {: _
    例子:! T6 n+ K) Y4 U2 P% I" W
    cn eq,606 Z% ]- i0 v9 O- ]( [- _
    搜寻目标等于60 (十六进制)! m3 K5 b; h: Y- @  N) A* c9 E1 F: `
        
5 x" w( `0 p- z% x( ?9 S    cn eq,#966 t$ {6 m0 [) T+ {
    搜寻目标等于96 (十进制)
+ [, o, N  U* v, O+ B3 D. U
! v- P- |5 _4 K9 E* F0 {& }    cn eq  Y% x2 x4 `5 Y  Y3 ?
    搜寻目标的数值没有变化! z7 M. |) C* _& r9 G% Q
- O$ {! b1 h: d
    cn ne: W- D% r! p: l& t
    搜寻目标的数值有变化
+ ]; l/ Y6 W% ^: Z$ B        
$ E) N) `  I. E    cn +
& c2 M3 J9 h$ k    搜寻目标的数值增加
; g' b1 U" V# m% _" h& J" k& Z   
7 G& m8 i9 h4 D    cn -1 l' D- w2 Z! p; {! r% [3 n
    搜寻目标的数值减少* ^: s% y$ L5 z7 }1 b
        " _9 e$ A$ a6 ?  M& J
    cn +,3" M9 I* g3 I) x" [
    搜寻目标的数值增加3 (十六进制)
4 _! e1 n/ L" q: A4 X* Z
8 D' Q1 d5 n' F: T; K! d3 K    cl. B9 \: f% U0 r6 y0 k  {
    列出所有搜寻结果' ~5 H+ J5 N: ^) p

- G  J3 i& ]# [# ^9 O. e    cl xxx.txt
8 S& Z4 b6 v  @7 \  ?    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式6 ]  {0 h8 t* w9 v9 J

7 q# _" a7 J7 `! }4 m& a    3 S6 q3 G: f9 m. ~; v
内存监视点指令: wp, wplist, wpclear8 s' _* O( T; y  E& Y
    例子:
# E+ M+ i& s/ P% U  N. z    wp 1234,1,r1 [# r( H8 S! j0 g- X. g9 m
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1) N0 \8 `0 S! [( L- e6 {/ E
1 y; H9 x9 e" z
    wp 1234,2,w4 j6 D' l7 m- K$ `5 {& {; I
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2+ t( V! E2 V+ |" l1 G+ M
     - W" p; d  O" k5 l5 Y' v$ ?
    wp 1234,6,rw( _& O5 {! m6 G4 G7 E5 t0 x
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6& |' d: j% w4 A' {

8 R9 w& d: Y4 N* }: \5 g    wp 23456,a,w,wpdata == 1# T3 p7 u0 `: W' g6 b0 I8 `1 G
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1( k# Y3 T1 |, o% C0 C: e# y; e/ f
. y) K& s6 H: [! I$ M
    wplist! l: n/ N( U6 y5 Q: f2 Q2 x
      列出所有监视点; m% g1 Q: t: @& K1 j

1 w  N2 Z0 @8 b6 [, S! {    wpclear 30 b" Q+ O3 P7 m: a4 w
      删除编号3的监视点
- M' G' h: j3 S) q7 D: _1 W
0 @+ `! E( |: a' e# l) J    wpclear% `% L% t" l5 \/ j, |5 ]6 }$ e
      删除所有监视点5 k7 x; S1 n( ^: u
4 l( M% ^/ f& S) x8 u3 p5 {
      1 `8 h' h- L. \
1 `" F1 q1 W1 r- r" {$ Y8 U1 B
程序断点指令: bp, bplist, bpclear
  E* ~! t" o4 Y    例子:' t4 o* u/ V- [# \
    bp 1234
5 G" d& }. ]6 M. Q: u      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
1 W. |  B: O4 F' I! p% Y2 P' |% e8 v/ J7 J3 C4 I
    bp 23456,a0 == 0 && a1 == 0
4 J2 t+ ]/ k- C7 g9 {4 f! ~      在地址23456下断, 且中断条件为a0等于0以及a1等于0! V  Y% n" a! c. W( b: A
7 p: q! x- n, l' W. v% Y" P0 Q( d( c
    bplist
3 E4 Q) l% D: e( m      列出所有断点3 x" D. e) j; P. I/ w/ Z  `- ?* Y
/ W1 l0 t( V7 t9 W
    bpclear 3
2 L- C& Z! ^: y      删除编号3的断点2 I* {8 J- q3 L
0 V, R1 F5 f- m  i) i7 }
    bpclear
6 c) Q( N! k! q  V/ K. U' w      删除所有断点
( f, Z$ V* G. X5 e& e9 W8 @5 H
3 z+ G' u' O, V% e8 }      $ ^8 w' M/ T5 E9 }4 Y
      
, V: Q0 G- X! b: ]- R$ ?# C2 J跟蹤紀錄指令: trace
  O9 n* F1 i+ w5 `% Q    例子:9 [9 `, u+ x: ?. W/ D$ N
    trace 01.txt* l: a5 ~5 }! z+ \6 V
    跟踪当前CPU运行的所有代码, 输出至文件01.txt3 T0 c, V5 T! @$ b

/ V( A( x1 h  N. L0 M1 f, |( @    trace off- ^7 ~6 S9 q) ?( r- l- o# [6 [
    停止跟踪, 并且关闭文件( _& H: n+ i' G1 X" ~8 l

9 m' F7 K4 j, q- J    trace 01.txt,0) F& u* k# N7 z0 ^: Z4 B
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
# \# M: y- l2 D  d3 Z: A2 F0 c5 S0 I" z: O
    trace off,0
) d; I- f7 W- m    停止跟踪编号为0的CPU, 并且关闭文件  n) H5 F2 w1 h: s
; q/ B8 Y' l3 J8 O0 ~4 }6 W
    trace 01.txt,0,{tracelog "A=%02X ",a}( c) t( U/ x% V- O3 ]
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt 0 V1 Y$ s9 l; k7 l& D9 V  \
    并且在每一行的前面, 写上"A=a "
3 }8 n1 _' J0 |2 R/ b. o$ ]! n    "A=%02X ",a为一个C语言printf函数常用的输出格式, Y; r! `( t2 ^! K$ \; }: V2 o
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入  ?3 a9 W1 D* h* p7 L! @
    X表示为大写十六进制数# N; o1 P$ R0 x1 z: `
, Q# a( P) D. |2 w; X

$ Y* L' M, p& L& k8 V; P$ H# ]% _, x4 p# B$ I" \8 \6 `
内存直接写入指令: maincpu  u* U% v. |: z/ A8 s
    格式为 maincpu.[][]@地址=数据- u% a5 S" Z. `0 h% y' N
    第一个[]:; u" ]7 e( a# }) P' r' k2 X
    o 表示ROM地址" r$ a* U6 x9 N* V7 E
    p 表示RAM地址
% J1 F4 l( A+ E( x" d
5 b! X0 b7 {  J, P5 ?5 T    第二个[]:  C& Q( s7 {* c! O2 h6 h
    d 表示4字节& ^+ ?; \/ [+ R( d: E) L1 ^
    w 表示2字节
  ]% L% z' s  B2 R: P    b 表示1字节8 v3 J4 S! g6 U- r# ^! V

1 l- V; f9 L2 k    例子:
: o7 m* C- u& s& I/ L5 Y4 z& P    maincpu.ob@1234=FF
: m8 f# b  [, I" g: l" a* @0 i8 W    在ROM地址1234处, 写入FF一个字节8 r. x- _5 Z( Y' l# ]# A$ h

( r2 L+ t5 ?7 T; v    maincpu.ow@1234=4E71" Z3 I, ~* [  [3 Q( k; V
    在ROM地址1234处, 写入4E 71两个字节
7 G& A) O" Y% y) |, k
* n* L% s. U! K6 J    maincpu.od@1234=600A4E71: c' x1 r5 ~& e/ h
    在ROM地址1234处, 写入60 0A 4E 71四个字节
  v5 U7 i9 ^' D( h+ B$ o6 U. c
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写0 W" d$ l/ U! I; ~: z: X! L
   
& W: o% Q# ~7 k  e9 B$ R* T& i1 A9 \6 X  K3 ]4 p# k
其他:9 B% a/ a8 P6 V" P2 U# {5 f
    dasm 输出档案名,地址,长度
1 O" j6 f' G& R' h$ A+ D    输出程序的反汇编代码( d1 G) S9 T' ?& P- e0 g
    例子:
% C8 Z1 s' X" y    dasm 01.txt,0,100000
7 w" M1 W8 ^- f: n# p5 G- h+ ?+ O, L. n' u    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
6 W+ x$ J& G1 ~) T: I. J* u# Y$ h
4 b: w' S8 X) [) @# g6 ?3 D    softreset
0 t$ R% @9 H5 \/ u7 E6 F    游戏重启, 但不重新载入ROM, {- P( t& e) n1 l, D, W/ H

4 B: {) r4 h$ \- V# G, X4 O( s    hardreset
0 ^% j# v  k. o( \. A3 v" q1 B7 D, w    游戏重启, 且重新载入ROM; M0 z) R' j& {* Z8 o# T

* I# [  o" b; ~+ r% F1 b: y$ j    snap xxx.png  [, g  ~; _2 N  a1 y- `) D4 U# e
    截图为xxx.png3 O3 A$ t. o5 H0 d% K$ U
& i/ I' @* w: q5 e' ^/ _; Q3 k
  
$ D. ^+ W$ x* L: Y* H8 j& d6 M$ L+ \  
0 B+ S% Q( S+ k; X- ]  
$ h& m: M/ D; z3 M4 ~( e; I" B热键:
+ R0 v$ E; [/ B6 W! H- Y, u3 V    ~ 中断游戏
0 z, ]5 z; E- K# u7 s2 G, j    F5 运行游戏( |% |, J! d2 I1 c( {# {9 N0 U1 R
    F12 运行游戏且隐藏调试窗口- Y- C+ f: \/ |
    F11 步入, 单步执行, 会进入子程序
# g8 M# {) X; Q! l    F10 步过, 单步执行, 不会进入子程序
; S0 M; r# f! n' T3 R0 `' K    Shift+F11 执行到子程序返回
. I$ y+ x7 a9 @- b7 N5 G    Ctrl+M 内存浏览窗口
) _. p/ o$ T; T    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU% ?5 `8 l3 y3 X, d( ]

, O+ ]: Z  m, ~, E: q{:4_94:}
2 N( ~- Y. w7 Y/ C# J9 [
% R6 h- ^$ @4 P) t0 s- @

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2559 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。+ w% ]  w' n  I2 f- \
1 z/ N" C3 f+ B6 O- s% [
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 | 显示全部楼层
要详细些的东东, B! I) V2 y  C' _0 V/ y( j2 F
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-16 02:06

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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