设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

' ^4 L; g& x2 d! L+ T很快速的整理我自己常用的指令
  Y% i; S. t" S7 d0 M' O0 @& T+ s1 h  S& C
{:4_112:} , J( t9 g# X1 y4 A

: G+ H2 c& I+ h- B, z6 AMAME DEBUG常用指令% a$ e" [# P  u, e' S* g9 I. ]  }

! ^; d1 @4 R/ N. p内存搜寻: ci, cn, cl
' y( I; I1 x6 P% L! D1 e! C/ U0 s
    ci: v) \9 N9 N' m0 h" Y/ E+ X
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令' X, o6 t* X: [* ~' I+ o

8 t1 V8 c) b3 e    cn
; I3 I4 b: ?6 R6 j  g! D    搜寻指令0 |4 T$ G+ \$ J; o: I2 g
    例子:
1 h( |8 h6 ^" u4 f4 L    cn eq,60
) u: X# o! V9 ^% I1 E, i7 `    搜寻目标等于60 (十六进制)( N5 |" \; R" d1 a
        , E8 J5 G  I$ M! i2 ?! j6 D; P# ~
    cn eq,#96
0 R/ M/ D" U/ P7 I! f    搜寻目标等于96 (十进制)- L* b# b) ^/ c

3 p/ q9 m9 _  s. Q& \4 ]% w: J    cn eq
% k, r: x, ^7 n: w: {7 X" Y, @2 K; ?( U    搜寻目标的数值没有变化
2 ~! o. R: u. s  x& G7 [7 ~
. g) R  B9 y( ~9 H6 v  O    cn ne; M5 h. f- m4 K$ Z) C
    搜寻目标的数值有变化
4 ^, [- i# ~1 M        
: Q1 s% Z# S% N6 W    cn +
, @, A# T' i( F2 Y- X% w, J% f    搜寻目标的数值增加5 @: g+ k8 c& U' z4 z7 a& t
    9 Y$ ^  o" R# a7 x( d: c! o8 c" i
    cn -; ~  T# s- ^3 t2 l3 p
    搜寻目标的数值减少
4 N$ m% K) {; |+ C. h        
+ \& t* s" Y9 z: G" w) Z& p. {    cn +,3
' a/ \6 }8 c+ H0 d7 f5 m2 u3 }9 U    搜寻目标的数值增加3 (十六进制)
! q$ o5 }  k/ q5 X/ L
9 l! J9 r8 H4 S% G1 O$ p+ i! ?$ Z    cl
7 p& E, u" g) X/ R6 u6 a    列出所有搜寻结果
% i3 g& ?6 W! H  A! \' X  R' v: g
    cl xxx.txt2 ^- X5 W7 f  o6 T
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
  ^) w2 y% z# X9 r5 t* L; Z/ x1 F4 A* P' L! _3 ^$ z2 q9 S: R
    ' ]0 K5 Q1 X% ^1 Y0 x- e: J2 F
内存监视点指令: wp, wplist, wpclear
: _: B8 n2 z! T8 m# g    例子:# {7 _: p9 J: [
    wp 1234,1,r+ e2 F, I/ d  ]) n
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
- ~2 J* C& L) E  v
8 h5 P5 M1 M" n+ j9 q    wp 1234,2,w
- n/ K( s, M- A2 s  Y! U, L; B      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2* D9 F# [4 ?+ x- e6 T1 e3 n$ r
     
3 ^: |! r/ U- k1 m    wp 1234,6,rw+ Z; A0 Y+ L9 G9 A3 s+ T$ k
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
3 ~* O1 Y, r- }$ ^) ?$ f# ?# L
/ N# P) x* k2 {4 E" O, L/ H    wp 23456,a,w,wpdata == 1
" }- |3 ]# Q, E0 A; \. @: `      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1- u5 B; u* B! J8 m2 Q" Y
1 i( k1 x3 R" K1 N% `" ]
    wplist
