设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

: {" o3 P- o" ~  q( x很快速的整理我自己常用的指令
4 t- r# C; A; @- i7 w. a
7 c* D. _+ {' x7 A{:4_112:}
+ O; g; r2 E3 {7 n" K/ t
; X9 n9 I* G* b% Z  f% cMAME DEBUG常用指令6 P- ]2 F2 m* J8 K# d5 x$ b

: S4 U0 P+ G" u$ i4 T; Q内存搜寻: ci, cn, cl
$ N1 ]1 ?) c+ r6 |* ]2 ?: S
0 X  R0 M, s4 Q0 s0 |    ci* B9 ?9 t0 |; b! t7 i3 V4 ~
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
, a) f# U4 `% @" [6 n5 b  P
7 @2 ?. l0 f, ^  S" k    cn
/ @" y5 c. z3 {7 o5 `2 m    搜寻指令' _( s6 ^  b2 n8 e1 W  \4 u
    例子:
  A! N+ [9 S, Z& I. \/ n; u8 _2 j1 F    cn eq,60
+ B2 j  n; f( U" Z7 l/ M    搜寻目标等于60 (十六进制)
; ?# S* S9 F" i        
; ~) R+ x3 w# J  t: b  P    cn eq,#96
9 ?0 L2 i# m. T5 ^% Z* p& A    搜寻目标等于96 (十进制)
- o7 ^  V0 X$ f4 `% o
  [9 ~1 q+ I: P: H    cn eq
- f- q' \) t+ t    搜寻目标的数值没有变化
1 w2 t% y5 x, d2 {4 d* y' }; U3 ^( @  w; w1 g% W% G
    cn ne
! N- ^5 N- ?, |1 ?9 r( E$ }    搜寻目标的数值有变化: K. W/ _! N) h# S1 }4 D
        
. o. a' V! ^4 n8 M" E    cn +7 W. d( ]1 g1 h
    搜寻目标的数值增加( R9 q( m7 f! h8 [( v  `3 g+ x1 O
    ' Z% F2 F1 @) i0 w) Z" s5 A2 k7 l: F
    cn -; o: }: M. M* w( |3 B& I8 U' G
    搜寻目标的数值减少- t( r* f: @. o. s2 E) O, N- U& R
        ' ^- y; M% O6 O/ \& R6 y
    cn +,3
' g; `% D9 k' `3 W4 X    搜寻目标的数值增加3 (十六进制)
; D8 x: s3 q# d
; V# A9 M: ^: t# L* M* F& d    cl: j/ e5 ~' h; q* a9 {. A2 ~& T
    列出所有搜寻结果1 Y) n5 }" g( I  K6 M
% L5 g7 }; q' j1 C
    cl xxx.txt- o  P" g  j( L2 u# n) N9 L
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式* f; e" ^' Q& r: y# e

& M& F0 U+ B2 K0 B% }8 r& o    * T6 x( ~3 i; U/ n
内存监视点指令: wp, wplist, wpclear: [) y% L6 m, f) P/ b" m
    例子:
2 H6 y( E3 B* q- X7 O) I) S- O0 k) q    wp 1234,1,r. Q( B& M) n) Q) c
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度10 ~0 C3 ]$ G( x7 ?2 R
. C, z( b9 M8 ]3 U
    wp 1234,2,w; M3 j. }* Y8 q% @
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
1 s# G2 ?5 j% o7 o% o     
# z  E! m0 \# L: R) ]    wp 1234,6,rw7 U; h3 q% N6 {4 @( q
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6% H" J- W4 s1 P) ]

7 z6 h+ ~# [( y7 r    wp 23456,a,w,wpdata == 1
. Z: ?& U- b( R7 k; q. c      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1" N% ^6 N$ p. Q/ \

7 f& o2 W1 s& {# S9 I/ x4 j) w    wplist
  h$ C- z$ q6 O- \0 [( B2 D      列出所有监视点- v0 i1 c. b, j# w" G! M" x1 o

# t  y+ i5 L+ j    wpclear 3
* r. a4 i! W/ p, |) n2 d/ z( Q( [      删除编号3的监视点
- q- j9 ?' q! L) y5 H- O) I* n0 C
" L9 y& J! O, c$ A1 E    wpclear
- x- N* R) U$ \- z! q% f1 C8 {7 \3 K% \      删除所有监视点
* a- Z5 A; w; o- D. f" q
% ?7 t6 w. U1 _3 |      ' X  i; H: g; V. d
" X9 A  Y0 p/ D3 E
程序断点指令: bp, bplist, bpclear
5 [; K' ~6 D" P    例子:
3 h2 g9 o! W7 [. _    bp 1234
# z( C$ _0 b9 r& i  `4 P7 y# l8 m      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断0 ?5 V* W6 U1 V# n; z: N. Z
3 z5 `) U( a% o) _
    bp 23456,a0 == 0 && a1 == 0" R, H! H  G& U4 P  [3 K# ^
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
! s& o5 R, ?* b: L8 |+ T0 g! l5 z0 b" P5 p+ ~+ e
    bplist
) W. P) j  M% u% l( ^      列出所有断点
$ v. ?7 v; o) w
  S* I) P  W& t1 M    bpclear 3
8 {2 K* k; a5 h) D) r; }      删除编号3的断点7 [( D8 I. i+ o( c& ], `! i, K
: e% O8 R" _* {4 E; g; i
    bpclear
0 [) I% w. w; R4 E      删除所有断点
9 h# ?$ z% J5 \* ~) g1 k, Q/ {; u& \
      
" F  a, W: a, k0 Y        f0 K+ e3 v$ u! `3 g4 y
跟蹤紀錄指令: trace, Q% u" R; _+ F" }9 N
    例子:
