From 9835275efee640afbb3926b72fc0e7eb0b996122 Mon Sep 17 00:00:00 2001
From: TL431 <tl43one@gmail.com>
Date: Sun, 3 Dec 2023 15:12:23 +0100
Subject: [PATCH] Added RE8 fix and updated RE4 fix

---
 .github/README.md                          |  23 ++-
 Windows-Game-Patches.sln                   |  10 ++
 source/RE4.Sharpness/RE4.Sharpness.vcxproj |   2 +-
 source/RE4.Sharpness/dllmain.cpp           |   2 +-
 source/RE8.NoTAA/RE8.NoTAA.filters         |  32 ++++
 source/RE8.NoTAA/RE8.NoTAA.sln             |  31 ++++
 source/RE8.NoTAA/RE8.NoTAA.vcxproj         | 195 +++++++++++++++++++++
 source/RE8.NoTAA/RE8.NoTAA.vcxproj.filters |  36 ++++
 source/RE8.NoTAA/RE8.NoTAA.vcxproj.user    |   4 +
 source/RE8.NoTAA/dllmain.cpp               | 118 +++++++++++++
 10 files changed, 446 insertions(+), 7 deletions(-)
 create mode 100644 source/RE8.NoTAA/RE8.NoTAA.filters
 create mode 100644 source/RE8.NoTAA/RE8.NoTAA.sln
 create mode 100644 source/RE8.NoTAA/RE8.NoTAA.vcxproj
 create mode 100644 source/RE8.NoTAA/RE8.NoTAA.vcxproj.filters
 create mode 100644 source/RE8.NoTAA/RE8.NoTAA.vcxproj.user
 create mode 100644 source/RE8.NoTAA/dllmain.cpp

diff --git a/.github/README.md b/.github/README.md
index 391fd93..9fc9844 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -51,7 +51,7 @@
 </summary>
 
   - Disable TAA
-  - Disable Sharpness
+  - Disable Forced Sharpening
 
 #### Installation
 
@@ -97,7 +97,7 @@
 </summary>
 
   - Disable TAA
-  - Disable Sharpness
+  - Disable Forced Sharpening
 
 #### Installation
 
@@ -154,7 +154,7 @@
 </summary>
 
   - Disable TAA
-  - Disable Sharpness
+  - Disable Forced Sharpening
 
 #### Installation
 
@@ -168,7 +168,7 @@
 ### Resident Evil 4 Remake
 </summary>
 
-  - Remove Forced Sharpening
+  - Disable Forced Sharpening
 
 #### Installation
 - **Note:** ***Please make sure any executable hex edits are removed/reverted first***.
@@ -176,6 +176,19 @@
   - Extract `RE4.Sharpness.asi` from the release zip in the folder `RESIDENT EVIL 4  BIOHAZARD RE4\reframework\plugins` and rename it into `RE4.Sharpness.dll`.
 </details>
 <details><summary>
