SFX lost after savestate load in NMK004 games, Super Spacefortress Macross and possibly others

This commit is contained in:
dinkc64 2014-04-05 07:07:34 +00:00
parent f7bf100293
commit 312ef8b9e9
3 changed files with 32 additions and 4 deletions

View File

@ -94,6 +94,7 @@ static INT32 global_y_offset = 16;
static INT32 screen_flip_y = 0;
static UINT32 nNMK004CpuSpeed;
static INT32 nNMK004EnableIrq2;
static INT32 NMK004_enabled = 0;
static INT32 macross2_sound_enable;
static INT32 MSM6295x1_only = 0;
static INT32 MSM6295x2_only = 0;
@ -4298,7 +4299,7 @@ static INT32 Macross2Init()
DrvGfxDecode(0x20000, 0x200000, 0x400000);
}
SekInit(0, 0x68000);
SekInit(0, 0x68000);
SekOpen(0);
SekMapMemory(Drv68KROM, 0x000000, 0x07ffff, SM_ROM);
SekMapMemory(DrvPalRAM, 0x120000, 0x1207ff, SM_RAM);
@ -4529,6 +4530,7 @@ static INT32 NMK004Init(INT32 (*pLoadCallback)(), INT32 nCpuSpeed, INT32 pin7hig
NMK004OKIROM1 = DrvSndROM1;
NMK004PROGROM = DrvZ80ROM;
no_z80 = 1;
NMK004_enabled = 1;
GenericTilesInit();
@ -4623,7 +4625,8 @@ static INT32 NMK004Exit()
MSM6295Exit(1);
MSM6295ROM = NULL;
no_z80 = 0;
NMK004_enabled = 0;
return CommonExit();
}
@ -5306,10 +5309,19 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin)
if (!MSM6295x1_only && !MSM6295x2_only)
BurnYM2203Scan(nAction, pnMin);
}
MSM6295Scan(0, nAction);
if (!MSM6295x1_only)
MSM6295Scan(1, nAction);
}
SCAN_VAR(macross2_sound_enable);
if (NMK004_enabled) {
SCAN_VAR(nNMK004CpuSpeed);
SCAN_VAR(nNMK004EnableIrq2);
NMK004Scan(nAction, pnMin);
}
}
if (nAction & ACB_WRITE) {
/* ZetOpen(0);
@ -8310,7 +8322,7 @@ static INT32 MacrossLoadCallback()
static INT32 MacrossInit()
{
return NMK004Init(MacrossLoadCallback, 10000000, 0, 0);
return NMK004Init(MacrossLoadCallback, 10000000, 0, 0);
}
struct BurnDriver BurnDrvMacross = {

View File

@ -134,6 +134,21 @@ static struct
#define COMMAND_TABLE 0xeff0
#define PSG_NOTE_TABLE 0xeff2
INT32 NMK004Scan(INT32 nAction, INT32* pnMin)
{
if (nAction & ACB_VOLATILE) { // Scan volatile data
if (pnMin) {
*pnMin = 0x029496;
}
SCAN_VAR(NMK004_state);
}
return 0;
}
static UINT8 read8(INT32 address)
{
return NMK004_state.rom[address];

View File

@ -8,3 +8,4 @@ void NMK004Write(INT32, INT32 data);
UINT8 NMK004Read();
void NMK004_irq(INT32 irq);
INT32 NMK004Scan(INT32 nAction, INT32* pnMin);