设为首页收藏本站

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

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

 火.. [复制链接]

签到天数: 1975 天

[LV.Master]伴坛终老

发表于 2013-1-23 22:28:49 | 显示全部楼层 |阅读模式
应人要求,就写写关于MAME DEBUG版用法吧。' n3 q' Q' c' T: c
: S6 U6 c* h1 @2 C% t' d* g1 K
(1)如何加载ROM& {% \# Z/ S7 e8 _$ b8 S& L

5 f" h; @0 z( i先说说如何加载ROM吧" s; f3 {. {- z6 G
3 ?3 O4 y/ j; |/ Z. \/ S2 @# L
以MAME 0.148 DEBUG版为例:# _+ h1 j6 Y( k+ n! Q- ]

# a0 _& i8 a! t- m& w1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html2 C) l6 p( k3 e  q

: }1 X" D* l5 L注:MAME官网的MAME是命令行程式,没有GUI。) w6 Z/ C8 A, f# u9 a# \" [# b. f
5 Y+ \! C* a7 N' T# e+ f
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
  A# W, \: h# ~; \' |, {
' t; Q; F+ I. A2 k5 u+ }& L- V9 ?0 j( W3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
! L  L/ Y2 K; ?* v9 `, O# d" b- C# C2 u. A- P
d:回车
/ c+ K# ]$ S' u# y2 o0 B4 p" P, L7 l* i4 `
cd mame0148b_debug回车
3 j6 _; T2 {, |0 K4 L7 p: S3 @* a% _
如图1:
4 D" c8 Y! b; [" |( `. Y3 _
7 [2 t4 h( y! B1 @. i6 ?6 W1 p5 i
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:# x- D# H$ J0 X# f# l
5 \  K2 Y3 \6 l4 }' M# s

0 p& W! I3 s: @. Z* a" w
5 R3 p" g7 o4 B% }4 `5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
; O6 ~: a  v' k. o9 z
+ Z* I' G4 _' o, Y5 K6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
, i/ ?& I5 d* l6 F% H% e4 y3 |4 z! N
/ M  R6 E' @8 B! ~(2)如何呼出/隐藏调试窗口/ o; |$ S/ C: r- j, \6 U6 |
# U2 \2 N6 O# q2 N3 k' O5 r  I7 ?
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:( Y5 j5 S# @5 c9 m& h8 x$ B/ A# V& F/ x
, C- y# I+ |* `+ w- D
4 B  B* w4 @& e+ Y

* e) Q4 M; q% w/ s2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
4 k6 j6 g$ Z  q6 x; ?9 W2 |
0 t- [8 G" U# E' J! L
5 M: \# v% e! y" r
  z( `4 n" K2 p4 \) D% q! u3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。/ `- d. l, B( ~( g) _( I4 g
& X6 f9 `% c& k  C+ J7 _. R
(3)如何下读/写内存监视点以及程式地址断点
& b9 J7 Z! M4 V( [7 V  O
; w/ B7 E5 q' w( U) J9 v先说说如何下读/写内存监视点吧
+ f5 ^; \& y, N' \5 |
- M" ~$ u( {8 X! Z监视点命令格式:wp <address>,<length>,<type>,<condition>* q$ J8 C" p! o) n

+ N$ Y* j' P% d( r+ {<address>是地址' F6 a$ Z! w$ Q
7 r7 E# ^, a  i' V
<length>是数据长度,长度必须用十六进制表示$ Q7 B& _' |6 ]" {
- j9 B* _1 A0 I, ^1 ~: k
<type>是监视点类型,r是读,w是写,rw是读写
6 _8 s( U+ u/ o  M( u# v4 E
  j7 w; x8 f; C4 `/ N例子:' Q1 i# |7 I/ G2 w) L/ I) e% U
# S+ a( t7 A7 Q6 l8 J- Y# Q8 {
例如对ff8569地址下写监视点,数据长度是1个字节* P7 S% p- h# h9 D  s- o

. Q3 P  ]" T( ~+ ~0 v$ o: |wp ff8569,1,w, `0 V- r+ `5 ]8 X2 Q

! f  ?! w/ H  ~2 ^: X- [& U/ g# o) B例如对ff2235地址下读监视点,数据长度是2个字节8 S% c3 r# P8 S  l
) q: {1 @: |4 Y6 u# j. s
wp ff2235,2,r6 u( U. S' F. Y3 c. U  L. T  U

4 L0 H% a0 W+ \! p+ Q  w" @; Y例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
& V3 B! c1 d: f
# F& Z0 h  D5 W' L( E& W, ywp ff7533,1,w,wpdata == 06 u( x  z) f$ J

2 }' g" k% F% b/ N/ Q! K1 V! l& ]& ]以龙王战士日版为例:
( C: M4 J% i5 {
: j' L' V5 {, @( u( i1 j- C# C1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
2 J! P' E3 d3 \" A* M9 s
2 ?: u0 L, @* J& \1 [1 {, Z2 m6 h# I- B$ x! e
5 V- L% \0 |5 d0 K" A
# H/ p3 d: B! J
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
( i3 K- s. w- X% ~
. d- j, A9 {: _; n- S- W, b' ^  x5 t1 }" s/ b& v/ Q) q
# e7 N8 E4 ]# ^/ A1 m3 _3 z
接下来说说程式地址断点
$ u6 ~4 l$ f! J5 f' W$ y7 V0 i3 m7 ^% q
命令格式:bp <address>
+ q: Q+ x% Z# ~3 T# V8 q2 k0 g7 j' C* M
例如对000488汇编指令地址下断点, N# K* Z' m+ M" s

; K/ |' X% W6 N5 i: ebp 000488
& _+ _( G; `0 K% ~2 F% p
  h8 {5 v' `0 n% B! h' C. x当程式执行到000488地址时就自动中断& o6 F( N# B" e0 y4 f

8 @* @0 ]0 K  j8 h; |更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看' X$ u$ c7 s3 f3 C: n
. |7 e% S9 m7 @$ P1 o
有错误请指正。/ F9 p$ w8 k( T0 P. L, M* y& D. X& g! R

5 d" J: `) T- c补充一些命令:
1 a) r3 Z: |" l4 q% t, `
/ z5 z! I& \0 _0 |; I"wpclear" 清除所有监视点
; o# @! W/ ]* k"wpenabld 数字" 开启监视点
/ R+ W* \5 R$ N  `4 U+ ^"wpdisabld 数字" 关闭监视点/ \+ ^: u  f' L/ ]) h
"wplist" 显示所有监视点
/ O! c1 m4 }; [( y2 [& L
* N' d$ M4 B/ G: Y6 f- z2 A9 K"bpclear" 清除所有断点
1 b6 s  a- {# v6 Q2 N0 M"bpenabld 数字" 开启断点
9 S1 [7 P9 C9 {+ F; x"bpdisabld 数字" 关闭断点/ C/ i* }& \% N3 p
"bplist" 显示所有断点7 C. W5 m' p6 ]

本帖子中包含更多资源

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

×

评分

3

查看全部评分

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

签到天数: 1548 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 3415 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-24 08:59:28 | 显示全部楼层
我在想为何要搞的调试器这么隐蔽
  M$ b  J! G& P0 ?% h3 q5 r; g7 H/ }: q$ n
以前这调试器都是直接出来的说
回复

使用道具 举报

签到天数: 1296 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 1975 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2558 天

[LV.Master]伴坛终老

发表于 2013-1-25 16:48:33 | 显示全部楼层
本帖最后由 zsyf 于 2013-1-25 16:55 编辑
+ s7 n0 }, }- M6 l$ i! s0 j) a( B
# u1 H% y+ E5 \4 X太好了,终于有新版MAME的Debug相关的教程了,感谢发布教程。不过还有一点小疑问,还请管理员不吝赐教。# e9 e" B1 s" O2 N7 Y; C
. G# ?  ]8 j' v1 b6 Q
其中“我们知道1P生命数地址是FF125D”这句里的FF125D地址,对MAME稍为熟悉一点就知道,MAME0.127以后就取消了内置的作弊码搜索引擎,而且新版本的MAME也不被很久不更新的EmuCheat所支持。因此,想请教的就是,如何才能得到只有新版MAME才支持游戏的相关内存地址?为何用CheatEngine搜索到的临时地址在MAME里下断点却无效呢?是方法不对还是工具不对?还望继续赐教!
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-25 20:10:50 | 显示全部楼层
本帖最后由 银河漫步 于 2013-1-25 21:08 编辑 - W& A6 J% V+ a& y, s" B

& D9 H# M& P, u4 HCheatEngine搜到的临时地址当然无法对应MAME的内存地址
9 A- `) E3 I4 C4 B. y/ d) A5 |" b' [) O/ J" B1 K. ~# v( E
新版MAME没搜索引擎了么?
/ i/ \% u5 v$ R8 x2 t4 t8 |晚上我看看
; K5 ^  u) v" x0 V
4 e# h: \) N1 ?MAME查看地址的功能还是有的" U4 s, i3 x6 D' X* s' z- H
菜单里的第一个选项就是显示内存地址
7 D. U! K4 [) ~+ u4 f不过确实没有之前的搜索引擎了
[发帖际遇]: 银河漫步扶老大爷过马路,警察叔叔奖励银河漫步 3 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 1975 天

[LV.Master]伴坛终老

 楼主| 发表于 2013-1-25 21:23:40 | 显示全部楼层
回zsyf:
* x9 ]0 U+ T& `; Z
1.DEBUG版MAME有作弊码查找命令
( M5 |5 u; W# u0 U
) _8 {0 O) ~) N命令如下:
2 g2 K  \* O& {  Ncheatinit [<sign><width><swap>,[<address>,<length>[,<cpu>]]]6 y# V$ ?' e2 q
<sign>是决定数据是有符号还是无符号,s是有符号类型,u是无符号类型
. D7 d3 Y4 G3 x8 W<width>是决定数据宽度,b是8位(单字节),w是16位(双字节),d是32位(4字节),q是64位(8字节)' G" j- k- J4 ]: T  o! A
<swap>是决定字节是否交换; w& t  g3 ^. k7 Q: g
<address>是地址,地址必须用十六进制表示,例:0x100248) b( z. K+ C6 ^8 w
<length>是地址长度,长度必须用十六进制表示,例:0xfffff
" Q$ a6 p1 W2 S0 o<cpu>是决定搜索哪一个CPU空间,0是第一个CPU,1是第二个CPU  {2 [7 W% I1 }
) C$ N- l* {0 v/ T6 k, t
请打help cheatinit命令获得更加详细说明
# e2 u" [: t  v1 Q8 L9 x( i
3 r. j! w( C4 @- c1 \( w9 l! ^: Jcheatnext <condition>[,<comparisonvalue>]
; }2 _; l' l7 q+ A" v& B<condition>是搜索条件,有[eq],[ne],[de或-],[in或+],[deeq] [ineq] [lt] [gt] [ch或~]
& h' b& n- O4 {$ I8 V* m[eq]是等于
9 x9 |3 H2 o6 u1 f: e1 c[ne]是不等于
# B+ \& L! F$ G: b[de或-]是减少8 S4 U7 i) i0 {3 S* N* G  I; `
[in或+]是增加
4 e) B) u8 d; b: U& {[deeq]是减少或等于0 E  C* O  Y! @/ i0 T; l
[ineq]是增加或等于  l2 H6 G1 |) V  s2 W
[lt]是小于
% ~  J6 ?  @, a( }[gt]是大于" i, j: Z4 s* e- \7 J5 i
[ch或~]是数据有变化
+ I# H+ ~4 j8 w' H/ b& r$ n3 g" p5 |, g6 O# M' l
<comparisonvalue>5 X0 K! o6 y8 j6 }8 @, d  J
要搜索的数值; E4 V+ _% o" w# {3 d& ]6 l9 |
; A5 S: }& x# A* o
请打help cheatnext命令获得更加详细说明# H+ M& P/ D. z5 d1 k, a& U3 c

3 q2 b  v2 ^+ U" `. m  Gcheatnextf <condition>[,<comparisonvalue>]
# K' X' R. a, F3 \) S' {说明同上
# g$ p' }- N& `0 k  s+ Z" p5 @& j: Q, u$ t: o+ a( a3 s5 `
请打help cheatnextf命令获得更加详细说明
6 M2 ^* |9 o2 m  c4 \7 C0 m8 k3 I: c9 S3 @9 c4 K
cheatlist [<filename>]
5 y0 S$ |, T4 j1 ?显示搜索结果,添加文件名的话,就是把搜索结果以基本xml格式输出到文件
  x/ M7 D8 w* B3 \% W4 t* H* f5 H9 Y, V! l
请打help cheatlist命令获得更加详细说明
; f  w3 q* V# c- b
& ^# f6 C0 q4 u第一次查找要先用cheatinit对要搜索的内存范围进行定位并初始化) b* n7 k& h: C9 y, _, K
" K4 m2 z& T# [7 a9 J
之后进行第一次数据搜索时要用cheatnextf命令来摸索
5 J" F; B8 j) j7 }( J7 a7 q( y9 [! _9 k0 C/ U5 n  m+ I
到第二次、第N次数据搜索时要用cheatnext命令来搜索' Q9 S' t5 F5 f1 \

- w" P9 M8 d$ |举个例子吧:
* \3 C( r$ u! V
2 a3 [# Q6 Y$ k, e0 V5 l以合金弹头X为例:
3 I6 c* r4 k, c# h1 u* u( B1P生命数是2; e8 r5 c) W* b! i5 r- ~

2 I0 j& B3 p! J4 n! F% r先用cheatinit命令来对要搜索的内存进行定位并初始化,无符号类型,单字节,内存范围在100000~1fffff,指定搜索第一个CPU的空间
7 w! f8 l* F# z5 y+ y( ^! m# Q) q! E, W  F! F% @4 b! Q
命令如下:6 B* Q& Q8 D4 e+ e) V: v
cheatinit ub,0x100000,0xfffff,0
5 Q. C% M" |5 i& z1 [
- H) D4 @; H0 |/ t: U* a* r+ U再用cheatnextf eq,2命令搜索生命数2( ~" n/ W7 s6 I

! |/ C6 s$ M8 o; v9 ?cheatlist显示搜索结果% ^- \' C8 Q7 O6 H4 {
1 t, f" F& @% @5 G( \
死一命后用cheatnext eq,1搜索生命数1
  o8 O0 ~7 O# K+ L' e- ]  M! Q# r4 f6 [7 w0 s$ w/ G3 b$ n
cheatlist显示搜索结果, Z8 X3 _! {& c- T
.......) m# L* m2 |( s& j3 U' X
直到搜索结果不能再减少,就点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)调出内存查看窗口来试着对各个地址试修改看看效果$ j! h" ]6 Y; y/ P' h8 L
& m; A; s% T8 C2 r- ^8 D6 B' x
还有一些命令,例如:cheatrange、cheatundo,因为没机会用或不用,就不说了。
; @' @% S2 I; n+ Q' s" g, F+ s# W: F) ^- I# J( g. w3 w% H
没作弊码的话..... k% D% d+ l+ ?4 ?: q

, B7 B, G+ Z, z9 T2 |不同的机板CPU,RAM范围大小不一样,干脆用内存查看窗口看看主CPU空间是多大,然后将其全部定位再搜索(这样做一但改错有死机可能)3 R) M5 i  o8 @* ?3 h

. E( n/ P$ r- x% i; \/ W2 s- I6 J7 C或看看硬件资料(有的话,可惜我没有)或MAME源代码里的有无写关于68K RAM起始地址(或其他CPU RAM起始地址)2 i% {; r; ^% j1 A

. z: K1 O) S8 |5 X* U) _& T2.cheat engine搜索的是PC内存地址,不是游戏机内存地址,拿cheat engine搜索到地址来断点当然是不行
  O9 o- @; A" \/ B0 }
2 W+ l5 Q/ I& ~  ~, w5 j要用cheat engine修改或锁定数据并不是不行,要先找到MAME 0.148模拟器基址来定位
1 D7 c. H2 X( v0 J% O

* g- ]9 u- Z) X. m9 k% V0 N回114:
5 N; I" V8 G  x/ T" U; @
1.Debug版MAME是有内存查看窗口,点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)! W- u0 G$ H" {7 |8 D: P
2.没地址如何查询地址?看上面我给zsyf的回复

  c& W/ A& k: w1 n+ _" K9 h! V7 h* ~) V2 d: W0 ~
打字真累.......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. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2948 天

[LV.Master]伴坛终老

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 16:24

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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