mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-12-23 16:30:23 +00:00
9e5e21b8c9
This change does two things: 1. Updates the registry APIs to reduce the likelihood of uninitialized variables. The code wasn't always checking the return value of registry load operations. In some cases, this led to uninitialized memory being used, and crashes could result. For example, LoadConfiguration in Applewin.cpp was using an uninitialized value for the computer type if no registry variable for the "Apple 2 type" was set. New registry reading methods and macros have also been introduced, allowing default value fallbacks for the cases where a registry variable is not found. This makes registry access simpler and safer when a default value is known in advance. The registry code's style has also been updated to conform with the rest of the code base (tabs instead of spaces, naming conventions, etc.) 2. Introduces string safety improvements. A number of code paths have been modified to use safe-string functions instead of their unsafe counterparts (e.g., strcpy, sprintf). In the process, some strings were converted from "char" to "TCHAR". This was done mostly for consistency with the rest of the code-base.
67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include "SaveState_Structs_common.h"
|
|
#include "Common.h"
|
|
|
|
void LogFileTimeUntilFirstKeyReadReset(void);
|
|
void LogFileTimeUntilFirstKeyRead(void);
|
|
|
|
bool SetCurrentImageDir(const char* pszImageDir);
|
|
|
|
extern const UINT16* GetOldAppleWinVersion(void);
|
|
extern TCHAR VERSIONSTRING[]; // Constructed in WinMain()
|
|
|
|
extern const TCHAR *g_pAppTitle;
|
|
|
|
extern eApple2Type g_Apple2Type;
|
|
eApple2Type GetApple2Type(void);
|
|
void SetApple2Type(eApple2Type type);
|
|
|
|
double Get6502BaseClock(void);
|
|
void SetCurrentCLK6502(void);
|
|
|
|
void SingleStep(bool bReinit);
|
|
|
|
extern bool g_bFullSpeed;
|
|
|
|
//===========================================
|
|
|
|
// Win32
|
|
extern HINSTANCE g_hInstance;
|
|
|
|
extern AppMode_e g_nAppMode;
|
|
bool GetLoadedSaveStateFlag(void);
|
|
void SetLoadedSaveStateFlag(const bool bFlag);
|
|
bool GetHookAltGrControl(void);
|
|
|
|
extern TCHAR g_sProgramDir[MAX_PATH];
|
|
extern TCHAR g_sCurrentDir[MAX_PATH];
|
|
|
|
extern bool g_bRestart;
|
|
extern bool g_bRestartFullScreen;
|
|
|
|
extern DWORD g_dwSpeed;
|
|
extern double g_fCurrentCLK6502;
|
|
|
|
extern int g_nCpuCyclesFeedback;
|
|
extern DWORD g_dwCyclesThisFrame;
|
|
|
|
extern bool g_bDisableDirectInput; // Cmd line switch: don't init DI (so no DIMouse support)
|
|
extern bool g_bDisableDirectSound; // Cmd line switch: don't init DS (so no MB/Speaker support)
|
|
extern bool g_bDisableDirectSoundMockingboard; // Cmd line switch: don't init MB support
|
|
extern int g_nMemoryClearType; // Cmd line switch: use specific MIP (Memory Initialization Pattern)
|
|
|
|
extern SS_CARDTYPE g_Slot0; // LC or Saturn in slot0
|
|
extern SS_CARDTYPE g_Slot4; // Mockingboard, Z80, Mouse in slot4
|
|
extern SS_CARDTYPE g_Slot5; // Mockingboard, Z80, in slot5
|
|
extern SS_CARDTYPE g_SlotAux;
|
|
|
|
extern HANDLE g_hCustomRomF8; // NULL if no custom rom
|
|
|
|
#ifdef USE_SPEECH_API
|
|
class CSpeech;
|
|
extern CSpeech g_Speech;
|
|
#endif
|
|
|
|
extern __interface IPropertySheet& sg_PropertySheet;
|