设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2013-3-20 00:31:15 | 显示全部楼层 |阅读模式
# B! D. O- @9 X/ o9 ~2 i: D3 Q
很快速的整理我自己常用的指令: g- u8 i5 W# k2 X& P- w# W" q
" ~; ?5 K- l! s" u$ i1 x" E$ E$ W0 t
{:4_112:}
+ ^1 g8 F8 S9 n
# A0 E* o" {4 N0 K3 l! MMAME DEBUG常用指令
3 S. w6 ]  G( t- B
. W4 Z' a$ i6 P, M; i# A# O+ J内存搜寻: ci, cn, cl+ C/ I9 m5 Y; Z3 n. q1 l

% W2 x: J0 I2 n    ci
& b: Q3 e3 D, b, u+ Q* A& L    搜寻任务初始化, 每次搜寻一开始一定要输入这指令  p) ~* @/ K# J
7 ~  A) v. R4 ]6 j: }& j
    cn
" ?: R  B* y1 Q    搜寻指令
" A* i& |6 [! z' f6 ?    例子:
( q! `6 ?3 g$ v) N+ v" T    cn eq,603 y8 z; ~4 c5 j& P  h
    搜寻目标等于60 (十六进制)/ `6 |+ p* e6 I
        2 X2 [8 Y7 ]  ?5 ^! L
    cn eq,#96
' J% w! m  L, J* c/ \% X) R' a    搜寻目标等于96 (十进制)
4 Q  F# r$ E8 e! I; c6 L: E
9 i) G' e( j# V" U/ T    cn eq
. F: M" |; l4 e/ e    搜寻目标的数值没有变化
7 p6 c4 D% k5 Y7 A0 ], g+ Z3 H. X3 h( P9 N' q4 {! V% z& D
    cn ne* u/ s3 ~4 W) S; |. m: |9 p6 y
    搜寻目标的数值有变化/ M" I* V1 y4 Q$ d7 K) y
        
6 x0 v1 I3 ^+ u    cn +  y1 V$ A: b* g# }8 S3 k  ~
    搜寻目标的数值增加
; y' Q1 P/ v  _$ W+ X% T    % i0 s6 p. S0 [# S6 _# c, [
    cn -
: g; `& n0 Z5 j7 W$ h/ z2 u( \    搜寻目标的数值减少* W+ t' h1 N+ Y- {  v3 ]
        
9 B, t$ J- t1 W" N  }3 I    cn +,3
0 w$ S) f5 i+ n, V. H( h1 k    搜寻目标的数值增加3 (十六进制)7 n% w1 {. ^) Y7 _

4 A3 ^2 H. G6 p# m; [9 F3 [    cl4 a( h, u4 V, ~' i) q
    列出所有搜寻结果$ ?7 ]* T. w: }2 U0 z5 t% j
; B% z$ g: s8 k/ B* N5 Y6 H) Y
    cl xxx.txt" P+ A( ?3 ^( \3 R
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
' B6 U0 j9 B( V- f' E) y1 [1 x4 h. p6 \- I
   
, a, s% w8 i- w$ N  w% N& V内存监视点指令: wp, wplist, wpclear7 i' o0 x" U# h3 x: s, {1 n! F% }
    例子:
& q% ?  Z" V. `  \    wp 1234,1,r9 t7 I% N- G7 Q- d8 V
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
9 d: N+ ^+ l1 E4 o
7 A& B) G) ]5 O8 Y, h% Q) w    wp 1234,2,w- [1 r; T/ N: f: k# K( g! d9 `
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2, |2 S* A; o0 ~; k1 P3 L
     
/ N6 F  X$ ?- j0 T7 P    wp 1234,6,rw
% m$ e, a4 i& U' b. b      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6; p) E/ E" f$ w# ^  B
+ l( M) ^7 }+ }) f$ I8 _  H) Z7 q
    wp 23456,a,w,wpdata == 1
# Z, P$ _) W: {4 G# U/ |/ T      在地址1234下写入监视点, 数据长度a, 且写入的数据等于1% r4 F/ @; Y9 i2 h( a

