『漫游』酷论坛> 『游戏主题交流区』>[原创]MAME CHEAT功能使 ..

[原创]MAME CHEAT功能使用心得 [模拟地带版权]

chaosking@2008-03-09 06:19

MAME CHEAT功能使用心得 [模拟地带版权]

众所周知,MAME(MULTIPLE ARCADE MANCHINE EMULATOR)是目前最庞大、最多样、或许也是运行速度最慢的街机模拟器。不管怎样,MAME的程序写作者们的确让人佩服。如果你从小出入街机厅,你就能真正体会到MAME的意义。它已经在书写一部街机发展的历史。

关于MAME的特点,我不想说太多。我只想在这里谈谈MAME的CHEAT功能。它是全英文(如果不算你使用MAMEPLUS, MAMEPLUSPLUS之类的中文模拟器),没有图形界面,使用起来很繁琐,而且只能改MAME支持的游戏。但是一旦掌握到它,你就会发现此作弊功能不仅远远超过其他模拟器,甚至在某些方面要比大名鼎鼎的专用游戏修改器还要强大,包括整人专家FPE2000、游戏修改大师GAME MASTER 7.x、8.x、金山游侠等等。

一、mame cheat引擎的发展历史

通过阅读历次的mame wip文档,我们可以了解到mame cheat的一点简要发展历史:

0.4 mame wip文档中首次提到cheat功能。文档里面这样写道:定义了一个普通矢量中断功能,使得pac man驱动更小(见pacman/machine.c,它现在只处理cheat功能)。

0.28 加入新命令行选项 “-cheat”。许多cheats比如pac man的加速功能等被默认禁止,需要用这个选项手动打开 —by Nicola Salmoria: Nicola是mame创始人,也是mame众神之首。据说Marc Lafontaine在mame 0.29中加入了一个针对某些具体游戏的hack功能,mame cheat引擎也得以初具雏形。此后,在0.29-0.60版本中的mame cheat引擎被称为“旧引擎”。

0.34 beta 4 完善了cheat功能 —by JCK: mame cheat引擎早期的重要维护人。

0.37 beta 2 重写了cheat系统用户界面 —by Brad Oliver。

0.37 beta 15 重写了cheat引擎 —by Ian Patterson: 这次重写使得cheat引擎正式成为mame的核心程序部分。

0.60 完全重写了cheat引擎 —by Ian Patterson: 经过多年的使用,原mame cheat引擎已经老迈不堪,完全不能满足广大用户的各种高级需求。所以Ian Patterson完全重写了mame cheat引擎。0.60版本以后的mame cheat引擎被称为“新引擎”。经过这次重写,mame cheat的书写格式发生了重大变化,不过在0.60以后的大部分mame版本中也提供了向下兼容老的cheat作弊码格式的功能。

0.84u3 在 -cheat命令打开的情况下,加入了调节显示频率功能 —by Aaron Giles: 他是现阶段mame程序维护人、项目总协调人,也是少数能够编写模拟器核心程序的极度程序狂人,mame神中之神。

在之后的mame版本中,MAME的各位大神如Nicola Salmoria、Aaron Giles、Ian Patterson 、stephh、ShimaPong、R. Belmont也先后对mame cheat引擎做了很多修补、除错工作。

二、激活mame cheat功能

1、使用windows命令行版mame的玩家,请用文本编辑软件编辑mame根目录下的mame.ini,将其中的cheat 0改为cheat 1。

2、使用mame32、mameplus、mameplusplus等windows图形界面mame版本的玩家,请进入选项—>默认游戏选项—>杂项,把启用游戏作弊码一项打勾,按确定键。

如果在游戏过程中暂时想不使用cheat功能,可以按f6键进行cheat功能的关闭/开启的切换。

三、使用cheat.dat文件

最简单的使用cheat功能的方法就是找一份cheat文件,cheat文件是一个纯文本文档,里面包含了各种游戏的作弊码。仅仅具有mame cheat引擎是不够的,因为mame cheat引擎自身不包含游戏作弊码,所以你需要下载一份cheat文件来进行作弊。

cheat文件一般名称都叫做cheat.dat。

常用的cheat.dat文件,一是cheat.dat官方版:指的是由pugsy's mame cheats网站提供的cheat.dat文档。其网页写道:Welcome to the MAME cheat page, this page is home to the most popular cheat files available for use with the amazing Multiple Arcade Machine Emulator.

