设为首页收藏本站

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

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

 火.. [复制链接]

签到天数: 2032 天

[LV.Master]伴坛终老

发表于 2013-1-23 22:28:49 | 显示全部楼层 |阅读模式
应人要求,就写写关于MAME DEBUG版用法吧。; p6 s: l9 V" d2 N
7 A; O4 I# d5 K* a
(1)如何加载ROM) Z3 x( D, L: k3 N1 g
. T- X7 \2 [5 S! C& B# a! J9 @
先说说如何加载ROM吧
& H- B* `6 h' B7 k; A
) F& {' `7 [9 w9 Y/ p' A以MAME 0.148 DEBUG版为例:2 z* U' {0 @% h

+ U- m  b# d! {; S* O+ m! v; E' i1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html8 W5 D3 O! W2 Q8 W6 J6 G+ F( z$ A4 w
  n4 C' `2 k: l6 E5 k/ Q
注:MAME官网的MAME是命令行程式,没有GUI。, ^: L0 v' |# P' \' H( z6 M
9 ^4 A9 U1 U, C& x# e# f$ N, h* E; q
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;9 I& O( G8 v( K4 h) o4 I

' t2 X9 k, Z0 |2 o/ M# R3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
6 q" ?' C; m  s. H0 T$ _3 x+ _' p
d:回车
4 s. i$ z, G- @9 H. J& q$ t' u; r
8 T8 E4 V& h# F) k. _* j6 Xcd mame0148b_debug回车' ]) w+ |4 B/ e# h4 s$ W7 v5 R

+ n2 ^; {6 _: c9 I' e如图1:
% @% F! Q9 Z( `4 J" n' R' u& f- t& B) ]6 j* M; }1 ^* i) D

5 w. Y# N! G; a0 v) ?2 G4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
, }, X0 X5 `5 P8 c7 ?! }1 {# V2 l: K- M7 U
+ ~' |; B% v6 r2 z& z/ X

  U! x/ H" p( T; L$ @  Y" v5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;5 T, P/ B$ Z+ a, [

1 _1 @2 ~8 J2 s) q: l6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
# ?  p0 J; i' t& \% \; C) B1 m1 j
' f) d( g. l6 S  R" L9 }(2)如何呼出/隐藏调试窗口
; h' ^8 y. G% Q( w& x. ]3 `* \" g6 v7 A5 Q' t
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:5 a1 b7 [: e- L" e; |2 ?

# h: i. V1 |; h: q! S
: S8 X5 k% ?/ W7 {7 g( [3 z- ]: K- `1 C$ {. U
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:1 Y; C5 E8 P0 q# F+ `

! |7 Q& Q" c  `* `- W/ N1 q$ C
- z% V  m7 C# e/ z4 d. `1 U* }3 }3 q) q
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。# X4 Z. T! s( x: _, P! R8 [

2 u; l4 f1 T5 s( D8 g% n(3)如何下读/写内存监视点以及程式地址断点. Q/ H( L+ ?; n! N

2 e  s. N" n9 t7 e9 f, o" |* Q- r先说说如何下读/写内存监视点吧5 M3 E1 T' _! B+ X; [
+ I0 {; V" G) E  [+ g" b) P7 t6 ?7 R
监视点命令格式:wp <address>,<length>,<type>,<condition>- i5 ~5 @/ P0 s

8 G# S* j( e( _+ p; n5 R<address>是地址
( B- q0 I- ^" a
% ~+ v$ q; h, P  s5 }<length>是数据长度,长度必须用十六进制表示
0 \/ S% g3 y# r% z: O! Y/ w# t( R% L) d' c, P
<type>是监视点类型,r是读,w是写,rw是读写
& K# I* @6 _1 \
) g3 G1 \% I7 J4 N8 L例子:
* F( @8 y% a7 e( a. Q; |5 j. X* i/ L
例如对ff8569地址下写监视点,数据长度是1个字节8 o# `# z/ w) p$ b

3 c  X7 S4 D- E/ w) v# t: Wwp ff8569,1,w
+ L2 P5 F- }2 X; \: o& q8 S+ q7 U; T3 m5 W8 H8 A/ n
例如对ff2235地址下读监视点,数据长度是2个字节3 g7 M3 n2 q! ?) Q+ m4 ^2 ?4 h3 W
& r( l# K5 L/ t* \9 }
wp ff2235,2,r% G9 C: B8 R, C# X& q0 g

8 D" o8 P$ T4 j6 D, U6 P4 U4 R/ y! O% y例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断, P/ P* h# B  K* C8 T" n+ D
* G- ?0 J3 K+ g1 n( ~
wp ff7533,1,w,wpdata == 0' d1 f, ?3 H9 o3 s

8 c4 t$ O2 i4 k% {; g以龙王战士日版为例:& g; [- D/ o( F  F" L8 y3 N
2 H; N  x# E8 g
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:+ B( q: S( L. D6 P
, ~* v  ~+ q0 h3 R
6 @0 x' b7 i8 P2 T9 }3 E
% y# R1 O# T3 C! B8 n
8 }' }' i) d7 j' x$ u
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:% _  @  D' G' q- B

" e" I2 n" K& |) z
* n9 v! |2 P5 f0 x1 n; |1 Y
. q1 w8 f8 M+ N4 g9 ~接下来说说程式地址断点% |$ C  z* X2 J  U+ Z

. C8 \, _( x5 q7 j! w命令格式:bp <address>3 o: a- r/ [& U4 k
4 ^, ^7 @8 V, p- U* Y/ E2 }7 ~
例如对000488汇编指令地址下断点8 u2 t2 x; J( j
  u5 Y( @2 }. i! k1 t
bp 000488& `5 Z* x* ~7 v! q

% ^9 l! a4 M7 {; H) V当程式执行到000488地址时就自动中断
3 G; a6 p. l' z: |/ x% f; K
2 \& S' |9 D- _1 H9 b$ A更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
* ~2 {' T; q9 q& w, r6 n  |# X! T
  c/ Q& }. S7 R6 T: ^有错误请指正。
. c) I) `$ }  g1 A0 S( A
& y6 w. G5 U" v5 W补充一些命令:# t1 G( l, T! k4 A6 S/ o% O  T% O

  q  E/ w' A) n& i& s"wpclear" 清除所有监视点
, v+ a- i- a" j& W"wpenabld 数字" 开启监视点) u( ?% G# C- b0 B2 T
"wpdisabld 数字" 关闭监视点
, t: \: w& o- c"wplist" 显示所有监视点4 ~5 ?6 C' j$ g3 d* `3 f0 a' V
3 k( D* Y' x9 E: Q! \6 c5 G
"bpclear" 清除所有断点
! E- \* l! K8 F$ t8 [/ o$ S"bpenabld 数字" 开启断点
9 ~. K* B" K5 K" U7 R$ _% t' ^( f"bpdisabld 数字" 关闭断点
) y7 j8 T- R; T! f; y" T/ C"bplist" 显示所有断点( B  J9 b6 H, [: o8 }

本帖子中包含更多资源

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

×

评分

3

查看全部评分

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

签到天数: 1548 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 3472 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-24 08:59:28 | 显示全部楼层
我在想为何要搞的调试器这么隐蔽
6 ?' W5 F+ W: o. X7 e1 |7 l: S: H" J
以前这调试器都是直接出来的说
回复

使用道具 举报

签到天数: 1296 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 2032 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2566 天

[LV.Master]伴坛终老

发表于 2013-1-25 16:48:33 | 显示全部楼层
本帖最后由 zsyf 于 2013-1-25 16:55 编辑
/ k1 j3 `& n+ b' u& o$ H
' R4 R: s, Y% k- j* G& m太好了,终于有新版MAME的Debug相关的教程了,感谢发布教程。不过还有一点小疑问,还请管理员不吝赐教。
. {4 ]4 N7 W: ^+ S# v) \0 P* X/ N% s4 j6 F! |
其中“我们知道1P生命数地址是FF125D”这句里的FF125D地址,对MAME稍为熟悉一点就知道,MAME0.127以后就取消了内置的作弊码搜索引擎,而且新版本的MAME也不被很久不更新的EmuCheat所支持。因此,想请教的就是,如何才能得到只有新版MAME才支持游戏的相关内存地址?为何用CheatEngine搜索到的临时地址在MAME里下断点却无效呢?是方法不对还是工具不对?还望继续赐教!
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-25 20:10:50 | 显示全部楼层
本帖最后由 银河漫步 于 2013-1-25 21:08 编辑
# Q5 t% t& J% v# R$ A4 P6 w+ d7 h  I+ D" l1 f+ S. W+ `
CheatEngine搜到的临时地址当然无法对应MAME的内存地址
. U- X& ?& ~3 W( c( z, E) ~+ ~* L* ]- l: G; Q3 d7 T
新版MAME没搜索引擎了么?6 |2 l! M: W( R& D3 y  h
晚上我看看' t3 ^9 {! e2 X$ m2 R' N
( I) |" S/ ?7 O& q
MAME查看地址的功能还是有的
; F: K( l& p. M* j8 l+ l菜单里的第一个选项就是显示内存地址
& L8 u4 s- k9 F9 C不过确实没有之前的搜索引擎了
[发帖际遇]: 银河漫步扶老大爷过马路,警察叔叔奖励银河漫步 3 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2032 天

[LV.Master]伴坛终老

 楼主| 发表于 2013-1-25 21:23:40 | 显示全部楼层
回zsyf:  A9 h& L6 x- P/ P- `
1.DEBUG版MAME有作弊码查找命令
. c% f8 i0 l0 c( U) Z8 \+ f' |0 W" _- ~" n, W# U* F
命令如下:
$ b" z/ E" }! u2 M% }cheatinit [<sign><width><swap>,[<address>,<length>[,<cpu>]]]
  @. P7 h' p8 t$ `9 G<sign>是决定数据是有符号还是无符号,s是有符号类型,u是无符号类型
. L: w# [2 V5 N<width>是决定数据宽度,b是8位(单字节),w是16位(双字节),d是32位(4字节),q是64位(8字节)
. d& L0 [# _7 p4 Y2 G  v1 k<swap>是决定字节是否交换) a7 n. k9 A+ _) c- j4 L
<address>是地址,地址必须用十六进制表示,例:0x100248$ D+ |) r4 B% F0 [; ?5 B6 B
<length>是地址长度,长度必须用十六进制表示,例:0xfffff- J- n4 }8 Q+ U* m7 m5 Z
<cpu>是决定搜索哪一个CPU空间,0是第一个CPU,1是第二个CPU& f' f# G4 n1 F

/ i1 m9 b% O( f. T  D1 M0 V请打help cheatinit命令获得更加详细说明
+ @8 v" V& N. y* f$ I7 ~6 g
# j5 x2 t1 G$ R+ z( s! I7 Tcheatnext <condition>[,<comparisonvalue>]8 [9 j" H. H; ^2 G8 t+ \
<condition>是搜索条件,有[eq],[ne],[de或-],[in或+],[deeq] [ineq] [lt] [gt] [ch或~]# S2 Y8 \! V5 q  l9 z* p# r
[eq]是等于8 a! ?& {3 S* ]2 U8 j1 t* r
[ne]是不等于
1 s' C2 P- `) w. Q# z[de或-]是减少( I/ w+ N4 k+ j- q1 J
[in或+]是增加  T8 P, A- [8 b# W' p; G% F
[deeq]是减少或等于( O+ Z3 G* k# F5 W3 r
[ineq]是增加或等于
- r2 s( g% I/ ?, K[lt]是小于3 O$ t- H# _' u2 h  u5 R
[gt]是大于
. u7 I; B  h! D[ch或~]是数据有变化
: k% Q$ x4 p5 ~( W! B5 N+ `
; X6 f, D, p  y. E$ Y: y<comparisonvalue>
$ E& L2 n* M: o要搜索的数值
# [6 k6 S! T2 P1 \6 K
$ b3 X* ]9 a# t- n6 a! {请打help cheatnext命令获得更加详细说明: F1 t& e& ]' m9 F) S( p

/ ~+ ~8 G+ L% L4 s: e3 ]cheatnextf <condition>[,<comparisonvalue>]! m0 o+ t3 f8 F1 r9 F
说明同上
7 ~" ~/ d* }6 r8 ]( L% u3 A, ~" H
请打help cheatnextf命令获得更加详细说明
4 r+ ]( O" o* [& J! O: S! o5 p& N$ _$ I8 V& b% `
cheatlist [<filename>]
2 l/ ~5 P/ H3 J, p9 M% p. X显示搜索结果,添加文件名的话,就是把搜索结果以基本xml格式输出到文件
" a) B' I1 h9 ^$ M
7 Z4 g. J# t+ C# O$ X4 e请打help cheatlist命令获得更加详细说明
7 t1 S! y/ l% F8 `! p& ~+ {! M7 m, W/ a& P5 J1 C
第一次查找要先用cheatinit对要搜索的内存范围进行定位并初始化
9 Z# |8 o% u+ _6 p5 Z- [0 H% c6 c$ q9 L0 n
之后进行第一次数据搜索时要用cheatnextf命令来摸索
, {" c- Z4 {9 s% h& y3 m, y1 _( d- X! r6 y4 g6 U' r) t0 i
到第二次、第N次数据搜索时要用cheatnext命令来搜索
$ [" e9 _) j. t) ?: C  l  ~
$ k: t& p8 b7 |  ?1 A  l, C举个例子吧:) Y2 F/ ^' n+ m$ l; P
2 R$ ^$ j; b4 Y( `/ [3 z
以合金弹头X为例:. x! ~3 N# ^% g* @
1P生命数是2
5 @! i: {: A0 r, n3 C6 ]" W
5 J" G5 Y. v8 J4 }6 s先用cheatinit命令来对要搜索的内存进行定位并初始化,无符号类型,单字节,内存范围在100000~1fffff,指定搜索第一个CPU的空间( p2 j1 M# j, z, H# F

+ i$ z2 ]/ X2 c9 X3 u+ {/ Q命令如下:
) }) j0 W* y$ I7 f4 b! Xcheatinit ub,0x100000,0xfffff,0
2 T4 H' a1 O4 B0 `3 e- x1 c: d% K$ `) A: R
再用cheatnextf eq,2命令搜索生命数2
+ s# q3 [9 s2 n; Y& v3 T
1 C4 t0 _- d  ncheatlist显示搜索结果' b1 W0 `% q+ d* t+ K7 _3 d+ {$ w
  I/ r+ e4 n  I- F
死一命后用cheatnext eq,1搜索生命数1
, Y0 t5 P4 I9 y2 p! N* p+ ]/ ?/ L  V# N( ~0 \5 @% x, h
cheatlist显示搜索结果
  @, f! g# l% }& n7 i.......
& l* ?2 ^5 t7 {# A直到搜索结果不能再减少,就点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)调出内存查看窗口来试着对各个地址试修改看看效果
2 U* ]% x0 e3 u% \7 X0 k) N6 j& F" [! q* K+ n& J8 U
还有一些命令,例如:cheatrange、cheatundo,因为没机会用或不用,就不说了。
# }& U8 M1 i! @7 e# l
5 ?  d, P  g( a5 \' j没作弊码的话....3 Y7 ~1 @  _  g
0 V: ?9 e1 d% _
不同的机板CPU,RAM范围大小不一样,干脆用内存查看窗口看看主CPU空间是多大,然后将其全部定位再搜索(这样做一但改错有死机可能)
; v: p$ K1 f# I" T1 d0 `: r
' l3 {- H# W2 {8 x或看看硬件资料(有的话,可惜我没有)或MAME源代码里的有无写关于68K RAM起始地址(或其他CPU RAM起始地址)# ~8 \6 K7 J1 g& b: w* U9 y

/ f% B/ M. L% x5 j4 Y& b2 F* s8 e2.cheat engine搜索的是PC内存地址,不是游戏机内存地址,拿cheat engine搜索到地址来断点当然是不行. s& }. j8 O1 g1 _( @! r+ c
2 G$ B9 X; ]$ J1 R& C
要用cheat engine修改或锁定数据并不是不行,要先找到MAME 0.148模拟器基址来定位

: G  G4 g% O1 u- L  V7 H# H, m. Y& z% C: g
回114:  L- \/ q% m& [3 l1 I7 e$ D( O8 ]
1.Debug版MAME是有内存查看窗口,点击菜单Debug->New Memory Window(或按快捷键Ctrl+M); v1 Y; C( n* d' M* S$ r1 I8 Y
2.没地址如何查询地址?看上面我给zsyf的回复
2 x7 s, |- A9 v
1 a6 @# s% r) M
打字真累.......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. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 3003 天

[LV.Master]伴坛终老

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-5 05:50

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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