设为首页收藏本站

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

[分享] MAME DEBUG常用指令

  [复制链接]

签到天数: 5 天

[LV.2]偶尔看看I

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

3 |& |0 I, i; M很快速的整理我自己常用的指令& a+ v. G! ?4 H- E7 h

; F: D; e0 n4 d1 ?4 h( ^; J; N{:4_112:}
4 z! O; L' {: U- F
! A. H4 ~: Y5 c! kMAME DEBUG常用指令
" ~4 H5 z9 B$ p# q) {
6 }4 E( b' A/ R, V) X  S* z/ ?- ~内存搜寻: ci, cn, cl
, }- X  L7 L5 `
5 U# z& i; T' U1 u% ?2 d    ci: z& D8 C! _8 E7 v
    搜寻任务初始化, 每次搜寻一开始一定要输入这指令% `% g6 |  y; ]: m% |3 e: c' d- x

3 s0 Q* [. ~  Z    cn; y; M4 d; v8 l7 }# l+ U. h
    搜寻指令
. O  u7 P& D; g    例子:
0 `" h  y+ {2 p7 |& E& p    cn eq,60' z. L% y2 P2 ^5 H8 T
    搜寻目标等于60 (十六进制)
8 t/ w. j/ V# V8 m, }. }        
" T8 Z/ G# M4 l* L    cn eq,#96; y- s% l1 M5 o; h
    搜寻目标等于96 (十进制)* C/ ~9 W' U. d, ~& O% U/ `
8 y2 X) V" \. s+ Q3 s
    cn eq- R) |5 k- K" u  n( R3 K  q% ~
    搜寻目标的数值没有变化
+ f% W4 U% Z# j4 `. G# E, i1 Y% R9 g9 `
    cn ne
2 F7 ~8 B! U  E& F2 g2 a' i' U    搜寻目标的数值有变化
' ]! a2 y7 [* s% `+ @        ( X/ G7 h8 r, E6 D5 T0 s% b
    cn +6 V' y( @) D3 X# L4 T
    搜寻目标的数值增加9 Y! i2 }' Z( \5 k( k6 V
    1 X, J0 H- Z' b( X/ L+ d2 U
    cn -
1 [. j. m& Z5 R: C3 t, d. R; Q    搜寻目标的数值减少
& _. q+ y" \4 t, K! _: x        + u6 r9 }( j; H$ J
    cn +,3
8 F2 `3 u% x; m' x# B& O6 j    搜寻目标的数值增加3 (十六进制)
3 E" u! j) \: z
8 M' S8 P+ Q0 i" b6 O+ y+ o' U    cl
6 E0 l. g! b  @5 ~    列出所有搜寻结果
7 o$ F+ P* R1 A" Y7 P7 |9 y
+ I/ u1 U8 n9 a    cl xxx.txt: X8 N6 R) k, @% y5 B
    输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
6 W0 Y/ y7 n/ ^9 w/ P
9 @! h" b# `/ o   
2 N$ I; k! _0 A1 p6 e: ?  t9 v* x内存监视点指令: wp, wplist, wpclear
9 ~' ]) m0 O, Z4 R# j    例子:
( X% O9 C) b7 W, w, L' q    wp 1234,1,r# i$ S1 G5 @1 g0 f$ l
      在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1' V& z3 h4 G# Q( s
  E  p/ m) x& H# z
    wp 1234,2,w( T4 ~! D3 g9 M. @8 c5 _
      在地址1234下写入监视点(该地址被写入的时候中断), 数据长度23 a# H! R/ P" N( K
     1 S5 O2 O$ e! b! B
    wp 1234,6,rw4 S4 F8 H% V: x; u; ]
      在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6) z0 _. @8 a1 X% N: z; C$ a# R
