设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
+ n" f9 ^1 x! w' L% y& s8 v6 S( E! E% k
很快速的整理我自己常用的指令
: N  y: Q5 L+ O3 S" x1 o7 B" T" w! k# V/ s$ C! V& ~
{:4_112:} % e$ _3 s+ |' A3 G" @

6 m" p1 a& P( {1 `" bMAME DEBUG常用指令
) }4 K* `" f; n0 Z' L) s" J- F$ V% i1 X$ i6 L, D6 ~" t4 ~- E
内存搜寻: ci, cn, cl
# O; V' r9 t7 i3 M0 W6 b! N$ |4 ?- {/ \0 I* X( j/ r( R
    ci
% q8 K  n1 ]9 _; H    搜寻任务初始化, 每次搜寻一开始一定要输入这指令) a" \; j7 L8 C3 _0 F. X

' v3 ?/ _" g* B) g; t, I    cn
3 v4 X3 S% S% A! d( S$ ]    搜寻指令
( C/ [. X7 d0 K    例子:3 P. f# R& U& v
    cn eq,60
3 D9 m- O% S' o; n    搜寻目标等于60 (十六进制)
0 e0 O# ]! F3 ~8 f' r, g+ l        
- T2 K+ c; n; Y    cn eq,#96
% R  x* u) V4 B* J    搜寻目标等于96 (十进制)
( r( V7 o. }! q" {# e4 E+ t1 K
" W/ y+ v8 C3 k2 q! O    cn eq1 s, d, {$ c* m) Y5 b( r  d
    搜寻目标的数值没有变化
% X0 Z) g' g# b
0 V) N5 D* ^( |- N    cn ne, Q! P7 |5 J4 M, x& y/ I# q
    搜寻目标的数值有变化9 }% @) t% u( e1 x% K
        / Y9 \, F3 H3 u6 t
    cn +' |1 j) S/ i" V8 g
    搜寻目标的数值增加
5 {& u# R2 S7 L7 |( \- }   
  P, \1 _7 H. y, w    cn -; r" w7 t, b1 d) C
    搜寻目标的数值减少/ q+ ]) t! a* h- |
        
+ n9 Z" k9 `" v0 `1 t    cn +,3
( n$ @. e$ {0 c2 r' c1 d    搜寻目标的数值增加3 (十六进制)
6 a* w- F+ B6 `: h( }) ?- Z$ e2 y' S5 _/ o; v, W
    cl
# u. S( C, O' _( c  a) [: r  c    列出所有搜寻结果. i  ], L2 D7 B' U
5 ^5 i3 ^8 ~2 r: e" r$ g3 q9 Z) D
    cl xxx.txt2 U% R5 O8 P* U
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式0 n7 `2 F* p* T+ z# n1 L& a
  v& D- N' X9 V3 n6 t+ u
   
. f) u+ J' K  R$ v内存监视点指令: wp, wplist, wpclear! G- A3 h5 u! N) o) j
    例子:# i5 d8 ?) O3 D; N* Z) |& a
    wp 1234,1,r0 t8 M5 ^% ?  ~
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
% m/ E( R+ p/ W9 G( c7 o) b
5 m" \* y, e' U  Y. ^    wp 1234,2,w
7 h5 Q" O5 b* |5 s) J$ u      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
0 X! J6 M; l7 s. {# z  N; `     5 F  ?/ X0 v5 K8 i
    wp 1234,6,rw! |) l( `- ^& y* {# ?" Y
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6: b. q0 j4 R* H# y! X/ K% G

# s' e3 Q5 g1 ?" h5 e' V1 A9 K6 x    wp 23456,a,w,wpdata == 1
. l7 Y3 D0 T& Y! L* s0 \8 V      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
  Q3 @8 d  v& V( j9 S( j, l: R; A+ g0 ]2 i$ D
    wplist
1 O. t0 V( d1 K      列出所有监视点
& _" D# O8 ^8 h- g" A: t7 J( p4 G/ O
$ ~$ M% y; ^8 z! w0 X* P    wpclear 30 M2 c! q- r, _* ?
      删除编号3的监视点2 R( k; U6 v0 T3 T; R

- u  L$ k0 X# s  |9 W' _. |5 Y    wpclear
0 e4 h$ E  \8 w      删除所有监视点7 J+ h1 q' P( ^3 }7 H; |

) C) e6 w5 j# v  o      
- `8 t% \+ k* ]5 S4 [
: e0 y) I* L1 ^程序断点指令: bp, bplist, bpclear
7 P& U% S$ S* F8 }    例子:; u3 d9 X7 h! T: a
    bp 1234
3 Z. r# l! d: f/ U      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
6 z+ A4 p/ o+ [$ n! Y# E1 }- p5 e& N! N" U" Y1 Z. r  D
    bp 23456,a0 == 0 && a1 == 0
; W% @# O5 h9 A5 s4 S% O4 Y      在地址23456下断, 且中断条件为a0等于0以及a1等于0
1 v, z; E5 U, G4 J6 B
9 ^7 F- E7 `" m! J/ X    bplist* ^* L( o& g4 Z( i
      列出所有断点' X3 L) y* i0 z, d2 T* z2 D  P: x

5 a; s7 x5 s, h" N4 o    bpclear 3
7 B& I* D1 n2 D( A      删除编号3的断点1 C' L0 C. \. y* J  j3 g
" E& O, {5 t  w; ]- M7 {+ }: H3 x
    bpclear. ~+ x. Y* ?# {7 N/ w
      删除所有断点6 c4 |  K4 c' T" U
- F5 }+ C& L% p3 k, M, @7 f0 ^3 K3 k
        R1 ?2 i1 d7 S8 V5 q# y) b0 ?+ [
      ( r0 U. e* T, a0 a: d
跟蹤紀錄指令: trace
( v% ^8 S! T6 X1 V: z3 A4 r3 E    例子:
6 L" U5 S1 R' Q7 P4 Q    trace 01.txt, w4 V0 |0 X" u$ ]
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
! k4 K; `; y! ^7 C# q0 a4 v" E. w) W7 [- c3 M& h
    trace off
! o+ C" u! b$ F( Y( g    停止跟踪, 并且关闭文件
$ h% E! H, H8 o; w6 q
8 G9 ?4 b  j3 Y: b) R1 B/ ?    trace 01.txt,0
* V9 `3 x4 b5 e1 U. r    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt5 }# G1 K' B6 x& A( w6 U
; }) L! b& u4 q( f" m! S- Y- s) G
    trace off,0
" j; V: B* L" V7 A! f    停止跟踪编号为0的CPU, 并且关闭文件
! q6 R7 }, D' S/ k7 j5 q+ g/ C/ j8 P' p. O! x* g
    trace 01.txt,0,{tracelog "A=%02X ",a}" Q8 N  O+ Q' o$ f- |
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt 7 H4 E( m. I2 G6 N6 m% F
    并且在每一行的前面, 写上"A=a "# j3 X6 F. F" B  g; l
    "A=%02X ",a为一个C语言printf函数常用的输出格式( ]0 V! [+ s5 Y/ A" I
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
0 B7 J5 K1 Q$ ?/ o    X表示为大写十六进制数
" L" o4 a3 f1 R/ w, _, u
$ E0 B% [/ `$ b
1 z3 K& ^9 _1 M9 E" {) ~
7 h& P7 g( r: n& f" E; E3 l) p内存直接写入指令: maincpu
2 _' I, ?8 h+ j5 N2 n& o    格式为 maincpu.[][]@地址=数据: y2 {. r: g% S
    第一个[]:
# h6 ?9 W+ J9 Q! M# f& e- ~    o 表示ROM地址/ |4 }8 y- k' X$ o, Z0 M
    p 表示RAM地址
) T$ t. T8 D7 R8 p5 U# Y: `
* C/ T9 R4 M( u4 K8 j    第二个[]:6 N4 g; U; X1 {+ {+ o
    d 表示4字节
) T: H0 v7 g2 T7 s# ~% ~3 k    w 表示2字节
2 L7 s: d" Y3 ]    b 表示1字节
( m( f3 i$ y0 ?$ H6 s, `( O% M  n
    例子:
3 B1 N6 ~& {% ]. r    maincpu.ob@1234=FF
; p. P5 d2 K3 K2 d! S6 l0 l9 y    在ROM地址1234处, 写入FF一个字节" ?' @- T, d8 Q9 N) d

0 _# U; e  m2 S* c& x# B    maincpu.ow@1234=4E71
. ^# O& E: p5 ?0 d  V0 w  ]& @# @9 n    在ROM地址1234处, 写入4E 71两个字节3 J( D6 K7 e  l& r5 ]6 m

1 J5 }. N8 C6 Y9 f+ a    maincpu.od@1234=600A4E715 W- i' J4 f, G
    在ROM地址1234处, 写入60 0A 4E 71四个字节, ^' p9 J  o& {0 P# j

) y1 x: p. V3 P1 p2 }    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
# E9 L# Q! r; `6 O    - b' k- B# c& q( d( O0 o$ P$ c) \
' C% S- ~2 w% M: _. t" J  n+ G
其他:% n3 [9 y$ Y. s4 i
    dasm 输出档案名,地址,长度
" c/ f1 [9 |7 ^  M' C    输出程序的反汇编代码
) F+ v/ A/ D5 w  ]* `+ R    例子:9 |1 }) }2 X" o
    dasm 01.txt,0,100000; {- Z5 R' H! f
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt# `4 i+ z, K  B  H) M5 {; h' S4 o
/ D9 K$ K; J- L( a3 j
    softreset% _5 ~# j8 A% R3 S
    游戏重启, 但不重新载入ROM
- b' S/ g& U& _$ f$ h: g
9 {9 r8 H# i: A    hardreset" L8 z, G0 p7 P2 w) ^
    游戏重启, 且重新载入ROM* x; a4 z. L  A, Q+ Q
  @1 h- a6 p+ q& O
    snap xxx.png# u7 J, O( x- e: J5 A# t# M
    截图为xxx.png+ D/ c2 q4 d. V0 j4 q

' F( U/ a4 S$ R& w! Z& {* U  ! E% u# t: J0 r3 m7 W: V) f
  
0 C0 m2 Y: F$ d0 h; j  
. Z& h4 F- g* f# v热键:, ]( V; g$ K: C& l$ u
    ~ 中断游戏1 K0 i3 W+ [. z$ u5 i: q) M/ L
    F5 运行游戏6 c$ E* A5 E$ x) {. j
    F12 运行游戏且隐藏调试窗口' ]9 q: s8 }& E8 i
    F11 步入, 单步执行, 会进入子程序
2 f8 h! H, u& y/ R0 |    F10 步过, 单步执行, 不会进入子程序( O1 G( R( z! Z! R; q
    Shift+F11 执行到子程序返回
( Z  Z2 Z/ a; Y  v6 u    Ctrl+M 内存浏览窗口
  i& L% t; f5 H) L    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
6 ?; u2 j. O) ?9 S" X
# m* K* ~( Y$ o+ J{:4_94:}
5 m* p0 \2 T% V! [; z( O0 Q- k) i- O% y

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。9 i/ Q* _0 M, ?  x1 K/ b& ~

4 H: S) Z. s' `. U# h8 V: v* WPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东3 q1 [1 x8 l* o/ W" }; t
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-12 03:42

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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