设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
$ I6 ^; W! z  o# T. t
很快速的整理我自己常用的指令0 q( O$ _. [7 E/ p
- [1 l, o/ U* v( N/ c9 C% r  [
{:4_112:} + [; T4 D* \/ t1 M

$ y8 R$ U) n) R+ v# S. f9 C7 nMAME DEBUG常用指令
* Q* Z3 O8 v: }1 R) ~9 |) l2 r1 @
内存搜寻: ci, cn, cl5 s- F. |/ V, }9 B

$ F3 c+ w6 K' `4 I$ U    ci
. _- v2 A- M; [    搜寻任务初始化, 每次搜寻一开始一定要输入这指令: s! e& m$ J6 P

" Q' V) N! C/ D; h    cn$ K8 |: K. z: {! I
    搜寻指令
* b6 g. n2 P0 ]" U    例子:
' o4 e8 D+ U9 r    cn eq,60
0 m' {$ J0 X( H/ Q. }% X5 \    搜寻目标等于60 (十六进制)
' R- i* V! P, j        
0 r1 |" K( I) \    cn eq,#96( W: r2 o( J# ~5 z
    搜寻目标等于96 (十进制)4 O9 F6 b- Q  [& s9 w5 @! g
7 G/ A9 J6 ?2 M. j
    cn eq7 Z2 j4 e/ i0 l, G
    搜寻目标的数值没有变化* J. B" |0 d, R' U2 x1 a
+ \* W$ G  D* b+ W' C$ `8 H
    cn ne
& @# _' t$ s( p+ N$ m0 e) A* C0 U    搜寻目标的数值有变化
& R0 O" ?. m$ K! t8 x, |2 y4 }* J8 i        
4 Q! O6 p, u9 e( I    cn +
, C+ f* Z# t4 ^6 d    搜寻目标的数值增加6 H5 V' D  l! p! @' D3 u
   
3 P$ [+ D% b" S9 }* g+ ~7 `    cn -; w! p) m6 T4 p) k# H2 L
    搜寻目标的数值减少
; S% {$ P3 `2 d# ^; X: C        
  Z8 v; d2 a# D    cn +,3
% m7 J; M" x3 E# ]+ D2 Q9 \& g5 U    搜寻目标的数值增加3 (十六进制)
: _9 Y4 e" J, J
  R2 x, Z6 z4 }0 |    cl
( q- D0 R+ ]' Q    列出所有搜寻结果) O9 C2 t8 A" d+ k* K$ J5 h
$ x8 x) P4 o9 `4 v9 |6 a
    cl xxx.txt
4 F" K, [9 V! \' s* c. a    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式3 }" a7 N0 _) \9 U$ t
0 V3 ?( Q3 t& b
    9 K) h: L0 H% Q( S6 [) m& r  c1 v
内存监视点指令: wp, wplist, wpclear; c% d: f% u* I( w4 o5 _( z! d$ {
    例子:' d7 G' U( e  N" U  h! g/ \
    wp 1234,1,r
) t5 ~' _' O1 H      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1. L$ ^) j: x! R# J* m; _/ k0 y
9 c" }& T% W- T
    wp 1234,2,w
$ _) K- ?; r7 ?- |/ C( L      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2! N5 G  p7 j! o1 u2 \, W) ^6 u
     
& i* m8 T- V6 \: ^# D# ]) f    wp 1234,6,rw
+ O5 S6 v" o& s/ Y9 J+ A8 h      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
; X2 e  H$ }7 T8 Z: ~0 `4 i; T- v2 m+ H
    wp 23456,a,w,wpdata == 1
( h7 X* N7 A, x1 a( n, S- z      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
! X4 Q: g/ |# X6 I# {0 E! E' g5 e7 }
    wplist4 a" `" d6 |2 X  b9 z1 J
      列出所有监视点1 c1 X" N4 z5 ^( |' q) I4 U9 `8 l0 }
( O) h* o. m# r! G
    wpclear 3
( s9 v. s- i+ C      删除编号3的监视点
7 s0 @$ k* e% @  k! `1 ~  Y, I: e
6 T% a2 D0 U' e& a5 n5 w    wpclear
2 u+ z5 _+ j/ l! q8 w: l: j' }) M      删除所有监视点' t0 ~7 F. {' l0 p9 Y, X8 I3 j

. `3 v( E( I7 X7 ]      " ]1 D) @8 s) C
0 m( D" c' Q! R8 ^7 s
程序断点指令: bp, bplist, bpclear2 k5 m; p& j! B9 A/ h
    例子:
; F2 Z2 h$ {% s  H$ }& V, f2 h    bp 1234
+ R1 r4 p- e7 S: q      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
8 l: k) `$ v: W: R3 Z: B9 U, w: E$ Y9 M+ S4 K- N
    bp 23456,a0 == 0 && a1 == 0
( P1 ]+ v' M4 `      在地址23456下断, 且中断条件为a0等于0以及a1等于0
- O- m. J& E, {  @% W' k7 ]5 \- d4 L& m$ L3 E  U
    bplist$ L# ~0 j$ o9 P
      列出所有断点3 W+ {+ ?/ y# }4 q& H" I( v

8 S: k3 w( C6 |/ ^4 u9 r& ~    bpclear 3; T# m  S+ O5 f' k2 g8 \
      删除编号3的断点
7 g0 O: g3 O9 A( x, k! q, ]& H/ }9 l* N/ a$ J, e1 |) l
    bpclear
. l- j( h2 }1 `8 d7 a% C+ I      删除所有断点: n( P, ^9 h( ~: E

1 z6 T4 W/ f8 S: r! Z4 }2 |! O. |      
! S( o- D$ X8 N. k/ w      
8 t4 L  j0 y6 O) t$ B跟蹤紀錄指令: trace
0 _: x) ^+ z7 o7 f    例子:
+ |9 j5 j9 A! ~5 t$ m    trace 01.txt% Z' g9 `, P0 X  E' \' v
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
8 m3 ^9 |  T3 G" `$ S! P3 m+ v* C# i0 d# p0 d" c
    trace off  M% Y1 y' M  @& O5 {4 ]
    停止跟踪, 并且关闭文件+ C/ z, G4 n' T: k) ]

3 `# ?& |' E# T/ {# U    trace 01.txt,0% ^, L8 Z( Z3 S! p9 }: `3 t
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
+ P- S( D4 T# Q# g) C1 c/ T6 R0 V1 E
    trace off,0* J( E7 f, n+ C6 v: }
    停止跟踪编号为0的CPU, 并且关闭文件
# g- A- n6 U& C9 k" `! Y- {* [% L- C4 |4 z4 E1 m2 w
    trace 01.txt,0,{tracelog "A=%02X ",a}2 L0 ~. A1 g7 m6 x* ]  r/ O8 S. G8 Q
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
$ b0 \* L7 W) ^& o+ F1 ?# ]    并且在每一行的前面, 写上"A=a "# \  O% w. b7 C6 T" ^6 m3 c, a
    "A=%02X ",a为一个C语言printf函数常用的输出格式
7 y" L1 k0 R4 S    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入( e' h' t& {. H6 b
    X表示为大写十六进制数* C3 ]2 c, q) G# M$ j* M$ @

5 L3 H) d' |( A: r& k: J3 Z! Z" h' p9 K! U  q+ b+ ^4 _
5 j8 I% f9 k+ F
内存直接写入指令: maincpu
4 M7 _; }8 @6 T    格式为 maincpu.[][]@地址=数据
( ]; m; z2 o: s: t* V5 w' q* f    第一个[]:' @* e* \2 E" L1 H% u1 ^5 l6 U1 |9 R
    o 表示ROM地址2 z& D$ H4 T6 l4 W$ C
    p 表示RAM地址+ L& F% |9 Z5 D! U9 F
, {2 ^% n& L2 u
    第二个[]:
, M) L" x9 l$ D6 v! ~9 B    d 表示4字节/ A( p( J1 G8 R
    w 表示2字节
7 ?/ O) j0 v7 }7 T. }7 @' u    b 表示1字节7 s1 ?6 W2 X! z" j" E* i
6 C% C  k6 x7 R7 C6 Q; Y
    例子:
