From ba13412e271960016745d22edf438b01742d8748 Mon Sep 17 00:00:00 2001 From: tomcw Date: Sat, 23 Mar 2024 10:45:07 +0000 Subject: [PATCH] Save-state: fix for loading LC from older versions --- source/Memory.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/source/Memory.cpp b/source/Memory.cpp index 885c75e9..68ef2bfb 100644 --- a/source/Memory.cpp +++ b/source/Memory.cpp @@ -2333,8 +2333,13 @@ bool MemLoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT unitVersion) if (unitVersion == 1) { - SetMemMode( yamlLoadHelper.LoadUint(SS_YAML_KEY_MEMORYMODE) ^ MF_INTCXROM ); // Convert from SLOTCXROM to INTCXROM - SetLastRamWrite( yamlLoadHelper.LoadUint(SS_YAML_KEY_LASTRAMWRITE) ? TRUE : FALSE ); + UINT uMemMode = yamlLoadHelper.LoadUint(SS_YAML_KEY_MEMORYMODE) ^ MF_INTCXROM; // Convert from SLOTCXROM to INTCXROM + SetMemMode(uMemMode); + + if (GetCardMgr().GetLanguageCardMgr().GetLanguageCard()) + GetCardMgr().GetLanguageCardMgr().GetLanguageCard()->SetLCMemMode(uMemMode & MF_LANGCARD_MASK); + + SetLastRamWrite(yamlLoadHelper.LoadUint(SS_YAML_KEY_LASTRAMWRITE) ? TRUE : FALSE); } else { @@ -2347,10 +2352,14 @@ bool MemLoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT unitVersion) if (!IsApple2PlusOrClone(GetApple2Type())) // NB. These are set later for II,II+ by slot-0 LC or Saturn { - if (unitVersion >= 9) + if (unitVersion < 9) + { + GetCardMgr().GetLanguageCardMgr().GetLanguageCard()->SetLCMemMode(uMemMode & MF_LANGCARD_MASK); + } + else { UINT LCMemMode = yamlLoadHelper.LoadUint(SS_YAML_KEY_MMULCMODE); - dynamic_cast(GetCardMgr().GetRef(SLOT0)).SetLCMemMode(LCMemMode); + GetCardMgr().GetLanguageCardMgr().GetLanguageCard()->SetLCMemMode(LCMemMode); } SetLastRamWrite(yamlLoadHelper.LoadUint(SS_YAML_KEY_LASTRAMWRITE) ? TRUE : FALSE); }