From b77f428b3ff6ceea040785bf6ebcda5bca975b15 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Tue, 1 Jul 2025 21:41:22 +0300 Subject: [PATCH] Added more quirks & quirk options --- OptiScaler/dllmain.cpp | 6 +++++ OptiScaler/misc/Quirks.h | 53 ++++++++++++++++++++++++++++------------ 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/OptiScaler/dllmain.cpp b/OptiScaler/dllmain.cpp index 69f4dd47..165cd599 100644 --- a/OptiScaler/dllmain.cpp +++ b/OptiScaler/dllmain.cpp @@ -943,6 +943,12 @@ static void CheckQuirks() Config::Instance()->RestoreComputeSignature.set_volatile_value(true); } + if (quirks & GameQuirk::DisableReactiveMasks) + Config::Instance()->DisableReactiveMask.set_volatile_value(true); + + if (quirks & GameQuirk::ForceAutoExposure) + Config::Instance()->AutoExposure.set_volatile_value(true); + State::Instance().gameQuirks = quirks; } diff --git a/OptiScaler/misc/Quirks.h b/OptiScaler/misc/Quirks.h index 8ea65aae..7e63ce9f 100644 --- a/OptiScaler/misc/Quirks.h +++ b/OptiScaler/misc/Quirks.h @@ -12,6 +12,8 @@ enum class GameQuirk : uint64_t DisableFSR2Inputs, DisableFFXInputs, RestoreComputeSigOnNonNvidia, + ForceAutoExposure, + DisableReactiveMasks, // Quirks that are applied deeper in code CyberpunkHudlessStateOverride, @@ -42,10 +44,6 @@ static const QuirkEntry quirkTable[] = { QUIRK_ENTRY("rdr.exe", GameQuirk::SkipFsr3Method, GameQuirk::ForceNoOptiFG), QUIRK_ENTRY("playrdr.exe", GameQuirk::SkipFsr3Method, GameQuirk::ForceNoOptiFG), - // Red Dead Redemption 2 - QUIRK_ENTRY("rdr.exe2", GameQuirk::DisableFSR2Inputs), - QUIRK_ENTRY("playrdr2.exe", GameQuirk::DisableFSR2Inputs), - // No Man's Sky QUIRK_ENTRY("nms.exe", GameQuirk::KernelBaseHooks, GameQuirk::VulkanDLSSBarrierFixup), @@ -68,39 +66,56 @@ static const QuirkEntry quirkTable[] = { QUIRK_ENTRY("dd2ccs.exe", GameQuirk::RestoreComputeSigOnNonNvidia), QUIRK_ENTRY("dd2.exe", GameQuirk::RestoreComputeSigOnNonNvidia), + // Red Dead Redemption 2 + QUIRK_ENTRY("rdr.exe2", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("playrdr2.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), + // Forgive Me Father 2 - QUIRK_ENTRY("fmf2-win64-shipping.exe", GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("fmf2-win64-shipping.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), // Revenge of the Savage Planet - QUIRK_ENTRY("towers-win64-shipping.exe", GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("towers-win64-shipping.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), // Avatar: Frontiers of Pandora - QUIRK_ENTRY("afop.exe", GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("afop.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), // Forza Motorsport 8 - QUIRK_ENTRY("forza_steamworks_release_final.exe", GameQuirk::DisableFSR2Inputs), // Steam - QUIRK_ENTRY("forza_gaming.desktop.x64_release_final.exe", GameQuirk::DisableFSR2Inputs), // MS Store + QUIRK_ENTRY("forza_steamworks_release_final.exe", GameQuirk::DisableFSR2Inputs, + GameQuirk::DisableFSR3Inputs), // Steam + QUIRK_ENTRY("forza_gaming.desktop.x64_release_final.exe", GameQuirk::DisableFSR2Inputs, + GameQuirk::DisableFSR3Inputs), // MS Store // F1 22 - QUIRK_ENTRY("f1_22.exe", GameQuirk::DisableFSR2Inputs), + QUIRK_ENTRY("f1_22.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), // Metal Eden - QUIRK_ENTRY("metaleden-win64-shipping.exe", GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("metaleden-win64-shipping.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), // Until Dawn - QUIRK_ENTRY("bates-win64-shipping.exe", GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("bates-win64-shipping.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), // Bloom and Rage - QUIRK_ENTRY("bloom&rage.exe", GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("bloom&rage.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), // Star Wars: Outlaws - QUIRK_ENTRY("outlaws.exe", GameQuirk::DisableFSR3Inputs), - QUIRK_ENTRY("outlaws_plus.exe", GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("outlaws.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), + QUIRK_ENTRY("outlaws_plus.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), + + // Banishers + QUIRK_ENTRY("banishers-win64-shipping.exe", GameQuirk::DisableFSR2Inputs, GameQuirk::DisableFSR3Inputs), + + // Tiny Tina's Wonderlands + QUIRK_ENTRY("wonderlands.exe", GameQuirk::DisableReactiveMasks), + + // Dead Island 2 + QUIRK_ENTRY("deadisland-win64-shipping.exe", GameQuirk::DisableReactiveMasks), + + // STAR WARS Jedi: Survivor™ + QUIRK_ENTRY("jedisurvivor.exe", GameQuirk::ForceAutoExposure), // Self-explanatory QUIRK_ENTRY("cyberpunk2077.exe", GameQuirk::CyberpunkHudlessStateOverride, GameQuirk::ForceNoOptiFG), QUIRK_ENTRY("persistence-win64-shipping.exe", GameQuirk::ForceUnrealEngine), - QUIRK_ENTRY("banishers-win64-shipping.exe", GameQuirk::DisableFSR2Inputs), QUIRK_ENTRY("splitfiction.exe", GameQuirk::FastFeatureReset), QUIRK_ENTRY("minecraft.windows.exe", GameQuirk::KernelBaseHooks), }; @@ -140,10 +155,16 @@ static void printQuirks(flag_set& quirks) spdlog::info("Quirk: Force detected engine as Unreal Engine"); if (quirks & GameQuirk::ForceNoOptiFG) spdlog::info("Quirk: Disabling OptiFG"); + if (quirks & GameQuirk::ForceAutoExposure) + spdlog::info("Quirk: Enabling AutoExposure"); + if (quirks & GameQuirk::DisableFFXInputs) + spdlog::info("Quirk: Disable FSR 3.1 Inputs"); if (quirks & GameQuirk::DisableFSR3Inputs) spdlog::info("Quirk: Disable FSR 3.0 Inputs"); if (quirks & GameQuirk::DisableFSR2Inputs) spdlog::info("Quirk: Disable FSR 2.X Inputs"); + if (quirks & GameQuirk::DisableReactiveMasks) + spdlog::info("Quirk: Disable Reactive Masks"); if (quirks & GameQuirk::RestoreComputeSigOnNonNvidia) spdlog::info("Quirk: Enabling restore compute signature on AMD/Intel");