设为首页收藏本站

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

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

 火.. [复制链接]

签到天数: 2012 天

[LV.Master]伴坛终老

发表于 2013-1-23 22:28:49 | 显示全部楼层 |阅读模式
应人要求,就写写关于MAME DEBUG版用法吧。
" t9 ^  K+ D% I. w" [; |& q9 C+ Z7 `) z
(1)如何加载ROM
5 k3 N8 h4 n7 `- A. p/ H( T7 N% q
先说说如何加载ROM吧
2 F8 T6 B" |/ R7 C
; {3 u6 C* L' r% g4 _: c1 s以MAME 0.148 DEBUG版为例:) T$ ^; V1 t9 w

4 i- J4 a# d1 w' L. u# b1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
' j% F8 G& s, R) M# y7 e( ~* k$ x0 W
注:MAME官网的MAME是命令行程式,没有GUI。
1 F! f: y$ E& a* }1 F
4 F% `! _+ o7 q# b! A8 I* ]2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;: h9 v8 h9 k/ ]9 g5 j2 V# N+ x$ g% b: e

0 _% t& a/ D8 m/ i2 E* u! g4 @3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
: R+ m& \  h3 [( d7 `2 c# u! E8 S! L, u0 n6 @% d9 l1 h9 o
d:回车
* x# C! a; I+ `; J$ \
0 r* o% w1 ?8 Q* h7 E- E" G/ Ycd mame0148b_debug回车& v1 D  a& M3 e  k) j0 S) P# Y; x& @
/ b" ?: `1 D) L+ }
如图1:/ |% A  S! e$ R( ~1 n) ~& b

4 v3 m5 K5 _. ~& c# b& e' Z! H: @! R: M0 P; w: n2 Y5 a. p9 [% K
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:- s: p" m, \7 f; Q

8 z0 F6 Q3 p& ?% T1 n( x1 L' F: W" ^( @9 B  z- D) W% t

( W3 V6 G) g) _3 S0 D  `% P5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;; O5 V+ P  ?1 }( N- B* p; V
- J2 `8 F& m5 q+ v6 t
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。5 ?+ H  t9 R" K, b5 A. p
& p+ \! a: z# l
(2)如何呼出/隐藏调试窗口" F# U4 f$ T2 S, q! n# {2 w
. k2 E8 U: f* M& x' e2 M5 T
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:4 f# c# _- T0 [

6 c4 @9 p# X4 m6 \3 z- }
: \, D$ ~' ]% Q+ N- s
/ y$ F' ]6 }3 L7 p+ [) o2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:: i9 W1 `! M" S' ?2 I% l2 `
) w: ?9 ~' C% V! w- n
2 W. w" D' o( X
3 n5 @7 c8 u2 I; t  v  I
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。* M& q( w  W" A/ \; v# s

$ d: |& N: l4 n! c1 y+ r" ?$ s(3)如何下读/写内存监视点以及程式地址断点& _3 D2 x  }0 ~1 _" z0 x
5 o% Y) i) y/ d' D, R
先说说如何下读/写内存监视点吧  i, ^4 q5 X. e  O4 G3 U2 n

; r5 t' f" q9 Y! \, n$ o: b! I监视点命令格式:wp <address>,<length>,<type>,<condition>
6 M$ R+ m8 B0 k( z1 P+ F
, j- C6 a) J7 F3 e- Y% a7 a( ]  c<address>是地址2 Q! v4 J7 Q( n0 j6 t

- g" s3 d* H+ j5 E6 ^<length>是数据长度,长度必须用十六进制表示+ E1 [# Q  A0 c
4 O. r# K$ R, b2 w4 h8 f, W; r
<type>是监视点类型,r是读,w是写,rw是读写
1 N! I* r7 b/ p
/ o2 `1 t+ W6 t* Q: a: O2 q例子:$ n: B& B; E: M; z8 E( k
( L; V7 e" {) H7 O) F7 ]
例如对ff8569地址下写监视点,数据长度是1个字节' ^7 W! @* B& Z' Z9 m5 d

, f+ _' s0 m+ s) [( E5 M) ^( Twp ff8569,1,w+ r0 K0 {& I; `* t" u- R
4 W2 ]# u5 r8 o/ P# f
例如对ff2235地址下读监视点,数据长度是2个字节+ A# b1 c4 F: Y" x3 X
) m" C, N. ^( r/ F' M
wp ff2235,2,r6 X. ?, _# A$ ?( y9 I: U
: s# X8 ^1 G2 p' ?; I4 p
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断9 w& a: M& t0 j, D9 W0 N
4 F+ b, y: H  |3 ]
wp ff7533,1,w,wpdata == 0
0 G; P2 f: U) ~! l1 F0 B2 [9 c+ N
以龙王战士日版为例:- y9 j: M  _0 f# K  z# b2 Z" X
. g( `/ {8 [& i4 Y, J$ E1 i, _2 v+ `% Z
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
* N* s$ ?' u0 ~2 Y" w4 O! \
2 z2 m5 C2 b" g  Y4 ]+ w( g4 t5 k
5 \0 q" s( v( l& y% w/ Y
! z9 }4 [6 p6 Y' O' [, H% X' ]3 `" g+ ^7 j/ c7 |
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
' J5 l; s; K& `
7 @" Y! b7 |6 n% |0 x' W" a: {5 e0 d! v/ U

. m* R* |1 N# Q7 F1 S. R接下来说说程式地址断点) n. w3 S2 B, E+ X6 n1 U: r
3 s+ o% i$ f  u4 c- L
命令格式:bp <address>- K- j( O/ g" W& W$ N

$ ~( \9 j7 z" [- V3 Z$ k例如对000488汇编指令地址下断点+ C5 o9 j2 C# E* O
) R" S2 E7 Y3 n1 Y2 v
bp 000488
( q  [. M8 P! d1 }: f2 y8 B, m) D$ f, p; I% U
当程式执行到000488地址时就自动中断8 J$ [/ f3 T' m& D

7 A0 n! Z" A4 @  L! g# X更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看6 y# l+ \# z, w) b. Y
& Y. G$ k; p; e/ H1 M
有错误请指正。
2 |. D7 L( L1 ^( ]
* E! U- }5 [5 t! D9 Y补充一些命令:
( b) G& `) z: d3 ]' k0 {
' e8 Q! }# p; j* e8 N& f; @- _"wpclear" 清除所有监视点
5 ]: p& a3 P6 u; s"wpenabld 数字" 开启监视点
( ~7 T7 t1 k9 R9 O"wpdisabld 数字" 关闭监视点1 w/ D0 N, a9 a1 M5 I
"wplist" 显示所有监视点6 \1 U' q4 `# G( B' Q
# A+ X- h2 Q  n" A" u3 {4 _
"bpclear" 清除所有断点; N9 v, @" k% l( j! n7 Z9 f2 V# G
"bpenabld 数字" 开启断点& v& t* R0 s* f. X8 u% F+ b
"bpdisabld 数字" 关闭断点
5 {* C! z9 d  t" B. `, \2 A"bplist" 显示所有断点
8 k$ y% P1 B. ?' }/ t$ `

本帖子中包含更多资源

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

×

评分

3

查看全部评分

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

签到天数: 1548 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 3452 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-24 08:59:28 | 显示全部楼层
我在想为何要搞的调试器这么隐蔽
9 V2 p9 h7 q; J8 K* G5 U( b3 O- l8 K/ }8 w' l
以前这调试器都是直接出来的说
回复

使用道具 举报

签到天数: 1296 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 2012 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2564 天

[LV.Master]伴坛终老

发表于 2013-1-25 16:48:33 | 显示全部楼层
本帖最后由 zsyf 于 2013-1-25 16:55 编辑
  `3 o- D$ h: S9 y1 W
, }* z7 N0 i# \+ z" B太好了,终于有新版MAME的Debug相关的教程了,感谢发布教程。不过还有一点小疑问,还请管理员不吝赐教。
! W$ ?" Z) M! r! K0 {6 v* m3 X* Y) _* m; {8 Y; |
其中“我们知道1P生命数地址是FF125D”这句里的FF125D地址,对MAME稍为熟悉一点就知道,MAME0.127以后就取消了内置的作弊码搜索引擎,而且新版本的MAME也不被很久不更新的EmuCheat所支持。因此,想请教的就是,如何才能得到只有新版MAME才支持游戏的相关内存地址?为何用CheatEngine搜索到的临时地址在MAME里下断点却无效呢?是方法不对还是工具不对?还望继续赐教!
回复

使用道具 举报

该用户从未签到

发表于 2013-1-25 17:02:41 | 显示全部楼层
1.新版调试器没内存查看功能?( H4 P1 b4 C$ ~3 D5 K. ?
2.就是ls所说的, 没作弊码的情况下如何查询地址
[发帖际遇]: money_114整理箱子竟然翻出了 9 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-25 20:10:50 | 显示全部楼层
本帖最后由 银河漫步 于 2013-1-25 21:08 编辑
  @0 C* B! R( K# y( R) _* W
  _' |9 c0 @4 h; V! [2 s5 h: ^2 `CheatEngine搜到的临时地址当然无法对应MAME的内存地址& i3 P# y+ n, H
5 Q( h; x, F0 e- S( R+ d
新版MAME没搜索引擎了么?% j* X) S+ ~4 A9 Z8 b4 a' e0 n2 g: G
晚上我看看: G+ U, A9 q  _7 ?( ?

4 \% k; ~. D1 P' L7 l4 MMAME查看地址的功能还是有的
" v: S2 S4 d8 Z" z  q; Q菜单里的第一个选项就是显示内存地址- q4 k0 I* ]2 Q) z
不过确实没有之前的搜索引擎了
[发帖际遇]: 银河漫步扶老大爷过马路,警察叔叔奖励银河漫步 3 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2012 天

[LV.Master]伴坛终老

 楼主| 发表于 2013-1-25 21:23:40 | 显示全部楼层
回zsyf:7 ^+ L; O* G) E, N
1.DEBUG版MAME有作弊码查找命令
' B- w: d& a* k2 p/ G8 Z! N/ e* z7 h% r" t' J, J; H5 N
命令如下:
9 d+ ]) G$ r! u0 |3 rcheatinit [<sign><width><swap>,[<address>,<length>[,<cpu>]]]
1 D* }0 b5 H( E$ m, N: w4 U- h<sign>是决定数据是有符号还是无符号,s是有符号类型,u是无符号类型" O7 f/ h6 }4 z( h9 F
<width>是决定数据宽度,b是8位(单字节),w是16位(双字节),d是32位(4字节),q是64位(8字节)
9 z" ?6 `+ l1 C7 y9 c8 a" V! `<swap>是决定字节是否交换2 a5 T4 U: U: o) A8 ~
<address>是地址,地址必须用十六进制表示,例:0x1002486 P* b" u1 e' ^' a: @* w5 B
<length>是地址长度,长度必须用十六进制表示,例:0xfffff
# T8 w% ^% _  l% o# e$ O6 G<cpu>是决定搜索哪一个CPU空间,0是第一个CPU,1是第二个CPU
& Y3 C( N3 d1 V8 I  m. s
5 O5 _& C3 E# l, B4 k0 |请打help cheatinit命令获得更加详细说明) j. R% g/ J2 I
- N; j7 A6 T% P
cheatnext <condition>[,<comparisonvalue>]
& ~4 m+ @0 F( h; Y* G" x$ E<condition>是搜索条件,有[eq],[ne],[de或-],[in或+],[deeq] [ineq] [lt] [gt] [ch或~]# n/ s! H. I, J) R7 G. P& j
[eq]是等于
/ Y8 z4 X: s) w$ s[ne]是不等于
: @) t' ~2 j. n$ a. R[de或-]是减少$ Y5 C' o3 I: s; N& G" d0 p% @/ ]
[in或+]是增加# ~! }, R( d$ X" A
[deeq]是减少或等于! M; r$ Y# i$ b
[ineq]是增加或等于
7 F2 ~. D/ E$ R- m- p[lt]是小于
) ]/ j' H: p8 z0 y, G; W/ R8 h[gt]是大于2 y( q; m7 o7 X/ I0 E' X4 \3 |
[ch或~]是数据有变化+ K1 J* f* m1 d5 h6 F$ ]1 u

& i. [' |# [4 i7 \<comparisonvalue>
: p4 r- u" B7 O8 B要搜索的数值1 S3 |4 Q: b" Q" }# @

8 L2 a* v3 o& K3 h* b请打help cheatnext命令获得更加详细说明
3 ~6 b3 a* l9 ]- B) z8 m* ?' H6 f" K1 c! g0 v
cheatnextf <condition>[,<comparisonvalue>]9 c7 v% T) X+ t0 ]8 {
说明同上
7 s  E5 c% D  T& C$ k( F) b
$ K3 N* k! R+ Q5 _% o请打help cheatnextf命令获得更加详细说明5 g1 l  e7 l: G$ ~. G! F

, f$ f: E; g% O+ ]9 ]cheatlist [<filename>]9 ~  r$ d3 q6 E6 D0 O3 x% r, u  H
显示搜索结果,添加文件名的话,就是把搜索结果以基本xml格式输出到文件
$ h9 {: r- r2 l1 p! z5 ?
1 X+ T6 j+ \& b( u0 w$ N( \请打help cheatlist命令获得更加详细说明
% B9 N( \9 z+ f" |/ [0 M& q8 I( |6 ~- B8 t$ e% Z; m3 X
第一次查找要先用cheatinit对要搜索的内存范围进行定位并初始化
# o' I$ A% h4 J" |
# C9 y8 u; ^) I! D: D/ [之后进行第一次数据搜索时要用cheatnextf命令来摸索. T+ `( `6 ]( h9 {9 g6 G
  `& S1 P# e2 c$ f$ w
到第二次、第N次数据搜索时要用cheatnext命令来搜索8 m: H& c( J) G- A1 P' x

% ~* z  Q. Z  i4 P0 y9 A举个例子吧:& _* L9 E! ^6 b+ l; q' m# B
" o3 D- F$ _; J, B
以合金弹头X为例:
& M* h2 L) l& W; y) d# F1P生命数是2
( K+ ^0 z  ?' T* {/ g) T( k6 f; h: V$ c. f# \1 w1 H
先用cheatinit命令来对要搜索的内存进行定位并初始化,无符号类型,单字节,内存范围在100000~1fffff,指定搜索第一个CPU的空间5 M# ]: v5 b9 n6 k$ X8 e, `0 K# w
' x7 t3 M/ C. D. N$ x7 t
命令如下:
+ H. D5 e$ a4 J, T" [cheatinit ub,0x100000,0xfffff,0
3 V- H+ [9 M1 r, N! j% C+ H& B5 D. }9 h& e3 g* c  v
再用cheatnextf eq,2命令搜索生命数2$ v, |2 y/ S4 s1 R

+ h7 X& Y4 H5 ^( {cheatlist显示搜索结果" b: Q! ?  |! P
. Z4 Z9 S8 d) c1 b$ U
死一命后用cheatnext eq,1搜索生命数1% [5 _4 Y1 k: _) m

2 p) P  v4 K! T* Wcheatlist显示搜索结果" i8 Q* w, T1 v3 V+ [
.......* S9 t+ v& h; T7 D: c  Q% q0 p
直到搜索结果不能再减少,就点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)调出内存查看窗口来试着对各个地址试修改看看效果/ A. W( ?' [9 r5 a7 g/ |/ {
) h2 ?# E# v9 O' n
还有一些命令,例如:cheatrange、cheatundo,因为没机会用或不用,就不说了。
  P7 y* y/ ?+ u; ~7 ^+ C3 M, I* A/ i5 Q. ^7 w! W2 e
没作弊码的话....; j9 V6 x6 k' c) k
) Q: R" e* `8 j. u$ e3 v' Q
不同的机板CPU,RAM范围大小不一样,干脆用内存查看窗口看看主CPU空间是多大,然后将其全部定位再搜索(这样做一但改错有死机可能)
. R( v* d" [/ `9 [$ i6 L0 k
5 ]  ~' H/ [& y! D5 U或看看硬件资料(有的话,可惜我没有)或MAME源代码里的有无写关于68K RAM起始地址(或其他CPU RAM起始地址)
- U2 S+ j: |( q3 \* w% V2 w# n( {2 F' H7 p. f1 ]5 x$ r
2.cheat engine搜索的是PC内存地址,不是游戏机内存地址,拿cheat engine搜索到地址来断点当然是不行
9 D8 b  k, h/ E. P- V8 V3 I. v( [, G: u* U) o2 ]& q
要用cheat engine修改或锁定数据并不是不行,要先找到MAME 0.148模拟器基址来定位
  c# {* {9 z5 D" c  H

. ]# n/ s) f& e& u+ m% o0 R( a2 t回114:
# |3 [! ~. w! P* O5 P, ]
1.Debug版MAME是有内存查看窗口,点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)
9 C- n% ~7 _% R  T: ~2.没地址如何查询地址?看上面我给zsyf的回复
9 `7 ?$ j# B) E' |& B
9 i0 D$ v2 E' ^4 n5 d9 g9 h
打字真累.......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. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2984 天

[LV.Master]伴坛终老

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-16 02:31

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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