* ]! l, ], b5 U* {) d7 S! H) Q0 S    wplist
) k; T) @# n8 P  j      列出所有监视点. n! h* q1 x. O" i" I

' o. @7 o* c. Q/ W1 r; n* F    wpclear 3# @3 o! v' P. l7 f1 e
      删除编号3的监视点# p  z1 }, [+ d5 k4 V. A/ f
+ W. ]8 G! Y' ?. p2 w
    wpclear
) t9 s/ U# B, N0 d) N" v      删除所有监视点
4 @: m: B& |$ P* e. E2 N
! K9 q/ B  L; \0 T' _      
! o; {9 j: P7 v# L1 A# l8 r& b+ q
. B: ^$ C4 U2 ?! ~程序断点指令: bp, bplist, bpclear
7 o; A- o) j6 ~' X    例子:
1 q* q% v& K# w: s1 h" I0 C    bp 1234% M$ V% m5 D+ O  H# a2 {
      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断
7 W8 P; x  q) d1 L. F& L( V6 f6 h
9 k1 D, I. F" X7 N    bp 23456,a0 == 0 && a1 == 0/ C& j( x: g) t  J$ W9 \$ g# O
      在地址23456下断, 且中断条件为a0等于0以及a1等于0- z# n1 n  I2 H9 r! v2 k
. V3 ~# E: o5 |7 X# Q
    bplist
" J# r) `% |6 A2 K      列出所有断点9 `0 P: z0 X* j9 I) W7 O
# b6 T% K( O6 {2 w$ d
    bpclear 3
) C# a' ]  P8 }) @: z      删除编号3的断点
+ N; Y8 K- k& k9 e/ j. [5 Y. b; d* A  `7 H8 e9 v* G; w! B& Z
    bpclear! ~" U8 K7 }% h3 y1 ]3 v  [
      删除所有断点
- W( A+ d8 u4 N/ e6 p- l: L% h+ l, s) i! |& w' G+ N# Q8 y
      ' n& v0 T4 M( H3 f0 f0 x7 j/ s; d
      6 k6 f3 O- d0 |1 X9 `  Z
跟蹤紀錄指令: trace
( k' l& O/ _! k/ N6 b! y    例子:
% g6 N& ?) N$ u! i8 J! y7 w    trace 01.txt
- m# t: e$ \9 b9 f% D    跟踪当前CPU运行的所有代码, 输出至文件01.txt
5 n! F2 C# g' M4 {; l& b3 E1 G6 u# R, e
    trace off- V1 m4 {2 T  O7 N- ?
    停止跟踪, 并且关闭文件1 ]# L+ q6 d6 }2 r+ |. G+ Y

5 w& \5 v7 o3 W6 b3 ?    trace 01.txt,0, ]6 d8 L* K  Z* B1 W
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
, I" I9 @* Z# D& y; _2 U2 w) i& J$ L7 _! O
    trace off,0
; {$ [' |, b! R- A! [    停止跟踪编号为0的CPU, 并且关闭文件7 x0 L5 H+ s$ K# r* m
- B; F$ x4 ]1 I7 f3 f' E
    trace 01.txt,0,{tracelog "A=%02X ",a}
/ y. n' l7 }7 G; T4 _! n2 S3 {2 t; p7 H- R    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
6 C' J/ }  N5 ?9 K    并且在每一行的前面, 写上"A=a "( V% {0 n9 C  A8 i8 \2 @  ]
    "A=%02X ",a为一个C语言printf函数常用的输出格式
. }! L6 |1 |6 l% E0 W    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
- l! v* x- E! c- J    X表示为大写十六进制数
& s/ t9 o2 t- g, w; T% O; U, t4 D' ~1 w+ ~+ N8 s% J3 R6 t$ i
! J+ Q/ b( p! h8 K/ c9 {
( I" V( Y" s! ?- k- C+ ^" w* J; j
内存直接写入指令: maincpu
" N, [9 K# u' }) e9 n    格式为 maincpu.[][]@地址=数据
- Q, |2 x- T& @8 F    第一个[]:- V: W5 J0 N- Q$ B1 w
    o 表示ROM地址  W0 S. W+ e1 n' b# `2 r
    p 表示RAM地址
5 @" H: i: J( Z; v5 T) S# m- V' s( J! c  l, c4 L
    第二个[]:
$ ]9 ?; n- O# R) f    d 表示4字节
9 o* }9 n) V, n8 S5 t- X    w 表示2字节3 U) S3 y% w) B8 B
    b 表示1字节
