设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

7 Z( ~& _2 d5 r' Y/ i$ e/ t  c很快速的整理我自己常用的指令
. ~0 f8 O" n; z8 W4 @8 ~  U! l
; z& L1 A3 G4 {{:4_112:} ( C. \4 }# w9 o3 B& q# t
+ U; K3 J9 M2 s' F; K
MAME DEBUG常用指令  r$ E0 T0 g  j1 A% d+ F
. c! H7 ^6 O# \9 M1 o( @) B( N
内存搜寻: ci, cn, cl
3 {  N) g! J# s! [* s/ t6 N
' S: ?% |2 H( `$ K5 t! I    ci3 J) S; A; D7 F) |4 }1 }1 N
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令; E, `. c: W- T. T- e2 f2 v" E

; z' @4 g3 r. u8 Z( a    cn' {" L2 G1 U: {! [6 W8 W: z6 c# Y
    搜寻指令
* u- U  U5 Z  ?    例子:  l. V/ X  L, B) I* z+ }3 b
    cn eq,60
' ]' W: ^8 x* c8 ]    搜寻目标等于60 (十六进制)9 w0 X: U" E/ ~3 D' M
        
9 U% O6 y- ?# l* Q5 {& A! @    cn eq,#964 d8 y/ C( r# {4 z/ A: I& d
    搜寻目标等于96 (十进制)
/ j( T& f% ~6 S' h% h$ [! k& t7 A+ n5 m- {3 A7 t: F
    cn eq
' ?2 S1 N& |9 `7 h    搜寻目标的数值没有变化
4 q9 V+ E- F, l: M
$ Z/ X8 {6 q1 l- l0 s: A! x. `    cn ne' L, x& J! a8 m0 \! Q
    搜寻目标的数值有变化, m# }+ ^; u( H7 r6 u5 _- h
        : o) l$ X# r; P
    cn ++ f8 {' s1 N9 F
    搜寻目标的数值增加
. |9 ]6 s1 u2 x7 `6 W   
" X' h" G( ~  {( J9 Q) k    cn -
3 r3 q- `8 L- R  v+ [* Q: k( e' |    搜寻目标的数值减少
* h2 f) ?/ [" m" C        
2 K- X8 J/ d1 K4 z* o    cn +,35 ~; s: F1 Z3 ]3 N
    搜寻目标的数值增加3 (十六进制)
/ b% K8 s: h- \& v; E, Y1 u
2 c* p4 A3 E0 N: Q& o    cl! t! A* @$ K/ [* k3 Q
    列出所有搜寻结果
/ q* _( p7 c3 }/ x
9 w! d; A9 ~/ t" H1 \    cl xxx.txt
8 n0 Z3 o) L4 ^  N- ~' V2 L9 G    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
8 ~# @$ x* X/ h- H: \5 C6 F9 H+ @/ G
   
' y  S( I6 y; M4 Q' R内存监视点指令: wp, wplist, wpclear/ N9 A7 A! x* p8 L! N9 e' _
    例子:
) b" C, f. h. {- Y0 {  D    wp 1234,1,r/ D7 s& l1 z: b7 h# j# H4 I
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
+ S8 p5 ]; w1 ]; |/ O' `
6 N" ~5 [, e! P6 w: x: s    wp 1234,2,w
0 z, T5 Q; a& }8 D6 i4 X      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
1 g6 y1 [: M! s) |     & I6 x1 [$ Z% H; U- G! F
    wp 1234,6,rw- Y3 u- g  W  K- l4 v3 Q
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
( N6 b, s9 h  f2 w6 p
0 ?# {' H; V& C% ~4 ?* |( r& X    wp 23456,a,w,wpdata == 1) C2 l6 K/ J0 w. Y  h# _; N4 @! D
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于13 `* u8 H6 @; }  r; R4 E% l" ^
; f* c0 N- u1 g: h0 M$ s
    wplist! B+ A1 o+ k, e
      列出所有监视点) \9 Y  u* X0 @) v2 l

9 U: ?  T& o# H" s6 u# H& N( n    wpclear 3. [3 e6 s* ]( F6 `9 e( v
      删除编号3的监视点) \) U. d# i8 K/ Q- N
9 Q0 A: c# {* a3 G3 z
    wpclear; d: O+ \4 t8 c! r/ D3 P8 B, r
      删除所有监视点! I3 @. r+ [, W2 c" `

* ~2 E% j8 C. u+ C4 q( Q      
( s4 p/ ~* H+ A/ [9 O  z" j5 Q. v0 w: v1 p. \( u2 n& |. I2 p
程序断点指令: bp, bplist, bpclear
, }# H4 w5 }# k) |  h    例子:' D1 o5 J6 c/ d# q7 r9 K
    bp 1234
: D/ `  v8 Y( n- X8 x! ^, o, N# h      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断& A% C* F% F7 o$ G4 V

7 I9 R  y* z6 P, Z. _  {4 v1 e    bp 23456,a0 == 0 && a1 == 0% U( c3 C$ Y) v* f
      在地址23456下断, 且中断条件为a0等于0以及a1等于0, D! O/ M" v* C: w. T8 n0 R

, Z* h2 o% V3 O; a9 p: @" l- n    bplist" H0 e  D2 Y  L5 ?  {# m, c7 g+ g
      列出所有断点4 D* t$ p9 X2 z! o, J% v; Z

$ o2 r& b* [5 l4 y    bpclear 3" g- E; [  |# ?
      删除编号3的断点) V' m$ O( x# @2 d  x* Q

# g' E) i' R) k/ j4 G    bpclear" z; S4 R0 f; a7 J" n' o- r' O
      删除所有断点
; O4 V/ E' n9 K) W1 w( S/ p0 v4 p* r
& q- ~' x: ^% J& E: Z      
0 v) F4 C5 `* b6 t1 m      . R  w, e6 E9 y- N5 \* L0 k
跟蹤紀錄指令: trace9 ~6 ~+ `7 Z- u3 x( i5 E
    例子:
  |9 l6 W2 N' }+ J    trace 01.txt7 h, N/ O! E; G% f! @: _
    跟踪当前CPU运行的所有代码, 输出至文件01.txt" k6 l* ~9 U! V

( ~% e, B/ w' h/ G4 z2 T    trace off
0 |7 a" {- A" u" a# [    停止跟踪, 并且关闭文件: R8 ^" V* s  u+ W) Y. v9 o
' q6 s% w) _/ d, Y0 u6 u1 E+ v% m
    trace 01.txt,0
/ [9 S  K+ W2 a& N3 k    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
9 [& V4 z: c/ X& k) @! p! B: R+ c  [& J/ u( r+ J
    trace off,0
$ ]/ S+ S3 v  R  j1 U1 e    停止跟踪编号为0的CPU, 并且关闭文件& t* m  N, i( P  [3 V1 I: L9 c/ C- L
& A6 b2 b+ n6 @! p
    trace 01.txt,0,{tracelog "A=%02X ",a}
( @; U8 K' q8 j. l/ L8 Y+ `    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt # a# z0 ^: J3 {5 l0 l) h" m8 Z
    并且在每一行的前面, 写上"A=a "9 H; X5 ]/ I& @0 ^" W& g; J# t
    "A=%02X ",a为一个C语言printf函数常用的输出格式) W' d1 A: h: y. \0 S. t2 i/ j1 T
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入- T: J$ K' o# S% r! I8 a6 h3 \; w
    X表示为大写十六进制数
. q. ?" r# M" x) A# |1 [/ n5 P7 b* H0 z

# I. _) U' U) K+ c; e- B9 C* v0 C& e- Z
( |% @# T. W% |9 I内存直接写入指令: maincpu  j+ M, @, X0 }* P. _
    格式为 maincpu.[][]@地址=数据2 @0 B) ~. d: }+ u% h
    第一个[]:
+ C# v6 k, \' }+ }# @; u    o 表示ROM地址. `. R! N9 I! ?
    p 表示RAM地址
/ x9 \: r: c. _
5 P1 N7 o/ {: P; ?$ G8 M    第二个[]:
2 l) ]8 W- q8 d! g/ B: }    d 表示4字节
; C7 t6 q( R' N: x( l* E    w 表示2字节+ g- I' n! v0 v  ~/ D) H
    b 表示1字节$ P1 E9 T/ M/ F$ j9 Z

1 B3 o/ Y2 A; o5 _( c    例子:: N# t$ j* w: e" ]
    maincpu.ob@1234=FF
& F, [4 l, }, @* y' @    在ROM地址1234处, 写入FF一个字节, [; P' g0 ]) A  f! ]
, V1 ]+ O8 [6 J1 S5 _, p: U
    maincpu.ow@1234=4E71
5 y3 O, g0 [' c. c. J7 k    在ROM地址1234处, 写入4E 71两个字节- \: Q. ~) G% H# j. Z" w

& ^) d4 ~! E+ d3 Y( Z    maincpu.od@1234=600A4E71
1 f; U4 L6 i6 S8 l4 G    在ROM地址1234处, 写入60 0A 4E 71四个字节
* F+ A# y- o  @
# a( z+ i5 s7 I    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
5 Z( W, Y. d2 _2 Z& ^& ]* }    - J4 n: Z* M8 c, c

9 W: ^+ `' |* R1 `7 `5 I) C9 O! w其他:
7 u7 _& V" h+ Z1 C6 o0 Z( V0 X3 d    dasm 输出档案名,地址,长度
0 u4 ~$ Z' r: A4 p& Z% t$ g; c; `    输出程序的反汇编代码
- z- A. J6 |' H! }& a- c& E    例子:
, }5 z' _; d3 Y% E/ `    dasm 01.txt,0,1000002 m! X0 m) t$ |9 s' d
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
8 |' |& D- P2 n5 N- j/ {# C7 v5 j
. [0 a1 }; H# ^3 S+ E: T# e$ P    softreset- S6 i, r% ^5 F" n0 F( ?
    游戏重启, 但不重新载入ROM9 c7 E+ u) Z" P! v

