Skip to content

Commit

Permalink
Merge to upstream
Browse files Browse the repository at this point in the history
  • Loading branch information
SandeMC committed Feb 2, 2024
1 parent f40e1f7 commit 2b02b3a
Show file tree
Hide file tree
Showing 19 changed files with 83 additions and 68,504 deletions.
5 changes: 0 additions & 5 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,7 +1,2 @@
*.ixx linguist-language=C++
*.hxx linguist-language=C++
*.h linguist-language=C++
*.cpp linguist-language=C++

# Auto detect text files and perform LF normalization
* text=auto
2 changes: 1 addition & 1 deletion .github/workflows/msvc_x86.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
msbuild -m build/GTAIV.EFLC.FusionFix.sln /property:Configuration=Release /property:Platform=Win32
- name: Download Ultimate ASI Loader x86
uses: robinraju/release-downloader@v1.8
uses: robinraju/release-downloader@v1.9
with:
repository: "ThirteenAG/Ultimate-ASI-Loader"
tag: "Win32-latest"
Expand Down
5 changes: 1 addition & 4 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
[submodule "external/injector"]
path = external/injector
url = https://github.com/thelink2012/injector
url = https://github.com/ThirteenAG/injector
[submodule "external/hooking"]
path = external/hooking
url = https://github.com/ThirteenAG/Hooking.Patterns
[submodule "external/inireader"]
path = external/inireader
url = https://github.com/ThirteenAG/IniReader
[submodule "external/minhook"]
path = external/minhook
url = https://github.com/TsudaKageyu/minhook
[submodule "shaders/GTAIV.EFLC.FusionShaders"]
path = shaders/GTAIV.EFLC.FusionShaders
url = https://github.com/Parallellines0451/GTAIV.EFLC.FusionShaders
Expand Down
1 change: 0 additions & 1 deletion external/minhook
Submodule minhook deleted from f5485b
10 changes: 4 additions & 6 deletions premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -50,23 +50,21 @@ workspace "GTAIV.EFLC.FusionFix"
includedirs { "source/includes" }
includedirs { "source/ledsdk" }
includedirs { "source/dxsdk" }
includedirs { "source/includes/safetyhook" }
libdirs { "source/ledsdk" }
libdirs { "source/dxsdk" }
files { "source/*.h", "source/*.hpp", "source/*.cpp", "source/*.hxx", "source/*.ixx" }
files { "source/includes/safetyhook/*.h", "source/includes/safetyhook/*.hpp" }
files { "source/includes/safetyhook/*.c", "source/includes/safetyhook/*.cpp" }
files { "source/resources/Versioninfo.rc" }
files { "source/resources/Shaders.rc" }
links { "LogitechLEDLib.lib" }

includedirs { "external/injector/safetyhook" }
includedirs { "external/hooking" }
includedirs { "external/injector/include" }
includedirs { "external/inireader" }
includedirs { "external/minhook/include" }
files { "external/minhook/include/*.*", "external/minhook/src/*.*", "external/minhook/src/**/*.*" }
files { "external/hooking/Hooking.Patterns.h", "external/hooking/Hooking.Patterns.cpp" }

files { "external/injector/safetyhook/*.h", "external/injector/safetyhook/*.hpp" }
files { "external/injector/safetyhook/*.c", "external/injector/safetyhook/*.cpp" }

characterset ("Unicode")

