设为首页收藏本站

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

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

 火.. [复制链接]

签到天数: 1972 天

[LV.Master]伴坛终老

发表于 2013-1-23 22:28:49 | 显示全部楼层 |阅读模式
应人要求,就写写关于MAME DEBUG版用法吧。
- y+ b9 F, Q' `9 l8 u. `/ }: \2 l1 F! B' g
(1)如何加载ROM
3 L: d+ M. _. a; s' Q! U
' v8 l3 G/ M) e+ e1 g先说说如何加载ROM吧
$ Z0 ^) o4 k! n4 n) }9 |1 R$ h+ W6 m0 Z; M  Q8 N3 w# S# [7 G
以MAME 0.148 DEBUG版为例:: g( A( {; M  f- H8 [  B- [
1 n, U, l" @0 V" K/ F7 I
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html: p. G* [2 V) }: b8 ~' T+ ^
1 ~! C" F% a& M5 L# Z/ s7 S9 S5 `
注:MAME官网的MAME是命令行程式,没有GUI。
( H% V- V" c. G7 e5 l$ y2 K' u* t; N5 v
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
/ H. f% g  [2 }3 Q6 m  K5 @
6 o, P1 H. m8 ]  Q: C' a3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
. D; P$ S3 R3 C* C- ^7 _4 ~( R* p5 f5 @/ Q8 u
d:回车
. M' y. k2 A, c' K4 N3 z( j) J7 ^8 b0 V. B* z) L( o
cd mame0148b_debug回车  G0 J6 Q; T) m

) Y8 @  Z+ G9 J$ P- A如图1:. M' z- |0 J! I; R* m

4 Z8 z; ~6 f8 G# b% g* Y% [. z; h' K$ H1 W' p8 S2 c. ?* I: h9 q
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:+ S' E3 ^; B) v, h' [# J

! `7 V& P1 _' |/ \
- F# n; g  \$ E& r5 ?1 i; {& x2 P9 u  t
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;8 d# \  h# B/ @* c6 N* f1 ^
  H1 q3 q) }. ~7 p4 F
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
; ]& f! p: e& ?& b5 N* d5 S
% `. u7 M! {; r& L(2)如何呼出/隐藏调试窗口
5 x0 C# H& N6 J7 P1 P0 a+ [& _+ R* [/ E
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
9 x8 V( G2 }2 Z* p8 e" v: ]& i' @- z; B% w4 |$ _* H
) D; S7 r* m# F5 k" V1 s

* }8 }* s0 z+ W2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
" N, S& H. j" g. |: X; o/ x" w6 H5 C4 T" W6 w: y, a1 `
* t0 F0 s, L  G: k6 X# a
7 m9 Y8 P3 B3 {0 L4 ?" i/ M8 g4 |# I
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。2 p5 K! i+ _; n8 ~! L

" ?- J& F& K9 E. ^0 m- B- @. z; l(3)如何下读/写内存监视点以及程式地址断点( l1 X) c4 b" N8 `0 C! }

) O. I; \8 ?' x8 Y先说说如何下读/写内存监视点吧
$ `" q7 T, ^, |- ^$ @* R
/ b$ x% T' e8 p4 t( n, I8 x7 d3 U监视点命令格式:wp <address>,<length>,<type>,<condition>
" u  M. q# n0 ]$ D- C
) v1 j" a& ]9 q# ~* g8 @<address>是地址$ J% f4 O4 `3 a* B  L1 G
0 }1 V' f+ B# U6 [
<length>是数据长度,长度必须用十六进制表示
' @7 X2 g; j! E* k8 F8 u; o+ `; ?+ o1 E2 v' C6 Q6 |& j
<type>是监视点类型,r是读,w是写,rw是读写
' O& D$ B! d+ q/ r) H  V3 J( k5 ], W; k+ s* Q2 z; k- R" n# D
例子:- \( U( Y2 x- w/ V3 p' o) @! y

: \3 u# A# X2 a- q0 {例如对ff8569地址下写监视点,数据长度是1个字节
% W% N2 d$ \& T; o5 q! i) U/ d1 o) N  a2 x$ N
wp ff8569,1,w0 Y6 l0 q4 h. v! F4 t

