EMU618社区

 找回密码
 立即注册
搜索
查看: 3287|回复: 17

[原创HACK教程] 关于MAME DEBUG版用法(如看不清图片请点击图片放大)[更新补充一些命令]

  [复制链接]

签到天数: 1908 天

[LV.Master]伴坛终老

发表于 2013-1-23 22:28:49 | 显示全部楼层 |阅读模式
应人要求,就写写关于MAME DEBUG版用法吧。- t& q$ k  C: h+ i6 J: [
# ~7 M: w* \% x, d$ Q* f
(1)如何加载ROM$ `, e7 O7 ]* l# Q* N9 {

) y2 a* F6 S  [1 B& S2 a先说说如何加载ROM吧; a' v) Q1 E' P. l/ b$ j
7 t. Y  C" c0 |& m  I) B  \1 H
以MAME 0.148 DEBUG版为例:1 |# }! Z* @6 _. P/ I8 g! g5 e& A" r
) ^7 F, Z3 Z; E4 K$ u5 C
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
1 p. M4 P1 K' t" ~* m8 H& z& V) r0 @+ l3 i! P
注:MAME官网的MAME是命令行程式,没有GUI。+ e& F  T# x$ e! ~5 v! A, f/ R: H, G

0 K" r# q8 [3 }4 y2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
2 Q8 Y- \% a8 Y% L" E$ w. w: L5 b, ?: V
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
, B4 u& b- K. q) A' _6 S6 r
* u( D0 X- F) `# N& ^$ ^d:回车. w4 U8 S6 {  _* N, w

- x' c/ Z* W4 g( F1 N4 h- Zcd mame0148b_debug回车
5 `9 j( m1 x* Y9 d6 C; Z" w1 J  b
( ]3 ~* i8 u+ P, }+ ?) F3 Q; u如图1:* `: `% [" E) b, M) _* ^

4 q+ s8 W' H, e- @3 J
% Q. p- |  m$ P( S4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
& y" n: a* Q6 u+ a
4 A+ c0 o* [. G% a% H; a5 e' j, w3 K0 p
* R6 D: g' k! K/ K
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;% r) h- k8 \2 l# Z/ U; j$ I8 p3 @5 |
: H  H' w2 @  d5 N+ S6 N1 b2 p1 V
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。; Y9 i8 `) |; I( c" d, p
% x$ r$ _/ q, ^" F0 p0 B0 ?
(2)如何呼出/隐藏调试窗口
; k6 M* P0 w, O9 P6 }7 k+ @; a  i4 d$ R  n  P3 p- G) s8 j/ W$ ^
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
0 X3 o' L. s0 X" y) M/ e, B% R: P) `6 {; F* n6 M; B
/ J% Z8 S$ O8 i6 v8 A: ], A

% D4 ^& H2 {" X  t6 V$ U/ C' ]2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
* I8 O. }* l5 X
, u, _! g1 a6 ?: k$ c0 L
$ u' j; c- X& Y" U$ y! F! i! }' b
5 S# ]3 h# I1 r3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
/ L6 w% E# ^9 R$ E' j* y5 D
) b6 a$ ?- P3 h# X(3)如何下读/写内存监视点以及程式地址断点
" V$ r9 A1 }( f8 E
! W) C/ m% ?3 [! p/ w先说说如何下读/写内存监视点吧
) e! z1 Z4 u1 K) U/ m% o- o# I1 n$ v9 s1 c' }  [; k
监视点命令格式:wp <address>,<length>,<type>,<condition>) |2 w: |4 l5 P

+ P5 e- p" P4 g5 W<address>是地址' E( K8 z! H. k+ m) m3 C3 g

