EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

. U+ ?5 z1 f& q" E* I很快速的整理我自己常用的指令
0 b4 Z2 X" e# B7 X8 P  l, e7 x; ?8 f$ m$ j  E! y# W6 @; F5 i
{:4_112:}
; e- W" ]7 I! B* m, {4 W7 t- q0 o3 N2 j& T9 z2 L2 E
MAME DEBUG常用指令6 Y3 ]0 ^/ a1 S: e$ r
5 P+ S( `1 o8 V7 g
内存搜寻: ci, cn, cl
1 {% k$ ]. m, H& X2 i" b/ b) T+ l/ l3 y; j, I2 H7 p
    ci+ r. z% ^' I8 `5 s1 h& P0 U: R, u
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令( I& t" T1 j3 {; k1 m  T- r% j: A
+ _+ B! @8 t& d) l
    cn: e) e# i& t* ]% i' b( [" l
    搜寻指令* A7 C+ U+ B+ D# x6 ]
    例子:0 u0 o& @6 E' |# ]# t  K, Q
    cn eq,60
2 e* L4 x; [' C  J* ^/ s    搜寻目标等于60 (十六进制)( f, a7 M3 o- s. f, h. b
        
/ H6 ~. S1 {' `: ^* o& n    cn eq,#96
% ^* b* ?  N& ~    搜寻目标等于96 (十进制)
% o* _  q. H+ x" B" X8 Y; H
" |. Y4 B3 y/ m  q% E5 u6 A, U- l    cn eq& W6 r5 ~- n: P: X5 U" G
    搜寻目标的数值没有变化! v8 n+ Z) \6 t8 j2 \

  ~5 P. M$ b2 _0 ]    cn ne
) C8 K/ E" ^  n5 Z/ G    搜寻目标的数值有变化
$ j! i0 g( x6 L) L        ( V5 F9 X' e6 m( K! `
    cn +
1 K4 @8 b5 ?. ^: m' w! X    搜寻目标的数值增加+ O" t/ P  E' t5 M7 l9 |
    * s! ]% L3 Y8 E; D4 c3 i
    cn -
: Z2 I. M& P6 K& c" E  @8 O8 s7 @    搜寻目标的数值减少
9 \3 k0 L4 H+ l" h        
1 Z+ L3 U$ L9 F/ R( n' _" j. o0 G+ w# E* x    cn +,3. d1 e# x9 a8 ?2 S# n6 C
    搜寻目标的数值增加3 (十六进制)  C  @0 k/ e. {* T9 b! u+ r

" h5 v5 f' V( R9 H8 O    cl
! }! Z. M2 D, C& Q# Q    列出所有搜寻结果
) m% D4 m; ?) x* P: X& H4 t
9 J! b- ~) r% ]. V$ W2 e# x2 u  I    cl xxx.txt4 _: F) G# c! V3 V3 `9 ~3 p0 D2 Z& Z
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
( ~- k0 G# R8 h1 q- G3 `$ _/ `
: j  |/ j3 w9 y* v   
& v6 [) E- S9 v% t* x$ ?内存监视点指令: wp, wplist, wpclear' a0 P5 ]+ j0 Y1 ~, U3 R1 M: p" ]
    例子:6 O6 I: W7 I# Z" u8 {2 [
    wp 1234,1,r
6 f# X4 K6 N5 j' @; @      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1/ y+ U' ~6 d5 t4 U* {# D
( G5 v3 }. W$ p# j/ I
    wp 1234,2,w5 v0 i& e: \6 E
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度21 @, c7 _7 H) p+ L' N
     
