设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
6 Q# @4 k2 T* L- G  m/ L
很快速的整理我自己常用的指令& u' h& y% `- Z8 @. P- C
7 c4 e% M0 p4 t( h
{:4_112:} 8 B' C+ M* v$ G  W' X" X
' F/ \7 |; R: F' d
MAME DEBUG常用指令
1 o5 h1 \' a1 H2 Y" A9 H" f6 K7 h  L4 e) n
内存搜寻: ci, cn, cl
  [0 \/ [5 G. K4 y* |" W/ Z! u/ U  l& t
    ci' F% k' ], @6 r+ B
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
% b: C6 j8 k; [% k- E
! S. Q' W" C/ }+ W' u( V4 V    cn" o9 o6 s* Y; A
    搜寻指令, \! `) }# h4 d* n5 D( g
    例子:
3 e3 F& N" F, P3 u, P3 x) `    cn eq,60; H; f5 e0 U1 F6 \
    搜寻目标等于60 (十六进制)% H; d" ?6 S0 G. W$ |+ H" o4 W
        " v3 p" o+ u/ g$ M; S6 w, H  {" k
    cn eq,#968 _& k2 V3 c& j/ T3 d4 p
    搜寻目标等于96 (十进制)
6 P) B, T; j9 e
' u4 r$ t# n- }    cn eq  ?; u4 Y* F* K
    搜寻目标的数值没有变化
4 }( N/ @8 u& R) ^* G$ S# g
" U( d" e0 d8 Z1 P, i3 |; W    cn ne
1 Y8 p2 K- D* w1 D6 U7 F    搜寻目标的数值有变化
/ }6 k6 P1 n' A- M" [6 A        
9 L0 P' C) y- G& Z7 K) G( V: g    cn +
) e+ j' X: ^6 E4 L8 |' V% ~    搜寻目标的数值增加
) b" S( @9 F, d: J, \   
. {* D* f% ?0 V+ D    cn -
$ r& V, S+ c) K6 u    搜寻目标的数值减少
' q0 e+ m/ G1 P2 D% V6 I# y2 I        
5 o; h/ }; V2 O, i; N    cn +,31 c' M) D2 e) {1 K* ]8 x+ j
    搜寻目标的数值增加3 (十六进制)5 @! }$ g3 z6 Y1 C" n- Q

2 U' s/ Y  t- j. |0 m" |( F2 ?* Z    cl
: D4 Q. {1 V& d2 u- e    列出所有搜寻结果: |& [% g0 `5 e' F. d
! Y. v8 k* r5 [
    cl xxx.txt; J4 c- H5 I2 I% ], V& w4 R
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
6 M$ h  C+ b$ l+ W+ J+ j/ d) @
8 `( z% @6 a) ?& N: d. h    / i$ g! m5 L8 L" c
内存监视点指令: wp, wplist, wpclear5 |& A5 ]& F8 |- ]4 l+ s* Q
    例子:
