2006年5月22日星期一

[MAME学习日记3] MAME的架构

周末在网上看了一点文档,今天写一下还记得什么。。。 原文点击这里

从软件工程的角度来看,MAME的代码可以从逻辑上从高到低划分为三层。高层的代码调用底层的代码提供的各种功能。MAME的三层是这样划分的:其中最高层的代码负责模拟具体的游戏,中层的代码提供一些通用的函数和模块,最底层的代码则负责将模拟的结果呈现给用户。

之 所以这样划分,是因为MAME是一个大型的、不依赖于硬件或者软件平台的软件。如果你曾有过开发大型软件的经历,你会很熟悉这样的软件架构。^_^ MAME这样做,我认为也是出于可移植性和可扩展性的考虑。最高层和中层的代码是纯粹的c语言,里面没有任何WIDOWS和DirectX的调用,也就是 是说,这些代码能在任何平台上(Windows, Linux, Unix...)任何C编译器上(VC, GCC...)编译通过。所有和平台相关的代码都在MAME的最底层。在这里,你会找到你熟悉的main()或者WinMain(),对DirectX或 者对Linux内核的代码调用。用MAME的术语来说,这一层就是OSD层(与操作系统相关层Operating System Dependent)。将与操作系统相关的代码限制于这一层,使得MAME的移植变得相当简单。假如,你要把MAME移植到一个新的平台,比如说 PDA,MAME高层和中层的代码可以原封不动的拿来使用,你只需修改OSD层,按照中层代码的接口,写一些和PDA平台相关的调用,你就大功告成了。

下面看一下MAME源代码的组织:

在此之前,你最好去下载一份MAME的源码。P.S. MAME是开源的软件,在其官方主页: www.mame.net 就可以下载到。

Src/ 这个目录下都是跨平台的代码。

Src/cpu/和Src/sound/ 这两个目录下面是对CPU和声音芯片模拟的代码。它们都是跨平台的,而且被多种型号的街机(Machine)共享,例如,很多街机都是用68000的cpu。

Src/drivers, Src/vidhrdw, Src/machine, Src/sndhrdw 这里面放的是各种类型街机(Machine)的模拟,或者说,各种游戏的模拟。一般来说,在MAME中加入对某个游戏的模拟(将该游戏的驱动加入 MAME)并不复杂(相对来说),其过程就是将你写好的对那个游戏模拟的文件放在这些文件夹中。为了增加可读性,一个游戏的驱动要被分成多达四部分放在上 述四个文件夹中,而且,这个四个文件必须同名。放在drivers文件夹下的文件里面包含C代码和该游戏所使用的硬件的信息,比如ROM,内存映 射,CPU,图形显示的布局等);放在vidhrdw(video hardware的缩写)文件夹的文件的代码中封装了要模拟该游戏所使用的视频硬件所需要的函数调用。与此类似的是,sndhrdw(sound hardware)文件夹下的代码封装了模拟该游戏声音设备所需要的函数。machine文件夹下的代码存放了剩下的所有信息,例如对NVRAM或者 real-time时钟的支持。

2006年5月20日星期六

[MAME学习日记2]VCMAME

用google搜索时候意外发现了个有趣的东西,不过我电脑上没有装VC.NET 2003,呵呵。等以后装了,一定下载回来看看,毕竟vc的编辑器好用太多了。

homepage: http://www.vcmame.net/

Code Project page: http://www.codeproject.com/cpp/vcmame.asp

About VCMAME


VCMAME is a set of project files and information that allow the official MAME source code to be compiled with Microsoft Visual C++. The intent of VCMAME is to allow those that prefer Visual C++ and it's associated tools to contribute to the MAME project.

VCMAME is presented as-is for non-commercial use only. Any binary distributions constructed with VCMAME must adhere to the MAME Usage and Distribution License, as well as any other relevant copyright or license agreements presented by the source code authors. VCMAME is generally unsupported, and no guarantees are made as to the timeliness, quality or accuracy of information posted to this site. Proceed at your own risk.

[MAME学习日记1]成功编译

