Skip to content

Commit ea6c74b

Browse files
committed
Implemented achievements menu
1 parent 27ee349 commit ea6c74b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+998
-1049
lines changed

MarathonRecomp/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,6 @@ set(RESOURCES_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/res")
538538
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/bc_diff/button_bc_diff.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/bc_diff/button_bc_diff.bin" ARRAY_NAME "g_button_bc_diff" COMPRESSION_TYPE "zstd")
539539
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.bin" ARRAY_NAME "g_im_font_atlas" COMPRESSION_TYPE "zstd")
540540
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.dds" ARRAY_NAME "g_im_font_atlas_texture" COMPRESSION_TYPE "zstd")
541-
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/achievements_menu/trophy.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/achievements_menu/trophy.dds" ARRAY_NAME "g_trophy" COMPRESSION_TYPE "zstd")
542541
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/button_window.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/button_window.dds" ARRAY_NAME "g_button_window" COMPRESSION_TYPE "zstd")
543542
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/controller.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/controller.dds" ARRAY_NAME "g_controller" COMPRESSION_TYPE "zstd")
544543
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/sonicnext-dev.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/sonicnext-dev.dds" ARRAY_NAME "g_sonicnextdev" COMPRESSION_TYPE "zstd")
@@ -549,7 +548,7 @@ BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/com
549548
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/main_menu9.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/main_menu9.dds" ARRAY_NAME "g_main_menu9" COMPRESSION_TYPE "zstd")
550549
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/arrow.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/arrow.dds" ARRAY_NAME "g_arrow" COMPRESSION_TYPE "zstd")
551550
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/window.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/window.dds" ARRAY_NAME "g_window" COMPRESSION_TYPE "zstd")
552-
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/select_arrow.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/select_arrow.dds" ARRAY_NAME "g_select_arrow" COMPRESSION_TYPE "zstd")
551+
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/select_arrow.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/select_arrow.dds" ARRAY_NAME "g_select_arrow" COMPRESSION_TYPE "zstd")
553552

554553
## Installer ##
555554
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_001.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_001.dds" ARRAY_NAME "g_install_001" COMPRESSION_TYPE "zstd")

MarathonRecomp/api/Marathon.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
#include "Sonicteam/Globals.h"
4444
#include "Sonicteam/HUDButtonWindow.h"
4545
#include "Sonicteam/HUDCALLBACK.h"
46+
#include "Sonicteam/HUDGoldMedal.h"
4647
#include "Sonicteam/HUDLimitTime.h"
4748
#include "Sonicteam/HUDLoading.h"
4849
#include "Sonicteam/HUDMainDisplay.h"
@@ -58,15 +59,16 @@
5859
#include "Sonicteam/MainDisplayTask.h"
5960
#include "Sonicteam/MainMenuTask.h"
6061
#include "Sonicteam/MainMode.h"
61-
#include "Sonicteam/Message/MsgCameramanChangeMode.h"
62-
#include "Sonicteam/Message/MsgHUDButtonWindowChangeButtons.h"
63-
#include "Sonicteam/Message/MsgHUDMainMenuChangeState.h"
64-
#include "Sonicteam/Message/MsgHUDMainMenuSetCursor.h"
65-
#include "Sonicteam/Message/MsgHUDMainMenuTransition.h"
66-
#include "Sonicteam/Message/MsgMissionGetGlobalFlag.h"
67-
#include "Sonicteam/Message/MsgObjJump123GetNextPoint.h"
68-
#include "Sonicteam/Message/MsgPauseAdapterText.h"
69-
#include "Sonicteam/Message/MsgSuckPlayer.h"
62+
#include "Sonicteam/Message/Camera/Cameraman/MsgChangeMode.h"
63+
#include "Sonicteam/Message/HUDButtonWindow/MsgChangeButtons.h"
64+
#include "Sonicteam/Message/HUDGoldMedal/MsgChangeState.h"
65+
#include "Sonicteam/Message/HUDMainMenu/MsgChangeState.h"
66+
#include "Sonicteam/Message/HUDMainMenu/MsgSetCursor.h"
67+
#include "Sonicteam/Message/HUDMainMenu/MsgTransition.h"
68+
#include "Sonicteam/Message/Mission/MsgGetGlobalFlag.h"
69+
#include "Sonicteam/Message/ObjJump123/MsgGetNextPoint.h"
70+
#include "Sonicteam/Message/PauseAdapter/MsgGetText.h"
71+
#include "Sonicteam/Message/Player/MsgSuckPlayer.h"
7072
#include "Sonicteam/MessageWindowTask.h"
7173
#include "Sonicteam/Mission/Core.h"
7274
#include "Sonicteam/MovieObject.h"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
5+
namespace Sonicteam
6+
{
7+
class HUDGoldMedal : public SoX::RefCountObject, public SoX::Engine::Task
8+
{
9+
public:
10+
xpointer<CsdObject> m_pCsdObject;
11+
};
12+
}

MarathonRecomp/api/Sonicteam/HUDMainMenu.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ namespace Sonicteam
1212
enum HUDMainMenuState : uint32_t
1313
{
1414
HUDMainMenuState_OptionsOutro = 5,
15+
HUDMainMenuState_SinglePlayerTextOutro = 8,
16+
HUDMainMenuState_SinglePlayerCursorIntro = 86,
1517
HUDMainMenuState_OptionsIntro = 90,
1618
HUDMainMenuState_MainCursorIntro = 98,
17-
HUDMainMenuState_MainCursorOutro = 99
19+
HUDMainMenuState_MainCursorOutro = 99,
20+
HUDMainMenuState_GoldMedalResultsCursorOutro = 101
1821
};
1922

2023
MARATHON_INSERT_PADDING(0x20);

MarathonRecomp/api/Sonicteam/MainMenuTask.h

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ namespace Sonicteam
2626
MainMenuState_Tag = 0x1E,
2727
MainMenuState_Tag1PSelect = 0x1F,
2828
MainMenuState_Battle = 0x22,
29-
MainMenuState_GoldMedalResults = 0x26,
29+
MainMenuState_GoldMedalResultsOpen = 0x26,
30+
MainMenuState_GoldMedalResults = 0x27,
3031
MainMenuState_AudioRoom = 0x2F,
3132
MainMenuState_TheaterRoom = 0x31,
3233
MainMenuState_Options = 0x33,
@@ -37,11 +38,18 @@ namespace Sonicteam
3738
be<uint32_t> m_State;
3839
MARATHON_INSERT_PADDING(0x24);
3940
xpointer<HUDMainMenu> m_pHUDMainMenu;
40-
MARATHON_INSERT_PADDING(0x20);
41+
MARATHON_INSERT_PADDING(8);
42+
xpointer<HUDGoldMedal> m_pHUDGoldMedal;
43+
MARATHON_INSERT_PADDING(0x14);
4144
xpointer<ButtonWindowTask> m_pButtonWindowTask;
42-
MARATHON_INSERT_PADDING(4);
45+
xpointer<void> m_pMainMenuExpositionTask;
4346
be<uint32_t> m_MainMenuSelectedIndex;
44-
MARATHON_INSERT_PADDING(0x1D8);
47+
be<uint32_t> m_SinglePlayerSelectedIndex;
48+
MARATHON_INSERT_PADDING(0x78);
49+
be<uint32_t> m_GoldMedalEpisodeIndex;
50+
MARATHON_INSERT_PADDING(0x14C);
51+
be<uint32_t> m_IsChangingState;
52+
MARATHON_INSERT_PADDING(8);
4553
be<uint32_t> m_PressedButtons;
4654
MARATHON_INSERT_PADDING(0x18);
4755
xpointer<Actor> m_Field298;
@@ -51,8 +59,13 @@ namespace Sonicteam
5159

5260
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_State, 0x4C);
5361
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_pHUDMainMenu, 0x74);
62+
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_pHUDGoldMedal, 0x80);
5463
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_pButtonWindowTask, 0x98);
64+
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_pMainMenuExpositionTask, 0x9C);
5565
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_MainMenuSelectedIndex, 0xA0);
66+
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_SinglePlayerSelectedIndex, 0xA4);
67+
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_GoldMedalEpisodeIndex, 0x120);
68+
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_IsChangingState, 0x270);
5669
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_PressedButtons, 0x27C);
5770
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_Field298, 0x298);
5871
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_apSelectCharacters, 0x29C);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Math/Vector.h>
5+
#include <Sonicteam/SoX/Message.h>
6+
7+
namespace Sonicteam::Message::Camera::Cameraman
8+
{
9+
struct MsgChangeMode : SoX::Message<0x14007>
10+
{
11+
be<uint32_t> PadID{};
12+
be<uint32_t> TargetActorID{};
13+
bool IsDemoCamera{};
14+
};
15+
16+
MARATHON_ASSERT_OFFSETOF(MsgChangeMode, PadID, 0x04);
17+
MARATHON_ASSERT_OFFSETOF(MsgChangeMode, TargetActorID, 0x08);
18+
MARATHON_ASSERT_OFFSETOF(MsgChangeMode, IsDemoCamera, 0x0C);
19+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Message.h>
5+
6+
namespace Sonicteam::Message::HUDButtonWindow
7+
{
8+
struct MsgChangeButtons : SoX::Message<0x1B05B>
9+
{
10+
be<uint32_t> ButtonType{};
11+
12+
MsgChangeButtons(uint32_t buttonType = 0) : ButtonType(buttonType) {}
13+
};
14+
15+
MARATHON_ASSERT_OFFSETOF(MsgChangeButtons, ButtonType, 0x04);
16+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Message.h>
5+
6+
namespace Sonicteam::Message::HUDGoldMedal
7+
{
8+
struct MsgChangeState : SoX::Message<0x1B058>
9+
{
10+
be<uint32_t> State{};
11+
be<uint32_t> Field08{};
12+
uint8_t Field0C{};
13+
be<uint32_t> EpisodeIndex{};
14+
15+
MsgChangeState() {}
16+
17+
MsgChangeState(uint32_t state, uint32_t episodeIndex = 0) : State(state), EpisodeIndex(episodeIndex) {}
18+
};
19+
20+
MARATHON_ASSERT_OFFSETOF(MsgChangeState, State, 0x04);
21+
MARATHON_ASSERT_OFFSETOF(MsgChangeState, Field08, 0x08);
22+
MARATHON_ASSERT_OFFSETOF(MsgChangeState, Field0C, 0x0C);
23+
MARATHON_ASSERT_OFFSETOF(MsgChangeState, EpisodeIndex, 0x10);
24+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Message.h>
5+
6+
namespace Sonicteam::Message::HUDMainMenu
7+
{
8+
struct MsgChangeState : SoX::Message<0x1B053>
9+
{
10+
be<uint32_t> State{};
11+
};
12+
13+
MARATHON_ASSERT_OFFSETOF(MsgChangeState, State, 0x04);
14+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/Message/HUDMainMenu/MsgChangeState.h>
5+
6+
namespace Sonicteam::Message::HUDMainMenu
7+
{
8+
struct MsgSetCursor : MsgChangeState
9+
{
10+
be<uint32_t> CursorIndex{};
11+
12+
MsgSetCursor() {}
13+
14+
MsgSetCursor(uint32_t state)
15+
{
16+
State = state;
17+
}
18+
19+
MsgSetCursor(uint32_t state, uint32_t cursorIndex)
20+
{
21+
State = state;
22+
CursorIndex = cursorIndex;
23+
}
24+
};
25+
26+
MARATHON_ASSERT_OFFSETOF(MsgSetCursor, CursorIndex, 0x08);
27+
}

0 commit comments

Comments
 (0)