Several optimizations

This commit is contained in:
2025-11-15 19:20:32 +01:00
parent 727467345e
commit 42f081055c

View File

@@ -1,12 +1,9 @@
#include <string>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/rotating_file_sink.h>
#include <filesystem>
#include <safetyhook.hpp>
#include "CommonHeaders.h"
#include "GameFixes.h"
#include "GameInformations.h"
#include "ObfuscateString.h"
#include "Memory.hpp";
#include "Maths.hpp";
#include "Memory.hpp"
#include "Maths.hpp"
#include "UEngine.hpp";
#include "SDK/Basic.hpp"
#include "SDK/Engine_classes.hpp"
@@ -46,6 +43,7 @@ static bool g_HUD_fix_enabled = false;
static int g_AdditionalFOVValue = 0;
static float g_cameraDistanceMultiplier = 1.f;
static float g_cameraHeight = -15.f;
static bool g_Console = false;
// Shared values
static float g_FOV_In = 70.f;
@@ -57,7 +55,6 @@ static bool g_Console_Enabled = false;
// AOB Unreal Engine offsets addresses
static uint8_t* GObjectsaddress = nullptr;
static uint8_t* GNamesaddress = nullptr;
static uint8_t* AppendStringaddress = nullptr;
static uint8_t* ProcessEventaddress = nullptr;
@@ -103,7 +100,7 @@ static void CameraFixEnabled(ECharlieCameraMode Mode);
static void HUDFixEnabled();
static void EnableConsole();
extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled)
extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled, bool init)
{
g_fix_enabled = enabled;
if (g_fix_enabled && !AOBScanDone) {
@@ -193,8 +190,6 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled)
}
if (Fogaddress == nullptr) {
// 40 ?? 48 83 ?? ?? 48 8B ?? ?? ?? ?? ?? 48 ?? ?? 48 89 ?? ?? ?? 48 8D ?? ?? 48 8D ?? ?? ?? E8
//constexpr auto FogStringObfuscated = make_obfuscated<0x4A>("0F 84 ?? ?? ?? ?? F6 ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF");
constexpr auto FogStringObfuscated = make_obfuscated<0x4A>("40 ?? 48 83 ?? ?? 48 8B ?? ?? ?? ?? ?? 48 ?? ?? 48 89 ?? ?? ?? 48 8D ?? ?? 48 8D ?? ?? ?? E8");
Fogaddress = Memory::AOBScan(gameExecutable, FogStringObfuscated.decrypt(), PAGE_EXECUTE_READ);
//"HellIsUs-Win64-Shipping.exe" + 22B77C8 - 74 11 - je "HellIsUs-Win64-Shipping.exe" + 22B77DB
@@ -257,8 +252,6 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled)
constexpr auto GObjetcsStringObfuscated = make_obfuscated<0x4A>("48 8B ?? ?? ?? ?? ?? 48 8B ?? ?? 48 8D ?? ?? EB ?? 33");
GObjectsaddress = Memory::AOBScan(gameExecutable, GObjetcsStringObfuscated.decrypt(), PAGE_EXECUTE_READ);
constexpr auto GNamesStringObfuscated = make_obfuscated<0x4A>("48 8D ?? ?? ?? ?? ?? EB ?? 48 8D ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? C6 05 ?? ?? ?? ?? ?? 0F ?? ?? 4C");
GNamesaddress = Memory::AOBScan(gameExecutable, GNamesStringObfuscated.decrypt(), PAGE_EXECUTE_READ);
constexpr auto AppendStringStringObfuscated = make_obfuscated<0x4A>("48 89 ?? ?? ?? 48 89 ?? ?? ?? 57 48 83 ?? ?? 80 3D ?? ?? ?? ?? ?? 48 8B F2 8B ?? 48");
AppendStringaddress = Memory::AOBScan(gameExecutable, AppendStringStringObfuscated.decrypt(), PAGE_EXECUTE_READ);
constexpr auto ProcessEventStringObfuscated = make_obfuscated<0x4A>("40 ?? 56 57 41 ?? 41 ?? 41 ?? 41 ?? 48 81 ?? ?? ?? ?? ?? 48 8D ?? ?? ?? 48 89 ?? ?? ?? ?? ?? 48 8B ?? ?? ?? ?? ?? 48 33 ?? 48 89 ?? ?? ?? ?? ?? 4D ?? ?? 48");
@@ -273,15 +266,6 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled)
Offsets::GObjects = static_cast<UC::uint32>(gObjectsOffset); // Update GObjects offset
}
if (!GNamesaddress)
logger->warn("GNames signature not found. Maybe your game has been updated and is no more compatible with this plugin.");
else {
uint32_t gNamesOffset = static_cast<uint32_t>(Memory::GetOffsetFromOpcode(GNamesaddress + 0x3) -
reinterpret_cast<uint8_t*>(GetModuleHandleA(gameExecutable.c_str())));
logger->info("GNames offset is: 0x{:X}.", gNamesOffset);
Offsets::GNames = static_cast<UC::uint32>(gNamesOffset); // Update GNames offset
}
if (!AppendStringaddress)
logger->warn("AppendString signature not found. Maybe your game has been updated and is no more compatible with this plugin.");
else {
@@ -304,70 +288,29 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled)
logger->info("-------------- Fixes initialisation -------------");
}
if (FOVaddress) FOVFixEnabled();
if (Aspectaddress) AspectFixEnabled();
if (Cameraaddress) CameraFixEnabled(ECharlieCameraMode::Camera);
if (Cameraaddress) CameraFixEnabled(ECharlieCameraMode::FOV);
if (DOFaddress) DOFFixEnabled();
if (CAaddress) CAFixEnabled();
if (Vignettingaddress) VignettingFixEnabled();
if (Fogaddress) FogFixEnabled();
if (GObjectsaddress && GNamesaddress && AppendStringaddress && ProcessEventaddress && HUDaddress)
if (!init && FOVaddress) FOVFixEnabled();
if (!init && Aspectaddress) AspectFixEnabled();
if (!init && Cameraaddress) CameraFixEnabled(ECharlieCameraMode::Camera);
if (!init && Cameraaddress) CameraFixEnabled(ECharlieCameraMode::FOV);
if (!init && DOFaddress) DOFFixEnabled();
if (!init && CAaddress) CAFixEnabled();
if (!init && Vignettingaddress) VignettingFixEnabled();
if (!init && Fogaddress) FogFixEnabled();
if (!init && GObjectsaddress && AppendStringaddress && ProcessEventaddress && HUDaddress)
HUDFixEnabled();
if (!g_Console_Enabled && GObjectsaddress && GNamesaddress && AppendStringaddress && ProcessEventaddress)
EnableConsole();
}
// Setters for Reshade addon call
extern "C" __declspec(dllexport) void SetFOVFixEnabled(bool enabled, bool init)
{
g_fov_fix_enabled = enabled;
if (!init) {
FOVFixEnabled();
CameraFixEnabled(ECharlieCameraMode::FOV);
}
}
extern "C" __declspec(dllexport) void SetAspectRatioFixEnabled(bool enabled, bool init)
{
g_aspect_fix_enabled = enabled;
if (!init) AspectFixEnabled();
}
extern "C" __declspec(dllexport) void SetDOFFixEnabled(bool enabled, bool init)
{
g_DOF_fix_enabled = enabled;
if (!init) DOFFixEnabled();
}
extern "C" __declspec(dllexport) void SetCAFixEnabled(bool enabled, bool init)
{
g_CA_fix_enabled = enabled;
if (!init) CAFixEnabled();
}
extern "C" __declspec(dllexport) void SetVignettingFixEnabled(bool enabled, bool init)
{
g_Vignetting_fix_enabled = enabled;
if (!init) VignettingFixEnabled();
}
extern "C" __declspec(dllexport) void SetFogFixEnabled(bool enabled, bool init)
{
g_Fog_fix_enabled = enabled;
if (!init) FogFixEnabled();
}
extern "C" __declspec(dllexport) void SetCameraFixEnabled(bool enabled, bool init)
{
g_Camera_fix_enabled = enabled;
if (!init) CameraFixEnabled(ECharlieCameraMode::Camera);
}
extern "C" __declspec(dllexport) void SetHUDFixEnabled(bool enabled, bool init)
{
g_HUD_fix_enabled = enabled;
if (!init) HUDFixEnabled();
extern "C" __declspec(dllexport) void SetFixesEnabled(GameFixes fix, bool enabled) {
if (fix == GameFixes::DevConsole) { g_Console = enabled; EnableConsole(); };
if (fix == GameFixes::FOV) { g_fov_fix_enabled = enabled; FOVFixEnabled(); CameraFixEnabled(ECharlieCameraMode::FOV); }
if (fix == GameFixes::UltraWide) { g_aspect_fix_enabled = enabled; AspectFixEnabled(); }
if (fix == GameFixes::Camera) { g_Camera_fix_enabled = enabled; CameraFixEnabled(ECharlieCameraMode::Camera); };
if (fix == GameFixes::DOF) { g_DOF_fix_enabled = enabled; DOFFixEnabled(); }
if (fix == GameFixes::ChromaticAberrations) { g_CA_fix_enabled = enabled; CAFixEnabled(); }
if (fix == GameFixes::Vignetting) { g_Vignetting_fix_enabled = enabled; VignettingFixEnabled(); }
if (fix == GameFixes::Fog) { g_Fog_fix_enabled = enabled; FogFixEnabled(); }
if (fix == GameFixes::HUD) { g_HUD_fix_enabled = enabled; HUDFixEnabled(); }
}
extern "C" __declspec(dllexport) void SetFOV(int fov)
@@ -452,10 +395,10 @@ static void CameraFixEnabled(ECharlieCameraMode mode) {
auto* charlieCameraBaseConfig = reinterpret_cast<UCharlieCameraBaseConfig*>(ctx.rax);
if (charlieCameraBaseConfig && charlieCameraBaseConfig->IsA(UCharlieCameraBaseConfig::StaticClass())) {
// Camera height
charlieCameraBaseConfig->DefaultHeightFromPlayer = (g_fix_enabled && g_Camera_fix_enabled ? g_cameraHeight : DEFAULT_CAMERA_HEIGHT);
charlieCameraBaseConfig->DefaultHeightFromPlayer = g_fix_enabled && g_Camera_fix_enabled ? g_cameraHeight : DEFAULT_CAMERA_HEIGHT;
// World FOV
charlieCameraBaseConfig->FieldOfView = DEFAULT_WORLD_FOV
+ (g_fix_enabled && g_fov_fix_enabled ? g_AdditionalFOVValue : 0.f);
+ g_fix_enabled && g_fov_fix_enabled ? g_AdditionalFOVValue : 0.f;
}
});
}