+ Q) ?: V" B/ C, p8 i: \% Q6 z) D1 P, d7 H* D, b3 X1 `
    例子:7 _( o! p; A# O
    maincpu.ob@1234=FF5 N2 ]$ c6 x* x1 j
    在ROM地址1234处, 写入FF一个字节
: _/ L" f/ }! Y; ], X
, s/ |' i9 }' Q* K    maincpu.ow@1234=4E71
! k% h1 L6 {+ \  v    在ROM地址1234处, 写入4E 71两个字节! h6 c) l. _- J+ G* A
7 B% J1 v3 j% g/ Z* [
    maincpu.od@1234=600A4E71
$ H& D0 n) i& [. q: T8 W& z' b% R    在ROM地址1234处, 写入60 0A 4E 71四个字节
! Z6 y, d: |! ^# P+ ^, o0 I8 s6 {+ W* n9 J  [) E5 E( l3 p
    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写  g% F' h4 [. n0 x7 h: T* n
    3 F5 D) u8 h# @1 v
/ I9 f- S' p) g+ d& K' g  V5 f9 O
其他:
7 J* o! d/ Y  B8 H3 `. T2 d* F: c    dasm 输出档案名,地址,长度& J; s. p& R( [
    输出程序的反汇编代码
6 _# \; ]. M5 _( Z0 o& t  q    例子:+ ]: e3 J- i' U# C1 n
    dasm 01.txt,0,100000! t; j, ]9 s7 \- E- B7 U
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt& [" D# T8 v; E% }  e

; U; _; }# \1 ~9 {4 a    softreset$ x' A% |0 w8 Z* V- I2 w! D
    游戏重启, 但不重新载入ROM
% |4 C$ H. O. \3 O2 G8 U3 d/ I; R) d* G: f# P7 C9 d  }
    hardreset4 P& q, D) [1 Y
    游戏重启, 且重新载入ROM
$ k% K9 \( m& E# P8 h/ w) e0 z
; V- }5 {  V0 x1 I5 u    snap xxx.png! V, q) e$ I3 l
    截图为xxx.png6 P5 b6 N8 g4 |9 `/ Q3 ?* M

( j- b7 o$ j& e: t7 I7 p) G  " O$ U, J, k$ v9 J2 Y% m' T" [" h
  
; R% D5 f0 c! M+ z) _7 J  
6 c% o& G* e+ f$ Z2 Z热键:
/ |2 p5 W6 ~1 k* R5 x    ~ 中断游戏. L0 [) T6 `7 s% M" \& E. i6 M
    F5 运行游戏7 P  N6 [) h7 R
    F12 运行游戏且隐藏调试窗口
# o; |% d, s0 Y8 T* {. b    F11 步入, 单步执行, 会进入子程序  T/ u* e  P$ i% k3 h9 B6 f
    F10 步过, 单步执行, 不会进入子程序
, V  T/ q1 Y1 J' s" q6 ?    Shift+F11 执行到子程序返回, f7 a8 s2 R/ D; |/ D7 [3 m" c, Z
    Ctrl+M 内存浏览窗口0 c& X5 e' S9 A* K0 Z' P' V' I
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
+ }2 v; \: T. `4 B2 l3 C0 Q; u
7 Q3 }; P9 m0 q{:4_94:} 6 t' i5 y5 j) U! G; o+ v
6 I/ E9 Y3 y1 m% g

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2554 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。
. @( t6 H4 G; [
' ^  Z  Z9 z  F1 ?$ M! aPS:如果能像楼上的大大那样,用一个实例来补充说明一下这些指令的用法就更好了。
回复

使用道具 举报

该用户从未签到

发表于 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 | 显示全部楼层
要详细些的东东* ^2 r' m: C" t* r0 f  v/ v
11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-29 05:10

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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