From 79a4609f54a683f46bb2a6210e07d86035db6607 Mon Sep 17 00:00:00 2001 From: ThirteenAG Date: Tue, 30 Jul 2024 00:22:08 +0800 Subject: [PATCH] conviction: disable negative mouse acceleration --- .../scripts/SplinterCellConviction.FusionMod.ini | 1 + source/SplinterCellConviction.FusionMod/dllmain.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/data/SplinterCellConviction.FusionMod/src/system/scripts/SplinterCellConviction.FusionMod.ini b/data/SplinterCellConviction.FusionMod/src/system/scripts/SplinterCellConviction.FusionMod.ini index caa25842b..86afc8e9d 100644 --- a/data/SplinterCellConviction.FusionMod/src/system/scripts/SplinterCellConviction.FusionMod.ini +++ b/data/SplinterCellConviction.FusionMod/src/system/scripts/SplinterCellConviction.FusionMod.ini @@ -1,6 +1,7 @@ [MAIN] SkipIntro = 1 WindowedMode = 0 +DisableNegativeMouseAcceleration = 1 SkipSystemDetection = 1 PartialUltraWideSupport = 1 DisableDOF = 1 diff --git a/source/SplinterCellConviction.FusionMod/dllmain.cpp b/source/SplinterCellConviction.FusionMod/dllmain.cpp index 10913dd67..e58644e3d 100644 --- a/source/SplinterCellConviction.FusionMod/dllmain.cpp +++ b/source/SplinterCellConviction.FusionMod/dllmain.cpp @@ -532,6 +532,7 @@ void Init() CIniReader iniReader(""); auto bSkipIntro = iniReader.ReadInteger("MAIN", "SkipIntro", 1) != 0; auto bWindowedMode = iniReader.ReadInteger("MAIN", "WindowedMode", 0) != 0; + auto bDisableNegativeMouseAcceleration = iniReader.ReadInteger("MAIN", "DisableNegativeMouseAcceleration", 1) != 0; auto bSkipSystemDetection = iniReader.ReadInteger("MAIN", "SkipSystemDetection", 1) != 0; auto bPartialUltraWideSupport = iniReader.ReadInteger("MAIN", "PartialUltraWideSupport", 1) != 0; bDisableBlackAndWhiteFilter = iniReader.ReadInteger("MAIN", "DisableBlackAndWhiteFilter", 0) != 0; @@ -613,6 +614,18 @@ void Init() }); } + if (bDisableNegativeMouseAcceleration) + { + auto pattern = hook::pattern("76 05 0F 28 D9 EB 08 0F 2F DA"); + injector::MakeNOP(pattern.get_first(0), 2, true); + injector::MakeNOP(pattern.get_first(5), 2, true); + injector::MakeNOP(pattern.get_first(10), 2, true); + + pattern = hook::pattern("77 0D 0F 2F C2 76 05 0F 28 CA EB 03 0F 28 C8 0F 57 C0"); + injector::MakeNOP(pattern.get_first(0), 2, true); + injector::MakeNOP(pattern.get_first(5), 2, true); + } + if (bSkipIntro) { auto pattern = hook::pattern("55 8D 6C 24 88 81 EC ? ? ? ? A1 ? ? ? ? 33 C5 89 45 74 53 56 57 BE ? ? ? ? 68 ? ? ? ? 8B CE E8 ? ? ? ? E8 ? ? ? ? 50");