diff options
author | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2021-11-05 22:43:56 +0000 |
---|---|---|
committer | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2021-11-05 22:43:56 +0000 |
commit | cfeeaf9561a294f359cc180b86f2644e3828d819 (patch) | |
tree | 4e2adfc4332f09b0ffd6b001c8e86313d5d47c46 /enc_temp_folder | |
parent | 3d4eb42b4aaf89a4f5f3e74cb50f1fa557b272ee (diff) | |
download | NorthstarLauncher-cfeeaf9561a294f359cc180b86f2644e3828d819.tar.gz NorthstarLauncher-cfeeaf9561a294f359cc180b86f2644e3828d819.zip |
reworking modloading code
Diffstat (limited to 'enc_temp_folder')
-rw-r--r-- | enc_temp_folder/1f2f287a281d83d9f25d929b98193d/dedicatedmaterialsystem.cpp | 186 | ||||
-rw-r--r-- | enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp | 106 |
2 files changed, 0 insertions, 292 deletions
diff --git a/enc_temp_folder/1f2f287a281d83d9f25d929b98193d/dedicatedmaterialsystem.cpp b/enc_temp_folder/1f2f287a281d83d9f25d929b98193d/dedicatedmaterialsystem.cpp deleted file mode 100644 index 30a55b94..00000000 --- a/enc_temp_folder/1f2f287a281d83d9f25d929b98193d/dedicatedmaterialsystem.cpp +++ /dev/null @@ -1,186 +0,0 @@ -#pragma once -#include "pch.h" -#include "dedicated.h" -#include "dedicatedmaterialsystem.h" -#include "hookutils.h" - -void InitialiseDedicatedMaterialSystem(HMODULE baseAddress) -{ - if (!IsDedicated()) - return; - - //while (!IsDebuggerPresent()) - // Sleep(100); - - // not using these for now since they're related to nopping renderthread/gamewindow i.e. very hard - //{ - // // function that launches renderthread - // char* ptr = (char*)baseAddress + 0x87047; - // TempReadWrite rw(ptr); - // - // // make it not launch renderthread - // *ptr = (char)0x90; - // *(ptr + 1) = (char)0x90; - // *(ptr + 2) = (char)0x90; - // *(ptr + 3) = (char)0x90; - // *(ptr + 4) = (char)0x90; - // *(ptr + 5) = (char)0x90; - //} - // - //{ - // // some function that waits on renderthread job - // char* ptr = (char*)baseAddress + 0x87d00; - // TempReadWrite rw(ptr); - // - // // return immediately - // *ptr = (char)0xC3; - //} - - { - // CMaterialSystem::FindMaterial - char* ptr = (char*)baseAddress + 0x5F0F1; - TempReadWrite rw(ptr); - - // make the game always use the error material - *ptr = 0xE9; - *(ptr + 1) = (char)0x34; - *(ptr + 2) = (char)0x03; - *(ptr + 3) = (char)0x00; - } - - if (DisableDedicatedWindowCreation()) - { - { - // materialsystem rpak type registrations - char* ptr = (char*)baseAddress + 0x22B5; - TempReadWrite rw(ptr); - - // nop a call that crashes, not needed on dedi - *ptr = 0x90; - *(ptr + 1) = (char)0x90; - *(ptr + 2) = (char)0x90; - *(ptr + 3) = (char)0x90; - *(ptr + 4) = (char)0x90; - } - - // these don't work, they cause game to hang on loading - { - // materialsystem rpak type: texture - char* ptr = (char*)baseAddress + 0x2B00; - TempReadWrite rw(ptr); - - // make it return 0 - // mov rax,0 - *ptr = 0x48; - *(ptr + 1) = (char)0xB8; - *(ptr + 2) = (char)0x00; - *(ptr + 3) = (char)0x00; - *(ptr + 4) = (char)0x00; - *(ptr + 5) = (char)0x00; - *(ptr + 6) = (char)0x00; - *(ptr + 7) = (char)0x00; - *(ptr + 8) = (char)0x00; - *(ptr + 9) = (char)0x00; - - // ret - *(ptr + 10) = (char)0xC3; - } - - { - // materialsystem rpak type: material - char* ptr = (char*)baseAddress + 0x50AA0; - TempReadWrite rw(ptr); - - // make it return 0 - // mov rax,0 - *ptr = 0x48; - *(ptr + 1) = (char)0xB8; - *(ptr + 2) = (char)0x00; - *(ptr + 3) = (char)0x00; - *(ptr + 4) = (char)0x00; - *(ptr + 5) = (char)0x00; - *(ptr + 6) = (char)0x00; - *(ptr + 7) = (char)0x00; - *(ptr + 8) = (char)0x00; - *(ptr + 9) = (char)0x00; - - // ret - *(ptr + 10) = (char)0xC3; - } - - { - // materialsystem rpak type: shader - char* ptr = (char*)baseAddress + 0x2850; - TempReadWrite rw(ptr); - - // make it return 0 - // mov rax,0 - *ptr = 0x48; - *(ptr + 1) = (char)0xB8; - *(ptr + 2) = (char)0x00; - *(ptr + 3) = (char)0x00; - *(ptr + 4) = (char)0x00; - *(ptr + 5) = (char)0x00; - *(ptr + 6) = (char)0x00; - *(ptr + 7) = (char)0x00; - *(ptr + 8) = (char)0x00; - *(ptr + 9) = (char)0x00; - - // ret - *(ptr + 10) = (char)0xC3; - } - - { - // some renderthread stuff - char* ptr = (char*)baseAddress + 0x8C10; - TempReadWrite rw(ptr); - - // call => nop - *ptr = (char)0x90; - *(ptr + 1) = (char)0x90; - } - } -} - -// rpak pain -struct RpakTypeDefinition -{ - int64_t magic; - char* longName; - - // more fields but they don't really matter for what we use them for -}; - -typedef void*(*RegisterRpakTypeType)(RpakTypeDefinition* rpakStruct, unsigned int a1, unsigned int a2); -RegisterRpakTypeType RegisterRpakType; - -typedef void(*RegisterMaterialSystemRpakTypes)(); - -void* RegisterRpakTypeHook(RpakTypeDefinition* rpakStruct, unsigned int a1, unsigned int a2) -{ - // make sure this prints right - char magicName[5]; - memcpy(magicName, &rpakStruct->magic, 4); - magicName[4] = 0; - - spdlog::info("rpak type {} {} registered {} {}", magicName, rpakStruct->longName, a1, a2); - - // reregister rpak types that aren't registered on a windowless dedi - if (IsDedicated() && DisableDedicatedWindowCreation() && rpakStruct->magic == 0x64636C72) // rlcd, this one is registered last - ((RegisterMaterialSystemRpakTypes)((char*)GetModuleHandleA("materialsystem_dx11.dll") + 0x22A0))(); // slightly hellish call - - return RegisterRpakType(rpakStruct, a1, a2); -} - -void InitialiseDedicatedRtechGame(HMODULE baseAddress) -{ - spdlog::info("InitialiseDedicatedRtechGame"); - - HookEnabler hook; - ENABLER_CREATEHOOK(hook, (char*)GetModuleHandleA("rtech_game.dll") + 0x7BE0, &RegisterRpakTypeHook, reinterpret_cast<LPVOID*>(&RegisterRpakType)); - - if (!IsDedicated()) - return; - - -}
\ No newline at end of file diff --git a/enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp b/enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp deleted file mode 100644 index 7d347097..00000000 --- a/enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include "pch.h" -#include "hooks.h" -#include "main.h" -#include "squirrel.h" -#include "tier0.h" -#include "dedicated.h" -#include "dedicatedmaterialsystem.h" -#include "sourceconsole.h" -#include "logging.h" -#include "concommand.h" -#include "modmanager.h" -#include "filesystem.h" -#include "serverauthentication.h" -#include "scriptmodmenu.h" -#include "scriptserverbrowser.h" -#include "keyvalues.h" -#include "masterserver.h" -#include "gameutils.h" -#include "chatcommand.h" -#include "modlocalisation.h" -#include "playlist.h" -#include "securitypatches.h" -#include "miscserverscript.h" - -bool initialised = false; - -BOOL APIENTRY DllMain( HMODULE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved - ) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - - if (!initialised) - InitialiseNorthstar(); - initialised = true; - - return TRUE; -} - -void WaitForDebugger(HMODULE baseAddress) -{ - // earlier waitfordebugger call than is in vanilla, just so we can debug stuff a little easier - if (CommandLine()->CheckParm("-waitfordebugger")) - { - while (!IsDebuggerPresent()) - Sleep(100); - } -} - -// in the future this will be called from launcher instead of dllmain -void InitialiseNorthstar() -{ - InitialiseLogging(); - - // apply initial hooks - InstallInitialHooks(); - InitialiseInterfaceCreationHooks(); - - AddDllLoadCallback("engine.dll", WaitForDebugger); - AddDllLoadCallback("engine.dll", InitialiseEngineGameUtilFunctions); - AddDllLoadCallback("server.dll", InitialiseServerGameUtilFunctions); - AddDllLoadCallback("engine.dll", InitialiseEngineSpewFuncHooks); - - // dedi patches - { - AddDllLoadCallback("engine.dll", InitialiseDedicated); - AddDllLoadCallback("launcher.dll", InitialiseDedicatedOrigin); - AddDllLoadCallback("materialsystem_dx11.dll", InitialiseDedicatedMaterialSystem); - AddDllLoadCallback("engine.dll", InitialiseDedicatedRtechGame); - } - - AddDllLoadCallback("engine.dll", InitialiseConVars); - AddDllLoadCallback("engine.dll", InitialiseConCommands); - - // client-exclusive patches - { - AddDllLoadCallback("engine.dll", InitialiseClientEngineSecurityPatches); - AddDllLoadCallback("client.dll", InitialiseClientSquirrel); - AddDllLoadCallback("client.dll", InitialiseSourceConsole); - AddDllLoadCallback("engine.dll", InitialiseChatCommands); - AddDllLoadCallback("client.dll", InitialiseScriptModMenu); - AddDllLoadCallback("client.dll", InitialiseScriptServerBrowser); - AddDllLoadCallback("localize.dll", InitialiseModLocalisation); - } - - AddDllLoadCallback("server.dll", InitialiseServerSquirrel); - AddDllLoadCallback("engine.dll", InitialiseServerAuthentication); - AddDllLoadCallback("engine.dll", InitialiseSharedMasterServer); - AddDllLoadCallback("server.dll", InitialiseMiscServerScriptCommand); - - AddDllLoadCallback("engine.dll", InitialisePlaylistHooks); - - AddDllLoadCallback("filesystem_stdio.dll", InitialiseFilesystem); - AddDllLoadCallback("engine.dll", InitialiseKeyValues); - - // mod manager after everything else - AddDllLoadCallback("engine.dll", InitialiseModManager); -}
\ No newline at end of file |