设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
9 R, ?( r& `% R7 W7 G
很快速的整理我自己常用的指令
0 B& c- h5 u) B9 D9 w
( S# j1 |# q1 U7 X5 L# S{:4_112:} " r" R; D$ h5 I8 U8 s0 j% O" G

9 N2 W2 M& B# X0 t- `9 {, V5 LMAME DEBUG常用指令
4 p- Q; ?2 G2 }) }0 ~. \1 t4 x: ~
3 Z& O. P/ \& _' K) j# y& |  M内存搜寻: ci, cn, cl, x, O! s$ u6 F6 L

# S( F4 j6 s" k    ci7 D8 _2 D8 o2 ]* _
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
6 F) D. X- {, y; d4 u; B
* _) \! b' M' v' ]" i% G0 n    cn
5 c& b( _3 T* ?: [$ D* J    搜寻指令2 x* L) u& d0 |, B- v% ]
    例子:" c& ]# R7 H2 W7 O2 t, g
    cn eq,60  o! A1 C7 G$ q) b" z7 M  p3 Q& l
    搜寻目标等于60 (十六进制)/ w0 H" z# T5 D0 }# L6 i3 Z
        
3 z* \* _7 O5 w7 D8 O    cn eq,#96. a- j' j3 S' m3 q. A$ c
    搜寻目标等于96 (十进制)# u: T  B2 b, J- Z
" ^, @5 k' N5 [. o. g4 P
    cn eq