7 I7 u$ T- Y: g
    wp 23456,a,w,wpdata == 1( W% E5 s: ]3 b: Q
      在地址1234下写入监视点, 数据长度a, 且写入的数据等于12 }6 K& {+ e$ W, S$ T
, C8 E8 [: u7 F% ]( K( ~0 r
    wplist
! C  s+ t- t. E6 {3 c      列出所有监视点
( N9 V/ v, @" I: i
# W* V$ [5 i% s% O  {; O    wpclear 3
' {* c; g* F; e6 Q( p2 @5 o0 R      删除编号3的监视点; }, [( k  v4 R! O3 D1 \1 {

* Y1 y$ |8 e+ V    wpclear
  z2 V( t. L) v) Y3 I* h      删除所有监视点
& M6 k  t1 S0 d: F" K# p& e& ]+ [! ^: t
      
+ x0 C9 c7 U1 L- B$ [# S! S
  x+ k* y/ S6 r' n程序断点指令: bp, bplist, bpclear
- R! U1 ?2 Z% D; A! A: y2 ^9 s8 _    例子:
# Y5 `  g) \8 O1 v9 w    bp 1234
4 E. z) y3 m' X( j+ n4 b      在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断6 S3 s8 `6 Q" D

6 y# j1 G7 I- M    bp 23456,a0 == 0 && a1 == 0) t% {' b6 S( h# T
      在地址23456下断, 且中断条件为a0等于0以及a1等于0, h/ w% N" i/ V
5 \9 V' p- Z% ^7 ^' w2 ?: E
    bplist
' X4 J7 b# P* c" o6 ]      列出所有断点
. j/ v1 e# H8 |: P+ S  z" I* A) e7 p6 o4 m1 Z
    bpclear 3) Q$ t$ L* X6 q  z3 ]
      删除编号3的断点; g+ y$ N- X# a
$ d7 d+ c  L/ j* \) o
    bpclear
4 G( K& t* j4 v4 V8 \      删除所有断点$ d# p  x2 R9 [% V7 w, b* d6 D
" @; _' V# }7 K& Q
      
% i+ w7 ~; P7 m      5 z; L6 W+ c/ I4 p' ~
跟蹤紀錄指令: trace; T! a9 `" I( c/ ^$ o
    例子:- j7 G" G7 S: d4 U# U$ ^
    trace 01.txt- M2 D  Y1 X9 C5 \& \
    跟踪当前CPU运行的所有代码, 输出至文件01.txt6 Y/ p" s( d! O7 q

9 R, p0 B  Y: n2 H3 x    trace off
5 C/ \1 A5 R2 C+ \, y    停止跟踪, 并且关闭文件
( H' g) t2 y4 i: F
- L$ \1 N- o. Q; B2 ]/ N" y  T- Q    trace 01.txt,05 s3 P6 @4 E% M( ]
    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt; K: A+ k: x. u) Q$ v6 p* K: r4 \
) T2 ?8 K8 V' b1 k1 I
    trace off,0& ~, P' g( g- ?6 ^7 Q5 [
    停止跟踪编号为0的CPU, 并且关闭文件1 k& z! y3 t! J* g
4 }- D2 h% H( |5 u" V4 O1 o# v  E1 L
    trace 01.txt,0,{tracelog "A=%02X ",a}
' F6 v6 ~# H1 _/ u) b& F2 F* W0 X    跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
' P) \1 O$ x. G# u7 a    并且在每一行的前面, 写上"A=a "! n+ W- F: p+ t1 n2 u
    "A=%02X ",a为一个C语言printf函数常用的输出格式% R; k1 b  n8 G# r% V
    意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入4 m6 F, z! B. k- @* E% @1 b! v1 T
    X表示为大写十六进制数
# B7 D0 w1 i% F; J; K, Z4 H% A3 r7 f/ n! E0 `; g5 T
; C% m& c2 _& ]/ v4 q9 W
1 G" P8 n! x8 ~, a  z! U
内存直接写入指令: maincpu8 I3 Q; w6 J. |. P& A& k
    格式为 maincpu.[][]@地址=数据
5 _! e  _2 ^# t8 S  S$ f: p    第一个[]:
& d; T% f/ n: y    o 表示ROM地址
  s, E7 m# H/ ?6 M( m( A    p 表示RAM地址9 Y9 W. a4 b  a# Z
/ x3 E# Z- M9 }+ K- E
    第二个[]:
& n. U( t, x% v# h; X2 Z    d 表示4字节% h. N5 w. j$ u% M  k8 @8 {
    w 表示2字节
* m: W9 T  S  E    b 表示1字节
" Q: R# }3 E( l5 ~3 d: p
6 M9 e7 |9 J6 X* V    例子:) a" q: I0 N$ T! z, j- A
    maincpu.ob@1234=FF
* p; p' Z/ ]' L, d: j0 X9 m8 C5 }    在ROM地址1234处, 写入FF一个字节
, Y( s, x& z  O; _8 B4 E  B2 N5 E9 }" S2 J
    maincpu.ow@1234=4E71# i. q% _; I% o. @) D, T# W9 A) c
    在ROM地址1234处, 写入4E 71两个字节
