HD as a Card from AW.
Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
parent
b4aa5fff1e
commit
ca05f42721
11 changed files with 79 additions and 53 deletions
|
@ -91,7 +91,7 @@ void CardManager::InsertInternal(UINT slot, SS_CARDTYPE type)
|
||||||
m_slot[slot] = new DummyCard(type, slot);
|
m_slot[slot] = new DummyCard(type, slot);
|
||||||
break;
|
break;
|
||||||
case CT_Uthernet2:
|
case CT_Uthernet2:
|
||||||
m_slot[slot] = new DummyCard(type);
|
m_slot[slot] = new DummyCard(type, slot);
|
||||||
break;
|
break;
|
||||||
case CT_FourPlay:
|
case CT_FourPlay:
|
||||||
m_slot[slot] = new FourPlayCard(slot);
|
m_slot[slot] = new FourPlayCard(slot);
|
||||||
|
|
|
@ -102,8 +102,12 @@ namespace common2
|
||||||
|
|
||||||
MemInitialize();
|
MemInitialize();
|
||||||
|
|
||||||
GetCardMgr().GetDisk2CardMgr().Reset();
|
CardManager & cardManager = GetCardMgr();
|
||||||
HD_Reset();
|
cardManager.GetDisk2CardMgr().Reset();
|
||||||
|
if (cardManager.QuerySlot(SLOT7) == CT_GenericHDD)
|
||||||
|
{
|
||||||
|
dynamic_cast<HarddiskInterfaceCard&>(cardManager.GetRef(SLOT7)).Reset(true);
|
||||||
|
}
|
||||||
|
|
||||||
Snapshot_Startup();
|
Snapshot_Startup();
|
||||||
|
|
||||||
|
@ -112,8 +116,10 @@ namespace common2
|
||||||
|
|
||||||
void DestroyEmulator()
|
void DestroyEmulator()
|
||||||
{
|
{
|
||||||
|
CardManager & cardManager = GetCardMgr();
|
||||||
|
|
||||||
Snapshot_Shutdown();
|
Snapshot_Shutdown();
|
||||||
CMouseInterface* pMouseCard = GetCardMgr().GetMouseCard();
|
CMouseInterface* pMouseCard = cardManager.GetMouseCard();
|
||||||
if (pMouseCard)
|
if (pMouseCard)
|
||||||
{
|
{
|
||||||
pMouseCard->Reset();
|
pMouseCard->Reset();
|
||||||
|
@ -126,7 +132,12 @@ namespace common2
|
||||||
|
|
||||||
unRegisterUthernet2();
|
unRegisterUthernet2();
|
||||||
tfe_shutdown();
|
tfe_shutdown();
|
||||||
HD_Destroy();
|
|
||||||
|
if (cardManager.QuerySlot(SLOT7) == CT_GenericHDD)
|
||||||
|
{
|
||||||
|
dynamic_cast<HarddiskInterfaceCard&>(cardManager.GetRef(SLOT7)).Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
PrintDestroy();
|
PrintDestroy();
|
||||||
CpuDestroy();
|
CpuDestroy();
|
||||||
DebugDestroy();
|
DebugDestroy();
|
||||||
|
|
|
@ -33,20 +33,34 @@ namespace
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Disk2InterfaceCard& disk2Card = dynamic_cast<Disk2InterfaceCard&>(GetCardMgr().GetRef(SLOT6));
|
CardManager & cardManager = GetCardMgr();
|
||||||
const ImageError_e error = disk2Card.InsertDisk(DRIVE_1, filename.c_str(), IMAGE_FORCE_WRITE_PROTECTED, IMAGE_DONT_CREATE);
|
|
||||||
|
Disk2InterfaceCard * disk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
||||||
|
if (disk2Card)
|
||||||
|
{
|
||||||
|
const ImageError_e error = disk2Card->InsertDisk(DRIVE_1, filename.c_str(), IMAGE_FORCE_WRITE_PROTECTED, IMAGE_DONT_CREATE);
|
||||||
|
|
||||||
if (error == eIMAGE_ERROR_NONE)
|
if (error == eIMAGE_ERROR_NONE)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// try a hard disk
|
if (cardManager.QuerySlot(SLOT7) != CT_GenericHDD)
|
||||||
HD_SetEnabled(true);
|
{
|
||||||
BOOL bRes = HD_Insert(HARDDISK_1, filename);
|
cardManager.Insert(SLOT7, CT_GenericHDD);
|
||||||
|
}
|
||||||
|
|
||||||
|
HarddiskInterfaceCard * harddiskCard = dynamic_cast<HarddiskInterfaceCard*>(cardManager.GetObj(SLOT7));
|
||||||
|
if (harddiskCard)
|
||||||
|
{
|
||||||
|
BOOL bRes = harddiskCard->Insert(HARDDISK_1, filename);
|
||||||
return bRes == TRUE;
|
return bRes == TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ra2
|
namespace ra2
|
||||||
|
|
|
@ -37,11 +37,8 @@ namespace
|
||||||
const QString REG_TIMER = QString::fromUtf8("QApple/Emulator/Timer");
|
const QString REG_TIMER = QString::fromUtf8("QApple/Emulator/Timer");
|
||||||
const QString REG_FULL_SPEED = QString::fromUtf8("QApple/Emulator/Full Speed");
|
const QString REG_FULL_SPEED = QString::fromUtf8("QApple/Emulator/Full Speed");
|
||||||
|
|
||||||
void insertDisk(const QString & filename, const int disk)
|
void insertDisk(Disk2InterfaceCard* pDisk2Card, const QString & filename, const int disk)
|
||||||
{
|
{
|
||||||
CardManager & cardManager = GetCardMgr();
|
|
||||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
|
||||||
|
|
||||||
if (!pDisk2Card)
|
if (!pDisk2Card)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -61,15 +58,15 @@ namespace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void insertHD(const QString & filename, const int disk)
|
void insertHD(HarddiskInterfaceCard * pHarddiskCard, const QString & filename, const int disk)
|
||||||
{
|
{
|
||||||
if (filename.isEmpty())
|
if (filename.isEmpty())
|
||||||
{
|
{
|
||||||
HD_Unplug(disk);
|
pHarddiskCard->Unplug(disk);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!HD_Insert(disk, filename.toStdString()))
|
if (!pHarddiskCard->Insert(disk, filename.toStdString()))
|
||||||
{
|
{
|
||||||
const QString message = QString("Error inserting '%1'").arg(filename);
|
const QString message = QString("Error inserting '%1'").arg(filename);
|
||||||
QMessageBox::warning(nullptr, "Hard Disk error", message);
|
QMessageBox::warning(nullptr, "Hard Disk error", message);
|
||||||
|
@ -90,9 +87,6 @@ namespace
|
||||||
// 2) Snapshot_LoadState_v2(): card already inserted
|
// 2) Snapshot_LoadState_v2(): card already inserted
|
||||||
if (cardManager.QuerySlot(slot) != newCardType)
|
if (cardManager.QuerySlot(slot) != newCardType)
|
||||||
cardManager.Insert(slot, newCardType);
|
cardManager.Insert(slot, newCardType);
|
||||||
|
|
||||||
std::string& regSection = RegGetConfigSlotSection(slot);
|
|
||||||
RegSaveValue(regSection.c_str(), REGVALUE_CARD_TYPE, TRUE, CT_Disk2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -175,8 +169,8 @@ void getAppleWinPreferences(PreferenceData & data)
|
||||||
{
|
{
|
||||||
CardManager & cardManager = GetCardMgr();
|
CardManager & cardManager = GetCardMgr();
|
||||||
|
|
||||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
|
||||||
data.disks.resize(diskIDs.size());
|
data.disks.resize(diskIDs.size());
|
||||||
|
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
||||||
|
|
||||||
if (pDisk2Card)
|
if (pDisk2Card)
|
||||||
{
|
{
|
||||||
|
@ -191,19 +185,24 @@ void getAppleWinPreferences(PreferenceData & data)
|
||||||
}
|
}
|
||||||
|
|
||||||
data.hds.resize(hdIDs.size());
|
data.hds.resize(hdIDs.size());
|
||||||
|
HarddiskInterfaceCard* pHarddiskCard = dynamic_cast<HarddiskInterfaceCard*>(cardManager.GetObj(SLOT7));
|
||||||
|
|
||||||
|
if (pHarddiskCard)
|
||||||
|
{
|
||||||
for (size_t i = 0; i < hdIDs.size(); ++i)
|
for (size_t i = 0; i < hdIDs.size(); ++i)
|
||||||
{
|
{
|
||||||
const std::string & diskName = HD_GetFullName(hdIDs[i]);
|
const std::string & diskName = pHarddiskCard->GetFullName(hdIDs[i]);
|
||||||
if (!diskName.empty())
|
if (!diskName.empty())
|
||||||
{
|
{
|
||||||
data.hds[i] = QString::fromStdString(diskName);
|
data.hds[i] = QString::fromStdString(diskName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
data.enhancedSpeed = pDisk2Card && pDisk2Card->GetEnhanceDisk();
|
data.enhancedSpeed = pDisk2Card && pDisk2Card->GetEnhanceDisk();
|
||||||
data.cardInSlot4 = cardManager.QuerySlot(SLOT4);
|
data.cardInSlot4 = cardManager.QuerySlot(SLOT4);
|
||||||
data.cardInSlot5 = cardManager.QuerySlot(SLOT5);
|
data.cardInSlot5 = cardManager.QuerySlot(SLOT5);
|
||||||
data.hdInSlot7 = HD_CardIsEnabled();
|
data.hdInSlot7 = pHarddiskCard;
|
||||||
|
|
||||||
data.apple2Type = GetApple2Type();
|
data.apple2Type = GetApple2Type();
|
||||||
|
|
||||||
|
@ -236,6 +235,7 @@ void setAppleWinPreferences(const std::shared_ptr<QtFrame> & frame, const Prefer
|
||||||
{
|
{
|
||||||
CardManager & cardManager = GetCardMgr();
|
CardManager & cardManager = GetCardMgr();
|
||||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
||||||
|
HarddiskInterfaceCard* pHarddiskCard = dynamic_cast<HarddiskInterfaceCard*>(cardManager.GetObj(SLOT7));
|
||||||
|
|
||||||
if (currentData.speakerVolume != newData.speakerVolume)
|
if (currentData.speakerVolume != newData.speakerVolume)
|
||||||
{
|
{
|
||||||
|
@ -267,8 +267,7 @@ void setAppleWinPreferences(const std::shared_ptr<QtFrame> & frame, const Prefer
|
||||||
}
|
}
|
||||||
if (currentData.hdInSlot7 != newData.hdInSlot7)
|
if (currentData.hdInSlot7 != newData.hdInSlot7)
|
||||||
{
|
{
|
||||||
REGSAVE(TEXT(REGVALUE_HDD_ENABLED), newData.hdInSlot7 ? 1 : 0);
|
SetSlot(SLOT7, newData.hdInSlot7 ? CT_GenericHDD : CT_Empty);
|
||||||
HD_SetEnabled(newData.hdInSlot7);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pDisk2Card && (currentData.enhancedSpeed != newData.enhancedSpeed))
|
if (pDisk2Card && (currentData.enhancedSpeed != newData.enhancedSpeed))
|
||||||
|
@ -281,7 +280,7 @@ void setAppleWinPreferences(const std::shared_ptr<QtFrame> & frame, const Prefer
|
||||||
{
|
{
|
||||||
if (currentData.disks[i] != newData.disks[i])
|
if (currentData.disks[i] != newData.disks[i])
|
||||||
{
|
{
|
||||||
insertDisk(newData.disks[i], diskIDs[i]);
|
insertDisk(pDisk2Card, newData.disks[i], diskIDs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,7 +288,7 @@ void setAppleWinPreferences(const std::shared_ptr<QtFrame> & frame, const Prefer
|
||||||
{
|
{
|
||||||
if (currentData.hds[i] != newData.hds[i])
|
if (currentData.hds[i] != newData.hds[i])
|
||||||
{
|
{
|
||||||
insertHD(newData.hds[i], hdIDs[i]);
|
insertHD(pHarddiskCard, newData.hds[i], hdIDs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,8 +103,12 @@ namespace
|
||||||
MemInitialize();
|
MemInitialize();
|
||||||
frame->Initialize();
|
frame->Initialize();
|
||||||
|
|
||||||
GetCardMgr().GetDisk2CardMgr().Reset();
|
CardManager & cardManager = GetCardMgr();
|
||||||
HD_Reset();
|
cardManager.GetDisk2CardMgr().Reset();
|
||||||
|
if (cardManager.QuerySlot(SLOT7) == CT_GenericHDD)
|
||||||
|
{
|
||||||
|
dynamic_cast<HarddiskInterfaceCard&>(cardManager.GetRef(SLOT7)).Reset(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void unloadEmulator(const std::shared_ptr<QtFrame> & frame)
|
void unloadEmulator(const std::shared_ptr<QtFrame> & frame)
|
||||||
|
@ -116,7 +120,10 @@ namespace
|
||||||
{
|
{
|
||||||
pMouseCard->Reset();
|
pMouseCard->Reset();
|
||||||
}
|
}
|
||||||
HD_Destroy();
|
if (cardManager.QuerySlot(SLOT7) == CT_GenericHDD)
|
||||||
|
{
|
||||||
|
dynamic_cast<HarddiskInterfaceCard&>(cardManager.GetRef(SLOT7)).Destroy();
|
||||||
|
}
|
||||||
PrintDestroy();
|
PrintDestroy();
|
||||||
MemDestroy();
|
MemDestroy();
|
||||||
SpkrDestroy();
|
SpkrDestroy();
|
||||||
|
|
|
@ -477,11 +477,12 @@ namespace sa2
|
||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HD_CardIsEnabled())
|
HarddiskInterfaceCard* pHarddiskCard = dynamic_cast<HarddiskInterfaceCard*>(cardManager.GetObj(SLOT7));
|
||||||
|
if (pHarddiskCard)
|
||||||
{
|
{
|
||||||
ImGui::PushID(7);
|
ImGui::PushID(7);
|
||||||
Disk_Status_e disk1Status_;
|
Disk_Status_e disk1Status_;
|
||||||
HD_GetLightStatus(&disk1Status_);
|
pHarddiskCard->GetLightStatus(&disk1Status_);
|
||||||
for (size_t drive = HARDDISK_1; drive < NUM_HARDDISKS; ++drive)
|
for (size_t drive = HARDDISK_1; drive < NUM_HARDDISKS; ++drive)
|
||||||
{
|
{
|
||||||
ImGui::PushID(drive);
|
ImGui::PushID(drive);
|
||||||
|
@ -501,12 +502,12 @@ namespace sa2
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
if (ImGui::SmallButton("Eject"))
|
if (ImGui::SmallButton("Eject"))
|
||||||
{
|
{
|
||||||
HD_Unplug(drive);
|
pHarddiskCard->Unplug(drive);
|
||||||
}
|
}
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
if (ImGui::SmallButton("Swap"))
|
if (ImGui::SmallButton("Swap"))
|
||||||
{
|
{
|
||||||
HD_ImageSwap();
|
pHarddiskCard->ImageSwap();
|
||||||
}
|
}
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
if (ImGui::RadioButton("", (dragAndDropSlot == SLOT7) && (dragAndDropDrive == drive)))
|
if (ImGui::RadioButton("", (dragAndDropSlot == SLOT7) && (dragAndDropDrive == drive)))
|
||||||
|
@ -515,7 +516,7 @@ namespace sa2
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::TextUnformatted(HD_GetFullName(drive).c_str());
|
ImGui::TextUnformatted(pHarddiskCard->GetFullName(drive).c_str());
|
||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
}
|
}
|
||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
|
|
|
@ -180,13 +180,6 @@ namespace sa2
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 7:
|
|
||||||
{
|
|
||||||
const bool enabled = card == CT_GenericHDD;
|
|
||||||
REGSAVE(REGVALUE_HDD_ENABLED, enabled);
|
|
||||||
HD_SetEnabled(enabled);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (card == CT_Uthernet2)
|
if (card == CT_Uthernet2)
|
||||||
|
|
|
@ -31,7 +31,8 @@ namespace
|
||||||
}
|
}
|
||||||
case CT_GenericHDD:
|
case CT_GenericHDD:
|
||||||
{
|
{
|
||||||
if (!HD_Insert(dragAndDropDrive, filename))
|
HarddiskInterfaceCard * harddiskCard = dynamic_cast<HarddiskInterfaceCard*>(cardManager.GetObj(dragAndDropSlot));
|
||||||
|
if (!harddiskCard->Insert(dragAndDropDrive, filename))
|
||||||
{
|
{
|
||||||
frame->FrameMessageBox("Invalid HD image", "ERROR", MB_OK);
|
frame->FrameMessageBox("Invalid HD image", "ERROR", MB_OK);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "StdAfx.h"
|
#include "StdAfx.h"
|
||||||
#include "FourPlay.h"
|
#include "FourPlay.h"
|
||||||
|
|
||||||
void FourPlayCard::InitializeIO(LPBYTE pCxRomPeripheral, UINT slot)
|
void FourPlayCard::InitializeIO(LPBYTE pCxRomPeripheral)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "StdAfx.h"
|
#include "StdAfx.h"
|
||||||
#include "SNESMAX.h"
|
#include "SNESMAX.h"
|
||||||
|
|
||||||
void SNESMAXCard::InitializeIO(LPBYTE pCxRomPeripheral, UINT slot)
|
void SNESMAXCard::InitializeIO(LPBYTE pCxRomPeripheral)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
|
|
||||||
CSuperSerialCard::CSuperSerialCard(UINT slot) :
|
CSuperSerialCard::CSuperSerialCard(UINT slot) :
|
||||||
Card(CT_SSC), m_uSlot(slot)
|
Card(CT_SSC, slot)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ void CSuperSerialCard::CommReset()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSuperSerialCard::CommInitialize(LPBYTE pCxRomPeripheral, UINT uSlot)
|
void CSuperSerialCard::InitializeIO(LPBYTE pCxRomPeripheral)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue