设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
8 y2 R! Y6 F+ y( T$ J0 b
很快速的整理我自己常用的指令* D  Y' \# d. q' n$ K

3 ]# @/ z) i- d8 t) ^, G2 G* F8 N{:4_112:} . v- Q2 T$ I* c) O% h

5 S$ @2 m5 b$ ]  E; H6 RMAME DEBUG常用指令
# B. s# @$ y& d! s& i6 N6 a+ K& P, j2 k
内存搜寻: ci, cn, cl
! |5 h! b2 Z9 M) d1 `, E1 @+ E
; m* z) p7 ^1 |: X: r    ci3 Z7 C0 b( d1 S- h  ^
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令: Y! _5 d! W7 N. P  i

, H2 W+ [% G* G6 |; [' P2 O    cn
7 I; J) V1 f: R    搜寻指令: }+ \- @3 K! q
    例子:
. G( P5 ^- A1 q* \' {; F# Q    cn eq,60! E0 h% v% x+ y$ \+ C" h
    搜寻目标等于60 (十六进制)/ Y5 K; f8 w: P# ^, ]
        # S) P/ ~1 F0 Z9 [; w: J1 \
    cn eq,#96
# c* s) n. c/ f' c4 }    搜寻目标等于96 (十进制)2 |" R" q3 I% m8 @" ]* H
0 t# C' D1 ~4 h( N6 e, [/ \
    cn eq6 [; r7 Y6 U& b9 b( _+ d
    搜寻目标的数值没有变化( O& q  F: A: m
9 d- i) u2 z" r% U; a$ d
    cn ne( L/ h  w, g9 P- m* G) c/ N
    搜寻目标的数值有变化; e" g0 w: A) w) [
        
' m( A5 N$ X$ D. R& m1 ~    cn +$ x# g; P" _+ V
    搜寻目标的数值增加
6 R  M- b4 }- i' C. |: E% k* B! J    8 _' p7 I$ P+ h- E5 C1 v
    cn -; v/ T% R( x% n8 O
    搜寻目标的数值减少/ d( ^* y! O* z8 ^, |" |$ w; R, U
        
) ~7 z3 J: G* q7 r8 I8 t: O    cn +,3
6 k. c" z. h) F0 {! ~! R    搜寻目标的数值增加3 (十六进制)
8 `: L/ v; d, l: C" T( {2 W/ |4 t' i# O  [3 S  Y2 Z% D
    cl; N2 ?3 S  |6 U
    列出所有搜寻结果
$ a, q/ {; y# a' ~- \% g. J. O. C: _- q  `/ x. y0 j: a4 B
    cl xxx.txt) ]8 ~0 A# K+ p+ m
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
" ^% S3 ~* k& k- l9 P$ u5 R' i0 E' b/ v0 u2 f' o
   
1 m) b) f6 {1 Y9 @" `. t内存监视点指令: wp, wplist, wpclear
% n! B' u( K( c' o" Y    例子:/ G4 ?( n, C" b
    wp 1234,1,r) m* c' i( Z1 J  K* g0 ~
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
5 v# R# [+ w2 U: i9 {7 S1 F  o5 `; T
    wp 1234,2,w
( [, j$ Q: c4 z  C) }      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2& }/ ^8 w0 ?! J8 x8 j) @3 C- I
     
2 T9 P2 l' Y3 j2 `% G& a    wp 1234,6,rw
) T! D2 D' b$ ^& H7 D( d      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
+ x  s/ D: o. I1 z: h: c0 _" ^" G# L9 U% @- K) X! p/ r, ]* a/ L
    wp 23456,a,w,wpdata == 1" p& D( H5 d% m+ J" j5 g1 x4 `# X
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于11 z, S1 L8 A) J4 `9 g, m9 i

. L. V  F, A" o& e! i    wplist
$ O/ V5 e# x3 H      列出所有监视点- D. A0 i' Q: }: F, A7 U% b+ l
' R0 P9 ]6 |" i5 q1 r) I
    wpclear 3
