设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

, V' a0 x# [: Y' O, e( |很快速的整理我自己常用的指令& ~: t5 ~: v1 G* ?9 p% S

3 `4 X  h! k2 \1 l8 i{:4_112:}
* F( A6 k# Y+ ?3 H5 t" O. u
) R; O1 }# H; N6 Z+ @( aMAME DEBUG常用指令2 s2 `$ i& p; X
5 d/ x  B6 s# C9 \/ C, r4 q7 }6 I7 U
内存搜寻: ci, cn, cl4 q" C# [! g4 C" a
& f. [9 s+ X3 i/ X
    ci# g' `; e+ C0 G6 [; J# q
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令6 ]3 e5 ]: n0 J
8 e- g. T: G5 V! y
    cn
' O6 F; E. C' Y  J/ ], ?    搜寻指令
. S/ x3 `$ ]- {8 j) Y    例子:
4 v& \/ }- x* l% ], k' k. S- o( `! f! c    cn eq,607 c- X- O* v% |4 s) b! N* S! n0 N
    搜寻目标等于60 (十六进制)) R# Z# T$ f4 ^% X
        0 f( I$ ^/ q  f7 ~/ T* I2 F/ |
    cn eq,#960 d% M+ T; m5 k4 h: k+ ?9 A
    搜寻目标等于96 (十进制)/ Q; d4 o2 @: T; b( G# v; [
2 M" t- D% I2 S- R
    cn eq
' a4 w2 R. f9 f$ t& d    搜寻目标的数值没有变化- t" m/ r$ \2 t

" p9 i' h/ Z3 }    cn ne
; `/ s$ k# `( c    搜寻目标的数值有变化5 v) A; @0 P. R4 q# t5 x
        : ]! V1 E9 ]2 |! K
    cn +& D$ B* d2 G3 J) F) u* X6 G
    搜寻目标的数值增加
. E% k1 q! m* _    " s5 K; [1 s% \7 d( X6 a
    cn -
" ^' _, P' q8 y$ r5 h, c6 p5 o    搜寻目标的数值减少9 _5 v" B# E& Z% z4 M
        
6 I+ }, b3 A9 P7 E8 W& K$ V    cn +,3! z8 Z6 Y( {5 [  e6 ?/ U
    搜寻目标的数值增加3 (十六进制)
0 M/ W" V$ B. h8 _* W9 Y
. X" J! Z, _1 \. P    cl. _6 |( f' |+ y- T) ~( ~* N
    列出所有搜寻结果& W* k6 O( \! o+ }$ l8 b0 o
% N0 R$ W; I9 n3 ?& v
    cl xxx.txt) T: C* @% Y3 u4 z' E
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式3 u# T% B4 l6 y
! T3 m  {$ T1 I' v
    ( L9 u" ?# B/ o  y* b% B3 @
内存监视点指令: wp, wplist, wpclear$ V# o$ d" d" l" E
    例子:
& y, P/ v, Y' e4 ?8 e2 p- D% w    wp 1234,1,r
& I, P- C! ?$ y- Y7 t      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
1 p- n6 j! ~! o# v, ~8 h5 z1 B5 m  v4 w0 E1 `6 a7 u
    wp 1234,2,w
) z* W4 B4 P8 R- [/ e; t      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
5 c+ J! f( x8 |1 c       E0 B' G; s# A- M5 K: Z
    wp 1234,6,rw
, x# B1 ]$ H# n3 V      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
! x" p& R5 l! e0 g* h
" E8 X+ g: X5 p" q" d+ x  ~    wp 23456,a,w,wpdata == 1
# E% U# b" Z- ~3 W: F7 a      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
. L; ]5 W; Q% R8 b7 w. f; j1 T' P' o6 d2 y+ [
    wplist
7 N9 D2 ^$ \! v      列出所有监视点+ v1 N' \  o1 a" s
5 y6 c" T" Z2 q. i7 l
    wpclear 3
* ~" J$ N5 ~' |3 P3 p      删除编号3的监视点9 I8 k9 u$ E9 x3 p0 b+ {2 `

1 \' |' d8 N/ H! }3 F* R6 h    wpclear6 y3 [' [  |4 P, E  {: ]1 [+ b
      删除所有监视点
* H& h7 j; z9 f) p3 x7 X/ Z2 j) q3 A9 L) B  h
      
) C* |# ^" D+ f4 m' u" Z$ ~& y
, z0 D) d$ G. u0 M5 Z程序断点指令: bp, bplist, bpclear
3 C# D, w; Q; x6 o  x7 w% V    例子:
5 o) S% y, t( M; s' U7 j: b    bp 1234
$ Z0 c4 o$ c/ z% i3 B! `9 ]& _      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
, g3 {  N  Q2 P& t4 `1 @$ F5 s1 q) g9 j  U
    bp 23456,a0 == 0 && a1 == 0
