diff --git a/src/burn/drv/capcom/cps.h b/src/burn/drv/capcom/cps.h index 4e16b6340..240bd7ef5 100644 --- a/src/burn/drv/capcom/cps.h +++ b/src/burn/drv/capcom/cps.h @@ -242,6 +242,7 @@ extern INT32 Pzloop2; extern INT32 Ssf2tb; extern INT32 Dinohunt; extern INT32 Port6SoundWrite; +extern INT32 CpsBootlegEEPROM; extern UINT8* CpsEncZRom; diff --git a/src/burn/drv/capcom/cps_mem.cpp b/src/burn/drv/capcom/cps_mem.cpp index 59ad37a7f..99ce13b2a 100644 --- a/src/burn/drv/capcom/cps_mem.cpp +++ b/src/burn/drv/capcom/cps_mem.cpp @@ -393,7 +393,7 @@ INT32 CpsAreaScan(INT32 nAction, INT32 *pnMin) } } - if (Cps == 2 || Cps1Qs == 1 || PangEEP == 1) { // Scan EEPROM + if (Cps == 2 || Cps1Qs == 1 || PangEEP == 1 || CpsBootlegEEPROM == 1) { // Scan EEPROM EEPROMScan(nAction, pnMin); } diff --git a/src/burn/drv/capcom/cps_run.cpp b/src/burn/drv/capcom/cps_run.cpp index 5e626b860..b2faefd62 100644 --- a/src/burn/drv/capcom/cps_run.cpp +++ b/src/burn/drv/capcom/cps_run.cpp @@ -44,7 +44,7 @@ static void CpsQSoundCheatSearchCallback() static INT32 DrvReset() { // Reset machine - if (Cps == 2 || PangEEP || Cps1Qs == 1) EEPROMReset(); + if (Cps == 2 || PangEEP || Cps1Qs == 1 || CpsBootlegEEPROM) EEPROMReset(); SekOpen(0); SekReset(); @@ -119,7 +119,7 @@ INT32 CpsRunInit() if (Cps == 2 || PangEEP) { EEPROMInit(&cps2_eeprom_interface); } else { - if (Cps1Qs == 1) { + if (Cps1Qs == 1 || CpsBootlegEEPROM) { EEPROMInit(&qsound_eeprom_interface); } } @@ -145,7 +145,7 @@ INT32 CpsRunInit() } } - if (Cps == 2 || PangEEP || Cps1Qs == 1) EEPROMReset(); + if (Cps == 2 || PangEEP || Cps1Qs == 1 || CpsBootlegEEPROM) EEPROMReset(); if (CpsRunInitCallbackFunction) { CpsRunInitCallbackFunction(); @@ -167,7 +167,7 @@ INT32 CpsRunInit() INT32 CpsRunExit() { - if (Cps == 2 || PangEEP || Cps1Qs == 1) EEPROMExit(); + if (Cps == 2 || PangEEP || Cps1Qs == 1 || CpsBootlegEEPROM) EEPROMExit(); // Sound exit if (((Cps == 2) && !Cps2DisableQSnd) || Cps1Qs == 1) QsndExit(); @@ -199,6 +199,7 @@ INT32 CpsRunExit() Cps1VBlankIRQLine = 2; Cps2DisableQSnd = 0; + CpsBootlegEEPROM = 0; return 0; } diff --git a/src/burn/drv/capcom/cps_rw.cpp b/src/burn/drv/capcom/cps_rw.cpp index 3d20e939e..137bd4bd7 100644 --- a/src/burn/drv/capcom/cps_rw.cpp +++ b/src/burn/drv/capcom/cps_rw.cpp @@ -33,6 +33,7 @@ INT32 Pzloop2 = 0; INT32 Ssf2tb = 0; INT32 Dinohunt = 0; INT32 Port6SoundWrite = 0; +INT32 CpsBootlegEEPROM = 0; CpsRWSoundCommandCallback CpsRWSoundCommandCallbackFunction = NULL; @@ -192,7 +193,7 @@ static UINT8 CpsReadPort(const UINT32 ia) // CPS1 EEPROM read if (ia == 0xC007) { - if (Cps1Qs) { + if (Cps1Qs || CpsBootlegEEPROM) { return EEPROMRead(); } else { return 0; @@ -360,7 +361,7 @@ void CpsWritePort(const UINT32 ia, UINT8 d) } } - if (Cps1Qs == 1) { + if (Cps1Qs == 1 || CpsBootlegEEPROM) { //CPS1 EEPROM write if (ia == 0xc007) { EEPROMWrite(d & 0x40, d & 0x80, d & 0x01); @@ -425,7 +426,7 @@ void __fastcall CpsWriteByte(UINT32 a,UINT8 d) return; } - if (Cps1Qs == 1) { + if (Cps1Qs == 1 || CpsBootlegEEPROM) { // CPS1 EEPROM if (a == 0xf1c007) { CpsWritePort(a & 0xC00F, d); diff --git a/src/burn/drv/capcom/d_cps1.cpp b/src/burn/drv/capcom/d_cps1.cpp index e04268dde..b89a019b5 100644 --- a/src/burn/drv/capcom/d_cps1.cpp +++ b/src/burn/drv/capcom/d_cps1.cpp @@ -1335,6 +1335,46 @@ static struct BurnInputInfo WofhfhInputList[] = STDINPUTINFO(Wofhfh) +static struct BurnInputInfo WofhInputList[] = +{ + {"P1 Coin" , BIT_DIGITAL , CpsInp018+0, "p1 coin" }, + {"P1 Start" , BIT_DIGITAL , CpsInp018+4, "p1 start" }, + {"P1 Up" , BIT_DIGITAL , CpsInp001+3, "p1 up" }, + {"P1 Down" , BIT_DIGITAL , CpsInp001+2, "p1 down" }, + {"P1 Left" , BIT_DIGITAL , CpsInp001+1, "p1 left" }, + {"P1 Right" , BIT_DIGITAL , CpsInp001+0, "p1 right" }, + {"P1 Attack" , BIT_DIGITAL , CpsInp001+4, "p1 fire 1" }, + {"P1 Jump" , BIT_DIGITAL , CpsInp001+5, "p1 fire 2" }, + + {"P2 Coin" , BIT_DIGITAL , CpsInp018+1, "p2 coin" }, + {"P2 Start" , BIT_DIGITAL , CpsInp018+5, "p2 start" }, + {"P2 Up" , BIT_DIGITAL , CpsInp000+3, "p2 up" }, + {"P2 Down" , BIT_DIGITAL , CpsInp000+2, "p2 down" }, + {"P2 Left" , BIT_DIGITAL , CpsInp000+1, "p2 left" }, + {"P2 Right" , BIT_DIGITAL , CpsInp000+0, "p2 right" }, + {"P2 Attack" , BIT_DIGITAL , CpsInp000+4, "p2 fire 1" }, + {"P2 Jump" , BIT_DIGITAL , CpsInp000+5, "p2 fire 2" }, + + {"P3 Coin" , BIT_DIGITAL , CpsInp177+6, "p3 coin" }, // doesn't work in some sets? + {"P3 Start" , BIT_DIGITAL , CpsInp177+7, "p3 start" }, + {"P3 Up" , BIT_DIGITAL , CpsInp177+3, "p3 up" }, + {"P3 Down" , BIT_DIGITAL , CpsInp177+2, "p3 down" }, + {"P3 Left" , BIT_DIGITAL , CpsInp177+1, "p3 left" }, + {"P3 Right" , BIT_DIGITAL , CpsInp177+0, "p3 right" }, + {"P3 Attack" , BIT_DIGITAL , CpsInp177+4, "p3 fire 1" }, + {"P3 Jump" , BIT_DIGITAL , CpsInp177+5, "p3 fire 2" }, + + {"Reset" , BIT_DIGITAL , &CpsReset, "reset" }, + {"Service" , BIT_DIGITAL , CpsInp018+2, "service" }, + {"Dip A" , BIT_DIPSWITCH, &Cpi01A , "dip" }, + {"Dip B" , BIT_DIPSWITCH, &Cpi01C , "dip" }, + {"Dip C" , BIT_DIPSWITCH, &Cpi01E , "dip" }, +}; + +STDINPUTINFO(Wofh) + +// don't know where this one reads config data from (if at all), reads values at 0x80001a, 0x80001e, 0x80001f (but values make no difference) +// if I force it to use EEPROM, the config data gets forgotten static struct BurnInputInfo WofsjbInputList[] = { {"P1 Coin" , BIT_DIGITAL , CpsInp018+0, "p1 coin" }, @@ -3416,27 +3456,132 @@ STDDIPINFO(Wofhfh) static struct BurnDIPInfo WofhDIPList[]= { // Defaults - {0x1b, 0xff, 0xff, 0x03, NULL }, - {0x1c, 0xff, 0xff, 0x00, NULL }, - {0x1d, 0xff, 0xff, 0xff, NULL }, + {0x1a, 0xff, 0xff, 0x00, NULL }, + {0x1b, 0xff, 0xff, 0x00, NULL }, + {0x1c, 0xff, 0xff, 0x13, NULL }, // Dip A - {0 , 0xfe, 0 , 2 , "Play Mode" }, - {0x1b, 0x01, 0x03, 0x03, "Normal" }, - {0x1b, 0x01, 0x03, 0x00, "Tournament" }, + {0 , 0xfe, 0 , 3 , "Coin Slots" }, + {0x1a, 0x01, 0x03, 0x02, "2 Players 1 Shooter" }, + {0x1a, 0x01, 0x03, 0x01, "3 Players 1 Shooter" }, + {0x1a, 0x01, 0x03, 0x00, "3 Players 3 Shooters" }, // Dip B {0 , 0xfe, 0 , 4 , "Coinage" }, - {0x1c, 0x01, 0x03, 0x00, "1 Coin 1 Credit" }, - {0x1c, 0x01, 0x03, 0x01, "1 Coin 2 Credits" }, - {0x1c, 0x01, 0x03, 0x02, "1 Coin 3 Credits" }, - {0x1c, 0x01, 0x03, 0x03, "1 Coin 4 Credits" }, + {0x1b, 0x01, 0x03, 0x00, "1 Coin 1 Credit" }, + {0x1b, 0x01, 0x03, 0x01, "1 Coin 2 Credits" }, + {0x1b, 0x01, 0x03, 0x02, "1 Coin 3 Credits" }, + {0x1b, 0x01, 0x03, 0x03, "1 Coin 4 Credits" }, // Dip C + {0 , 0xfe, 0 , 8 , "Difficulty" }, + {0x1c, 0x01, 0x07, 0x00, "Extra Easy" }, + {0x1c, 0x01, 0x07, 0x01, "Very Easy" }, + {0x1c, 0x01, 0x07, 0x02, "Easy" }, + {0x1c, 0x01, 0x07, 0x03, "Normal" }, + {0x1c, 0x01, 0x07, 0x04, "Hard" }, + {0x1c, 0x01, 0x07, 0x05, "Very Hard" }, + {0x1c, 0x01, 0x07, 0x06, "Extra Hard" }, + {0x1c, 0x01, 0x07, 0x07, "Hardest" }, + + {0 , 0xfe, 0 , 8 , "Lives" }, + {0x1c, 0x01, 0x70, 0x70, "Start 4 Continue 5" }, + {0x1c, 0x01, 0x70, 0x60, "Start 3 Continue 4" }, + {0x1c, 0x01, 0x70, 0x50, "Start 2 Continue 3" }, + {0x1c, 0x01, 0x70, 0x40, "Start 1 Continue 2" }, + {0x1c, 0x01, 0x70, 0x30, "Start 4 Continue 4" }, + {0x1c, 0x01, 0x70, 0x20, "Start 3 Continue 3" }, + {0x1c, 0x01, 0x70, 0x10, "Start 2 Continue 2" }, + {0x1c, 0x01, 0x70, 0x00, "Start 1 Continue 1" }, }; STDDIPINFO(Wofh) +static struct BurnDIPInfo Wof3jsDIPList[]= +{ + // Defaults + {0x1a, 0xff, 0xff, 0x00, NULL }, + {0x1b, 0xff, 0xff, 0x00, NULL }, + {0x1c, 0xff, 0xff, 0x00, NULL }, + + // Dip A + {0 , 0xfe, 0 , 4 , "Coinage" }, + {0x1a, 0x01, 0x03, 0x01, "2 Coins 1 Credit" }, + {0x1a, 0x01, 0x03, 0x00, "1 Coin 1 Credit" }, + {0x1a, 0x01, 0x03, 0x02, "1 Coin 2 Credits" }, + {0x1a, 0x01, 0x03, 0x03, "1 Coin 3 Credits" }, + + // Dip B + {0 , 0xfe, 0 , 2 , "Coin Slots" }, + {0x1b, 0x01, 0x01, 0x01, "3 Players 1 Shooter" }, + {0x1b, 0x01, 0x01, 0x00, "3 Players 3 Shooters" }, + + // Dip C + // not sure about difficulty (no way to test) + {0 , 0xfe, 0 , 8 , "Difficulty" }, + {0x1c, 0x01, 0x07, 0x00, "Value 0" }, + {0x1c, 0x01, 0x07, 0x01, "Value 1" }, + {0x1c, 0x01, 0x07, 0x02, "Value 2" }, + {0x1c, 0x01, 0x07, 0x03, "Value 3" }, + {0x1c, 0x01, 0x07, 0x04, "Value 4" }, + {0x1c, 0x01, 0x07, 0x05, "Value 5" }, + {0x1c, 0x01, 0x07, 0x06, "Value 6" }, + {0x1c, 0x01, 0x07, 0x07, "Value 7" }, + + {0 , 0xfe, 0 , 5 , "Lives" }, + {0x1c, 0x01, 0x70, 0x40, "Start 1 Continue 1" }, + {0x1c, 0x01, 0x70, 0x30, "Start 4 Continue 3" }, + {0x1c, 0x01, 0x70, 0x20, "Start 4 Continue 4" }, + {0x1c, 0x01, 0x70, 0x10, "Start 3 Continue 3" }, + {0x1c, 0x01, 0x70, 0x00, "Start 2 Continue 2" }, +}; + +STDDIPINFO(Wof3js) + +static struct BurnDIPInfo Wof3sjDIPList[]= +{ + // Defaults + {0x1a, 0xff, 0xff, 0x00, NULL }, + {0x1b, 0xff, 0xff, 0x13, NULL }, + {0x1c, 0xff, 0xff, 0x00, NULL }, + + // Dip A + {0 , 0xfe, 0 , 4 , "Coinage" }, + {0x1a, 0x01, 0x03, 0x00, "1 Coin 1 Credit" }, + {0x1a, 0x01, 0x03, 0x01, "1 Coin 2 Credits" }, + {0x1a, 0x01, 0x03, 0x02, "1 Coin 3 Credits" }, + {0x1a, 0x01, 0x03, 0x03, "1 Coin 4 Credits" }, + + // Dip B + {0 , 0xfe, 0 , 8 , "Difficulty" }, + {0x1b, 0x01, 0x07, 0x00, "Extra Easy" }, + {0x1b, 0x01, 0x07, 0x01, "Very Easy" }, + {0x1b, 0x01, 0x07, 0x02, "Easy" }, + {0x1b, 0x01, 0x07, 0x03, "Normal" }, + {0x1b, 0x01, 0x07, 0x04, "Hard" }, + {0x1b, 0x01, 0x07, 0x05, "Very Hard" }, + {0x1b, 0x01, 0x07, 0x06, "Extra Hard" }, + {0x1b, 0x01, 0x07, 0x07, "Hardest" }, + + {0 , 0xfe, 0 , 8 , "Lives" }, + {0x1b, 0x01, 0x70, 0x70, "Start 4 Continue 5" }, + {0x1b, 0x01, 0x70, 0x60, "Start 3 Continue 4" }, + {0x1b, 0x01, 0x70, 0x50, "Start 2 Continue 3" }, + {0x1b, 0x01, 0x70, 0x40, "Start 1 Continue 2" }, + {0x1b, 0x01, 0x70, 0x30, "Start 4 Continue 4" }, + {0x1b, 0x01, 0x70, 0x20, "Start 3 Continue 3" }, + {0x1b, 0x01, 0x70, 0x10, "Start 2 Continue 2" }, + {0x1b, 0x01, 0x70, 0x00, "Start 1 Continue 1" }, + + // Dip C + {0 , 0xfe, 0 , 3 , "Coin Slots" }, + {0x1c, 0x01, 0x03, 0x02, "2 Players 1 Shooter" }, + {0x1c, 0x01, 0x03, 0x01, "3 Players 1 Shooter" }, + {0x1c, 0x01, 0x03, 0x00, "3 Players 3 Shooters" }, +}; + +STDDIPINFO(Wof3sj) + // Rom Definitions #define A_BOARD_PLDS \ @@ -11089,6 +11234,7 @@ static INT32 DinopicInit() INT32 nRet = 0; Cps1DisablePSnd = 1; + CpsBootlegEEPROM = 1; Cps1GfxLoadCallbackFunction = CpsLoadTilesDinopic; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; @@ -11154,6 +11300,7 @@ static INT32 DinotpicInit() INT32 nRet = 0; Cps1DisablePSnd = 1; + CpsBootlegEEPROM = 1; Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; @@ -11184,6 +11331,7 @@ static INT32 DinohuntInit() INT32 nRet = 0; Dinohunt = 1; + CpsBootlegEEPROM = 1; nRet = TwelveMhzInit(); @@ -11968,6 +12116,7 @@ static INT32 PunipicInit() Cps1DisablePSnd = 1; bCpsUpdatePalEveryFrame = 1; Cps1OverrideLayers = 1; + CpsBootlegEEPROM = 1; Cps1GfxLoadCallbackFunction = CpsLoadTilesDinopic; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; @@ -12003,6 +12152,7 @@ static INT32 Punipic2Init() Cps1DisablePSnd = 1; bCpsUpdatePalEveryFrame = 1; Cps1OverrideLayers = 1; + CpsBootlegEEPROM = 1; Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160Alt; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; @@ -12031,6 +12181,7 @@ static INT32 Punipic3Init() Cps1DisablePSnd = 1; bCpsUpdatePalEveryFrame = 1; Cps1OverrideLayers = 1; + CpsBootlegEEPROM = 1; Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; @@ -12846,7 +12997,7 @@ UINT8 __fastcall WofhInputReadByte(UINT32 a) } case 0x880007: { - return 0xff; + return ~Inp177; } case 0x880008: { @@ -12862,7 +13013,7 @@ UINT8 __fastcall WofhInputReadByte(UINT32 a) } case 0x880e78: { - return ~Inp177; + return 0xff; } default: { @@ -12870,7 +13021,7 @@ UINT8 __fastcall WofhInputReadByte(UINT32 a) } } - return 0; + return 0x00; } UINT16 __fastcall WofhInputReadWord(UINT32 a) @@ -13043,91 +13194,6 @@ static INT32 Wof3jsInit() return TwelveMhzInit(); } -UINT8 __fastcall Wof3jsaInputReadByte(UINT32 a) -{ - switch (a) { - case 0x880000: { - return ~Inp000; - } - - case 0x880001: { - return ~Inp001; - } - - case 0x880006: { - return ~Inp018; - } - - case 0x880007: { - return 0xff; - } - - case 0x880008: { - return ~Inp177; - } - - case 0x88000a: { - return ~Cpi01A; - } - - case 0x88000c: { - return ~Cpi01C; - } - - case 0x880e78: { - return ~Cpi01E; - } - - default: { - bprintf(PRINT_NORMAL, _T("Input Read Byte %x\n"), a); - } - } - - return 0; -} - -UINT16 __fastcall Wof3jsaInputReadWord(UINT32 a) -{ - SEK_DEF_READ_WORD(3, a); -} - -void __fastcall Wof3jsaInputWriteByte(UINT32 a, UINT8 d) -{ - switch (a) { - case 0x88000e: { - PsndSyncZ80((INT64)SekTotalCycles() * nCpsZ80Cycles / nCpsCycles); - - PsndCode = d; - return; - } - - default: { - bprintf(PRINT_NORMAL, _T("Input Write Byte %x, %x\n"), a, d); - } - } -} - -void __fastcall Wof3jsaInputWriteWord(UINT32 a, UINT16 d) -{ - switch (a) { - case 0x88000e: { - PsndSyncZ80((INT64)SekTotalCycles() * nCpsZ80Cycles / nCpsCycles); - - PsndCode = d & 0xff; - return; - } - - case 0x890000: { - // ??? - return; - } - - default: { - bprintf(PRINT_NORMAL, _T("Input Write word %x, %x\n"), a, d); - } - } -} - static void Wof3jsaCallback() { UINT8 *pTemp = (UINT8*)BurnMalloc(0x40000); @@ -13160,10 +13226,10 @@ static INT32 Wof3jsaInit() SekOpen(0); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); - SekSetReadByteHandler(3, Wof3jsaInputReadByte); - SekSetReadWordHandler(3, Wof3jsaInputReadWord); - SekSetWriteByteHandler(3, Wof3jsaInputWriteByte); - SekSetWriteWordHandler(3, Wof3jsaInputWriteWord); + SekSetReadByteHandler(3, WofhInputReadByte); + SekSetReadWordHandler(3, WofhInputReadWord); + SekSetWriteByteHandler(3, WofhInputWriteByte); + SekSetWriteWordHandler(3, WofhInputWriteWord); SekMapHandler(4, 0xff0000, 0xffffff, SM_WRITE); SekSetWriteByteHandler(4, WofbFFWriteByte); SekSetWriteWordHandler(4, WofbFFWriteWord); @@ -13188,7 +13254,7 @@ UINT8 __fastcall Wof3sjInputReadByte(UINT32 a) } case 0x880009: { - return 0xff; + return ~Inp177; } case 0x88000a: { @@ -13208,7 +13274,7 @@ UINT8 __fastcall Wof3sjInputReadByte(UINT32 a) } case 0x880e7e: { - return ~Inp177; + return 0xff; } default: { @@ -13416,6 +13482,7 @@ static INT32 WofbInit() bCpsUpdatePalEveryFrame = 1; Cps1OverrideLayers = 1; Port6SoundWrite = 1; + CpsBootlegEEPROM = 1; CpsLayer1XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0; @@ -15440,7 +15507,7 @@ struct BurnDriver BurnDrvCpsWofh = { "Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 1, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u4E09\u570B\u82F1\u96C4\u50B3\0Sangokushi II: Sanguo YingXiongZhuan (Chinese bootleg set 1, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, WofhRomInfo, WofhRomName, NULL, NULL, WofhfhInputInfo, WofhDIPInfo, + NULL, WofhRomInfo, WofhRomName, NULL, NULL, WofhInputInfo, WofhDIPInfo, WofhInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15450,7 +15517,7 @@ struct BurnDriver BurnDrvCpsWofha = { "Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 2, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u4E09\u570B\u82F1\u96C4\u50B3\0Sangokushi II: Sanguo YingXiongZhuan (Chinese bootleg set 2, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, WofhaRomInfo, WofhaRomName, NULL, NULL, WofhfhInputInfo, WofhDIPInfo, + NULL, WofhaRomInfo, WofhaRomName, NULL, NULL, WofhInputInfo, WofhDIPInfo, WofhInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15460,7 +15527,7 @@ struct BurnDriver BurnDrvCpsSgyxz = { "Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 3, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u4E09\u570B\u82F1\u96C4\u50B3\0Sangokushi II: Sanguo YingXiongZhuan (Chinese bootleg set 3, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, SgyxzRomInfo, SgyxzRomName, NULL, NULL, WofhfhInputInfo, WofhDIPInfo, + NULL, SgyxzRomInfo, SgyxzRomName, NULL, NULL, WofhInputInfo, WofhDIPInfo, SgyxzInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15470,7 +15537,7 @@ struct BurnDriver BurnDrvCpsWof3js = { "Sangokushi II: San Jian Sheng (Chinese bootleg set 1, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u4E09\u528D\u8056\0Sangokushi II: San Jian Sheng (Chinese bootleg set 1, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, Wof3jsRomInfo, Wof3jsRomName, NULL, NULL, WofhfhInputInfo, WofhfhDIPInfo, + NULL, Wof3jsRomInfo, Wof3jsRomName, NULL, NULL, WofhInputInfo, Wof3jsDIPInfo, Wof3jsInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15480,7 +15547,7 @@ struct BurnDriver BurnDrvCpsWof3jsa = { "Sangokushi II: San Jian Sheng (Chinese bootleg set 2, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u4E09\u528D\u8056\0Sangokushi II: San Jian Sheng (Chinese bootleg set 2, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, Wof3jsaRomInfo, Wof3jsaRomName, NULL, NULL, WofhfhInputInfo, WofhfhDIPInfo, + NULL, Wof3jsaRomInfo, Wof3jsaRomName, NULL, NULL, WofhInputInfo, WofhDIPInfo, Wof3jsaInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15490,7 +15557,7 @@ struct BurnDriver BurnDrvCpsWof3sj = { "Sangokushi II: San Sheng Jian (Chinese bootleg set 1, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u4E09\u5723\u5251\0Sangokushi II: San Sheng Jian (Chinese bootleg set 1, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, Wof3sjRomInfo, Wof3sjRomName, NULL, NULL, WofhfhInputInfo, WofhfhDIPInfo, + NULL, Wof3sjRomInfo, Wof3sjRomName, NULL, NULL, WofhInputInfo, Wof3sjDIPInfo, Wof3sjInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15500,7 +15567,7 @@ struct BurnDriver BurnDrvCpsWof3sja = { "Sangokushi II: San Sheng Jian (Chinese bootleg set 2, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u4E09\u5723\u5251\0Sangokushi II: San Sheng Jian (Chinese bootleg set 2, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, Wof3sjaRomInfo, Wof3sjaRomName, NULL, NULL, WofhfhInputInfo, WofhfhDIPInfo, + NULL, Wof3sjaRomInfo, Wof3sjaRomName, NULL, NULL, WofhInputInfo, Wof3sjDIPInfo, Wof3sjInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15510,7 +15577,7 @@ struct BurnDriver BurnDrvCpsWofsj = { "Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 1, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u5723\u5251\u4E09\0Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 1, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, WofsjRomInfo, WofsjRomName, NULL, NULL, WofInputInfo, WofDIPInfo, + NULL, WofsjRomInfo, WofsjRomName, NULL, NULL, WofhInputInfo, Wof3sjDIPInfo, WofsjInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15520,7 +15587,7 @@ struct BurnDriver BurnDrvCpsWofsja = { "Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 2, 921005 Asia)\0", NULL, "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u5723\u5251\u4E09\0Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 2, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, WofsjaRomInfo, WofsjaRomName, NULL, NULL, WofInputInfo, WofDIPInfo, + NULL, WofsjaRomInfo, WofsjaRomName, NULL, NULL, WofhInputInfo, Wof3sjDIPInfo, WofsjInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15530,7 +15597,7 @@ struct BurnDriver BurnDrvCpsWofsjb = { "Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 3, 921005 Asia)\0", "No sound", "bootleg", "CPS1", L"\u4E09\u56FD\u5FD7II: \u5723\u5251\u4E09\0Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 3, 921005 Asia)\0", NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, - NULL, WofsjbRomInfo, WofsjbRomName, NULL, NULL, WofsjbInputInfo, WofDIPInfo, + NULL, WofsjbRomInfo, WofsjbRomName, NULL, NULL, WofsjbInputInfo, NULL, WofsjbInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 };