mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-12-23 00:30:17 +00:00
769d4c6927
Support 2nd Disk][ in slot-5, via command line: - -s5 diskii - -s5d1 \<imagefile\> - -s5d2 \<imagefile\> NB. there's currently no Configuration UI support, except the Drive icons' tooltips show what's in slot-5 & slot-6 (for drive-n). So there's no way to eject the disks or insert new disks. The use-case I'm supporting it Wasteland which just has the 4 disks in the 4 drives. Improved card management: - Added `class Card` (in Card.h) which all other cards (that exist as classes) derive from (eg. LC,SSC,Mouse,Disk2). - Added `class CardManager` (in CardManager.cpp\h) which now manages the 8 slots (and aux slot). - Added `class Disk2CardManager` (in Disk2CardManager.cpp\h) which provides methods for operations that act on all Disk2 instances at the same time. - Currently limited to just 1x SSC and 1x Mouse card (why would you need more?). This simplifies things, meaning there's no need to have dedicated SSCManager / MouseCardManager objects. - Currently the 2nd Disk2 card can only be put into slot-5. This limitation is just due to the complexity of the Configuration UI. Having a more general drop-down per slot UI would remove this limitation.
65 lines
2.0 KiB
C++
65 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include "../Applewin.h"
|
|
#include "../CardManager.h"
|
|
#include "../CPU.h"
|
|
#include "../DiskImage.h" // Disk_Status_e
|
|
#include "../Harddisk.h" // HD_CardIsEnabled()
|
|
#include "../Video.h" // VideoRefreshRate_e, GetVideoRefreshRate()
|
|
|
|
class CConfigNeedingRestart
|
|
{
|
|
public:
|
|
CConfigNeedingRestart(UINT bEnableTheFreezesF8Rom = false) :
|
|
m_Apple2Type( GetApple2Type() ),
|
|
m_CpuType( GetMainCpu() ),
|
|
m_uSaveLoadStateMsg(0),
|
|
m_videoRefreshRate( GetVideoRefreshRate() )
|
|
{
|
|
m_bEnableHDD = HD_CardIsEnabled();
|
|
m_bEnableTheFreezesF8Rom = bEnableTheFreezesF8Rom;
|
|
memset(&m_Slot, 0, sizeof(m_Slot));
|
|
m_SlotAux = CT_Empty;
|
|
m_Slot[SLOT4] = g_CardMgr.QuerySlot(SLOT4);
|
|
m_Slot[SLOT5] = g_CardMgr.QuerySlot(SLOT5);
|
|
m_Slot[SLOT7] = g_CardMgr.QuerySlot(SLOT7);
|
|
}
|
|
|
|
const CConfigNeedingRestart& operator= (const CConfigNeedingRestart& other)
|
|
{
|
|
m_Apple2Type = other.m_Apple2Type;
|
|
m_CpuType = other.m_CpuType;
|
|
memcpy(m_Slot, other.m_Slot, sizeof(m_Slot));
|
|
m_bEnableHDD = other.m_bEnableHDD;
|
|
m_bEnableTheFreezesF8Rom = other.m_bEnableTheFreezesF8Rom;
|
|
m_uSaveLoadStateMsg = other.m_uSaveLoadStateMsg;
|
|
m_videoRefreshRate = other.m_videoRefreshRate;
|
|
return *this;
|
|
}
|
|
|
|
bool operator== (const CConfigNeedingRestart& other) const
|
|
{
|
|
return m_Apple2Type == other.m_Apple2Type &&
|
|
m_CpuType == other.m_CpuType &&
|
|
memcmp(m_Slot, other.m_Slot, sizeof(m_Slot)) == 0 &&
|
|
m_bEnableHDD == other.m_bEnableHDD &&
|
|
m_bEnableTheFreezesF8Rom == other.m_bEnableTheFreezesF8Rom &&
|
|
m_uSaveLoadStateMsg == other.m_uSaveLoadStateMsg &&
|
|
m_videoRefreshRate == other.m_videoRefreshRate;
|
|
}
|
|
|
|
bool operator!= (const CConfigNeedingRestart& other) const
|
|
{
|
|
return !operator==(other);
|
|
}
|
|
|
|
eApple2Type m_Apple2Type;
|
|
eCpuType m_CpuType;
|
|
SS_CARDTYPE m_Slot[NUM_SLOTS]; // 0..7
|
|
SS_CARDTYPE m_SlotAux;
|
|
bool m_bEnableHDD;
|
|
UINT m_bEnableTheFreezesF8Rom;
|
|
UINT m_uSaveLoadStateMsg;
|
|
VideoRefreshRate_e m_videoRefreshRate;
|
|
};
|