diff --git a/src/emucore/Thumbulator.hxx b/src/emucore/Thumbulator.hxx
index a37849ba3..dc9952098 100644
--- a/src/emucore/Thumbulator.hxx
+++ b/src/emucore/Thumbulator.hxx
@@ -36,7 +36,7 @@ class Cartridge;
#ifdef DEBUGGER_SUPPORT
#define THUMB_CYCLE_COUNT
- #define COUNT_OPS
+ //#define COUNT_OPS
//#define THUMB_STATS
#endif
diff --git a/src/os/windows/Stella.sln b/src/os/windows/Stella.sln
index 0bcd5ccc1..816d49e37 100755
--- a/src/os/windows/Stella.sln
+++ b/src/os/windows/Stella.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29613.14
+# Visual Studio Version 17
+VisualStudioVersion = 17.4.33110.190
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Stella", "Stella.vcxproj", "{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}"
EndProject
@@ -12,6 +12,8 @@ Global
Debug-NoDebugger|x64 = Debug-NoDebugger|x64
Profile|Win32 = Profile|Win32
Profile|x64 = Profile|x64
+ Release PGO|Win32 = Release PGO|Win32
+ Release PGO|x64 = Release PGO|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release-Sanitize|Win32 = Release-Sanitize|Win32
@@ -30,6 +32,10 @@ Global
{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Profile|Win32.Build.0 = Profile|Win32
{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Profile|x64.ActiveCfg = Profile|x64
{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Profile|x64.Build.0 = Profile|x64
+ {D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Release PGO|Win32.ActiveCfg = Release PGO|Win32
+ {D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Release PGO|Win32.Build.0 = Release PGO|Win32
+ {D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Release PGO|x64.ActiveCfg = Release PGO|x64
+ {D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Release PGO|x64.Build.0 = Release PGO|x64
{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Release|Win32.ActiveCfg = Release|Win32
{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Release|Win32.Build.0 = Release|Win32
{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}.Release|x64.ActiveCfg = Release|x64
diff --git a/src/os/windows/Stella.vcxproj b/src/os/windows/Stella.vcxproj
index b5492efa3..1b88ac41f 100755
--- a/src/os/windows/Stella.vcxproj
+++ b/src/os/windows/Stella.vcxproj
@@ -25,6 +25,14 @@
Profile
x64
+
+ Release PGO
+ Win32
+
+
+ Release PGO
+ x64
+
Release-Sanitize
Win32
@@ -54,6 +62,11 @@
MultiByte
v143
+
+ Application
+ MultiByte
+ v143
+
Application
MultiByte
@@ -80,6 +93,12 @@
v143
false
+
+ Application
+ MultiByte
+ v143
+ false
+
Application
MultiByte
@@ -111,6 +130,10 @@
+
+
+
+
@@ -131,6 +154,10 @@
+
+
+
+
@@ -163,15 +190,19 @@
true
true
$(Platform)\$(Configuration)\
+ $(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
Release\
$(Platform)\$(Configuration)\
+ $(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
Release\
$(Platform)\$(Configuration)\
+ $(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
+ $(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
AllRules.ruleset
@@ -187,21 +218,27 @@
AllRules.ruleset
+ AllRules.ruleset
AllRules.ruleset
AllRules.ruleset
+
+
AllRules.ruleset
+ AllRules.ruleset
AllRules.ruleset
AllRules.ruleset
+
+
@@ -217,6 +254,10 @@
$(ProjectDir)\SDL\lib\x86;$(LibraryPath)
$(ProjectDir)\SDL\include;$(IncludePath)
+
+ $(ProjectDir)\SDL\lib\x86;$(LibraryPath)
+ $(ProjectDir)\SDL\include;$(IncludePath)
+
$(ProjectDir)\SDL\lib\x86;$(LibraryPath)
$(ProjectDir)\SDL\include;$(IncludePath)
@@ -238,6 +279,10 @@
$(ProjectDir)\SDL\lib\x64;$(LibraryPath)
$(ProjectDir)\SDL\include;$(IncludePath)
+
+ $(ProjectDir)\SDL\lib\x64;$(LibraryPath)
+ $(ProjectDir)\SDL\include;$(IncludePath)
+
$(ProjectDir)\SDL\lib\x64;$(LibraryPath)
$(ProjectDir)\SDL\include;$(IncludePath)
@@ -421,6 +466,41 @@
UseFastLinkTimeCodeGeneration
+
+
+ true
+ true
+ ..\..\debugger\yacc;..\..\emucore;..\..\emucore\tia;..\..\emucore\tia\frame-manager;..\..\common;..\..\common\tv_filters;..\..\gui;..\..\debugger\gui;..\..\debugger;..\..\os\windows;..\..\cheat;..\..\lib\zlib;..\..\lib\libpng;..\..\lib\json;..\..\common\repository\sqlite;..\..\lib\sqlite;..\..\lib\nanojpeg;..\..\lib\tinyexif;..\..\lib\httplib;%(AdditionalIncludeDirectories)
+ BSPF_WINDOWS;WIN32;NOMINMAX;NDEBUG;SDL_SUPPORT;GUI_SUPPORT;IMAGE_SUPPORT;ZIP_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;HTTP_LIB_SUPPORT;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ false
+
+
+ Level4
+ ProgramDatabase
+ $(IntDir)obj\\windows\%(RelativeDir)
+ StreamingSIMDExtensions
+ stdcpp17
+ true
+ 4100;4127;4146;4244;26400;26409;26410;26415;26429;26438;26440;26446;26451;26455;26459;26467;26472;26481;26482;26485;26492;%(DisableSpecificWarnings)
+ CompileAsCpp
+ NoListing
+ $(IntDir)asm\windows\%(RelativeDir)
+
+
+ SDL2.lib;SDL2main.lib;SDL2main.lib;%(AdditionalDependencies)
+ $(OutDir)Stella.exe
+ true
+ Windows
+ true
+ true
+ false
+
+
+ MachineX86
+ UseFastLinkTimeCodeGeneration
+
+
true
@@ -530,6 +610,45 @@
UseFastLinkTimeCodeGeneration
+
+
+ X64
+
+
+ MaxSpeed
+ AnySuitable
+ true
+ ..\..\debugger\yacc;..\..\emucore;..\..\emucore\tia;..\..\emucore\tia\frame-manager;..\..\common;..\..\common\tv_filters;..\..\gui;..\..\debugger\gui;..\..\debugger;..\..\os\windows;..\..\cheat;..\..\lib\zlib;..\..\lib\libpng;..\..\lib\json;..\..\common\repository\sqlite;..\..\lib\sqlite;..\..\lib\nanojpeg;..\..\lib\tinyexif;..\..\lib\httplib;%(AdditionalIncludeDirectories)
+ BSPF_WINDOWS;WIN32;NOMINMAX;NDEBUG;SDL_SUPPORT;GUI_SUPPORT;IMAGE_SUPPORT;ZIP_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;HTTP_LIB_SUPPORT;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ false
+
+
+ Level4
+ None
+ $(IntDir)obj\\windows\%(RelativeDir)
+ stdcpp17
+ true
+ 4100;4127;4146;4244;26400;26409;26410;26415;26429;26438;26440;26446;26451;26455;26459;26467;26472;26481;26482;26485;26492;%(DisableSpecificWarnings)
+ CompileAsCpp
+ NoListing
+ $(IntDir)asm\windows\%(RelativeDir)
+ true
+
+
+ SDL2.lib;SDL2main.lib;%(AdditionalDependencies)
+ $(OutDir)Stella.exe
+ false
+ Windows
+ true
+ true
+ false
+
+
+ MachineX64
+ PGUpdate
+
+
X64
@@ -944,11 +1063,13 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1125,21 +1246,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1147,21 +1272,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1169,21 +1298,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1191,21 +1324,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1213,21 +1350,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1235,21 +1376,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1257,21 +1402,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1279,21 +1428,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1301,21 +1454,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1323,21 +1480,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1345,21 +1506,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1367,21 +1532,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1389,21 +1558,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1411,21 +1584,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1433,21 +1610,25 @@
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
@@ -1455,21 +1636,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1477,21 +1662,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1499,21 +1688,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1521,21 +1714,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1543,21 +1740,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1565,21 +1766,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1587,21 +1792,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1609,21 +1818,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1631,21 +1844,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1653,21 +1870,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1675,21 +1896,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1697,21 +1922,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1719,21 +1948,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1741,21 +1974,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
@@ -1763,21 +2000,25 @@
Level2
Level2
Level2
+ Level2
Level2
Level2
Level2
Level2
Level2
+ Level2
Level2
Level2
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
CompileAsC
+ CompileAsC
CompileAsC
CompileAsC