diff --git a/src/burn/drivers/misc_post90s/d_esd16.cpp b/src/burn/drivers/misc_post90s/d_esd16.cpp index 8a073576e..80ea1eee0 100644 --- a/src/burn/drivers/misc_post90s/d_esd16.cpp +++ b/src/burn/drivers/misc_post90s/d_esd16.cpp @@ -896,6 +896,7 @@ static INT32 DrvExit() MSM6295Exit(0); BurnYM3812Exit(); SekExit(); + ZetExit(); GenericTilesExit(); BurnFree (AllMem); diff --git a/src/burn/drivers/misc_post90s/d_kaneko16.cpp b/src/burn/drivers/misc_post90s/d_kaneko16.cpp index efdb061dc..3541222f2 100644 --- a/src/burn/drivers/misc_post90s/d_kaneko16.cpp +++ b/src/burn/drivers/misc_post90s/d_kaneko16.cpp @@ -3612,6 +3612,7 @@ static INT32 Kaneko16Exit() GenericTilesExit(); BurnFree(Mem); + BurnFree(spritelist.first_sprite); Kaneko16NumTiles = 0; Kaneko16NumTiles2 = 0; diff --git a/src/burn/drivers/misc_post90s/d_powerins.cpp b/src/burn/drivers/misc_post90s/d_powerins.cpp index 1eff16254..28f65cde5 100644 --- a/src/burn/drivers/misc_post90s/d_powerins.cpp +++ b/src/burn/drivers/misc_post90s/d_powerins.cpp @@ -540,13 +540,15 @@ void __fastcall powerinsZ80Out(UINT16 p, UINT8 v) { switch (p & 0x0FF) { case 0x00: - if ( game_drv == GAME_POWERINS ) + if ( game_drv == GAME_POWERINS ) { BurnYM2203Write(0, 0, v); + } break; case 0x01: - if ( game_drv == GAME_POWERINS ) + if ( game_drv == GAME_POWERINS ) { BurnYM2203Write(0, 1, v); + } break; case 0x80: @@ -1074,7 +1076,7 @@ static INT32 powerinsFrame() } SekSetIRQLine(4, SEK_IRQSTATUS_AUTO); - } + } SekClose(); diff --git a/src/burn/drivers/misc_post90s/d_seta2.cpp b/src/burn/drivers/misc_post90s/d_seta2.cpp index 9f79cc662..8f188798a 100644 --- a/src/burn/drivers/misc_post90s/d_seta2.cpp +++ b/src/burn/drivers/misc_post90s/d_seta2.cpp @@ -2710,7 +2710,7 @@ static INT32 grdiansExit() EEPROMExit(); } - BurnGunExit(); + if (nBurnGunNumPlayers) BurnGunExit(); HasNVRam = 0; @@ -3197,6 +3197,8 @@ static INT32 grdiansScan(INT32 nAction,INT32 *pnMin) BurnAcb(&ba); } +#if 0 + // This is causing crashes if (nAction & ACB_NVRAM && HasNVRam) { memset(&ba, 0, sizeof(ba)); ba.Data = RamNV; @@ -3204,6 +3206,7 @@ static INT32 grdiansScan(INT32 nAction,INT32 *pnMin) ba.szName = "Backup Ram"; BurnAcb(&ba); } +#endif if (nAction & ACB_DRIVER_DATA) { diff --git a/src/burn/drivers/misc_post90s/d_tecmosys.cpp b/src/burn/drivers/misc_post90s/d_tecmosys.cpp index e7c2381de..981e604f4 100644 --- a/src/burn/drivers/misc_post90s/d_tecmosys.cpp +++ b/src/burn/drivers/misc_post90s/d_tecmosys.cpp @@ -1047,7 +1047,9 @@ static INT32 DrvFrame() nCyclesTotal[1] = (INT32)((INT64)nCyclesTotal[1] * nBurnCPUSpeedAdjust / 0x0100); SekOpen(0); +#ifdef ENABLE_SOUND_HARDWARE ZetOpen(0); +#endif vblank = 1; diff --git a/src/burn/drivers/misc_post90s/d_tumbleb.cpp b/src/burn/drivers/misc_post90s/d_tumbleb.cpp index beaea725c..638a1ef3f 100644 --- a/src/burn/drivers/misc_post90s/d_tumbleb.cpp +++ b/src/burn/drivers/misc_post90s/d_tumbleb.cpp @@ -2941,7 +2941,7 @@ static void SemicomMapZ80() ZetClose(); } -void SemicomYM2151IrqHandler(INT32 Irq) +static void SemicomYM2151IrqHandler(INT32 Irq) { if (Irq) { ZetSetIRQLine(0xff, ZET_IRQSTATUS_ACK); @@ -2976,7 +2976,9 @@ static INT32 DrvInit(bool bReset, INT32 SpriteRamSize, INT32 SpriteMask, INT32 S if (DrvHasYM2151) { if (!DrvYM2151Freq) DrvYM2151Freq = 3427190; BurnYM2151Init(DrvYM2151Freq, 25.0); - if (DrvHasZ80) BurnYM2151SetIrqHandler(&SemicomYM2151IrqHandler); + if (DrvHasZ80) { + BurnYM2151SetIrqHandler(&SemicomYM2151IrqHandler); + } } // Setup the OKIM6295 emulation @@ -3212,6 +3214,7 @@ static INT32 FncywldInit() INT32 nRet; DrvHasYM2151 = 1; + DrvHasZ80 = 0; DrvYM2151Freq = 32220000 / 9; DrvLoadRoms = FncywldLoadRoms; DrvMap68k = FncywldMap68k; @@ -3502,6 +3505,12 @@ static INT32 DrvExit() return 0; } +static INT32 JumppopExit() +{ + BurnYM3812Exit(); + return DrvExit(); +} + static inline UINT8 pal4bit(UINT8 bits) { bits &= 0x0f; @@ -4636,6 +4645,6 @@ struct BurnDriver BurnDrvJumppop = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING, 2, HARDWARE_MISC_POST90S, GBF_PLATFORM, 0, NULL, JumppopRomInfo, JumppopRomName, NULL, NULL, JumppopInputInfo, JumppopDIPInfo, - JumppopInit, DrvExit, JumppopFrame, NULL, DrvScan, + JumppopInit, JumppopExit, JumppopFrame, NULL, DrvScan, NULL, 0x400, 320, 240, 4, 3 }; diff --git a/src/burn/drivers/misc_pre90s/d_mitchell.cpp b/src/burn/drivers/misc_pre90s/d_mitchell.cpp index fff671754..f39501a68 100644 --- a/src/burn/drivers/misc_pre90s/d_mitchell.cpp +++ b/src/burn/drivers/misc_pre90s/d_mitchell.cpp @@ -2609,10 +2609,10 @@ static INT32 BlockblInit() return 0; } -static INT32 DrvExit() +static INT32 CommonExit() { ZetExit(); - BurnYM2413Exit(); + MSM6295Exit(0); if (DrvHasEEPROM) EEPROMExit(); @@ -2636,10 +2636,17 @@ static INT32 DrvExit() DrvNVRamAddress = 0; DrvDialSelected = 0; DrvSoundLatch = 0; - + return 0; } +static INT32 DrvExit() +{ + BurnYM2413Exit(); + + return CommonExit(); +} + static inline UINT8 pal4bit(UINT8 bits) { bits &= 0x0f; @@ -3175,7 +3182,7 @@ struct BurnDriver BurnDrvMstworld = { NULL, NULL, NULL, NULL, BDF_GAME_WORKING, 2, HARDWARE_MISC_POST90S, GBF_PUZZLE, 0, NULL, MstworldRomInfo, MstworldRomName, NULL, NULL, MstworldInputInfo, MstworldDIPInfo, - MstworldInit, DrvExit, MstworldFrame, NULL, MstworldScan, + MstworldInit, CommonExit, MstworldFrame, NULL, MstworldScan, NULL, 0x800, 384, 240, 4, 3 };