CPS2-FBA驱动开发实例


/* CPS2-FBA 《Mars Matrix》Driver Source */
#include "cps.h"
/* Auther: WangMeng (HeartIcy@163.com)
   -------
   Changelog:
   02/05/2003 Fixed Rominfo Type Error =..=
   02/05/2003 Supported Janpan editor - needed Xor's Cracked
   02/05/2003 Supported English editor - needed Xor's Cracked
   -------
   Doubler Player and One Key's
*/
/* 开始->定义控制器 */
static struct BurnInputInfo DrvInputList[] =
{
  {"P1 Coin"  , 0, CpsInp020+4, "p1 coin"  }, // P1投币
  {"P1 Start" , 0, CpsInp020+0, "p1 start" }, // P1开始
  {"P1 Up"    , 0, CpsInp001+3, "p1 up"    }, // P1上
  {"P1 Down"  , 0, CpsInp001+2, "p1 down"  }, // P1下
  {"P1 Left"  , 0, CpsInp001+1, "p1 left"  }, // P1左
  {"P1 Right" , 0, CpsInp001+0, "p1 right" }, // P1右
  {"P1 Shot"  , 0, CpsInp001+4, "p1 fire 1"}, // 射击

  {"P2 Coin"  , 0, CpsInp020+5, "p2 coin"  }, // P2投币
  {"P2 Start" , 0, CpsInp020+1, "p2 start" }, // P2开始
  {"P2 Up"    , 0, CpsInp000+3, "p2 up"    }, // P2上
  {"P2 Down"  , 0, CpsInp000+2, "p2 down"  }, // P2下
  {"P2 Left"  , 0, CpsInp000+1, "p2 left"  }, // P2左
  {"P2 Right" , 0, CpsInp000+0, "p2 right" }, // P2右
  {"P2 Shot"  , 0, CpsInp000+4, "p2 fire 1"}, // 射击

  {"Reset"      , 0, &CpsReset  , "reset"   }, // 重新启动
  {"Diagnostic" , 0, CpsInp021+1, "diag"    }, // 调试菜单
  {"Service"    , 0, CpsInp021+2, "service" }, // 服务
};
 STDINPUTINFO(Drv);
/* 完毕->定义控制器 */
/* 开始->游戏加载 */
static int DrvInit()
{
  int nRet=0; int i=0; unsigned char *pqs=NULL;
  Cps=2;
  nCpsRomLen=  3*0x080000; // 程序文件长度
  nCpsCodeLen= 3*0x080000; // XOR解密文件长度
  nCpsGfxLen=  8*0x400000; // 图像文件长度 
  nCpsZRomLen= 0x020000;   // QSound Z80声音文件长度
  nCpsQSamLen= 2*0x400000; // QSound 声音采样文件长度
  nRet=CpsInit(); if (nRet!=0) return 1;
  // 读取程序ROM (USA:mmxu.03 mmxu.04 mmxu.05 Janpan:mmxuj.03 mmxuj.04 mmxuj.05)
  for (i=0;i<3;i++)
  { nRet=BurnLoadRom(CpsRom+0x080000*i,3+i,1); if (nRet!=0) return 1; }
  // 解密ROM - XOR表 (USA:mmxux.03 mmxux.04 mmxux.05 Janpan:mmxujx.03 mmxujx.04 mmxujx.05)
  memcpy(CpsCode,CpsRom,nCpsCodeLen);
  for (i=0;i<3;i++)
  { nRet=BurnXorRom(CpsCode+0x080000*i,0+i,1); if (nRet!=0) return 1; }
  // 读取图像
  nRet=Cps2LoadTiles(CpsGfx           ,6);  // 读取 mmxu.13 mmxu.15 mmxu.17 mmxu.19
  nRet=Cps2LoadTiles(CpsGfx+4*0x400000,10); // 读取 mmxu.14 mmxu.16 mmxu.18 mmxu.20

  // 读取Z80 ROM
  nRet=BurnLoadRom(CpsZRom,14,1);           // 读取Z80 ROM mmxu.01
  
  // 读取QSound 采样 ROM
  pqs=(unsigned char *)CpsQSam;
  nRet=BurnLoadRom(pqs         ,15,1);      // 读取第一个采样 ROM mmxu.11
  nRet=BurnLoadRom(pqs+0x400000,16,1);      // 读取第二个采样 ROM mmxu.12
  BurnByteswap(pqs,nCpsQSamLen);
  nRet=CpsRunInit(); if (nRet!=0) return 1;
  return 0;
}
/* 完毕->游戏加载 */
/* 开始->退出游戏 */
static int DrvExit()
{

  CpsRunExit();
  CpsExit();
  nCpsQSamLen=0;
  nCpsZRomLen=0;
  nCpsGfxLen=0;
  nCpsCodeLen=0;
  nCpsRomLen=0;
  Cps=0;
  return 0;
}
/* 完毕->退出游戏 */
/************************************
  Mars Matrix - USA Revision: 000412
 ************************************/
 /* 开始->定义ROM信息 */
 static struct BurnRomInfo MmatrixRomDesc[]=
{
  // XOR ROM 信息 - 类型码:0x10
  {"mmxux.03" ,0x080000,0x7868ae77 ,0x10}, // 0
  {"mmxux.04" ,0x080000,0xa5ee6d07 ,0x10}, // 1
  {"mmxux.05" ,0x080000,0xb07745ff ,0x10}, // 2

