EMU618社区

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
9 [( r, ]. P4 e3 i3 O: [! q$ f8 q5 U
很快速的整理我自己常用的指令
" `! W( d( {. p4 H: a' F
- Y' Q* m" F6 }! l+ T{:4_112:} 8 ^0 h5 S9 H) C( s& r1 h% @
- G- B- G! I) f8 S8 `
MAME DEBUG常用指令: q9 t7 L, n8 j8 h. h) A
! B6 v& O/ \: B, b9 y) k
内存搜寻: ci, cn, cl
# U: q# o; @( x& }9 x) i$ g8 i4 b! A9 Z: M3 C  ^9 U; I
    ci
! L) f' {/ \; J# }- m    搜寻任务初始化, 每次搜寻一开始一定要输入这指令3 Y8 {- ~6 p, X7 u! `; N

% ?6 V3 S6 y7 Y1 C4 w8 \: o; a    cn
. @8 ?) z/ Z& t/ R9 ^- H    搜寻指令
3 s2 h. a$ y6 H4 F+ \    例子:6 ]& r- A9 O! l. |% {% G9 W; \
    cn eq,60
5 [5 L9 L; C# v% v7 N$ _    搜寻目标等于60 (十六进制)9 m  c# I6 c  c: R) S1 b  M2 V2 M
        
. X* f& J3 g) ~5 _5 k4 R2 w- h- J    cn eq,#96
& I. X$ T! _. v) [% y( Z! R1 U    搜寻目标等于96 (十进制)! V7 {" V3 u3 w0 w3 y

, v! i6 a# k- Z  p    cn eq
0 `  a- O  s  R5 L; t2 R    搜寻目标的数值没有变化2 M& I9 M! q+ i1 r: _# c1 X5 {
2 j7 h/ s" Z) K& ^0 a. z; d
    cn ne8 B1 |5 x7 [1 `, i$ A+ G# Q
    搜寻目标的数值有变化6 u5 g4 J0 z  d7 D; E
        
6 [7 S# ?! L0 h' W    cn +
. F% p# M9 Q' M& X% K4 R/ ?& N    搜寻目标的数值增加
. j$ b9 L! X) f0 ~   
' i7 H) ?0 v: D  |$ m$ T* b& i    cn -
3 h- O8 K& G; D5 F6 u- M9 D$ o% P    搜寻目标的数值减少" ]6 W9 t8 A# O9 S
        1 D5 T* n0 G9 I0 r
    cn +,31 {5 T( ?" L2 H# J/ W9 m# v/ d- u0 E
    搜寻目标的数值增加3 (十六进制): F* ^$ A; g  O2 w! Y6 P- S

3 }- z; Z' E! j# @    cl
5 y1 f3 U  c4 ]3 V* L" d    列出所有搜寻结果
# ]3 E1 i0 \& \* P9 J; _$ D# Y& q- A3 G
    cl xxx.txt
2 Y: n  p# q. k2 y0 Y# l" G    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
* [: a, v* {5 `3 T
+ [* v) H( S3 M( {    7 {- S$ M: d; z6 O; w
内存监视点指令: wp, wplist, wpclear0 q; y' m5 H1 S4 P
    例子:
2 p# B5 ^, q, d5 U. l  U    wp 1234,1,r7 J7 f1 n" ?7 Z
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1! z9 G$ Z$ R8 V, n2 r$ s
9 ?) c2 f) E6 W' @
    wp 1234,2,w
5 [, g0 u7 d7 X8 O- _' q* p- v& F, ~9 w      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
+ x" V+ _* @; H$ l& d& k     3 F0 Y& w1 k7 M( {3 @/ Y
    wp 1234,6,rw; |( @3 |- o  E9 W
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6) A) {7 [& s# j6 ~7 E2 v5 a0 Z
0 j3 g, j) j. @* {9 s0 ?
    wp 23456,a,w,wpdata == 16 I/ S% k$ S7 S* Y8 z
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
# g' Z8 g  K* c! p$ Q% n: u% v
+ ?5 Q! e$ I/ M$ I7 \- Q. G    wplist
/ e9 q. m# }0 }$ x; s9 g      列出所有监视点2 |  E  N. H3 v! p7 c

) Q; L! P' B" V) m    wpclear 3
  b( ], S# ~' \, w      删除编号3的监视点1 C  S7 s( y6 L
3 j) U& P, L3 H
    wpclear' T) M) E% D* N, o8 ?6 t* V
      删除所有监视点
/ U) H1 C* |( l, p6 }
' x$ ]9 ~+ H! A4 t. L0 k9 t      - X) {6 c0 _2 K* `5 j; g. v: N- m! {
' i2 v3 S' n& _7 x) s& m( e$ G
程序断点指令: bp, bplist, bpclear, r7 R7 i: p, e
    例子:
, w3 a7 J% I2 F) M    bp 1234! B4 I+ K2 D3 {) s5 S8 D. i
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断- X% b% f# p& \8 \9 |# j, E8 K
, e/ B, S5 K. _% ]
    bp 23456,a0 == 0 && a1 == 0
- v' M9 K- E1 V8 F$ Z" C, d0 J+ ?      在地址23456下断, 且中断条件为a0等于0以及a1等于0
; E2 ~4 b. ?9 K
: ?" h2 o# H- s) `9 c    bplist* |) V! a- T( k, F% ]$ i
      列出所有断点# t2 [" u$ ]& q1 k$ P" {
( r& i" d$ X* h+ a3 D; t$ F3 I
    bpclear 37 Z% G$ C* }/ F& C
      删除编号3的断点* v& T; e6 w5 w  t

, M$ @5 q: C3 a6 I    bpclear7 @1 ~, R3 t* N: P1 X
      删除所有断点
8 X0 P! s$ a! t5 I9 e- J8 o0 b! J+ \+ _0 F
      
( ^6 Q* |7 e7 x. b      
! k; F1 \, [5 x1 S9 f# N( o跟蹤紀錄指令: trace
9 J; ~! A$ p8 ~( s# B    例子:- Y- ?$ `- Z0 M* s, l( s
    trace 01.txt
9 r! p  O; `+ ?8 ]4 j    跟踪当前CPU运行的所有代码, 输出至文件01.txt6 z# a! i! A4 Z5 n8 ~  |

3 n  I4 E9 i# a9 k# k" r; w    trace off3 }# [5 k$ o- |, [' c5 a
    停止跟踪, 并且关闭文件
6 i! J) u: |( O; a! k- F$ @
9 z$ ?/ L' m$ \* Z) H( W    trace 01.txt,0
2 V: a: a: P2 U2 @" G7 G6 E1 w    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt. a: E' o% g1 o* C0 j+ }# \

, c, |3 J6 f$ v- I* r7 w: ^    trace off,0
. e0 F# V2 _) _/ c" x    停止跟踪编号为0的CPU, 并且关闭文件: Z; L6 T  {+ v  r9 a

- r) a  U* S* I4 p, V" a    trace 01.txt,0,{tracelog "A=%02X ",a}# U# }$ T9 v7 u; L
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt : e  Y* ?0 ?8 @" \
    并且在每一行的前面, 写上"A=a "
; a" d3 x. B/ C" o. ]8 i    "A=%02X ",a为一个C语言printf函数常用的输出格式3 q; K4 G3 L# x! T
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
" E7 F  }6 ~/ X+ J* g/ U    X表示为大写十六进制数
' V8 y. G& k0 ?' d0 E+ _
; P, O! V, u8 c" I  A( H* F8 ^
; @; u3 I, G" R$ K: r8 h
) Z# t/ o8 v; i% ]; H7 q' l内存直接写入指令: maincpu
# }! m% d( r4 O$ N    格式为 maincpu.[][]@地址=数据
! D! U2 Z/ M- |5 ]: @    第一个[]:
; V4 ]% e: Y; J    o 表示ROM地址
' O- T& Z" B" M    p 表示RAM地址
5 S' X  O, `- o+ g/ R; i6 r; M
- [% b0 `7 e! {9 J9 v    第二个[]:
# m! m$ l& ~# q* z' L( X- z$ a    d 表示4字节
# F6 E5 h9 m. F5 Y; x& {* l& `% N8 r    w 表示2字节
6 f/ [/ S% _5 `$ Z' Q# S+ Z3 d    b 表示1字节
( q+ a3 q$ s+ _5 }5 ~( U1 ?. f1 o7 J! o  Z
    例子:; ]( R! K  ?3 ]( m9 N: E
    maincpu.ob@1234=FF9 h+ T. q, H6 D) Q; t) q8 k
    在ROM地址1234处, 写入FF一个字节2 X1 I1 D& ?7 i( i, c6 E
& w9 f+ g! b; M2 t& w& _; {
    maincpu.ow@1234=4E71
$ H% h+ t, O+ s    在ROM地址1234处, 写入4E 71两个字节
0 _* G$ K! O4 N" y% f: q( V% o+ l- ?+ x/ V+ E
    maincpu.od@1234=600A4E71: X( ]4 O4 s# B
    在ROM地址1234处, 写入60 0A 4E 71四个字节
) W3 C7 Z/ }, s2 v* f  [0 c8 R2 {) b+ z
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写, w" ]0 T) g, P* v8 K  `
   
9 d* Q+ L3 z/ Y; h! H
3 `3 g8 n( {. }7 h1 k" \3 s% p* F1 c7 _其他:# v  y! N( \5 O# m: f& x$ e
    dasm 输出档案名,地址,长度
* m  w2 i6 I$ i( V6 q; i    输出程序的反汇编代码
3 J- q$ q, J. H/ O+ l+ w3 v- u    例子:
/ [$ I9 {- n' z  }1 P1 j: t    dasm 01.txt,0,100000# v% D, f6 K9 }* Y2 M8 w
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
  U; \$ |5 j: N$ l2 z! g- g$ j; d/ V
    softreset0 x  m, M+ u1 x8 Y
    游戏重启, 但不重新载入ROM
) O/ i- Z. @+ w+ X7 E
+ v: ]8 X+ B* ?2 ?9 O: ^; `/ v    hardreset
) g: \- H# {9 `- b    游戏重启, 且重新载入ROM( \, }0 y. w" p% @- U) @  ^& n5 R0 R

% y' C( o2 v& G( ]+ c" S0 a    snap xxx.png7 a0 ~/ v  ^) Y* C  \; H% l) J/ P
    截图为xxx.png
+ |  k+ g+ y( K" a) a) H" [7 Z3 P) P6 z: l; f  T: _! [2 g" s
  . o7 z7 ^  y7 g( t, ?
  
7 A: K6 M% j1 H" J5 s$ X1 S* K  
6 I& M( w- c6 ?' h8 n3 b热键:
+ `7 ]/ f1 T4 Y9 T    ~ 中断游戏) Z0 ?+ L0 j+ [7 b& j
    F5 运行游戏( G: @$ {; W1 M) P5 q8 H+ |1 x' {
    F12 运行游戏且隐藏调试窗口
; \) y. Z' z6 Q/ q7 R    F11 步入, 单步执行, 会进入子程序* j' i4 F: m" h
    F10 步过, 单步执行, 不会进入子程序
% o) _1 E5 k6 f/ o    Shift+F11 执行到子程序返回; p5 ]$ _  m. ]3 J/ u
    Ctrl+M 内存浏览窗口
5 G2 K) [$ `5 M5 ^+ I7 Y    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU' _3 @% \9 y+ d  G. u& O

; D5 Q6 C/ p- Y1 `{:4_94:} 2 R8 _2 _2 b$ a: \7 T2 N7 I8 l

2 N* V/ [; n; D3 A

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

签到天数: 2590 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
/ L" V# ~4 s5 E1 `# r
# G" @$ o6 X* m- l: \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 | 显示全部楼层
要详细些的东东( W& C, c- i. E7 y& \: s
11111111111111

该用户从未签到

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

该用户从未签到

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

本版积分规则

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

GMT+8, 2026-1-28 19:46 , Processed in 1.125000 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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