设为首页收藏本站

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

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

 火.. [复制链接]

签到天数: 1992 天

[LV.Master]伴坛终老

发表于 2013-1-23 22:28:49 | 显示全部楼层 |阅读模式
应人要求,就写写关于MAME DEBUG版用法吧。  l! _5 g, p) Z, L' T- x
5 G! J/ z+ g# A+ y  e- x9 }
(1)如何加载ROM. R* G  H6 f5 A' i

$ m: K  {- m1 q! N先说说如何加载ROM吧
/ [4 }& O) A- ]( \+ T8 Z8 g0 `! m
; ~% P2 }. {5 E& T以MAME 0.148 DEBUG版为例:
6 R) B* Z- O, d. \9 c4 Y5 W
) t$ |* k3 ?) o0 w1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html, i% |4 m3 ^: D9 J; j  [5 I9 P
: s) P) m% M4 E
注:MAME官网的MAME是命令行程式,没有GUI。. a9 [# q" l; Q

# Y& a2 |. [+ Y2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;3 J/ |2 B0 ]) M" P1 A! w' A6 I. |; X

" z0 f4 n( }' x# Y; z3 d- d3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
" J' m9 B! z2 D3 x5 ^7 N/ P0 T! M$ B
d:回车6 i+ m* h3 z, C! k3 |- W8 [5 O* T
( g) ^5 K# [9 ~" d- E2 w+ D" p! P
cd mame0148b_debug回车0 z' X+ Y+ {$ L- Y: @
. X; Z' N! r7 K. \
如图1:# A4 y% T: n& w

5 V6 r3 a3 q6 d$ W
: x1 @" l+ x0 j4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
3 T/ t7 W$ n, F* x" X# B- G
5 F# P; k- f* ^: ?$ y2 ^& i* v
5 ?9 `$ T% O" z
. V. g8 h6 Y# l  f+ L- w5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;( M( b  ]: P& }2 Q$ a

8 h% s+ P7 ^* ^# D0 K& C9 n6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。$ v, b/ |0 W. N( N# i8 a
3 c6 k' x+ l/ ~: j
(2)如何呼出/隐藏调试窗口! U  z" F- [' Q% P$ E6 y4 }' @

- c7 i: p# s1 y3 [1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
" |  ^: I0 N! }$ _, N# T
3 Z- {$ _! W3 r! q; w
. N8 X1 M! \8 e
! n( d1 p. p! ^3 Q2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
1 p+ F, |$ i2 M/ R" q; k$ ~  H( a  ]

: e& l) G8 U2 k- Y: S) |  `4 `  B# E) B! u& u* v
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。9 M5 u) d% C9 B* O9 C$ O" y
3 {1 U( E  ~% N, [
(3)如何下读/写内存监视点以及程式地址断点1 P9 R8 }+ j) w( M/ W. y
2 O+ g. p+ B( s- u) d
先说说如何下读/写内存监视点吧: L# b4 t4 b7 K. T( Z7 n% y
& Y2 |  H2 I9 v! Y1 t
监视点命令格式:wp <address>,<length>,<type>,<condition>6 B: B/ u* a9 I* l, C
7 A4 O- e& z! b$ H  S1 a" e* e
<address>是地址
: f. }6 S  y' K, `% P; B# \' @- j: A! H$ s
<length>是数据长度,长度必须用十六进制表示3 n& w; X8 \0 i  d: z9 A

0 k- h8 P  T7 p<type>是监视点类型,r是读,w是写,rw是读写
1 G) V- t% P# G. ?7 Y2 E9 Q
/ M- G7 C+ h$ A0 r* R4 o例子:. c* G% C6 Q  z) @' k
" E# n( t  R- m0 ^( M1 f
例如对ff8569地址下写监视点,数据长度是1个字节8 i8 u1 e/ ~" Q( X9 I

. @1 w& z& p' r6 t8 j8 Bwp ff8569,1,w
; K& L  ?5 m( g  C9 ?2 n' @- [# y) P, B$ O1 m- E8 `; ?
例如对ff2235地址下读监视点,数据长度是2个字节6 v- J& F- W4 _6 a% b8 }

4 c! @2 I" a. h6 P6 C5 @- mwp ff2235,2,r
; m! a5 L/ x2 Z8 F) j, m+ j
- T0 v- k- \+ J- G6 z( N例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断4 z) m: L! l, u4 O- f, J/ w

