设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
, Z( n' G; j  |- {8 c/ {: N. E+ k
很快速的整理我自己常用的指令
: t3 q  g( R) G/ F+ x: w& x4 n+ t% C4 {% [$ K. o# H: h8 D1 m2 W
{:4_112:}
4 f, k8 n7 m! Z' J$ Q
. J9 I% J% X) {0 v) a* l/ U3 ~MAME DEBUG常用指令: Z4 ~! X$ q; U) ~3 d' [* i

, D% Z% l. @+ i- u& t# k& m内存搜寻: ci, cn, cl" l9 f% W  |" n% [* l
$ O/ P6 [0 G! f5 _# k0 x& |2 _
    ci4 V; o& ?0 H  |  r
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令* M5 }/ K" b4 T6 }8 ^$ K6 [

6 t& m: ^9 y3 [4 e    cn
# n3 z- M3 d& B  y# q* f# R9 J/ F    搜寻指令
/ B  ^4 h% P/ ], T& V, |1 D! A    例子:  J6 V- G- f. q( m7 O
    cn eq,60& Y$ L4 [) @. S5 T' F4 q
    搜寻目标等于60 (十六进制)
, o. X1 I( k) j( C4 M        
4 [" \" g$ B9 k6 r6 |9 r    cn eq,#96
2 N. a3 w7 y! ^8 u* h    搜寻目标等于96 (十进制)
1 d0 S) D! [  c3 P1 K2 o7 B4 R! J4 E
    cn eq
) F& \* G, h6 v2 t$ a2 b    搜寻目标的数值没有变化
) ~! B( p9 l/ m, V
* P; ]! P+ X" d/ E- O% m$ s    cn ne$ ?& R1 f3 ^$ Y7 a
    搜寻目标的数值有变化
' C1 H- w3 B( _0 F, \' R, d* {        
3 _" E6 ]5 D( \% `+ D" h! }' D    cn +- n5 f" h" _8 N8 y! K; }6 R
    搜寻目标的数值增加
3 F3 [: R9 X9 t! G0 R: B9 h' Z   
5 b0 F& t2 J+ q    cn -
) ]$ B6 [4 H& d7 o6 X! R( q    搜寻目标的数值减少- O, I, j9 t6 R/ O9 D
        . U+ G5 n" s$ P/ L- H# I8 U0 M
    cn +,3
# {' ~. i; X0 k; _& F* x    搜寻目标的数值增加3 (十六进制)
; }) {* v& [" e8 L) H: x1 s
1 L. f8 u8 @+ c5 ?/ \$ V; n    cl
6 I$ R. @" g% {. `; w- H$ J    列出所有搜寻结果
8 }* ?" J! {( s) i
8 F5 x/ k$ R( M4 W2 \    cl xxx.txt" n1 C9 N, p7 d: h
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式5 U9 W" c8 }  ]$ w5 s# W

9 _% A; A0 D& L# W. ^  G8 V5 U    & D; q# e9 o8 S/ m
内存监视点指令: wp, wplist, wpclear: d; A: f) _" Z# [, F: L$ ^- z  ]
    例子:. y. r4 S/ {" k4 A" G% _
    wp 1234,1,r
6 ]4 W4 j/ A& U8 a$ f: o( m$ l. i      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
2 Y3 v3 Q& c7 R9 u. Y& Y2 _8 J3 F# _5 k* w2 c9 Y) l0 G
    wp 1234,2,w
! a2 `0 e, t7 N7 C9 I4 c" w8 N) c      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
% ~% M" C; \. ~' _7 k8 i     + D1 q5 `8 j- ^, q' W) K6 F# \( t
    wp 1234,6,rw: ?# m3 t" q6 N: g" L. U; d- r" o
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
: g2 m8 h$ N, h& H* N; d5 P
) A- n  d' n7 N( ]    wp 23456,a,w,wpdata == 1
0 k5 e) O* c5 B      在地址1234下写入监视点, 数据长度a, 且写入的数据等于15 ~4 s% R' ], E+ n, j
# G4 ^/ |. @- |$ d7 v6 O2 T: z/ _
    wplist