8 D# Y; `8 h9 }1 k" _    wp 1234,1,r
- v: T1 C/ N7 }, q( V3 U      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
9 i/ r9 @- i0 E' x3 G" V3 Y. G7 d) ^" p# P* y
    wp 1234,2,w
! n6 m9 e; p  k, C5 A2 `5 v/ \      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
5 x, W  N! o  K9 G! a& H/ [" T     1 D7 z" e9 R& l/ r1 w4 A
    wp 1234,6,rw6 U. b. [6 Z, J% x' Z  X5 [
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度62 a1 g$ ]8 R: G0 T  f+ m' ^
9 N( z8 R" [/ m
    wp 23456,a,w,wpdata == 15 z. j9 Z% a8 Y5 Y
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于12 w( Z. [( G# ]( N, P4 {! ]
- L, q$ z/ L# }
    wplist# T6 O- a% i/ t
      列出所有监视点
" Q, h+ B+ f- c3 \
; i) G" t  J! Q+ r% C& [/ i# Y    wpclear 39 a0 h5 J$ ^7 f5 s
      删除编号3的监视点
/ ?- G8 E3 I' M7 n( S) P$ y
1 a8 j3 M3 f/ v, z# E/ Y" Q8 {    wpclear
% v# e( }1 _' }2 H! H      删除所有监视点; M, v$ G) @& D/ X* U5 d1 h: r
3 G0 T0 @5 h- V9 k4 U$ s( s2 y* `
      # o8 W( D9 m" ~4 q
1 j4 H$ x: F. w0 S
程序断点指令: bp, bplist, bpclear
. c3 m1 s7 t. n. S) l. r    例子:
' i0 f6 J7 _9 g' C, R- H4 v6 E    bp 1234& i# u4 T6 Y6 P5 f; L
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断( |; `0 P( d4 E
% ], T; M  z& L2 d6 }6 m) _6 v4 I
    bp 23456,a0 == 0 && a1 == 0& f% O/ e3 G# S9 K
      在地址23456下断, 且中断条件为a0等于0以及a1等于0" D6 U: A+ U5 g% ?, a0 W7 Q

* x) w' @) @# f! T. P% b% p1 D    bplist
; J7 `" P& ]1 ]      列出所有断点
0 J; y+ C4 S8 C6 e5 e( O9 d7 e" t+ v) l! S; L
    bpclear 3
5 @" u$ A, F. o  n$ _$ y      删除编号3的断点
4 ]9 F2 X- @: }- U( U; M% N3 o/ ?2 y, L* c+ t; X; z
    bpclear
% o+ i) }9 h9 X! f" @$ _( E7 ^      删除所有断点& n! u) ~8 k' f! B6 I
0 b; ]+ j+ O" W7 D- x
      
