设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
1 C0 G% N! z) ?& p2 c
很快速的整理我自己常用的指令  b) H9 w+ O! s  j, w
$ O# d' \8 j0 W9 C7 H/ ?2 a+ c
{:4_112:}
& k1 h8 ?) \# |0 s' Y
6 q8 M  y9 D$ f+ Z4 G+ ~4 jMAME DEBUG常用指令) M2 ]0 f/ r. U3 S3 q1 T
( p3 C; ?& Y# q2 B
内存搜寻: ci, cn, cl# n( F9 A# C5 b' x  M6 j# D+ g! B
% @+ M% a- R8 @! ?; ]" _) Z
    ci4 }. I$ V' r. H  U& `
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
  {1 ^/ U. o% F+ y5 j' R
4 C" U1 O" M1 j% K* b, r2 r$ c    cn
/ t, j+ U; p; `5 `. x    搜寻指令
, }! x* A2 k: B  G; o& P) l    例子:5 f7 [! D7 D5 O  o1 T
    cn eq,602 a; r9 _4 Y0 D* C
    搜寻目标等于60 (十六进制)
4 q, Y: _* J* p6 F        
7 L$ @5 L. |8 g/ S    cn eq,#96
0 U: \' o" q4 p: Z3 |% |; j+ }    搜寻目标等于96 (十进制)
( U( s1 d! Z# b$ d( }4 t, X' _/ M! S
    cn eq+ m. h. ]4 F9 i; }# N
    搜寻目标的数值没有变化, F' [, s/ m4 X# K

9 c( a4 u/ _6 s% i' T0 E; r$ K0 e    cn ne) p7 W$ ^9 z# n9 @8 ~* b4 k  p
    搜寻目标的数值有变化- ?1 r0 q0 t! ~4 x$ Y/ L# M
        
: V5 I2 v2 t3 P; x/ f. F6 f5 X    cn +
% W4 K. `0 }- ?1 b7 C( S8 x    搜寻目标的数值增加3 p0 u/ \4 l7 y- t$ b: K
    ) `( }- g% A0 }, T! e, k7 q
    cn -
0 w% d: L$ N8 w6 d' d    搜寻目标的数值减少
  Z" ?8 s+ V7 \& U; o) S+ e: m        ! q) B+ U1 l: j' k2 U, H' C; y
    cn +,3
" q& ]; q# T9 n0 _$ N    搜寻目标的数值增加3 (十六进制)  W9 P; ~1 ^! x
  h9 M" b2 m& e( ~
    cl: B. Z4 f) {8 }" h# ]
    列出所有搜寻结果9 v5 |* K  t4 x6 ?3 C1 Q& C

/ R1 E, y3 T2 r4 {! T    cl xxx.txt
1 h: X2 U8 m1 O0 t+ D# _+ m    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式6 u# e+ @9 j4 p5 T( Q" M2 {% K
$ `, d: B' i  ~, a. \
    3 a+ [4 X- E" u0 q
内存监视点指令: wp, wplist, wpclear
4 r( ^- s" B& \/ q( `5 E* Y1 B    例子:* i& n, _) }! M# t" C+ ^& m6 ?
    wp 1234,1,r
9 N& I4 H* B6 a: v8 Z3 s      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
4 ]/ ]5 x9 Z, y! k$ C, b( f& F5 D  b7 w- y
    wp 1234,2,w( ~* H. `: @6 y* k/ R
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2$ J; |* ^: \9 G  P5 n* k7 q' P0 i! K
     0 F- ]0 d) h' m8 ~/ S
    wp 1234,6,rw
- C. ^8 a1 W7 k8 m' Y# Y# Q& B. |1 C2 o      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6  P1 T# P2 p9 u8 J- v
% \! e# y' F( x) k; l
    wp 23456,a,w,wpdata == 1* `0 _* t0 k" I; M$ o
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1- Z+ P( j: X/ z" ]8 |1 C! I; R8 o
- w. M) p8 C: }
    wplist
4 L: z/ I) @. e3 A9 _2 X      列出所有监视点
4 w& U  R) ~5 U' m0 H8 D; q  }6 F$ F, Q7 C7 j
    wpclear 3
