ITPub博客

首页 > 应用开发 > IT综合 > CPS2-FBA驱动开发实例 (转)

CPS2-FBA驱动开发实例 (转)

原创 IT综合 作者:worldblog 时间:2007-12-13 15:18:09 0 删除 编辑
CPS2-FBA驱动开发实例 (转)[@more@]

/* 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查阅相关资料。超棒! **************************************************************************/


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-992922/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    6241
  • 访问量
    2405155