pbcommands = {
Expand Down
2 changes: 1 addition & 1 deletion shaders/GTAIV.EFLC.FusionShaders
2 changes: 1 addition & 1 deletion source/altdialogue.ixx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ std::vector<std::vector<std::tuple<std::string_view, uint32_t>>> gAltDialogueVar
{ "francis6", 64932 },
{ "gambetti1", 64720 },
{ "gambetti1", 64721 },
{ "gerry3b", 64942 },
//{ "gerry3b", 64942 },
{ "gerry3b", 64941 },
{ "gerry4", 64641 },
{ "gerry5", 64944 },
Expand Down
26 changes: 13 additions & 13 deletions source/antialiasing.ixx
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,15 @@ public:

if (!ShadersAA::FxaaPS && D3DXAssembleShaderFromResourceW(hm, MAKEINTRESOURCEW(IDR_FXAA), NULL, NULL, 0, &bf1, &bf2) == S_OK)
{
if (CreatePixelShaderOriginalPtr(pDevice, (DWORD*)bf1->GetBufferPointer(), &ShadersAA::FxaaPS) != S_OK || !ShadersAA::FxaaPS)
if (CreatePixelShaderOriginal.unsafe_stdcall<HRESULT>(pDevice, (DWORD*)bf1->GetBufferPointer(), &ShadersAA::FxaaPS) != S_OK || !ShadersAA::FxaaPS)
SAFE_RELEASE(ShadersAA::FxaaPS);
SAFE_RELEASE(bf1);
SAFE_RELEASE(bf2);
}

if (!ShadersAA::SMAA_EdgeDetectionPS && D3DXCompileShaderFromResourceW(hm, MAKEINTRESOURCEW(IDR_SMAA), NULL, NULL, "SMAAColorEdgeDetectionPS", "ps_3_0", 0, &bf1, &bf2, &ppConstantTable) == S_OK)
{
if (CreatePixelShaderOriginalPtr(pDevice, (DWORD*)bf1->GetBufferPointer(), &ShadersAA::SMAA_EdgeDetectionPS) != S_OK || !ShadersAA::SMAA_EdgeDetectionPS)
if (CreatePixelShaderOriginal.unsafe_stdcall<HRESULT>(pDevice, (DWORD*)bf1->GetBufferPointer(), &ShadersAA::SMAA_EdgeDetectionPS) != S_OK || !ShadersAA::SMAA_EdgeDetectionPS)
SAFE_RELEASE(ShadersAA::SMAA_EdgeDetectionPS);
SAFE_RELEASE(bf1);
SAFE_RELEASE(bf2);
Expand All @@ -144,7 +144,7 @@ public:
}

if (!ShadersAA::SMAA_BlendingWeightsCalculationPS && D3DXCompileShaderFromResourceW(hm, MAKEINTRESOURCEW(IDR_SMAA), NULL, NULL, "SMAABlendingWeightCalculationPS", "ps_3_0", 0, &bf1, &bf2, &ppConstantTable) == S_OK) {
if (CreatePixelShaderOriginalPtr(pDevice, (DWORD*)bf1->GetBufferPointer(), &ShadersAA::SMAA_BlendingWeightsCalculationPS) != S_OK || !ShadersAA::SMAA_BlendingWeightsCalculationPS)
if (CreatePixelShaderOriginal.unsafe_stdcall<HRESULT>(pDevice, (DWORD*)bf1->GetBufferPointer(), &ShadersAA::SMAA_BlendingWeightsCalculationPS) != S_OK || !ShadersAA::SMAA_BlendingWeightsCalculationPS)
SAFE_RELEASE(ShadersAA::SMAA_BlendingWeightsCalculationPS);
SAFE_RELEASE(bf1);
SAFE_RELEASE(bf2);
Expand All @@ -160,7 +160,7 @@ public:
}

if (!ShadersAA::SMAA_NeighborhoodBlendingPS && D3DXCompileShaderFromResourceW(hm, MAKEINTRESOURCEW(IDR_SMAA), NULL, NULL, "SMAANeighborhoodBlendingPS", "ps_3_0", 0, &bf1, &bf2, &ppConstantTable) == S_OK) {
if (CreatePixelShaderOriginalPtr(pDevice, (DWORD*)bf1->GetBufferPointer(), &ShadersAA::SMAA_NeighborhoodBlendingPS) != S_OK || !ShadersAA::SMAA_NeighborhoodBlendingPS)
if (CreatePixelShaderOriginal.unsafe_stdcall<HRESULT>(pDevice, (DWORD*)bf1->GetBufferPointer(), &ShadersAA::SMAA_NeighborhoodBlendingPS) != S_OK || !ShadersAA::SMAA_NeighborhoodBlendingPS)
SAFE_RELEASE(ShadersAA::SMAA_NeighborhoodBlendingPS);
SAFE_RELEASE(bf1);
SAFE_RELEASE(bf2);
Expand All @@ -187,12 +187,12 @@ public:
SAFE_RELEASE(ShadersAA::blendTex);

// create new texture to postfx
if (SUCCEEDED(CreateTextureOriginalPtr(pDevice, Width, Height, Levels, Usage, Format, Pool, &ShadersAA::pHDRTex2, 0)) && ShadersAA::pHDRTex2)
if (SUCCEEDED(CreateTextureOriginal.unsafe_stdcall<HRESULT>(pDevice, Width, Height, Levels, Usage, Format, Pool, &ShadersAA::pHDRTex2, 0)) && ShadersAA::pHDRTex2)
{
if (D3DXCreateTextureFromResourceExW(pDevice, hm, MAKEINTRESOURCEW(IDR_AreaTex), 0, 0, 0, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_LINEAR, D3DX_FILTER_LINEAR, D3DCOLOR_ARGB(150, 100, 100, 100), NULL, NULL, &ShadersAA::areaTex) == S_OK)
CreateTextureOriginalPtr(pDevice, Width, Height, Levels, Usage, D3DFMT_X8R8G8B8, Pool, &ShadersAA::edgesTex, 0);
CreateTextureOriginal.unsafe_stdcall<HRESULT>(pDevice, Width, Height, Levels, Usage, D3DFMT_X8R8G8B8, Pool, &ShadersAA::edgesTex, 0);
if (D3DXCreateTextureFromResourceExW(pDevice, hm, MAKEINTRESOURCEW(IDR_SearchTex), 0, 0, 0, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_LINEAR, D3DX_FILTER_LINEAR, D3DCOLOR_ARGB(150, 100, 100, 100), NULL, NULL, &ShadersAA::searchTex) == S_OK)
CreateTextureOriginalPtr(pDevice, Width, Height, Levels, Usage, D3DFMT_A8R8G8B8, Pool, &ShadersAA::blendTex, 0);
CreateTextureOriginal.unsafe_stdcall<HRESULT>(pDevice, Width, Height, Levels, Usage, D3DFMT_A8R8G8B8, Pool, &ShadersAA::blendTex, 0);
}
}
};
Expand Down Expand Up @@ -243,14 +243,14 @@ public:
FusionFix::D3D9::setInsteadDrawPrimitive(true);
pDevice->SetRenderTarget(0, pHDRSurface2);
pDevice->Clear(0, 0, D3DCLEAR_TARGET, 0, 0, 0);
DrawPrimitiveOriginalPtr(pDevice, PrimitiveType, StartVertex, PrimitiveCount);
DrawPrimitiveOriginal.unsafe_stdcall<HRESULT>(pDevice, PrimitiveType, StartVertex, PrimitiveCount);