/ O9 W4 f5 M2 }$ F$ a8 k      删除编号3的监视点
) x% Y( Z4 t4 _
( y  v, ^0 Y1 |8 F0 A- m/ ]$ v7 Y    wpclear6 \' T( }: ^3 v
      删除所有监视点
0 |- X6 f) W! w, R0 N( M( P
1 D  a1 e9 g! ?; l      
' G7 }6 i4 J) i
- T! _$ e9 R7 D  I0 h( G6 D程序断点指令: bp, bplist, bpclear/ a8 B+ r2 v! Y! M+ F
    例子:; X4 ~% P1 i  C$ v+ S7 o
    bp 1234* ^8 {9 m. R& L8 q3 ?
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
3 N+ }. ^- \  y2 w6 o& q
4 N6 L9 x- q) h4 e  E" U$ \    bp 23456,a0 == 0 && a1 == 0
, {5 p' T7 X# r0 p  S      在地址23456下断, 且中断条件为a0等于0以及a1等于0
. {( Q, @- w4 b, [3 V0 g" K* s1 J3 ^4 a
    bplist
1 E0 p# a% l7 J      列出所有断点
6 Y$ m/ V, B" P1 W$ d6 Q! A- X! d5 a; W- n
    bpclear 3
( ?$ u) g7 M0 [* m5 I      删除编号3的断点
0 w3 K" ]6 B* v, s& [2 L' l! n" z! M) r1 l0 g: {+ O
    bpclear8 l7 I: p; h+ T3 j0 C
      删除所有断点
  `3 l/ o4 s: L
' I( q0 F4 O6 y' W3 D      
$ a& H) G* Y6 r) U) Y4 A      ; Y# G- q, o' |9 [. j9 D3 ?; X$ j) l0 g
跟蹤紀錄指令: trace! a6 l4 z$ s# s; a
    例子:$ s' S/ c6 _( a" l) P
    trace 01.txt
9 H; b2 H; e7 k0 t# U" Y    跟踪当前CPU运行的所有代码, 输出至文件01.txt0 v$ O- M& y2 K. ^6 a

, t" r5 A4 d; d+ z* f    trace off  ]; N3 U" L% t3 a
    停止跟踪, 并且关闭文件
  g$ c4 }8 B4 {9 A! I: h9 V- y) @
    trace 01.txt,09 `, l* q  m$ P  ]
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt  |$ ^& K( @& I$ J3 |

# I; e3 ?; E$ V+ h& @0 A6 }    trace off,09 c" [" P3 ~7 ~/ {3 [' {, J- m
    停止跟踪编号为0的CPU, 并且关闭文件# h4 i8 ?2 Y9 _( P% @: i

, ]* b3 ]* E; B    trace 01.txt,0,{tracelog "A=%02X ",a}3 ~' z; F$ l3 j* f2 C
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt " g1 R7 `4 z0 R1 w  j  |4 d
    并且在每一行的前面, 写上"A=a "7 b7 g# n: m0 s* R
    "A=%02X ",a为一个C语言printf函数常用的输出格式7 h2 z* n# D/ U5 n5 r- T
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
' J- h2 E  p- ~) M5 ~    X表示为大写十六进制数
7 o% t% d9 p- v* s4 Z: s7 ?2 Z  _! c' g$ N: N

! U( j8 e1 z; d' U
# S6 u# c3 {" r1 g+ a7 Z/ t内存直接写入指令: maincpu
2 c  ^! Q" K  f; y: x3 A* c) f* f    格式为 maincpu.[][]@地址=数据
, m, c2 x2 ~; S* f    第一个[]:5 a+ l# E& W1 Y1 G$ J6 G% c7 h" H& @
    o 表示ROM地址" E. k. c1 h( C# L% ]1 _
    p 表示RAM地址
. n5 j% x7 |4 H2 j* g6 \& j' K$ Z$ w, U/ P$ V
    第二个[]:2 v& @8 C3 L& z4 u1 z! A
    d 表示4字节
/ d: B4 @* u8 Y! M. A0 ]    w 表示2字节
4 \! z( b7 S8 a% z4 `3 m    b 表示1字节
- P4 S) t2 {2 r( z+ o+ n7 h1 n1 l1 }! a$ Y, e6 D5 u- L
    例子:
% A4 r& [/ F5 w    maincpu.ob@1234=FF
$ Y6 `5 Y) A" o( ?0 ?+ w    在ROM地址1234处, 写入FF一个字节
. r9 {3 Z) C: |) z4 T& o' {
, i) M0 z2 n% b  |' s7 `8 A    maincpu.ow@1234=4E71( M  ]1 w! F8 S" X) D
    在ROM地址1234处, 写入4E 71两个字节
/ d  z6 Z& V4 C, O! E$ b7 L+ B. l. U7 z7 A% q9 n; N3 x# w  H8 o. l
    maincpu.od@1234=600A4E71
# w0 U4 U% ]( t5 m# {    在ROM地址1234处, 写入60 0A 4E 71四个字节% g- V# L$ Y0 L: k, v5 N* v* ?
" S0 U! @* ~. ]7 e7 |4 R
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
) h8 ]; N4 M1 M. S' U7 ^2 _      D7 p5 d3 T+ ]! m3 C

# J$ O/ l. I' l- ~6 J其他:
( Y8 V0 g& x1 n0 J, \! z    dasm 输出档案名,地址,长度( [7 x& B4 q7 H
    输出程序的反汇编代码9 G% E/ N. ^* t, [* I) _6 k  ]
    例子:
- ~( |  J  y  ~  U% w, Q. o2 K    dasm 01.txt,0,100000
1 S& U' K- k, Y    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
5 O0 ?7 `) T- q
' q# n  {( I  m; Q% h& A    softreset
$ x6 d4 B! H: c5 u& C2 B    游戏重启, 但不重新载入ROM5 [# J% Q  h& y' C& j
- j' _0 f' ^$ K0 _% h
    hardreset
& ]/ H$ T( v; ^4 m. S% U    游戏重启, 且重新载入ROM7 p3 B( b* E7 v% k1 U
; A2 _7 s/ ~0 z1 Z
    snap xxx.png4 _+ u% H4 w/ ~# I- @" O4 f4 t" j  A
    截图为xxx.png
: N7 `5 ?: A% F6 Y5 l% {. {$ g: a  H( \7 B
  . \8 o% f3 H7 p' E! z6 ]
  / u. X' a4 K) @, p: O# Q( f
  ' ~& n: @: d; `, u
热键:
' F/ Z5 x& Y+ f' m$ {" w+ o    ~ 中断游戏% J0 V& }& F) ?7 W- [" M
    F5 运行游戏
2 [. [5 k7 U7 [5 Q& f; ]! `6 k    F12 运行游戏且隐藏调试窗口
9 f. _# ~2 p- O1 N! j; x% i( R    F11 步入, 单步执行, 会进入子程序3 d6 j1 K* D$ u7 ~+ h' |
    F10 步过, 单步执行, 不会进入子程序
- L0 p6 n" W( d) o' X& C$ W    Shift+F11 执行到子程序返回0 Y( V! H: H) e; j) z; Z
    Ctrl+M 内存浏览窗口
4 N8 F, e# I# A: |) [8 v    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
1 J$ ^# [6 t  {1 z! z
% ~3 f" A0 W" Z& K{:4_94:} , d4 k  l5 {- k# E; g1 q, V6 ]

/ J# [% w7 T& U5 S/ e

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。3 ^. P- {. q/ T( A

) _; B0 T9 x+ m, FPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东* _/ _* Q0 h, ?; u
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-11 13:53

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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