FinalBurn Alpha 2.9x
CPS2游戏驱动程式的编写

作者:胡颖卓


  FinalBurn Alpha是当今最好的CPS1/2模拟器之一,更可贵的是他是完全开放源码的。从FinalBurn Alpha 2.93开始,FinalBurn Alpha小组(以后简称FBA小组)便转向了多功能、多机种的支持,而不是像其他模拟器那样,出一个新游戏的破解就出一个新版,或是有一点儿改进就出一个新版。这样做利了研发者,而玩家却是觉得有些不便。

  起初,我为大家写一些新版本的FBA,但这样会和FBA小组的版本对应不上。更是近来,我需要将主要精力放在网络游戏上,所以也没有太多的时间为大家写这些驱动。在这里,我针对FinalBurn Alpha 2.93CPS2游戏19xx驱动为例,给大家做一下讲解,以便大家能自己写出新的驱动。

  首先,要包含驱动头文档cps.h,语句如下:

#include"cps.h"

  再者,是输入设备定义,也不用讲解,照例子抄就行了:

static struct BurnInputInfo DrvInputList[] =
{
{"P1 Coin" , 0, CpsInp020 4, "p1 coin" },
{"P1 Start" , 0, CpsInp020 0, "p1 start" },
{"P1 Up" , 0, CpsInp001 3, "p1 up" },
{"P1 Down" , 0, CpsInp001 2, "p1 down" },
{"P1 Left" , 0, CpsInp001 1, "p1 left" },
{"P1 Right" , 0, CpsInp001 0, "p1 right" },
{"P1 Shot" , 0, CpsInp001 4, "p1 fire 1"},
{"P1 Bomb" , 0, CpsInp001 5, "p1 fire 2"},

//19xx是两键游戏,假如是3键游戏,只需要按顺序加上就行了,例如
//{"P1 AutoFire", 0, CpsInp001 6, "p1 auto fire"},

{"P2 Coin" , 0, CpsInp020 5, "p2 coin" },
{"P2 Start" , 0, CpsInp020 1, "p2 start" },
{"P2 Up" , 0, CpsInp000 3, "p2 up" },
{"P2 Down" , 0, CpsInp000 2, "p2 down" },
{"P2 Left" , 0, CpsInp000 1, "p2 left" },
{"P2 Right" , 0, CpsInp000 0, "p2 right" },
{"P2 Shot" , 0, CpsInp000 4, "p2 fire 1"},
{"P2 Bomb" , 0, CpsInp000 5, "p2 fire 2"},

{"Reset" , 0, &CpsReset , "reset" },
{"Diagnostic" , 0, CpsInp021 1, "diag" },
{"Service" , 0, CpsInp021 2, "service" },
};

STDINPUTINFO(Drv);

  也有一种特别情况,由于CPS2下格斗游戏很多,而且使用的按键定义方法也相同,比如《少年街霸3》,我们就能够使用以下方法来定义:

STDINPUTINFOSPEC(Drv, CpsFsi);

  按照Razoola的定义,ROM的编号方式按照芯片的排列来进行编号:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!