diff --git a/OptiScaler/Util.cpp b/OptiScaler/Util.cpp index e25f3dff..dedcf869 100644 --- a/OptiScaler/Util.cpp +++ b/OptiScaler/Util.cpp @@ -26,6 +26,30 @@ bool Util::GetRealWindowsVersion(OSVERSIONINFOW& osInfo) return false; } +std::string Util::GetWindowsName(const OSVERSIONINFOW& os) +{ + DWORD major = os.dwMajorVersion; + DWORD minor = os.dwMinorVersion; + DWORD build = os.dwBuildNumber; + + if (major == 10 && build >= 22000) + return "Windows 11"; + if (major == 10) + return "Windows 10"; + if (major == 6 && minor == 3) + return "Windows 8.1"; + if (major == 6 && minor == 2) + return "Windows 8"; + if (major == 6 && minor == 1) + return "Windows 7"; + if (major == 6 && minor == 0) + return "Windows Vista"; + if (major == 5 && minor == 1) + return "Windows XP"; + + return "Unknown Windows Version"; +} + std::filesystem::path Util::DllPath() { static std::filesystem::path dll; diff --git a/OptiScaler/Util.h b/OptiScaler/Util.h index 037f90b6..2f616c59 100644 --- a/OptiScaler/Util.h +++ b/OptiScaler/Util.h @@ -25,6 +25,7 @@ namespace Util bool GetDLLVersion(std::wstring dllPath, version_t* versionOut); bool GetDLLVersion(std::wstring dllPath, xess_version_t* versionOut); bool GetRealWindowsVersion(OSVERSIONINFOW& osInfo); + std::string GetWindowsName(const OSVERSIONINFOW& os); }; inline void ThrowIfFailed(HRESULT hr) diff --git a/OptiScaler/dllmain.cpp b/OptiScaler/dllmain.cpp index 8111729b..817af45b 100644 --- a/OptiScaler/dllmain.cpp +++ b/OptiScaler/dllmain.cpp @@ -848,12 +848,12 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv spdlog::info(""); if (Util::GetRealWindowsVersion(winVer)) - spdlog::info("Windows version: {}.{}.{} ({})", winVer.dwMajorVersion, winVer.dwMinorVersion, winVer.dwBuildNumber, winVer.dwPlatformId); + spdlog::info("Windows version: {} ({}.{}.{})", Util::GetWindowsName(winVer), winVer.dwMajorVersion, winVer.dwMinorVersion, winVer.dwBuildNumber, winVer.dwPlatformId); else spdlog::warn("Can't read windows version"); spdlog::info(""); CheckQuirks(); - + // OptiFG & Overlay Checks if (Config::Instance()->FGType.value_or_default() == FGType::OptiFG && !Config::Instance()->FGDisableOverlays.has_value()) Config::Instance()->FGDisableOverlays.set_volatile_value(true);