上午从mamedev.org下载了MAME的devtools和0.106的源代码,刚开始没找到如何编译,后来在mame.net找到个网页看 了后,开始尝试编译。试了几次都无法成功,输出access denied。。。后来才发现设置环境变量时候多了个空格。 -_-

重启电脑并写了个.bat文件设置环境变量,终于开始正常编译。 ^_^ 编译得真慢,呵呵。不过好久没有看过.c做扩展名的源程序了,上班的时候都是在用c++堆代码,现在看到.c文件特别亲切,想起了上学的时候。

一二十分钟过后,自己编译的MAME终于诞生了。 ^_^

2006年4月23日星期日

《傲剑狂刀》

前几天去了EZ的bbs,看到好多人都在讨论《傲剑狂刀》,点进去一看,这个当年红遍大江南北的IGS游戏被新版的MAME模拟了。

不过现在的我,已经没有了去更新模拟器和下载ROM的冲动了。

IGS 的时代,已经是我渐渐淡出街机的时代。96年左右的《西游释厄传》刚开始火爆的时候,我还是街机厅的主力。当时游戏室里面NEOGEO基板一统天 下,CPS1已经很难见到,唯有这个“国产”游戏是个例外。虽然那个游戏室离学校大门不到50米,我们一干人等还是冒着被老张批、被叫家长的危险,充分利 用好每一分钟时间,像贝蕾帽一样冲进游戏机室那个我心目中的天堂。。。让我至今想起来仍忍不住笑出来的是,我那穿着校服、带着胸卡、胸前别着团徽、全神贯 注打游戏的同桌。好长时间没有和他联系了,希望他能顺利考上医学院的研究生。

到 了后来,上了高中,游戏室里面已经是清一色的KOF了,一群人围在那里大呼小叫的。我对KOF这个游戏一直都没有什么热情,也许是Street Fighter玩得太多的缘故吧。《侍魂》玩的人也越来越少,SNK在走向没落,arcade也在走向没落。同时代的console比如PS、SS的画面 又是那么出众,好多游戏室都把重点放在了console游戏上,或者干脆放弃arcade,比如人民路上一中(当时)附近地“残害”了无数祖国花朵地刘 X。再加上,当时许多人都已经拥有了自己的PS/SS,去play arcade的人也越来越少了。另外,精神鸦片、洪水猛兽之说也功不可没。

就在这个时候,万恶地网吧出现了。 那个时候还不能被称作“网吧”,因为里面无法上网,只能在局域网中玩PC Game。借着学习电脑、开发智力之名,无数gamer大摇大摆走了进去,拜倒在Westwood旗下,操起鼠标,没日没夜地学习起造坦克来。

眼 看着街机室老板入不敷出,IGS又一次拯救了arcade,接连推出了《三国站记》、《大家来找碴》和《傲剑狂刀》等游戏,似乎还有《西游释厄传》的加强 版。街机室里的人再一次多起来了,虽然远远比不上CPS1全盛时期,但至少让老板的脸上有了久违的笑容。这时,我也在别人的怂恿下再次走进了街机室,玩一 下曾经节假日里陪伴我的《侍魂》、《双截龙》之类。但此时,热情、疯狂都早已远去,剩下的只有回忆了。《双截龙》前,永远都不会再看到前赴后继的挑战者和 有人在不厌其烦地施展“醉拳”(Chen Fu)的无限连了。

我也曾试着去玩《傲剑狂刀》,用独孤残无赖一样的招数虐待电脑,但当年的感觉 怎么也回不来,始终无法聚精会神,玩起游戏来也没有丝毫的兴高采烈。经常,我会被刚比街机摇杆高一点的小孩打得不知道北,尽管,我用的是跟他们一样无赖的 独孤残。。。慢慢地,我明白了,这些小孩就是当年的我。Our time is gone...

后来,我离开了街机室。我一直觉得,我的街机时代止于SNK。

Thanks, Callus. Thanks, RAGEx. Thanks, MAME... You are my childhood.

How to compile MAME(Win32)

The site contains valueable knowlege on how to compile MAME source code.

http://www.mameworld.net/compile32/

2006年4月21日星期五

nes stuff

周末下午无心干活,在网上闲逛,在别人的blog上发现的关于fc的网站,资料巨多

http://nesdev.parodius.com/