6 u' R- i' U4 M* ewp ff7533,1,w,wpdata == 0
' f4 j# q! O4 Z( n9 v3 J: C0 R
+ v' s1 Y0 X2 @% A以龙王战士日版为例:' _' c6 g  e& [( i% h
0 Z; c( ?: i+ {4 q$ ]+ O
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
2 u0 m: I' I* o, U2 F) R1 I# Y, j: ]* H

& d# B  D( M% u) F( I6 k4 X1 n: `: }7 j. v) U

# l3 q& q! }. P# X) i2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:- j" v3 R! Y* K; v9 D- S" v- M1 E
1 r" `* m" U, C; G2 D; P
2 P5 A6 \, i' \' s3 O6 w0 _5 Q
0 \  m5 u% l* ~- Z5 I
接下来说说程式地址断点
  Y& O/ c4 y, ]0 c5 u% K7 A8 x9 t; E2 A6 [9 }4 e
命令格式:bp <address>
6 ?: Y/ d" V2 Y+ j2 m0 L3 C4 w) U6 j) |6 H; f, m$ {
例如对000488汇编指令地址下断点2 [/ K* v) h- x

- B! D: P  L/ x( N" D8 N- rbp 0004888 ?' H$ E. Z8 n, s% ^9 l
, N1 [- c; D- b1 y' z9 O
当程式执行到000488地址时就自动中断& z5 N$ Z- x) d. ?4 y" F* E

3 ^+ j1 J3 D) I' @- h. ^更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看% [- q. v. \+ o7 T" ~
! L: N$ `1 g. y) ]1 @( C: i
有错误请指正。
- _; T( X) [- R0 Z( Y) |$ P4 }$ ?3 s7 z5 A6 v
补充一些命令:
$ t9 S" r5 g7 w& q) h1 C! R
. A6 u3 b0 h% }8 ]: _"wpclear" 清除所有监视点
# q, O3 Z; d; t. X5 x' M1 a8 C"wpenabld 数字" 开启监视点
$ Y6 ?$ Q/ n# e$ p1 \( f# u"wpdisabld 数字" 关闭监视点
4 D0 |% x2 j+ \% Y& o: O4 a"wplist" 显示所有监视点
7 u9 y, B* G( l$ m( e: H. i8 k6 w  l' H& |! n0 H# y6 {
"bpclear" 清除所有断点
% O8 m" T6 F8 t: P4 f"bpenabld 数字" 开启断点
5 p8 j( \: f2 q"bpdisabld 数字" 关闭断点
+ N) _7 q/ F- z"bplist" 显示所有断点4 t9 r, S! z" J; v

本帖子中包含更多资源

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

×

评分

3

查看全部评分

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

签到天数: 1548 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 3432 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-24 08:59:28 | 显示全部楼层
我在想为何要搞的调试器这么隐蔽
/ c& m# k8 c, g9 ?4 {6 P6 Y3 ]! d3 W
以前这调试器都是直接出来的说
回复

使用道具 举报

签到天数: 1296 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 1992 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2561 天

[LV.Master]伴坛终老

发表于 2013-1-25 16:48:33 | 显示全部楼层
本帖最后由 zsyf 于 2013-1-25 16:55 编辑
: ?) t6 O" y9 H5 S: q; |7 s
9 E5 C8 u7 c9 i太好了,终于有新版MAME的Debug相关的教程了,感谢发布教程。不过还有一点小疑问,还请管理员不吝赐教。
7 Y  I; m, _5 }0 n1 {& i% u
+ H. g& t8 C5 ?0 v# a6 U# a其中“我们知道1P生命数地址是FF125D”这句里的FF125D地址,对MAME稍为熟悉一点就知道,MAME0.127以后就取消了内置的作弊码搜索引擎,而且新版本的MAME也不被很久不更新的EmuCheat所支持。因此,想请教的就是,如何才能得到只有新版MAME才支持游戏的相关内存地址?为何用CheatEngine搜索到的临时地址在MAME里下断点却无效呢?是方法不对还是工具不对?还望继续赐教!
回复

使用道具 举报

该用户从未签到

发表于 2013-1-25 17:02:41 | 显示全部楼层
1.新版调试器没内存查看功能?
$ |# @) v# j+ g9 d8 _* A5 F2.就是ls所说的, 没作弊码的情况下如何查询地址
[发帖际遇]: money_114整理箱子竟然翻出了 9 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-25 20:10:50 | 显示全部楼层
本帖最后由 银河漫步 于 2013-1-25 21:08 编辑 $ a# o1 _: d- t0 z2 Z# l1 Y" q

  E) D2 j7 Z# M$ V  FCheatEngine搜到的临时地址当然无法对应MAME的内存地址5 j4 t1 t1 a+ H
( Z6 b$ }0 `& u; |
新版MAME没搜索引擎了么?# N" ^1 K+ W9 c) L
晚上我看看
5 A1 i1 B& _. z5 b: D# e/ I+ g* T* Q- h: ~5 Z
MAME查看地址的功能还是有的
, H# i! {2 O' J2 T菜单里的第一个选项就是显示内存地址
3 x8 }9 c7 x5 q不过确实没有之前的搜索引擎了
[发帖际遇]: 银河漫步扶老大爷过马路,警察叔叔奖励银河漫步 3 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 1992 天