/ b: R$ G* A8 p1 y) ?      ; O) `& z- a8 f# D6 B
跟蹤紀錄指令: trace
! U/ F. h! T' }    例子:5 Z. U9 b3 H) x! v' y
    trace 01.txt
$ \4 C) @* j5 C* l* J    跟踪当前CPU运行的所有代码, 输出至文件01.txt7 o( L4 [5 @4 M$ \7 F; k
6 g6 X" F4 z1 ]+ G! f+ L) A
    trace off
. t! X9 h. n4 N8 Y& C( t3 {    停止跟踪, 并且关闭文件
  q% @; f# ~% N% o3 g0 N4 Z( i+ o$ x2 O1 h7 d( q0 z
    trace 01.txt,0- ?' ]( _. y. b9 H
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt, C- t# s; r# D2 Z
2 \2 l' v* a9 @! _4 N
    trace off,0; o8 q, X0 Y% |0 ]
    停止跟踪编号为0的CPU, 并且关闭文件
! i1 v/ w6 u4 Z
0 x# ]: J( C& L, `1 a    trace 01.txt,0,{tracelog "A=%02X ",a}% Y- ?3 u1 \/ [7 p* |
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
6 _- i$ O- _$ p    并且在每一行的前面, 写上"A=a "4 a' ^6 r& q! V, b
    "A=%02X ",a为一个C语言printf函数常用的输出格式3 [6 h# H4 M5 r: W, T0 A9 ]: C
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
3 N# q+ `: z0 o) e( R    X表示为大写十六进制数
: F3 T4 ^; `1 a6 Q
$ [5 j# Y( V! o5 k3 ^  z8 d: O
4 C4 g$ U& O$ [0 f% b0 s, c3 r; s+ D* ~* ?/ E0 y+ R
内存直接写入指令: maincpu
. f+ A$ |2 ]( S; ^; T. `: c! S9 B    格式为 maincpu.[][]@地址=数据
/ G8 P/ V0 V' P8 B. y2 R0 \' `6 F8 U    第一个[]:- q* o8 J, B: a, U; r4 S( j
    o 表示ROM地址# @8 q& q2 N1 F" K% U
    p 表示RAM地址/ X, T; G4 S+ ?8 u+ Z* h: |

" e6 o7 O- t) b, b    第二个[]:
, m0 b9 e3 S& z1 e% j    d 表示4字节
6 ?4 B$ y0 ]7 z* J0 W    w 表示2字节. G; C' `/ h/ T" m
    b 表示1字节3 X  z2 O. F( y- F3 ]$ N- u
! q" z; [; N) t- b* Z
    例子:
$ p# I7 F0 @# U% U( d    maincpu.ob@1234=FF* b  p3 }1 Y+ D2 e8 @: C
    在ROM地址1234处, 写入FF一个字节
0 }3 [$ n+ u! O% k  Z% v% I7 U9 i; l/ ~& L. i; b
    maincpu.ow@1234=4E71- n% g! N( ~& ]! W9 X* G* H
    在ROM地址1234处, 写入4E 71两个字节& w% T' M, R5 _3 V' s& z; g% f: l
0 _# u( D9 t- ^+ D  M. k
    maincpu.od@1234=600A4E71+ L, C% p% v! {" N
    在ROM地址1234处, 写入60 0A 4E 71四个字节! M: D( a6 r" U$ m3 l8 t' M* S

; [3 A4 p5 t# q7 c& e8 c/ N) x, e    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
$ Q6 j4 s' n$ F1 q1 V8 g( _2 a" B   
% L9 v0 |( ]+ g: C- H: R
! L9 B8 z: T; P6 J. k) V其他:( ^. s- g. V: h
    dasm 输出档案名,地址,长度, V) N, \$ F: l5 d5 o# j
    输出程序的反汇编代码
  p8 I  m" R4 N( r' o( I6 D( R    例子:
" V5 H+ s5 M/ v4 [  E    dasm 01.txt,0,100000
9 B5 `5 B6 f. L& x    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt" H* I% o9 i' D. x; W- `) X% x* X6 U) Y
5 y' M. R  ]- n1 g6 j
    softreset
& Q; _: l5 \6 K( V7 E+ r7 q    游戏重启, 但不重新载入ROM
& X- v! W9 j/ g9 R8 T8 w; J/ Q6 m
    hardreset8 I) f5 Y# ?3 U% g6 c; m# e% ~6 s
    游戏重启, 且重新载入ROM
# X: G" F( N" p$ @. L" ~1 N
) ?$ x+ t# q; C+ q2 t    snap xxx.png; `- X5 x. _  M! r, E" e) d
    截图为xxx.png
) ^( O7 b8 ?1 o7 ~1 @
' l6 ^: w* I4 ^! m  
* R+ l4 B8 l8 ^+ B  ; m  p7 _/ O0 P% p* a9 G
  9 x. \& N8 Z, h3 G
热键:
7 a$ C- |0 S. q/ ?( i$ F$ k) K6 g0 |    ~ 中断游戏
/ H$ t& q0 |8 k% ]' v+ f5 R    F5 运行游戏
4 W' m1 q, |3 @# @3 P9 A    F12 运行游戏且隐藏调试窗口
" S- H1 m* c8 g: F4 X5 O    F11 步入, 单步执行, 会进入子程序
. s+ j3 ^2 _( w. b1 ]  S, N    F10 步过, 单步执行, 不会进入子程序; w* J* D, J6 F
    Shift+F11 执行到子程序返回
& c/ h% f: r. q  Z/ X    Ctrl+M 内存浏览窗口: d" M1 q  f7 @, J# X
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU6 @% `' y2 C, w/ k& t/ @# g

+ [+ J8 K3 E2 _! @  j" l3 {{:4_94:} 3 e7 {: N" }/ W' e6 v, ~& M
0 o' }( p) o8 P6 \% Q3 q' b

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
: c3 d  ~8 R$ t7 N( x$ a& \2 ]# R3 o6 Y3 _) t6 E
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 | 显示全部楼层
要详细些的东东
% S2 f+ l# f5 \4 O' g' M11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-6 18:08

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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