aboutsummaryrefslogtreecommitdiff
path: root/enc_temp_folder
diff options
context:
space:
mode:
authorBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-11-05 22:43:56 +0000
committerBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-11-05 22:43:56 +0000
commitcfeeaf9561a294f359cc180b86f2644e3828d819 (patch)
tree4e2adfc4332f09b0ffd6b001c8e86313d5d47c46 /enc_temp_folder
parent3d4eb42b4aaf89a4f5f3e74cb50f1fa557b272ee (diff)
downloadNorthstarLauncher-cfeeaf9561a294f359cc180b86f2644e3828d819.tar.gz
NorthstarLauncher-cfeeaf9561a294f359cc180b86f2644e3828d819.zip
reworking modloading code
Diffstat (limited to 'enc_temp_folder')
-rw-r--r--enc_temp_folder/1f2f287a281d83d9f25d929b98193d/dedicatedmaterialsystem.cpp186
-rw-r--r--enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp106
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