% l! m* ^+ v/ g9 j  C4 e      列出所有监视点2 Q9 l* I+ ?  v
, P- l% F! D9 s
    wpclear 3
$ f% `+ d+ R" a3 ^8 @- D( b      删除编号3的监视点
8 B; c4 g  ?) j3 d1 c3 O" k8 H0 E" N( G
    wpclear
" ^2 I8 J7 e) S% t5 @6 B. b$ x      删除所有监视点
; V) W  a8 W# z
. W& B3 e" Q4 C7 M) l      ; w0 B1 w) k& [

1 Z8 ]) v; F; _# k1 a程序断点指令: bp, bplist, bpclear
- ?7 m; d6 P( m    例子:" Y' ~6 D1 V4 b5 z
    bp 1234, v- C& v4 c0 z0 e
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断9 {6 o' ?; Z0 e  L% A5 W7 V- j

+ P5 Y1 P% p1 k' t5 R4 h    bp 23456,a0 == 0 && a1 == 0( _- k( G: V! P4 d3 |
      在地址23456下断, 且中断条件为a0等于0以及a1等于0. P! K, s& V, h. `$ S& ^
/ j5 E+ a* o7 J* _4 A  g
    bplist
9 c+ j5 {" V3 y! S* O! X* x      列出所有断点# u* o8 ~: }0 E2 z9 y; Y
6 _, Q5 d, r" Z- C6 R" j9 B# Z% Z
    bpclear 3
6 b8 P+ u; \: S  }      删除编号3的断点4 J8 x* x) J- ]. H' U% |

/ H+ [2 a3 n- D$ c. J    bpclear0 n, v- A4 _2 V$ T. t
      删除所有断点
' n: c" C( C$ Y- D4 A- K3 L/ d; }$ y2 q5 L3 a
      1 G5 `% K9 D: o1 Z7 Q2 l7 F! u2 a1 P
      & V1 k4 A  ^# _& n/ x% x
跟蹤紀錄指令: trace; G) F! _  D( Y# ?8 f% t
    例子:
0 w" \3 a( h0 G: n9 x6 _# x    trace 01.txt, t" s3 A5 _! x- n: Q
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
9 G, n* V; f+ D  z4 ]* J/ f0 n' y' A, Z5 W, j% l0 a8 y
    trace off
$ Z, a" h" M0 Z- j4 ]+ n    停止跟踪, 并且关闭文件8 Y8 r( H' i7 h0 D
4 o) J1 D  r7 r
    trace 01.txt,0
" W, n/ A$ `0 G+ {4 k- m    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt) ^) S7 z" Y/ Y/ q. l5 s2 y

