Tidied and fixed Data East savestates where necessary

This commit is contained in:
Barry Harris 2012-02-02 15:21:35 +00:00
parent 3200c8c555
commit fed8d04d34
16 changed files with 136 additions and 61 deletions

View File

@ -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();

View File

@ -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();
}

View File

@ -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
};

View File

@ -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;

View File

@ -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);
}

View File

@ -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
};

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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;

View File

@ -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();

View File

@ -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;

View File

@ -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();
}

View File

@ -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;

View File

@ -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();
}

View File

@ -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);
}
}
//---------------------------------------------------------------------------------------------------------------------------------------------------

View File

@ -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