diff --git a/source/Memory.cpp b/source/Memory.cpp index 5d2bcd18..c0d79616 100644 --- a/source/Memory.cpp +++ b/source/Memory.cpp @@ -1685,6 +1685,14 @@ LPVOID MemGetSlotParameters(UINT uSlot) //=========================================================================== +void MemLoadSnapshot_SetSlotCxRom(void) +{ + if (!SW_SLOTCXROM) + IoHandlerCardsOut(); +} + +//=========================================================================== + // NB. Don't need to save 'modechanging', as this is just an optimisation to save calling UpdatePaging() twice. // . If we were to save the state when 'modechanging' is set, then on restoring the state, the 6502 code will immediately update the read memory mode. // . This will work correctly. diff --git a/source/Memory.h b/source/Memory.h index 3a104755..d0f12ea1 100644 --- a/source/Memory.h +++ b/source/Memory.h @@ -54,6 +54,7 @@ void MemReset (); void MemResetPaging (); void MemUpdatePaging(BOOL initialize); LPVOID MemGetSlotParameters (UINT uSlot); +void MemLoadSnapshot_SetSlotCxRom(void); void MemSetSnapshot_v1(const DWORD MemMode, const BOOL LastWriteRam, const BYTE* const pMemMain, const BYTE* const pMemAux); std::string MemGetSnapshotUnitAuxSlotName(void); void MemSaveSnapshot(class YamlSaveHelper& yamlSaveHelper); diff --git a/source/Mockingboard.cpp b/source/Mockingboard.cpp index 8a92e6d1..af93dfe9 100644 --- a/source/Mockingboard.cpp +++ b/source/Mockingboard.cpp @@ -221,8 +221,8 @@ static void Votrax_Write(BYTE nDevice, BYTE nValue); static void StartTimer(SY6522_AY8910* pMB) { - if((pMB->nAY8910Number & 1) != SY6522_DEVICE_A) - return; +// if((pMB->nAY8910Number & 1) != SY6522_DEVICE_A) +// return; if((pMB->sy6522.IER & IxR_TIMER1) == 0x00) return; diff --git a/source/SaveState.cpp b/source/SaveState.cpp index 88254d6a..39d51596 100644 --- a/source/SaveState.cpp +++ b/source/SaveState.cpp @@ -515,6 +515,8 @@ static void Snapshot_LoadState_v2(void) MemInitializeCustomF8ROM(); MemInitializeIO(); + MemLoadSnapshot_SetSlotCxRom(); // Remove the cards' ROMs at $Csnn if internal ROM is enabled + MemUpdatePaging(TRUE); // g_Apple2Type may've changed: so redraw frame (title, buttons, leds, etc)