pDevice->SetPixelShader(ShadersAA::FxaaPS);

pDevice->SetRenderTarget(0, backBuffer);
pDevice->SetTexture(2, ShadersAA::pHDRTex2);

DrawPrimitiveOriginalPtr(pDevice, PrimitiveType, StartVertex, PrimitiveCount);
DrawPrimitiveOriginal.unsafe_stdcall<HRESULT>(pDevice, PrimitiveType, StartVertex, PrimitiveCount);

pDevice->SetTexture(2, 0);
pDevice->SetPixelShader(pShader);
Expand All @@ -275,7 +275,7 @@ public:
// game postfx
pDevice->SetRenderTarget(0, pHDRSurface2);
pDevice->Clear(0, 0, D3DCLEAR_TARGET, 0, 0, 0);
DrawPrimitiveOriginalPtr(pDevice, PrimitiveType, StartVertex, PrimitiveCount);
DrawPrimitiveOriginal.unsafe_stdcall<HRESULT>(pDevice, PrimitiveType, StartVertex, PrimitiveCount);

// SMAA_EdgeDetection
//constexpr DWORD VertexFVF = D3DFVF_XYZ | D3DFVF_TEX1;
Expand All @@ -299,7 +299,7 @@ public:
pDevice->Clear(0, 0, D3DCLEAR_TARGET, 0, 0, 0);
pDevice->SetSamplerState(0, D3DSAMP_SRGBTEXTURE, 1);
//pDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, SmaaVertexArray, sizeof(VERTEX));
DrawPrimitiveOriginalPtr(pDevice, PrimitiveType, StartVertex, PrimitiveCount);
DrawPrimitiveOriginal.unsafe_stdcall<HRESULT>(pDevice, PrimitiveType, StartVertex, PrimitiveCount);