' w) j7 K- z2 I" e    wp 1234,6,rw
5 P- K4 L1 j) j& `/ a      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6$ K* C; @/ Z8 Q/ b8 ]- f" \& s

/ r* q" P# L7 F  d( M    wp 23456,a,w,wpdata == 1
, |* o) t) p' `. o2 O      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
- v' I+ k, w3 E" E4 y: n% i
3 E+ u3 A2 e1 l4 f5 v    wplist
6 f: U8 [' U) ]      列出所有监视点
9 c3 Z- b) ~; o8 c6 F  ]+ [7 k# i4 u. c+ j  ]2 `* G
    wpclear 3
" l/ L; P8 i' r1 y, m7 H$ p      删除编号3的监视点
' o. O4 i2 p- T0 R8 O% z; t/ d% r0 i7 G8 |6 _$ b" W* H1 ^
    wpclear
# p5 r! V4 M4 R1 `8 S      删除所有监视点# h5 v1 ~( D, {% P# p3 |2 A! o
4 p- `# V1 X8 U4 a- J9 X
      ( @% W' H8 _2 c/ S# @7 ]
, V+ n8 d/ g$ x; C# F6 K9 U
程序断点指令: bp, bplist, bpclear
( X3 r# Q* a6 }: o- a+ z    例子:% _. W  p; P0 r" w5 E) E
    bp 12341 q, C5 i4 W- @/ x4 M, T4 ]
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断  s8 L7 e, c& [: Q! m

3 m3 r8 r7 s0 ?    bp 23456,a0 == 0 && a1 == 0
" F2 @3 E6 a1 j( U( @4 @. m      在地址23456下断, 且中断条件为a0等于0以及a1等于0* e. `- O% H9 ]! \" {2 C
, @' z. H: ~6 U
    bplist& J! k6 I7 K+ W* Y" X
      列出所有断点3 K( `& B! `! X( ?4 \
2 t& _3 D7 W3 s. ?
    bpclear 3
, {5 I  Q" ^% r. Q  E      删除编号3的断点3 r2 C8 b7 V) o9 V! w$ n7 G( u

# p4 D; [4 E4 x) K$ m    bpclear
0 c' u# M5 K, x/ `0 v      删除所有断点
. e  a# R4 M" ?$ \9 Y  J# s2 H0 t
0 l) x# V7 N+ }; Q' ]2 q      2 n+ g- ~: z' q2 i
      9 p1 [& e8 ]9 S7 @4 X5 |
跟蹤紀錄指令: trace. d# z2 ~9 S4 x% I/ {
    例子:7 P/ p& o  X% h  }
    trace 01.txt$ D$ o0 T9 q/ ~6 c+ Q+ V" M" r
    跟踪当前CPU运行的所有代码, 输出至文件01.txt* |1 j7 d2 J" U( v$ x6 l* {
0 K& }0 {9 E/ B* G1 i* L$ \
    trace off
: B/ s! M, S8 X+ I" T, Y; ~    停止跟踪, 并且关闭文件% k" J* ]' X; c; ~
, L* l  @* n9 p/ d( W
    trace 01.txt,0
) i4 f, A' R: \9 u( [    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt& _- M3 B. |/ q/ g
' ^1 j& p( E5 s9 r+ ]+ }' i6 t" a
    trace off,0