[LV.Master]伴坛终老

 楼主| 发表于 2013-1-25 21:23:40 | 显示全部楼层
回zsyf:
, N/ C, d9 b; _% O& Y
1.DEBUG版MAME有作弊码查找命令
( e: o9 Z( Y& G* @# ?% Z1 }' J  v) n5 [6 d- Q( s( R9 F
命令如下:( V' \  l# O# n6 B8 `# I. V8 z6 m) v+ k
cheatinit [<sign><width><swap>,[<address>,<length>[,<cpu>]]]5 V. d+ F2 X! M7 T* c9 Y
<sign>是决定数据是有符号还是无符号,s是有符号类型,u是无符号类型
# D! x4 R2 E3 K- e0 d$ H7 C( U<width>是决定数据宽度,b是8位(单字节),w是16位(双字节),d是32位(4字节),q是64位(8字节)
6 X7 _4 u, `9 L! d<swap>是决定字节是否交换6 I, p) h4 P8 Y; w; i, w$ R
<address>是地址,地址必须用十六进制表示,例:0x100248
9 T3 O5 I% c( B5 b$ ]<length>是地址长度,长度必须用十六进制表示,例:0xfffff6 n, `' v. w1 I" w9 Z+ ?" N' X
<cpu>是决定搜索哪一个CPU空间,0是第一个CPU,1是第二个CPU
7 q& S. o2 K  f* C) n7 J! c& h) n( d6 {, e
请打help cheatinit命令获得更加详细说明) a, o- p7 V" h; @" B
+ x- r: T; I+ Z
cheatnext <condition>[,<comparisonvalue>]4 z) v# h) I: r# ^
<condition>是搜索条件,有[eq],[ne],[de或-],[in或+],[deeq] [ineq] [lt] [gt] [ch或~]
; B' P3 O% X! C+ B' o" V[eq]是等于
! v$ j7 W8 C, S7 x5 f; Z. f( j5 p[ne]是不等于
' j# g, N1 w# s2 f  I[de或-]是减少3 w9 x: k4 U9 l* _! E* e, t
[in或+]是增加
; v& F% c& M# f[deeq]是减少或等于! Z! e- k6 l( p- h% P* a
[ineq]是增加或等于9 Y: X+ q% s: T$ ^1 w% X
[lt]是小于. g& v* v$ s% O3 i
[gt]是大于; f: U' B9 E: |' a: L7 L* ?
[ch或~]是数据有变化
5 \: a4 e- @) Q  j4 X( Z, r7 {0 q7 t
<comparisonvalue>3 \) s1 T: p& ]3 O. C3 H
要搜索的数值
" P; B$ y5 Y; F' @5 l, `9 G4 H8 U, F- j- _
请打help cheatnext命令获得更加详细说明! l5 o) \& i, Y) Z( f  F1 `1 ~

2 F/ d, c4 ]6 N4 }8 echeatnextf <condition>[,<comparisonvalue>]7 K" }" O$ J# Z/ g% O& ~
说明同上
6 ~, u( l* ~/ C7 |; z! z9 L. ?$ x3 w/ k
请打help cheatnextf命令获得更加详细说明
, U2 w4 i; o# X( o. `% e1 x8 y1 `" Q6 \
cheatlist [<filename>]! M8 U6 y- g0 x6 F8 r3 `
显示搜索结果,添加文件名的话,就是把搜索结果以基本xml格式输出到文件: V( U1 R% \5 ~0 j7 v; o# u  C
4 Z+ s! {! Q+ j( u$ f) w  ]
请打help cheatlist命令获得更加详细说明- \; q4 J9 B& E
9 S: c& `" R1 T% L; K7 L
第一次查找要先用cheatinit对要搜索的内存范围进行定位并初始化1 J1 e: ]4 O- y, Y2 p1 e
) Y& r0 ~4 U: O. O
之后进行第一次数据搜索时要用cheatnextf命令来摸索8 \1 v& M- ?! l, l( Q) V5 F" U

7 q3 U0 l* y: k3 R- q到第二次、第N次数据搜索时要用cheatnext命令来搜索. @6 w# a/ ?$ c! }0 O

1 E7 l, m6 E  V& H0 s% k举个例子吧:, a: |& E* ~3 \# M9 b
' F5 i5 s) [" O. A
以合金弹头X为例:) p+ T% W* Y5 Q3 {# z
1P生命数是2
. Y6 P9 j' S" I1 d: Z' Q) O6 r$ d. D/ T6 A$ l
先用cheatinit命令来对要搜索的内存进行定位并初始化,无符号类型,单字节,内存范围在100000~1fffff,指定搜索第一个CPU的空间! t, ?! V1 o# ]
1 a7 ?: B" m8 y: P. }
命令如下:
3 O4 G" q; e) M3 dcheatinit ub,0x100000,0xfffff,06 W0 O/ d  l5 `  X

- d0 @2 d$ K- V9 ^$ w( ^再用cheatnextf eq,2命令搜索生命数2
, B$ u  _  h' ?
& X8 w8 `* c& w2 x0 O* ]cheatlist显示搜索结果
% e% B! ~1 Y3 A5 n/ l) b% W( c9 D! I" G5 s0 w
死一命后用cheatnext eq,1搜索生命数1
; v9 @% t/ B& M7 Q+ U- h/ Q( T; ^2 [# N
cheatlist显示搜索结果
, T4 A* R8 H9 V- Y5 L.......* j. s8 ~+ r. p! @
直到搜索结果不能再减少,就点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)调出内存查看窗口来试着对各个地址试修改看看效果0 }& B" C. h1 P
$ k. I: Y/ f1 _
还有一些命令,例如:cheatrange、cheatundo,因为没机会用或不用,就不说了。; W/ A3 Z1 J7 N8 c, G

, ^+ l, F% D: J& Z没作弊码的话....! ^" |4 Z2 r. Q' k

5 O$ J- Z) ?) ]0 s. O1 g7 w% E7 p( r不同的机板CPU,RAM范围大小不一样,干脆用内存查看窗口看看主CPU空间是多大,然后将其全部定位再搜索(这样做一但改错有死机可能)3 A6 J+ u: T2 a1 ~3 U% ?* e
; X& ]8 u: [, Q" t% T
或看看硬件资料(有的话,可惜我没有)或MAME源代码里的有无写关于68K RAM起始地址(或其他CPU RAM起始地址)' a( i0 y) x* S4 h& X
( R( p7 ?4 p+ C6 U$ u1 s
2.cheat engine搜索的是PC内存地址,不是游戏机内存地址,拿cheat engine搜索到地址来断点当然是不行
9 L* j8 i; D$ s" |' n: `% J6 R! q% d0 _$ z% C7 }- X+ I5 u" A
要用cheat engine修改或锁定数据并不是不行,要先找到MAME 0.148模拟器基址来定位

; c9 i! q7 A- l4 u# v# d9 d
2 x/ e# {) v$ Q7 q! C+ z1 {2 n# h8 }! O回114:
  ]* A) n& A7 _0 W5 s
1.Debug版MAME是有内存查看窗口,点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)
; X" t3 o- c/ n3 M$ K# C9 m* d2.没地址如何查询地址?看上面我给zsyf的回复

7 _$ L5 L8 M+ a4 g: Q" u, B3 ~2 ?3 d( w. r/ r
打字真累.......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. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2964 天

[LV.Master]伴坛终老

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-25 23:02

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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