+ ^# j, Z1 U  Y9 S  j    maincpu.ob@1234=FF
( ^4 ]$ ~1 e. u; P! v    在ROM地址1234处, 写入FF一个字节
" N% \" L* B& A& \! U
6 K0 O' K& k3 S; {% J    maincpu.ow@1234=4E71
% e$ t& \/ f! c. P/ S6 x    在ROM地址1234处, 写入4E 71两个字节& N" M5 Y& _9 Q$ d  k

! g  e- ^% s- T$ u5 q    maincpu.od@1234=600A4E71- L: ?3 t( G' F4 F
    在ROM地址1234处, 写入60 0A 4E 71四个字节
1 w' s4 Z! o5 q1 W4 S& e4 w( {
+ ?7 i0 M* P9 D7 G& D' F- F    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写6 U2 z. m5 o* D3 H8 A" f( |2 s1 k
   
, J" `! Z, y0 E2 {
5 z( p. ]: W2 B0 L, {其他:
8 A' c6 l3 @+ k) e" V4 y1 ^    dasm 输出档案名,地址,长度
6 r! I0 w0 a0 L0 G4 y9 L; m    输出程序的反汇编代码& ]5 A. q) d2 M1 ^: A
    例子:5 ]  X+ j9 ~( Y: o0 r+ S
    dasm 01.txt,0,100000
) B  T- C* G/ W) ?$ H    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
6 d* m' X/ o7 ~* W6 p' [4 q8 ?: i6 m8 S& Y/ {# y$ c$ N9 ?# [
    softreset/ k3 z! ]+ C6 v) k
    游戏重启, 但不重新载入ROM
