设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

欢迎注册EMU618社区论坛

您需要 登录 才可以下载或查看,没有账号?立即注册

×
! M6 W; Z& u9 p+ d
很快速的整理我自己常用的指令; y7 L* Q) I7 f; f0 C
5 ]5 R) b4 Q; O. A+ O
{:4_112:} # b* h* t" i5 e5 x& H+ ~! R( A7 C

; ]4 y0 ~1 Z3 d1 rMAME DEBUG常用指令
6 ?/ {1 b+ }( j( m) J- a
+ V  O; I, Q' k+ O内存搜寻: ci, cn, cl
( K. L" S* d, u' m/ {+ C6 m6 O! B' o% w5 h3 J; k
    ci
( W) h4 {& E' n  f, p    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
6 S2 h* X: ^  v
  V+ G+ L( K4 |% x    cn
& d1 {2 E) _' u. \, n6 u    搜寻指令
/ m! D5 ]- ^9 H& R    例子:) R  ?# y, O1 @
    cn eq,60
' [" C  V- J) m! R    搜寻目标等于60 (十六进制)
' c4 i1 _" m+ O* ?2 O0 d, x2 \$ N0 k        
( I7 N! Z+ Z, e* D4 b$ ^3 l    cn eq,#963 ?$ M) v* y% M8 x
    搜寻目标等于96 (十进制)( w2 J4 ~! y+ ?- T, W% U8 w

' \0 ?2 N+ b6 E( ?    cn eq  G! n+ Z4 c, B/ v6 }
    搜寻目标的数值没有变化
( ~2 S! h3 D8 M( f! ^# ~0 V0 q2 a. P. @5 H4 p: H. Q, w+ m
    cn ne6 @% ]3 L! Y. t+ T, c8 {) B
    搜寻目标的数值有变化
& |. T! C% N2 L1 O! g! _' u        
. C$ j( L* E9 M2 m8 Z, W    cn +3 p% l* ~# A* k  p
    搜寻目标的数值增加
7 s7 H: w: o, s! v; J; v7 a) ^   
6 t# u) X. q- h. a3 \( p. h. _    cn -
8 Z$ }# p# x' |7 t0 H4 N! o6 Y    搜寻目标的数值减少- H2 i9 e$ E4 a5 Y* g% z  P
        $ E2 N6 I+ J5 h& X4 K4 ^9 }
    cn +,3' W7 b* R' E3 Q$ Q6 |
    搜寻目标的数值增加3 (十六进制)
$ f; n5 V$ c6 J5 }4 R8 Y  N9 J6 g% W1 e$ ^* A6 Y$ M
    cl
8 y5 e2 `+ I, ?: a    列出所有搜寻结果" ]$ I6 @* R& \+ ]$ D8 ?
. |) O  m/ c& t* i4 s4 @
    cl xxx.txt$ z: y/ n2 f  n; w7 j- Y
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
2 x- J* ^" {4 }1 c' M  H
' X, e% Z" {1 D# {5 ~   
% ?! @& t1 T/ g: [0 W' \6 @& ~内存监视点指令: wp, wplist, wpclear
9 [1 ]5 }: G% I* B    例子:0 ]; U$ q9 I, U" L  R& D, v; u7 n
    wp 1234,1,r
0 x6 K4 t' t3 [' z5 z; @  G, l/ w9 r      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
& I/ V. k2 F* \4 y, V$ G2 d3 h7 _
: X3 H8 y( b9 t$ v0 c  V$ N+ `* s    wp 1234,2,w+ P7 D7 K4 v+ ~/ d
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度20 v& L9 L- F1 S0 S+ c
     
, Q( z6 x! c* i" R& R+ W$ f    wp 1234,6,rw' W4 z% K0 L' A. ]9 Q" z; o
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6+ n8 @  c: J6 p6 G8 _0 F
; Q* N" n& U9 ^2 i0 H: z
    wp 23456,a,w,wpdata == 1
' }1 M1 x( d8 ?- i% S* g  O      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1$ A% }- a& y5 r
  e& n9 C! W- Y. `* f  w
    wplist
) H" k2 o. {0 V  S$ [      列出所有监视点, ~# V5 O8 I  P1 C6 c
& A1 z% [" n2 m
    wpclear 3
' ^; D" w' \. g9 N0 ^! F; Y( T, U      删除编号3的监视点+ b! \& F3 ]7 E; c  W+ T0 x7 n+ p, ?5 \
: w# H! r, _8 k' c9 [8 C
    wpclear3 I9 v4 @" ~- G6 R' N
      删除所有监视点6 c3 u, P/ J) B5 j" L
7 r; {2 i$ }/ W0 u% v# P/ w
      
8 r! [1 r0 {1 i0 f) U$ l4 y6 [) U7 Z. i0 L4 z4 D+ X; m2 f% M
程序断点指令: bp, bplist, bpclear
+ h# o, x2 t$ n' Q2 h6 E2 B9 G( M    例子:
3 i8 f+ z5 [7 G4 a    bp 1234
( J0 ]0 `  a# X8 D) Y$ c1 \8 h8 S      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断# F4 F/ p. r, `8 z4 @
9 y0 c! {$ o8 q* J1 L
    bp 23456,a0 == 0 && a1 == 0, O& d1 K- V5 \7 t( ]4 ^/ g# O7 W" S
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
; O0 R' `# U8 g; V$ R& J4 M1 V) `
4 |, f5 p' F% v# S. {0 }# n* o    bplist% N% b/ T5 J, l$ m# s
      列出所有断点
/ W% w9 h% ?4 ?) P9 }$ ^8 d$ y" v( q' L' B+ q( k: ~
    bpclear 39 C& v* |! n8 F; c8 u5 A
      删除编号3的断点" o* S+ @& I) @. T* Q

& f( t* p$ g% M, E" N( K( A    bpclear4 J& n2 @( H: d- Q, o! D
      删除所有断点7 k4 f" I  a; \. T  s$ u" S7 c' F

3 X8 N# i3 ~+ r$ V- A5 v1 r! J      7 L+ D3 z# v2 R% b5 `4 V
      ) ]8 }0 Z; H6 ?+ ~' U2 l
