Couple of fixes from upstream AW.
Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
parent
b100ed1ae0
commit
a72d19b386
13 changed files with 84 additions and 44 deletions
|
@ -29,6 +29,8 @@ add_library(appleii SHARED
|
|||
CardManager.cpp
|
||||
Disk2CardManager.cpp
|
||||
Riff.cpp
|
||||
SaveState.cpp
|
||||
SynchronousEventManager.cpp
|
||||
|
||||
Configuration/PropertySheetHelper.cpp
|
||||
|
||||
|
@ -61,8 +63,7 @@ add_library(appleii SHARED
|
|||
linux/duplicates/Frame.cpp
|
||||
linux/duplicates/SerialComms.cpp
|
||||
linux/duplicates/IPropertySheet.cpp
|
||||
linux/duplicates/Applewin.cpp # defines g_CardMgr (reverse order)
|
||||
SaveState.cpp # uses g_CardMgr in m_ConfigNew (reverse order)
|
||||
linux/duplicates/Applewin.cpp
|
||||
|
||||
Z80VICE/z80.cpp
|
||||
Z80VICE/z80mem.cpp
|
||||
|
|
|
@ -44,13 +44,14 @@ Etc.
|
|||
#include "SaveState_Structs_common.h"
|
||||
#include "Common.h"
|
||||
|
||||
#include "AppleWin.h" // g_SynchronousEventMgr
|
||||
#include "Applewin.h" // g_SynchronousEventMgr
|
||||
#include "CardManager.h"
|
||||
#include "CPU.h"
|
||||
#include "Frame.h" // FrameSetCursorPosByMousePos()
|
||||
#include "Log.h"
|
||||
#include "Memory.h"
|
||||
#include "MouseInterface.h"
|
||||
#include "Video.h"
|
||||
#include "NTSC.h" // NTSC_GetCyclesUntilVBlank()
|
||||
#include "YamlHelper.h"
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "AppleWin.h"
|
||||
#include "Applewin.h"
|
||||
#include "SynchronousEventManager.h"
|
||||
|
||||
void SynchronousEventManager::Insert(SyncEvent* pNewEvent)
|
||||
|
|
|
@ -36,7 +36,7 @@ bool DoDiskInsert(const UINT slot, const int nDrive, const std::string & fileNam
|
|||
strPathName.append(fileName);
|
||||
}
|
||||
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*> (g_CardMgr.GetObj(slot));
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*> (GetCardMgr().GetObj(slot));
|
||||
ImageError_e Error = pDisk2Card->InsertDisk(nDrive, strPathName.c_str(), IMAGE_USE_FILES_WRITE_PROTECT_STATUS, createMissingDisk);
|
||||
return Error == eIMAGE_ERROR_NONE;
|
||||
}
|
||||
|
|
|
@ -54,7 +54,9 @@ namespace
|
|||
const DWORD uActualCyclesExecuted = CpuExecute(uCyclesToExecute, bVideoUpdate);
|
||||
g_dwCyclesThisFrame += uActualCyclesExecuted;
|
||||
|
||||
g_CardMgr.GetDisk2CardMgr().UpdateDriveState(uActualCyclesExecuted);
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
cardManager.GetDisk2CardMgr().UpdateDriveState(uActualCyclesExecuted);
|
||||
|
||||
const int key = ProcessKeyboard();
|
||||
|
||||
|
@ -102,7 +104,7 @@ namespace
|
|||
|
||||
g_relativeSpeed = g_relativeSpeed * coeff + double(us) / double(nExecutionPeriodUsec) * (1.0 - coeff);
|
||||
|
||||
if (!g_CardMgr.GetDisk2CardMgr().IsConditionForFullSpeed())
|
||||
if (!cardManager.GetDisk2CardMgr().IsConditionForFullSpeed())
|
||||
{
|
||||
if (us < nExecutionPeriodUsec)
|
||||
{
|
||||
|
@ -160,6 +162,8 @@ namespace
|
|||
LogFileOutput("Init: DoDiskInsert(D2), res=%d\n", ok);
|
||||
}
|
||||
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
if (disksOk)
|
||||
{
|
||||
// AFTER a restart
|
||||
|
@ -175,7 +179,7 @@ namespace
|
|||
MB_Initialize();
|
||||
MemInitialize();
|
||||
NVideoInitialize();
|
||||
g_CardMgr.GetDisk2CardMgr().Reset();
|
||||
cardManager.GetDisk2CardMgr().Reset();
|
||||
HD_Reset();
|
||||
|
||||
if (!options.snapshot.empty())
|
||||
|
@ -192,7 +196,7 @@ namespace
|
|||
EnterMessageLoop(options);
|
||||
}
|
||||
|
||||
CMouseInterface* pMouseCard = g_CardMgr.GetMouseCard();
|
||||
CMouseInterface* pMouseCard = cardManager.GetMouseCard();
|
||||
if (pMouseCard)
|
||||
{
|
||||
pMouseCard->Reset();
|
||||
|
@ -214,7 +218,7 @@ namespace
|
|||
PrintDestroy();
|
||||
CpuDestroy();
|
||||
|
||||
g_CardMgr.GetDisk2CardMgr().Destroy();
|
||||
cardManager.GetDisk2CardMgr().Destroy();
|
||||
ImageDestroy();
|
||||
|
||||
LogDone();
|
||||
|
|
|
@ -256,8 +256,11 @@ void FrameRefresh()
|
|||
|
||||
void FrameDrawDiskLEDS(HDC x)
|
||||
{
|
||||
if (g_CardMgr.QuerySlot(SLOT6) == CT_Disk2)
|
||||
dynamic_cast<Disk2InterfaceCard*>(g_CardMgr.GetObj(SLOT6))->GetLightStatus(&g_eStatusDrive1, &g_eStatusDrive2);
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
if (cardManager.QuerySlot(SLOT6) != CT_Disk2)
|
||||
return;
|
||||
|
||||
dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6))->GetLightStatus(&g_eStatusDrive1, &g_eStatusDrive2);
|
||||
|
||||
FrameRefresh();
|
||||
}
|
||||
|
@ -267,7 +270,11 @@ void FrameDrawDiskStatus(HDC x)
|
|||
if (mem == NULL)
|
||||
return;
|
||||
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(g_CardMgr.GetObj(SLOT6));
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
if (cardManager.QuerySlot(SLOT6) != CT_Disk2)
|
||||
return;
|
||||
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
||||
|
||||
// We use the actual drive since probing from memory doesn't tell us anything we don't already know.
|
||||
// DOS3.3 ProDOS
|
||||
|
|
|
@ -34,10 +34,11 @@ namespace
|
|||
|
||||
void insertDisk(const QString & filename, const int disk)
|
||||
{
|
||||
if (g_CardMgr.QuerySlot(SLOT6) != CT_Disk2)
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
if (cardManager.QuerySlot(SLOT6) != CT_Disk2)
|
||||
return;
|
||||
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(g_CardMgr.GetObj(SLOT6));
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
||||
if (filename.isEmpty())
|
||||
{
|
||||
pDisk2Card->EjectDisk(disk);
|
||||
|
@ -76,11 +77,13 @@ namespace
|
|||
if (slot >= NUM_SLOTS)
|
||||
return;
|
||||
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
// Two paths:
|
||||
// 1) Via Config dialog: card not inserted yet
|
||||
// 2) Snapshot_LoadState_v2(): card already inserted
|
||||
if (g_CardMgr.QuerySlot(slot) != newCardType)
|
||||
g_CardMgr.Insert(slot, newCardType);
|
||||
if (cardManager.QuerySlot(slot) != newCardType)
|
||||
cardManager.Insert(slot, newCardType);
|
||||
|
||||
std::string slotText;
|
||||
switch (slot)
|
||||
|
@ -169,7 +172,9 @@ void GlobalOptions::setData(const GlobalOptions & data)
|
|||
|
||||
void getAppleWinPreferences(PreferenceData & data)
|
||||
{
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(g_CardMgr.GetObj(SLOT6));
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
||||
|
||||
data.disks.resize(diskIDs.size());
|
||||
for (size_t i = 0; i < diskIDs.size(); ++i)
|
||||
|
@ -192,8 +197,8 @@ void getAppleWinPreferences(PreferenceData & data)
|
|||
}
|
||||
|
||||
data.enhancedSpeed = pDisk2Card->GetEnhanceDisk();
|
||||
data.cardInSlot4 = g_CardMgr.QuerySlot(SLOT4);
|
||||
data.cardInSlot5 = g_CardMgr.QuerySlot(SLOT5);
|
||||
data.cardInSlot4 = cardManager.QuerySlot(SLOT4);
|
||||
data.cardInSlot5 = cardManager.QuerySlot(SLOT5);
|
||||
data.hdInSlot7 = HD_CardIsEnabled();
|
||||
|
||||
data.apple2Type = GetApple2Type();
|
||||
|
@ -216,7 +221,8 @@ void getAppleWinPreferences(PreferenceData & data)
|
|||
|
||||
void setAppleWinPreferences(const PreferenceData & currentData, const PreferenceData & newData)
|
||||
{
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(g_CardMgr.GetObj(SLOT6));
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
Disk2InterfaceCard* pDisk2Card = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6));
|
||||
|
||||
if (currentData.speakerVolume != newData.speakerVolume)
|
||||
{
|
||||
|
|
|
@ -112,13 +112,15 @@ namespace
|
|||
|
||||
emulator->displayLogo();
|
||||
|
||||
g_CardMgr.GetDisk2CardMgr().Reset();
|
||||
GetCardMgr().GetDisk2CardMgr().Reset();
|
||||
HD_Reset();
|
||||
}
|
||||
|
||||
void unloadEmulator()
|
||||
{
|
||||
CMouseInterface* pMouseCard = g_CardMgr.GetMouseCard();
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
CMouseInterface* pMouseCard = cardManager.GetMouseCard();
|
||||
if (pMouseCard)
|
||||
{
|
||||
pMouseCard->Reset();
|
||||
|
@ -132,7 +134,7 @@ namespace
|
|||
DSUninit();
|
||||
CpuDestroy();
|
||||
|
||||
g_CardMgr.GetDisk2CardMgr().Destroy();
|
||||
cardManager.GetDisk2CardMgr().Destroy();
|
||||
ImageDestroy();
|
||||
LogDone();
|
||||
RiffFinishWriteFile();
|
||||
|
@ -318,13 +320,15 @@ void QApple::on_timer()
|
|||
|
||||
const bool bVideoUpdate = true;
|
||||
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
int count = 0;
|
||||
const UINT dwClksPerFrame = NTSC_GetCyclesPerFrame();
|
||||
do
|
||||
{
|
||||
const DWORD uActualCyclesExecuted = CpuExecute(uCyclesToExecute, bVideoUpdate);
|
||||
g_dwCyclesThisFrame += uActualCyclesExecuted;
|
||||
g_CardMgr.GetDisk2CardMgr().UpdateDriveState(uActualCyclesExecuted);
|
||||
cardManager.GetDisk2CardMgr().UpdateDriveState(uActualCyclesExecuted);
|
||||
MB_PeriodicUpdate(uActualCyclesExecuted);
|
||||
SpkrUpdate(uActualCyclesExecuted);
|
||||
|
||||
|
@ -332,7 +336,7 @@ void QApple::on_timer()
|
|||
g_dwCyclesThisFrame = g_dwCyclesThisFrame % dwClksPerFrame;
|
||||
++count;
|
||||
}
|
||||
while (g_CardMgr.GetDisk2CardMgr().IsConditionForFullSpeed() && (myElapsedTimer.elapsed() < target + myOptions.msFullSpeed));
|
||||
while (cardManager.GetDisk2CardMgr().IsConditionForFullSpeed() && (myElapsedTimer.elapsed() < target + myOptions.msFullSpeed));
|
||||
|
||||
// just repaint each time, to make it simpler
|
||||
// we run @ 60 fps anyway
|
||||
|
@ -546,10 +550,11 @@ void QApple::on_actionScreenshot_triggered()
|
|||
void QApple::on_actionSwap_disks_triggered()
|
||||
{
|
||||
PauseEmulator pause(this);
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
if (g_CardMgr.QuerySlot(SLOT6) == CT_Disk2)
|
||||
if (cardManager.QuerySlot(SLOT6) == CT_Disk2)
|
||||
{
|
||||
dynamic_cast<Disk2InterfaceCard*>(g_CardMgr.GetObj(SLOT6))->DriveSwap();
|
||||
dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6))->DriveSwap();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -212,11 +212,13 @@ void Video::keyPressEvent(QKeyEvent *event)
|
|||
|
||||
void Video::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
if (g_CardMgr.IsMouseCardInstalled() && g_CardMgr.GetMouseCard()->IsActiveAndEnabled())
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
if (cardManager.IsMouseCardInstalled() && cardManager.GetMouseCard()->IsActiveAndEnabled())
|
||||
{
|
||||
int iX, iMinX, iMaxX;
|
||||
int iY, iMinY, iMaxY;
|
||||
g_CardMgr.GetMouseCard()->GetXY(iX, iMinX, iMaxX, iY, iMinY, iMaxY);
|
||||
cardManager.GetMouseCard()->GetXY(iX, iMinX, iMaxX, iY, iMinY, iMaxY);
|
||||
|
||||
const QPointF p = event->localPos();
|
||||
const QSize s = size();
|
||||
|
@ -229,7 +231,7 @@ void Video::mouseMoveEvent(QMouseEvent *event)
|
|||
|
||||
int outOfBoundsX;
|
||||
int outOfBoundsY;
|
||||
g_CardMgr.GetMouseCard()->SetPositionRel(dx, dy, &outOfBoundsX, &outOfBoundsY);
|
||||
cardManager.GetMouseCard()->SetPositionRel(dx, dy, &outOfBoundsX, &outOfBoundsY);
|
||||
|
||||
event->accept();
|
||||
}
|
||||
|
@ -237,16 +239,18 @@ void Video::mouseMoveEvent(QMouseEvent *event)
|
|||
|
||||
void Video::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
if (g_CardMgr.IsMouseCardInstalled() && g_CardMgr.GetMouseCard()->IsActiveAndEnabled())
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
if (cardManager.IsMouseCardInstalled() && cardManager.GetMouseCard()->IsActiveAndEnabled())
|
||||
{
|
||||
Qt::MouseButton button = event->button();
|
||||
switch (button)
|
||||
{
|
||||
case Qt::LeftButton:
|
||||
g_CardMgr.GetMouseCard()->SetButton(BUTTON0, BUTTON_DOWN);
|
||||
cardManager.GetMouseCard()->SetButton(BUTTON0, BUTTON_DOWN);
|
||||
break;
|
||||
case Qt::RightButton:
|
||||
g_CardMgr.GetMouseCard()->SetButton(BUTTON1, BUTTON_DOWN);
|
||||
cardManager.GetMouseCard()->SetButton(BUTTON1, BUTTON_DOWN);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -257,16 +261,18 @@ void Video::mousePressEvent(QMouseEvent *event)
|
|||
|
||||
void Video::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
if (g_CardMgr.IsMouseCardInstalled() && g_CardMgr.GetMouseCard()->IsActiveAndEnabled())
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
|
||||
if (cardManager.IsMouseCardInstalled() && cardManager.GetMouseCard()->IsActiveAndEnabled())
|
||||
{
|
||||
Qt::MouseButton button = event->button();
|
||||
switch (button)
|
||||
{
|
||||
case Qt::LeftButton:
|
||||
g_CardMgr.GetMouseCard()->SetButton(BUTTON0, BUTTON_UP);
|
||||
cardManager.GetMouseCard()->SetButton(BUTTON0, BUTTON_UP);
|
||||
break;
|
||||
case Qt::RightButton:
|
||||
g_CardMgr.GetMouseCard()->SetButton(BUTTON1, BUTTON_UP);
|
||||
cardManager.GetMouseCard()->SetButton(BUTTON1, BUTTON_UP);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -198,7 +198,7 @@ void Emulator::executeOneFrame()
|
|||
const DWORD uActualCyclesExecuted = CpuExecute(uCyclesToExecute, bVideoUpdate);
|
||||
g_dwCyclesThisFrame += uActualCyclesExecuted;
|
||||
|
||||
g_CardMgr.GetDisk2CardMgr().UpdateDriveState(uActualCyclesExecuted);
|
||||
GetCardMgr().GetDisk2CardMgr().UpdateDriveState(uActualCyclesExecuted);
|
||||
|
||||
// SDL2 seems to synch with screen refresh rate so we do not need to worry about timers
|
||||
const SDL_Rect srect = refreshTexture(myTexture);
|
||||
|
@ -275,9 +275,10 @@ void Emulator::processKeyDown(const SDL_KeyboardEvent & key, bool & quit)
|
|||
}
|
||||
case SDLK_F5:
|
||||
{
|
||||
if (g_CardMgr.QuerySlot(SLOT6) == CT_Disk2)
|
||||
CardManager & cardManager = GetCardMgr();
|
||||
if (cardManager.QuerySlot(SLOT6) == CT_Disk2)
|
||||
{
|
||||
dynamic_cast<Disk2InterfaceCard*>(g_CardMgr.GetObj(SLOT6))->DriveSwap();
|
||||
dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(SLOT6))->DriveSwap();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ namespace
|
|||
VideoInitialize();
|
||||
VideoSwitchVideocardPalette(RGB_GetVideocard(), GetVideoType());
|
||||
|
||||
g_CardMgr.GetDisk2CardMgr().Reset();
|
||||
GetCardMgr().GetDisk2CardMgr().Reset();
|
||||
HD_Reset();
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ namespace
|
|||
|
||||
void stopEmulator()
|
||||
{
|
||||
CMouseInterface* pMouseCard = g_CardMgr.GetMouseCard();
|
||||
CMouseInterface* pMouseCard = GetCardMgr().GetMouseCard();
|
||||
if (pMouseCard)
|
||||
{
|
||||
pMouseCard->Reset();
|
||||
|
@ -102,7 +102,7 @@ namespace
|
|||
PrintDestroy();
|
||||
CpuDestroy();
|
||||
|
||||
g_CardMgr.GetDisk2CardMgr().Destroy();
|
||||
GetCardMgr().GetDisk2CardMgr().Destroy();
|
||||
ImageDestroy();
|
||||
LogDone();
|
||||
}
|
||||
|
|
|
@ -132,7 +132,7 @@ void VideoBenchmark(std::function<void()> redraw, std::function<void()> refresh)
|
|||
const DWORD executedcycles = CpuExecute(cyclesPerMs, true);
|
||||
cyclesThisFrame += executedcycles;
|
||||
// every ms disk and joystick are updated
|
||||
g_CardMgr.GetDisk2CardMgr().UpdateDriveState(executedcycles);
|
||||
GetCardMgr().GetDisk2CardMgr().UpdateDriveState(executedcycles);
|
||||
#if 0
|
||||
JoyUpdateButtonLatch(executedcycles);
|
||||
#endif
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "ParallelPrinter.h"
|
||||
#include "SaveState.h"
|
||||
#include "Mockingboard.h"
|
||||
#include "SynchronousEventManager.h"
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
|
@ -62,6 +63,8 @@ static double g_fMHz = 1.0; // Affected by Config dialog's speed slider bar
|
|||
bool g_bDisableDirectSound = false;
|
||||
bool g_bDisableDirectSoundMockingboard = false;
|
||||
|
||||
SynchronousEventManager g_SynchronousEventMgr;
|
||||
|
||||
void LogFileTimeUntilFirstKeyReadReset(void)
|
||||
{
|
||||
if (!g_fh)
|
||||
|
@ -374,3 +377,9 @@ double Get6502BaseClock(void)
|
|||
{
|
||||
return (GetVideoRefreshRate() == VR_50HZ) ? CLK_6502_PAL : CLK_6502_NTSC;
|
||||
}
|
||||
|
||||
CardManager& GetCardMgr(void)
|
||||
{
|
||||
static CardManager g_CardMgr; // singleton
|
||||
return g_CardMgr;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue