设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

, b6 U/ w1 L& H; e! N很快速的整理我自己常用的指令
. k  `7 z  z1 ?2 C/ Y# F2 p
8 q3 K( U+ D2 Y# l  a- b9 I# l7 v{:4_112:}
% F. O% L; Y5 b! ~, h1 q) \! g8 W% q3 m8 l* J
MAME DEBUG常用指令+ T& l7 z8 o! j! n" `) Z! c
& M7 o/ _# r/ Y3 z0 g
内存搜寻: ci, cn, cl
, ?4 C, Y5 Q1 h& t% P( x9 w2 c) e  l. H  q7 i- c
    ci
# P& y9 s4 F6 F0 y* R1 r    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
) O8 R( t& d6 x# ]3 h. F
) X. i! J/ N2 B. t+ ^+ r( n. c  p    cn& a" Q1 ^+ U: \  f
    搜寻指令- q. ?, o9 O3 M' i2 W$ M& j+ w4 S
    例子:
4 S) a' ]% X- I# S5 W    cn eq,608 \3 o' C# w( _
    搜寻目标等于60 (十六进制)( d  ~* M* R) `/ k
        2 q( M$ ~8 x7 `2 P4 l! G  R
    cn eq,#96% `2 `* W9 \  a$ a
    搜寻目标等于96 (十进制)
$ N6 ^3 ~$ V: e$ J' \& q, d' a4 F- b: Y1 p) k% Q5 p
    cn eq* @8 D8 q* t; [7 g4 ]
    搜寻目标的数值没有变化- r# I  q' G5 E0 h! A

3 H7 S3 N8 t% f1 l" X! q+ y1 M. D    cn ne
/ l6 \- S2 C. }. @0 f! O    搜寻目标的数值有变化
( Z  e- f, a8 X        
' U1 \( R8 V5 y6 M    cn +
, _5 S; d0 D/ p! A) R& i    搜寻目标的数值增加  n3 o1 p  B  s5 e+ r
   
. n9 V& d- J. r  d5 L    cn -  d3 C* x$ ^; L) B
    搜寻目标的数值减少
# n# l' q+ O7 _; D        2 u' ~: m: v8 i9 P4 _' @  i; z4 g
    cn +,3( v! Z' }  u) y" G# L! {
    搜寻目标的数值增加3 (十六进制)- K- e$ w4 L0 W  ~5 H1 ^

, K5 [1 q5 P: f1 |1 ?) T    cl4 V# L4 Q$ }& P" e$ U
    列出所有搜寻结果
. f9 k+ }! i- u0 v, F5 `$ d3 y
& Q! k, a" K- H* r    cl xxx.txt
+ O" O1 g# f6 Q, x9 @    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式: b% l+ O# ^* s4 H- e3 r
* X9 `( ?) L2 z3 w/ a- N; X
      E, ?( `- s. J
内存监视点指令: wp, wplist, wpclear) J" }4 t6 K8 {* h* V. \2 A
    例子:( T6 v" f8 v' @, G: t
    wp 1234,1,r! n- D0 O/ Y& z3 ]: e9 K5 N
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1( Q7 _- ^* r5 P6 i9 ~
. l9 C+ H5 O$ g) L- Y
    wp 1234,2,w& I" J- e9 V: y3 X
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
( n6 W! m% ]+ ]" N: y     
3 k( u; u" Y' A/ R9 j- b    wp 1234,6,rw0 L: I# _" J9 K
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度68 ^' ~: o! j4 m! q/ E/ g
% m1 _1 s9 d9 P% J- Z2 l8 d+ ?
    wp 23456,a,w,wpdata == 1( f* X6 b3 w+ t1 E9 G4 I
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
* V" f' H& s& P$ n4 J9 _) E
( B5 U: H" H! d9 I0 B" a    wplist  P% w' e* s+ v
      列出所有监视点
" j* k& E9 {2 t/ q; Y) M) t. X0 H! H+ H  L4 D
    wpclear 3
+ T$ n# c: E; y0 P+ c8 J      删除编号3的监视点+ L$ ~- z6 g5 e- v* I( C" H6 F- P
( W' ~) e$ M+ |
    wpclear
" @8 Y) n7 i1 T5 P1 ]( [      删除所有监视点
+ P1 Y+ r4 b& Z4 H8 M; |9 A0 ]5 b* I' T, [3 {3 L
      " [. K! V& {+ c4 t( e

& Z# o( H" k6 H9 d* Q5 L程序断点指令: bp, bplist, bpclear$ c4 Q0 D1 u% }4 F$ }% p
    例子:( N+ j, e+ _9 `! ?$ s8 O8 @: b3 v9 o
    bp 1234
' K/ Q( p* b1 |" v, p. F      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
  F; G, h7 _* P) w; \
) |( y) p/ v) }- c* m: @: d    bp 23456,a0 == 0 && a1 == 0
* `6 R; i4 K# Q/ H0 \      在地址23456下断, 且中断条件为a0等于0以及a1等于0
4 `0 V3 b  M# i/ r" h/ E0 B5 f, I# `6 f9 r5 Q) P
    bplist
