| 2863 | } |
| 2864 | |
| 2865 | bool MemLoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT unitVersion) |
| 2866 | { |
| 2867 | if (!yamlLoadHelper.GetSubMap(MemGetSnapshotStructName())) |
| 2868 | return false; |
| 2869 | |
| 2870 | // Create default LC type for AppleII machine (do prior to loading saved LC state) |
| 2871 | ResetDefaultMachineMemTypes(); |
| 2872 | if (unitVersion == 1) |
| 2873 | g_MemTypeAppleII = CT_LanguageCard; // version=1: original Apple II always has a LC |
| 2874 | else |
| 2875 | g_MemTypeAppleIIPlus = CT_Empty; // version=2+: Apple II/II+ initially start with slot-0 empty |
| 2876 | SetExpansionMemTypeDefault(); |
| 2877 | CreateLanguageCard(); // Create default LC now for: (a) //e which has no slot-0 LC (so this is final) |
| 2878 | // (b) II/II+ which get re-created later if slot-0 has a card |
| 2879 | |
| 2880 | // |
| 2881 | |
| 2882 | IO_SELECT = (BYTE) yamlLoadHelper.LoadUint(SS_YAML_KEY_IOSELECT); |
| 2883 | INTC8ROM = yamlLoadHelper.LoadUint(SS_YAML_KEY_IOSELECT_INT) ? true : false; |
| 2884 | g_eExpansionRomType = (eExpansionRomType) yamlLoadHelper.LoadUint(SS_YAML_KEY_EXPANSIONROMTYPE); |
| 2885 | g_uPeripheralRomSlot = yamlLoadHelper.LoadUint(SS_YAML_KEY_PERIPHERALROMSLOT); |
| 2886 | |
| 2887 | if (unitVersion == 1) |
| 2888 | { |
| 2889 | UINT uMemMode = yamlLoadHelper.LoadUint(SS_YAML_KEY_MEMORYMODE) ^ MF_INTCXROM; // Convert from SLOTCXROM to INTCXROM |
| 2890 | SetMemMode(uMemMode); |
| 2891 | |
| 2892 | if (GetCardMgr().GetLanguageCardMgr().GetLanguageCard()) |
| 2893 | GetCardMgr().GetLanguageCardMgr().GetLanguageCard()->SetLCMemMode(uMemMode & MF_LANGCARD_MASK); |
| 2894 | |
| 2895 | SetLastRamWrite(yamlLoadHelper.LoadUint(SS_YAML_KEY_LASTRAMWRITE) ? TRUE : FALSE); |
| 2896 | } |
| 2897 | else |
| 2898 | { |
| 2899 | UINT uMemMode = yamlLoadHelper.LoadUint(SS_YAML_KEY_MEMORYMODE); |
| 2900 | if (IsApple2PlusOrClone(GetApple2Type()) || unitVersion >= 9) |
| 2901 | uMemMode &= ~MF_LANGCARD_MASK; // For II,II+: clear LC bits - set later by slot-0 LC or Saturn (or some other slot-n Saturn) |
| 2902 | // For //e,//c: (>=v9) clear LC bits - set later after reading all cards and we know which card contributes these bits |
| 2903 | // For //e (<9): don't clear, as only old versions only supported the IIe LC from the MMU |
| 2904 | SetMemMode(uMemMode); |
| 2905 | |
| 2906 | if (!IsApple2PlusOrClone(GetApple2Type())) // NB. These are set later for II,II+ by slot-0 LC or Saturn |
| 2907 | { |
| 2908 | if (unitVersion < 9) |
| 2909 | { |
| 2910 | GetCardMgr().GetLanguageCardMgr().GetLanguageCard()->SetLCMemMode(uMemMode & MF_LANGCARD_MASK); |
| 2911 | } |
| 2912 | else |
| 2913 | { |
| 2914 | UINT LCMemMode = yamlLoadHelper.LoadUint(SS_YAML_KEY_MMULCMODE); |
| 2915 | GetCardMgr().GetLanguageCardMgr().GetLanguageCard()->SetLCMemMode(LCMemMode); |
| 2916 | } |
| 2917 | SetLastRamWrite(yamlLoadHelper.LoadUint(SS_YAML_KEY_LASTRAMWRITE) ? TRUE : FALSE); |
| 2918 | } |
| 2919 | } |
| 2920 | |
| 2921 | if (unitVersion >= 3) |
| 2922 | { |
no test coverage detected