* H( S% Y# ^# d4 D  M. w+ V+ D; m      列出所有监视点
) Q0 i& }" I/ N) D3 |3 n1 Y& A" _' p" m4 @. B  \, e
    wpclear 3
9 C$ x2 e; Y  l) p; q5 v      删除编号3的监视点
# r) U( x- X; u4 o# E& j1 \3 p3 _
; h8 r# g: @  {    wpclear1 F' P/ N2 J( ?9 |
      删除所有监视点
; ~. A5 b  u$ e7 G% s2 g# [
7 Z" {# Y; i! {/ k. R( j' a      
8 J+ T% S9 C: ~1 F) K4 ^. U  i# j/ r1 s) f# f- k
程序断点指令: bp, bplist, bpclear6 B8 u& ^7 ^" @6 o( K2 ^
    例子:' x9 g; z7 F! G" u6 T
    bp 1234
2 v8 b6 i! \/ F; y      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
" }9 _  l2 L2 ]1 J7 T
& b/ Y/ E* x0 U2 K$ Q2 ^9 p    bp 23456,a0 == 0 && a1 == 0+ o7 f- k% n9 H3 Z2 [7 W, s
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
# h* s8 e: P  _9 |2 K% X" R" b) Z" f8 |- _
    bplist; ^& G. D/ U, h& c! N2 u3 ?0 [/ _/ s
      列出所有断点
5 s7 J' Q. L3 i2 q5 h" ^4 @& z' {, D# D( {: w2 Y: c
    bpclear 3- s) q0 c; ]+ |1 j' z( X
      删除编号3的断点" E4 C3 B% @' v7 i

. `4 ?$ ]" Z8 f7 V9 n- [6 ]    bpclear
7 K2 Z: R% L+ S+ W( n      删除所有断点, C, q9 Q4 y9 _0 }6 x( c* k
" n9 R, A$ u2 U% C! ?; j
        [/ Z: A7 g/ H
      4 V: U, t4 n& P9 A" ]! V8 ^
跟蹤紀錄指令: trace
- t0 l% ~8 l1 M4 g    例子:
8 c* D2 b4 e( ~+ `* P' ]% t& _- j    trace 01.txt
) T8 s$ [) R8 b/ m" [" F" j2 ?    跟踪当前CPU运行的所有代码, 输出至文件01.txt
4 `* u/ A/ V, H/ C9 A
- V/ `/ h, i( }5 G/ E1 m* G5 y    trace off
+ B, \7 U% C0 A" L    停止跟踪, 并且关闭文件- n* i8 p* Q5 x6 ?+ w- o2 T2 s
0 p) s9 y$ c1 B# h$ a
    trace 01.txt,0