+ h, r  D( i8 F- }5 p
% j4 j$ B6 b+ c    hardreset
0 c5 F7 y1 @0 Q( G/ {1 W    游戏重启, 且重新载入ROM
5 X) a3 }9 J; B) l
% p* f+ ?( }. J  S& c5 C. c    snap xxx.png6 G9 @! o6 ~. p# _; i5 E: k
    截图为xxx.png& ?1 e1 y/ A6 z4 w8 {: C2 G
9 U, W  c* V& k4 j
  
- x, W9 b' |$ P7 m# n! M, o: B  
* q: {# f2 }3 z9 i. d  $ B# v2 l, L- U
热键:; M( G; Q0 \/ b" v1 j
    ~ 中断游戏
& d! n( b+ y7 F  K/ o# b    F5 运行游戏
. N% j( M, O7 D; k  h1 X    F12 运行游戏且隐藏调试窗口
: I& g) s9 M- A9 T9 h& ]- u# K    F11 步入, 单步执行, 会进入子程序; I0 r* c  T& N5 t2 _9 u6 g' Y. U
    F10 步过, 单步执行, 不会进入子程序
$ \0 h1 D- k1 S% _% I, ^4 J+ j: k4 H    Shift+F11 执行到子程序返回
3 Q0 ]! X1 i! a3 |7 ^    Ctrl+M 内存浏览窗口
; a/ q9 D" u5 E/ T2 ^1 X1 n    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU! O$ {! l$ A' J* o! T0 c

2 h/ p7 ~4 x9 K( E, V9 }  ^{:4_94:} 8 v( F* a) J8 u$ b
  ^; `7 V2 q6 N5 I; O6 o  G

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
& H0 {9 @# @) o- _3 W/ G# S2 A# o" N- e
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 | 显示全部楼层
要详细些的东东
: c  }1 w6 t, G11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 18:11

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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