设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
0 e* Z. S, Q' ^+ t4 {# _
很快速的整理我自己常用的指令
1 r" T! L" h0 P  S1 f% G% d
3 ]9 \: ?7 p3 X3 O: k{:4_112:} , w3 r! }7 L3 H) G: H
# ]  p7 s# `4 b0 m* L
MAME DEBUG常用指令( [2 d& o. C) J5 b

* t# F7 n. C' J+ c& |) }! o1 O8 Z8 N内存搜寻: ci, cn, cl  Z( o$ T# a$ `% F; c

3 r5 C/ w; A, w    ci3 ]* \' z5 ?0 G2 w8 d* A' z: C
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令; g5 e3 \. l9 a3 G2 @6 g" Q2 l

+ @( R( R/ h; n    cn
' Y  ^  `* d5 m& @! M    搜寻指令
* n" R2 E3 A- }2 \/ V    例子:
, ^) S% l9 z4 K# r0 R/ i; q    cn eq,60
) Z2 v$ H- M/ ?7 h    搜寻目标等于60 (十六进制)% J, O5 v- A2 }
        
8 T. Q+ O, m) Q+ P% S" z    cn eq,#96
( M& i# z; c% ?    搜寻目标等于96 (十进制)* F) g1 f. d3 U9 i; R0 O" f, `
; \; X! i) Y! c% J1 _
    cn eq
" K. p# h- R) Q% `    搜寻目标的数值没有变化
; f# W! y4 B8 c  v( ~$ G1 f6 w6 h6 z; w$ A% n% B5 w) M# \
    cn ne
& O3 l  r4 k% J+ [/ \( {7 |( L    搜寻目标的数值有变化4 v9 B: G4 c. y" l2 T
        
9 G2 d9 s& f- ^- k$ ?* ~    cn +
/ ]/ A8 @2 s2 d( N    搜寻目标的数值增加
5 x& q2 @& I' D/ a$ o( A5 V    % O' \3 v- F" r. B
    cn -
2 E$ E* z" m, v    搜寻目标的数值减少! p. C7 `1 M5 r
        / J5 `# p4 ~- p5 K* t) O4 x9 O: Q
    cn +,3
, r( j" |( x/ j2 [2 s" P: P    搜寻目标的数值增加3 (十六进制)
4 S& ~0 k% P) U; k; e& U, k4 Y9 v9 t1 x$ W$ q/ i# j; T( K, [, F
    cl# [5 t7 X; R  E2 G8 i
    列出所有搜寻结果% R! L/ {' [! [& ]' y

7 u# m5 s5 F' _. U# n    cl xxx.txt
7 C1 t2 K7 H% B! z/ c0 h! w    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
0 C- i- l8 F# A7 x
  ], B7 i' Y1 Y; I* z/ ?      m" k3 n2 J. Q! I5 G. |
内存监视点指令: wp, wplist, wpclear5 D3 K7 [+ z: r' V
    例子:4 L6 N4 z+ W" k$ @3 H5 K1 b
    wp 1234,1,r/ F" J& E9 a+ R* d
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度13 G% j6 ]( o* E( v4 R& @7 e

# y9 k4 P* ?5 e! ]" w    wp 1234,2,w4 j! D8 p  ?# Y$ P9 u
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
+ ]8 y2 ]6 E$ q& }) m     
* S' m. k/ ~0 N, Q2 F9 O" ]    wp 1234,6,rw
& [1 K  c/ r3 b      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6
5 N, r2 F. r/ H; I$ z
% C' u, ?# A/ Z$ X+ R    wp 23456,a,w,wpdata == 1
8 L" V3 w0 [# ^4 c      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
9 l$ L* C+ N8 B- M
( A& u2 b- ~1 b    wplist3 c2 N' y/ p1 X" A6 w
      列出所有监视点
) c+ O/ g' d; f, C6 X) N
9 Y9 Z1 V( p% s5 q2 U6 b& ?5 n    wpclear 3: a. G8 _. ^, O
      删除编号3的监视点1 }' x, R( `; T8 U5 U
* u- Y1 w9 B4 Q0 [: B; b+ O
    wpclear1 c$ f7 S% o) _8 f6 G& }
      删除所有监视点% Z* T1 m# C$ ?  P, ~

' y. N6 }9 x+ a( @      ) v7 |$ N8 T8 G4 N
$ ~: e* J0 B; E$ d$ ~/ M) i& M9 y
程序断点指令: bp, bplist, bpclear! }7 h3 S& S9 r
    例子:
; }7 g; z7 `8 Q& f; [2 J" u    bp 1234  o& t& r. y; j1 u2 C! K- i1 K
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
- z1 b4 m- W. K& V; Y" K7 F* f3 k
    bp 23456,a0 == 0 && a1 == 0+ q' i5 _; h+ o- r1 n2 @1 h# k
      在地址23456下断, 且中断条件为a0等于0以及a1等于0
0 F( z6 E$ ]! v9 W; [. f* J6 L6 ]! @) ?+ e' f. l4 f7 E
    bplist8 a1 Z2 O9 j# p2 M3 s
      列出所有断点
( o' A4 _. W  w3 T8 i  ^7 j6 k' `
    bpclear 33 B, G# `: J7 N& ~; F  s6 }
      删除编号3的断点
2 M) c9 q" s  e1 O; `! p( z& |. B/ m  @" \2 D7 r
    bpclear
! g% n4 s" j. r7 {2 }- v      删除所有断点
4 K$ Y% r% @1 W$ _
5 m' H8 S( E. N% l' h      & h* a5 w& e! Z1 D+ v, t4 E
      