8 G& _7 y+ X' C: t; v    trace 01.txt3 |$ C* [6 H3 u3 V+ D* [
    跟踪当前CPU运行的所有代码, 输出至文件01.txt% a% {0 v9 m) \
- {0 Q- V/ H4 U$ K3 d, k( I
    trace off4 d& B! V! I- [( e4 ?% N$ m
    停止跟踪, 并且关闭文件2 h. |/ {0 G5 P# ^1 h

) V* V8 w3 L; a  U    trace 01.txt,0) l7 N% H4 `- s5 Z, l2 z0 [# u
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt) O1 }2 t' K3 N0 p( m

* S# u- ~% r1 X7 _' e    trace off,0
+ ^7 D8 M6 y! u) N2 p; A    停止跟踪编号为0的CPU, 并且关闭文件2 N: k; ]5 z4 @

5 m7 l- A! I, @  V0 U8 w* g# P    trace 01.txt,0,{tracelog "A=%02X ",a}
& m6 ?! D% `( y    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt   c. Q6 T# [# ~) @7 _( ?3 J
    并且在每一行的前面, 写上"A=a "1 J, V8 G5 i5 a5 g
    "A=%02X ",a为一个C语言printf函数常用的输出格式5 w5 M' v0 T% k+ I; O5 }+ Z
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
0 @' ]  z6 E3 T8 [3 P    X表示为大写十六进制数
, X4 r  t2 G+ M2 L  l7 m. \5 h& T* e0 m$ i( h, @- c
5 M) T1 C3 e2 s# T. n1 N( H( G
9 e; w7 [. R: A% b
内存直接写入指令: maincpu
" {7 u4 I  k9 D' P# V: R    格式为 maincpu.[][]@地址=数据3 x( Y1 G! O# g8 [
    第一个[]:+ `: C, u; q- X- X1 U
    o 表示ROM地址  c% O, w8 y" |4 ^+ }
    p 表示RAM地址' g0 Y2 C! q4 S" }

/ l2 }" O8 I! G$ [) H    第二个[]:
% ?* C# U9 E* x& ^8 z' b    d 表示4字节
# h4 w+ Y4 j; F    w 表示2字节
& L# s, x  W+ q7 B    b 表示1字节: U9 [, g' z$ u: K9 G
# ~2 r) j" w# I" N) d3 H5 I% C  L
    例子:) z9 i2 l/ B) |  m+ O6 s- N
    maincpu.ob@1234=FF
* }2 `; w' N  ~7 K1 r    在ROM地址1234处, 写入FF一个字节( ]0 d) d1 j+ D$ H. s+ S2 G

- g) r1 o# q5 s  G" D- P) t  W    maincpu.ow@1234=4E71& S6 [7 ]% Y  s3 G* l
    在ROM地址1234处, 写入4E 71两个字节
4 b- v# N0 b1 U; ]6 g9 e5 z, ?; n3 C. O0 k6 ~
    maincpu.od@1234=600A4E71
# K$ `9 V  P4 ]! c    在ROM地址1234处, 写入60 0A 4E 71四个字节) Z$ s( ^6 w) n$ u7 R& z# ]
4 k% N# m0 |2 g& p. Z7 T
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
8 V4 s" L/ m% @1 M0 v   
" V8 j0 j8 I; B5 T  n1 _  S: B( q. @8 [
其他:
' z) Z* f5 e5 l) ~0 L+ s    dasm 输出档案名,地址,长度
; w& b4 ?4 j/ w$ ^# d5 U0 h    输出程序的反汇编代码
/ M7 v$ z; K# {  v7 t  _7 {  N    例子:
. Y: h' \/ B& t' R/ B- [9 o    dasm 01.txt,0,1000006 Z& k9 Z  f  X  l6 |8 ~5 r& f. k
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
$ I! o3 B1 _" b9 k
1 R- D& o7 s. L2 A& {. Y6 Y' a    softreset0 ^! L( L0 A# N5 `( B" T2 q
    游戏重启, 但不重新载入ROM
! u1 |( K) @1 w. \3 x2 |) o
; y* e! x4 J$ \' ~) X7 p    hardreset3 M7 {4 d- q' U) D: f2 m$ n9 j
    游戏重启, 且重新载入ROM
7 J3 [% E- K" o  i9 {8 f! V3 t  _' d$ s
    snap xxx.png' x! L3 r, w* X2 H$ M* x2 u
    截图为xxx.png
. ^+ W9 k* k  I9 s  u' w0 p. e% y) P6 W; F" k0 h( \( Z
  
- A+ @  i; T9 X; [; l3 O  , w2 Y: C$ h: ?% P9 `8 q* K- }
    M2 c- g$ \" ?; U) G
热键:% O, [! I7 u& [
    ~ 中断游戏' P3 r" o- W/ \
    F5 运行游戏6 h+ d  Q, @/ w0 p1 S
    F12 运行游戏且隐藏调试窗口
" ~+ Q: b; `# y  {    F11 步入, 单步执行, 会进入子程序
9 \/ a! m5 @' L1 W  }8 G    F10 步过, 单步执行, 不会进入子程序7 q8 G: ~) D" H) L# m; ?  @
    Shift+F11 执行到子程序返回
/ V0 d, u1 Y$ p8 M* [0 E    Ctrl+M 内存浏览窗口( ^  O1 l$ b3 q0 f+ c2 o
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU* ?0 C! C8 D- ?1 ?+ k
: d# C% c% C$ o1 [
{:4_94:}
4 q- y+ s* K  \% f
/ H: J8 C6 n( r0 r3 a: W- d& {

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2569 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。9 ^  G0 Y" Y9 X& R
1 X# z' r" ]8 I1 U# j* B+ u
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 | 显示全部楼层
要详细些的东东  `8 Y4 k: X# q! l8 W7 A
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-25 12:22

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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