mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-12-23 00:30:17 +00:00
Merge branch 'beevik-master':
. Prevent uninitialized value bugs and improve string safety. (PR #674)
This commit is contained in:
commit
00d45eb4e2
@ -70,7 +70,7 @@
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="3"
|
||||
DisableSpecificWarnings="4819;4996"
|
||||
DisableSpecificWarnings="4819;4995;4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@ -169,7 +169,7 @@
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="4"
|
||||
DisableSpecificWarnings="4819;4996"
|
||||
DisableSpecificWarnings="4819;4995;4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
|
@ -60,9 +60,11 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#include "Configuration/PropertySheet.h"
|
||||
#include "Tfe/Tfe.h"
|
||||
|
||||
#define VERSIONSTRING_SIZE 16
|
||||
|
||||
static UINT16 g_AppleWinVersion[4] = {0};
|
||||
char VERSIONSTRING[16] = "xx.yy.zz.ww";
|
||||
static UINT16 g_OldAppleWinVersion[4] = {0};
|
||||
TCHAR VERSIONSTRING[VERSIONSTRING_SIZE] = "xx.yy.zz.ww";
|
||||
|
||||
const TCHAR *g_pAppTitle = NULL;
|
||||
|
||||
@ -522,7 +524,7 @@ static void LoadConfigOldJoystick_v1(const UINT uJoyNum)
|
||||
//Reads configuration from the registry entries
|
||||
void LoadConfiguration(void)
|
||||
{
|
||||
DWORD dwComputerType;
|
||||
DWORD dwComputerType = 0;
|
||||
eApple2Type apple2Type = A2TYPE_APPLE2EENHANCED;
|
||||
|
||||
if (REGLOAD(TEXT(REGVALUE_APPLE2_TYPE), &dwComputerType))
|
||||
@ -559,16 +561,15 @@ void LoadConfiguration(void)
|
||||
|
||||
apple2Type = (eApple2Type) dwComputerType;
|
||||
}
|
||||
else // Support older AppleWin registry entries
|
||||
else if (REGLOAD(TEXT(REGVALUE_OLD_APPLE2_TYPE), &dwComputerType)) // Support older AppleWin registry entries
|
||||
{
|
||||
REGLOAD(TEXT(REGVALUE_OLD_APPLE2_TYPE), &dwComputerType);
|
||||
switch (dwComputerType)
|
||||
{
|
||||
// NB. No A2TYPE_APPLE2E (this is correct)
|
||||
case 0: apple2Type = A2TYPE_APPLE2; break;
|
||||
case 1: apple2Type = A2TYPE_APPLE2PLUS; break;
|
||||
case 2: apple2Type = A2TYPE_APPLE2EENHANCED; break;
|
||||
default: apple2Type = A2TYPE_APPLE2EENHANCED;
|
||||
default: apple2Type = A2TYPE_APPLE2EENHANCED; break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -576,18 +577,11 @@ void LoadConfiguration(void)
|
||||
|
||||
//
|
||||
|
||||
DWORD dwCpuType;
|
||||
eCpuType cpu = CPU_65C02;
|
||||
|
||||
if (REGLOAD(TEXT(REGVALUE_CPU_TYPE), &dwCpuType))
|
||||
{
|
||||
if (dwCpuType != CPU_6502 && dwCpuType != CPU_65C02)
|
||||
dwCpuType = CPU_65C02;
|
||||
|
||||
cpu = (eCpuType) dwCpuType;
|
||||
}
|
||||
|
||||
SetMainCpu(cpu);
|
||||
DWORD dwMainCpuType;
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_CPU_TYPE), &dwMainCpuType, CPU_65C02);
|
||||
if (dwMainCpuType != CPU_6502 && dwMainCpuType != CPU_65C02)
|
||||
dwMainCpuType = CPU_65C02;
|
||||
SetMainCpu((eCpuType)dwMainCpuType);
|
||||
|
||||
//
|
||||
|
||||
@ -607,7 +601,7 @@ void LoadConfiguration(void)
|
||||
LoadConfigOldJoystick_v1(JN_JOYSTICK1);
|
||||
|
||||
DWORD dwSoundType;
|
||||
REGLOAD(TEXT("Sound Emulation"), &dwSoundType);
|
||||
REGLOAD_DEFAULT(TEXT("Sound Emulation"), &dwSoundType, REG_SOUNDTYPE_NONE);
|
||||
switch (dwSoundType)
|
||||
{
|
||||
case REG_SOUNDTYPE_NONE:
|
||||
@ -621,29 +615,32 @@ void LoadConfiguration(void)
|
||||
break;
|
||||
}
|
||||
|
||||
char aySerialPortName[ CSuperSerialCard::SIZEOF_SERIALCHOICE_ITEM ];
|
||||
if (RegLoadString( TEXT(REG_CONFIG),
|
||||
TCHAR serialPortName[CSuperSerialCard::SIZEOF_SERIALCHOICE_ITEM];
|
||||
if (RegLoadString(
|
||||
TEXT(REG_CONFIG),
|
||||
TEXT(REGVALUE_SERIAL_PORT_NAME),
|
||||
TRUE,
|
||||
aySerialPortName,
|
||||
sizeof(aySerialPortName) ) )
|
||||
serialPortName,
|
||||
CSuperSerialCard::SIZEOF_SERIALCHOICE_ITEM))
|
||||
{
|
||||
sg_SSC.SetSerialPortName(aySerialPortName);
|
||||
sg_SSC.SetSerialPortName(serialPortName);
|
||||
}
|
||||
|
||||
REGLOAD(TEXT(REGVALUE_EMULATION_SPEED) ,&g_dwSpeed);
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_EMULATION_SPEED), &g_dwSpeed, SPEED_NORMAL);
|
||||
Config_Load_Video();
|
||||
SetCurrentCLK6502(); // Pre: g_dwSpeed && Config_Load_Video()->SetVideoRefreshRate()
|
||||
|
||||
DWORD dwEnhanceDisk;
|
||||
REGLOAD(TEXT(REGVALUE_ENHANCE_DISK_SPEED), &dwEnhanceDisk);
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_ENHANCE_DISK_SPEED), &dwEnhanceDisk, 1);
|
||||
sg_Disk2Card.SetEnhanceDisk(dwEnhanceDisk ? true : false);
|
||||
|
||||
REGLOAD(TEXT("Uthernet Active") ,(DWORD *)&tfe_enabled);
|
||||
DWORD dwTfeEnabled;
|
||||
REGLOAD_DEFAULT(TEXT("Uthernet Active"), &dwTfeEnabled, 0);
|
||||
tfe_enabled = dwTfeEnabled ? 1 : 0;
|
||||
|
||||
//
|
||||
|
||||
DWORD dwTmp;
|
||||
DWORD dwTmp = 0;
|
||||
|
||||
if(REGLOAD(TEXT(REGVALUE_FS_SHOW_SUBUNIT_STATUS), &dwTmp))
|
||||
SetFullScreenShowSubunitStatus(dwTmp ? true : false);
|
||||
@ -704,10 +701,10 @@ void LoadConfiguration(void)
|
||||
|
||||
//
|
||||
|
||||
char szFilename[MAX_PATH] = {0};
|
||||
TCHAR szFilename[MAX_PATH];
|
||||
|
||||
RegLoadString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_HDV_START_DIR), 1, szFilename, MAX_PATH);
|
||||
if (szFilename[0] == 0)
|
||||
RegLoadString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_HDV_START_DIR), 1, szFilename, MAX_PATH, TEXT(""));
|
||||
if (szFilename[0] == '\0')
|
||||
GetCurrentDirectory(sizeof(szFilename), szFilename);
|
||||
SetCurrentImageDir(szFilename);
|
||||
|
||||
@ -717,8 +714,8 @@ void LoadConfiguration(void)
|
||||
//
|
||||
|
||||
// Current/Starting Dir is the "root" of where the user keeps his disk images
|
||||
RegLoadString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_START_DIR), 1, szFilename, MAX_PATH);
|
||||
if (szFilename[0] == 0)
|
||||
RegLoadString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_START_DIR), 1, szFilename, MAX_PATH, TEXT(""));
|
||||
if (szFilename[0] == '\0')
|
||||
GetCurrentDirectory(sizeof(szFilename), szFilename);
|
||||
SetCurrentImageDir(szFilename);
|
||||
|
||||
@ -727,21 +724,17 @@ void LoadConfiguration(void)
|
||||
|
||||
//
|
||||
|
||||
szFilename[0] = 0;
|
||||
RegLoadString(TEXT(REG_CONFIG),TEXT(REGVALUE_SAVESTATE_FILENAME),1,szFilename,sizeof(szFilename));
|
||||
RegLoadString(TEXT(REG_CONFIG), TEXT(REGVALUE_SAVESTATE_FILENAME), 1, szFilename, MAX_PATH, TEXT(""));
|
||||
Snapshot_SetFilename(szFilename); // If not in Registry than default will be used (ie. g_sCurrentDir + default filename)
|
||||
|
||||
szFilename[0] = 0;
|
||||
RegLoadString(TEXT(REG_CONFIG),TEXT(REGVALUE_PRINTER_FILENAME),1,szFilename,sizeof(szFilename));
|
||||
RegLoadString(TEXT(REG_CONFIG), TEXT(REGVALUE_PRINTER_FILENAME), 1, szFilename, MAX_PATH, TEXT(""));
|
||||
Printer_SetFilename(szFilename); // If not in Registry than default will be used
|
||||
|
||||
dwTmp = 10;
|
||||
REGLOAD(TEXT(REGVALUE_PRINTER_IDLE_LIMIT), &dwTmp);
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_PRINTER_IDLE_LIMIT), &dwTmp, 10);
|
||||
Printer_SetIdleLimit(dwTmp);
|
||||
|
||||
char szUthernetInt[MAX_PATH] = {0};
|
||||
RegLoadString(TEXT(REG_CONFIG),TEXT("Uthernet Interface"),1,szUthernetInt,MAX_PATH);
|
||||
update_tfe_interface(szUthernetInt,NULL);
|
||||
RegLoadString(TEXT(REG_CONFIG), TEXT("Uthernet Interface"), 1, szFilename, MAX_PATH, TEXT(""));
|
||||
update_tfe_interface(szFilename, NULL);
|
||||
|
||||
if (REGLOAD(TEXT(REGVALUE_WINDOW_SCALE), &dwTmp))
|
||||
SetViewportScale(dwTmp);
|
||||
@ -1169,14 +1162,15 @@ static void InsertHardDisks(LPSTR szImageName_harddisk[NUM_HARDDISKS], bool& bBo
|
||||
|
||||
static bool CheckOldAppleWinVersion(void)
|
||||
{
|
||||
char szOldAppleWinVersion[sizeof(VERSIONSTRING)] = {0};
|
||||
RegLoadString(TEXT(REG_CONFIG), TEXT(REGVALUE_VERSION), 1, szOldAppleWinVersion, sizeof(szOldAppleWinVersion));
|
||||
TCHAR szOldAppleWinVersion[VERSIONSTRING_SIZE + 1];
|
||||
RegLoadString(TEXT(REG_CONFIG), TEXT(REGVALUE_VERSION), 1, szOldAppleWinVersion, VERSIONSTRING_SIZE, TEXT(""));
|
||||
const bool bShowAboutDlg = strcmp(szOldAppleWinVersion, VERSIONSTRING) != 0;
|
||||
|
||||
// version: xx.yy.zz.ww
|
||||
// offset : 0123456789
|
||||
char* p0 = szOldAppleWinVersion;
|
||||
szOldAppleWinVersion[strlen(szOldAppleWinVersion)] = '.'; // Overwrite null terminator with '.'
|
||||
int len = strlen(szOldAppleWinVersion);
|
||||
szOldAppleWinVersion[len] = '.'; // append a null terminator
|
||||
szOldAppleWinVersion[len + 1] = '\0';
|
||||
for (UINT i=0; i<4; i++)
|
||||
{
|
||||
char* p1 = strstr(p0, ".");
|
||||
@ -1515,7 +1509,7 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
||||
unsigned long minor = g_AppleWinVersion[1] = pFixedFileInfo->dwFileVersionMS & 0xffff;
|
||||
unsigned long fix = g_AppleWinVersion[2] = pFixedFileInfo->dwFileVersionLS >> 16;
|
||||
unsigned long fix_minor = g_AppleWinVersion[3] = pFixedFileInfo->dwFileVersionLS & 0xffff;
|
||||
sprintf(VERSIONSTRING, "%d.%d.%d.%d", major, minor, fix, fix_minor); // potential buffer overflow
|
||||
StringCbPrintf(VERSIONSTRING, VERSIONSTRING_SIZE, "%d.%d.%d.%d", major, minor, fix, fix_minor);
|
||||
}
|
||||
|
||||
delete [] pVerInfoBlock;
|
||||
|
@ -9,7 +9,7 @@ void LogFileTimeUntilFirstKeyRead(void);
|
||||
bool SetCurrentImageDir(const char* pszImageDir);
|
||||
|
||||
extern const UINT16* GetOldAppleWinVersion(void);
|
||||
extern char VERSIONSTRING[]; // Constructed in WinMain()
|
||||
extern TCHAR VERSIONSTRING[]; // Constructed in WinMain()
|
||||
|
||||
extern const TCHAR *g_pAppTitle;
|
||||
|
||||
|
@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#include "../Frame.h"
|
||||
#include "../resource/resource.h"
|
||||
|
||||
static const char g_szGPL[] =
|
||||
static const TCHAR g_szGPL[] =
|
||||
"This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\
|
||||
\r\n\
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\
|
||||
@ -65,8 +65,8 @@ static BOOL CALLBACK DlgProcAbout(HWND hWnd, UINT message, WPARAM wparam, LPARAM
|
||||
HICON hIcon = LoadIcon(g_hInstance, TEXT("APPLEWIN_ICON"));
|
||||
SendDlgItemMessage(hWnd, IDC_APPLEWIN_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
|
||||
|
||||
char szAppleWinVersion[50];
|
||||
sprintf(szAppleWinVersion, "AppleWin v%s", VERSIONSTRING);
|
||||
TCHAR szAppleWinVersion[50];
|
||||
StringCbPrintf(szAppleWinVersion, 50, "AppleWin v%s", VERSIONSTRING);
|
||||
SendDlgItemMessage(hWnd, IDC_APPLEWIN_VERSION, WM_SETTEXT, 0, (LPARAM)szAppleWinVersion);
|
||||
|
||||
SendDlgItemMessage(hWnd, IDC_GPL_TEXT, WM_SETTEXT, 0, (LPARAM)g_szGPL);
|
||||
|
@ -217,8 +217,9 @@ BOOL CPageConfig::DlgProcInternal(HWND hWnd, UINT message, WPARAM wparam, LPARAM
|
||||
BOOL bCustom = TRUE;
|
||||
if (g_dwSpeed == SPEED_NORMAL)
|
||||
{
|
||||
bCustom = FALSE;
|
||||
REGLOAD(TEXT(REGVALUE_CUSTOM_SPEED),(DWORD *)&bCustom);
|
||||
DWORD dwCustomSpeed;
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_CUSTOM_SPEED), &dwCustomSpeed, 0);
|
||||
bCustom = dwCustomSpeed ? TRUE : FALSE;
|
||||
}
|
||||
CheckRadioButton(hWnd, IDC_AUTHENTIC_SPEED, IDC_CUSTOM_SPEED, bCustom ? IDC_CUSTOM_SPEED : IDC_AUTHENTIC_SPEED);
|
||||
SetFocus(GetDlgItem(hWnd, bCustom ? IDC_SLIDER_CPU_SPEED : IDC_AUTHENTIC_SPEED));
|
||||
|
@ -143,10 +143,10 @@ int CPageConfigTfe::gray_ungray_items(HWND hwnd)
|
||||
int enable;
|
||||
int number;
|
||||
|
||||
int disabled = 0;
|
||||
|
||||
//resources_get_value("ETHERNET_DISABLED", (void *)&disabled);
|
||||
REGLOAD(TEXT("Uthernet Disabled") ,(DWORD *)&disabled);
|
||||
DWORD dwDisabled;
|
||||
REGLOAD_DEFAULT(TEXT("Uthernet Disabled"), &dwDisabled, 0);
|
||||
int disabled = dwDisabled ? 1 : 0;
|
||||
get_disabled_state(&disabled);
|
||||
|
||||
if (disabled)
|
||||
|
@ -148,8 +148,8 @@ BOOL CPageDisk::DlgProcInternal(HWND hWnd, UINT message, WPARAM wparam, LPARAM l
|
||||
|
||||
InitComboHDD(hWnd);
|
||||
|
||||
TCHAR PathToCiderPress[MAX_PATH] = "";
|
||||
RegLoadString(TEXT(REG_CONFIG), REGVALUE_CIDERPRESSLOC, 1, PathToCiderPress,MAX_PATH);
|
||||
TCHAR PathToCiderPress[MAX_PATH];
|
||||
RegLoadString(TEXT(REG_CONFIG), REGVALUE_CIDERPRESSLOC, 1, PathToCiderPress, MAX_PATH, TEXT(""));
|
||||
SendDlgItemMessage(hWnd, IDC_CIDERPRESS_FILENAME ,WM_SETTEXT, 0, (LPARAM)PathToCiderPress);
|
||||
|
||||
CheckDlgButton(hWnd, IDC_HDD_ENABLE, HD_CardIsEnabled() ? BST_CHECKED : BST_UNCHECKED);
|
||||
|
@ -141,8 +141,7 @@ std::string CPropertySheetHelper::BrowseToFile(HWND hWindow, TCHAR* pszTitle, TC
|
||||
strcpy(PathToFile, Snapshot_GetFilename()); //RAPCS, line 2.
|
||||
TCHAR szDirectory[MAX_PATH] = TEXT("");
|
||||
TCHAR szFilename[MAX_PATH];
|
||||
strcpy(szFilename, "");
|
||||
RegLoadString(TEXT("Configuration"), REGVALUE, 1, szFilename ,MAX_PATH);
|
||||
RegLoadString(TEXT("Configuration"), REGVALUE, 1, szFilename, MAX_PATH, TEXT(""));
|
||||
std::string PathName = szFilename;
|
||||
|
||||
OPENFILENAME ofn;
|
||||
@ -175,7 +174,7 @@ std::string CPropertySheetHelper::BrowseToFile(HWND hWindow, TCHAR* pszTitle, TC
|
||||
}
|
||||
else // Cancel is pressed
|
||||
{
|
||||
RegLoadString(TEXT("Configuration"), REGVALUE, 1, szFilename,MAX_PATH);
|
||||
RegLoadString(TEXT("Configuration"), REGVALUE, 1, szFilename, MAX_PATH, TEXT(""));
|
||||
PathName = szFilename;
|
||||
}
|
||||
|
||||
|
@ -154,17 +154,13 @@ void Disk2InterfaceCard::LoadLastDiskImage(const int drive)
|
||||
{
|
||||
_ASSERT(drive == DRIVE_1 || drive == DRIVE_2);
|
||||
|
||||
char sFilePath[ MAX_PATH + 1];
|
||||
sFilePath[0] = 0;
|
||||
const TCHAR *pRegKey = (drive == DRIVE_1)
|
||||
? TEXT(REGVALUE_PREF_LAST_DISK_1)
|
||||
: TEXT(REGVALUE_PREF_LAST_DISK_2);
|
||||
|
||||
const char *pRegKey = (drive == DRIVE_1)
|
||||
? REGVALUE_PREF_LAST_DISK_1
|
||||
: REGVALUE_PREF_LAST_DISK_2;
|
||||
|
||||
if (RegLoadString(TEXT(REG_PREFS), pRegKey, 1, sFilePath, MAX_PATH))
|
||||
TCHAR sFilePath[MAX_PATH];
|
||||
if (RegLoadString(TEXT(REG_PREFS), pRegKey, 1, sFilePath, MAX_PATH, TEXT("")))
|
||||
{
|
||||
sFilePath[ MAX_PATH ] = 0;
|
||||
|
||||
m_saveDiskImage = false;
|
||||
// Pass in ptr to local copy of filepath, since RemoveDisk() sets DiskPathFilename = ""
|
||||
InsertDisk(drive, sFilePath, IMAGE_USE_FILES_WRITE_PROTECT_STATUS, IMAGE_DONT_CREATE);
|
||||
@ -181,21 +177,21 @@ void Disk2InterfaceCard::SaveLastDiskImage(const int drive)
|
||||
if (!m_saveDiskImage)
|
||||
return;
|
||||
|
||||
const char *pFileName = m_floppyDrive[drive].m_disk.m_fullname;
|
||||
const TCHAR *pFileName = m_floppyDrive[drive].m_disk.m_fullname;
|
||||
|
||||
if (drive == DRIVE_1)
|
||||
RegSaveString(TEXT(REG_PREFS), REGVALUE_PREF_LAST_DISK_1, TRUE, pFileName);
|
||||
RegSaveString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_LAST_DISK_1), TRUE, pFileName);
|
||||
else
|
||||
RegSaveString(TEXT(REG_PREFS), REGVALUE_PREF_LAST_DISK_2, TRUE, pFileName);
|
||||
RegSaveString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_LAST_DISK_2), TRUE, pFileName);
|
||||
|
||||
//
|
||||
|
||||
char szPathName[MAX_PATH];
|
||||
strcpy(szPathName, DiskGetFullPathName(drive));
|
||||
if (_tcsrchr(szPathName, TEXT('\\')))
|
||||
TCHAR szPathName[MAX_PATH];
|
||||
StringCbCopy(szPathName, MAX_PATH, DiskGetFullPathName(drive));
|
||||
TCHAR* slash = _tcsrchr(szPathName, TEXT('\\'));
|
||||
if (slash != NULL)
|
||||
{
|
||||
char* pPathEnd = _tcsrchr(szPathName, TEXT('\\'))+1;
|
||||
*pPathEnd = 0;
|
||||
slash[1] = '\0';
|
||||
RegSaveString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_START_DIR), 1, szPathName);
|
||||
}
|
||||
}
|
||||
@ -678,52 +674,51 @@ bool Disk2InterfaceCard::IsConditionForFullSpeed(void)
|
||||
|
||||
void Disk2InterfaceCard::NotifyInvalidImage(const int drive, LPCTSTR pszImageFilename, const ImageError_e Error)
|
||||
{
|
||||
TCHAR szBuffer[MAX_PATH+128];
|
||||
szBuffer[sizeof(szBuffer)-1] = 0;
|
||||
TCHAR szBuffer[MAX_PATH + 128];
|
||||
|
||||
switch (Error)
|
||||
{
|
||||
case eIMAGE_ERROR_UNABLE_TO_OPEN:
|
||||
case eIMAGE_ERROR_UNABLE_TO_OPEN_GZ:
|
||||
case eIMAGE_ERROR_UNABLE_TO_OPEN_ZIP:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unable to open the file %s."),
|
||||
pszImageFilename);
|
||||
break;
|
||||
|
||||
case eIMAGE_ERROR_BAD_SIZE:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unable to use the file %s\nbecause the ")
|
||||
TEXT("disk image is an unsupported size."),
|
||||
pszImageFilename);
|
||||
break;
|
||||
|
||||
case eIMAGE_ERROR_BAD_FILE:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unable to use the file %s\nbecause the ")
|
||||
TEXT("OS can't access it."),
|
||||
pszImageFilename);
|
||||
break;
|
||||
|
||||
case eIMAGE_ERROR_UNSUPPORTED:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unable to use the file %s\nbecause the ")
|
||||
TEXT("disk image format is not recognized."),
|
||||
pszImageFilename);
|
||||
break;
|
||||
|
||||
case eIMAGE_ERROR_UNSUPPORTED_HDV:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unable to use the file %s\n")
|
||||
TEXT("because this UniDisk 3.5/Apple IIGS/hard-disk image is not supported.\n")
|
||||
TEXT("Try inserting as a hard-disk image instead."),
|
||||
@ -731,9 +726,9 @@ void Disk2InterfaceCard::NotifyInvalidImage(const int drive, LPCTSTR pszImageFil
|
||||
break;
|
||||
|
||||
case eIMAGE_ERROR_UNSUPPORTED_MULTI_ZIP:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unable to use the file %s\nbecause the ")
|
||||
TEXT("first file (%s) in this multi-zip archive is not recognized.\n")
|
||||
TEXT("Try unzipping and using the disk images directly.\n"),
|
||||
@ -743,34 +738,34 @@ void Disk2InterfaceCard::NotifyInvalidImage(const int drive, LPCTSTR pszImageFil
|
||||
|
||||
case eIMAGE_ERROR_GZ:
|
||||
case eIMAGE_ERROR_ZIP:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unable to use the compressed file %s\nbecause the ")
|
||||
TEXT("compressed disk image is corrupt/unsupported."),
|
||||
pszImageFilename);
|
||||
break;
|
||||
|
||||
case eIMAGE_ERROR_FAILED_TO_GET_PATHNAME:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unable to GetFullPathName() for the file: %s."),
|
||||
pszImageFilename);
|
||||
break;
|
||||
|
||||
case eIMAGE_ERROR_ZEROLENGTH_WRITEPROTECTED:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Unsupported zero-length write-protected file: %s."),
|
||||
pszImageFilename);
|
||||
break;
|
||||
|
||||
case eIMAGE_ERROR_FAILED_TO_INIT_ZEROLENGTH:
|
||||
_snprintf(
|
||||
StringCbPrintf(
|
||||
szBuffer,
|
||||
sizeof(szBuffer)-1,
|
||||
MAX_PATH + 128,
|
||||
TEXT("Failed to resize the zero-length file: %s."),
|
||||
pszImageFilename);
|
||||
break;
|
||||
@ -1346,8 +1341,8 @@ void Disk2InterfaceCard::DumpTrackWOZ(FloppyDisk floppy) // pass a copy of m_flo
|
||||
|
||||
nibbleCount++;
|
||||
|
||||
char str[10];
|
||||
sprintf(str, "%02X ", shiftReg);
|
||||
TCHAR str[10];
|
||||
StringCbPrintf(str, 10, "%02X ", shiftReg);
|
||||
OutputDebugString(str);
|
||||
if ((nibbleCount % 32) == 0)
|
||||
OutputDebugString("\n");
|
||||
@ -1400,15 +1395,14 @@ void Disk2InterfaceCard::ResetSwitches(void)
|
||||
|
||||
bool Disk2InterfaceCard::UserSelectNewDiskImage(const int drive, LPCSTR pszFilename/*=""*/)
|
||||
{
|
||||
TCHAR directory[MAX_PATH] = TEXT("");
|
||||
TCHAR filename[MAX_PATH] = TEXT("");
|
||||
TCHAR directory[MAX_PATH];
|
||||
TCHAR filename[MAX_PATH];
|
||||
TCHAR title[40];
|
||||
|
||||
strcpy(filename, pszFilename);
|
||||
StringCbCopy(filename, MAX_PATH, pszFilename);
|
||||
|
||||
RegLoadString(TEXT(REG_PREFS), REGVALUE_PREF_START_DIR, 1, directory, MAX_PATH);
|
||||
_tcscpy(title, TEXT("Select Disk Image For Drive "));
|
||||
_tcscat(title, drive ? TEXT("2") : TEXT("1"));
|
||||
RegLoadString(TEXT(REG_PREFS), REGVALUE_PREF_START_DIR, 1, directory, MAX_PATH, TEXT(""));
|
||||
StringCbPrintf(title, 40, TEXT("Select Disk Image For Drive %d"), drive + 1);
|
||||
|
||||
_ASSERT(sizeof(OPENFILENAME) == sizeof(OPENFILENAME_NT4)); // Required for Win98/ME support (selected by _WIN32_WINNT=0x0400 in stdafx.h)
|
||||
|
||||
@ -1431,7 +1425,7 @@ bool Disk2InterfaceCard::UserSelectNewDiskImage(const int drive, LPCSTR pszFilen
|
||||
if (GetOpenFileName(&ofn))
|
||||
{
|
||||
if ((!ofn.nFileExtension) || !filename[ofn.nFileExtension])
|
||||
_tcscat(filename,TEXT(".dsk"));
|
||||
StringCbCat(filename, MAX_PATH, TEXT(".dsk"));
|
||||
|
||||
ImageError_e Error = InsertDisk(drive, filename, ofn.Flags & OFN_READONLY, IMAGE_CREATE);
|
||||
if (Error == eIMAGE_ERROR_NONE)
|
||||
|
@ -2050,10 +2050,17 @@ static void ProcessButtonClick(int button, bool bFromButtonUI /*=false*/)
|
||||
// http://www.codeproject.com/menu/MenusForBeginners.asp?df=100&forumid=67645&exp=0&select=903061
|
||||
|
||||
void ProcessDiskPopupMenu(HWND hwnd, POINT pt, const int iDrive)
|
||||
{
|
||||
//This is the default installation path of CiderPress. It shall not be left blank, otherwise an explorer window will be open.
|
||||
TCHAR PathToCiderPress[MAX_PATH] = "C:\\Program Files\\faddenSoft\\CiderPress\\CiderPress.exe";
|
||||
RegLoadString(TEXT("Configuration"), REGVALUE_CIDERPRESSLOC, 1, PathToCiderPress,MAX_PATH);
|
||||
{
|
||||
// This is the default installation path of CiderPress.
|
||||
// It shall not be left blank, otherwise an explorer window will be open.
|
||||
TCHAR PathToCiderPress[MAX_PATH];
|
||||
RegLoadString(
|
||||
TEXT("Configuration"),
|
||||
REGVALUE_CIDERPRESSLOC,
|
||||
1,
|
||||
PathToCiderPress,
|
||||
MAX_PATH,
|
||||
TEXT("C:\\Program Files\\faddenSoft\\CiderPress\\CiderPress.exe"));
|
||||
//TODO: A directory is open if an empty path to CiderPress is set. This has to be fixed.
|
||||
|
||||
std::string filename1= "\"";
|
||||
|
@ -210,17 +210,13 @@ void HD_LoadLastDiskImage(const int iDrive)
|
||||
{
|
||||
_ASSERT(iDrive == HARDDISK_1 || iDrive == HARDDISK_2);
|
||||
|
||||
char sFilePath[ MAX_PATH + 1];
|
||||
sFilePath[0] = 0;
|
||||
|
||||
const char *pRegKey = (iDrive == HARDDISK_1)
|
||||
? REGVALUE_PREF_LAST_HARDDISK_1
|
||||
: REGVALUE_PREF_LAST_HARDDISK_2;
|
||||
|
||||
if (RegLoadString(TEXT(REG_PREFS), pRegKey, 1, sFilePath, MAX_PATH))
|
||||
TCHAR sFilePath[MAX_PATH];
|
||||
if (RegLoadString(TEXT(REG_PREFS), pRegKey, 1, sFilePath, MAX_PATH, TEXT("")))
|
||||
{
|
||||
sFilePath[ MAX_PATH ] = 0;
|
||||
|
||||
g_bSaveDiskImage = false;
|
||||
// Pass in ptr to local copy of filepath, since RemoveDisk() sets DiskPathFilename = "" // todo: update comment for HD func
|
||||
HD_Insert(iDrive, sFilePath);
|
||||
@ -419,13 +415,13 @@ BOOL HD_Insert(const int iDrive, LPCTSTR pszImageFilename)
|
||||
|
||||
static bool HD_SelectImage(const int iDrive, LPCSTR pszFilename)
|
||||
{
|
||||
TCHAR directory[MAX_PATH] = TEXT("");
|
||||
TCHAR filename[MAX_PATH] = TEXT("");
|
||||
TCHAR directory[MAX_PATH];
|
||||
TCHAR filename[MAX_PATH];
|
||||
TCHAR title[40];
|
||||
|
||||
strcpy(filename, pszFilename);
|
||||
|
||||
RegLoadString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_HDV_START_DIR), 1, directory, MAX_PATH);
|
||||
RegLoadString(TEXT(REG_PREFS), TEXT(REGVALUE_PREF_HDV_START_DIR), 1, directory, MAX_PATH, TEXT(""));
|
||||
_tcscpy(title, TEXT("Select HDV Image For HDD "));
|
||||
_tcscat(title, iDrive ? TEXT("2") : TEXT("1"));
|
||||
|
||||
|
@ -30,70 +30,95 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
//===========================================================================
|
||||
BOOL RegLoadString (LPCTSTR section, LPCTSTR key, BOOL peruser,
|
||||
LPTSTR buffer, DWORD chars) {
|
||||
int success = 0;
|
||||
TCHAR fullkeyname[256];
|
||||
wsprintf(fullkeyname,
|
||||
TEXT("Software\\AppleWin\\CurrentVersion\\%s"),
|
||||
(LPCTSTR)section);
|
||||
HKEY keyhandle;
|
||||
if (!RegOpenKeyEx((peruser ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE),
|
||||
fullkeyname,
|
||||
0,
|
||||
KEY_READ,
|
||||
&keyhandle)) {
|
||||
DWORD type;
|
||||
DWORD size = chars;
|
||||
success = (!RegQueryValueEx(keyhandle,key,0,&type,(LPBYTE)buffer,&size)) &&
|
||||
size;
|
||||
RegCloseKey(keyhandle);
|
||||
}
|
||||
return success;
|
||||
BOOL RegLoadString (LPCTSTR section, LPCTSTR key, BOOL peruser, LPTSTR buffer, DWORD chars)
|
||||
{
|
||||
TCHAR fullkeyname[256];
|
||||
StringCbPrintf(fullkeyname, 256, TEXT("Software\\AppleWin\\CurrentVersion\\%s"), section);
|
||||
|
||||
BOOL success = FALSE;
|
||||
HKEY keyhandle;
|
||||
LSTATUS status = RegOpenKeyEx(
|
||||
(peruser ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE),
|
||||
fullkeyname,
|
||||
0,
|
||||
KEY_READ,
|
||||
&keyhandle);
|
||||
if (status == 0)
|
||||
{
|
||||
DWORD type;
|
||||
DWORD size = chars;
|
||||
status = RegQueryValueEx(keyhandle, key, NULL, &type, (LPBYTE)buffer, &size);
|
||||
if (status == 0 && size != 0)
|
||||
success = TRUE;
|
||||
}
|
||||
|
||||
RegCloseKey(keyhandle);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
BOOL RegLoadValue (LPCTSTR section, LPCTSTR key, BOOL peruser, DWORD *value) {
|
||||
if (!value)
|
||||
return 0;
|
||||
TCHAR buffer[32] = TEXT("");
|
||||
if (!RegLoadString(section,key,peruser,buffer,32))
|
||||
return 0;
|
||||
buffer[31] = 0;
|
||||
*value = (DWORD)_ttoi(buffer);
|
||||
return 1;
|
||||
BOOL RegLoadString (LPCTSTR section, LPCTSTR key, BOOL peruser, LPTSTR buffer, DWORD chars, LPCTSTR defaultValue)
|
||||
{
|
||||
BOOL success = RegLoadString(section, key, peruser, buffer, chars);
|
||||
if (!success)
|
||||
StringCbCopy(buffer, chars, defaultValue);
|
||||
return success;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
BOOL RegLoadValue (LPCTSTR section, LPCTSTR key, BOOL peruser, DWORD* value) {
|
||||
TCHAR buffer[32];
|
||||
if (!RegLoadString(section, key, peruser, buffer, 32))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*value = (DWORD)_ttoi(buffer);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
BOOL RegLoadValue (LPCTSTR section, LPCTSTR key, BOOL peruser, DWORD* value, DWORD defaultValue) {
|
||||
BOOL success = RegLoadValue(section, key, peruser, value);
|
||||
if (!success)
|
||||
*value = defaultValue;
|
||||
return success;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void RegSaveString (LPCTSTR section, LPCTSTR key, BOOL peruser, LPCTSTR buffer) {
|
||||
TCHAR fullkeyname[256];
|
||||
wsprintf(fullkeyname,
|
||||
TEXT("Software\\AppleWin\\CurrentVersion\\%s"),
|
||||
(LPCTSTR)section);
|
||||
HKEY keyhandle;
|
||||
DWORD disposition;
|
||||
if (!RegCreateKeyEx((peruser ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE),
|
||||
fullkeyname,
|
||||
0,
|
||||
NULL,
|
||||
REG_OPTION_NON_VOLATILE,
|
||||
KEY_READ | KEY_WRITE,
|
||||
(LPSECURITY_ATTRIBUTES)NULL,
|
||||
&keyhandle,
|
||||
&disposition)) {
|
||||
RegSetValueEx(keyhandle,
|
||||
key,
|
||||
0,
|
||||
REG_SZ,
|
||||
(CONST BYTE *)buffer,
|
||||
(_tcslen(buffer)+1)*sizeof(TCHAR));
|
||||
RegCloseKey(keyhandle);
|
||||
}
|
||||
TCHAR fullkeyname[256];
|
||||
StringCbPrintf(fullkeyname, 256, TEXT("Software\\AppleWin\\CurrentVersion\\%s"), section);
|
||||
|
||||
HKEY keyhandle;
|
||||
DWORD disposition;
|
||||
LSTATUS status = RegCreateKeyEx(
|
||||
(peruser ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE),
|
||||
fullkeyname,
|
||||
0,
|
||||
NULL,
|
||||
REG_OPTION_NON_VOLATILE,
|
||||
KEY_READ | KEY_WRITE,
|
||||
(LPSECURITY_ATTRIBUTES)NULL,
|
||||
&keyhandle,
|
||||
&disposition);
|
||||
if (status == 0)
|
||||
{
|
||||
RegSetValueEx(
|
||||
keyhandle,
|
||||
key,
|
||||
0,
|
||||
REG_SZ,
|
||||
(CONST LPBYTE)buffer,
|
||||
(_tcslen(buffer) + 1) * sizeof(TCHAR));
|
||||
RegCloseKey(keyhandle);
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void RegSaveValue (LPCTSTR section, LPCTSTR key, BOOL peruser, DWORD value) {
|
||||
TCHAR buffer[32] = TEXT("");
|
||||
_ultot(value,buffer,10);
|
||||
RegSaveString(section,key,peruser,buffer);
|
||||
TCHAR buffer[32] = TEXT("");
|
||||
StringCbPrintf(buffer, 32, "%d", value);
|
||||
RegSaveString(section, key, peruser, buffer);
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#define REGLOAD(a,b) RegLoadValue(TEXT(REG_CONFIG),a,1,b)
|
||||
#define REGSAVE(a,b) RegSaveValue(TEXT(REG_CONFIG),a,1,b)
|
||||
#define REGLOAD(a, b) RegLoadValue(TEXT(REG_CONFIG), (a), TRUE, (b))
|
||||
#define REGLOAD_DEFAULT(a, b, c) RegLoadValue(TEXT(REG_CONFIG), (a), TRUE, (b), (c))
|
||||
#define REGSAVE(a, b) RegSaveValue(TEXT(REG_CONFIG), (a), TRUE, (b))
|
||||
|
||||
BOOL RegLoadString (LPCTSTR,LPCTSTR,BOOL,LPTSTR,DWORD);
|
||||
BOOL RegLoadValue (LPCTSTR,LPCTSTR,BOOL,DWORD *);
|
||||
void RegSaveString (LPCTSTR,LPCTSTR,BOOL,LPCTSTR);
|
||||
void RegSaveValue (LPCTSTR,LPCTSTR,BOOL,DWORD);
|
||||
|
||||
BOOL RegLoadValue (LPCTSTR,LPCTSTR,BOOL,BOOL *);
|
||||
BOOL RegLoadString (LPCTSTR section, LPCTSTR key, BOOL peruser, LPTSTR buffer, DWORD chars);
|
||||
BOOL RegLoadString (LPCTSTR section, LPCTSTR key, BOOL peruser, LPTSTR buffer, DWORD chars, LPCTSTR defaultValue);
|
||||
BOOL RegLoadValue (LPCTSTR section, LPCTSTR key, BOOL peruser, DWORD* value);
|
||||
BOOL RegLoadValue (LPCTSTR section, LPCTSTR key, BOOL peruser, DWORD* value, DWORD defaultValue);
|
||||
void RegSaveString (LPCTSTR section, LPCTSTR key, BOOL peruser, LPCTSTR buffer);
|
||||
void RegSaveValue (LPCTSTR section, LPCTSTR key, BOOL peruser, DWORD value);
|
||||
|
@ -36,6 +36,7 @@ typedef UINT64 uint64_t;
|
||||
|
||||
#include <windows.h>
|
||||
#include <winuser.h> // WM_MOUSEWHEEL
|
||||
#include <strsafe.h>
|
||||
#include <commctrl.h>
|
||||
#include <ddraw.h>
|
||||
#include <htmlhelp.h>
|
||||
|
@ -128,9 +128,9 @@ static LPDIRECTDRAW g_lpDD = NULL;
|
||||
|
||||
bool g_bDisplayPrintScreenFileName = false;
|
||||
bool g_bShowPrintScreenWarningDialog = true;
|
||||
void Util_MakeScreenShotFileName( char *pFinalFileName_ );
|
||||
bool Util_TestScreenShotFileName( const char *pFileName );
|
||||
void Video_SaveScreenShot( const VideoScreenShot_e ScreenShotType, const char *pScreenShotFileName );
|
||||
void Util_MakeScreenShotFileName( TCHAR *pFinalFileName_, DWORD chars );
|
||||
bool Util_TestScreenShotFileName( const TCHAR *pFileName );
|
||||
void Video_SaveScreenShot( const VideoScreenShot_e ScreenShotType, const TCHAR *pScreenShotFileName );
|
||||
void Video_MakeScreenShot( FILE *pFile, const VideoScreenShot_e ScreenShotType );
|
||||
void videoCreateDIBSection();
|
||||
|
||||
@ -442,8 +442,8 @@ void VideoDisplayLogo ()
|
||||
SetTextAlign(hFrameDC,TA_RIGHT | TA_TOP);
|
||||
SetBkMode(hFrameDC,TRANSPARENT);
|
||||
|
||||
char szVersion[ 64 ] = "";
|
||||
sprintf( szVersion, "Version %s", VERSIONSTRING );
|
||||
TCHAR szVersion[ 64 ];
|
||||
StringCbPrintf(szVersion, 64, "Version %s", VERSIONSTRING);
|
||||
int xoff = GetFullScreenOffsetX(), yoff = GetFullScreenOffsetY();
|
||||
|
||||
#define DRAWVERSION(x,y,c) \
|
||||
@ -464,7 +464,7 @@ void VideoDisplayLogo ()
|
||||
}
|
||||
|
||||
#if _DEBUG
|
||||
sprintf( szVersion, "DEBUG" );
|
||||
StringCbPrintf(szVersion, 64, "DEBUG");
|
||||
DRAWVERSION( 2, -358*scale,RGB(0x00,0x00,0x00));
|
||||
DRAWVERSION( 1, -357*scale,RGB(0x00,0x00,0x00));
|
||||
DRAWVERSION( 0, -356*scale,RGB(0xFF,0x00,0xFF));
|
||||
@ -953,32 +953,32 @@ void DDUninit(void)
|
||||
|
||||
static int g_nLastScreenShot = 0;
|
||||
const int nMaxScreenShot = 999999999;
|
||||
static char *g_pLastDiskImageName = NULL;
|
||||
static TCHAR *g_pLastDiskImageName = NULL;
|
||||
|
||||
//===========================================================================
|
||||
void Video_ResetScreenshotCounter( char *pImageName )
|
||||
void Video_ResetScreenshotCounter( TCHAR *pImageName )
|
||||
{
|
||||
g_nLastScreenShot = 0;
|
||||
g_pLastDiskImageName = pImageName;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void Util_MakeScreenShotFileName( char *pFinalFileName_ )
|
||||
void Util_MakeScreenShotFileName( TCHAR *pFinalFileName_, DWORD chars )
|
||||
{
|
||||
char sPrefixScreenShotFileName[ 256 ] = "AppleWin_ScreenShot";
|
||||
const TCHAR * sPrefixScreenShotFileName = "AppleWin_ScreenShot";
|
||||
// TODO: g_sScreenshotDir
|
||||
char *pPrefixFileName = g_pLastDiskImageName ? g_pLastDiskImageName : sPrefixScreenShotFileName;
|
||||
const TCHAR *pPrefixFileName = g_pLastDiskImageName ? g_pLastDiskImageName : sPrefixScreenShotFileName;
|
||||
#if SCREENSHOT_BMP
|
||||
sprintf( pFinalFileName_, "%s_%09d.bmp", pPrefixFileName, g_nLastScreenShot );
|
||||
StringCbPrintf( pFinalFileName_, chars, TEXT("%s_%09d.bmp"), pPrefixFileName, g_nLastScreenShot );
|
||||
#endif
|
||||
#if SCREENSHOT_TGA
|
||||
sprintf( pFinalFileName_, "%s%09d.tga", pPrefixFileName, g_nLastScreenShot );
|
||||
StringCbPrintf( pFinalFileName_, chars, TEXT("%s%09d.tga"), pPrefixFileName, g_nLastScreenShot );
|
||||
#endif
|
||||
}
|
||||
|
||||
// Returns TRUE if file exists, else FALSE
|
||||
//===========================================================================
|
||||
bool Util_TestScreenShotFileName( const char *pFileName )
|
||||
bool Util_TestScreenShotFileName( const TCHAR *pFileName )
|
||||
{
|
||||
bool bFileExists = false;
|
||||
FILE *pFile = fopen( pFileName, "rt" );
|
||||
@ -993,7 +993,7 @@ bool Util_TestScreenShotFileName( const char *pFileName )
|
||||
//===========================================================================
|
||||
void Video_TakeScreenShot( const VideoScreenShot_e ScreenShotType )
|
||||
{
|
||||
char sScreenShotFileName[ MAX_PATH ];
|
||||
TCHAR sScreenShotFileName[ MAX_PATH ];
|
||||
|
||||
// find last screenshot filename so we don't overwrite the existing user ones
|
||||
bool bExists = true;
|
||||
@ -1001,13 +1001,14 @@ void Video_TakeScreenShot( const VideoScreenShot_e ScreenShotType )
|
||||
{
|
||||
if (g_nLastScreenShot > nMaxScreenShot) // Holy Crap! User has maxed the number of screenshots!?
|
||||
{
|
||||
sprintf( sScreenShotFileName, "You have more then %d screenshot filenames! They will no longer be saved.\n\nEither move some of your screenshots or increase the maximum in video.cpp\n", nMaxScreenShot );
|
||||
MessageBox( g_hFrameWindow, sScreenShotFileName, "Warning", MB_OK );
|
||||
TCHAR msg[512];
|
||||
StringCbPrintf( msg, 512, "You have more then %d screenshot filenames! They will no longer be saved.\n\nEither move some of your screenshots or increase the maximum in video.cpp\n", nMaxScreenShot );
|
||||
MessageBox( g_hFrameWindow, msg, "Warning", MB_OK );
|
||||
g_nLastScreenShot = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
Util_MakeScreenShotFileName( sScreenShotFileName );
|
||||
Util_MakeScreenShotFileName( sScreenShotFileName, MAX_PATH );
|
||||
bExists = Util_TestScreenShotFileName( sScreenShotFileName );
|
||||
if( !bExists )
|
||||
{
|
||||
@ -1020,7 +1021,7 @@ void Video_TakeScreenShot( const VideoScreenShot_e ScreenShotType )
|
||||
g_nLastScreenShot++;
|
||||
}
|
||||
|
||||
void Video_RedrawAndTakeScreenShot( const char* pScreenshotFilename )
|
||||
void Video_RedrawAndTakeScreenShot( const TCHAR* pScreenshotFilename )
|
||||
{
|
||||
_ASSERT(pScreenshotFilename);
|
||||
if (!pScreenshotFilename)
|
||||
@ -1186,7 +1187,7 @@ static void Video_MakeScreenShot(FILE *pFile, const VideoScreenShot_e ScreenShot
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static void Video_SaveScreenShot( const VideoScreenShot_e ScreenShotType, const char *pScreenShotFileName )
|
||||
static void Video_SaveScreenShot( const VideoScreenShot_e ScreenShotType, const TCHAR *pScreenShotFileName )
|
||||
{
|
||||
FILE *pFile = fopen( pScreenShotFileName, "wb" );
|
||||
if( pFile )
|
||||
@ -1211,7 +1212,7 @@ static BYTE g_videoRom[kVideoRomSizeMax];
|
||||
static UINT g_videoRomSize = 0;
|
||||
static bool g_videoRomRockerSwitch = false;
|
||||
|
||||
bool ReadVideoRomFile(const char* pRomFile)
|
||||
bool ReadVideoRomFile(const TCHAR* pRomFile)
|
||||
{
|
||||
g_videoRomSize = 0;
|
||||
|
||||
@ -1276,23 +1277,29 @@ enum VideoType127_e
|
||||
|
||||
void Config_Load_Video()
|
||||
{
|
||||
REGLOAD(TEXT(REGVALUE_VIDEO_MODE) ,&g_eVideoType);
|
||||
REGLOAD(TEXT(REGVALUE_VIDEO_STYLE) ,(DWORD*)&g_eVideoStyle);
|
||||
REGLOAD(TEXT(REGVALUE_VIDEO_MONO_COLOR),&g_nMonochromeRGB);
|
||||
DWORD dwTmp;
|
||||
|
||||
DWORD rate = VR_60HZ;
|
||||
REGLOAD(TEXT(REGVALUE_VIDEO_REFRESH_RATE), &rate);
|
||||
SetVideoRefreshRate((VideoRefreshRate_e)rate);
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_VIDEO_MODE), &dwTmp, (DWORD)VT_DEFAULT);
|
||||
g_eVideoType = dwTmp;
|
||||
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_VIDEO_STYLE), &dwTmp, (DWORD)VS_HALF_SCANLINES);
|
||||
g_eVideoStyle = (VideoStyle_e)dwTmp;
|
||||
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_VIDEO_MONO_COLOR), &dwTmp, (DWORD)RGB(0xC0, 0xC0, 0xC0));
|
||||
g_nMonochromeRGB = (COLORREF)dwTmp;
|
||||
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_VIDEO_REFRESH_RATE), &dwTmp, (DWORD)VR_60HZ);
|
||||
SetVideoRefreshRate((VideoRefreshRate_e)dwTmp);
|
||||
|
||||
//
|
||||
|
||||
const UINT16* pOldVersion = GetOldAppleWinVersion();
|
||||
if (pOldVersion[0] == 1 && pOldVersion[1] <= 28 && pOldVersion[2] <= 1)
|
||||
{
|
||||
DWORD halfScanLines = 0;
|
||||
REGLOAD(TEXT(REGVALUE_VIDEO_HALF_SCAN_LINES),&halfScanLines);
|
||||
DWORD dwHalfScanLines;
|
||||
REGLOAD_DEFAULT(TEXT(REGVALUE_VIDEO_HALF_SCAN_LINES), &dwHalfScanLines, 0);
|
||||
|
||||
if (halfScanLines)
|
||||
if (dwHalfScanLines)
|
||||
g_eVideoStyle = (VideoStyle_e) ((DWORD)g_eVideoStyle | VS_HALF_SCANLINES);
|
||||
else
|
||||
g_eVideoStyle = (VideoStyle_e) ((DWORD)g_eVideoStyle & ~VS_HALF_SCANLINES);
|
||||
|
Loading…
Reference in New Issue
Block a user