CPS2-FBA驅動開發例項 (轉)

worldblog發表於2007-12-13
CPS2-FBA驅動開發例項 (轉)[@more@]

/* CPS2-FBA 《Mars Matrix》 */ #include "cps.h" /* Auther: WangMeng (HeartIcy@163.com) ------- Changelog: 02/05/ Fixed Rominfo Type Error =..= 02/05/2003 Supported Janpan editor - needed Xor's ed 02/05/2003 Supported English editor - needed Xor's Cracked ------- Doubler 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; // 長度 nCpdeLen= 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 BurnBytes(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的遊戲驅動可以前往查閱相關資料。超棒! **************************************************************************/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992922/,如需轉載,請註明出處,否則將追究法律責任。

相關文章