: k4 `6 E' B/ v/ A9 M* K! u% N* v# q& p1 m, Q6 ]
    maincpu.od@1234=600A4E71
2 Q/ w5 h1 E& f1 g$ A    在ROM地址1234处, 写入60 0A 4E 71四个字节
! Y/ j+ W; D  s0 S9 _
% R! }/ |$ y+ ]9 c4 j% B) E    注: 如果是RAM地址, 可以在内存浏览窗口中直接改写& o# N. V" t2 J$ m9 t) {# l: e
   
, w' }% F# t9 V4 G. k
) K  g/ `6 F0 Y4 O" ^其他:5 t3 ^. ^0 r6 U
    dasm 输出档案名,地址,长度
( M1 T( |3 Y# ]; G    输出程序的反汇编代码
4 J7 i, o( H5 Q' B6 @( |4 t    例子:; a- ^* ?- |% J
    dasm 01.txt,0,100000# \2 B, F& G0 s( J1 B
    将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
5 [6 m; }/ e' z" x  X$ N1 e" w" m& o/ Y, C5 Z, }
    softreset
& C$ `* B% |8 c& N% m8 O4 v9 w1 f    游戏重启, 但不重新载入ROM( C4 W! ?6 W/ ~; d3 r2 V8 w

3 T  F; _- a' ^* N    hardreset$ }2 Q# o# V6 d0 y3 U' Q
    游戏重启, 且重新载入ROM
& ]0 g' `- `, [% {2 |4 U$ d% R. H( N1 d
    snap xxx.png
5 {/ z" Y8 \  ^$ G% K2 W    截图为xxx.png
. D9 w% }$ d% s; X) g% H
" M% }/ q* E" V1 i& W0 f; J  9 O) @' r3 ^- t% W
  4 b% i9 B( M$ }$ E; d$ f
  9 I! J9 L+ o* m6 K( r8 |# ~4 a& S
热键:
1 i5 o& ?7 N1 S+ U2 u    ~ 中断游戏
$ ~' \0 g7 n7 j4 e% l    F5 运行游戏
! a- S/ B1 I7 t1 ?    F12 运行游戏且隐藏调试窗口
4 X  b! s# c/ a; ^    F11 步入, 单步执行, 会进入子程序
$ M5 g/ m) p  s$ g2 ?  M& b    F10 步过, 单步执行, 不会进入子程序/ e2 _4 p0 r8 c/ Z# e6 u6 A
    Shift+F11 执行到子程序返回( p) w; I: k- v  }
    Ctrl+M 内存浏览窗口3 h" o7 K8 @# `% W- g
    F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU
/ z" [9 t( p* [# p5 l4 p
8 g. d8 J2 ]6 z9 B  b9 q* y{:4_94:} 3 x' E8 @: K4 p  Q  }- H! F

; R+ P! e6 L6 s  b1 h, ^

评分

1

查看全部评分

签到天数: 6 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 2564 天

[LV.Master]伴坛终老

发表于 2013-3-20 12:40:42 | 显示全部楼层
楼主之前承诺的教程终于来了,非常感谢分享,像这样的教程真是太珍贵了。* _, ~8 w  y, l3 R7 {. q4 i0 e( D
) I( q7 P9 Z0 u8 a% y% o0 x
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 | 显示全部楼层
要详细些的东东
/ a; t0 b0 v( e! b, j5 W11111111111111
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-21 06:53

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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