aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-10-25 02:43:34 +0100
committerBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-10-25 02:43:34 +0100
commitce9cb0134fefaa2bf5a3da0f9de15f013ab7dd27 (patch)
tree2a5f1a212c17677bb9166b7d4739bb730c2a9a67
parent7e1f1d8270dbdfbe2374e9da664cea2e00dfd465 (diff)
downloadNorthstarLauncher-ce9cb0134fefaa2bf5a3da0f9de15f013ab7dd27.tar.gz
NorthstarLauncher-ce9cb0134fefaa2bf5a3da0f9de15f013ab7dd27.zip
changes to materialsystem patches, still don't fully work
-rw-r--r--NorthstarDedicatedTest/dedicatedmaterialsystem.cpp46
1 files changed, 12 insertions, 34 deletions
diff --git a/NorthstarDedicatedTest/dedicatedmaterialsystem.cpp b/NorthstarDedicatedTest/dedicatedmaterialsystem.cpp
index 67e5db94..327f2c1f 100644
--- a/NorthstarDedicatedTest/dedicatedmaterialsystem.cpp
+++ b/NorthstarDedicatedTest/dedicatedmaterialsystem.cpp
@@ -66,46 +66,24 @@ void InitialiseDedicatedMaterialSystem(HMODULE baseAddress)
// these don't work, they cause game to hang on rpak init, needs reworking
{
// materialsystem rpak type: texture
- char* ptr = (char*)baseAddress + 0x2B00;
+ char* ptr = (char*)baseAddress + 0x2B3A;
TempReadWrite rw(ptr);
- // make it return 0
- // mov rax,0
- *ptr = 0x48;
- *(ptr + 1) = (char)0xB8;
- *(ptr + 2) = (char)0x00;
+ // je=>jmp
+ *ptr = (char)0xE9;
+ *(ptr + 1) = (char)0x48;
+ *(ptr + 2) = (char)0x02;
*(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;
+ char* ptr = (char*)baseAddress + 0x50AD4;
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;
+ // je=>jmp
+ *ptr = (char)0xEB;
}
{
@@ -161,13 +139,13 @@ void* RegisterRpakTypeHook(RpakTypeDefinition* rpakStruct, unsigned int a1, unsi
// make sure this prints right
char magicName[5];
memcpy(magicName, &rpakStruct->magic, 4);
- magicName[4] = 0;
+ magicName[4] = 0; // null terminator
- spdlog::info("rpak type {} {} registered {} {}", magicName, rpakStruct->longName, a1, a2);
+ spdlog::info("rpak type {} {} registered", magicName, rpakStruct->longName);
// 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
+ if (IsDedicated() && DisableDedicatedWindowCreation() && rpakStruct->magic == 0x64636C72) // rlcd magic, this one is registered last
+ ((RegisterMaterialSystemRpakTypes)((char*)GetModuleHandleA("materialsystem_dx11.dll") + 0x22A0))(); // slightly hellish call, registers materialsystem rpak types
return RegisterRpakType(rpakStruct, a1, a2);
}