跟蹤紀錄指令: trace$ r: B7 Z& h* F  ]6 s5 I9 A$ T
    例子:
0 m! ^  t. H0 Q2 l    trace 01.txt
. Q  A1 k+ X0 X' `5 N    跟踪当前CPU运行的所有代码, 输出至文件01.txt
- U4 I# x/ @  f5 x/ U2 k" v6 v' K9 D7 O
    trace off
  @) Y0 ^: T3 [2 w4 `- x    停止跟踪, 并且关闭文件* T5 j( R9 I. V7 @$ Q4 ~1 G9 s8 w
9 t" i, F0 l/ y+ \% {0 u
    trace 01.txt,0
) W) q( y7 ?, Y$ t5 h9 J+ X$ n% k    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt: _6 k$ j% b+ D
; L9 o8 M4 s1 d
    trace off,0! m. M+ Z# ^, F! |
    停止跟踪编号为0的CPU, 并且关闭文件
) P# q, b) ]6 q; t2 A, Z; o' G
& j7 ?. ^; N. }( a9 y  J8 l    trace 01.txt,0,{tracelog "A=%02X ",a}& \) Z( e# y; o
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt - U% ?0 _( ~" H) V2 r$ F1 l) W
    并且在每一行的前面, 写上"A=a "( T3 P- k4 h  ~# A6 y8 _* E
    "A=%02X ",a为一个C语言printf函数常用的输出格式
, A. @0 d" {, `4 q6 U, n- k    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
9 v3 U9 `/ C6 r  Q8 r: T    X表示为大写十六进制数
7 B+ V! w. r# D( g: i% L( @! Z* @* _% Y2 A
. g! I% R: H6 |8 m" _- k
5 |; q3 x* ^; {0 o9 }
内存直接写入指令: maincpu/ m' s# ~+ ]( O) W
    格式为 maincpu.[][]@地址=数据
1 Z' E( n. @3 m    第一个[]:
2 g( F- j# |2 n) {9 O( s    o 表示ROM地址, `0 y: i# ~6 r4 D8 a. d
    p 表示RAM地址& E. r: K4 |/ v: Q1 ~1 S: ~& g
( }4 I; }8 ]& m& l
    第二个[]:* J, N. M, N- r! S5 I
    d 表示4字节