2 {* U1 f! w3 f5 @8 d: I9 _      在地址23456下断, 且中断条件为a0等于0以及a1等于0) D( k  `& F! `0 ^" z

$ v8 ?+ v& @  H1 V( g7 y4 ?    bplist8 Z/ {" `' ~9 Y+ {# b8 H0 D
      列出所有断点. k( d' S9 C& H* ^
8 a: A* T  O+ B* ~  C2 M
    bpclear 3
7 V. P5 e8 v1 O7 H; {3 p      删除编号3的断点
3 Y* H+ w. ^/ a5 M" k2 E2 ]. f7 L2 O$ f
    bpclear2 h% D: d$ ]0 E: p  L* l  L4 t8 A
      删除所有断点
# ~. e/ ], L4 z4 _9 m( W4 s
% @$ s4 a1 p2 x  I9 g      ) ]% U+ N% `7 }( E* }& t
      
: i4 m) J* `- _" R跟蹤紀錄指令: trace% N  d2 `" q6 E/ m
    例子:
: c8 t1 ~) T3 ~, |    trace 01.txt
" w* ?5 s5 K& s" H; E$ V    跟踪当前CPU运行的所有代码, 输出至文件01.txt
0 T, Z6 g- l; F, B0 Q# }+ m( @2 I7 ~5 j  i+ _
    trace off
' Z- r( V7 Z* e. Z9 @& G% x    停止跟踪, 并且关闭文件
" v% O# c. `9 s5 v
+ N1 y) a5 V: t* j3 T    trace 01.txt,0, U, v! V) F6 S! J  r* j, f8 v! M
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
! z! t* S" }. ~) l
+ r8 k0 j0 |" L) G$ n0 t6 z    trace off,0& t/ w" F% T4 b! @
    停止跟踪编号为0的CPU, 并且关闭文件
0 {/ w6 G1 ?$ m! c0 w4 _9 P* H( a
    trace 01.txt,0,{tracelog "A=%02X ",a}
9 l* A$ R  u/ d) U: k/ w    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt 9 Q9 c; p- f& e+ l6 v  O7 P# D2 b
    并且在每一行的前面, 写上"A=a "% D" w) ^; Q* [+ h0 P% l
    "A=%02X ",a为一个C语言printf函数常用的输出格式
" F6 v5 e% b# S; [( k5 C6 I( N9 D' ?    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
6 U) ]5 `+ ^& I7 G8 B6 x2 }. @    X表示为大写十六进制数
2 y3 J! N3 r% c( [9 u* F0 W" Z; S& V8 q# `' g1 }

( }' b6 }2 U+ N/ ~/ X: z9 z5 b; L4 L6 U/ E
内存直接写入指令: maincpu7 ^9 X, f" ]1 L7 h
    格式为 maincpu.[][]@地址=数据