& a, d( g( t6 H5 _例如对ff2235地址下读监视点,数据长度是2个字节) ]- D; a9 r0 d+ u& S5 o7 b" T8 l
* v, V( g) J5 h9 b
wp ff2235,2,r. B+ }) ^0 q2 ^$ g4 c  [& O8 S
, k/ m3 k; w  S% [3 w
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断0 c/ |3 A: m) t8 o% j. B; C
3 V$ u+ N7 X8 k# k+ w
wp ff7533,1,w,wpdata == 0" D0 s& F$ y1 x. H

- u" D' n6 c  R2 f' `. [, B7 \以龙王战士日版为例:
6 Y3 |. S% r# ~* X( E( t" w+ x3 \$ r: Z
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:/ U. K* g0 M) }6 J, B0 Y0 ]

% j$ r1 g- \' S8 Q& [& D! A( U) Q- t" C1 ?1 `1 J% _8 `8 ^1 K" K
- }, \' K  \% I# Q; W
/ X" K. `+ X* O& [* t2 W
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:0 F& s; T% ^- `- h4 S+ H' J- J6 C

- h9 m5 i, p3 z' Q% f+ B3 U$ [
+ A0 F# D) a6 ~8 D' e/ Y- k: }/ a% ]
接下来说说程式地址断点
: y4 J2 G3 C# @  Z, `! z8 p
5 T, I5 Z6 }" d' m6 }5 ^命令格式:bp <address>* }  v6 O3 R. R" {$ P0 w- ~# J

1 {! t# T$ c+ b8 a+ N例如对000488汇编指令地址下断点
- l  y# F& C  N4 }1 n
. i( i7 z( j9 U. abp 000488- {' r5 _5 ?* m
3 V: L0 G. u& t/ z
当程式执行到000488地址时就自动中断- C, @/ ^; y! K/ T& n1 E7 k
! l0 j, X% B5 U
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
6 k3 V" x6 T) ^- c( b3 Y% `3 l. w0 e# u
有错误请指正。1 b2 {( `6 s% p/ t! f/ T3 ~2 v
( |. A9 b) g$ i. o/ ~0 Y, p' R! ~2 E
补充一些命令:. G; \+ C- b$ U( P3 S4 B- t  Z' e
; O8 f  ]+ d! E. u' E9 L5 N% P( q0 ^+ i
"wpclear" 清除所有监视点5 |* v9 G/ O- Q' p$ O  A+ K
"wpenabld 数字" 开启监视点5 k% @/ u3 I/ |
"wpdisabld 数字" 关闭监视点
  n3 b6 _% ~! G9 ]"wplist" 显示所有监视点" J. J& w2 ?* |
, E2 d6 [9 M5 t& x" ^% a) g
"bpclear" 清除所有断点+ H6 u8 d2 f4 c7 ]8 P2 X
"bpenabld 数字" 开启断点
3 U) _! }% o6 S+ ~" j: @"bpdisabld 数字" 关闭断点- t) @3 `( z: R" q
"bplist" 显示所有断点
6 x( u3 s7 U3 J# @

本帖子中包含更多资源

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

×

评分

3

查看全部评分

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

签到天数: 1548 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 3412 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-24 08:59:28 | 显示全部楼层
我在想为何要搞的调试器这么隐蔽
2 S( ?- O# |  g' K4 `) q4 q
, O& V8 A0 G5 e, y6 T以前这调试器都是直接出来的说
回复

使用道具 举报

签到天数: 1296 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 1972 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2558 天

[LV.Master]伴坛终老

发表于 2013-1-25 16:48:33 | 显示全部楼层
本帖最后由 zsyf 于 2013-1-25 16:55 编辑
- Z; P* c2 b6 K0 z
% j1 E: O. `8 j$ h; R* x太好了,终于有新版MAME的Debug相关的教程了,感谢发布教程。不过还有一点小疑问,还请管理员不吝赐教。2 R, U9 H  g. y0 q) m- Z; c

: u1 \9 f0 Y% K/ C0 Y3 l, z" O其中“我们知道1P生命数地址是FF125D”这句里的FF125D地址,对MAME稍为熟悉一点就知道,MAME0.127以后就取消了内置的作弊码搜索引擎,而且新版本的MAME也不被很久不更新的EmuCheat所支持。因此,想请教的就是,如何才能得到只有新版MAME才支持游戏的相关内存地址?为何用CheatEngine搜索到的临时地址在MAME里下断点却无效呢?是方法不对还是工具不对?还望继续赐教!
回复

使用道具 举报

该用户从未签到

发表于 2013-1-25 17:02:41 | 显示全部楼层
1.新版调试器没内存查看功能?& f' p2 z! y- T3 I8 D
2.就是ls所说的, 没作弊码的情况下如何查询地址
[发帖际遇]: money_114整理箱子竟然翻出了 9 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-25 20:10:50 | 显示全部楼层
本帖最后由 银河漫步 于 2013-1-25 21:08 编辑
: Q1 d$ }( B5 q9 f* G- f
# J* g' }" s3 B) W: Q; }CheatEngine搜到的临时地址当然无法对应MAME的内存地址
) H6 c4 J9 x* z6 \
0 V  Z4 S3 B5 p" @/ |新版MAME没搜索引擎了么?" V. V/ e- J$ d: b
晚上我看看/ D! ]' i+ l2 R

& t& @7 f7 k  _# r/ |  s  VMAME查看地址的功能还是有的- H& ?+ k' T( H( V3 T
菜单里的第一个选项就是显示内存地址
1 ~6 b. j* x: a4 T4 u) T不过确实没有之前的搜索引擎了
[发帖际遇]: 银河漫步扶老大爷过马路,警察叔叔奖励银河漫步 3 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 1972 天

[LV.Master]伴坛终老

 楼主| 发表于 2013-1-25 21:23:40 | 显示全部楼层
回zsyf:
! `3 |9 ^& ?3 N# h( E, P
1.DEBUG版MAME有作弊码查找命令0 d( E6 w( A2 w( s6 o) C

5 M8 F5 I) Z+ b: X, p0 d5 j命令如下:- ^& {9 @$ W7 l0 [8 z
cheatinit [<sign><width><swap>,[<address>,<length>[,<cpu>]]]
( Q: s6 w" f8 p9 q* K+ F9 B2 [" C<sign>是决定数据是有符号还是无符号,s是有符号类型,u是无符号类型
% Z( ]3 U; n0 ?6 A<width>是决定数据宽度,b是8位(单字节),w是16位(双字节),d是32位(4字节),q是64位(8字节)' b) E/ q0 A. A
<swap>是决定字节是否交换
7 j% F5 H1 I" H<address>是地址,地址必须用十六进制表示,例:0x100248; w( y% [6 c3 d: B
<length>是地址长度,长度必须用十六进制表示,例:0xfffff2 P' q$ y; w& Y/ h
<cpu>是决定搜索哪一个CPU空间,0是第一个CPU,1是第二个CPU
  I! \/ ]7 \* _5 R7 y
  ~3 @( L  S1 }& T8 n请打help cheatinit命令获得更加详细说明' P5 L7 N0 w6 G, @

2 X5 ~9 h& t- Q% scheatnext <condition>[,<comparisonvalue>]
+ {7 p" R% @7 r0 Y, \2 B# r. e<condition>是搜索条件,有[eq],[ne],[de或-],[in或+],[deeq] [ineq] [lt] [gt] [ch或~]( ]. M6 r- T& N" [9 H+ ^
[eq]是等于% z- {6 Z/ b2 z4 r* U
[ne]是不等于2 N( m$ Q% A  W" r/ E4 M' R
[de或-]是减少# K: f  f$ n1 |; e
[in或+]是增加
4 f* S8 |6 V8 m+ L[deeq]是减少或等于
6 n6 Y/ f2 b0 i[ineq]是增加或等于, c  I* Y: }  l2 r4 ?  V9 a$ e
[lt]是小于
% x  @  l7 M4 ^7 f. K8 h[gt]是大于1 {! x  E" f/ [/ S$ `' {
[ch或~]是数据有变化
; e- n6 m3 y% E$ C' y/ S' P  Y4 m0 ?/ n
<comparisonvalue>
- Q8 `6 S  C6 q& |要搜索的数值
1 K- o' R9 h/ n9 d* K
: `! U7 p+ L: h4 L* @$ m' n' S请打help cheatnext命令获得更加详细说明
% E/ i3 D$ E; H; z. m7 r9 ^) W0 E
; B* {: U6 C* d! O( u! Hcheatnextf <condition>[,<comparisonvalue>]* a* X2 z" U* c
说明同上4 N. q* P9 A5 X  [3 `
" R: X) R" D0 ~
请打help cheatnextf命令获得更加详细说明5 g8 ^6 s! \) a- ?- x2 R
- H! h% A+ g/ H  n8 [4 d( S
cheatlist [<filename>]
" c! z! G8 w: u& a' M( h显示搜索结果,添加文件名的话,就是把搜索结果以基本xml格式输出到文件9 N) d6 z; _: k( ^) a" j& |
1 [+ @+ e% V2 \3 C2 @1 Q9 b% H
请打help cheatlist命令获得更加详细说明7 k) U5 \6 ]' _# S) b: T6 Y
& T# w3 L. r# r" Z& j- i6 ]3 l
第一次查找要先用cheatinit对要搜索的内存范围进行定位并初始化
7 U! k" F  d2 d
$ O- |% C/ d* y+ a/ g之后进行第一次数据搜索时要用cheatnextf命令来摸索
  K! C1 a& [+ _# H; ~  F9 k9 {2 m
# [: q4 a) P: Z到第二次、第N次数据搜索时要用cheatnext命令来搜索- Q5 J/ l8 m5 v* f9 O( T1 ~0 |
# a) N6 \7 y( u6 h! {
举个例子吧:
5 U7 |* V2 ]. E7 `' u: h4 P% Y  ^: n, ?- p3 I( G
以合金弹头X为例:
9 Z/ V/ d4 Y: K  |1 E1 U+ }1P生命数是2
. C# [7 C8 }) I) f# ?/ g' e- U" y5 ]
先用cheatinit命令来对要搜索的内存进行定位并初始化,无符号类型,单字节,内存范围在100000~1fffff,指定搜索第一个CPU的空间
5 j. X7 F1 r5 E: R4 V5 Y( g4 I9 }/ K1 ~2 h6 s/ f, L
命令如下:3 u. L$ W! E3 L  V" P$ q  H
cheatinit ub,0x100000,0xfffff,0
; G1 ]( n( r8 |* I, q0 ~8 W. K* r1 v
再用cheatnextf eq,2命令搜索生命数2
$ b- M% T. S4 `+ g1 P% x! L' x) o, k: h
cheatlist显示搜索结果
$ m! g4 z9 b3 c8 D7 V/ o7 W: ^: [, r/ l% x9 b$ P' A: V
死一命后用cheatnext eq,1搜索生命数1( }5 q. O7 A6 Q  y; y
! h! K) x2 T4 T7 E- Q: o
cheatlist显示搜索结果4 s4 S3 t0 p5 c
.......
- P9 n3 D: v, b; {6 D- H0 f直到搜索结果不能再减少,就点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)调出内存查看窗口来试着对各个地址试修改看看效果
$ E& S; i5 @) A( p: U- t: J: g. U+ D$ O
还有一些命令,例如:cheatrange、cheatundo,因为没机会用或不用,就不说了。
) i$ r/ @% m  q  N) ^  R5 ]4 W7 H
7 S% @) P- }- l没作弊码的话....% P' H6 g3 J! P# j3 W: x$ u

7 _& g, t8 E& h: D  w: \不同的机板CPU,RAM范围大小不一样,干脆用内存查看窗口看看主CPU空间是多大,然后将其全部定位再搜索(这样做一但改错有死机可能)- K! d- e0 F8 h! t2 j- P
% H  d* @) M6 C
或看看硬件资料(有的话,可惜我没有)或MAME源代码里的有无写关于68K RAM起始地址(或其他CPU RAM起始地址)1 f& u: L3 F! I9 W' {

6 l0 R! R) X; Q3 f9 D) g* a2 ?( T2.cheat engine搜索的是PC内存地址,不是游戏机内存地址,拿cheat engine搜索到地址来断点当然是不行* q& E1 C  K) @9 b
; Y9 G. C( _  j* U+ x
要用cheat engine修改或锁定数据并不是不行,要先找到MAME 0.148模拟器基址来定位

1 h) `( y. Z: g8 X. n4 {$ u0 E- D+ w6 r2 G5 p( ~2 l/ z0 R7 d
回114:
9 l' k$ g" u2 S* h7 J
1.Debug版MAME是有内存查看窗口,点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)3 A+ z' _$ s" B; {* m
2.没地址如何查询地址?看上面我给zsyf的回复
. q) X1 N! W2 C$ ?: S1 p: \2 y5 V6 y
; o& V( {& |4 x/ v* ^2 F
打字真累.......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. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2945 天

[LV.Master]伴坛终老

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

使用道具 举报

该用户从未签到

发表于 2014-3-11 00:01:41 | 显示全部楼层
万分感谢{:4_92:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-5 19:15

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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