diff options
author | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2022-11-12 14:16:38 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-12 14:16:38 +0000 |
commit | ab5db7fde23ef6cd87fa8a7e07973179a80e02d4 (patch) | |
tree | 7788d66c7cb77398f3efece82d716db738a4b3a1 | |
parent | a02ccdddde4495504fe11d593f3ed3fcefc00a0f (diff) | |
download | NorthstarLauncher-ab5db7fde23ef6cd87fa8a7e07973179a80e02d4.tar.gz NorthstarLauncher-ab5db7fde23ef6cd87fa8a7e07973179a80e02d4.zip |
allow vmts do be loaded from disk (#292)
-rw-r--r-- | NorthstarDLL/NorthstarDLL.vcxproj | 1 | ||||
-rw-r--r-- | NorthstarDLL/NorthstarDLL.vcxproj.filters | 3 | ||||
-rw-r--r-- | NorthstarDLL/diskvmtfixes.cpp | 16 |
3 files changed, 20 insertions, 0 deletions
diff --git a/NorthstarDLL/NorthstarDLL.vcxproj b/NorthstarDLL/NorthstarDLL.vcxproj index d39fd68b..90dced09 100644 --- a/NorthstarDLL/NorthstarDLL.vcxproj +++ b/NorthstarDLL/NorthstarDLL.vcxproj @@ -572,6 +572,7 @@ <ClCompile Include="clientruihooks.cpp" />
<ClCompile Include="clientvideooverrides.cpp" />
<ClCompile Include="concommand.cpp" />
+ <ClCompile Include="diskvmtfixes.cpp" />
<ClCompile Include="exploitfixes_lzss.cpp" />
<ClCompile Include="keyvalues.cpp" />
<ClCompile Include="limits.cpp" />
diff --git a/NorthstarDLL/NorthstarDLL.vcxproj.filters b/NorthstarDLL/NorthstarDLL.vcxproj.filters index f5d5bd5d..8dfbe685 100644 --- a/NorthstarDLL/NorthstarDLL.vcxproj.filters +++ b/NorthstarDLL/NorthstarDLL.vcxproj.filters @@ -1697,6 +1697,9 @@ <ClCompile Include="scriptdatatables.cpp">
<Filter>Source Files\Scripted</Filter>
</ClCompile>
+ <ClCompile Include="diskvmtfixes.cpp">
+ <Filter>Source Files\Client</Filter>
+ </ClCompile>
<ClCompile Include="keyvalues.cpp">
<Filter>Source Files</Filter>
</ClCompile>
diff --git a/NorthstarDLL/diskvmtfixes.cpp b/NorthstarDLL/diskvmtfixes.cpp new file mode 100644 index 00000000..f5f3e2cd --- /dev/null +++ b/NorthstarDLL/diskvmtfixes.cpp @@ -0,0 +1,16 @@ +#include "pch.h"
+
+ON_DLL_LOAD_CLIENT("materialsystem_dx11.dll", DiskVMTFixes, (CModule module))
+{
+ // in retail VMTs will never load if cache read is invalid due to a special case for them in KeyValues::LoadFromFile
+ // this effectively makes it impossible to load them from mods because we invalidate cache for doing this
+ // so uhh, stop that from happening
+
+ // tbh idk why they even changed any of this what's the point it looks like it works fine who cares my god
+
+ // matsystem KeyValues::LoadFromFile: patch special case on cache read failure for vmts
+ module.Offset(0x1281B9).Patch("EB");
+
+ // CMaterialSystem::FindMaterial: don't call function that crashes if previous patch is applied
+ module.Offset(0x5F55A).NOP(5);
+}
|