Add cmd line option (for testing): -load-state-ignore-hdc-fw

This commit is contained in:
tomcw 2024-11-03 19:02:01 +00:00
parent 964a5d5198
commit 7c6ec3dbf0
7 changed files with 36 additions and 5 deletions

View File

@ -240,6 +240,8 @@
<br><br>
-screenshot-and-exit<br>
For testing. Use in combination with -load-state.<br><br>
-load-state-ignore-hdc-fw<br>
For testing. Use in combination with -load-state.<br><br>
-hdc-firmware-v1<br>
Force all attached hard disk controllers to use the old v1 firmware (as per pre-AppleWin 1.30.17).
<ul>

View File

@ -310,6 +310,10 @@ bool ProcessCmdLine(LPSTR lpCmdLine)
lpNextArg = GetNextArg(lpNextArg);
g_cmdLine.szSnapshotName = lpCmdLine;
}
else if (strcmp(lpCmdLine, "-load-state-ignore-hdc-fw") == 0) // For testing - Use in combination with -load-state
{
g_cmdLine.snapshotIgnoreHdcFirmware = true;
}
else if (strcmp(lpCmdLine, "-f") == 0 || strcmp(lpCmdLine, "-full-screen") == 0)
{
g_cmdLine.setFullScreen = 1;

View File

@ -43,6 +43,7 @@ struct CmdLine
useHdcFirmwareV1 = false;
useHdcFirmwareV2 = false;
szSnapshotName = NULL;
snapshotIgnoreHdcFirmware = false;
szScreenshotFilename = NULL;
uHarddiskNumBlocks = 0;
uRamWorksExPages = 0;
@ -95,6 +96,7 @@ struct CmdLine
LPCSTR szImageName_harddisk[NUM_SLOTS][NUM_HARDDISKS];
UINT uHarddiskNumBlocks;
LPSTR szSnapshotName;
bool snapshotIgnoreHdcFirmware;
LPSTR szScreenshotFilename;
UINT uRamWorksExPages;
UINT uSaturnBanks;

View File

@ -1399,6 +1399,11 @@ bool HarddiskInterfaceCard::LoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT ve
yamlLoadHelper.LoadMemory(m_saveStateFirmware, APPLE_SLOT_SIZE);
yamlLoadHelper.PopMap();
m_saveStateFirmwareValid = true;
// NB. A command line option can be used to ignore the HDC's firmware:
// . Used by AppleWin-Test (regression suite) so that an older save-state file can be used to test newer HDC firmware (eg. GH#1207).
if (Snapshot_GetIgnoreHdcFirmware())
m_saveStateFirmwareValid = false;
}
// Unplug all HDDs first in case eg. HDD-2 is to be plugged in as HDD-1

View File

@ -79,6 +79,20 @@ static YamlHelper yamlHelper;
//-----------------------------------------------------------------------------
static bool g_ignoreHdcFirmware = false;
bool Snapshot_GetIgnoreHdcFirmware()
{
return g_ignoreHdcFirmware;
}
void Snapshot_SetIgnoreHdcFirmware(const bool ignoreHdcFirmware)
{
g_ignoreHdcFirmware = ignoreHdcFirmware;
}
//-----------------------------------------------------------------------------
static void Snapshot_SetPathname(const std::string& strPathname)
{
if (strPathname.empty())

View File

@ -1,6 +1,6 @@
#pragma once
extern bool g_bSaveStateOnExit;
extern bool g_bSaveStateOnExit;
void Snapshot_SetFilename(const std::string& filename, const std::string& path="");
const std::string& Snapshot_GetFilename(void);
@ -8,7 +8,10 @@ const std::string& Snapshot_GetPath(void);
const std::string& Snapshot_GetPathname(void);
void Snapshot_GetDefaultFilenameAndPath(std::string& defaultFilename, std::string& defaultPath);
void Snapshot_UpdatePath(void);
void Snapshot_LoadState();
void Snapshot_SaveState();
void Snapshot_Startup();
void Snapshot_Shutdown();
void Snapshot_LoadState();
void Snapshot_SaveState();
void Snapshot_Startup();
void Snapshot_Shutdown();
bool Snapshot_GetIgnoreHdcFirmware();
void Snapshot_SetIgnoreHdcFirmware(const bool ignoreHdcFirmware);

View File

@ -959,6 +959,7 @@ static void RepeatInitialization(void)
// Override value just loaded from Registry by LoadConfiguration()
// . NB. Registry value is not updated with this cmd-line value
Snapshot_SetFilename(g_cmdLine.szSnapshotName);
Snapshot_SetIgnoreHdcFirmware(g_cmdLine.snapshotIgnoreHdcFirmware);
Snapshot_LoadState();
g_cmdLine.bBoot = true;
g_cmdLine.szSnapshotName = NULL;