设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

* g% m" f6 F( L- E很快速的整理我自己常用的指令) C* f! b; }! V& Y6 D

' _0 D- u3 H6 h, f: T{:4_112:}
5 G$ I  P& E3 `& ?6 \+ ?5 }% I8 M
MAME DEBUG常用指令
6 c) k. T2 F. \, N! L3 |! I
' j. f8 P/ P& K7 N0 h8 r内存搜寻: ci, cn, cl
! A$ h5 I% n7 G) `! I! S
0 K% l; ?) M) H    ci' _2 |9 _* B" L) U
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令
/ I" ^6 F! {  y( ]
' b1 d2 Z  {6 z) `    cn
# |- O, q. l; ]0 _: Y6 U" r" ?    搜寻指令
/ T! e2 o" o" n3 L    例子:) u& R' g2 P* |
    cn eq,60
1 J  s6 A0 x1 m    搜寻目标等于60 (十六进制)! S) o- f2 V  Z
        
1 |8 s  Y, s: O    cn eq,#963 _' [4 y2 z! n8 L
    搜寻目标等于96 (十进制)
' Z% B7 V5 W' `. d9 W! f" d3 w$ d9 e3 C( Y/ q2 v4 Z
    cn eq# q) V' Z. k8 l! J7 K
    搜寻目标的数值没有变化
5 m! q0 w: I& P7 ?/ V5 [' Q& N+ S  r& \  J
    cn ne8 _2 ?; c# Q. R* X
    搜寻目标的数值有变化4 j/ z5 S0 R+ l) o' V
        9 f5 _. |" \$ ]" E& R
    cn +
! t0 g" I* _! P: ]: u    搜寻目标的数值增加0 T* x1 p1 n7 ~* H+ {: V5 O% P
    ; ~" [' d+ K* B/ }( Q/ H
    cn -! W  I5 Y  B) L) ~% b% ~
    搜寻目标的数值减少
* P6 ]" v- E3 [$ D: b  y        
2 U5 N  t; q  d. K& Z2 ]    cn +,3# o9 q" b1 l4 M: e. s/ z
    搜寻目标的数值增加3 (十六进制)
; ~! }1 g- m3 H4 ^0 s1 `4 E, Z: b4 s8 `9 N+ h1 T: B' f& j0 {6 ~
    cl2 I% ?, P' A! a
    列出所有搜寻结果) O2 Z- O5 ?. w# N
8 ~4 q0 U* ~/ x+ j' H! e8 d
    cl xxx.txt
7 f- D2 @6 }& y/ w4 y# {' d    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式7 r7 k) d  M7 Y2 n* |4 P+ B

3 ]6 X' ^" o  o7 N4 d    1 R# p8 P5 e; r: _9 I, }" ~
内存监视点指令: wp, wplist, wpclear5 Y! M6 a! D, m, t$ ~
    例子:
+ F* L& l/ Y; g% \: g    wp 1234,1,r1 E+ e! z( M# }6 l
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
0 _" F' }+ l* }0 L* e# y9 r
- y2 T+ F% D! m% \1 ?% Q2 l4 S    wp 1234,2,w# j( }6 ]& x0 L6 Y1 t! Z
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
) I7 g" P5 K% R8 Z     
& {0 n( Z8 W+ o    wp 1234,6,rw. O4 X8 x' Z& k/ ^
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6% w+ X5 v) E1 r8 \: j# [

5 d8 T' N, v# }! s0 v/ m  Z    wp 23456,a,w,wpdata == 1; V* n7 U2 c1 k, \
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
$ {1 c7 K7 R' _) E( e- z* k$ F$ r7 u
    wplist
  j! J; ?  ]2 t8 Z% ~) Y1 q      列出所有监视点
4 x, G& }9 B/ g2 ^! y
/ r' k- G7 O6 ~  T8 ]    wpclear 3
( a; C& V" O7 I6 n, [* R6 ~      删除编号3的监视点
2 o1 n8 r4 ~1 ~5 X0 G, V, ]% r" t& r* v5 b
    wpclear
5 i( c5 Y' k- w0 T3 {      删除所有监视点
3 Q; C. F- E& L& I" f
0 p  U& Z0 b, ?5 b( W% `! s      
3 D8 [& A$ j$ r% ^% S, M
( H+ u2 P! N! E1 C& S/ T程序断点指令: bp, bplist, bpclear
. u* c& S6 L$ ^  Y    例子:  M) S+ g. T$ I- d# p
    bp 12344 o) k3 R$ [) A9 i7 j
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
% w( c1 I. b* C! A7 I% L$ X  T& T" s' N" K4 I0 Q% i& W* x  S8 V
    bp 23456,a0 == 0 && a1 == 0
5 ~1 I% |5 q6 e# e      在地址23456下断, 且中断条件为a0等于0以及a1等于0
' K- m" Z+ s. \+ R( V- _
) |( g, \; t0 E8 V" g    bplist6 D$ S, n4 s# c1 R
      列出所有断点
% R) T- Q( b' Y8 [& C" h7 |: f$ J8 Q5 C7 ^7 ~
    bpclear 3! [9 X4 S$ {: D; D
      删除编号3的断点
! R: j& L. B) S% o" V  b3 d" X3 w* d$ _' O
    bpclear5 I* _" _' j& g( [
      删除所有断点) i( v) ~' {  Z" z% i" Y& j

, m& D0 M; d/ q      
: [8 @0 R, `& Y- f& X      
1 [0 O7 q3 n1 K$ z. K4 u' j跟蹤紀錄指令: trace  D. A$ I1 _  b
    例子:4 K( g3 R; ?/ l8 ~6 q
    trace 01.txt- J- q) `' ]* n, \2 S1 \6 h
    跟踪当前CPU运行的所有代码, 输出至文件01.txt' m+ H- ~1 P% z! E) a4 l& h

0 g  s- ]9 E+ g- }- P+ W% j# m    trace off
9 |4 ~8 @( t4 f8 Q  x5 B    停止跟踪, 并且关闭文件
+ {& I4 [5 p- r/ I7 ~: G( R7 F9 U" C; }# H
    trace 01.txt,00 W6 [, p/ z9 K$ C! I
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
( V) b6 ]+ i* w: L( S3 C1 [7 B- _, W; _4 s
    trace off,0' h1 C& J4 K* l* h1 L5 `' Q, B
    停止跟踪编号为0的CPU, 并且关闭文件
7 x3 P: A4 F5 |* V0 z/ b' s% d; N4 c4 d. D+ P
    trace 01.txt,0,{tracelog "A=%02X ",a}& Q' ^  [. ~+ e! x0 L# K/ s& j6 g1 U
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
) L$ g$ P, X# t2 Q    并且在每一行的前面, 写上"A=a "' Y" t6 f. E8 p1 o- n  `
    "A=%02X ",a为一个C语言printf函数常用的输出格式
6 Z* V+ l5 w/ Z6 c: T$ D7 [3 h    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入7 s, t& `$ y/ a1 C
    X表示为大写十六进制数
1 S" ?7 f; N. ^' p' g1 E# J* B
, d3 w( T* [+ o3 h* H4 A% D
7 f" C! z: K' t: D4 i1 f" A5 u
) O* l% {( y% o内存直接写入指令: maincpu
4 S7 @3 D% G: e2 X' r) |    格式为 maincpu.[][]@地址=数据
' P* y% p. W) Q    第一个[]:
. v4 S& Z& @  |! g$ W8 _3 E6 }8 F( J& n    o 表示ROM地址5 y& A% L8 B6 s& M1 [
    p 表示RAM地址
# A# j! M/ I1 H8 ?
0 p; Q% e9 k* Z' L+ e  H0 f2 r# q3 j5 N    第二个[]:
7 t. c* o* @# u& N+ p6 G) e  C    d 表示4字节
3 d0 L& S  t1 g5 a( x0 r    w 表示2字节
3 h" N' Z6 b9 @4 |7 }; F9 a. c; c$ g8 R, E    b 表示1字节2 Y3 \# \; \. i. l6 I7 v
$ K$ I4 [) g& |% C6 m2 w1 O' l" f
    例子:& e; j: s* `; M- E
    maincpu.ob@1234=FF
" ^2 n) |$ P' g8 p7 y    在ROM地址1234处, 写入FF一个字节
  }4 }/ c. ~9 R& ]
. E2 x& l1 U3 W  b. q- s" i    maincpu.ow@1234=4E71, U& r4 P- D0 l/ r
    在ROM地址1234处, 写入4E 71两个字节- B* {3 B- l7 e0 ]

$ d* B3 E8 {9 d* D7 U    maincpu.od@1234=600A4E71
7 l- o/ P, L& `: s    在ROM地址1234处, 写入60 0A 4E 71四个字节
7 }: t2 a/ u: t7 B- |: ?# k3 r/ V2 _& B$ d8 d3 b
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写" {0 G# \1 Y' p9 o& m4 V8 W
    3 T" n5 O% B2 Y+ h* F" E" f

& ~8 F6 v" O' F7 E其他:1 s2 {2 o% r: v, r
    dasm 输出档案名,地址,长度
, w3 U  i5 P$ O7 U& B' G    输出程序的反汇编代码
$ O5 i- B, g) x( N$ e1 q    例子:
- E3 H0 _% v. k8 y0 h& Y    dasm 01.txt,0,100000
/ {/ _" u& e! Z0 ]% W! `    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
6 E# F) K* m1 C# m4 y9 M' R) H4 T. X* J
9 r$ a- H+ ?, H6 S; ?7 P# K. i    softreset5 T( q& d) ?6 D0 A+ n& k# \7 m
    游戏重启, 但不重新载入ROM
) P+ m/ O2 r  U$ C
1 ^, _6 O+ \/ B  b# @! z7 t    hardreset6 O- f/ T, v& j/ W
    游戏重启, 且重新载入ROM
4 K9 u. b2 j& r* D' Z
$ G  L9 p7 Y# ?2 _7 y4 w    snap xxx.png. r: L6 P* ^4 T* H
    截图为xxx.png
2 J6 e: h- z6 c8 M3 U9 I3 e5 v
* I( a4 `. V$ ^. X( l% q  ! [) U1 ?1 {, t) h
  ; U2 z* V, z+ L- w
  
8 `) s, l) B& g0 Q+ L! }  i热键:
+ B4 E% @! A$ ]# Y$ W* k. f    ~ 中断游戏" b& t& w' x9 W5 z; a5 k
    F5 运行游戏
; r9 M( g4 g, p% b, E    F12 运行游戏且隐藏调试窗口0 n1 \7 @6 O. p7 M& [: o$ u* |) Q
    F11 步入, 单步执行, 会进入子程序
& H/ X- J2 Q$ H( l9 T    F10 步过, 单步执行, 不会进入子程序
3 n0 t1 v* x, \. N0 W    Shift+F11 执行到子程序返回
& T. a, F( B+ B" F% n7 F    Ctrl+M 内存浏览窗口' O0 {0 b- ]& ], B  `* Q
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
. O% V6 w- f. E* I6 T- o, k- S& [. e
{:4_94:}
$ c8 _; `# y+ U  J- a/ S% E+ k, }
  M1 c3 J& Z! G8 e

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2555 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
* f( @* \9 r  H, l% ^' {/ c/ V, o) V
" _2 ^4 z+ }& F7 |' K" 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 | 显示全部楼层
要详细些的东东
; R8 K9 k& P5 \1 x/ M4 K11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-5 05:44

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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