Add Unreal Engine include. Cutscenes support improvement

This commit is contained in:
2026-03-22 17:29:43 +01:00
parent bfed10c0c0
commit fcfe88e660

View File

@@ -4,26 +4,7 @@
#include "UEWidgets.hpp"
#include "UEvars.hpp"
#include "Logger.hpp"
#include "SDK/Basic.hpp"
#include "SDK/Engine_classes.hpp"
#include "SDK/SandFall_classes.hpp"
#include "SDK/BP_jRPG_GM_Bootstrap_classes.hpp"
#include "SDK/BP_jRPG_Character_World_classes.hpp"
#include "SDK/BP_jRPG_Character_Battle_Base_classes.hpp"
#include "SDK/AC_jRPG_CharacterBattleStats_classes.hpp"
#include "SDK/AC_jRPG_BattleManager_classes.hpp"
#include "SDK/BP_jRPG_Enemy_World_Base_Seamless_classes.hpp"
#include "SDK/WBP_CinematicTransition_classes.hpp"
#include "SDK/WBP_PauseMenu_classes.hpp"
#include "SDK/WBP_HUD_BattleScreen_classes.hpp"
#include "SDK/WBP_GM_MainMenuContainer_classes.hpp"
#include "SDK/WBP_GameMenu_v3_classes.hpp"
#include "SDK/WBP_GM_CharacterMenuContainer_classes.hpp"
#include "SDK/WBP_Merchant_Panel_classes.hpp"
#include "SDK/WBP_WidescreenRatioBox_classes.hpp"
#include "SDK/WBP_DialogNotifBox_classes.hpp"
#include "SDK/WBP_PromptContainer_classes.hpp"
#include "SDK/WBP_Exploration_HUD_classes.hpp"
#include "SDK.h"
using namespace SDK;
@@ -81,7 +62,8 @@ static float g_Camera_Out = 280.f;
static uint8_t* FOVaddress = nullptr;
static uint8_t* CameraComponentaddress = nullptr;
static uint8_t* Cameraaddress = nullptr;
static uint8_t* CutscenesFPSaddress = nullptr;
static uint8_t* CutscenesFPSaddress1 = nullptr;
static uint8_t* CutscenesFPSaddress2 = nullptr;
static uint8_t* CAaddress = nullptr;
static uint8_t* DOFaddress = nullptr;
static uint8_t* Fogaddress = nullptr;
@@ -117,7 +99,8 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled, bool init) {
logger->info("--------------- AOB scan started ---------------");
constexpr auto CameraComponentStringObfuscated = make_obfuscated<0xF3>("EB ?? F3 0F ?? ?? ?? ?? ?? ?? F3 0F ?? ?? ?? 8B 83");
constexpr auto FOVStringObfuscated = make_obfuscated<0xF3>("77 ?? 48 ?? ?? FF 90 ?? ?? ?? ?? F3 0F ?? ?? ?? 48 83 ?? ?? C3");
constexpr auto CutscenesFPSStringObfuscated = make_obfuscated<0x0F>("EB ?? 0F ?? ?? 48 8B ?? ?? ?? 0F 28 ?? ?? ?? 44 0F ?? ?? ?? ?? 44 0F");
constexpr auto CutscenesFPS1StringObfuscated = make_obfuscated<0x0F>("EB ?? 0F ?? ?? 48 8B ?? ?? ?? 0F 28 ?? ?? ?? 44 0F ?? ?? ?? ?? 44 0F");
constexpr auto CutscenesFPS2StringObfuscated = make_obfuscated<0x0F>("0F 84 ?? ?? ?? ?? 48 8D ?? ?? ?? 48 89 ?? ?? ?? E8 ?? ?? ?? ?? 83 78");
constexpr auto CameraStruct1StringObfuscated = make_obfuscated<0x48>("48 89 ?? ?? ?? 57 48 83 ?? ?? 0F ?? ?? 48 8B FA 48 ?? ?? 0F ?? ?? F2 0F 10");
constexpr auto CameraStringObfuscated = make_obfuscated<0x28>("F2 0F 10 ?? ?? ?? 0F 28 ?? ?? ?? ?? ?? F2 0F ?? ?? ?? F2 0F ?? ?? ?? 0F ?? ?? 0F");
constexpr auto CAStringObfuscated = make_obfuscated<0x39>("7F ?? 44 89 ?? ?? ?? ?? ?? 43 8B ?? ?? 39 05 ?? ?? ?? ?? 0F 8F");
@@ -132,7 +115,8 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled, bool init) {
std::vector<AOBScanEntry> signatures = {
Make(&CameraComponentaddress, CameraComponentStringObfuscated, "Camera component"),
Make(&FOVaddress, FOVStringObfuscated, "FOV"),
Make(&CutscenesFPSaddress, CutscenesFPSStringObfuscated, "FPS unlock"),
Make(&CutscenesFPSaddress1, CutscenesFPS1StringObfuscated, "FPS unlock"),
Make(&CutscenesFPSaddress2, CutscenesFPS2StringObfuscated, "FPS unlock"),
Make(&CameraStructaddress, CameraStruct1StringObfuscated, "Camera struct"),
Make(&Cameraaddress, CameraStringObfuscated, "Camera"),
Make(&CAaddress, CAStringObfuscated, "Chromatic aberrations"),
@@ -145,7 +129,7 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled, bool init) {
Memory::AOBScanBatch(signatures, logger);
if (FOVaddress && DOFaddress && Fogaddress && WorldTimedilationaddress && Timedilationaddress &&
CutscenesFPSaddress && CAaddress && CameraComponentaddress && CameraStructaddress && Cameraaddress)
CutscenesFPSaddress1 && CutscenesFPSaddress1 && CAaddress && CameraComponentaddress && CameraStructaddress && Cameraaddress)
logger->info("All AOB signatures found. Ready to patch...");
if (!GObjectsaddress || !AppendStringaddress || !ProcessEventaddress) {
@@ -173,7 +157,7 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled, bool init) {
if (!init && FOVaddress) FOVFixEnabled();
if (!init && CameraStructaddress) UltraWideFixEnabled(GameFixes::UltraWide);
if (!init && CutscenesFPSaddress) CutscenesFPSFixEnabled();
if (!init && CutscenesFPSaddress1) CutscenesFPSFixEnabled();
if (!init && Cameraaddress) CameraFixEnabled();
if (!init) HUDUpdate(true);
if (!init && DOFaddress) DOFFixEnabled();
@@ -387,15 +371,19 @@ static void CameraFixEnabled() {
}
static void CutscenesFPSFixEnabled() {
if (!CutscenesFPSaddress) return;
if (!CutscenesFPSaddress1 || !CutscenesFPSaddress2) return;
if (g_fix_enabled && g_CutscenesFPS_fix_enabled) {
if (!CutscenesFPSHook) CutscenesFPSHook = safetyhook::create_mid(CutscenesFPSaddress + 0xa,
if (!CutscenesFPSHook) CutscenesFPSHook = safetyhook::create_mid(CutscenesFPSaddress1 + 0xa,
[](SafetyHookContext& ctx) {
ctx.xmm0.f32[0] = 0.f;
});
else CutscenesFPSHook.enable();
Memory::PatchBytes(CutscenesFPSaddress2,"\x90\xE9",2);
}
else {
if (CutscenesFPSHook) CutscenesFPSHook.disable();
Memory::RestoreBytes(CutscenesFPSaddress2);
}
else if (CutscenesFPSHook) CutscenesFPSHook.disable();
logger->info("Cutscenes FPS unlocker fix {}", g_fix_enabled && g_CutscenesFPS_fix_enabled ? "enabled" : "disabled");
}