+ D7 B% m5 E! C. u% x- p) e3 h      列出所有断点
& y8 h* k3 r# Y" k. v
$ W8 d" }* M! I    bpclear 3
- _3 s# c0 ?5 [      删除编号3的断点: x: r. u( o% a  E) q( A

1 U, o( r. J5 L5 K    bpclear
& g2 ^, |1 o' b4 ]      删除所有断点
! l: _  B* V* K  K$ Z2 D/ g- T
' S; k$ J$ @. X8 i7 D/ S      3 }" E6 p5 e6 I6 {
      
7 f& V; @/ _+ R* Z$ T% S  N跟蹤紀錄指令: trace# I/ w3 S# p9 E" z) ]# J
    例子:' ?; y( Z; i8 _5 a8 f
    trace 01.txt
# s: j) O0 N0 e6 w3 G    跟踪当前CPU运行的所有代码, 输出至文件01.txt
! K; g# H& D) T' ~" B+ `- |+ o5 n7 [) V0 r$ e1 D7 C. n
    trace off+ S) V) @' V) |' W) \
    停止跟踪, 并且关闭文件, w. s4 H3 N' R+ g/ m% A

8 J: I% [+ J% G: U/ ?! Q" i    trace 01.txt,0& B* ~2 e' G, C# I+ P7 ^. }
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt$ N* c; n6 R! O& E4 r
& W9 c, l/ d3 u7 b' ~) Q( p2 X
    trace off,0; c. V1 o* g) l. O0 D( Z' u1 E
    停止跟踪编号为0的CPU, 并且关闭文件
0 n+ `8 [! U, Q; A8 m4 F4 ^- j/ J+ L0 Y9 {& ?
    trace 01.txt,0,{tracelog "A=%02X ",a}
0 d' Z" r! v' I0 P) D0 u    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
, W: R4 U" I' j2 p9 H    并且在每一行的前面, 写上"A=a "& W; n4 |7 ]: K/ s0 a  w+ J
    "A=%02X ",a为一个C语言printf函数常用的输出格式' D  f$ Z0 ^; U3 C& e' t
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入; j; v, ~/ I& m9 n/ |8 K. D
    X表示为大写十六进制数( J" F' L2 }$ U' {1 q' s
. L! }3 y( i" o, A

* N3 z2 f; w$ M: f. T. S& g. k' r
4 G* u1 [+ {/ D: {4 m内存直接写入指令: maincpu
- l% q# ?) J  `+ T+ X  N- u9 F! u    格式为 maincpu.[][]@地址=数据
6 l! w* C( m+ I% s% A; `0 z    第一个[]:
) _  F/ E! J6 b" s. y6 c    o 表示ROM地址. R2 D9 s3 h7 H# V
    p 表示RAM地址1 H4 w8 Y; G3 J. U0 P' D  W

; g0 I9 G* O( F    第二个[]:6 n$ h7 v0 c2 ~8 K6 `
    d 表示4字节
+ t$ w4 U- o$ N9 g$ k; D    w 表示2字节+ w6 p" D, f- v& q% E! F- S/ D) l
    b 表示1字节9 F/ q! H' t! e# Q! K5 z& Z
( U. A. L5 m; {4 f# [
    例子:" |& }# }) ^/ p, B' V5 _( q
    maincpu.ob@1234=FF
3 K8 q8 v. V3 K* w( @( ^" E4 r    在ROM地址1234处, 写入FF一个字节
1 S  l& V3 C$ {" h4 y: O: S; u1 W3 b; D$ x* c/ |, M* g& d" \
    maincpu.ow@1234=4E71* k! T8 t- [" [3 ^$ S  Z
    在ROM地址1234处, 写入4E 71两个字节
2 c6 Z" L$ f* I+ t/ c. P- t$ G  Y! R
    maincpu.od@1234=600A4E71  l/ E1 j2 c9 s/ e/ T
    在ROM地址1234处, 写入60 0A 4E 71四个字节8 }  X0 v- c2 A0 f* V( `+ b  |
* m7 ?" j9 P8 i; n
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写# X" i; ~* U2 Z- T' i
    $ j* U; q" F. i0 j1 Q1 V! V6 X
1 V( y8 _+ @$ I6 Y
其他:9 {7 Y% _" Q! K" q: G0 A! a
    dasm 输出档案名,地址,长度* K3 w) R4 h0 u' C
    输出程序的反汇编代码- n1 z, D3 {' [: a
    例子:
) M1 r# x$ A: u% a- ?- q# x    dasm 01.txt,0,100000
: d0 O" K7 u- g/ ^' n8 J) K    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
) B+ z$ \! e( y) {" Q1 b6 b
# n* ^) D: m  E& Z9 F    softreset$ P* G, t1 U0 r
    游戏重启, 但不重新载入ROM' [- r  y% c( l& ]/ x4 y: c( M
. \; S6 S1 O  G9 B4 c; n2 l
    hardreset$ t5 M6 i9 i- P' f* U4 h
    游戏重启, 且重新载入ROM
% z2 S" f1 u( d# S" K5 M# G, J, K8 g: L5 f5 s8 V9 K6 p
    snap xxx.png
, ?  T% R5 p2 R; G. o  E* z( T    截图为xxx.png1 ]; s# [$ l& ^/ Q( F- Z5 M  X

: A$ c! ^1 H7 B, D  l; B- Q0 y  
; x+ A" {* a4 h, g/ a6 B( a% q( ]* z' j  4 i0 u" p) I; u
  
- Y( l7 O4 E! A7 v$ ?热键:
" ?; T0 |4 {0 {3 }  {3 X    ~ 中断游戏! `1 f  A3 A" J" Z& L
    F5 运行游戏% l; v/ m5 `  [5 B4 q8 k
    F12 运行游戏且隐藏调试窗口) \5 |. ~. n9 M/ J, h8 m/ s
    F11 步入, 单步执行, 会进入子程序8 \( y: R5 f$ ~9 j  V: K' |# a# w- w. U
    F10 步过, 单步执行, 不会进入子程序* L3 n" `" Q% k9 t. `3 X7 [
    Shift+F11 执行到子程序返回. [0 y0 E& H$ C& A
    Ctrl+M 内存浏览窗口
8 ^2 b+ l0 e% R/ m% c3 u    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
1 e+ k: z/ K) n9 c* ]- t
# K! ~' e- F8 u9 m3 b* L{:4_94:} 9 z+ d' r# f6 G/ c; y

+ R. D5 V  N/ K& K

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2569 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
6 h" z) P: M0 t) G# z, L0 z$ P/ V- _. ^: S8 l
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 | 显示全部楼层
要详细些的东东2 }2 `+ J) H1 x8 h; ~& k0 C
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-24 22:53

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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