: x+ U# i  _2 F& c& V& m    搜寻目标的数值没有变化
- ^& h, u1 f; {( f6 ^
+ ?  {: C* b. V* x: [- G* b8 Z6 C% }    cn ne
: g7 ^  ]: u! D! e    搜寻目标的数值有变化9 @$ z0 B3 B" V* _! w' R5 o
        
& A4 _5 Y$ P0 R6 p    cn +
( @6 P6 F9 Z2 G: u2 M    搜寻目标的数值增加2 n) Z8 S: D$ d; ?) |9 \5 L+ J! n
   
3 ]8 l: M8 H) C3 W( U% _    cn -. T8 p5 x- `: v$ c5 m
    搜寻目标的数值减少
* C# ]* H& U0 Z# j8 k        
9 {6 O" U" o- F5 l3 R) f    cn +,33 l$ P1 e+ F4 ?- @% @. j
    搜寻目标的数值增加3 (十六进制). Z2 p; E" S5 z) k" P# {
/ n/ l5 I6 ~& W/ W% z1 C
    cl
. c$ V$ F& d( l' }" Y    列出所有搜寻结果
* d/ b% V6 J; A  H: B& m! C* U: Y8 ~# R, N. \1 ^6 d
    cl xxx.txt* X. {  p# Q! d$ L+ K
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
2 i. B. N! b, M1 p' t$ _: ]
) H2 X" k6 v7 x  N2 y   
$ U- o  R% V, Q) i内存监视点指令: wp, wplist, wpclear- I, v9 B# x# h, k
    例子:2 m/ B, N8 A/ j& l& |
    wp 1234,1,r5 |, b0 p& E! t; W0 W' B2 E. d
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度17 M7 S+ f1 i9 E  v" V

% ~( m9 _3 [# ]! A4 @    wp 1234,2,w- K* b" B# ~) Q! `
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
1 k# g- M5 L. G& C. p) N     
- W' J( g8 V' ?# n: _" C% n' Z    wp 1234,6,rw+ J% G+ D( R" e3 V9 \' b* S
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度60 W1 z7 v# _/ B5 v9 q9 q, i: m
7 ]* V& o* X8 E& W- l
    wp 23456,a,w,wpdata == 1) q' K; w# E8 Z0 c2 a  G* s7 U  u
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
2 m5 j% F4 y( B4 l2 A$ `3 p* {
4 a  k9 v* N6 e0 `/ B6 G    wplist$ g3 y) y5 _9 c) l0 {, h" l
      列出所有监视点
% I1 f. W! z  d
! P5 ~9 \7 J9 m! S. A9 P    wpclear 3
  O: W9 S4 c6 T6 Z; t$ `$ V8 u; r9 a1 X" ~      删除编号3的监视点
0 r% c0 _# t3 s% s
7 Z' c3 z2 Z: w9 a    wpclear
0 l" c. C! b- S7 L- F: d      删除所有监视点; j' m  y* P5 @3 K- n$ |& ~
4 m) s) S+ V& z. |
      2 `0 T* |* K. d. k4 {

' b9 f+ q. K1 U2 A& t程序断点指令: bp, bplist, bpclear: F: K9 E( X  ~7 @4 J7 c
    例子:
; H$ K' S& O" @; O    bp 1234
7 K! v0 z$ H1 I8 v, U$ ]      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
/ {" ?2 U* L. o, O) C1 |5 v' H( ?. D, n' t6 g
    bp 23456,a0 == 0 && a1 == 0$ r# R% U$ Y' l
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
7 E$ x( p" ~* U) {; ]$ Y( Q
: v2 z/ _2 [: {( M6 @/ B    bplist4 F' N5 {/ C0 u' o0 J
      列出所有断点5 G5 x/ M6 }5 h
. p9 U7 w; g: O0 L% y
    bpclear 3
+ {$ S) K4 F. [      删除编号3的断点
" \0 P+ k! m- ~3 d$ r) R: V4 g6 s& L+ k/ y& k" G& B  \
    bpclear/ |: Y! N/ ~% t) g: M& w  f
      删除所有断点& R, ^% c' J% h/ g, F

7 S2 X* H+ o. w5 R8 m/ M      
4 U/ ~% Q* |0 z- l) k! b      
0 @+ F7 i7 y0 l3 V7 }$ U跟蹤紀錄指令: trace0 h2 B0 ^6 O: `3 V
    例子:
( s) j2 }: B* q- W* c5 L. F* A/ V    trace 01.txt
; s9 |6 i) O% c# O8 X    跟踪当前CPU运行的所有代码, 输出至文件01.txt
. [9 u# @" i/ _) \" x$ k2 S  d& ]' U9 D
    trace off  }' u3 _( p  ~# N- ]' W5 ?( A- ?
    停止跟踪, 并且关闭文件9 F( Y3 |0 W5 m
! [% j- p6 y* X& F* A8 l
    trace 01.txt,05 ~5 K. }5 I6 {2 H4 X9 H
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt# s) p2 E; [) _0 f1 O- m

7 E& i( H. v0 q' h5 \# Y    trace off,06 @( M# G. l- Q- ]
    停止跟踪编号为0的CPU, 并且关闭文件$ ~1 m$ c2 x. U6 h9 H# ^
, ^+ e, M8 ^# Q- b0 T1 e1 s  }
    trace 01.txt,0,{tracelog "A=%02X ",a}! X3 K6 x4 r) j3 X
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
1 t- c, z. @! R) V' N    并且在每一行的前面, 写上"A=a "
% I, C( M/ `1 q4 N+ i$ A- ^    "A=%02X ",a为一个C语言printf函数常用的输出格式( ~& Q+ S: Y, T' k( Y# N2 y
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入# L1 `: @% D4 F
    X表示为大写十六进制数% b' ~& X; D; b( M1 A) h3 V
; O: u' y$ z8 d/ {( J6 P" ]
8 k# f3 v7 n# U, I

) D' K3 F) ^9 |内存直接写入指令: maincpu) B4 m6 y( R4 b7 y
    格式为 maincpu.[][]@地址=数据
3 T' H  L& n" g$ ~1 V2 v' g    第一个[]:; b, `+ M6 I  {  h( s. K
    o 表示ROM地址/ p9 F# k9 {# g# P
    p 表示RAM地址9 l3 H% c8 f' G. M
( h/ k9 W5 {( u* H
    第二个[]:
, O1 }7 Z8 {: R; C! }    d 表示4字节) e2 p/ ?/ u2 T" Q6 g
    w 表示2字节
* q1 K: a8 p- B    b 表示1字节
/ y% U' [+ G$ C  F9 R! l8 R# O
. ?5 n( L6 s( B+ L+ X$ r  B8 y3 p    例子:
: n9 G" ]: T; l) O8 [7 s, r" F6 p    maincpu.ob@1234=FF' L% ]5 a! |7 [$ X1 O. B
    在ROM地址1234处, 写入FF一个字节
' Y6 \3 D0 F' ~9 \
+ ?# ?! Y( K3 @3 \6 `    maincpu.ow@1234=4E71
4 q9 j8 s- e+ _" K8 V! h$ W6 V7 q    在ROM地址1234处, 写入4E 71两个字节
5 d1 [2 u9 K5 H$ Z& K. _  O5 [: M% M2 m' m! Y+ `& A, M
    maincpu.od@1234=600A4E71
3 M; a: l, w( x. q6 _  @    在ROM地址1234处, 写入60 0A 4E 71四个字节, f5 n2 o8 u* `. n0 m) ?) y/ p
" }5 Y+ W' C1 w6 u* W) l+ [
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写; _' Z$ p, R! D$ P! O8 ~" L
   
( ~1 S; [, n% w# Z0 p; e
7 o1 I4 D$ p/ D其他:
! m0 D  J. A5 n    dasm 输出档案名,地址,长度7 u' j$ _' y% O0 J: J4 U
    输出程序的反汇编代码& S0 G3 Z" M. \) o5 X, F( X% c9 M4 q
    例子:1 D( U/ s2 C  T2 y( ], b
    dasm 01.txt,0,100000
0 W' P  h; y, U: _- B' J7 B/ K    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
  [" F9 O8 @! o; q
8 q! Z& z8 K' w) U) F    softreset
; l" @4 d+ P' N5 e/ p/ J( W    游戏重启, 但不重新载入ROM5 T8 U8 z' d# h" j- N- y
1 S. b( r( K! z! s- r$ M8 R
    hardreset  E+ R6 K8 m# V4 L
    游戏重启, 且重新载入ROM9 i) A- ^# F% n0 Y+ _& E

" F2 B. G' w9 ~. T- x) g    snap xxx.png- m  m& N5 T& z) K: v+ ^
    截图为xxx.png
+ E% T6 w3 B) o6 A: d$ }  E( _( D) f' M) T. W% W
  
& Z) D3 M  Y7 a' ?* v# O  " u( w) J! b1 M" Z1 F: M* S
  ( B4 \7 a" H9 R+ ?
热键:
1 g. y5 A" S( F# i$ D    ~ 中断游戏, G! J6 T6 [) h) g# c( i0 r
    F5 运行游戏
. J. H/ C" P9 C, a$ t+ U8 {    F12 运行游戏且隐藏调试窗口: G: y0 v3 d1 N
    F11 步入, 单步执行, 会进入子程序
, \+ m$ g. B* T7 \' P. X6 ]: q2 s    F10 步过, 单步执行, 不会进入子程序
7 ~. X2 b  d# z& I; j    Shift+F11 执行到子程序返回
% c( ^; N2 y: |. z    Ctrl+M 内存浏览窗口
- q  I5 Z. [. Q0 l2 H7 l    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
! v' Q: w& r. w  b8 y1 H6 i, F( P0 G" H) Y% [# |
{:4_94:} 7 v. J* U5 K. ]1 F7 M, k

7 E6 B/ y: A" g) Z' r- ~  h/ r

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2556 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。$ u) Y* O. z# O/ H
2 y" {! r3 U# h$ f# K* Z7 F
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 | 显示全部楼层
要详细些的东东
# n" ]. Q3 W) W7 X# I- f11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-18 21:35

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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