4 t6 `: L! y6 S. c! \& t, @8 X      删除编号3的监视点$ d9 S2 R8 O* Z% H: n
+ c$ Q) s9 k/ M" R+ h4 l3 j2 @
    wpclear
( H. [( |2 R" Q. X% E7 e: g$ c" k      删除所有监视点
. v; u  N' p* p5 R2 n7 X8 Z/ W0 R+ h
      : O$ K4 F1 x  S, X8 a, {0 d' [

. {1 o8 R) X9 D8 W; s6 `程序断点指令: bp, bplist, bpclear
6 O6 Y3 v" d' X" k' i" k. X    例子:$ f- [, E9 K  @3 O% A( ]
    bp 1234# u  ~# ?) W0 t1 T
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断3 X3 r+ x. Q( o  }/ T

# |5 T: l6 p" h; ~2 Z2 L& Z    bp 23456,a0 == 0 && a1 == 01 H6 M1 x& f6 e7 G  q; s4 }
      在地址23456下断, 且中断条件为a0等于0以及a1等于0) j4 P  z( V: [  L" M; ?- V' W3 F
: y, @* y9 {7 l
    bplist
' Q7 N6 Y/ q+ M0 ^      列出所有断点$ G0 j4 ?: P9 X# \0 w

+ {% C/ t3 f, p    bpclear 31 }( c" o) r5 S: H; J& R
      删除编号3的断点4 A+ G0 z9 W: m5 `
! k  u6 D" Y. v& u" f4 ]+ A
    bpclear
% l0 P3 c( f+ S3 R% o      删除所有断点
/ _" r7 c7 h/ q; g) ^* w: G8 @4 Y& r  t+ \
      1 V6 i; c+ N+ S8 A/ p$ f  q
      6 |8 ?1 ~- K4 {- F" O
跟蹤紀錄指令: trace- ~$ @# ~+ b3 F+ B' F' R
    例子:
/ W7 ]5 Z8 Y4 l0 M, ~    trace 01.txt  L' L) l% C. f0 X# W) s
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
1 V& _( Z3 u* H
% {2 L2 e/ O4 J& J    trace off
/ x3 |! x% g# V6 i6 \9 B* T8 A    停止跟踪, 并且关闭文件" M+ |/ B0 ~+ l8 _+ D7 T

' b4 L8 G* y( h/ p, @7 R/ S& k- ?$ t" K0 x    trace 01.txt,0
. ?3 T6 H) _. O# {1 ^2 f% [    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
! B, D" @% C' U' H
7 P( E3 l8 W, P9 U7 N" X6 ]) q8 f    trace off,0
, n4 \( k9 ]9 a; u    停止跟踪编号为0的CPU, 并且关闭文件# Q8 z+ {9 _* Y4 s3 k4 V
4 b+ M  N  c, v
    trace 01.txt,0,{tracelog "A=%02X ",a}
$ v& }1 P# {: v0 c# O3 ^. |    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt & r, k3 ^2 V' {/ X0 S
    并且在每一行的前面, 写上"A=a "
* F0 @/ g; j1 V) q    "A=%02X ",a为一个C语言printf函数常用的输出格式' {  Q8 S6 N, G1 z( z
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入8 R% ^4 a- |1 N4 o( g3 G  n
    X表示为大写十六进制数: @, u, ?, k6 N5 _( r7 B- s) _
; s% a9 c5 S" j- S
( V! b" a  U1 Q/ B

) L. F4 ~7 z# H0 P0 ?1 l内存直接写入指令: maincpu- @9 v7 d+ b+ Y, K0 d% x) O/ f
    格式为 maincpu.[][]@地址=数据
4 O6 w/ [; G: C5 ]% f, O    第一个[]:
2 b( r/ n2 `- a' m6 m( R    o 表示ROM地址
) d  L) j$ j" H+ u    p 表示RAM地址% C( E# Z" J) k* g$ g1 P9 G( e1 L

, E) l  V$ ?# P    第二个[]:
( N' v5 z( a4 w- W; Z    d 表示4字节
2 d- d  Z1 Y7 F1 f# Y% @    w 表示2字节
: l3 k0 Z- {4 A% f    b 表示1字节
3 C6 `9 p8 y+ l3 Y+ E' J+ S# T- F$ }8 L6 f6 u' `) J' f
    例子:8 l6 W9 Q. \' @3 G
    maincpu.ob@1234=FF+ B9 B! m& w8 y
    在ROM地址1234处, 写入FF一个字节* @# T! e& G3 ~4 P9 E  d$ g1 ]
% @* W) ]; {5 e* u: v( ?
    maincpu.ow@1234=4E713 |2 u+ E6 g! d
    在ROM地址1234处, 写入4E 71两个字节' u# c6 Y9 k. W5 \# ?& i! j

# W5 C, q1 A& @+ z* g    maincpu.od@1234=600A4E71) W" h6 w2 c9 O: Z
    在ROM地址1234处, 写入60 0A 4E 71四个字节8 ?. B; Q& j$ e! |/ X8 L+ U

& ?7 Y# @5 ]3 [& A) _+ U    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写4 P& G/ `' y! d/ J8 t1 g
    ; g& h6 q+ E% L2 T/ k

, E; {5 a9 d6 ]5 M* T其他:, V( X% z& L9 I1 Y9 G2 o
    dasm 输出档案名,地址,长度! j9 O- O- ]9 Y9 y1 k' @. P" ~$ U/ A
    输出程序的反汇编代码
7 w# \& D/ }/ W5 f3 c& e    例子:% n( L: p/ D# A- b& ]
    dasm 01.txt,0,100000
) k4 w3 L" Z$ r) E    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
# {3 s( X9 X, L' W5 Y& `
# x$ c5 ~" y% h! N$ U    softreset$ Z. j9 Y$ O3 M" c# }. R
    游戏重启, 但不重新载入ROM
0 Q2 W1 U3 o* s! Y
/ `8 F) l4 h9 K- W+ |1 m    hardreset  H. E# Y7 ]- V$ c5 n
    游戏重启, 且重新载入ROM- J! J$ ]+ c$ q5 a% q+ j
0 G0 ?( @" I& K2 L
    snap xxx.png
# I: l. [, Q. C+ D3 g) n$ H& g    截图为xxx.png
+ i6 z$ d7 ]. {  r" P# l5 g- |1 {2 V+ H% q6 n. L
  7 p& E6 Z& P# N& q4 [, Q
  2 J- \, a* b  d4 D4 a8 D' H0 u
  2 Z8 Q8 [+ O/ N; u! s" a" V0 l
热键:7 _4 U. j) M1 @6 g. H
    ~ 中断游戏/ u* z/ N$ y# S3 Z' {, O7 Q
    F5 运行游戏
- I! \' @6 R* T4 X    F12 运行游戏且隐藏调试窗口
& _* I" q/ j% H0 b    F11 步入, 单步执行, 会进入子程序& f: r2 ?4 c# z  Q" T
    F10 步过, 单步执行, 不会进入子程序1 B* W! w5 |9 r# e! P
    Shift+F11 执行到子程序返回
, r; _% A7 U) y2 Q/ u6 f5 \9 b    Ctrl+M 内存浏览窗口  y0 t6 x! R. R
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU$ t1 A+ X! S( B4 G3 E! h
" X2 }/ G% z5 ?" Y
{:4_94:} 3 T: `% L0 L) e9 q1 p" U- N6 u% W- F0 ?
- `0 `$ G4 {. H" ?

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2555 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。8 e3 Z, H0 w- r: w# i
: c: u  h  H; e: D2 d! G( X
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 | 显示全部楼层
要详细些的东东
5 x! F/ C/ W$ e' v3 M. w$ @: ~* ]11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-29 20:41

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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