- e3 D0 }/ \. h9 o; o6 [    停止跟踪编号为0的CPU, 并且关闭文件( {" J' f& O# G- C

/ V# T8 E) F. L    trace 01.txt,0,{tracelog "A=%02X ",a}  P" S* l) \6 j/ P9 G
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
# f0 _4 J' N' f/ J% A" c6 Z    并且在每一行的前面, 写上"A=a "
+ |' u+ w$ z' J# \+ q% O    "A=%02X ",a为一个C语言printf函数常用的输出格式
5 c/ o6 e/ b! ]; Z    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
4 P0 ^, _! u7 T6 c3 H    X表示为大写十六进制数
3 Q, b' b. V" @9 ]
0 [3 z. P  Y' R: d$ C4 n: \" K
$ V( H+ Y* H7 u0 ?
0 H2 J, X1 I5 q内存直接写入指令: maincpu
! t* Q1 q+ D2 i4 Y2 [) a, p' G9 T    格式为 maincpu.[][]@地址=数据/ N% Q; O  t$ b; K# a3 F4 U
    第一个[]:
6 L, N# k4 K  o% G8 ~    o 表示ROM地址$ {6 ]- @7 m0 s* I1 n4 p' t( L
    p 表示RAM地址
6 u+ G% Q3 I! a; a4 Z% c# q6 ^5 h) m& g  R) t' u
    第二个[]:; H% s- Y7 N2 @6 y
    d 表示4字节8 t/ }( [0 s6 a( b' c
    w 表示2字节: T% `  M# |4 b( x' O- D
    b 表示1字节! y" E" e+ O* B: U( ^

& `% C" n: M+ ^- `( h4 Y    例子:; P2 M& A4 w; N) J# X+ ^
    maincpu.ob@1234=FF2 M2 f1 y# A" B8 S
    在ROM地址1234处, 写入FF一个字节" E( l% P- J- }, p
7 K9 C0 D! P% O/ S: t2 l* o, j
    maincpu.ow@1234=4E71
0 w; D$ [( r2 T' a) G# k! r    在ROM地址1234处, 写入4E 71两个字节
3 t+ y) E: z8 S7 Q
) w0 r3 A, s! ^: A) k+ `2 G    maincpu.od@1234=600A4E71
# x% Y3 p6 T& V% V    在ROM地址1234处, 写入60 0A 4E 71四个字节
# c7 f. l6 ]0 P+ l- j+ a! C+ K$ F7 C0 P
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写$ U* P+ p3 b; U1 a' Q& x
    , K# Z1 M; u2 ^1 x$ O
2 H! x, o* @8 i
其他:
" u: _4 E/ j7 A7 G) f! n% n7 n    dasm 输出档案名,地址,长度' G: Z  T, z- \& R, j
    输出程序的反汇编代码
( ?( g' i; J* x% M/ ], q    例子:
8 K: s" B. }/ D$ u) n# s3 J    dasm 01.txt,0,1000008 a" f+ i- @( V, C' ?+ _
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
3 R+ h3 I1 X2 ?8 \: B9 [& d
! \$ [0 @! J) N1 _2 F    softreset9 o. f0 \( |( U" Z
    游戏重启, 但不重新载入ROM$ g3 A) f4 P1 Y& A* A

% M9 K( p! s; G  n: c/ ~    hardreset
3 v% \' w( c- H* M) n    游戏重启, 且重新载入ROM
; l* R2 g# P* L+ v: g
, ?# \. ]7 b) t/ n5 ^. ^    snap xxx.png
- e- N$ H/ q' a0 Q" e    截图为xxx.png9 A. E5 B* I" t
$ k1 D! a' ?; |# K, P# L
  
0 K& ^0 t( _5 [6 F+ N  
, n5 q" e6 Y1 ]" Z& J1 i  
* u8 g" z8 y) ^! g" ?1 O2 _热键:
+ W# P) P( n: J1 ~% n0 C    ~ 中断游戏0 \7 W8 R/ f$ V) g% X8 ^
    F5 运行游戏
; ^  Y0 E1 g3 j  P- h% x    F12 运行游戏且隐藏调试窗口
; F: N" s  F$ Q( v  u    F11 步入, 单步执行, 会进入子程序& l& l* [: C; {4 j  V7 m; {
    F10 步过, 单步执行, 不会进入子程序2 d8 Y( N; G# w3 a- h
    Shift+F11 执行到子程序返回
2 I+ i$ u0 M6 P1 Y* _& n9 @- C    Ctrl+M 内存浏览窗口2 h5 I" ?0 \& `, A2 w
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU  T3 c) G9 z$ _+ `

. I8 u6 X! `5 }/ h: [; X{:4_94:} , Q+ M  u: u, c- c5 _; H  W3 h

  V4 y" ?/ L/ I; O8 Z( D9 N5 Y0 E* t

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2590 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。2 Y% ^; t+ I4 y# t
" ~& ~; S& Z' z& W
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 | 显示全部楼层
要详细些的东东
7 J8 z$ J" S% o11111111111111

该用户从未签到

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

该用户从未签到

发表于 2013-6-19 19:43:21 | 显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 06:17 , Processed in 1.135742 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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