下载地址:http://cheat.retrogames.com/cheat117.zip

官方版cheat.dat到目前包含了截至于mame 0.117版本的几乎所有游戏的作弊码。但是这份cheat文件是纯英文文档,所以只适合于英文高手使用。

在国内,一般大家都使用阿电的cheat.dat文档。阿电的cheat.dat是由网友阿电翻译整理的一份中文版cheat文件,里面的作弊码都是中文的。阿电的cheat.dat博采众长,其内容大多来自于官方mame.dat文件、www.EMULCRASH.COMhttp://wayder.hp.infoseek.co.jp等国际高手制作的作弊码文件,并将其进行了中文化的翻译整理。此外,阿电的cheat.dat还包含有国内emu-zone、ppxclub、emumax等论坛众位高手所制作的mame作弊码。所以从这一方面来说,其内容要比官方cheat.dat文件的内容要齐全的多、丰富的多,而且更新的速度很快。强烈推荐使用。

阿电的cheat.dat文件大多在mame整数版出现后进行更新,然后在国内各大模拟论坛发布,如最新的0.122版的阿电cheat.dat文件在emu-zone模拟社区的发布贴:http://bbs.emu-zone.org/newbbs/thread-517835-1-2.html

此外,mame修改引擎还支持同时使用多个CHEAT文件:

在MAME.INI中进行更改。
找到下列选项
#
# CORE FILENAME OPTIONS
#
cheat_file cheat.dat

可以把CHEAT.DAT改名,也可以把CHEAT.DAT后面加上分号,再填上你自定义的*.DAT的CHEAT文件名,就可以同时使用不同的CHEAT文件。如cheat.dat;mycheat.dat;newcheat.dat等等。

四、mame cheat的使用

<1>、mame作弊码的使用方法

一旦激活了cheat引擎,在你的游戏过程中,弹出设置菜单,里面应该新加入了一项新选项叫做“游戏作弊”。一般来说,召唤设置菜单的按键是Tab键。从此选项你应该可以进入到cheat引擎的所有方面选项。这些选项包括:

(1)、启用/禁用作弊码
(2)、添加/编辑作弊码
(3)、Search a Cheat (Classic Mode) (搜索作弊码)
(4)、配置监视点
(5)、重新载入数据库
(6)、选项

要使用作弊功能,你必须进入“启用/禁用作弊码”选项,如果你的目录里有cheat.dat文件,这里面应该会有为这个游戏所具备的所有作弊码列表。如果是居中显示的项目,说明那是个注解,给作弊码注释做注释用的。跳过即可。真正有用的是写着“关闭”和“设置”的两类项目。

标有“关闭”字样的作弊码,一旦用左右键或回车键打开,就变成永久有效型作弊码。

标有“设置”字样的作弊码,是一次有效型作弊码。在此项目上按回车键可以将其激活,但是其只有一次有效,以后再次使用还需要激活。

第三种情况是,不管是永久有效型还是一次有效型作弊码,都可能会遇到作弊码提供了几个选项,提示你选择其中一个的情况,这时用左右键选择,回车键确定即可。

不管是哪种类型的作弊码,如果其“关闭”或“设置”是黄颜色的显示,表示其含有附加信息。这时可以把光标停留在其上,然后按shift+enter键查看附加信息。

下面我们以激活在三国志2赤壁之战中获得一把永不掉落的草薙剑的作弊码做为例子,对作弊码的应用做一介绍。

这个作弊码顾名思义,是只要激活此作弊码,游戏角色即可自动获得一把草薙剑,而且不管被敌人如何攻击,也不会掉落不见。此作弊码乃是本人原创,可是经过九牛二虎之力才搜索出来的,对于我这个完全不懂编程的模拟器废人来说,是相当辛苦的。在2001年,本人曾经和emu-zone网友chaihe合作制作了一款callus的三国志2作弊器,里面就包含了此作弊项目:


目前,在阿电的mame cheat.dat文件中已经含有这个作弊码。

使用此作弊码的具体方法如下:

1、进入游戏,按tab键调出控制菜单:


2、把光标移动到“游戏作弊”选项上,按回车键进入选项。


3、把光标移动到“启用/禁用作弊码”上,按回车键进入。


4、选择“总是有草薙剑 PL1”,按回车键启用。
回到游戏,按拳键,就可以自动拥有草薙剑了。