" w9 g5 e) s: L) R跟蹤紀錄指令: trace
* s( B, p' T' i3 `    例子:
/ p" C  U% _' c5 J/ @! l    trace 01.txt
: z" x- t( a9 m6 n9 n    跟踪当前CPU运行的所有代码, 输出至文件01.txt
) C( E* V6 y9 f) O  X
2 T- @9 B- c/ Z3 E    trace off) {2 t, }1 k, ~, ~( ]
    停止跟踪, 并且关闭文件- Z; X4 Y( ]0 I) O1 ^
* s3 c$ D- B7 h% b* ^- R8 y
    trace 01.txt,0- z0 r# L3 J  F3 c
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
: Q* i" N; w5 v. i& i7 Z" g5 g8 E& W1 u) N! r! |. i
    trace off,0- S4 Q9 e1 E, N8 m. {3 u
    停止跟踪编号为0的CPU, 并且关闭文件1 f" |- I' z9 L

& x2 a! R& f' Z6 F4 E" M    trace 01.txt,0,{tracelog "A=%02X ",a}
1 ?6 U% |" H6 R% X    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt 3 o/ J8 c* y7 ^$ R1 f# d% f0 v
    并且在每一行的前面, 写上"A=a "5 n5 _4 S5 C( i: [8 X& r
    "A=%02X ",a为一个C语言printf函数常用的输出格式
! e. {% W7 L; a  m7 o4 W    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入, i: x- i7 W9 y9 N
    X表示为大写十六进制数
, q" k/ n5 S) b# B' k- E5 r- U7 G) Y: L4 M

' A, U3 [: W* w9 l+ X0 A9 D+ e4 z9 P/ [8 g# e
内存直接写入指令: maincpu( L$ o- A% x4 J! f- G; _# ~( |% z9 L; e
    格式为 maincpu.[][]@地址=数据
' Z' p  ^" k- ]- V: I9 n    第一个[]:% g9 K+ G- H$ t' c& D" T: c
    o 表示ROM地址" ?& }" X4 t/ v4 p; _+ V
    p 表示RAM地址9 E2 D# G) {) E; }9 j

4 F# n) S7 v( y2 u' A    第二个[]:
% Q! _% ?% ~' T' d* S9 J$ F8 l    d 表示4字节1 S3 U' D  m$ n. b6 l0 L' r
    w 表示2字节. {* b5 d% i1 w8 G1 W
    b 表示1字节
5 n8 L2 y. M3 |  t' S# f9 V/ ~( c0 x' r3 \4 C, d
    例子:( `% v) h  S  T7 ]* ~, U. p: K# |
    maincpu.ob@1234=FF, p  S; o! `, C) c& v
    在ROM地址1234处, 写入FF一个字节$ d% D7 ?. W7 |; O" H

8 P  _: u9 P( x8 U5 U. P6 O    maincpu.ow@1234=4E71
% n& K. {: ~1 E$ x1 q3 F$ [6 V' O  x    在ROM地址1234处, 写入4E 71两个字节& f5 P$ U) K3 S% X# R
' L$ E( c& g0 i: R9 E
    maincpu.od@1234=600A4E71
/ E# A& c! H/ y) ~' R    在ROM地址1234处, 写入60 0A 4E 71四个字节; a# d6 G6 Z. a$ [+ b
. G* n" I, k4 v" ^& R2 X4 z( ]) A
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写. v, A4 Q- U! g
   
3 `( o3 ?( M1 {2 Y+ z6 l* Y: ?, T& q; V& Y. b& m, ^
其他:
" B  U9 |3 i  n. o4 P0 }" E    dasm 输出档案名,地址,长度
2 R) N- }) c6 o3 H    输出程序的反汇编代码
, `3 U2 G! T3 t2 v0 D% q    例子:
+ R9 e4 v1 E# y* b9 M% l    dasm 01.txt,0,100000
" w; q$ u2 }' h: O! H$ j    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
5 P( t) u' K- R$ ~2 G- Y
% r% @0 v$ u( x2 L' x1 H8 `    softreset
: @' v* I+ d- t, ^2 k8 J    游戏重启, 但不重新载入ROM
/ ^+ G. D+ n% E9 ^) ?/ {: ~# S
5 z; p3 ~( i: d# J  G    hardreset9 \# S/ A! ^. G6 f+ l
    游戏重启, 且重新载入ROM; J; L( _- k( j; G. Q
& O( m- s$ A/ d& P
    snap xxx.png9 `5 M8 g, h; l) Z# e; V
    截图为xxx.png
  m# ~& R- N  b) C# B- e3 }- P
/ ^+ ^  I* l( J( d) C. q6 M  
% Y4 W. h2 U3 |/ @  $ C) o& X+ L) ^- D2 m* _$ W
  $ W5 I7 N; ~- N: A' k
热键:3 F' g$ U' K  S0 G& X
    ~ 中断游戏
3 w. G# B% a; q( X    F5 运行游戏, ^# y. Q6 ^, @' j4 W: `( B& X
    F12 运行游戏且隐藏调试窗口, H, K- t3 N" b# O/ o7 D
    F11 步入, 单步执行, 会进入子程序
3 A$ x& ^2 U/ z1 i/ S/ J    F10 步过, 单步执行, 不会进入子程序! L" P. y, }+ y1 T: }
    Shift+F11 执行到子程序返回
3 ^; B6 D1 {  {7 a. ~& I- `- k$ h9 m    Ctrl+M 内存浏览窗口5 N. B4 X  l/ S/ h; g3 P1 P
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
: H; C, k& A% T( l3 X, R! x1 M! v( @; c$ }9 e. ~$ w
{:4_94:}
0 q6 Y3 F3 |+ U+ }! K* e! y1 ?' r. e  A. E- V$ b

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
+ L4 W+ Z; G) j; q) ?# k0 `* I/ K8 _0 J
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 C) l+ m! A9 S
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-7 13:01

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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