|
|
欢迎注册EMU618社区论坛
您需要 登录 才可以下载或查看,没有账号?立即注册
×
3 ]- O: f+ U8 t很快速的整理我自己常用的指令 W$ ]* C; W( z0 y, i
6 ^: o# m" S- }2 [0 T{:4_112:}
( P3 g* E1 ^, b$ S9 I V
6 w2 p/ S; ^ V5 I- vMAME DEBUG常用指令2 ~9 w7 e- [7 ?
, M9 k* ~. k2 X5 d
内存搜寻: ci, cn, cl( B: G |) K( G, U' G& y$ S0 ? |
* _- `" u3 @5 w2 ~7 B ci
: ?9 g% c0 ^2 p4 y! A6 T* |3 ] 搜寻任务初始化, 每次搜寻一开始一定要输入这指令
0 P/ B5 |& e1 Y1 w- k, i) S+ `% R! }7 }1 E9 @( J7 O6 j1 L3 F8 O0 J
cn7 X6 z; F v3 t* N( |6 Q
搜寻指令0 f8 k& \+ a' X
例子:& l6 D& W( Y4 s& D+ \+ R0 W. |
cn eq,60
: e4 L# Z c4 R+ Z, G, o6 q5 W 搜寻目标等于60 (十六进制)
2 U* p. B/ ]" ?7 ?2 P8 J $ Y+ R" v# J( X$ |
cn eq,#96
+ _3 }+ {: M: x% W 搜寻目标等于96 (十进制)! _/ z% w+ r& O5 i
; h" P3 U' P) K' ?( Z0 A! U4 H# l
cn eq: \3 t1 Q3 L& q6 ?7 Y y
搜寻目标的数值没有变化
8 g9 O; U/ z3 ^$ a% _; Z) [ _$ J S1 a- h
cn ne
7 G$ Z, \( C! i) a 搜寻目标的数值有变化
0 K0 j' u, }5 P" X+ ] + e \" u- G; ]+ n
cn +
3 i% w+ C) N @$ O! F 搜寻目标的数值增加
) \) p% R n& p ; h& D7 m+ B0 {' `7 A
cn -
3 ?) q# |0 A) ] I( g 搜寻目标的数值减少
7 R* [2 h: U( }$ S- Y% U
; { u" G7 b! }5 l# e5 J1 z cn +,3
$ C* [% g( o( R% Y3 }( x( [ 搜寻目标的数值增加3 (十六进制)
6 c9 F: C, V$ b3 n0 \7 ~' e; T) ~- s: K! ? J. W
cl
8 C, E0 r; ]3 c& H9 k 列出所有搜寻结果
0 ?7 V4 G w- b" D; v3 j8 K. n0 I7 E, Z
cl xxx.txt" I, x- i" ?! Y9 `# U
输出所有搜寻结果至档案xxx.txt, 其输出的格式为XML cheat金手指的格式
/ t: o8 l) c+ V+ L
( ^4 j, G6 |& j) S v 8 S7 |" r, ~ L: M3 e
内存监视点指令: wp, wplist, wpclear
+ p Z6 ?1 F# g 例子:0 y4 }2 V! W5 m4 l+ l
wp 1234,1,r. k9 r4 \0 S7 W
在地址1234下读取监视点(该地址被读取的时候中断), 数据长度1
/ y+ z- r% Q; t8 b+ o, V. p4 f$ `
wp 1234,2,w
+ x- O: ?! @( c% _" G 在地址1234下写入监视点(该地址被写入的时候中断), 数据长度2
$ r6 w4 d0 b* r* D3 S 2 {, _5 {7 D: f9 I
wp 1234,6,rw
/ M- Y& f+ `) a7 z) S1 }' h 在地址1234下读写监视点(该地址被读取或被写入的时候中断), 数据长度6/ d3 r4 W/ b. k7 \7 x+ @
& E* C% s$ o* X" i
wp 23456,a,w,wpdata == 1
c! s. F1 W4 X8 i$ l 在地址1234下写入监视点, 数据长度a, 且写入的数据等于1
1 u" l7 r2 C T3 A& [2 H2 i+ ^, T( B8 [" R* G
wplist2 L7 B7 |2 G- s9 F" C6 L1 e0 ?
列出所有监视点
$ k9 b/ q0 V- q& r: g' {1 L; y) a7 l3 z. }/ S; M' V
wpclear 36 ^3 K1 s2 [* s: v! t
删除编号3的监视点: s1 t- Y% c3 W8 F& m
8 `0 U1 K! \7 q' }6 A p2 G. F5 f6 i/ G wpclear- c+ ?! s) w: O
删除所有监视点5 n Q& D0 z' m+ _* t" K
) }4 \- e. e' q2 O. v( \3 O+ w% F
6 n- I- P( h7 ~' H9 R
0 z- F6 B" M2 S" H8 E' P程序断点指令: bp, bplist, bpclear3 Z/ \& p2 t- n9 V# O- h
例子:1 ]) N2 H( Y- r( Q3 w5 P; e
bp 1234
& l! Q3 B( d- I6 l# \0 { 在地址1234下断, 当程序运行到地址1234的程序代码的时候会中断9 i0 u2 E k1 T/ z# l+ n) n1 X% D
! b0 Z& I- h7 K9 h. L" B bp 23456,a0 == 0 && a1 == 0$ \6 Q6 t! j& ]
在地址23456下断, 且中断条件为a0等于0以及a1等于0$ `. g. R; y; ~& y8 X
) Q* `* W* i2 w4 |6 X F R
bplist2 C7 t, P: q C8 x
列出所有断点
6 U, O$ v, w6 B9 H' i3 Y' a5 j$ T8 e$ W" r( `# C9 L+ s
bpclear 38 W- K4 k+ {: J% X% @
删除编号3的断点
$ M4 f+ U, L# K" h# x5 Q' V! r$ z$ }4 |! w+ n1 g5 k6 w
bpclear9 X4 x9 A% r6 I
删除所有断点* L( ~7 S( Q* }& |& e V0 D
4 I. \. k, e Q
4 G) B' S6 ~) c3 Y- `
+ Y) ]3 u) l3 I" Z6 p- P) L跟蹤紀錄指令: trace; d% `- K8 K S: B
例子:
/ ?/ _3 ]* S6 W trace 01.txt# V1 P7 r7 l4 a2 F
跟踪当前CPU运行的所有代码, 输出至文件01.txt
6 u+ `! x0 A! Z( O3 G8 I/ c
) J' G9 ~0 M; A1 I m trace off9 u# |# I. d$ v# Y. s
停止跟踪, 并且关闭文件
; V5 f( `# t" n% |
% b* d9 `$ I1 R2 y% m trace 01.txt,0" ]1 n A7 }! P9 h V; Y
跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt, |; B5 z* D, H5 Z1 e
/ O2 v) [5 ?" F
trace off,0
- O) j7 o& e" y/ f2 h 停止跟踪编号为0的CPU, 并且关闭文件7 t1 d/ T8 Q$ i. l/ G; h) S" c
" Z0 F# y8 L- G+ b4 ^ trace 01.txt,0,{tracelog "A=%02X ",a}9 G7 M8 l) S3 X+ W
跟踪编号为0的CPU运行的所有代码, 输出至文件01.txt
! p1 m* Y9 W4 ]1 C. V: y: t1 C9 v 并且在每一行的前面, 写上"A=a "
# s! q4 d+ @( g; c6 m Y6 y "A=%02X ",a为一个C语言printf函数常用的输出格式
$ H* J- q, b7 f4 ^. ], N/ c 意为将a的值代入%02X中, 而02表示两位数, 不足两位时以0填入
, `+ H5 _4 |1 S X表示为大写十六进制数
/ K: r- d0 V* V! u8 ~- w, O3 a, R4 o7 j
$ L0 A3 @5 M# B# N" q/ e1 v9 Y% r7 v$ K9 w& Y% A
内存直接写入指令: maincpu9 _/ p4 ^+ R3 i! H2 h# q% D
格式为 maincpu.[][]@地址=数据
* M& \# o* k- V/ q& @ 第一个[]:
( o: D4 j# H7 h6 y o 表示ROM地址
9 S( E( A. u6 E p 表示RAM地址6 h: h5 H6 ^2 r+ Z* l: i& [+ [
6 I1 r7 v/ \1 R7 h( R 第二个[]:9 W3 S6 Z1 k6 l
d 表示4字节/ w! Y9 H J3 A" k) x
w 表示2字节
8 y6 J, p/ q7 m# c5 m b 表示1字节& j+ O( ~0 U' O, E
1 h& V H6 M# Z5 h" y4 w
例子:2 E3 s& G8 F2 v7 ]6 a3 Z b8 k
maincpu.ob@1234=FF
- R* A2 Z( R+ l, p- x( p: S* V 在ROM地址1234处, 写入FF一个字节# A8 H0 F& L* M3 P0 Y8 C& ]
, Q3 I) Y- L1 Q& P
maincpu.ow@1234=4E71/ S+ M3 T" C/ E9 C( N$ b
在ROM地址1234处, 写入4E 71两个字节
& Z! v0 h0 J; c6 n" G
0 O' i v; Z$ e ^$ t! C3 T r( g9 U maincpu.od@1234=600A4E71
8 L6 B; _% P8 [; P, q 在ROM地址1234处, 写入60 0A 4E 71四个字节9 g9 g" b$ i; B$ {" l
: ?9 S( O6 Z3 N* k$ b+ S" M$ M; U 注: 如果是RAM地址, 可以在内存浏览窗口中直接改写
3 r% {% y8 p/ @+ @ * H0 |* | y+ H9 c. c. i
3 v8 L! I* v0 G- o其他:3 V, {' l+ t- u4 S( r( d* d
dasm 输出档案名,地址,长度& u. W0 [0 t" T$ [6 H8 e
输出程序的反汇编代码
1 U$ g n# u* B3 k1 i" i6 U" q- F 例子:! E6 Z4 i. @5 [( q% t
dasm 01.txt,0,1000003 {3 H. r; h4 \* A$ T0 N/ T
将程序汇编代码自地址0开始, 长度100000, 输出至文件01.txt
; h" N( G$ [% g9 F- v3 y+ r% l( K& {+ n* T' @: z/ `; a5 p
softreset" m8 f, I: P" L n: u
游戏重启, 但不重新载入ROM3 M' D. b( H0 n
! F; R" l7 F/ K" {5 n hardreset( N! ]/ H }; ]. _5 o+ L# V
游戏重启, 且重新载入ROM
8 X, f9 A% Q/ p; J9 q, q* m2 ]" C2 }9 ~) W# {- ] L
snap xxx.png4 ?# ^/ d" B5 N) n6 i( R5 z) @
截图为xxx.png" j. y1 E7 f1 s; y f( |0 m
. P u) b! }: T, A/ T 0 ]2 t1 ?! P! C: I5 Z# h5 A
9 N/ y4 x( _4 M+ Z & V7 {4 z+ ^# K7 T! a3 m# o
热键:# y; ]) c' g3 ]1 R6 C0 f
~ 中断游戏4 \3 \1 ? `; G! G4 H7 B
F5 运行游戏
* H- u# j% B0 S' s: y! E6 v9 B F12 运行游戏且隐藏调试窗口
, t% e; {5 ~9 \# k% G% Q0 S F11 步入, 单步执行, 会进入子程序% o; V6 a8 h( G5 l
F10 步过, 单步执行, 不会进入子程序4 R/ Y1 m; r3 H8 z& i& T6 g5 h4 z
Shift+F11 执行到子程序返回
! z! T5 q2 T$ ]3 D7 f3 Y Ctrl+M 内存浏览窗口
: R, O# ]$ R. |: T F6 运行到下个CPU, 有时候~中断游戏会停在音效控制的CPU, 用这指令可以切换到主CPU4 i. {. Q( f5 \; W( N2 b
: |8 `( Q* p) ~& Q: i+ r
{:4_94:} / l9 t) v4 L+ `: p) Q
5 B1 E& T+ G/ E* e1 j: Z$ M |
评分
-
1
查看全部评分
-
|