Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions MarathonRecomp/api/Marathon.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
#include "Sonicteam/HUDMainMenu.h"
#include "Sonicteam/HUDMessageWindow.h"
#include "Sonicteam/HUDOption.h"
#include "Sonicteam/HUDPause.h"
#include "Sonicteam/HUDPopupScreen.h"
#include "Sonicteam/HUDRaderMap.h"
#include "Sonicteam/HUDStageTitle.h"
Expand Down
18 changes: 18 additions & 0 deletions MarathonRecomp/api/Sonicteam/HUDPause.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#pragma once

#include <Marathon.inl>
#include <Sonicteam/SoX/Engine/Task.h>

namespace Sonicteam
{
class HUDPause : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
xpointer<CsdObject> m_pCsdObject;
MARATHON_INSERT_PADDING(0xA0);
be<float> m_TextPriority;
MARATHON_INSERT_PADDING(0x40);
xpointer<HudTextParts> m_pHudTextRoot;
bool m_ShowMissionWindow;
};
}
7 changes: 6 additions & 1 deletion MarathonRecomp/api/Sonicteam/PauseTask.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,12 @@ namespace Sonicteam
be<uint32_t> m_SelectedIndex;
MARATHON_INSERT_PADDING(0x28);
be<uint32_t> m_Buttons;
MARATHON_INSERT_PADDING(0x1E0);
MARATHON_INSERT_PADDING(0x1D8);
xpointer<TextEntity> m_pMissionText;
MARATHON_INSERT_PADDING(0x4);
be<uint32_t> m_ItemCount;
};

MARATHON_ASSERT_OFFSETOF(PauseTask, m_pMissionText, 0x27C);
MARATHON_ASSERT_OFFSETOF(PauseTask, m_ItemCount, 0x284);
}
17 changes: 1 addition & 16 deletions MarathonRecomp/patches/aspect_ratio_patches.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#include "aspect_ratio_patches.h"
#include <api/Marathon.h>
#include <gpu/video.h>
#include <hid/hid.h>
#include <patches/hook_event.h>
Expand All @@ -10,7 +9,6 @@
#include <ui/imgui_utils.h>
#include <ui/options_menu.h>
#include <user/config.h>
#include <app.h>

// #define CORNER_DEBUG

Expand Down Expand Up @@ -1613,19 +1611,6 @@ PPC_FUNC(sub_8262D868)
ReplaceTextVariables(pTextEntity);
}

void SetTextEntityModifier(Sonicteam::TextEntity* pTextEntity, uint64_t flags)
{
if (!pTextEntity)
return;

auto pTextModifier = (uint64_t*)(reinterpret_cast<uint8_t*>(pTextEntity) + sizeof(Sonicteam::TextEntity));

*pTextModifier = flags;

pTextEntity->m_FieldDD = true;
pTextEntity->Update();
}

// Sonicteam::HUDMainMenu::Destroy
PPC_FUNC_IMPL(__imp__sub_824E2978);
PPC_FUNC(sub_824E2978)
Expand Down Expand Up @@ -1986,7 +1971,7 @@ const xxHashMap<CsdModifier> g_csdModifiers =
// pausemenu
{ HashStr("sprite/pausemenu/pausemenu/pause_menu"), { CSD_SCALE } },
{ HashStr("sprite/pausemenu/pausemenu/pause_menu_cursor"), { CSD_SCALE } },
{ HashStr("sprite/pausemenu/pausemenu/mission"), { CSD_SCALE } },
{ HashStr("sprite/pausemenu/pausemenu/mission"), { CSD_ALIGN_BOTTOM | CSD_SCALE } },

// radarmap_cover
{ HashStr("sprite/radarmap_cover/radarmap_cover/Scene_0000"), { CSD_RADARMAP | CSD_ALIGN_TOP_RIGHT | CSD_SCALE } },
Expand Down
16 changes: 15 additions & 1 deletion MarathonRecomp/patches/aspect_ratio_patches.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#pragma once

#include <xxHashMap.h>
#include <api/Marathon.h>

#define MAKE_BITFLAG32(bit) 1U << bit
#define MAKE_BITFLAG64(bit) 1ULL << bit
Expand Down Expand Up @@ -157,8 +158,21 @@ struct MovieModifier
};

extern const xxHashMap<MovieModifier> g_movieModifiers;

MovieModifier FindMovieModifier(XXH64_hash_t nameHash);

static void SetTextEntityModifier(Sonicteam::TextEntity* pTextEntity, uint64_t flags)
{
if (!pTextEntity)
return;

const auto pTextModifier = reinterpret_cast<uint64_t *>(
reinterpret_cast<uint8_t *>(pTextEntity) + sizeof(Sonicteam::TextEntity));

*pTextModifier = flags;

pTextEntity->m_FieldDD = true;
pTextEntity->Update();
}

#undef MAKE_BITFLAG64
#undef MAKE_BITFLAG32
18 changes: 18 additions & 0 deletions MarathonRecomp/patches/misc_patches.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,4 +233,22 @@ PPC_FUNC(sub_82188460)
ctx.r3.u64 = Config::Subtitles;
}

// Sonicteam::HUDPause::ProcessMessage
PPC_FUNC_IMPL(__imp__sub_824EF788);
PPC_FUNC(sub_824EF788)
{
if (Config::RestorePauseMissionText)
reinterpret_cast<Sonicteam::HUDPause*>(base + ctx.r3.u32)->m_ShowMissionWindow = true;

__imp__sub_824EF788(ctx, base);
}

// The mission text is drawn at a lower priority
// than the mission box by default. 1001.0f is the
// priority value used by the rest of the pause menu.
void PauseTask_SetMissionTextPriority(PPCRegister& priority)
{
priority.f64 = 1001.0f;
}

void NOP() {}
4 changes: 4 additions & 0 deletions MarathonRecomp/patches/pause_patches.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#include <kernel/memory.h>
#include <ui/options_menu.h>

#include "aspect_ratio_patches.h"

void AddPauseMenuItem
(
Sonicteam::TextBook* in_pTextBook,
Expand Down Expand Up @@ -107,5 +109,7 @@ PPC_FUNC(sub_82509870)
}
}

SetTextEntityModifier(pPauseTask->m_pMissionText.get(), CSD_ALIGN_BOTTOM | CSD_SCALE);

__imp__sub_82509870(ctx, base);
}
1 change: 1 addition & 0 deletions MarathonRecomp/user/config_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreChaosBoostJump, false, false);
CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreChaosSpearFlips, false, false);
CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreContextualHUDColours, false, false);
CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreDemoCameraMode, false, false);
CONFIG_DEFINE_HIDDEN("Codes", bool, RestorePauseMissionText, false, false);
CONFIG_DEFINE_HIDDEN("Codes", bool, RestoreSonicActionGauge, false, false);
CONFIG_DEFINE_HIDDEN("Codes", bool, SkipIntroLogos, false, false);
CONFIG_DEFINE_HIDDEN("Codes", bool, TailsGauge, false, false);
Expand Down
5 changes: 5 additions & 0 deletions MarathonRecompLib/config/Marathon.toml
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,11 @@ name = "SonicGauge_FixFlags"
address = 0x822196EC
registers = ["r3", "r31"]

[[midasm_hook]]
name = "PauseTask_SetMissionTextPriority"
address = 0x82509AEC
registers = ["f1"]

[[midasm_hook]]
name = "SonicGauge_FixGemSprite"
address = 0x82185768
Expand Down
Loading