diff --git a/src/burn/drv/dataeast/d_boogwing.cpp b/src/burn/drv/dataeast/d_boogwing.cpp index e1ff23907..0fd90ea1b 100644 --- a/src/burn/drv/dataeast/d_boogwing.cpp +++ b/src/burn/drv/dataeast/d_boogwing.cpp @@ -755,7 +755,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -768,7 +768,8 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); diff --git a/src/burn/drv/dataeast/d_cbuster.cpp b/src/burn/drv/dataeast/d_cbuster.cpp index 8f525d952..db122f8eb 100644 --- a/src/burn/drv/dataeast/d_cbuster.cpp +++ b/src/burn/drv/dataeast/d_cbuster.cpp @@ -657,7 +657,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -670,6 +670,8 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); + + deco16SoundScan(nAction, pnMin); deco16Scan(); } diff --git a/src/burn/drv/dataeast/d_cninja.cpp b/src/burn/drv/dataeast/d_cninja.cpp index 1ef2e7c54..f5e76f7d6 100644 --- a/src/burn/drv/dataeast/d_cninja.cpp +++ b/src/burn/drv/dataeast/d_cninja.cpp @@ -2383,7 +2383,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -2396,15 +2396,11 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); - BurnYM2203Scan(nAction, pnMin); - BurnYM2151Scan(nAction); - MSM6295Scan(0, nAction); - MSM6295Scan(1, nAction); - SCAN_VAR(scanline); SCAN_VAR(irq_mask); SCAN_VAR(irq_timer); @@ -2416,6 +2412,41 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) return 0; } +static INT32 StoneageScan(INT32 nAction, INT32 *pnMin) +{ + struct BurnArea ba; + + if (pnMin != NULL) { + *pnMin = 0x029722; + } + + if (nAction & ACB_MEMORY_RAM) { + memset(&ba, 0, sizeof(ba)); + ba.Data = AllRam; + ba.nLen = RamEnd-AllRam; + ba.szName = "All Ram"; + BurnAcb(&ba); + } + + if (nAction & ACB_DRIVER_DATA) { + SekScan(nAction); + ZetScan(nAction); + BurnYM2151Scan(nAction); + MSM6295Scan(0, nAction); + MSM6295Scan(1, nAction); + + deco16Scan(); + + SCAN_VAR(scanline); + SCAN_VAR(irq_mask); + SCAN_VAR(irq_timer); + + SCAN_VAR(DrvOkiBank); + } + + return 0; +} + // Caveman Ninja (World ver 4) @@ -2638,7 +2669,7 @@ struct BurnDriver BurnDrvStoneage = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_PREFIX_DATAEAST, GBF_PLATFORM, 0, NULL, stoneageRomInfo, stoneageRomName, NULL, NULL, DrvInputInfo, CninjaDIPInfo, - StoneageInit, DrvExit, StoneageFrame, CninjaDraw, DrvScan, &DrvRecalc, 0x800, + StoneageInit, DrvExit, StoneageFrame, CninjaDraw, StoneageScan, &DrvRecalc, 0x800, 256, 240, 4, 3 }; @@ -2666,7 +2697,7 @@ struct BurnDriver BurnDrvCninjabl = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_PREFIX_DATAEAST, GBF_PLATFORM, 0, NULL, cninjablRomInfo, cninjablRomName, NULL, NULL, DrvInputInfo, CninjaDIPInfo, - CninjablInit, DrvExit, StoneageFrame, CninjablDraw, DrvScan, &DrvRecalc, 0x800, + CninjablInit, DrvExit, StoneageFrame, CninjablDraw, StoneageScan, &DrvRecalc, 0x800, 256, 240, 4, 3 }; diff --git a/src/burn/drv/dataeast/d_darkseal.cpp b/src/burn/drv/dataeast/d_darkseal.cpp index b4951f3f5..ef9f7fa54 100644 --- a/src/burn/drv/dataeast/d_darkseal.cpp +++ b/src/burn/drv/dataeast/d_darkseal.cpp @@ -694,7 +694,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029698; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -707,6 +707,12 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); + + deco16SoundScan(nAction, pnMin); + + deco16Scan(); + + SCAN_VAR(vblank); } return 0; diff --git a/src/burn/drv/dataeast/d_dassault.cpp b/src/burn/drv/dataeast/d_dassault.cpp index c127f31e6..4b3645b40 100644 --- a/src/burn/drv/dataeast/d_dassault.cpp +++ b/src/burn/drv/dataeast/d_dassault.cpp @@ -923,7 +923,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -936,15 +936,11 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); - BurnYM2203Scan(nAction, pnMin); - BurnYM2151Scan(nAction); - MSM6295Scan(0, nAction); - MSM6295Scan(1, nAction); - SCAN_VAR(DrvOkiBank); DrvYM2151WritePort(0, DrvOkiBank); } diff --git a/src/burn/drv/dataeast/d_dec0.cpp b/src/burn/drv/dataeast/d_dec0.cpp index 2cccec960..094ee7fbb 100644 --- a/src/burn/drv/dataeast/d_dec0.cpp +++ b/src/burn/drv/dataeast/d_dec0.cpp @@ -2358,7 +2358,7 @@ UINT16 __fastcall Slyspy68KReadWord(UINT32 a) case 0x244000: { DrvSlyspyProtValue++; DrvSlyspyProtValue = DrvSlyspyProtValue % 4; - SlyspySetProtectionMap(DrvSlyspyProtValue); + SlyspySetProtectionMap(DrvSlyspyProtValue); return 0; } @@ -4614,7 +4614,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029719; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -4627,7 +4627,6 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - M6502Scan(nAction); BurnYM2203Scan(nAction, pnMin); BurnYM3812Scan(nAction, pnMin); MSM6295Scan(0, nAction); @@ -4637,15 +4636,36 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) SCAN_VAR(DrvSoundLatch); SCAN_VAR(DrvFlipScreen); SCAN_VAR(DrvPriority); + SCAN_VAR(DrvTileRamBank); + SCAN_VAR(DrvSlyspyProtValue); + SCAN_VAR(DrvMidresAnalogInput); } return 0; } +static INT32 BaddudesScan(INT32 nAction, INT32 *pnMin) +{ + if (nAction & ACB_DRIVER_DATA) { + M6502Scan(nAction); + } + + return DrvScan(nAction, pnMin); +} + static INT32 RobocopScan(INT32 nAction, INT32 *pnMin) { if (nAction & ACB_DRIVER_DATA) { -// h6280Scan(nAction); + h6280CpuScan(nAction); + } + + return BaddudesScan(nAction, pnMin); +} + +static INT32 SlyspyScan(INT32 nAction, INT32 *pnMin) +{ + if (nAction & ACB_DRIVER_DATA) { + h6280CpuScan(nAction); } return DrvScan(nAction, pnMin); @@ -4657,7 +4677,7 @@ struct BurnDriver BurnDrvBaddudes = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING, 2, HARDWARE_PREFIX_DATAEAST, GBF_SCRFIGHT, 0, NULL, BaddudesRomInfo, BaddudesRomName, NULL, NULL, Dec0InputInfo, BaddudesDIPInfo, - BaddudesInit, BaddudesExit, DrvFrame, NULL, DrvScan, + BaddudesInit, BaddudesExit, DrvFrame, NULL, BaddudesScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4667,7 +4687,7 @@ struct BurnDriver BurnDrvDrgninja = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_DATAEAST, GBF_SCRFIGHT, 0, NULL, DrgninjaRomInfo, DrgninjaRomName, NULL, NULL, Dec0InputInfo, BaddudesDIPInfo, - BaddudesInit, BaddudesExit, DrvFrame, NULL, DrvScan, + BaddudesInit, BaddudesExit, DrvFrame, NULL, BaddudesScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4677,7 +4697,7 @@ struct BurnDriver BurnDrvBouldash = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING, 2, HARDWARE_PREFIX_DATAEAST, GBF_MAZE, 0, NULL, BouldashRomInfo, BouldashRomName, NULL, NULL, Dec1InputInfo, BouldashDIPInfo, - BouldashInit, SlyspyExit, Dec1Frame, NULL, DrvScan, + BouldashInit, SlyspyExit, Dec1Frame, NULL, SlyspyScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4687,7 +4707,7 @@ struct BurnDriver BurnDrvBouldashj = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_DATAEAST, GBF_MAZE, 0, NULL, BouldashjRomInfo, BouldashjRomName, NULL, NULL, Dec1InputInfo, BouldashDIPInfo, - BouldashInit, SlyspyExit, Dec1Frame, NULL, DrvScan, + BouldashInit, SlyspyExit, Dec1Frame, NULL, SlyspyScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4697,7 +4717,7 @@ struct BurnDriver BurnDrvHbarrel = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_PREFIX_DATAEAST, GBF_VERSHOOT, 0, NULL, HbarrelRomInfo, HbarrelRomName, NULL, NULL, Dec0InputInfo, HbarrelDIPInfo, - HbarrelInit, BaddudesExit, DrvFrame, NULL, DrvScan, + HbarrelInit, BaddudesExit, DrvFrame, NULL, BaddudesScan, NULL, 0x400, 240, 256, 3, 4 }; @@ -4707,7 +4727,7 @@ struct BurnDriver BurnDrvHbarrelw = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_PREFIX_DATAEAST, GBF_VERSHOOT, 0, NULL, HbarrelwRomInfo, HbarrelwRomName, NULL, NULL, Dec0InputInfo, HbarrelDIPInfo, - HbarrelInit, BaddudesExit, DrvFrame, NULL, DrvScan, + HbarrelInit, BaddudesExit, DrvFrame, NULL, BaddudesScan, NULL, 0x400, 240, 256, 3, 4 }; @@ -4747,7 +4767,7 @@ struct BurnDriver BurnDrvMidres = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING, 2, HARDWARE_PREFIX_DATAEAST, GBF_SHOOT, 0, NULL, MidresRomInfo, MidresRomName, NULL, NULL, MidresInputInfo, MidresDIPInfo, - MidresInit, SlyspyExit, Dec1Frame, NULL, DrvScan, + MidresInit, SlyspyExit, Dec1Frame, NULL, SlyspyScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4757,7 +4777,7 @@ struct BurnDriver BurnDrvMidresu = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_DATAEAST, GBF_SHOOT, 0, NULL, MidresuRomInfo, MidresuRomName, NULL, NULL, MidresInputInfo, MidresuDIPInfo, - MidresInit, SlyspyExit, Dec1Frame, NULL, DrvScan, + MidresInit, SlyspyExit, Dec1Frame, NULL, SlyspyScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4767,7 +4787,7 @@ struct BurnDriver BurnDrvMidresj = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_DATAEAST, GBF_SHOOT, 0, NULL, MidresjRomInfo, MidresjRomName, NULL, NULL, MidresInputInfo, MidresuDIPInfo, - MidresInit, SlyspyExit, Dec1Frame, NULL, DrvScan, + MidresInit, SlyspyExit, Dec1Frame, NULL, SlyspyScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4827,7 +4847,7 @@ struct BurnDriver BurnDrvRobocopb = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_PREFIX_DATAEAST, GBF_HORSHOOT, 0, NULL, RobocopbRomInfo, RobocopbRomName, NULL, NULL, Dec0InputInfo, RobocopDIPInfo, - RobocopbInit, BaddudesExit, DrvFrame, NULL, DrvScan, + RobocopbInit, BaddudesExit, DrvFrame, NULL, BaddudesScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4837,7 +4857,7 @@ struct BurnDriver BurnDrvSlyspy = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING, 2, HARDWARE_PREFIX_DATAEAST, GBF_MISC, 0, NULL, SlyspyRomInfo, SlyspyRomName, NULL, NULL, Dec1InputInfo, SlyspyDIPInfo, - SlyspyInit, SlyspyExit, Dec1Frame, NULL, DrvScan, + SlyspyInit, SlyspyExit, Dec1Frame, NULL, SlyspyScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4847,7 +4867,7 @@ struct BurnDriver BurnDrvSlyspy2 = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_DATAEAST, GBF_MISC, 0, NULL, Slyspy2RomInfo, Slyspy2RomName, NULL, NULL, Dec1InputInfo, SlyspyDIPInfo, - SlyspyInit, SlyspyExit, Dec1Frame, NULL, DrvScan, + SlyspyInit, SlyspyExit, Dec1Frame, NULL, SlyspyScan, NULL, 0x400, 256, 240, 4, 3 }; @@ -4857,6 +4877,6 @@ struct BurnDriver BurnDrvSecretag = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_DATAEAST, GBF_MISC, 0, NULL, SecretagRomInfo, SecretagRomName, NULL, NULL, Dec1InputInfo, SlyspyDIPInfo, - SlyspyInit, SlyspyExit, Dec1Frame, NULL, DrvScan, + SlyspyInit, SlyspyExit, Dec1Frame, NULL, SlyspyScan, NULL, 0x400, 256, 240, 4, 3 }; diff --git a/src/burn/drv/dataeast/d_dietgogo.cpp b/src/burn/drv/dataeast/d_dietgogo.cpp index c6ceb57cb..60c8c3c8b 100644 --- a/src/burn/drv/dataeast/d_dietgogo.cpp +++ b/src/burn/drv/dataeast/d_dietgogo.cpp @@ -475,7 +475,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -488,7 +488,8 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); } diff --git a/src/burn/drv/dataeast/d_funkyjet.cpp b/src/burn/drv/dataeast/d_funkyjet.cpp index 9efbe4a3a..45594bc7f 100644 --- a/src/burn/drv/dataeast/d_funkyjet.cpp +++ b/src/burn/drv/dataeast/d_funkyjet.cpp @@ -608,7 +608,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -621,7 +621,8 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); } diff --git a/src/burn/drv/dataeast/d_lemmings.cpp b/src/burn/drv/dataeast/d_lemmings.cpp index d23244267..38ca80e89 100644 --- a/src/burn/drv/dataeast/d_lemmings.cpp +++ b/src/burn/drv/dataeast/d_lemmings.cpp @@ -710,7 +710,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -726,6 +726,9 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) BurnYM2151Scan(nAction); MSM6295Scan(0, nAction); + + SCAN_VAR(FakeTrackBallX); + SCAN_VAR(FakeTrackBallY); } return 0; diff --git a/src/burn/drv/dataeast/d_rohga.cpp b/src/burn/drv/dataeast/d_rohga.cpp index e1cd20b94..9935ab392 100644 --- a/src/burn/drv/dataeast/d_rohga.cpp +++ b/src/burn/drv/dataeast/d_rohga.cpp @@ -1653,7 +1653,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -1666,7 +1666,8 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); diff --git a/src/burn/drv/dataeast/d_simpl156.cpp b/src/burn/drv/dataeast/d_simpl156.cpp index 2089d2b69..df83a3aac 100644 --- a/src/burn/drv/dataeast/d_simpl156.cpp +++ b/src/burn/drv/dataeast/d_simpl156.cpp @@ -568,7 +568,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029707; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -588,12 +588,12 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) deco16Scan(); SCAN_VAR(DrvOkiBank); - } - - if (nAction & ACB_WRITE) { - INT32 bank = DrvOkiBank; - DrvOkiBank = -1; - oki_set_bank(bank); + + if (nAction & ACB_WRITE) { + INT32 bank = DrvOkiBank; + DrvOkiBank = -1; + oki_set_bank(bank); + } } return 0; diff --git a/src/burn/drv/dataeast/d_supbtime.cpp b/src/burn/drv/dataeast/d_supbtime.cpp index fcf6f0f5b..28418d900 100644 --- a/src/burn/drv/dataeast/d_supbtime.cpp +++ b/src/burn/drv/dataeast/d_supbtime.cpp @@ -534,7 +534,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -547,7 +547,8 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); } diff --git a/src/burn/drv/dataeast/d_tumblep.cpp b/src/burn/drv/dataeast/d_tumblep.cpp index ff7bdef4d..8aa2e1403 100644 --- a/src/burn/drv/dataeast/d_tumblep.cpp +++ b/src/burn/drv/dataeast/d_tumblep.cpp @@ -490,7 +490,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -503,12 +503,10 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); - - // BurnYM2151Scan(nAction); - // MSM6295Scan(0, nAction); } return 0; diff --git a/src/burn/drv/dataeast/d_vaportra.cpp b/src/burn/drv/dataeast/d_vaportra.cpp index 825f287d4..ca63b9c31 100644 --- a/src/burn/drv/dataeast/d_vaportra.cpp +++ b/src/burn/drv/dataeast/d_vaportra.cpp @@ -595,7 +595,7 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) struct BurnArea ba; if (pnMin != NULL) { - *pnMin = 0x029682; + *pnMin = 0x029722; } if (nAction & ACB_MEMORY_RAM) { @@ -608,7 +608,8 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin) if (nAction & ACB_DRIVER_DATA) { SekScan(nAction); - // huc6280 + + deco16SoundScan(nAction, pnMin); deco16Scan(); } diff --git a/src/burn/drv/dataeast/deco16ic.cpp b/src/burn/drv/dataeast/deco16ic.cpp index 0dc762dc8..82db90826 100644 --- a/src/burn/drv/dataeast/deco16ic.cpp +++ b/src/burn/drv/dataeast/deco16ic.cpp @@ -914,7 +914,19 @@ void deco16SoundUpdate(INT16 *buf, INT32 len) if (deco16_sound_enable[3]) MSM6295Render(1, buf, len); } - +void deco16SoundScan(INT32 nAction, INT32 *pnMin) +{ + if (nAction & ACB_DRIVER_DATA) { + h6280CpuScan(nAction); + + SCAN_VAR(deco16_soundlatch); + + if (deco16_sound_enable[0]) BurnYM2151Scan(nAction); + if (deco16_sound_enable[1]) BurnYM2203Scan(nAction, pnMin); + if (deco16_sound_enable[2]) MSM6295Scan(0, nAction); + if (deco16_sound_enable[3]) MSM6295Scan(1, nAction); + } +} //--------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/src/burn/drv/dataeast/deco16ic.h b/src/burn/drv/dataeast/deco16ic.h index d8078121c..af86b3108 100644 --- a/src/burn/drv/dataeast/deco16ic.h +++ b/src/burn/drv/dataeast/deco16ic.h @@ -74,6 +74,7 @@ void deco16SoundReset(); void deco16SoundInit(UINT8 *rom, UINT8 *ram, INT32 huc_clock, INT32 ym2203, void (ym2151_port)(UINT32,UINT32), double ym2151vol, INT32 msmclk0, double msmvol0, INT32 msmclk1, double msmvol1); void deco16SoundExit(); void deco16SoundUpdate(INT16 *buf, INT32 len); +void deco16SoundScan(INT32 nAction, INT32 *pnMin); // decrypt routines