设为首页收藏本站

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

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

 火.. [复制链接]

签到天数: 1911 天

[LV.Master]伴坛终老

发表于 2013-1-23 22:28:49 | 显示全部楼层 |阅读模式
应人要求,就写写关于MAME DEBUG版用法吧。0 C, [/ j* J8 \% b8 m$ b2 U
* t; f8 a- c! D
(1)如何加载ROM
% z9 \! R+ S1 @$ c. s! }! q
1 s- }, `9 S7 X8 |% m- o" x6 Q1 c/ X4 f先说说如何加载ROM吧# r7 L- {' P/ b; Q9 ]
5 C: F8 S, j1 |! Y; u
以MAME 0.148 DEBUG版为例:
* b6 \7 a9 H/ t
- t" Z9 R# O3 f: ^* Z5 T1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html/ W9 l$ G4 v- Y; y2 D. K8 t0 Y

9 P2 v6 f) p) Z9 R) c8 S: _注:MAME官网的MAME是命令行程式,没有GUI。
1 y: ], ~0 O' n  D# B4 f2 @7 I$ o9 a
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
% M$ p+ t) e0 b  {) |% a
' U( V) i2 @; |& D+ i! y3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
0 b1 z& ?7 f0 M. o7 {" b2 F
9 H# k3 J( f, }* n) C5 c5 `d:回车- e8 J4 p/ m7 Q4 J/ V2 u
2 f7 D( J6 |% Q6 q9 T; x- ^
cd mame0148b_debug回车- b  U- O; ]$ M4 y% p
7 R; b0 P' a5 ^, E- c% S
如图1:4 E, |# L; M2 U6 y/ K: O/ k. W

! j9 ]5 S# `9 ~- f" u  V) L
& N% }! j9 F0 ?4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:1 s( _7 }& b2 }3 Z+ ~

  O% \. z5 j1 u" r3 ^
2 y7 b. K  A5 }2 l
, l$ S( ^: L& i7 Y$ O/ G5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
4 S& K7 c5 G& Y+ v
( s5 u6 w% ]+ t: \" \5 o9 f6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
1 q0 `5 w+ Q. N$ o# |0 c9 `! ]% I+ ]
(2)如何呼出/隐藏调试窗口
, F3 P# O" C  @7 q& z' @- W
5 P) [4 J# X) O# B# [. ?: Y3 ~1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
7 K) }6 n7 }4 q7 [# M- N" H8 m& e
8 o" @& e" F. Q" x
) e" w( V7 X  ^) }8 j, I# q/ E. M
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:, w/ W4 z! v" l4 Y' G. ^

7 ]- b; ]# q& H8 W
3 H( Y& a# ]+ D- |$ i! X, C
* u' O# @: j! G3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。. ^- W( u% ^. Z! L/ `/ {3 B9 R

3 c1 P4 }- ^: q" L! _( ](3)如何下读/写内存监视点以及程式地址断点! ^' \! [- T/ n