. ]& {& u/ f$ G8 Z% c    trace off,0
8 @, J+ Y7 O- B: e2 r    停止跟踪编号为0的CPU, 并且关闭文件
1 ^6 m& M! n# G, X: m) O9 G  H4 w5 g; ?* K1 l% I
    trace 01.txt,0,{tracelog "A=%02X ",a}7 M1 r& T# J+ J) f4 v
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
/ H/ F& O& E  u; f7 c  x    并且在每一行的前面, 写上"A=a "
+ b+ D5 n4 C7 J. F" g" r    "A=%02X ",a为一个C语言printf函数常用的输出格式
8 u: E+ s( N) p3 |# ^5 ^1 Y8 L! W    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
5 E" }' ^; o- D% M* ^. s- E; A    X表示为大写十六进制数
: O" b# A3 i3 X6 N* l" G$ M  n: E8 t; j& W7 U- P8 _* U  W

! J1 t% Q0 s: I0 x. F: q$ j4 Q, Q5 e2 j0 O+ |
内存直接写入指令: maincpu5 X# u8 ]# e$ H
    格式为 maincpu.[][]@地址=数据9 I# l0 u$ i2 ]. A
    第一个[]:" h% ]- r, K/ P6 _
    o 表示ROM地址
8 D2 D( r9 @1 ^( q3 W2 N4 |' Q    p 表示RAM地址
. \2 B5 J9 J( O& P9 H
' O% L# J) P9 ?8 Q7 k: e    第二个[]:* \6 m2 R  B$ L- E
    d 表示4字节" s2 |8 z1 G. ~/ D
    w 表示2字节
  y2 Q) q0 f. D    b 表示1字节
4 e! L  S" {4 S5 D5 u' b9 a1 c* M3 l5 y/ y! s3 T% y" B
    例子:4 s# b/ S, a5 f0 y
    maincpu.ob@1234=FF
* q& r! N# m) L+ [    在ROM地址1234处, 写入FF一个字节
: ?* J$ c9 q% h3 F5 U
# Z2 L" C" S4 N: O3 r0 M    maincpu.ow@1234=4E71& L  Q$ Q9 ?" A  W
    在ROM地址1234处, 写入4E 71两个字节& d4 w$ h$ |$ j) f, D) x: A

# o: s  z9 _9 M% m    maincpu.od@1234=600A4E71
; x4 l2 u  v6 @/ \- d% q: }; |    在ROM地址1234处, 写入60 0A 4E 71四个字节
) g0 |8 B) F' j3 I% F/ {: M1 N$ v) v) n6 T5 t- c% y/ f
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写8 g2 L7 O6 M, s* l. w
   
: F3 ^. Y) e3 `
7 n' [; [# C' T6 P1 e% |其他:; Z& ~- O  o* J9 ^( x/ u
    dasm 输出档案名,地址,长度5 l! e& w% n6 q) q, E- ?
    输出程序的反汇编代码
! C' q! c& S$ f8 _6 `8 k    例子:2 K7 q5 _4 B8 k* J6 h/ i
    dasm 01.txt,0,100000$ R$ J. j+ r3 Z; a7 c
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
7 ^! }7 ^: B( r: U$ F6 N# C* X+ X) N; j6 ^+ {7 x
    softreset
& ]& w0 t' m; Q" j/ B6 t0 f8 |    游戏重启, 但不重新载入ROM0 S% G. ?, q: B0 e
3 D. b  k7 P+ w6 Z' P5 |: A; i5 j2 {
    hardreset/ [+ g* H; j' O) U. ~* ^( ^. r
    游戏重启, 且重新载入ROM
# I4 _) J9 x: h  h
. A* D0 b! B/ p    snap xxx.png
" _. h4 [" l: j3 L& _; O    截图为xxx.png6 M7 M4 z7 S" e5 E, H! y

+ v* j9 X  x" \- h; T# x( M  
$ z% v2 B. n. t0 `! J; m  
: k  q0 l0 F8 k9 V  
$ A( ]) h* X+ p3 E. Z# d1 x热键:3 o# c5 M2 K2 V( Y
    ~ 中断游戏
! _- s$ W# g$ i/ Z    F5 运行游戏% i  N" y' t7 {- L  t* S! \* k
    F12 运行游戏且隐藏调试窗口; x$ a% Y) c* {: {  d
    F11 步入, 单步执行, 会进入子程序
  @, F9 z# L" A; a" B    F10 步过, 单步执行, 不会进入子程序
! }' k' ?9 z! q% p% O  o    Shift+F11 执行到子程序返回
' k/ S- Q! H/ Q) D9 i- Y8 J    Ctrl+M 内存浏览窗口
+ l) n0 T2 B. Z    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU( H" f% v  |: P- t* |! B( z3 K
# {  Q' S; f* p# J& a5 E+ e) k
{:4_94:}
  a! H, v- J* ?8 u2 \
( b9 u& Y  b7 x1 y* E- ~/ c) |" Q

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
: I0 }( g# ?6 T5 P6 T, L- K1 }3 D5 T' u9 \
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 | 显示全部楼层
要详细些的东东
4 e& D% \; ~" D, [4 k11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-9 16:10

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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