pDevice->SetSamplerState(0, D3DSAMP_SRGBTEXTURE, 0);

Expand All @@ -316,7 +316,7 @@ public:
pDevice->SetTexture(3, ShadersAA::searchTex);
pDevice->Clear(0, 0, D3DCLEAR_TARGET, 0, 0, 0);
//pDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, SmaaVertexArray, sizeof(VERTEX));
DrawPrimitiveOriginalPtr(pDevice, PrimitiveType, StartVertex, PrimitiveCount);
DrawPrimitiveOriginal.unsafe_stdcall<HRESULT>(pDevice, PrimitiveType, StartVertex, PrimitiveCount);


pDevice->SetTexture(1, NULL);
Expand All @@ -340,7 +340,7 @@ public:
pDevice->SetRenderState(D3DRS_SRGBWRITEENABLE, 0);

//pDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, SmaaVertexArray, sizeof(VERTEX));
DrawPrimitiveOriginalPtr(pDevice, PrimitiveType, StartVertex, PrimitiveCount);
DrawPrimitiveOriginal.unsafe_stdcall<HRESULT>(pDevice, PrimitiveType, StartVertex, PrimitiveCount);


pDevice->SetTexture(1, NULL);
Expand Down
2 changes: 1 addition & 1 deletion source/common.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include "injector/injector.hpp"
#include "injector/calling.hpp"
#include "injector/hooking.hpp"
#include "includes/assembly2.hpp"
#include "injector/assembly.hpp"
#include "injector/utility.hpp"
#include "Hooking.Patterns.h"
#include "ModuleList.hpp"
Expand Down
17 changes: 10 additions & 7 deletions source/dllblacklist.ixx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
module;

#include <common.hxx>
#include "MinHook.h"
#include <shellapi.h>
#include <Commctrl.h>
#pragma comment(lib,"Comctl32.lib")
Expand Down Expand Up @@ -29,7 +28,7 @@ std::vector<std::wstring> dlllist = {
};

typedef void(WINAPI* LdrLoadDllFunc) (IN PWCHAR PathToFile OPTIONAL, IN PULONG Flags OPTIONAL, IN PUNICODE_STRING ModuleFileName, OUT HMODULE* ModuleHandle);
static LdrLoadDllFunc realLdrLoadDll = NULL;
static SafetyHookInline realLdrLoadDll = {};
static void WINAPI LdrLoadDllHook(IN PWCHAR PathToFile OPTIONAL, IN PULONG Flags OPTIONAL, IN PUNICODE_STRING ModuleFileName, OUT HMODULE* ModuleHandle)
{
if (ModuleFileName->Buffer)
Expand All @@ -46,8 +45,7 @@ static void WINAPI LdrLoadDllHook(IN PWCHAR PathToFile OPTIONAL, IN PULONG Flags
}
}

if (realLdrLoadDll)
realLdrLoadDll(PathToFile, Flags, ModuleFileName, ModuleHandle);
return realLdrLoadDll.stdcall(PathToFile, Flags, ModuleFileName, ModuleHandle);
}

HRESULT CALLBACK TaskDialogCallbackProc(HWND hwnd, UINT uNotification, WPARAM wParam, LPARAM lParam, LONG_PTR dwRefData)
Expand Down Expand Up @@ -120,8 +118,13 @@ public:
if (baseLdrLoadDll == NULL)
return;

MH_Initialize();
MH_CreateHook(baseLdrLoadDll, LdrLoadDllHook, (LPVOID*)&realLdrLoadDll);
MH_EnableHook(baseLdrLoadDll);
try
{
safetyhook::execute_while_frozen([&]
{
realLdrLoadDll = safetyhook::create_inline(baseLdrLoadDll, LdrLoadDllHook);
});
}
catch (...) {}
}
} DLLBlacklist;
Loading

0 comments on commit 2b02b3a

Please sign in to comment.