设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

2 G  Y3 q+ G9 N) V6 ]& A很快速的整理我自己常用的指令9 x" E( {5 K1 v- S# N3 z

. g& o* i5 {* n/ ~& H2 \& o{:4_112:}
4 ~" K! t9 E/ s8 {
8 B: C+ O/ ]; F5 S3 eMAME DEBUG常用指令
1 `9 `* N8 {7 b/ f" b! P* a: Z5 a
4 \& V) V) W* Y3 n+ _3 V, k" r内存搜寻: ci, cn, cl4 M8 q/ p7 b/ k* w9 ]0 m1 q

, d& Z/ [6 v* U! Z' w3 o, N! x    ci& g0 @$ E# x0 a9 r, a8 D
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令7 ], D: l* M7 z' T
5 V+ j, S+ z9 g8 s% p( w- ^
    cn  W. T( Z" c5 o" t
    搜寻指令5 I  A9 w* H  ~4 |8 u
    例子:2 r5 n& ?4 ^( Y0 S/ g- x9 T. @' o
    cn eq,60
7 u$ I2 ?+ o6 @    搜寻目标等于60 (十六进制)
1 F0 {- d' h6 E9 ]: Q  T! n        
5 Y# b: j) i# j    cn eq,#96
6 D2 k; `% H  F$ y4 R4 O8 Z7 {! k6 z    搜寻目标等于96 (十进制)
4 E; ]. D! Y# o+ u) j" g. z" ?
: m( ^% ~5 k! y* m    cn eq. b8 g; T% A& x0 f9 E
    搜寻目标的数值没有变化
! |. B, l# N5 t) P" |
3 C7 M* @( `; B! a3 o% ?& O" m    cn ne
! ^1 W! h; V4 Q+ g3 T4 p    搜寻目标的数值有变化
7 H' b0 J' T: x0 \; F+ K        
# i; u' b3 {1 h) X2 D    cn +
) J6 `( u, x: j  k+ x    搜寻目标的数值增加
" U6 d6 v; w6 ~: b5 g    ! r3 L% B5 x4 K. _- F
    cn -
* U( E5 ^" O* C" v" n7 f. E    搜寻目标的数值减少
  Y. w) o  s; q; A$ w4 @        
. B+ S/ r9 c5 K3 j' I* g1 r1 Z1 W* ^    cn +,3+ }8 Q4 M3 |! S# m% x
    搜寻目标的数值增加3 (十六进制)' n0 p: o( {  q& @: n! _
2 z+ T/ ~( l* Y( }6 w! k
    cl
2 O  j: k- I. j, f% D- o5 l$ V    列出所有搜寻结果
( u4 _/ R7 i3 P
7 q% D; M" E" D; W    cl xxx.txt
$ D5 W9 n  t$ U$ A    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
5 D) A" L2 O! W! w5 r% ]; N1 m6 r/ `- Z
   
, g, k2 U* [# b2 q+ j内存监视点指令: wp, wplist, wpclear
  c( ?+ @- Z6 T. M" L    例子:
1 m; p8 N& ^* b' V9 u+ Y    wp 1234,1,r
/ n% c% d6 B+ r      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
) G2 U8 r. c  C% \, N+ X7 x; _6 |3 a! A' b1 |  |* @0 P4 S# V& I/ s
    wp 1234,2,w
% Z) Z% H' m6 f: a% B+ e" a      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
( n, G( b" q% i& U     & h+ a( Z9 |2 B
    wp 1234,6,rw( X5 q  q8 @; {( h% H5 p. L
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6- b( \$ u2 E7 b
9 P8 m2 c. k' V1 A( Y# M2 [
    wp 23456,a,w,wpdata == 1
( l2 M2 D. K# C9 H/ r1 e0 N      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1& X" t" d) M8 W
+ n/ {9 P2 G* X  q4 a! j8 ^
    wplist
- S- z) H6 k0 S" G' A! U      列出所有监视点/ G/ q- S7 [; W: F

; j4 K, {. f, D; Y; D# V    wpclear 3
' [1 k/ _; G3 m4 e. z& t/ B) ?, Z      删除编号3的监视点
' C  X$ T- [, n3 c
) d# s% f! N2 O1 q# Y7 _% r    wpclear% \, j1 _1 C9 B
      删除所有监视点
/ k! S; n, y9 b' H2 J$ B) [3 c$ y! f; x
      
% k$ t# K0 x! v/ }& Q3 ^
/ Q/ t; s. |1 l2 w# h6 ^# p- @5 L- z程序断点指令: bp, bplist, bpclear8 s- \' X; i# E; Q5 V, P2 Q) a. Y
    例子:
- v0 j' j# ^7 g3 w2 t7 {4 U! @; s. H* T    bp 12342 O. C5 @9 g4 u' O
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
* o0 O$ c! b  ~# T7 Q( l& q/ _: j0 @+ E+ x5 D0 m1 k
    bp 23456,a0 == 0 && a1 == 0
0 U5 U0 n+ F% q2 X6 R6 _      在地址23456下断, 且中断条件为a0等于0以及a1等于07 d9 m% B. [' f: S
+ r$ E% V" N2 p8 l' U2 Z! Z) @
    bplist
8 V6 z% |+ R* ~- x7 G4 `      列出所有断点+ ^; f9 e5 k$ f/ x  Z
! v0 ?4 K2 j8 j
    bpclear 3
! h7 e9 V+ j1 ~  a/ R! P      删除编号3的断点! {4 A5 n' |+ a4 _
# y( g7 A7 L; V: U% W+ l: a) }
    bpclear4 [8 B' p& n3 a
      删除所有断点$ K0 ~4 d9 c+ Z% ^0 A2 S, @2 M& [

2 g( |7 Z/ p2 K  Q" B) J) R      ; \2 T' ]" w5 o
      7 e$ e6 E4 R: v" U1 N/ R
跟蹤紀錄指令: trace
- k6 o/ m! S1 M& @4 \    例子:$ b, H/ B" \1 T: D! {, l
    trace 01.txt- d  q0 @: S; d: {8 q0 U# R3 S
    跟踪当前CPU运行的所有代码, 输出至文件01.txt2 j6 Z2 i8 e/ B! E

: G* E7 ]" l6 e3 w7 c9 L2 [    trace off
$ I! G8 \9 w! h    停止跟踪, 并且关闭文件. S+ [' |/ \9 Z4 \! `1 ^! r4 a9 D) E

5 L$ A. T- O# s8 ~2 \    trace 01.txt,0( X6 g1 S  a4 j. [4 d+ E; {- \: L
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt, [! h/ U  n. k2 V+ o) C

5 {; L3 t1 ?2 r& \# c- B    trace off,0
7 o5 B# }$ I# q) ]% n, b% G    停止跟踪编号为0的CPU, 并且关闭文件
. {) Q% y, Y% r# _  t! x) D& z: o6 W) C5 b( P/ Y0 A
    trace 01.txt,0,{tracelog "A=%02X ",a}# r+ J& ?4 b5 F$ ?
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
1 \& H/ q# [2 S: N( z    并且在每一行的前面, 写上"A=a "/ @, z( {0 }5 H
    "A=%02X ",a为一个C语言printf函数常用的输出格式. @1 R7 a0 }: v/ n/ Z$ k8 `( v
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
' D8 V( o5 o9 I: K& V- _  }    X表示为大写十六进制数
, |" y4 B+ K& G
5 g* F5 t& T& a1 b' j
  I& k( z; b- _# P( D& G
7 [: l2 O( O* A  f内存直接写入指令: maincpu
# n9 i& h% ]+ O8 {# v$ H% B; P$ w& \    格式为 maincpu.[][]@地址=数据
. a7 r$ J. S" R' j$ `1 \8 y! @    第一个[]:
- @& z0 g# j& {% ~5 U2 Z0 j    o 表示ROM地址
0 n* |$ C( [% T6 W    p 表示RAM地址
, v8 E( Z1 n- d/ g
; j  K% m2 ]% _. b, a    第二个[]:6 ]: A( @* h9 G. u1 x
    d 表示4字节6 f. \1 ]2 T" m% p# Z
    w 表示2字节
3 a5 |: Y7 x& y$ L+ _    b 表示1字节, X& U" l! i  f1 n8 B. T

  W+ q( c2 m/ f& t0 \    例子:
& y. N/ p3 z! |" R2 K# |    maincpu.ob@1234=FF
8 k# G2 q# M: K    在ROM地址1234处, 写入FF一个字节- K9 A3 L% Z+ X. k. Q/ [
5 ]% }: g! N4 ^  O
    maincpu.ow@1234=4E71
4 B5 Y& U5 N+ Q. ^8 P  u+ o    在ROM地址1234处, 写入4E 71两个字节
' X, \0 |2 ~+ s; u' V( |; G$ ]3 P0 q" K; z* p- I% ~) S1 h
    maincpu.od@1234=600A4E71
9 E. G* A) p" ^! A& `    在ROM地址1234处, 写入60 0A 4E 71四个字节- Q9 q, z* g" C% F: v
2 A4 c  A, S( V+ j: F$ F
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
) N% N5 J! H2 a9 [. O! s: A    " n8 S9 o$ y& A$ K" t
7 y9 Z7 r% G0 B/ e  S- H3 h& |- v
其他:
9 l# g- C/ W3 P0 [8 c% K2 _; U    dasm 输出档案名,地址,长度
5 x3 I- a; K& Y    输出程序的反汇编代码
* t1 i( C6 E: V! ^9 T    例子:& S; _* h% \2 F) ^
    dasm 01.txt,0,100000+ V) q8 D! n% ]7 m
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt0 n; }0 `4 b5 @4 u- t

  [( B( R. y6 `    softreset1 z4 K8 ]' T! R
    游戏重启, 但不重新载入ROM9 B$ {4 {& ]4 H4 G+ p) n  L  L

+ ^; _2 j/ ]1 C& L7 f    hardreset
# v+ W, O3 R9 b; ?7 ?, d    游戏重启, 且重新载入ROM: U1 l3 e1 C8 C. R6 c- I
. Z6 c1 g0 z* p2 i
    snap xxx.png
- h2 w7 `$ p4 T) J/ h3 T; L! ?4 a1 u    截图为xxx.png9 O' Q* ]2 @* X# i) N% I# b
+ t: o0 y# [0 K
  ; i/ X4 m) r9 p0 A( J7 I
  
/ |3 N- G. L5 L, U  
8 p' ?- u3 M  g/ i热键:2 |+ [# b, I& Z4 ^. T/ F
    ~ 中断游戏- `4 H, {- F1 q# O: M4 F: {' Z
    F5 运行游戏
3 n, J1 t6 a" f    F12 运行游戏且隐藏调试窗口
- O6 I) F1 o; z) q/ n( @4 R1 L    F11 步入, 单步执行, 会进入子程序
& D# ~, c7 q2 E: R# v    F10 步过, 单步执行, 不会进入子程序
5 N7 z* ~. l( @/ b+ b    Shift+F11 执行到子程序返回; \" x6 T# O4 y- e9 w
    Ctrl+M 内存浏览窗口
1 q" s2 `- A# G  h% `3 f    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU( A4 C2 K* T( g
4 B, X4 u8 A+ m
{:4_94:}
6 I3 B: N/ ?. h9 j5 k  d% {0 }
3 T% c4 Q* b( s! Z: J  p3 T

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2549 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
2 q- ]; Z4 @& x7 [1 O$ O
1 b" Z: `: v8 H9 A$ l: I- DPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东/ v7 k' q% o: [" m" f
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-18 00:39

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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