如果被杂兵攻击,也不必担心剑会掉落:


再次按拳键,剑又回来了:


用此作弊码可以实现用草薙杀曹操这种街机上怎么也实现不了的梦幻打法:


<2>、mame cheat的搜索技巧

MAME的CHEAT功能的强大首先在于它成功的构建了一个多类型的搜索引擎。FPE2000只有高阶搜索和低阶搜索2种搜索方式,而MAME有5种。以MAMEPLUSPLUS为例,MAME CHEAT的搜索方式分别是:数值(等于),VALUE(NEAR TO),计时器(+ 或 -),能量(小于 或 大于),状态(相同 或 不相同)。

数值就是输入具体数值,也就是FPE2000中的高阶搜索。VALUE(能量搜索)是一种低阶搜索方式,它用来寻找发生变化的量。计时器搜索是一种高阶搜索,用来找精确的增加或减少的数值。状态搜索只有相同或不相同两个选项,是一种非常低阶的搜索模式。

其中,“状态搜索”是MAME CHEAT中独具特色、极为有用的一种搜索方式。它得名于根据角色状态进行的搜索。当第一次搜索后,它记录内存中当前的所有数值。这个功能可以轻而易举的找到无敌和各宝物的地址。

无敌类作弊码的搜索:
比如,在“虎之道”(TIGER ROAD)中,当主角被敌人攻击,处于无敌的闪烁状态的时候,进行状态搜索初始化。回到游戏,等无敌状态结束,继续状态搜索,这次选“不相同”(NOT EQUAL)。当你又处于无敌状态时,再进行搜索,选“不相同”。很快就得到一个地址,当此地址锁定为03时,角色就永远是无敌的。

选关类作弊码的搜索:
有一些老式游戏,如雪人兄弟、威虎战机等都有数十关,一般来说,其第一关代码为0,第二关为1,… 把其数值改为30,死掉,然后CONTINUE,就会出现在30关了。早期游戏多数都是这样。

在“配置监视点”选项中,输入要观察的地址。这个地址的数值就在屏幕左上方显示出来。进行游戏时就可以随时观察数值的变化,可以帮助玩家找到一些隐藏的不易发现的数据。

找到地址后,就可以按“A”键将其存入地址表中。可以像其他的专业修改软件一样在地址中查看、修改地址和给地址加注释。按“S”键就可以把其储存到CHEAT.DAT文件中,方便日后使用。要使用找到的作弊码的时候,基本上是用回车激活密码,再次按回车中止激活。

MAME是根据地址在内存中的偏移量来记录地址的,因此玩家可以放心,找到的地址类似于金手指密码,不会随着CONFIG或WINDOWS的内存改变而失效,也不会因为MAME的升级而失效。玩家可以在网上找现成的CHEAT.DAT文件,比如阿电的中文版MAME CHEAT.DAT和PUGSY的MAME官方CHEAT.DAT等等。


五、mame cheat的格式

要制作mame cheat作弊码,先要熟悉作弊码的格式。用文本编辑软件打开cheat.dat,映入你眼帘的应该是一行行的作弊码。比如:
:005:00000000:C80B:00000099:FFFFFFFF:无限投币数

其含义是:
(1)、005是游戏的8位rom名。
(2)、00000000是作弊码类型数字代号,这是一个4字节的16进制数字。每个0都是一个4bit数,所以其2进制数值取值范围为0000-1111,代表16进制的0-f的16个数值。此数字共4字节,8即为4bit x 8 = 共32组二进制数。
(3)、c80b是作弊码的内存地址。
(4)、00000099是作弊码具体数值。
(5)、ffffffff是扩充数据区域,一般用不到这个。
(6)、“无限投币数”是作弊码在mame cheat引擎中显示的名字。

<1>、注:
1、计算机中的数据都是以0和1来表示的,其中一个0或者一个1称之为一位,8位称为一个字节(Byte),两个字节称为一个字(Word),4个字节称为双字(Dword)。

2、bit:
计算机存储信息的最小单位,称之为位(bit),音译比特,二进制的一个“0”或一个“1”叫一位。

3、byte:
计算机存储容量基本单位是字节(Byte),音译为拜特,8个二进制位组成1个字节,一个标准英文字母占一个字节位置,一个标准汉字占二个字节位置。

