mirror of
https://github.com/AppleWin/AppleWin.git
synced 2026-04-20 00:17:16 +00:00
Card::Save/LoadSnapshot (PR #1003)
Add 2 virtual methods to Card to load and save snapshots.
This commit is contained in:
+13
-76
@@ -328,94 +328,76 @@ static void ParseSlots(YamlLoadHelper& yamlLoadHelper, UINT unitVersion)
|
||||
if (card == Printer_GetSnapshotCardName())
|
||||
{
|
||||
type = CT_GenericPrinter;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = Printer_LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == CSuperSerialCard::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_SSC;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = dynamic_cast<CSuperSerialCard&>(GetCardMgr().GetRef(slot)).LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == CMouseInterface::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_MouseInterface;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = dynamic_cast<CMouseInterface&>(GetCardMgr().GetRef(slot)).LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == Z80_GetSnapshotCardName())
|
||||
{
|
||||
type = CT_Z80;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = Z80_LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == MB_GetSnapshotCardName())
|
||||
{
|
||||
type = CT_MockingboardC;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = MB_LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == Phasor_GetSnapshotCardName())
|
||||
{
|
||||
type = CT_Phasor;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = Phasor_LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == SAMCard::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_SAM;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = dynamic_cast<SAMCard&>(GetCardMgr().GetRef(slot)).LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == Disk2InterfaceCard::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_Disk2;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = dynamic_cast<Disk2InterfaceCard&>(GetCardMgr().GetRef(slot)).LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == HarddiskInterfaceCard::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_GenericHDD;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = dynamic_cast<HarddiskInterfaceCard&>(GetCardMgr().GetRef(slot)).LoadSnapshot(yamlLoadHelper, slot, cardVersion, g_strSaveStatePath);
|
||||
}
|
||||
else if (card == tfe_GetSnapshotCardName())
|
||||
{
|
||||
type = CT_Uthernet;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
tfe_LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == LanguageCardSlot0::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_LanguageCard;
|
||||
SetExpansionMemType(type); // calls GetCardMgr().Insert() & InsertAux()
|
||||
CreateLanguageCard();
|
||||
bRes = GetLanguageCard()->LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == Saturn128K::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_Saturn128K;
|
||||
SetExpansionMemType(type); // calls GetCardMgr().Insert() & InsertAux()
|
||||
CreateLanguageCard();
|
||||
bRes = GetLanguageCard()->LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == FourPlayCard::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_FourPlay;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = dynamic_cast<FourPlayCard&>(GetCardMgr().GetRef(slot)).LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else if (card == SNESMAXCard::GetSnapshotCardName())
|
||||
{
|
||||
type = CT_SNESMAX;
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = dynamic_cast<SNESMAXCard&>(GetCardMgr().GetRef(slot)).LoadSnapshot(yamlLoadHelper, slot, cardVersion);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw std::string("Slots: Unknown card: " + card); // todo: don't throw - just ignore & continue
|
||||
}
|
||||
|
||||
if (slot == 0)
|
||||
{
|
||||
SetExpansionMemType(type); // calls GetCardMgr().Insert() & InsertAux()
|
||||
CreateLanguageCard();
|
||||
bRes = GetLanguageCard()->LoadSnapshot(yamlLoadHelper, cardVersion);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetCardMgr().Insert(slot, type);
|
||||
bRes = GetCardMgr().GetRef(slot).LoadSnapshot(yamlLoadHelper, cardVersion);
|
||||
}
|
||||
|
||||
cardInserted[slot] = true;
|
||||
|
||||
yamlLoadHelper.PopMap();
|
||||
@@ -606,52 +588,7 @@ void Snapshot_SaveState(void)
|
||||
if (GetCardMgr().QuerySlot(SLOT0) != CT_Empty && IsApple2PlusOrClone(GetApple2Type()))
|
||||
GetLanguageCard()->SaveSnapshot(yamlSaveHelper); // Language Card or Saturn 128K
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT1) == CT_GenericPrinter)
|
||||
Printer_SaveSnapshot(yamlSaveHelper);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT2) == CT_SSC)
|
||||
dynamic_cast<CSuperSerialCard&>(GetCardMgr().GetRef(SLOT2)).SaveSnapshot(yamlSaveHelper);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT3) == CT_Uthernet)
|
||||
tfe_SaveSnapshot(yamlSaveHelper);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT4) == CT_MouseInterface)
|
||||
dynamic_cast<CMouseInterface&>(GetCardMgr().GetRef(SLOT4)).SaveSnapshot(yamlSaveHelper);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT4) == CT_Z80)
|
||||
Z80_SaveSnapshot(yamlSaveHelper, SLOT4);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT5) == CT_Z80)
|
||||
Z80_SaveSnapshot(yamlSaveHelper, SLOT5);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT4) == CT_MockingboardC)
|
||||
MB_SaveSnapshot(yamlSaveHelper, SLOT4);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT5) == CT_MockingboardC)
|
||||
MB_SaveSnapshot(yamlSaveHelper, SLOT5);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT4) == CT_Phasor)
|
||||
Phasor_SaveSnapshot(yamlSaveHelper, SLOT4);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT5) == CT_SAM)
|
||||
dynamic_cast<SAMCard&>(GetCardMgr().GetRef(SLOT5)).SaveSnapshot(yamlSaveHelper);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT5) == CT_Disk2)
|
||||
dynamic_cast<Disk2InterfaceCard&>(GetCardMgr().GetRef(SLOT5)).SaveSnapshot(yamlSaveHelper);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT6) == CT_Disk2)
|
||||
dynamic_cast<Disk2InterfaceCard&>(GetCardMgr().GetRef(SLOT6)).SaveSnapshot(yamlSaveHelper);
|
||||
|
||||
if (GetCardMgr().QuerySlot(SLOT7) == CT_GenericHDD)
|
||||
dynamic_cast<HarddiskInterfaceCard&>(GetCardMgr().GetRef(SLOT7)).SaveSnapshot(yamlSaveHelper);
|
||||
|
||||
for (UINT slot = SLOT3; slot <= SLOT5; slot++)
|
||||
{
|
||||
if (GetCardMgr().QuerySlot(slot) == CT_FourPlay)
|
||||
dynamic_cast<FourPlayCard&>(GetCardMgr().GetRef(slot)).SaveSnapshot(yamlSaveHelper);
|
||||
else if (GetCardMgr().QuerySlot(slot) == CT_SNESMAX)
|
||||
dynamic_cast<SNESMAXCard&>(GetCardMgr().GetRef(slot)).SaveSnapshot(yamlSaveHelper);
|
||||
}
|
||||
GetCardMgr().SaveSnapshot(yamlSaveHelper);
|
||||
}
|
||||
|
||||
// Miscellaneous
|
||||
|
||||
Reference in New Issue
Block a user