aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDLL/clientvideooverrides.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NorthstarDLL/clientvideooverrides.cpp')
-rw-r--r--NorthstarDLL/clientvideooverrides.cpp29
1 files changed, 12 insertions, 17 deletions
diff --git a/NorthstarDLL/clientvideooverrides.cpp b/NorthstarDLL/clientvideooverrides.cpp
index 659bf23c..b9954bf2 100644
--- a/NorthstarDLL/clientvideooverrides.cpp
+++ b/NorthstarDLL/clientvideooverrides.cpp
@@ -1,21 +1,21 @@
#include "pch.h"
-#include "clientvideooverrides.h"
#include "modmanager.h"
-#include "nsmem.h"
-typedef void* (*BinkOpenType)(const char* path, uint32_t flags);
-BinkOpenType BinkOpen;
+AUTOHOOK_INIT()
-void* BinkOpenHook(const char* path, uint32_t flags)
+// clang-format off
+AUTOHOOK_PROCADDRESS(BinkOpen, bink2w64.dll, BinkOpen,
+void*, __fastcall, (const char* path, uint32_t flags))
+// clang-format on
{
std::string filename(fs::path(path).filename().string());
spdlog::info("BinkOpen {}", filename);
// figure out which mod is handling the bink
Mod* fileOwner = nullptr;
- for (Mod& mod : g_ModManager->m_loadedMods)
+ for (Mod& mod : g_pModManager->m_LoadedMods)
{
- if (!mod.Enabled)
+ if (!mod.m_bEnabled)
continue;
if (std::find(mod.BinkVideos.begin(), mod.BinkVideos.end(), filename) != mod.BinkVideos.end())
@@ -25,23 +25,18 @@ void* BinkOpenHook(const char* path, uint32_t flags)
if (fileOwner)
{
// create new path
- fs::path binkPath(fileOwner->ModDirectory / "media" / filename);
+ fs::path binkPath(fileOwner->m_ModDirectory / "media" / filename);
return BinkOpen(binkPath.string().c_str(), flags);
}
else
return BinkOpen(path, flags);
}
-void InitialiseEngineClientVideoOverrides(HMODULE baseAddress)
+ON_DLL_LOAD_CLIENT("client.dll", BinkVideo, (CModule module))
{
+ AUTOHOOK_DISPATCH()
+
// remove engine check for whether the bik we're trying to load exists in r2/media, as this will fail for biks in mods
// note: the check in engine is actually unnecessary, so it's just useless in practice and we lose nothing by removing it
- NSMem::NOP((uintptr_t)baseAddress + 0x459AD, 6);
-
- HookEnabler hook;
- ENABLER_CREATEHOOK(
- hook,
- reinterpret_cast<void*>(GetProcAddress(GetModuleHandleA("bink2w64.dll"), "BinkOpen")),
- &BinkOpenHook,
- reinterpret_cast<LPVOID*>(&BinkOpen));
+ module.Offset(0x459AD).NOP(6);
}