AppleWin/source/Core.h

96 lines
2.6 KiB
C++

#pragma once
#include "Card.h"
#include "Common.h"
#include "StrFormat.h"
#include "Log.h"
void LogFileTimeUntilFirstKeyReadReset(void);
void LogFileTimeUntilFirstKeyRead(void);
extern const UINT16* GetOldAppleWinVersion(void);
extern std::string g_VERSIONSTRING; // Constructed in WinMain()
void SetAppleWinVersion(UINT16 major, UINT16 minor, UINT16 fix, UINT16 fix_minor);
bool CheckOldAppleWinVersion(void);
extern std::string g_pAppTitle;
extern eApple2Type g_Apple2Type;
eApple2Type GetApple2Type(void);
void SetApple2Type(eApple2Type type);
double Get6502BaseClock(void);
void SetCurrentCLK6502(void);
// set g_dwSpeed =
// | clockMultiplier == 0 => unchanged
// | clockMultiplier < 1 => (max(0.5, clockMultiplier) - 0.5) * 20
// | else => min(SPEED_MAX - 1, clockMultiplier * 10)
void UseClockMultiplier(double clockMultiplier);
extern bool g_bFullSpeed;
//===========================================
extern AppMode_e g_nAppMode;
extern std::string g_sStartDir;
extern std::string g_sProgramDir;
extern std::string g_sCurrentDir;
extern std::string g_sBuiltinSymbolsDir;
bool SetCurrentImageDir(const std::string& pszImageDir);
extern bool g_bRestart;
extern DWORD g_dwSpeed;
extern double g_fCurrentCLK6502;
extern int g_nCpuCyclesFeedback;
extern DWORD g_dwCyclesThisFrame;
extern int g_nMemoryClearType; // Cmd line switch: use specific MIP (Memory Initialization Pattern)
extern class CardManager& GetCardMgr(void);
extern class SynchronousEventManager g_SynchronousEventMgr;
extern HANDLE g_hCustomRomF8; // INVALID_HANDLE_VALUE if no custom F8 rom
extern bool g_bCustomRomF8Failed; // Set if custom F8 ROM file failed
extern HANDLE g_hCustomRom; // INVALID_HANDLE_VALUE if no custom rom
extern bool g_bCustomRomFailed; // Set if custom ROM file failed
extern bool g_bEnableSpeech;
#ifdef USE_SPEECH_API
class CSpeech;
extern CSpeech g_Speech;
#endif
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
class Pravets& GetPravets(void);
//#define LOG_PERF_TIMINGS
#ifdef LOG_PERF_TIMINGS
class PerfMarker
{
public:
PerfMarker(UINT64& globalCounter)
: counter(globalCounter)
{
QueryPerformanceCounter(&timeStart);
}
~PerfMarker()
{
QueryPerformanceCounter(&timeEnd);
counter += (UINT64)timeEnd.QuadPart - (UINT64)timeStart.QuadPart;
}
private:
UINT64& counter;
LARGE_INTEGER timeStart;
LARGE_INTEGER timeEnd;
};
#endif