- {* n  g. ^. A* |9 F/ ^" @& Z先说说如何下读/写内存监视点吧) O& X# Z  n9 a! [2 m

7 z/ |. I) s/ ?# A9 s监视点命令格式:wp <address>,<length>,<type>,<condition>
8 T' S1 z9 v; C
. A( k& W. w: F5 s: e* [8 x<address>是地址
" F/ V7 a2 w, N' G; i! @8 S- R* X  }1 D' X2 d) i! L
<length>是数据长度,长度必须用十六进制表示7 U# e' C- I( m' j- N7 @4 c

: v- ~. r( f0 V+ ^: U6 V3 {' [<type>是监视点类型,r是读,w是写,rw是读写
7 S! ^- z# D9 a2 n% T$ L
1 L2 ~5 p0 T' J/ z. I& H& \例子:
( E3 n5 k" I/ [3 f
; p! [" i0 K0 |例如对ff8569地址下写监视点,数据长度是1个字节
7 h0 G3 h* z  K
5 ^+ d) v2 P9 \  ?2 M8 Q6 rwp ff8569,1,w+ U& A2 I; V/ n9 F4 c' e

( e) W5 P! Z& e7 f6 w$ y例如对ff2235地址下读监视点,数据长度是2个字节
$ l7 H& B$ m) ]1 v: f. L  P1 W
wp ff2235,2,r
: @; Y7 W/ C) h( K! s3 C. [; p4 G, x1 Y" @8 G) e+ t+ _' T
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断" o, e* @! {/ u* K2 Q* m

. {9 G$ h' q! u" e9 V' twp ff7533,1,w,wpdata == 0
0 I8 b6 B$ y; u# a1 l4 W! M$ u! _. p0 ^5 D
以龙王战士日版为例:
: o/ x) u' }4 n/ d6 ]: u+ e* N* T# h/ G8 H2 ?8 C+ `& d) ^- T7 d6 g
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:2 b* E! Q8 J) _1 v: g% c
/ Y4 W1 i( P  s0 b
/ F  _) p' N0 R4 H0 q
; D3 j4 x% G% _* L1 z$ j) G

4 S- D- K4 H8 Z' v$ V2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
" E( o5 F3 k2 E0 i: v& T. X9 t/ J4 b6 B( B

$ B" f1 y8 C) e3 f5 q. W& v# T" l: C( P0 V/ W/ L: Z0 ^
接下来说说程式地址断点
# @& T7 d8 v- l. W; }8 v: j
9 W# B, g* \. v' W/ N命令格式:bp <address>
$ |- ]5 R; d( _( {" g# R( Y
9 p: g) R9 Z7 W" e' ^例如对000488汇编指令地址下断点, v. X$ W' X' m0 ~
& A, b: v: A) a% K
bp 000488
! T6 y3 Y5 G+ ^8 \
  v- n! [4 N0 ?, G当程式执行到000488地址时就自动中断# k- y4 m3 e! b0 w
7 D7 K* h1 z$ U  i/ l
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看- M2 C4 S- W1 w9 O5 L0 M5 d8 y; j, m

, T6 Y$ v  x; Q: C3 x( _  z1 T8 U有错误请指正。
9 o; D0 P* P  n' K$ I5 o
9 \5 Z% V3 [* n7 }补充一些命令:
. ]$ Y" [" z* v: X: W3 F% g7 n: L( H9 X" j
"wpclear" 清除所有监视点9 k% }/ g- H) W. p0 u
"wpenabld 数字" 开启监视点
$ Z! B3 [7 ^( q$ @0 ["wpdisabld 数字" 关闭监视点
) M; _5 v6 ?0 X" T9 {; R"wplist" 显示所有监视点7 t% j0 F9 I+ p6 _7 a9 ~+ G

/ \1 ~5 t! d, }"bpclear" 清除所有断点
) M# H* K2 k' u; ?2 Y1 K, L"bpenabld 数字" 开启断点
) v5 h& b% s# w, ~"bpdisabld 数字" 关闭断点
+ ?3 S& j% e1 z+ j"bplist" 显示所有断点
& A8 A9 s8 F* r

本帖子中包含更多资源

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

×

评分

3

查看全部评分

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

签到天数: 1548 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 3349 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-24 08:59:28 | 显示全部楼层
我在想为何要搞的调试器这么隐蔽
$ v2 T0 X/ @: t0 |8 T
  |' Y$ K# p5 ?$ v+ e  _# @以前这调试器都是直接出来的说
回复

使用道具 举报

签到天数: 1296 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 1911 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2552 天

[LV.Master]伴坛终老

发表于 2013-1-25 16:48:33 | 显示全部楼层
本帖最后由 zsyf 于 2013-1-25 16:55 编辑
  _, D9 x8 d6 b6 ^0 g3 f, K' S- a+ k, o
太好了,终于有新版MAME的Debug相关的教程了,感谢发布教程。不过还有一点小疑问,还请管理员不吝赐教。- n- g5 H+ `* F4 d" v

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

使用道具 举报

该用户从未签到

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

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

发表于 2013-1-25 20:10:50 | 显示全部楼层
本帖最后由 银河漫步 于 2013-1-25 21:08 编辑
; _9 K4 e' d3 e' @
! b' e0 q* l8 m; `0 A3 L0 K4 iCheatEngine搜到的临时地址当然无法对应MAME的内存地址
1 u4 W. w' U3 }% A# M6 T& h( B4 w
新版MAME没搜索引擎了么?. A; e# k' w7 n4 `0 f- |( u: [" [
晚上我看看; f, v( J, ?0 v

9 v9 T# t+ O( k; X! IMAME查看地址的功能还是有的. o. g9 l) c. J0 M$ V4 l
菜单里的第一个选项就是显示内存地址5 H2 \9 Z  `% z
不过确实没有之前的搜索引擎了
[发帖际遇]: 银河漫步扶老大爷过马路,警察叔叔奖励银河漫步 3 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 1911 天

[LV.Master]伴坛终老

 楼主| 发表于 2013-1-25 21:23:40 | 显示全部楼层
回zsyf:
, B7 o* B! m  P" q8 d
1.DEBUG版MAME有作弊码查找命令
$ V2 N. @& }3 @/ m, k2 W5 v! ?1 k! S5 t( w1 V
命令如下:- P/ e9 O+ t! X3 N+ a! F
cheatinit [<sign><width><swap>,[<address>,<length>[,<cpu>]]]# X% ~7 @4 N0 ^
<sign>是决定数据是有符号还是无符号,s是有符号类型,u是无符号类型  w; Q5 g" q, Y7 i: g2 p6 Q% s
<width>是决定数据宽度,b是8位(单字节),w是16位(双字节),d是32位(4字节),q是64位(8字节)8 @" b' }% C2 i8 `- }
<swap>是决定字节是否交换
8 R4 z" s3 B9 T7 n' D<address>是地址,地址必须用十六进制表示,例:0x100248
" E  v& C! [; R9 S4 ~<length>是地址长度,长度必须用十六进制表示,例:0xfffff# e: U4 L  ]/ z2 R& V& {
<cpu>是决定搜索哪一个CPU空间,0是第一个CPU,1是第二个CPU
* w/ A) k* V0 f4 i. G# [6 \" C" |1 Y2 Z1 J& Y* U/ ]( j5 w
请打help cheatinit命令获得更加详细说明8 Q: Y; ]: B  x
' J+ D8 ?( S- r
cheatnext <condition>[,<comparisonvalue>]* J7 @3 q! `$ o3 g0 {2 W
<condition>是搜索条件,有[eq],[ne],[de或-],[in或+],[deeq] [ineq] [lt] [gt] [ch或~]0 U4 h- E0 ~6 c0 o' f* l
[eq]是等于
" Z9 d; C3 {5 W! }8 t- }3 p[ne]是不等于" i8 \0 X6 N- R/ [0 |  g( J
[de或-]是减少0 n  h0 {0 g- _9 }
[in或+]是增加' o' j6 d, ?$ ~0 N" p
[deeq]是减少或等于$ R* M& F9 C; O8 ]0 |' X+ e
[ineq]是增加或等于% F+ L- f0 Y6 g5 e
[lt]是小于; I: [. Z( y9 c0 \
[gt]是大于
) Y2 P+ _9 R. m[ch或~]是数据有变化
0 v1 g7 G0 z1 g# z$ R5 e
+ h9 O8 P; c* N8 x! h<comparisonvalue>
4 Z  l( r+ P  I# D5 d' E1 ~要搜索的数值
1 J& X- r% g1 Q4 W* s. M3 G1 H
  j- g% ?( ?( q# c6 ]0 M( p请打help cheatnext命令获得更加详细说明
: [( {8 g( \9 ]/ L% `9 p  }1 B7 d9 J" x( W
cheatnextf <condition>[,<comparisonvalue>]
& h& X/ ~5 `& s: g9 Y( s6 u* E" F说明同上  R0 p" q& C6 U
9 T) g! u! J7 r0 g! |* \
请打help cheatnextf命令获得更加详细说明
. R- n2 y" i! ~
# e3 x, _; }+ x# I, Mcheatlist [<filename>]
$ O& H# Z% v  N9 E& Z2 K2 y+ S2 ]显示搜索结果,添加文件名的话,就是把搜索结果以基本xml格式输出到文件0 R8 A$ p  S) C" v; i

6 b! f4 l9 k) L请打help cheatlist命令获得更加详细说明; A$ ~4 Y7 \5 u
/ W: P1 N3 l+ }7 S5 f, {
第一次查找要先用cheatinit对要搜索的内存范围进行定位并初始化
9 ~( @. l* j% @' L; Y" P( O
, b4 O. K3 F5 j之后进行第一次数据搜索时要用cheatnextf命令来摸索
  v! y4 C' }5 l1 Q# z1 g. S) A- }' S% s! a
到第二次、第N次数据搜索时要用cheatnext命令来搜索
0 q& q  L" N$ T. C
( W# E% a  T* `, J* {. o2 G举个例子吧:! R0 N; `2 N5 ?. K% [) |. Z6 F

% _# Z; C7 Q  V# v0 Y以合金弹头X为例:
. q6 b; T6 ?( y& l1P生命数是2
( g$ e) G1 k0 z
) n1 q5 L: |4 J先用cheatinit命令来对要搜索的内存进行定位并初始化,无符号类型,单字节,内存范围在100000~1fffff,指定搜索第一个CPU的空间% M9 X5 C. t* K! v

' L  d0 l' M8 B9 H* E命令如下:. P6 K$ a) _: u; b3 E3 X
cheatinit ub,0x100000,0xfffff,0
' N) d- Q% z% U# F! d3 P9 s) d0 D2 h& J, {0 W0 u
再用cheatnextf eq,2命令搜索生命数2
3 ~4 Z& `* ~& S+ e) |% F1 `" `& H3 L9 V
cheatlist显示搜索结果8 B! Q# S" r6 u! W1 X) |