; _% [! m- l* o    w 表示2字节
  i9 i. g) ~- P( y  [0 E    b 表示1字节
& T% P* c/ ~' E8 `* l2 j/ G- V+ A
    例子:$ ?) d2 x; u1 ^" a+ S2 u
    maincpu.ob@1234=FF. l/ C& g/ J1 x" L8 f
    在ROM地址1234处, 写入FF一个字节
' ^! c/ k; F  J, b  I0 n: J
8 m5 q3 P( c/ Q" x    maincpu.ow@1234=4E71
1 |" d3 M( J& u: p5 [( o3 `    在ROM地址1234处, 写入4E 71两个字节
. W; x& h4 L4 _* V0 e
! Y/ ~% A  T' w8 M/ l# N1 F% T    maincpu.od@1234=600A4E71/ M  O, \0 y$ X7 I
    在ROM地址1234处, 写入60 0A 4E 71四个字节
+ ?2 E+ v7 l1 ~) L  A4 t1 Z) h; ~: h: J3 {$ m3 y1 O  K! i9 V& i
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
' n, r3 S# r" i! P3 n0 \   
1 a  C% ~0 J: h( M" A' t- E3 G7 R5 n# b0 b+ Z
其他:
* T& P: l: Q+ b, [7 P5 o    dasm 输出档案名,地址,长度
, t1 V( h7 c- I    输出程序的反汇编代码/ B0 }0 |0 o# u7 c
    例子:5 B# e6 m% C! m' B
    dasm 01.txt,0,100000
" H% F5 `" e+ v( P$ V3 j, ]3 T* v    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
4 l9 A2 a* `7 D8 G% d8 s) \7 J0 Q  E2 `2 b" ?8 f
    softreset
. l" N3 D' y% f0 |0 s  H    游戏重启, 但不重新载入ROM! A# U7 I: T+ ^: l( q
* m5 u) u9 b5 q9 _; \6 S
    hardreset
0 Z0 G* Q3 K$ h& W    游戏重启, 且重新载入ROM
! j' b6 k8 W' u8 ?, ^5 {- K' A0 j% S0 X
    snap xxx.png
/ X: P2 M: k% i    截图为xxx.png* ?. e" [" X) E$ n# X0 D* e# f

8 I) {# c) R* \2 k* W    I7 p! F  F$ S. D9 x) @/ `
  9 R- v# A) r7 ?/ f" h
  ' T" v% R" i" z* H  c! U% }5 I7 R
热键:
: v& l" T! W) v) s- Z4 [. D; J    ~ 中断游戏
% H: Q# G  r% n) |0 k5 }! |    F5 运行游戏
" O2 W: E$ x. `9 D4 O    F12 运行游戏且隐藏调试窗口
7 ]( L' B% a/ c" b! O7 ]    F11 步入, 单步执行, 会进入子程序' i$ a! n8 i  c) q, F3 x2 s, u
    F10 步过, 单步执行, 不会进入子程序* c( M8 M. @' ^
    Shift+F11 执行到子程序返回
4 r3 F+ u7 M: {( S9 o  h' @) T    Ctrl+M 内存浏览窗口& v5 L+ f. }( n( R2 ^/ H
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU( f; g% _: Z. N$ G; E, s" {

0 X, l1 H& q, ]+ d; k4 i# u{:4_94:}
# k' U& O8 {! l! n/ c
2 F9 n7 E* J5 }5 h. K( V

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2550 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
( ^3 G( H6 _3 N6 u
; m9 [! a6 j# i- U* C( ?. s+ h' GPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东
# e+ L& g( b, y4 |& F11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋

GMT+8, 2026-3-7 06:22

Powered by Discuz!

© 2001-2026 Discuz! Team.

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