4 Z) w" u" [, a9 q7 J    第一个[]:
& W6 |( [  ]5 P7 p. ^* l1 m0 M    o 表示ROM地址. w# O, v2 ?* K/ ?* k1 @
    p 表示RAM地址  {5 C/ n1 o* W3 ?6 S& i2 t

* A; w5 P" \* Y- _    第二个[]:3 Z( t/ S- _( B8 T
    d 表示4字节
( v; f8 z  X- {* f    w 表示2字节
- s; A7 r/ ]; ^' Z    b 表示1字节
8 h) U  t' [: W4 @9 @" v
* A/ B3 }$ L- w" T; \$ X3 V8 ]8 ?; P& C  H    例子:+ U) S! c) S* e, n8 c5 ?* g6 h4 w
    maincpu.ob@1234=FF) _. |0 {  Z4 G" l" D- x! \% G
    在ROM地址1234处, 写入FF一个字节" e  p8 B3 b1 c7 ^* F1 ~, @7 t

; d, A. p7 {4 f, C( R0 A' I    maincpu.ow@1234=4E719 O) a$ j( h' c7 p
    在ROM地址1234处, 写入4E 71两个字节
4 y# l) O. k; I6 ^+ O) e* R: ]0 `! N! o
    maincpu.od@1234=600A4E71
) C3 d& M' ~3 i0 z9 V    在ROM地址1234处, 写入60 0A 4E 71四个字节" X" R2 }2 p  l, |
/ L6 Z4 B# V/ {4 W, S& l8 ]
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写0 p7 t; c3 n. v" I
   
4 z, T, r7 O2 k# P. M2 c& c: n- R2 e
其他:
9 G" X% b; m& x    dasm 输出档案名,地址,长度
* I  e) O" w. F- m9 \) C8 s$ ~$ O    输出程序的反汇编代码
9 J8 D' u# N7 w6 \/ F! j    例子:- N5 t" E4 \5 z( D6 K5 e
    dasm 01.txt,0,1000007 v! \7 b, K5 q% h: Y' P
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt# W6 E) W( W7 z1 D* a7 ^0 l/ t' R
8 r' X8 }0 `& f8 G5 G1 X, B# N0 }
    softreset
+ O' b3 J: u  z' E& G' r# ?3 R& n    游戏重启, 但不重新载入ROM( j) X: ~9 k& \3 z' R' l
. k9 i" a. Z* i' d% |' Q7 j* R* Z
    hardreset
+ D7 @$ r8 w6 x+ f$ Z: u    游戏重启, 且重新载入ROM# j' f4 i, U% y! k6 R
0 ^( W: x- Y: s  s0 Y. u
    snap xxx.png
% X+ e! L7 [" q2 o4 b    截图为xxx.png
4 [5 R, u# O8 }0 S) p2 V0 f2 ?3 v* [3 B* y/ a9 B
  / o8 f. G  }8 G. |
  
: N1 w/ m* \; n- N0 e  
) {6 i0 ]0 G/ w) n) A# K+ y0 |  K* K0 g热键:
* q+ W8 R/ U) Y% R- {4 Y    ~ 中断游戏8 B4 k; E& W% `! {( e( c
    F5 运行游戏
, n* \1 N# m" z- T    F12 运行游戏且隐藏调试窗口
  k! G7 B" a* O3 P    F11 步入, 单步执行, 会进入子程序2 v+ u4 y% L& J5 b; a3 w0 S
    F10 步过, 单步执行, 不会进入子程序. T/ b) y2 Z' V# A* `
    Shift+F11 执行到子程序返回
$ G4 v- w2 q- q7 [+ g    Ctrl+M 内存浏览窗口
3 W- a6 G/ d& g5 C3 I& ]# P  h    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU" f" `8 B; y2 O

2 t" w  Y4 j6 \; J7 L; ~$ @/ y{:4_94:} 1 Y- v- C) @9 ?% Y% f9 k: X

3 N1 o7 u6 d# V5 U4 F

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2556 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。% ^( l+ [: p- I

) K9 C, _( v9 k) G! R  _* ]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 | 显示全部楼层
要详细些的东东6 E* {8 R* u: a: [- M# \  L" t
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-15 06:52

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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