+
+### Resident Evil Village
+</summary>
+
+  - Disable TAA and Forced Sharpening
+  - Disable Forced Sharpening only
+
+#### Installation
+- **Note:** ***Please make sure any executable hex edits are removed/reverted first***.
+  - Download [REFramework](https://github.com/praydog/REFramework) and extract `dinput8.dll` into the game root folder.
+  - Extract `RE8.NoTAA.asi` from the release zip in the folder `Resident Evil Village BIOHAZARD VILLAGE\reframework\plugins` and rename it into `RE8.NoTAA.dll`.
+</details>
+<details><summary>
   
 ### Uncharted 4 + The Lost Legacy
 </summary>
@@ -195,7 +208,7 @@
         - `Enter`: Enter\Select Dev Menu Entry
   - Skip Intro Logo Videos
   - Disable TAA
-  - Disable Sharpness
+  - Disable Forced Sharpening
   - Disable Barrel Distortion
   - Disable Screen Zoom
   - Disable Chromatic Aberration
diff --git a/Windows-Game-Patches.sln b/Windows-Game-Patches.sln
index 768d674..668b544 100644
--- a/Windows-Game-Patches.sln
+++ b/Windows-Game-Patches.sln
@@ -31,6 +31,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Uncharted4TLL.NoTAA", "sour
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Hitman3.NoTAA", "source\Hitman3.NoTAA\Hitman3.NoTAA.vcxproj", "{621EDE9D-FFF4-465A-BFA7-B9A3D0F9CEBC}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RE8.NoTAA", "source\RE8.NoTAA\RE8.NoTAA.vcxproj", "{F2F2A0BD-8F71-4290-95E5-950639D9397C}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|x64 = Debug|x64
@@ -151,6 +153,14 @@ Global
 		{621EDE9D-FFF4-465A-BFA7-B9A3D0F9CEBC}.Release|x64.Build.0 = Release|x64
 		{621EDE9D-FFF4-465A-BFA7-B9A3D0F9CEBC}.Release|x86.ActiveCfg = Release|Win32
 		{621EDE9D-FFF4-465A-BFA7-B9A3D0F9CEBC}.Release|x86.Build.0 = Release|Win32
+		{F2F2A0BD-8F71-4290-95E5-950639D9397C}.Debug|x64.ActiveCfg = Debug|x64
+		{F2F2A0BD-8F71-4290-95E5-950639D9397C}.Debug|x64.Build.0 = Debug|x64
+		{F2F2A0BD-8F71-4290-95E5-950639D9397C}.Debug|x86.ActiveCfg = Debug|Win32
+		{F2F2A0BD-8F71-4290-95E5-950639D9397C}.Debug|x86.Build.0 = Debug|Win32
+		{F2F2A0BD-8F71-4290-95E5-950639D9397C}.Release|x64.ActiveCfg = Release|x64
+		{F2F2A0BD-8F71-4290-95E5-950639D9397C}.Release|x64.Build.0 = Release|x64
+		{F2F2A0BD-8F71-4290-95E5-950639D9397C}.Release|x86.ActiveCfg = Release|Win32
+		{F2F2A0BD-8F71-4290-95E5-950639D9397C}.Release|x86.Build.0 = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/source/RE4.Sharpness/RE4.Sharpness.vcxproj b/source/RE4.Sharpness/RE4.Sharpness.vcxproj
index 41e24c2..7ae2581 100644
--- a/source/RE4.Sharpness/RE4.Sharpness.vcxproj
+++ b/source/RE4.Sharpness/RE4.Sharpness.vcxproj
@@ -22,7 +22,7 @@
     <VCProjectVersion>16.0</VCProjectVersion>
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{D9DB74DD-4579-4244-BA7A-4236CF585026}</ProjectGuid>
-    <RootNamespace>BrightMemoryInfiniteNoTAA</RootNamespace>
+    <RootNamespace>RE4Sharpness</RootNamespace>
     <WindowsTargetPlatformVersion>10.0.22621.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
diff --git a/source/RE4.Sharpness/dllmain.cpp b/source/RE4.Sharpness/dllmain.cpp
index e3ab09b..198b0ef 100644
--- a/source/RE4.Sharpness/dllmain.cpp
+++ b/source/RE4.Sharpness/dllmain.cpp
@@ -52,7 +52,7 @@ void ReadConfig(void)
 
 void DisableSharpness(void)
 {
-    const unsigned char patch[] = { 0xC6, 0x80, 0xB3, 0x01, 0x00, 0x00, 0x01, 0x90, 0x90 };
+    const unsigned char patch[] = { 0xC6, 0x80, 0xB3, 0x01, 0x00, 0x00, 0x01, 0xEB, 0x49 };
     WritePatchPattern(L"80 B8 B3 01 00 00 00 75 49", patch, sizeof(patch), L"Disable Sharpness", 0);
 }
 
diff --git a/source/RE8.NoTAA/RE8.NoTAA.filters b/source/RE8.NoTAA/RE8.NoTAA.filters
new file mode 100644
index 0000000..e4ec8cd
--- /dev/null
+++ b/source/RE8.NoTAA/RE8.NoTAA.filters
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="dllmain.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="stdafx.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\stdafx.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\helper.hpp">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="resource.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/source/RE8.NoTAA/RE8.NoTAA.sln b/source/RE8.NoTAA/RE8.NoTAA.sln
new file mode 100644
index 0000000..91adc78
--- /dev/null
+++ b/source/RE8.NoTAA/RE8.NoTAA.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.5.33424.131
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RE8.NoTAA", "RE8.NoTAA.vcxproj", "{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}.Debug|x64.ActiveCfg = Debug|x64
+		{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}.Debug|x64.Build.0 = Debug|x64
+		{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}.Debug|x86.ActiveCfg = Debug|Win32
+		{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}.Debug|x86.Build.0 = Debug|Win32
+		{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}.Release|x64.ActiveCfg = Release|x64
+		{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}.Release|x64.Build.0 = Release|x64
+		{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}.Release|x86.ActiveCfg = Release|Win32
+		{AB7A871D-2A06-48C6-863F-B8A0FE8F8E0B}.Release|x86.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {CDD207AD-54BC-44A9-933A-5DFEDBD97F44}
+	EndGlobalSection
+EndGlobal
diff --git a/source/RE8.NoTAA/RE8.NoTAA.vcxproj b/source/RE8.NoTAA/RE8.NoTAA.vcxproj
new file mode 100644
index 0000000..b733825
--- /dev/null
+++ b/source/RE8.NoTAA/RE8.NoTAA.vcxproj
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <VCProjectVersion>16.0</VCProjectVersion>
+    <Keyword>Win32Proj</Keyword>
+    <ProjectGuid>{F2F2A0BD-8F71-4290-95E5-950639D9397C}</ProjectGuid>
+    <RootNamespace>RE8NoTAA</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0.22621.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>ClangCL</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>ClangCL</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <IncludePath>\..\include\;$(IncludePath)</IncludePath>
+    <TargetExt>.asi</TargetExt>
+    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <IncludePath>\..\include\;$(IncludePath)</IncludePath>
+    <TargetExt>.asi</TargetExt>
+    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <TargetExt>.asi</TargetExt>
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <TargetExt>.asi</TargetExt>
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>UNICODE;_UNICODE;_CRT_SECURE_NO_WARNINGS;_USRDLL</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+      <AdditionalIncludeDirectories>..\..\include\;..\..\external\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableUAC>false</EnableUAC>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>UNICODE;_UNICODE;_CRT_SECURE_NO_WARNINGS;_USRDLL</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+      <AdditionalIncludeDirectories>..\..\include\;..\..\external\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableUAC>false</EnableUAC>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>UNICODE;_UNICODE;_USRDLL</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+      <AdditionalIncludeDirectories>..\..\include\;..\..\external\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <LanguageStandard_C>Default</LanguageStandard_C>
+      <UndefinePreprocessorDefinitions>
+      </UndefinePreprocessorDefinitions>
+      <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableUAC>false</EnableUAC>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>false</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>UNICODE;_UNICODE;_USRDLL</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+      <AdditionalIncludeDirectories>..\..\include\;..\..\external\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <LanguageStandard_C>Default</LanguageStandard_C>
+      <UndefinePreprocessorDefinitions>
+      </UndefinePreprocessorDefinitions>
+      <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableUAC>false</EnableUAC>
+    </Link>
+    <PreBuildEvent>
+      <Command>call $(MSBuildStartupDirectory)\set_git_ver.cmd</Command>
+    </PreBuildEvent>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\Shared\helper.cpp" />
+    <ClCompile Include="..\Shared\memory.cpp" />
+    <ClCompile Include="..\Shared\stdafx.cpp" />
+    <ClCompile Include="dllmain.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\memory.hpp" />
+    <ClInclude Include="..\..\include\helper.hpp" />
+    <ClInclude Include="..\..\include\stdafx.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/source/RE8.NoTAA/RE8.NoTAA.vcxproj.filters b/source/RE8.NoTAA/RE8.NoTAA.vcxproj.filters
new file mode 100644
index 0000000..d39fb11
--- /dev/null
+++ b/source/RE8.NoTAA/RE8.NoTAA.vcxproj.filters
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClInclude Include="..\..\include\helper.hpp">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\stdafx.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\memory.hpp">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{16c871b0-d17d-439d-9186-0e1d2b9b9507}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{ac747f53-a621-40bf-b440-0e576d4c6cec}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="dllmain.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\Shared\helper.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\Shared\stdafx.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\Shared\memory.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/source/RE8.NoTAA/RE8.NoTAA.vcxproj.user b/source/RE8.NoTAA/RE8.NoTAA.vcxproj.user
new file mode 100644
index 0000000..88a5509
--- /dev/null
+++ b/source/RE8.NoTAA/RE8.NoTAA.vcxproj.user
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup />
+</Project>
\ No newline at end of file
diff --git a/source/RE8.NoTAA/dllmain.cpp b/source/RE8.NoTAA/dllmain.cpp
new file mode 100644
index 0000000..6c47279
--- /dev/null
+++ b/source/RE8.NoTAA/dllmain.cpp
@@ -0,0 +1,118 @@
+#include "stdafx.h"
+#include "helper.hpp"
+#include "memory.hpp"
+#include "git_ver.h"
+
+HMODULE baseModule = GetModuleHandle(NULL);
+
+#define wstr(s) L#s
+#define wxstr(s) wstr(s)
+#define _PROJECT_NAME L"RE8.NoTAA"
+#define _PROJECT_LOG_PATH _PROJECT_NAME L".log"
+
+wchar_t exePath[_MAX_PATH] = { 0 };
+
+// INI Variables
+bool bDisableSharpnessOnly;
+bool bDisableTAA;
+
+void ReadConfig(void)
+{
+    inipp::Ini<wchar_t> ini;
+    // Get game name and exe path
+    LOG(_PROJECT_NAME " Built: " __TIME__ " @ " __DATE__ "\n");
+    LOG(L"" GIT_COMMIT "\n");
+    LOG(L"" GIT_VER "\n");
+    LOG(L"" GIT_NUM "\n");
+    LOG(L"Game Name: %s\n", Memory::GetVersionProductName().c_str());
+    LOG(L"Game Path: %s\n", exePath);
+
+    // Initialize config
+    std::wstring config_path = _PROJECT_NAME L".ini";
+    std::wifstream iniFile(config_path);
+    if (!iniFile)
+    {
+        // no ini, lets generate one.
+        LOG(L"Failed to load config file.\n");
+        std::wstring ini_defaults = L"[Settings]\n"
+                                    wstr(bDisableTAA)" = true\n"
+                                    wstr(bDisableSharpnessOnly)" = false\n";
+        std::wofstream iniFile(config_path);
+        iniFile << ini_defaults;
+        bDisableTAA = true;
+        bDisableSharpnessOnly = false;
+        LOG(L"Created default config file.\n");
+    }
+    else
+    {
+        ini.parse(iniFile);
+        inipp::get_value(ini.sections[L"Settings"], wstr(bDisableTAA), bDisableTAA);
+        inipp::get_value(ini.sections[L"Settings"], wstr(bDisableSharpnessOnly), bDisableSharpnessOnly);
+    }
+
+    // Log config parse
+    LOG(L"%s: %s (%i)\n", wstr(bDisableTAA), GetBoolStr(bDisableTAA), bDisableTAA);
+    LOG(L"%s: %s (%i)\n", wstr(bDisableSharpnessOnly), GetBoolStr(bDisableSharpnessOnly) , bDisableSharpnessOnly);
+}
+
+void DisableSharpnessOnly(void)
+{
+    // 00007FF71DF983ED | 80B8 5A010000 00 | cmp byte ptr ds:[rax+15A],0        | --> C680 5A010000 01 | mov byte ptr ds:[rax+15A],1
+    // 00007FF71DF983F4 | 75 49            | jne re8.7FF71DF9843F               | --> EB 49            | jmp re8.7FF71DF9843F
+    // 00007FF71DF983F6 | 83B8 F8010000 05 | cmp dword ptr ds : [rax + 1F8] , 5 |
+    // 00007FF71DF983FD | 74 40            | je re8.7FF71DF9843F                |
+    const unsigned char patch[] = { 0xC6, 0x80, 0x5A, 0x01, 0x00, 0x00, 0x01, 0xEB, 0x49 };
+    WritePatchPattern(L"80 B8 5A 01 00 00 00 75 49", patch, sizeof(patch), L"Disable Sharpness", 0);
+}
+
+void DisableTAA(void)
+{
+    // 00007FF71DF983ED | 80B8 5A010000 00 | cmp byte ptr ds:[rax+15A],0        |
+    // 00007FF71DF983F4 | 75 49            | jne re8.7FF71DF9843F               |     
+    // 00007FF71DF983F6 | 83B8 F8010000 05 | cmp dword ptr ds : [rax + 1F8] , 5 | --> C680 F8010000 05 | mov byte ptr ds : [rax + 1F8] , 5
+    // 00007FF71DF983FD | 74 40            | je re8.7FF71DF9843F                | --> EB 40            | jmp re8.7FF71DF9843F |
+    const unsigned char patch[] = { 0xC6, 0x80, 0xF8, 0x01, 0x00, 0x00, 0x05, 0xEB, 0x40 };
+    WritePatchPattern(L"83 B8 F8 01 00 00 05 74 40", patch, sizeof(patch), L"Disable TAA", 0);
+}
+
+DWORD __stdcall Main(void*)
+{
+    bLoggingEnabled = false;
+    wchar_t LogPath[_MAX_PATH] = { 0 };
+    wcscpy_s(exePath, _countof(exePath), GetRunningPath(exePath));
+    _snwprintf_s(LogPath, _countof(LogPath), _TRUNCATE, L"%s\\%s", exePath, _PROJECT_LOG_PATH);
+    LoggingInit(_PROJECT_NAME, LogPath);
+    ReadConfig();
+
+    // Enforce TAA patch, as it already disables the sharpening filter
+    if (bDisableTAA)
+        DisableTAA();
+    else
+    {
+        if (bDisableSharpnessOnly)
+            DisableSharpnessOnly();
+    }
+
+    LOG(L"Shutting down " wstr(fp_log) " file handle.\n");
+    fclose(fp_log);
+    return true;
+}
+
+BOOL APIENTRY DllMain( HMODULE hModule,
+                       DWORD  ul_reason_for_call,
+                       LPVOID lpReserved
+                     )
+{
+    switch (ul_reason_for_call)
+    {
+    case DLL_PROCESS_ATTACH:
+    {
+        CreateThread(NULL, 0, Main, 0, NULL, 0);
+    }
+    case DLL_THREAD_ATTACH:
+    case DLL_THREAD_DETACH:
+    case DLL_PROCESS_DETACH:
+        break;
+    }
+    return TRUE;
+}