|
|
欢迎注册EMU618社区论坛
您需要 登录 才可以下载或查看,没有账号?立即注册
×
0 T, r8 N, C1 B- L很快速的整理我自己常用的指令
+ W8 V8 v/ A5 z" O- }7 |6 Z3 V$ q3 Q2 ^0 j3 K V
{:4_112:}
/ E" {5 X8 `2 H- _$ r% b- V6 M) d. i; U7 u/ D/ @8 q! o6 J
MAME DEBUG常用指令2 ^# h9 k4 A* v* C4 w% i
) n2 a0 f% x& b内存搜寻: ci, cn, cl. v6 X3 L" v; x: V" ~* b
* U$ }5 `7 `" }/ k4 J ci1 i& m" @+ n0 J; q1 a; z u
搜寻任务初始化, 每次搜寻一开始一定要输入这指令 h9 K& V9 W. H: \, d
$ Z j# ~. ^9 c& E4 s7 p* M
cn& x7 B, Y2 h5 ?! J
搜寻指令% e& h/ L9 R5 w# p
例子:
8 x7 i% S8 P2 R4 A6 G2 q cn eq,607 w+ y- H2 o( L ~
搜寻目标等于60 (十六进制)
8 N$ Q" ?9 t9 g7 F
, e# a r0 T) A$ R2 k/ M, \1 J0 D cn eq,#96' t% T9 l4 O- ^; r
搜寻目标等于96 (十进制)
; j0 U( x% L. b' f: T
' l( X$ y, {+ I cn eq: ~3 H" V+ C6 E; L3 ]
搜寻目标的数值没有变化
4 T/ f# P. A% n8 |; Y' Z! g3 V2 S# I- S0 k; D3 n0 R" X, A1 M( I
cn ne" F' W1 t: f. S# e& Y9 T' ~
搜寻目标的数值有变化
7 A8 D; y" H8 } 7 T) x; ~9 K, N) n. x* l
cn +9 b0 W5 I/ V/ X7 D, P* A, r& ^1 d2 i% q
搜寻目标的数值增加 K$ S! [, O" e2 U' Y+ J1 o3 l8 i
1 u6 s1 B/ o, ]6 f% W- |9 U/ G cn -* S7 D6 ] D0 Z
搜寻目标的数值减少5 A3 B7 \* K1 M: B l
/ ^2 | X% m1 `5 u5 @( | Y8 J cn +,36 }9 B1 h: F( @: @+ v
搜寻目标的数值增加3 (十六进制)3 `! |. g$ E) p" G5 |& _+ H( _
) ~+ n! B6 e. W" @( ` J cl: B7 d0 ?* `3 j6 ]9 Y" M+ m
列出所有搜寻结果+ N) [6 C' P1 v6 c
/ P& k. X. X' O4 I" ^: K5 H cl xxx.txt
8 e) B3 F+ j( t" \ 输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
4 Q3 A* x( x8 Q9 ~ K. R8 [
$ t9 Z% ], W. z7 \7 c3 n D- |. g$ @1 g. |$ o
内存监视点指令: wp, wplist, wpclear# @1 e g+ v7 ?* x0 S0 q4 ^# _
例子:
' R0 _* t7 N6 Z, G! t$ k6 n; p wp 1234,1,r9 w4 F/ }" \) W0 k
在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
# }4 M; O |! A. M
' V1 {: {" C: H6 x! B- l wp 1234,2,w2 _" i8 U: u4 ^! [
在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
+ K1 a' [" x7 _: z* ~ 3 X5 |7 }% S: Q6 ?" v& t
wp 1234,6,rw
9 \' H9 b) M3 |" t6 I% |2 Z 在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6: R8 d* b' @6 m9 P% ~( {
; D/ X1 v6 m% B) M7 H: H wp 23456,a,w,wpdata == 17 x4 d& i7 m' n' m! }. ^
在地址1234下写入监视点, 数据长度a, 且写入的数据等于1. }6 _' k7 D, c1 u, Y" ~8 r9 F0 r5 c
( X) s9 B* Q2 b& b! L# w
wplist( F* K9 r8 P- f9 _
列出所有监视点% _0 F% f* Y- v: ]+ K# g$ v/ i
% a% {: k) j6 M7 ]' L5 r- H7 c- C
wpclear 3' u9 j, ?2 f. g
删除编号3的监视点
2 [7 T' f& d* w' v N' b# k$ Z" j/ g `, ~( q* ?( d
wpclear0 |/ S: T# D, v% B. T
删除所有监视点- G6 j- w6 A9 _3 X: ~8 _
" |* J' \( j5 t2 L0 H * ~5 C/ q' h4 m: n0 |# w
8 v# t9 a+ U! F B6 }, X程序断点指令: bp, bplist, bpclear
; s$ }8 h# N0 P$ K' E) w' I 例子:) q! {; H# `8 z* d1 b8 \$ U" F
bp 1234
* ?4 U' o, b. f1 e+ @ 在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断2 g* }# o- P" I; M9 u% S
) K; J5 n$ M# ?: c; v
bp 23456,a0 == 0 && a1 == 0
Y! `& A- I4 b) @ 在地址23456下断, 且中断条件为a0等于0以及a1等于0
2 M' l- A9 \ Y
7 [7 ^4 q# @# F ~ bplist: ]9 u# z- ^. u' f' g* C4 [+ U6 l
列出所有断点' r T; E, F- U4 ]# j; W# S) W
2 F( t q$ t) f; J: Z% n bpclear 3, p0 C# c) q- g, P b
删除编号3的断点
& j9 U& y/ o! _' c1 L, i9 |, n& V; m/ O: M
bpclear
, |$ f+ w! b6 q% M( f( A2 x: n) H 删除所有断点
3 u2 ]2 [$ q# S3 K3 Y: O/ K. a) T, p1 `5 [4 w
, m( g' Z/ `1 [/ ]+ E% }+ u / O# o' J. K' q5 b" L) o% N# S( E5 V
跟蹤紀錄指令: trace& ~7 J" t" G. L8 b9 e* V- d
例子:
) |8 h5 y6 c: `6 { trace 01.txt
! }5 {4 ~. _5 o' f/ f 跟踪当前CPU运行的所有代码, 输出至文件01.txt3 \5 y2 x) n$ f( P6 W5 T# h7 `
! Y5 v4 g# m" e1 X1 W trace off* r+ L; b' H. D3 `. L R4 V6 k v7 X8 f
停止跟踪, 并且关闭文件: d2 @$ I5 b/ Z' H; C; z3 d; s1 ^
2 _( r+ c3 W0 E; o0 X; i9 h6 w7 r trace 01.txt,0
0 V: o8 y% S7 [$ h9 l8 m/ ], u+ N 跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt3 Z! Q6 h+ ~0 X
& m0 V3 B4 j' @& ~8 h" O! d
trace off,08 I) y6 m/ M5 \
停止跟踪编号为0的CPU, 并且关闭文件
# s" W7 q0 N/ B. R8 C7 N7 _: M5 N& a
trace 01.txt,0,{tracelog "A=%02X ",a}
( ], X4 ~3 q: w0 a6 w. @7 V) r0 S 跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt B" W/ m5 Q. Y2 N) L3 ~/ Z. L& x- s
并且在每一行的前面, 写上"A=a ". ^7 o$ D- Z0 z* `( @; ]1 N
"A=%02X ",a为一个C语言printf函数常用的输出格式
' i$ d9 O2 ~: k+ P; g: ~ 意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
. m3 N; ?! G j, \" q X表示为大写十六进制数/ g [5 ]9 K5 I5 a. T2 M
' R. V% S+ E# L; B
. |# d, ~% {0 [5 t1 l
" m, b, l* J: D) E4 W' C8 a内存直接写入指令: maincpu
6 f. T1 L; Y( O( h 格式为 maincpu.[][]@地址=数据
$ ]2 @+ Z0 S1 Y 第一个[]:
7 \* h' o, ?( h R7 N9 G o 表示ROM地址
8 o( t$ Y, X( z* n* s1 t! o p 表示RAM地址9 M3 r4 Q. W! g n" E% J
0 b( o" y5 c, O
第二个[]:9 _, ]/ L- L8 w$ [1 v. z% q
d 表示4字节
* ]9 M+ J( S% a/ f+ @+ ` w 表示2字节$ }1 J4 ~" Q; j o
b 表示1字节
8 T4 {) T1 Y9 P I9 J `' H( W* E
$ n. Q+ m2 }2 x; F. U# v2 q 例子:
' O1 @- ~' V% ^, M: l4 y maincpu.ob@1234=FF0 M+ d0 q ~& n9 V, k! J
在ROM地址1234处, 写入FF一个字节/ I7 t8 _( _5 r% F: e4 q% |
) h. Z0 G3 e W5 [! z: ? maincpu.ow@1234=4E71
; D, }/ m1 f) u A) E6 A 在ROM地址1234处, 写入4E 71两个字节
; A6 V2 X2 b& k$ @) q- f/ _ n. u2 s7 w0 B9 @4 a( Z& `
maincpu.od@1234=600A4E71& f4 E" Q, W6 j* S( f
在ROM地址1234处, 写入60 0A 4E 71四个字节2 K9 M: |1 o9 l
* U4 C* n0 ]) l7 F' _% t
注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
& c6 |$ a- T* l+ k, Z & c# W2 H {* v8 a
( D: I. u* U9 J" _& @其他:
+ c# k- v* c( |. |; o9 ?& v, _ dasm 输出档案名,地址,长度5 _) t6 h4 \) a9 [. x3 U/ w- D) E, A
输出程序的反汇编代码
" Y+ n7 P# _) G; G 例子:' @" ^9 M7 l0 n/ t" j
dasm 01.txt,0,100000" q! z+ S. u3 ^+ D
将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
* B$ V2 z, w% E7 k8 i5 S9 I/ _% c8 I( P; C& Q
softreset
4 Q6 J" m0 E+ L; _) I 游戏重启, 但不重新载入ROM
7 Z$ [2 u( {/ l6 _! v2 v) U
6 |2 P* ~1 ]# }# `4 P# E1 ~2 ^3 B hardreset3 \; C: u' M8 F
游戏重启, 且重新载入ROM/ v3 E8 {; M9 y0 M2 @5 E$ P
/ W" n D: O" x7 P5 s. b+ } snap xxx.png
& e5 [6 c! B; B/ ] 截图为xxx.png% }5 ^1 @1 l! d4 @1 ~3 R$ | n8 V
% z& I4 ?8 I: v- o
- Q4 }8 G! M, y' |* U
* a f( h0 D6 @& y5 G& J
" `8 w0 Z, C3 g% n, P$ ^3 _; u1 ?热键:
2 H) g* V$ n! L l" l ~ 中断游戏
3 O2 g/ @! Q z) C, u F5 运行游戏
4 n. {$ @* C3 a/ r M D F12 运行游戏且隐藏调试窗口! D9 o6 Z) J- }) T
F11 步入, 单步执行, 会进入子程序
# k/ a Q9 R, T- D F10 步过, 单步执行, 不会进入子程序
6 P+ b0 w: ~8 C( M2 O" e0 ? Shift+F11 执行到子程序返回6 t7 ?2 j% Y" ~; n0 j+ b- k% G4 Z
Ctrl+M 内存浏览窗口
; d1 N- Q' I3 k$ e( g F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU; J3 z0 U& i% W7 j. n
& F9 C: b: ~% s# r6 `3 x3 a{:4_94:} 9 c; m: G6 l, N* H d9 \1 T
) @! K0 E& @: @% {8 Q
|
评分
-
1
查看全部评分
-
|