From 00af043cfe1047dbea230c9107181d17d479005c Mon Sep 17 00:00:00 2001 From: Emmanuel AYME Date: Thu, 19 Mar 2026 13:55:00 +0100 Subject: [PATCH] Add assertions for logos bootstrap --- ClairObscur/Assertions.inl | 57 +++++++++++++++++++++++++++++++++++++- ClairObscur/dllmain.cpp | 4 ++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/ClairObscur/Assertions.inl b/ClairObscur/Assertions.inl index 289d5eb..ae67815 100644 --- a/ClairObscur/Assertions.inl +++ b/ClairObscur/Assertions.inl @@ -305709,6 +305709,61 @@ static_assert(alignof(UBP_GameAction_DeactivateExplorationControlBusMix_C) == 0x static_assert(sizeof(UBP_GameAction_DeactivateExplorationControlBusMix_C) == 0x000038, "Wrong size on UBP_GameAction_DeactivateExplorationControlBusMix_C"); \ static_assert(offsetof(UBP_GameAction_DeactivateExplorationControlBusMix_C, ControlBusMix) == 0x000030, "Member 'UBP_GameAction_DeactivateExplorationControlBusMix_C::ControlBusMix' has a wrong offset!"); \ +#define DUMPER7_ASSERTS_BP_jRPG_GM_Bootstrap_C_ReceiveEndPlay \ +static_assert(alignof(BP_jRPG_GM_Bootstrap_C_ReceiveEndPlay) == 0x000001, "Wrong alignment on BP_jRPG_GM_Bootstrap_C_ReceiveEndPlay"); \ +static_assert(sizeof(BP_jRPG_GM_Bootstrap_C_ReceiveEndPlay) == 0x000001, "Wrong size on BP_jRPG_GM_Bootstrap_C_ReceiveEndPlay"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ReceiveEndPlay, EndPlayReason) == 0x000000, "Member 'BP_jRPG_GM_Bootstrap_C_ReceiveEndPlay::EndPlayReason' has a wrong offset!"); \ -} +#define DUMPER7_ASSERTS_BP_jRPG_GM_Bootstrap_C_OnLoaded_CDBF061942C23FFCB5EF2893CAB33E34 \ +static_assert(alignof(BP_jRPG_GM_Bootstrap_C_OnLoaded_CDBF061942C23FFCB5EF2893CAB33E34) == 0x000008, "Wrong alignment on BP_jRPG_GM_Bootstrap_C_OnLoaded_CDBF061942C23FFCB5EF2893CAB33E34"); \ +static_assert(sizeof(BP_jRPG_GM_Bootstrap_C_OnLoaded_CDBF061942C23FFCB5EF2893CAB33E34) == 0x000008, "Wrong size on BP_jRPG_GM_Bootstrap_C_OnLoaded_CDBF061942C23FFCB5EF2893CAB33E34"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_OnLoaded_CDBF061942C23FFCB5EF2893CAB33E34, Loaded) == 0x000000, "Member 'BP_jRPG_GM_Bootstrap_C_OnLoaded_CDBF061942C23FFCB5EF2893CAB33E34::Loaded' has a wrong offset!"); \ +#define DUMPER7_ASSERTS_BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel \ +static_assert(alignof(BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel) == 0x000008, "Wrong alignment on BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel"); \ +static_assert(sizeof(BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel) == 0x000068, "Wrong size on BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel, CallFunc_MakeLiteralGameplayTagContainer_ReturnValue) == 0x000000, "Member 'BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel::CallFunc_MakeLiteralGameplayTagContainer_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel, CallFunc_GetPlatformNameAsTag_ReturnValue) == 0x000020, "Member 'BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel::CallFunc_GetPlatformNameAsTag_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel, CallFunc_HasTag_ReturnValue) == 0x000028, "Member 'BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel::CallFunc_HasTag_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel, CallFunc_GetProjectConfiguration_ReturnValue) == 0x000030, "Member 'BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel::CallFunc_GetProjectConfiguration_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel, CallFunc_GetMainMenuLevel_MainMenuLevel) == 0x000038, "Member 'BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel::CallFunc_GetMainMenuLevel_MainMenuLevel' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel, CallFunc_GetLevelName_ReturnValue) == 0x000060, "Member 'BP_jRPG_GM_Bootstrap_C_LoadMainMenuLevel::CallFunc_GetLevelName_ReturnValue' has a wrong offset!"); \ + +#define DUMPER7_ASSERTS_BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap \ +static_assert(alignof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap) == 0x000008, "Wrong alignment on BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap"); \ +static_assert(sizeof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap) == 0x000178, "Wrong size on BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, EntryPoint) == 0x000000, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::EntryPoint' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CreateDelegate_OutputDelegate) == 0x000004, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CreateDelegate_OutputDelegate' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, Temp_class_Variable) == 0x000018, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::Temp_class_Variable' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CustomEvent_Loaded) == 0x000020, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CustomEvent_Loaded' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, Temp_object_Variable) == 0x000028, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::Temp_object_Variable' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetGameInstanceSubsystem_ReturnValue) == 0x000030, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetGameInstanceSubsystem_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetGameInstanceSubsystem_ReturnValue_1) == 0x000038, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetGameInstanceSubsystem_ReturnValue_1' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetLatestGameSaveLoaded_ReturnValue) == 0x000040, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetLatestGameSaveLoaded_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_IsEmpty_ReturnValue) == 0x000050, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_IsEmpty_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CreateDelegate_OutputDelegate_1) == 0x000054, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CreateDelegate_OutputDelegate_1' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetGameInstanceSubsystem_ReturnValue_2) == 0x000068, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetGameInstanceSubsystem_ReturnValue_2' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetGameInstanceSubsystem_ReturnValue_3) == 0x000070, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetGameInstanceSubsystem_ReturnValue_3' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetLatestGameSaveLoaded_ReturnValue_1) == 0x000078, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetLatestGameSaveLoaded_ReturnValue_1' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_MakeStruct_S_LoadGameRequest) == 0x000088, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_MakeStruct_S_LoadGameRequest' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CreateDelegate_OutputDelegate_2) == 0x0000B0, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CreateDelegate_OutputDelegate_2' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_RunHardwareBenchmarkWithNoAlteration_ReturnValue) == 0x0000C0, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_RunHardwareBenchmarkWithNoAlteration_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_IsValid_ReturnValue) == 0x0000C8, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_IsValid_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_Create_ReturnValue) == 0x0000D0, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_Create_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetConfigurableGameUserSettings_GameUserSettings) == 0x0000D8, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetConfigurableGameUserSettings_GameUserSettings' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CustomEvent_Loaded_1) == 0x0000E0, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CustomEvent_Loaded_1' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_CheckForFirstLaunchBenchmark_ReturnValue) == 0x0000E8, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_CheckForFirstLaunchBenchmark_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CreateDelegate_OutputDelegate_3) == 0x0000EC, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CreateDelegate_OutputDelegate_3' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CreateDelegate_OutputDelegate_4) == 0x0000FC, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CreateDelegate_OutputDelegate_4' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetBoolCVar_ReturnValue) == 0x00010C, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetBoolCVar_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_Not_PreBool_ReturnValue) == 0x00010D, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_Not_PreBool_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetMainMenuMap_ReturnValue) == 0x000110, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetMainMenuMap_ReturnValue' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CreateDelegate_OutputDelegate_5) == 0x000138, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CreateDelegate_OutputDelegate_5' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_Create_ReturnValue_1) == 0x000148, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_Create_ReturnValue_1' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_CreateDelegate_OutputDelegate_6) == 0x000150, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_CreateDelegate_OutputDelegate_6' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_GetSaveManager_SaveManager) == 0x000160, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_GetSaveManager_SaveManager' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, CallFunc_Create_ReturnValue_2) == 0x000168, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::CallFunc_Create_ReturnValue_2' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_Event_EndPlayReason) == 0x000170, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_Event_EndPlayReason' has a wrong offset!"); \ +static_assert(offsetof(BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap, K2Node_SwitchEnum_CmpSuccess) == 0x000171, "Member 'BP_jRPG_GM_Bootstrap_C_ExecuteUbergraph_BP_jRPG_GM_Bootstrap::K2Node_SwitchEnum_CmpSuccess' has a wrong offset!"); \ + +} \ No newline at end of file diff --git a/ClairObscur/dllmain.cpp b/ClairObscur/dllmain.cpp index 019a868..d94c0c6 100644 --- a/ClairObscur/dllmain.cpp +++ b/ClairObscur/dllmain.cpp @@ -181,6 +181,8 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled, bool init) { if (!init && Fogaddress) FogFixEnabled(); if (!init && WorldTimedilationaddress) { EnableCheats(Cheat::TimeDilation); + EnableCheats(Cheat::GodMode); + EnableCheats(Cheat::Stealth); } ProcessEvent(); ATVPFixEnabled(); @@ -306,7 +308,7 @@ static void ProcessEvent() { HandleWidget(static_cast(object)->WBP_WidescreenRatioBox->ConstrainSizeBox, g_merchantPanel); else if (object->IsA(UWBP_PauseMenu_C::StaticClass())) HandleWidget(static_cast(object)->WBP_WidescreenRatioBox->ConstrainSizeBox, g_pauseMenu, true); - else if (object->IsA(UWBP_CinematicTransition_C::StaticClass())) { + else if (object->IsA(UWBP_CinematicTransition_C::StaticClass())) { // Remove aspect constrain from cinematics auto* cinematicTransition = static_cast(object); if (g_ultrawide_fix_enabled && cinematicTransition) cinematicTransition->ScreenRatio = (double)g_AspectRatio; }