" H2 u( V" R* O3 z- P    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
( c6 W1 o* }7 I, ^& h$ M0 b( ?- M( ]
    trace off,08 `0 U/ x7 |# d% G- w
    停止跟踪编号为0的CPU, 并且关闭文件
/ \" i6 @* H+ u! _
( k$ I1 a6 z/ f) z# R; q0 u    trace 01.txt,0,{tracelog "A=%02X ",a}
5 |7 @1 ~3 `! N/ L    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
0 g2 d1 o- D% c    并且在每一行的前面, 写上"A=a "
; C0 {6 `; ~) V2 p% E    "A=%02X ",a为一个C语言printf函数常用的输出格式
/ h! L' d7 F- q- w4 i  X    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
! C, i: b9 a! g. T    X表示为大写十六进制数
! h( I( _! V. P; A/ {8 ?, q; S7 S) L2 {
" ^; [% r1 k1 h# V
# u. Z+ c8 `2 k4 E9 b0 {
内存直接写入指令: maincpu. m( z: Y* _: Z' R2 [
    格式为 maincpu.[][]@地址=数据- r; b. j5 _; |& Z1 r+ R: w2 J
    第一个[]:# t5 N. F% y$ ?: C8 m+ V% l* K
    o 表示ROM地址4 @7 y  }0 r7 o7 x' c! ^$ i
    p 表示RAM地址
) r5 k: n, ~7 ?
) j& m) W- j9 n' K: u3 @- m    第二个[]:
  e9 d- g) i2 W2 m$ ?; v7 Z    d 表示4字节% J7 z) n9 W( O
    w 表示2字节
/ J* r% d6 \! z. u( M* ?5 c    b 表示1字节1 d$ L) F, M5 ?9 \( Z0 p( Y: ^

( H6 k' u1 J  M- Z- l' Z4 T    例子:
' p9 j' m1 t4 R4 F, K; u7 x    maincpu.ob@1234=FF8 Y7 T) [, s1 h) m1 N
    在ROM地址1234处, 写入FF一个字节3 ^# M$ c: W5 X% e

* M9 i- s$ \/ `( V! ~; B    maincpu.ow@1234=4E71  I3 w$ r" T* I2 z, `  @1 y7 G# Z
    在ROM地址1234处, 写入4E 71两个字节
4 p' `/ m' A4 D! S! j6 e! N" n/ m) U1 w8 V9 m
    maincpu.od@1234=600A4E713 I3 p- f" Z2 X4 m9 a9 T( d/ ~
    在ROM地址1234处, 写入60 0A 4E 71四个字节
, t$ Z; Z, V3 C5 C( ]
  l% j4 ?- P4 N    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
$ r  D9 Y/ N" [- _   
$ c: S9 ~* Y' ]1 Y# G/ X' S: \9 X
其他:# ~, a/ g, e( v8 ~: [1 z& s( I# G
    dasm 输出档案名,地址,长度
  W" K% ^* d* J; r1 f# q/ o- q  W. w. s    输出程序的反汇编代码
; U1 l3 f4 m5 U$ {    例子:
7 e; d9 o5 C# r  Z* f% n3 M    dasm 01.txt,0,100000
+ ^6 R& a$ O  X1 H7 M2 Q/ M9 h6 _, H    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
! F8 O  l0 @* \& w9 N% A& u, E( R7 a7 r# G( R: g
    softreset
0 Q+ i" `% g- Z    游戏重启, 但不重新载入ROM/ f/ {1 v' W. \& E: C( \' [
$ g# J+ e  G# z
    hardreset4 k" J2 h5 |8 N# h& T
    游戏重启, 且重新载入ROM. z4 |) L) y! x( R) S! _: E
( }" T! a( v0 O
    snap xxx.png
" h7 M9 @) g; k" t    截图为xxx.png/ V2 I5 Y. P  b7 m9 l! a
. z" `$ B: ^' c5 i) p' Z; d( i
  
# `4 C) u9 P; t( z8 f" q+ O5 S  % _  g7 S' o# i4 O3 B  Q& f+ y$ z
  
- d; F6 U6 F2 D2 s热键:
3 I6 |9 Z, ^1 G# E    ~ 中断游戏
$ P9 n2 H% s/ {    F5 运行游戏" [' d1 s& N% ^- U' L
    F12 运行游戏且隐藏调试窗口2 V$ u6 Z- U; T9 D6 `
    F11 步入, 单步执行, 会进入子程序
. V: G( w, V3 `0 n: Z# ^7 ~0 O5 j4 N    F10 步过, 单步执行, 不会进入子程序
+ o# u1 }" E) z0 z& L4 l    Shift+F11 执行到子程序返回
# N- {$ t, W5 P7 d5 s    Ctrl+M 内存浏览窗口$ I& ~2 c) v: @+ r7 M7 ?
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
" D) i; H4 |8 F  e% W, k/ Q$ `1 c3 c- E: j
{:4_94:}
' v* P; V# M3 m4 f
5 `& x/ R+ ]+ r

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2560 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。% d( r6 U% H! A( I& ]% j: Y5 b- e7 _
  X& t( e0 a* l8 M/ I& k
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 | 显示全部楼层
要详细些的东东# h$ J$ |; F4 Y( O4 S8 U
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-18 04:15

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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