( v+ J) S& e0 f2 t0 |死一命后用cheatnext eq,1搜索生命数1
; @2 V% Y  X# i
  J9 b* p- q6 u/ a; K0 Qcheatlist显示搜索结果
( ]; A2 |! d4 h% ~$ P# \.......
6 |: j0 h" j! \( y1 I5 q4 I" Z直到搜索结果不能再减少,就点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)调出内存查看窗口来试着对各个地址试修改看看效果6 a8 {% C, ]$ n$ c/ F1 ^

) N% X# U) [6 z4 s还有一些命令,例如:cheatrange、cheatundo,因为没机会用或不用,就不说了。
& \: z3 J9 E4 u" E  C& d2 K' `, o2 O7 J' H
没作弊码的话....* n: k" j9 }# F6 ]

8 i4 x$ @/ D& y9 M$ z不同的机板CPU,RAM范围大小不一样,干脆用内存查看窗口看看主CPU空间是多大,然后将其全部定位再搜索(这样做一但改错有死机可能): P1 y5 u3 C& Q0 U( }
* N# b% z* X5 C4 h2 G
或看看硬件资料(有的话,可惜我没有)或MAME源代码里的有无写关于68K RAM起始地址(或其他CPU RAM起始地址)1 m6 y. I! k+ }( n+ g* u# ]# e
# e. W" g3 X5 _6 x9 t0 n
2.cheat engine搜索的是PC内存地址,不是游戏机内存地址,拿cheat engine搜索到地址来断点当然是不行6 X, e+ M2 v- `) K3 K+ ?& F
8 d1 R4 N- \. \/ Y
要用cheat engine修改或锁定数据并不是不行,要先找到MAME 0.148模拟器基址来定位

- [( k; G' w- C! Z# W/ X: X! j. @0 J0 P- m; z# p' {" v
回114:
2 Q" u; A% S7 \' E  f
1.Debug版MAME是有内存查看窗口,点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)
8 {( b9 I3 p$ v) G4 R7 K* [2.没地址如何查询地址?看上面我给zsyf的回复
/ @9 {8 _$ d# |) p% }/ x
$ p1 ?0 L$ w8 \4 W2 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. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2883 天

[LV.Master]伴坛终老

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-3 01:50

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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