From 87de538bf7f23ed8318ff09ad25de48382727672 Mon Sep 17 00:00:00 2001 From: Kurochi51 Date: Tue, 2 Jul 2024 17:45:40 +0300 Subject: [PATCH] Use function start signature instead of function call (#1878) --- .../Internal/DXGI/SwapChainVtableResolver.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Dalamud/Game/Internal/DXGI/SwapChainVtableResolver.cs b/Dalamud/Game/Internal/DXGI/SwapChainVtableResolver.cs index 9fbe0ea6a..1e8cb40d7 100644 --- a/Dalamud/Game/Internal/DXGI/SwapChainVtableResolver.cs +++ b/Dalamud/Game/Internal/DXGI/SwapChainVtableResolver.cs @@ -73,9 +73,23 @@ internal class SwapChainVtableResolver : BaseAddressResolver, ISwapChainAddressR // var p = processModule.BaseAddress + 0x82C7E0; // DXGISwapChain::Present // var p = processModule.BaseAddress + 0x82FAC0; // DXGISwapChain::runtime_present // DXGISwapChain::handle_device_loss =>df DXGISwapChain::Present => DXGISwapChain::runtime_present + // 5.2+ - F6 C2 01 0F 85 + // 6.0+ - F6 C2 01 0F 85 88 var scanner = new SigScanner(processModule); - var runtimePresentSig = "E8 ?? ?? ?? ?? 44 0F B6 55 ??"; // NOTE: This sig is from reshade's DLL, normally dxgi.dll. + var runtimePresentSig = "F6 C2 01 0F 85"; // NOTE: This sig is from reshade's DLL, normally dxgi.dll. + + try + { + if (fileInfo.FileVersion.StartsWith("6.")) + { + runtimePresentSig = "F6 C2 01 0F 85 88"; + } + } + catch (Exception ex) + { + Log.Error(ex, "Failed to get reshade version info - falling back to 5.x signature"); + } try {