4、十六进制:
是计算机中数据的一种表示方法,同我们日常中的十进制表示法不一样。它由0-9,A-F,组成。与10进制的对应关系是:

0-9对应0-9;

A-F对应10-15;

N进制的数可以用0---(N-1)的数表示超过9的用字母A-F

例如:

10进制的32表示成16进制就是:20

16进制的32表示成10进制就是:3×16^1+2×16^0=50

5、二进制
二进制是计算技术中广泛采用的一种数制。二进制数是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数也是采用位置计数法,其位权是以2为底的幂。例如二进制数110.11,其权的大小顺序为22、21、20、2-1、2-2。对于有n位整数,m位小数的二进制数用加权系数展开式表示,可写为:

(N)2=an-1×2n-1+an-2×2n-2+……+a1×21+a0×20+a-1×2-1+a-2×2-2+……+a-m×2-m=

式中aj表示第j位的系数,它为0和1中的某一个数。

二进制数一般可写为:(an-1an-2…a1a0.a-1a-2…a-m)2。

其中,比较关键的是2,作弊码类型数字代号。它代表着不同的含义。在此简单的介绍一下,注意以下数值是以2进制来显示,每个-都有0或1两种数值,合起来有32个-,即为16进制的数组00000000。

<2>、作弊码的类型描述

1、作用时间效果
---- ---- ---- ---- ---- ---- ---- ---0 永久开启。此类型作弊码一旦开启,除非它被手动关闭,否则永久生效。
---- ---- ---- ---- ---- ---- ---- ---1 作用一次。此类型作弊码开启后只生效一次,然后就被自然关闭。

2、恢复原先数值
---- ---- 0--- ---- ---- ---- ---- ---- 作弊码修改出来的数值不会被储存。如果作弊码被关闭,数值不会被还原。
---- ---- 1--- ---- ---- ---- ---- ---- 数值会被储存。如果作弊码被关闭,数值会被还原。

3、类型
---- ---- ---- ---- ---- ---- ---- -00- 正常锁定
---- ---- ---- ---- ---- xxx- ---- -01- 等候修改。xxx代表等候的时间长短。

Mame的作弊码类型还有很多,但都相对比较专业,不再赘述。

六、mame cheat和emucheat格式之间的转化

mame和emucheat的作弊码差别不大,但是由于其各自的作弊引擎的内核不同,所以它们的地址之间的转化大部分是xor 1的关系,如果不懂什么是xor 1,可以打开windows自带的计算器,点查看,选科学型,里面就有xor运算。

比如ec码:
第一关=0182F8,01
转化方法:打开windows自带的计算器,选择科学型,选择16进制这一栏,键入0182f8,然后按Xor按钮一次,再键入1,最后按等号按钮,计算结果应该就是0182f8 xor 1 = 0182f9。
换成mame码就应该是0182f9:01

mame和winkawaks、nebula之间的作弊码转换大致也是如此。

不过,某些作弊码的转化也不是这么简单就能搞定的,还需要对修改引擎极为熟悉才能转化的得心应手。

七、mame作弊码和neogeo金手指间的转换

那么那些NEOGEO游戏的金手指密码能不能用在MAME中呢?当然能。但是需要变化一下。NEOGEO金手指是以WORD方式存放的,即是内存地址为2字节数。其格式是0000 0000。前四位是作弊码的内存地址,后四位的四个零,前两个0是当前地址数值,后两个0是下一位地址数值。

而MAME是BYTE型存放方式,也就是说内存地址是1字节十六进制数。其格式是内存地址:当前内存数值,也就是0000:00,没有下一位地址数值。也就是说一个NEOGEO金手指代码0D0A 0010,翻译成MAME作弊码,就是地址:100D0B,数值:10(注意:此数值为十六进制数),也就是100D0B:10。其中,100D0B的前两位10是固定格式,是一定要有的。注意,其实对应此金手指的还有一个作弊码,是100D0A:00。因为00此数值锁定没什么用,所以这条作弊码可以略过不管,只用100D0B:10这个作弊码就可以了。


Mame作弊引擎的基本应用大概就是如此了。至此,希望大家对mame的作弊功能可以有一个大概的了解。
引用

≥羽翼の舞≤@2008-03-09 10:13

嘛啊...

其实个人觉得

街机模拟器里能无限投币续关就已经很强大了...

呵呵~ 不过 作弊码还是很有研究价值的~

引用

| TOP