, n: i0 c$ J4 ^$ }' H<length>是数据长度,长度必须用十六进制表示
+ }& S1 Q9 F4 s+ q6 k  R
. W& Z3 _% L  ?) C<type>是监视点类型,r是读,w是写,rw是读写
2 E$ K2 s( p. b" V( O( X% M" H. v6 q! m. q2 _, I
例子:
8 A, j8 Q2 Y( M5 x8 X% ]! N5 K1 L# k* K& E
例如对ff8569地址下写监视点,数据长度是1个字节
& G: w  a" g% w; G2 K4 O
: `" S4 p2 Y, Q* kwp ff8569,1,w2 ^+ q4 I! ?8 }$ s( u
1 c7 o  j' S4 v! \' Y
例如对ff2235地址下读监视点,数据长度是2个字节& o2 e" r, f0 o( c

- ~9 E3 s# R! K& `wp ff2235,2,r5 g) o( O* J3 Y! e1 l' U
1 i, q1 n* {8 M% s1 |6 J! S! {2 A, m
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
  G; i0 m5 |' \0 C' x- s: y$ f) T1 z% o* P
wp ff7533,1,w,wpdata == 0
; @% }' `) A' T6 S( a$ B; W1 m8 h7 p! U: u' s
以龙王战士日版为例:6 d0 \' T& u! _9 r. _- b

" e; L# v. D, y. P1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
" `. {1 C6 D( L7 {% [
" o8 k: N5 @0 Z- ]$ b, o8 a- M% E$ b/ ^, f0 o  C$ u$ x

/ c# W6 O9 D% r4 N& P* ~! F
- H: ?4 F3 X. ]6 F2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
. J0 l8 l: G" `' E- u' H
' I# f- y0 s/ i4 L- z) ]/ Y  C7 O" O9 W' H$ l4 h1 s- L

$ m5 O3 s$ g8 \+ m* O9 T9 n接下来说说程式地址断点
% Y& p, d+ ]( q6 `# ~7 j
: Z- L) [: B" i. @/ k5 [: S命令格式:bp <address>0 _- F8 X* l1 n5 b3 a
( _! L+ P) k* `
例如对000488汇编指令地址下断点
* s% W: J9 {& m# L9 P- t
5 H5 J7 d' H* d& abp 0004883 R! A5 F# }( P3 h# |) U/ {- N. d
# ^% O2 m6 S& H2 I. _4 R
当程式执行到000488地址时就自动中断6 `$ q. A& P9 f4 Z1 y
5 t% a! H4 X3 u5 `- M1 Z" e
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
- J7 K7 I7 g2 |/ K; S' x6 ?/ R6 _) ~5 b* X5 i: W
有错误请指正。! `" E( {! Z& _' z' d4 E  Z
5 @/ K' v7 a' ~5 p: M- _
补充一些命令:
3 r8 }- {5 \  ?: [' t4 e4 P6 \5 N% F
"wpclear" 清除所有监视点
7 ?; M# k/ a+ ]0 x"wpenabld 数字" 开启监视点4 O# s2 n6 b) `  z& p$ q$ x: T: y
"wpdisabld 数字" 关闭监视点# S7 G1 s9 [$ _; ~/ w* H
"wplist" 显示所有监视点7 f( g  q6 Q! F0 A2 Y9 \9 T
# p* [4 A6 T  y: K
"bpclear" 清除所有断点
" |5 l4 F5 B3 q4 s"bpenabld 数字" 开启断点
+ Z* ^9 e1 c1 f9 p" I" e"bpdisabld 数字" 关闭断点3 }2 y# O8 a: Z; k2 [/ v
"bplist" 显示所有断点3 q( H; H8 O' X. J- ~5 E

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

3

查看全部评分

[发帖际遇]: 疾风之狼扶老大爷过马路,警察叔叔奖励疾风之狼 3 个 柠檬. 幸运榜 / 衰神榜

签到天数: 1548 天

[LV.Master]伴坛终老

发表于 2013-1-23 23:55:27 | 显示全部楼层
感谢 疾风之狼 提供本次教程 辛苦了
[发帖际遇]: 孤独逍遥整理箱子竟然翻出了 4 个 柠檬. 幸运榜 / 衰神榜

签到天数: 3351 天

[LV.Master]伴坛终老

发表于 2013-1-24 06:11:00 | 显示全部楼层
授人以渔啊,万分感谢
[发帖际遇]: 一个袋子砸在了 hellok 头上,hellok 赚了 2 个 柠檬. 幸运榜 / 衰神榜

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-24 08:59:28 | 显示全部楼层
我在想为何要搞的调试器这么隐蔽
3 P' D( C* O$ V7 @
1 B6 T% c# I: I( j% v$ c以前这调试器都是直接出来的说

签到天数: 1296 天

[LV.10]以坛为家III

发表于 2013-1-24 15:32:47 | 显示全部楼层
谢谢,有空学习一下。

签到天数: 1908 天

[LV.Master]伴坛终老

 楼主| 发表于 2013-1-24 19:15:24 | 显示全部楼层
更新补充一些命令
[发帖际遇]: 疾风之狼 捡了钱没交公 柠檬 降了 1 个 . 幸运榜 / 衰神榜

签到天数: 2551 天

[LV.Master]伴坛终老

发表于 2013-1-25 16:48:33 | 显示全部楼层
本帖最后由 zsyf 于 2013-1-25 16:55 编辑 / l9 r6 X- w/ ^& z. G' ~( Q# k2 k5 [
5 E( Y3 k0 D1 Q; F* a
太好了,终于有新版MAME的Debug相关的教程了,感谢发布教程。不过还有一点小疑问,还请管理员不吝赐教。
" `% z. V" j5 [5 d& L/ x& y, t2 c  }( [3 z! D9 p; ^
其中“我们知道1P生命数地址是FF125D”这句里的FF125D地址,对MAME稍为熟悉一点就知道,MAME0.127以后就取消了内置的作弊码搜索引擎,而且新版本的MAME也不被很久不更新的EmuCheat所支持。因此,想请教的就是,如何才能得到只有新版MAME才支持游戏的相关内存地址?为何用CheatEngine搜索到的临时地址在MAME里下断点却无效呢?是方法不对还是工具不对?还望继续赐教!

该用户从未签到

发表于 2013-1-25 17:02:41 | 显示全部楼层
1.新版调试器没内存查看功能?
( C0 x" j* L& \0 \- j5 F2.就是ls所说的, 没作弊码的情况下如何查询地址
[发帖际遇]: money_114整理箱子竟然翻出了 9 个 柠檬. 幸运榜 / 衰神榜

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-25 20:10:50 | 显示全部楼层
本帖最后由 银河漫步 于 2013-1-25 21:08 编辑 % k. h! r( o& Z3 m" R4 C' f  u

9 D$ n6 I; D) |+ O4 K3 O! J' {CheatEngine搜到的临时地址当然无法对应MAME的内存地址1 q; q( [3 R" h

% Q1 ?1 t9 V9 m7 M新版MAME没搜索引擎了么?
5 \# E# f3 s3 Q' u7 _; ]+ B晚上我看看
% T6 U- {3 E* [3 l( l
$ _+ t4 G: k$ r& [1 UMAME查看地址的功能还是有的' t5 @/ U3 ]& f4 g
菜单里的第一个选项就是显示内存地址
  i6 j' ~: u$ J' c不过确实没有之前的搜索引擎了
[发帖际遇]: 银河漫步扶老大爷过马路,警察叔叔奖励银河漫步 3 个 柠檬. 幸运榜 / 衰神榜

签到天数: 1908 天

[LV.Master]伴坛终老

 楼主| 发表于 2013-1-25 21:23:40 | 显示全部楼层
回zsyf:
0 h9 L" Y( \3 F; A
1.DEBUG版MAME有作弊码查找命令+ V/ V  O) R6 {) @5 j/ w

8 l' w# x8 x! F+ l' L% U2 Y: Y命令如下:+ R4 a+ r* l. _
cheatinit [<sign><width><swap>,[<address>,<length>[,<cpu>]]]
& `. u6 g+ P- O( E- T6 L7 J<sign>是决定数据是有符号还是无符号,s是有符号类型,u是无符号类型
) {. W/ [, [' `0 v, o" @0 k' T<width>是决定数据宽度,b是8位(单字节),w是16位(双字节),d是32位(4字节),q是64位(8字节)
7 j5 P; W' Z- z- i0 _! V# ?: ?+ E<swap>是决定字节是否交换
8 }; k! _+ ?# v4 C3 o1 I5 v6 w% }<address>是地址,地址必须用十六进制表示,例:0x100248, E$ N- A8 s: c0 Z
<length>是地址长度,长度必须用十六进制表示,例:0xfffff
* ]1 l, ]+ K- ]( N; U0 ^. v: z<cpu>是决定搜索哪一个CPU空间,0是第一个CPU,1是第二个CPU& E/ t1 V, y5 w( z# w
* l$ ~8 A+ ]4 t: M5 g5 h7 a! `0 `. \
请打help cheatinit命令获得更加详细说明1 \+ Y3 I2 s, H5 Y: |3 F' l
; W4 @7 D. j" o
cheatnext <condition>[,<comparisonvalue>]
+ [1 x4 ^5 N# N; \  N4 J% z' k<condition>是搜索条件,有[eq],[ne],[de或-],[in或+],[deeq] [ineq] [lt] [gt] [ch或~]3 ~4 g! K. u( Z. ~3 |, B, |
[eq]是等于  T: v* b% ]; {5 J# n6 s; j
[ne]是不等于9 q1 Y  R4 _! C; J" v
[de或-]是减少9 {! @1 _0 k% l" p! Y
[in或+]是增加
& V! K2 W6 A2 S; @[deeq]是减少或等于% L' x6 {9 J; W# h
[ineq]是增加或等于
& Z, p9 f9 m+ j2 _7 z. |0 E[lt]是小于
$ V$ n+ T$ Z+ b/ t[gt]是大于# m% u! T/ Q0 e  Q
[ch或~]是数据有变化
+ A- v& }) J% B# @6 e1 S* u) N
4 z* p; \! [. Q$ y& C; K  l<comparisonvalue>$ {5 D$ }' E) L
要搜索的数值
0 p9 _( [2 P$ G2 @# G5 A
3 I' d2 P4 Y4 w4 m# |请打help cheatnext命令获得更加详细说明
& \2 a7 {% o( @9 s. K" i; Z6 ]# P1 c# E
cheatnextf <condition>[,<comparisonvalue>]
; g  ]+ G' u  c+ o$ v说明同上
6 p( t! r* H' R* a: y. ~+ Y: W7 w8 J
请打help cheatnextf命令获得更加详细说明
4 O2 P1 T" {2 b1 S; {+ s! Z
% j( ?+ n3 a4 K  C* Jcheatlist [<filename>]
. Q) z3 ]* g: i显示搜索结果,添加文件名的话,就是把搜索结果以基本xml格式输出到文件
* k8 \1 z. c* ], i, @& m# X
5 Y0 K4 g  T" v( X0 Q* i请打help cheatlist命令获得更加详细说明, O; s+ o+ O6 _+ s2 a. V

8 Y( }/ I  f+ ^4 N* \第一次查找要先用cheatinit对要搜索的内存范围进行定位并初始化
/ ?+ B; Y( W- y( n8 m
, x" K7 t; @5 [% P之后进行第一次数据搜索时要用cheatnextf命令来摸索
/ D8 [& m" v8 |7 ?
8 {3 `1 h9 u6 s+ G; C到第二次、第N次数据搜索时要用cheatnext命令来搜索
7 r6 p, s, G3 D  E8 z4 o2 V
' \0 e: R; e$ R1 ~举个例子吧:
) H4 D( R. w# v8 F/ m2 a% g, N
2 ^8 ~9 ~2 @0 H; x以合金弹头X为例:1 W  n8 |$ g" p) c  _/ ?0 {" F
1P生命数是2: _, V( |' {4 A' V0 a
+ `. m) q  P$ D
先用cheatinit命令来对要搜索的内存进行定位并初始化,无符号类型,单字节,内存范围在100000~1fffff,指定搜索第一个CPU的空间) ~0 d: P- f! v2 }8 Q
. @" Z% s2 D( i! C3 p
命令如下:2 X  x# B  L$ |0 M, {
cheatinit ub,0x100000,0xfffff,0  F# W% [/ w" c8 K! p5 a
% C0 e4 I/ H- l# A* G' \/ N: x
再用cheatnextf eq,2命令搜索生命数2
1 {1 f; T7 p+ I  h' y! F) W
* _5 H: i* T2 b3 U6 T: ?$ `, Vcheatlist显示搜索结果
, b) r' F: G& S: G3 S: v  _) X/ h) r- i
死一命后用cheatnext eq,1搜索生命数1) E6 c/ k8 h+ {! a+ c3 N2 {5 Y
/ N) X; u3 m2 A( @% q* I; W' W
cheatlist显示搜索结果
5 o2 M1 g4 I1 [, l( A4 m8 O( _.......
# w. O4 m- C+ T% N9 s0 C6 y  ~直到搜索结果不能再减少,就点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)调出内存查看窗口来试着对各个地址试修改看看效果
) M) B  e! R5 X9 w7 n. \
1 X4 K8 E% e2 n还有一些命令,例如:cheatrange、cheatundo,因为没机会用或不用,就不说了。' l9 b& J: j/ E0 [4 w
) n" ~; K9 u2 T* |$ ?! W
没作弊码的话....# h/ x/ [& z% K
: E% G: T+ g8 u/ b
不同的机板CPU,RAM范围大小不一样,干脆用内存查看窗口看看主CPU空间是多大,然后将其全部定位再搜索(这样做一但改错有死机可能)! F5 e$ Z+ G  [! |4 \
; u3 G' Z+ {9 `+ R$ w6 D
或看看硬件资料(有的话,可惜我没有)或MAME源代码里的有无写关于68K RAM起始地址(或其他CPU RAM起始地址)
. H, Z( ?( s( i4 m) t+ M- c! }8 M
0 {) V. E) ^2 \; x+ P7 i* h  h: n2.cheat engine搜索的是PC内存地址,不是游戏机内存地址,拿cheat engine搜索到地址来断点当然是不行# o' z. t0 f$ n2 b2 A0 e

1 P. C3 x( d4 n  S; i, E* |' s要用cheat engine修改或锁定数据并不是不行,要先找到MAME 0.148模拟器基址来定位
, T( s" p* L5 ~( S

7 i, Y$ `- z$ W" B7 S; [回114:5 E6 d" i  T7 c4 L. g) M2 X$ e) u
1.Debug版MAME是有内存查看窗口,点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)! Y. m1 s) d6 D0 A% X. N
2.没地址如何查询地址?看上面我给zsyf的回复

. u  z% i6 r( F4 V  S% o4 c4 K0 {3 |) e9 N) p# a
打字真累.......orz.......
[发帖际遇]: 疾风之狼踩坏了花花草草,被罚款6 个 柠檬. 幸运榜 / 衰神榜

签到天数: 69 天

[LV.6]常住居民II

发表于 2013-4-21 01:03:22 | 显示全部楼层
查出减命指令后怎么改到roms?完全不会啊

签到天数: 31 天

[LV.5]常住居民I

发表于 2013-4-28 11:23:53 | 显示全部楼层
同问,我找不到kodj,不知道少了哪个bios,rom,但是有个三剑圣(wof的改版)的rom,也找到减命的指令,就是不知道如何对应到哪个rom的文件。最后一个个试验,似乎都不对。是不是rom加过密,我记得mame的rom,有变化过,最起码在00年之前和现在的不一样。连名字都不一样,到底这些rom是如何做(是不是叫dump)出来的?
[发帖际遇]: sdiencelee摆地摊卖菜,占道经营被城管罚款 3 个 柠檬. 幸运榜 / 衰神榜

该用户从未签到

发表于 2013-6-14 19:12:06 | 显示全部楼层
感谢分享{:4_92:}

签到天数: 1279 天

[LV.10]以坛为家III

发表于 2013-6-14 19:20:04 | 显示全部楼层
大狼就是我的老师......!!!!!!!!!!!!!!!{:4_97:}

该用户从未签到

发表于 2013-6-19 19:44:34 | 显示全部楼层
非常实用谢谢,不过最右边的数据是什么意思啊。

签到天数: 380 天

[LV.9]以坛为家II

发表于 2013-11-14 20:14:51 | 显示全部楼层
又是一张科普帖,一定要顶,而且要收藏
[发帖际遇]: drogon49花7 个 柠檬买彩票,血本无归T_T. 幸运榜 / 衰神榜

签到天数: 2881 天

[LV.Master]伴坛终老

发表于 2013-11-15 16:01:38 | 显示全部楼层
果断留下技术的脚印

该用户从未签到

发表于 2014-3-11 00:01:41 | 显示全部楼层
万分感谢{:4_92:}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-4-4 00:37 , Processed in 1.229492 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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