Fix VidHD card insertion.
Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
parent
ad6ca9c940
commit
b740255979
3 changed files with 24 additions and 4 deletions
|
@ -306,7 +306,7 @@ namespace sa2
|
|||
const bool isSelected = card == current;
|
||||
if (ImGui::Selectable(getCardName(card).c_str(), isSelected))
|
||||
{
|
||||
insertCard(slot, card);
|
||||
insertCard(slot, card, frame);
|
||||
}
|
||||
if (isSelected)
|
||||
{
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "Harddisk.h"
|
||||
#include "Core.h"
|
||||
#include "Memory.h"
|
||||
#include "Interface.h"
|
||||
#include "Debugger/Debug.h"
|
||||
|
||||
#include "Tfe/tfe.h"
|
||||
|
@ -160,11 +161,23 @@ namespace sa2
|
|||
return statuses.at(status);
|
||||
}
|
||||
|
||||
void insertCard(size_t slot, SS_CARDTYPE card)
|
||||
void insertCard(size_t slot, SS_CARDTYPE card, FrameBase * frame)
|
||||
{
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
Video & video = GetVideo();
|
||||
const bool oldHasVid = video.HasVidHD();
|
||||
switch (slot)
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
if (cardManager.QuerySlot(slot) == CT_VidHD)
|
||||
{
|
||||
// the old card was a VidHD, which will be removed
|
||||
// reset it
|
||||
video.SetVidHD(false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
case 5:
|
||||
{
|
||||
|
@ -174,7 +187,6 @@ namespace sa2
|
|||
}
|
||||
else
|
||||
{
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
if (cardManager.QuerySlot(slot) == CT_MockingboardC)
|
||||
{
|
||||
cardManager.Insert(9 - slot, CT_Empty); // the other
|
||||
|
@ -189,6 +201,12 @@ namespace sa2
|
|||
// keep everything consistent
|
||||
// a bit of a heavy call, but nothing simpler is available now
|
||||
MemInitializeIO();
|
||||
|
||||
if (oldHasVid != video.HasVidHD())
|
||||
{
|
||||
frame->Destroy();
|
||||
frame->Initialize(true);
|
||||
}
|
||||
}
|
||||
|
||||
void setVideoStyle(Video & video, const VideoStyle_e style, const bool enabled)
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
class FrameBase;
|
||||
|
||||
namespace sa2
|
||||
{
|
||||
|
||||
|
@ -24,7 +26,7 @@ namespace sa2
|
|||
const std::vector<SS_CARDTYPE> & getExpansionCards();
|
||||
const std::map<eApple2Type, std::string> & getAapple2Types();
|
||||
|
||||
void insertCard(size_t slot, SS_CARDTYPE card);
|
||||
void insertCard(size_t slot, SS_CARDTYPE card, FrameBase * frame);
|
||||
|
||||
void setVideoStyle(Video & video, const VideoStyle_e style, const bool enabled);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue