From c1988e93237a9e4454b0fa7eee0231f01caf1d58 Mon Sep 17 00:00:00 2001 From: Hyper <34012267+hyperbx@users.noreply.github.com> Date: Sat, 25 Jan 2025 21:16:43 +0000 Subject: [PATCH] Fix achievements button guide reappearing for Yes/No prompts (#193) --- UnleashedRecomp/api/SWA/HUD/Pause/HudPause.h | 27 ++++++++++++++++--- UnleashedRecomp/patches/CHudPause_patches.cpp | 4 +-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/UnleashedRecomp/api/SWA/HUD/Pause/HudPause.h b/UnleashedRecomp/api/SWA/HUD/Pause/HudPause.h index a93bf45..904e803 100644 --- a/UnleashedRecomp/api/SWA/HUD/Pause/HudPause.h +++ b/UnleashedRecomp/api/SWA/HUD/Pause/HudPause.h @@ -48,8 +48,7 @@ namespace SWA class CHudPause : public CGameObject { public: - xpointer m_pVftable; - SWA_INSERT_PADDING(0x2C); + SWA_INSERT_PADDING(0x30); RCPtr m_rcPause; RCPtr m_rcBg; RCPtr m_rcBg1; @@ -58,12 +57,32 @@ namespace SWA RCPtr m_rcBg1Select_2; RCPtr m_rcStatusTitle; RCPtr m_rcFooterA; - SWA_INSERT_PADDING(0x5C); + SWA_INSERT_PADDING(0x59); + bool m_IsVisible; + SWA_INSERT_PADDING(0x02); be m_Action; be m_Menu; be m_Status; be m_Transition; - SWA_INSERT_PADDING(0x20); + SWA_INSERT_PADDING(0x04); + be m_Submenu; + SWA_INSERT_PADDING(0x18); bool m_IsShown; }; + + SWA_ASSERT_OFFSETOF(CHudPause, m_rcPause, 0xEC); + SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg, 0xF4); + SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg1, 0xFC); + SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg1_2, 0x104); + SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg1Select, 0x10C); + SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg1Select_2, 0x114); + SWA_ASSERT_OFFSETOF(CHudPause, m_rcStatusTitle, 0x11C); + SWA_ASSERT_OFFSETOF(CHudPause, m_rcFooterA, 0x124); + SWA_ASSERT_OFFSETOF(CHudPause, m_IsVisible, 0x185); + SWA_ASSERT_OFFSETOF(CHudPause, m_Action, 0x188); + SWA_ASSERT_OFFSETOF(CHudPause, m_Menu, 0x18C); + SWA_ASSERT_OFFSETOF(CHudPause, m_Status, 0x190); + SWA_ASSERT_OFFSETOF(CHudPause, m_Transition, 0x194); + SWA_ASSERT_OFFSETOF(CHudPause, m_Submenu, 0x19C); + SWA_ASSERT_OFFSETOF(CHudPause, m_IsShown, 0x1B8); } diff --git a/UnleashedRecomp/patches/CHudPause_patches.cpp b/UnleashedRecomp/patches/CHudPause_patches.cpp index b660ddd..a648140 100644 --- a/UnleashedRecomp/patches/CHudPause_patches.cpp +++ b/UnleashedRecomp/patches/CHudPause_patches.cpp @@ -135,7 +135,6 @@ PPC_FUNC(sub_824B0930) } } - // TODO: disable Start button closing menu. if (AchievementMenu::s_isVisible) { // HACK: wait for transition to finish before restoring control. @@ -154,7 +153,6 @@ PPC_FUNC(sub_824B0930) if (OptionsMenu::CanClose() && pInputState->GetPadState().IsTapped(SWA::eKeyState_B)) { OptionsMenu::Close(); - GuestToHostFunction(sub_824AFD28, pHudPause, 0, 0, 0, 1); __imp__sub_824B0930(ctx, base); } @@ -165,7 +163,7 @@ PPC_FUNC(sub_824B0930) const auto ms_IsRenderHud = (bool*)g_memory.Translate(0x8328BB26); - if (*ms_IsRenderHud && pHudPause->m_IsShown && pHudPause->m_Transition == SWA::eTransitionType_Undefined) + if (*ms_IsRenderHud && pHudPause->m_IsShown && !pHudPause->m_Submenu && pHudPause->m_Transition == SWA::eTransitionType_Undefined) { ButtonGuide::Open(Button(Localise("Achievements_Name"), EButtonIcon::Back, EButtonAlignment::Left, EFontQuality::Low)); g_isClosed = false;