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