  // 程序 ROM 信息 - 类型码:0x10
  {"mmxu.03" ,0x080000,0xab65b599 ,0x10},  // 3
  {"mmxu.04" ,0x080000,0x0135fc6c ,0x10},  // 4
  {"mmxu.05" ,0x080000,0xf1fd2b84 ,0x10},  // 5

  // 图像 ROM 信息 - 类型码:1
  {"mmxu.13" ,0x400000,0x04748718 ,1},     // 6
  {"mmxu.15" ,0x400000,0x38074f44 ,1},     // 7
  {"mmxu.17" ,0x400000,0xe4635e35 ,1},     // 8
  {"mmxu.19" ,0x400000,0x4400a3f2 ,1},     // 9
  {"mmxu.14" ,0x400000,0xd52bf491 ,1},     // 10
  {"mmxu.16" ,0x400000,0x23f70780 ,1},     // 11
  {"mmxu.18" ,0x400000,0x2562c9d5 ,1},     // 12
  {"mmxu.20" ,0x400000,0x583a9687 ,1},     // 13

  // QSound Z80 ROM 信息 - 类型码:2
  {"mmxu.01" ,0x020000,0xc57e8171 ,2},     // 14

  // QSound 采样 ROM 信息 - 类型码:2
  {"mmxu.11" ,0x400000,0x4180b39f ,2},     // 15
  {"mmxu.12" ,0x400000,0x95e22a59 ,2},     // 16
};
 STD_ROM_PICK(Mmatrix) STD_ROM_FN(Mmatrix)
/* 完毕->ROM信息 */
/* 开始->驱动说明 */
struct BurnDriver BurnDrvCpsMmatrix=
{ 
  // 基本信息
  {"mmatrix", "Mars Matrix : Hyper Solid Shooting (USA)", "Coder by WangMeng, 02/05/2003.",
   "Capcom", "CPS2", "2000", NULL, NULL},
  // 运行信息
  1, 2, HARDWARE_CAPCOM_CPS2, NULL, MmatrixRomInfo, MmatrixRomName, DrvInputInfo, NULL,
  // 驱动信息
  DrvInit, DrvExit,Cps2Frame,CpsRedraw,CpsAreaScan,&CpsRecalcPal,224,384,3,4
};
  
/* 完毕->驱动信息 */
/**************************************
  Mars Matrix - Janpan Revision: 000412
 **************************************/
/* 开始->定义ROM信息 */
 static struct BurnRomInfo MmatrixjRomDesc[]=
{
  // XOR ROM 信息 - 类型码:0x10
  {"mmxujx.03" ,0x080000,0x4ca1424f ,0x10}, // 0
  {"mmxujx.04" ,0x080000,0x61b9b2a1 ,0x10}, // 1
  {"mmxujx.05" ,0x080000,0xbdd304cf ,0x10}, // 2

  // 程序 ROM 信息 - 类型码:0x10
  {"mmxuj.03" ,0x080000,0x1d5de213 ,0x10},  // 3
  {"mmxuj.04" ,0x080000,0xd943a339 ,0x10},  // 4
  {"mmxuj.05" ,0x080000,0x0c8b4abb ,0x10},  // 5

  // 图像 ROM 信息 - 类型码:1
  {"mmxu.13" ,0x400000,0x04748718 ,1},     // 6
  {"mmxu.15" ,0x400000,0x38074f44 ,1},     // 7
  {"mmxu.17" ,0x400000,0xe4635e35 ,1},     // 8
  {"mmxu.19" ,0x400000,0x4400a3f2 ,1},     // 9
  {"mmxu.14" ,0x400000,0xd52bf491 ,1},     // 10
  {"mmxu.16" ,0x400000,0x23f70780 ,1},     // 11
  {"mmxu.18" ,0x400000,0x2562c9d5 ,1},     // 12
  {"mmxu.20" ,0x400000,0x583a9687 ,1},     // 13

  // QSound Z80 ROM 信息 - 类型码:2
  {"mmxu.01" ,0x020000,0xc57e8171 ,2},     // 14

  // QSound 采样 ROM 信息 - 类型码:2
  {"mmxu.11" ,0x400000,0x4180b39f ,2},     // 15
  {"mmxu.12" ,0x400000,0x95e22a59 ,2},     // 16
};
 STD_ROM_PICK(Mmatrixj) STD_ROM_FN(Mmatrixj)
/* 完毕->ROM信息 */
/* 开始->驱动说明 */
struct BurnDriver BurnDrvCpsMmatrixj=
{ 
  // 基本信息
  {"mmatrixj", "Mars Matrix : Hyper Solid Shooting (Janpan)", "Coder by WangMeng, 02/05/2003.",
   "Capcom", "CPS2", "2000", "mmatrix", NULL},
  // 运行信息
  1, 2, HARDWARE_CAPCOM_CPS2, NULL, MmatrixjRomInfo, MmatrixjRomName, DrvInputInfo, NULL,
  // 驱动信息
  DrvInit, DrvExit,Cps2Frame,CpsRedraw,CpsAreaScan,&CpsRecalcPal,224,384,3,4
};
  
/* 完毕->驱动信息 */
/* EOF */
/**************************************************************************
 如果你也想自行编写FBA的游戏驱动可以前往www.hyzgame.com查阅相关资料。超棒!
 **************************************************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值