$ Q6 u& b7 h+ M    hardreset, E5 S4 L: C% A5 O% T+ C8 @( D. X) k' G7 E
    游戏重启, 且重新载入ROM
6 ~2 a4 Y( ]& a) h; y, a8 T# e+ ]* T, \
    snap xxx.png9 O+ F  |$ {% [! T
    截图为xxx.png
: [  u/ P2 H) \5 }" N$ f
  w" v# k  o& v: ], `( M. A7 ]- m  $ `7 t5 G( Z8 C6 Z0 W
  & M8 Q' G$ \* I$ G
  
: E, l% ]) a+ h热键:, T9 j$ j0 S9 f$ E" F
    ~ 中断游戏
( u0 f& O4 {0 e- \    F5 运行游戏
$ o4 C1 a3 C% @1 L' P  L# }    F12 运行游戏且隐藏调试窗口$ y) e7 j; E" X# U! i; l' c
    F11 步入, 单步执行, 会进入子程序
" \5 Y4 r, k" j9 b6 m    F10 步过, 单步执行, 不会进入子程序" C6 B+ i, |8 u" S1 |. v
    Shift+F11 执行到子程序返回
1 m& ?( A' P8 |- V5 q- U    Ctrl+M 内存浏览窗口) E% H4 ]1 }& a7 N* _- J
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU  F. ^8 d7 ^/ c; x: Y
+ \/ a% m6 p; i
{:4_94:} : [# e" c# {4 u$ p; K

# Q/ Q; o; d( U$ `

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2556 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。5 a8 d2 \  e0 L
5 t5 r. L4 A- f) [4 Z
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 | 显示全部楼层
要详细些的东东% }' P% v2 O/ o' e( m  i
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-25 08:28

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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