Skip to content

Commit 3751ba6

Browse files
committed
RestorePauseMissionText
Signed-off-by: Isaac Marovitz <isaacryu@icloud.com>
1 parent 8604878 commit 3751ba6

File tree

7 files changed

+70
-2
lines changed

7 files changed

+70
-2
lines changed

MarathonRecomp/api/Marathon.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#include "Sonicteam/HUDMainDisplay.h"
4646
#include "Sonicteam/HUDMainMenu.h"
4747
#include "Sonicteam/HUDMessageWindow.h"
48+
#include "Sonicteam/HUDPause.h"
4849
#include "Sonicteam/HUDPopupScreen.h"
4950
#include "Sonicteam/HUDRaderMap.h"
5051
#include "Sonicteam/HUDStageTitle.h"
@@ -70,6 +71,7 @@
7071
#include "Sonicteam/NoSyncThread.h"
7172
#include "Sonicteam/ObjectVehicle.h"
7273
#include "Sonicteam/ObjectVehicleBike.h"
74+
#include "Sonicteam/PauseTask.h"
7375
#include "Sonicteam/Player/GroundRayListener.h"
7476
#include "Sonicteam/Player/ICollisionListener.h"
7577
#include "Sonicteam/Player/ICollisionListenerTemplate.h"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Engine/Task.h>
5+
6+
namespace Sonicteam
7+
{
8+
class HUDPause : public SoX::RefCountObject, public SoX::Engine::Task
9+
{
10+
public:
11+
xpointer<CsdObject> m_pCsdObject;
12+
MARATHON_INSERT_PADDING(0xA0);
13+
be<float> m_TextPriority;
14+
MARATHON_INSERT_PADDING(0x40);
15+
xpointer<HudTextParts> m_pHudTextRoot;
16+
bool m_ShowMissionWindow;
17+
};
18+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
5+
namespace Sonicteam
6+
{
7+
class PauseTask : public SoX::Engine::Task
8+
{
9+
public:
10+
MARATHON_INSERT_PADDING(0x230);
11+
xpointer<TextEntity> m_pMissionText;
12+
};
13+
}

MarathonRecomp/patches/aspect_ratio_patches.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1649,7 +1649,7 @@ PPC_FUNC_IMPL(__imp__sub_824E11D0);
16491649
PPC_FUNC(sub_824E11D0)
16501650
{
16511651
auto pHUDMainMenu = (Sonicteam::HUDMainMenu*)(base + ctx.r3.u32);
1652-
auto pHudTextRoot = pHUDMainMenu->m_pHudTextRoot->m_pNext;
1652+
auto pHudTextRoot = pHUDMainMenu->m_pHudTextRoot;
16531653

16541654
static bool s_preservedTextPositions{};
16551655
static float s_multiplayerTextOffsetX{};
@@ -1708,6 +1708,17 @@ PPC_FUNC(sub_824DCF40)
17081708
__imp__sub_824DCF40(ctx, base);
17091709
}
17101710

1711+
// Sonicteam::PauseTask::Update
1712+
PPC_FUNC_IMPL(__imp__sub_82509870);
1713+
PPC_FUNC(sub_82509870)
1714+
{
1715+
auto pPauseTask = (Sonicteam::PauseTask*)(base + ctx.r3.u32);
1716+
1717+
SetTextEntityModifier(pPauseTask->m_pMissionText.get(), CSD_ALIGN_BOTTOM | CSD_SCALE);
1718+
1719+
__imp__sub_82509870(ctx, base);
1720+
}
1721+
17111722
// Sonicteam::HintWindowTask::Update
17121723
PPC_FUNC_IMPL(__imp__sub_824D12F0);
17131724
PPC_FUNC(sub_824D12F0)
@@ -1982,7 +1993,7 @@ const xxHashMap<CsdModifier> g_csdModifiers =
19821993
// pausemenu
19831994
{ HashStr("sprite/pausemenu/pausemenu/pause_menu"), { CSD_SCALE } },
19841995
{ HashStr("sprite/pausemenu/pausemenu/pause_menu_cursor"), { CSD_SCALE } },
1985-
{ HashStr("sprite/pausemenu/pausemenu/mission"), { CSD_SCALE } },
1996+
{ HashStr("sprite/pausemenu/pausemenu/mission"), { CSD_ALIGN_BOTTOM | CSD_SCALE } },
19861997

19871998
// radarmap_cover
19881999
{ HashStr("sprite/radarmap_cover/radarmap_cover/Scene_0000"), { CSD_RADARMAP | CSD_ALIGN_TOP_RIGHT | CSD_SCALE } },

MarathonRecomp/patches/misc_patches.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,22 @@ PPC_FUNC(sub_824A6EA8)
117117
__imp__sub_824A6EA8(ctx, base);
118118
}
119119

120+
// Sonicteam::HUDPause::ProcessMessage
121+
PPC_FUNC_IMPL(__imp__sub_824EF788);
122+
PPC_FUNC(sub_824EF788)
123+
{
124+
if (Config::RestorePauseMissionText)
125+
reinterpret_cast<Sonicteam::HUDPause*>(base + ctx.r3.u32)->m_ShowMissionWindow = true;
126+
127+
__imp__sub_824EF788(ctx, base);
128+
}
129+
130+
// The mission text is drawn at a lower priority
131+
// than the mission box by default. 1001.0f is the
132+
// priority value used by the rest of the pause menu.
133+
void PauseTask_SetMissionTextPriority(PPCRegister& priority)
134+
{
135+
priority.f64 = 1001.0f;
136+
}
137+
120138
void NOP() {}

MarathonRecomp/user/config_def.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreChaosBoostJump, false);
9090
CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreChainJumpFlips, false);
9191
CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreDemoCameraMode, false);
9292
CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreSonicActionGauge, false);
93+
CONFIG_DEFINE_HIDDEN("Codes", bool, RestorePauseMissionText, false);
9394
CONFIG_DEFINE_HIDDEN("Codes", bool, TailsGauge, false);
9495
CONFIG_DEFINE_HIDDEN("Codes", bool, EnableDebugMode, false);
9596
CONFIG_DEFINE_HIDDEN("Codes", bool, MidairControlForMachSpeed, false);

MarathonRecompLib/config/Marathon.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,11 @@ name = "SonicGaugeRestorationGaugeFlagFix"
561561
address = 0x822196EC
562562
registers = ["r3","r31"]
563563

564+
[[midasm_hook]]
565+
name = "PauseTask_SetMissionTextPriority"
566+
address = 0x82509AEC
567+
registers = ["f1"]
568+
564569
[[midasm_hook]]
565570
name = "SonicGaugeRestorationGaugeGemSpriteResetFix"
566571
address = 0x82185768

0 commit comments

Comments
 (0)