设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

欢迎注册EMU618社区论坛

您需要 登录 才可以下载或查看,没有账号?立即注册

×
2 O( q- R+ k; U2 q3 ]
很快速的整理我自己常用的指令& V' ?7 u* K# b, K, l' ]7 x6 e( K
! X& P& K/ ?$ G! @9 [0 y, K  y
{:4_112:} + }2 ^$ C, Z1 g7 y/ ]/ x
8 r! A9 F; N% Z) ]+ n# d% |8 c
MAME DEBUG常用指令
6 v6 _- g& U0 k5 o2 v. L8 Z
' y1 S  @8 I$ W8 i5 n内存搜寻: ci, cn, cl
3 y/ ]# B7 O4 V' T+ U- o3 Z- \9 n4 Z8 H, v
    ci* G5 i( ~- Z1 s. u/ f
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
: Z$ F. t/ G9 x" I3 {
( w; B. c- E, A1 s8 x    cn
3 U6 g  o. t. I; I  e; V    搜寻指令
+ |8 ?8 G6 ?: C5 P$ y- e8 e3 e    例子:
% M# P! G; N/ a8 h8 k" M& _    cn eq,60, f+ M* `$ \$ o4 y
    搜寻目标等于60 (十六进制)7 g( n# ]; M4 K! O
        
$ D$ ~8 r/ z3 c$ D    cn eq,#961 C) X( D1 d- I" t9 r1 Y4 q, n
    搜寻目标等于96 (十进制)
- H5 w6 l& R( P0 ~& Y6 o/ M9 c1 J. k: `/ f
    cn eq, {  ~9 K+ Z2 Z, a
    搜寻目标的数值没有变化
2 T( |  ^6 s- j8 q# n7 |8 }4 _; {9 M, W4 B" A" C5 O
    cn ne
; S/ o* s6 A; g7 N% [    搜寻目标的数值有变化
+ P% K* b! E; W# D        
3 a5 L( f/ z1 h" I  d, |4 G+ n    cn +
9 ^% g, W4 D5 `+ W* {    搜寻目标的数值增加
1 n; U, @, c0 c' g' ~: q5 \3 I   
* m$ f& Y  |# q2 c    cn -
- C( S2 U% }: l. _9 R/ _( a1 e7 t" q    搜寻目标的数值减少. W% w8 j; j5 e8 v/ Q$ W- n) a
        
8 Z7 j* G& S! g0 _! R% ]. R+ p    cn +,3
1 @. I9 _9 n" O( J    搜寻目标的数值增加3 (十六进制)
; J8 L  I, P8 e7 n$ J$ r( Q0 D: |0 \, m# [: ^
    cl1 V& D$ e% U! R% d: d
    列出所有搜寻结果" J: o+ B( D/ ~

) C& i# Y. B/ Z6 p' X: i    cl xxx.txt
7 W$ L1 T" ]% {- M    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式" I, h! y; \* g1 Z% T

3 E* C/ A% {/ I4 N6 q: b- O5 D   
6 i" k3 }# e% u, R6 m% ?内存监视点指令: wp, wplist, wpclear0 n  e2 [* G! N! c9 R
    例子:( t7 k5 q* o! o5 }; |
    wp 1234,1,r! F* z+ [" n" @& V8 G1 b. W5 y
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1! p1 ^* f5 D+ B8 H

2 W. x5 R0 j; }# Z5 E0 A7 u" U    wp 1234,2,w. i% F3 B5 `: n. `) }" F
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
% b0 y" S+ m: I     
5 {& Y. ]1 n! ]# j* K/ B* ]    wp 1234,6,rw
8 Y( v8 V: x$ u8 i- s, ~      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
/ N$ ]+ R/ @( }. J: f+ l' s, H
' y8 t. n) x' \( A& {    wp 23456,a,w,wpdata == 1- Q- j7 `$ K, U  J
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
9 b' i; x4 a- x
$ |, a" \, m; Z. Q' S    wplist( W7 d, }( E# r/ W
      列出所有监视点, b, j# t. H; _5 I# R3 b* ^; h0 k. b$ u
: ^8 W6 F+ g0 B  @$ V# o! w
    wpclear 3
0 T/ e* r2 h1 e% L7 K- p; e( {0 c      删除编号3的监视点
" k/ Y' V3 }% y. L  J. M* P
+ R( P+ c6 X' C    wpclear; p! |; Z8 r' s% Q9 `
      删除所有监视点
' z# z- ^- b' }$ ?3 t- L5 Q  ^( w8 H1 h5 a" C6 }
      
. b" t" g3 y. T9 s6 U$ v; @$ K6 n$ F/ I9 ~7 o
程序断点指令: bp, bplist, bpclear& j/ Q) k) h: c" }% W' ^
    例子:2 F% y: o9 H7 W
    bp 12349 L( p) U/ i: u4 x
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
2 V( W. @# B& w1 H
0 O: J3 l: N- s    bp 23456,a0 == 0 && a1 == 06 \1 e* D# F: J3 i5 g/ T& M
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
; N8 M1 ~. G9 X. Y3 z/ {& J6 m1 Z
5 k! v8 ~% [0 \( [' L$ p, L    bplist
. n2 D) g/ {9 p5 l/ m      列出所有断点
. t" M  ]# w' ~) y9 L! r
; m" P. k( \4 _( g: L1 e( [    bpclear 3
; K* X; m. Z, e; }2 s      删除编号3的断点) U6 H' @* {6 K; s. A+ E; v
5 }* O. J+ }2 J% s4 w6 l) H
    bpclear0 Q. L+ Z( V" g/ M* {% P8 `2 ]
      删除所有断点
* ^! z  P& N% M+ V$ U  i( m* e8 [: q* d9 N( l& t) n' M
      $ g: D7 [8 z! ~5 j+ |! z
      + ~- P4 a7 @$ ]% K& p6 S
跟蹤紀錄指令: trace
) |0 A, ~7 Q% e9 R) K0 h2 m/ \    例子:
; j9 y$ Q  T3 D" r! Y: ^% I% R    trace 01.txt7 m1 ]' C: g4 O) m3 m2 F* K7 G
    跟踪当前CPU运行的所有代码, 输出至文件01.txt
1 R5 z% R. g8 {7 h
" M  }6 L2 p1 F% U    trace off1 o7 r7 y: a! |+ F# N1 h  k: {
    停止跟踪, 并且关闭文件9 }% d5 k$ \+ s: T: K

2 L. B! f. z' q7 m( B2 I7 j    trace 01.txt,0! E$ Z: ?/ X, G
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
& O# k2 i( A2 A) P4 c+ |# F/ _' _4 g) B6 x
    trace off,0
! @- G" p2 K- X5 i6 D    停止跟踪编号为0的CPU, 并且关闭文件
- m; ~( ^- ^) j* N# Z# r. `: \4 F: H( U3 G. k2 u- Y0 `
    trace 01.txt,0,{tracelog "A=%02X ",a}4 ~& E! m" V. I+ B( `
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
7 M9 b" E' q9 r7 Z+ T) {# ]9 M3 E    并且在每一行的前面, 写上"A=a "# P, E9 _9 q+ D2 a
    "A=%02X ",a为一个C语言printf函数常用的输出格式
  G1 X6 Z1 W8 M) M; T: j: N: v    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入- D" z- a/ S, A# W; N
    X表示为大写十六进制数
5 b: x  A5 P* T- g( ~, r( r9 [' I" i$ O) y

& `! {0 Q, n. {( X: a! ]( d4 `+ @# q6 P' l
内存直接写入指令: maincpu, \% S$ g/ N: s3 G4 V2 Q, e% N
    格式为 maincpu.[][]@地址=数据
5 M2 O7 S2 g7 U. e9 w    第一个[]:
0 E* S6 l, Y' z    o 表示ROM地址
. a3 P! b. H$ x; h' }, w, j. T# k7 E    p 表示RAM地址
. k8 T2 H% H# `& d% }
/ ]7 r* t& \; A- b# `    第二个[]:0 ]0 Z( b6 ?- v. I- \
    d 表示4字节
# ^% s' `- D" d& ~    w 表示2字节9 c+ L* {2 d; L0 H/ x( B% {# T
    b 表示1字节: ~+ `! H7 \0 T
, C- k6 z% `7 M$ k
    例子:1 e) N8 k) F: ]9 U
    maincpu.ob@1234=FF
+ c; ]4 V9 U# Z, g' s1 {    在ROM地址1234处, 写入FF一个字节
- R' \$ ?: R: {7 d2 ]+ N
8 t# Y: g6 h" _7 L    maincpu.ow@1234=4E71
. h- @% H/ M# c2 |; Q    在ROM地址1234处, 写入4E 71两个字节& o* d8 s+ c5 t" g' X

3 l5 f1 E4 H. |2 B    maincpu.od@1234=600A4E71! Y+ _5 G6 u4 R1 s4 ~
    在ROM地址1234处, 写入60 0A 4E 71四个字节" P8 a0 r, N- u& w( u3 x

; n. v! p6 M" @6 g6 _( O    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写+ `8 W0 q7 T+ I( f
    . y  j9 f6 R0 {+ y
9 I1 r2 p# E% c7 p
其他:
; d( n3 z4 Q, `, A8 `8 D* Y' Y7 g    dasm 输出档案名,地址,长度1 q( y+ h5 l; H+ n. v
    输出程序的反汇编代码, [/ l3 y4 J1 F+ |
    例子:
% g5 e& H. z1 H& Q0 x    dasm 01.txt,0,100000% F$ U9 T' l, ^; Y
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
- U( V, b5 {7 i- n6 \2 l, v8 }- w( u  r% s4 n6 {
    softreset8 r1 C, \: g. P3 f$ A7 b; o
    游戏重启, 但不重新载入ROM
. D& u+ ~( }" ^1 P: k* s# ]; a" @, H2 m6 w2 j8 B' y
    hardreset, d  F4 f9 K& g8 T1 @; V+ \$ E
    游戏重启, 且重新载入ROM/ V5 D; `. n9 G" i
: F- |6 y, {/ u* t8 Q' o
    snap xxx.png, g" U) H* `. \2 Y% \2 V& U
    截图为xxx.png% V' ^6 k) v6 K) h/ |

4 g8 w" {: C2 a! F- L! O  
8 ?$ x3 q$ N8 ~; p+ |; x5 w  
! I1 s% Y- K7 C$ a& w9 t3 d  3 l- M1 E0 c& \0 x* c3 s+ ~2 u# t
热键:
  z6 \$ `" x+ H" `. E    ~ 中断游戏$ O; `& }/ d2 k" V1 c
    F5 运行游戏% w3 N, n) c  v7 E' r, T
    F12 运行游戏且隐藏调试窗口: N* A* @& m: g: P2 I% Z
    F11 步入, 单步执行, 会进入子程序; g- M( t# v6 V9 e8 ]# I1 B) q9 Z
    F10 步过, 单步执行, 不会进入子程序
3 i, q# M7 V, y# Z: W    Shift+F11 执行到子程序返回
' p" J& h* y, ?: E' e! [    Ctrl+M 内存浏览窗口6 \6 Y% n9 O  q7 x2 {
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU) h- J* f6 o% v+ ~# e- |1 d, d

6 f7 O% X3 E$ Q. N{:4_94:} ( B+ ^( @/ ]7 T1 A

6 a- t! P  g+ |2 X5 r7 _$ a

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2550 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。0 ?8 p+ o$ V$ g0 P" Y
0 |& l. G( e$ ?, u
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 | 显示全部楼层
要详细些的东东0 W; H5 A: M  ]7 j" Q( _
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 20:26

Powered by Discuz!

© 2001-2026 Discuz! Team.

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