diff --git a/config/RSBE01_02/rels/sora_adv_menu_result/symbols.txt b/config/RSBE01_02/rels/sora_adv_menu_result/symbols.txt
index 5067ecf..4af6e81 100644
--- a/config/RSBE01_02/rels/sora_adv_menu_result/symbols.txt
+++ b/config/RSBE01_02/rels/sora_adv_menu_result/symbols.txt
@@ -1,4 +1,4 @@
-fn_34_0 = .text:0x00000000; // type:function size:0xD8
+create__15muAdvResultTaskFPC20muAdvResultTaskParam = .text:0x00000000; // type:function size:0xD8
fn_34_D8 = .text:0x000000D8; // type:function size:0x1E8
fn_34_2C0 = .text:0x000002C0; // type:function size:0x180
fn_34_440 = .text:0x00000440; // type:function size:0x2F4
diff --git a/config/RSBE01_02/rels/sora_scene/splits.txt b/config/RSBE01_02/rels/sora_scene/splits.txt
index 289937d..908fca5 100644
--- a/config/RSBE01_02/rels/sora_scene/splits.txt
+++ b/config/RSBE01_02/rels/sora_scene/splits.txt
@@ -45,6 +45,10 @@ mo_scene/sora_scene/sc_adv_diff.cpp:
.rodata start:0x000008C0 end:0x000008D0
.data start:0x00005E48 end:0x00005F50
+mo_scene/sora_scene/sc_adv_result.cpp:
+ .text start:0x0001FDEC end:0x0002006C
+ .data start:0x00006488 end:0x000064E8
+
mo_scene/mo_scene.cpp:
.text start:0x0003D4B8 end:0x0003D588
.data start:0x00009C30 end:0x00009C3D
diff --git a/config/RSBE01_02/rels/sora_scene/symbols.txt b/config/RSBE01_02/rels/sora_scene/symbols.txt
index 5a54921..5f8bb53 100644
--- a/config/RSBE01_02/rels/sora_scene/symbols.txt
+++ b/config/RSBE01_02/rels/sora_scene/symbols.txt
@@ -402,11 +402,11 @@ fn_1_1EDE0 = .text:0x0001EDE0; // type:function size:0xC
fn_1_1EDEC = .text:0x0001EDEC; // type:function size:0x2AC
fn_1_1F098 = .text:0x0001F098; // type:function size:0xBB4
fn_1_1FC4C = .text:0x0001FC4C; // type:function size:0x1A0
-fn_1_1FDEC = .text:0x0001FDEC; // type:function size:0xA8
-fn_1_1FE94 = .text:0x0001FE94; // type:function size:0x10
-fn_1_1FEA4 = .text:0x0001FEA4; // type:function size:0xEC
-fn_1_1FF90 = .text:0x0001FF90; // type:function size:0x4C
-fn_1_1FFDC = .text:0x0001FFDC; // type:function size:0x90
+create__11scAdvResultFv = .text:0x0001FDEC; // type:function size:0xA8
+setModule__11scAdvResultFv = .text:0x0001FE94; // type:function size:0x10
+start__11scAdvResultFv = .text:0x0001FEA4; // type:function size:0xEC
+process__11scAdvResultFv = .text:0x0001FF90; // type:function size:0x4C
+exit__11scAdvResultFv = .text:0x0001FFDC; // type:function size:0x90
fn_1_2006C = .text:0x0002006C; // type:function size:0x58
fn_1_200C4 = .text:0x000200C4; // type:function size:0x2C
fn_1_200F0 = .text:0x000200F0; // type:function size:0x3FC
@@ -1278,12 +1278,12 @@ lbl_1_data_4D20 = .data:0x00004D20; // type:object size:0x18
lbl_1_data_4D38 = .data:0x00004D38; // type:object size:0x10 data:string
lbl_1_data_4D48 = .data:0x00004D48; // type:object size:0x10
lbl_1_data_4D58 = .data:0x00004D58; // type:object size:0x8
-lbl_1_data_4D60 = .data:0x00004D60; // type:object size:0x34
+__vt__13adList
= .data:0x00004D60; // type:object size:0x34
lbl_1_data_4D94 = .data:0x00004D94; // type:object size:0x1A data:string
lbl_1_data_4DB0 = .data:0x00004DB0; // type:object size:0x10
-lbl_1_data_4DC0 = .data:0x00004DC0; // type:object size:0x8
+__RTTI__13adList = .data:0x00004DC0; // type:object size:0x8
lbl_1_data_4DC8 = .data:0x00004DC8; // type:object size:0x1F data:string
-lbl_1_data_4DE8 = .data:0x00004DE8; // type:object size:0x8
+__RTTI__19adListInterface = .data:0x00004DE8; // type:object size:0x8
lbl_1_data_4DF0 = .data:0x00004DF0; // type:object size:0xA4
lbl_1_data_4E94 = .data:0x00004E94; // type:object size:0xC0
lbl_1_data_4F54 = .data:0x00004F54; // type:object size:0x1C
@@ -1401,10 +1401,10 @@ lbl_1_data_6424 = .data:0x00006424; // type:object size:0xC
lbl_1_data_6430 = .data:0x00006430; // type:object size:0x58
lbl_1_data_6488 = .data:0x00006488; // type:object size:0xC data:string
lbl_1_data_6494 = .data:0x00006494; // type:object size:0x19 data:string
-lbl_1_data_64B0 = .data:0x000064B0; // type:object size:0x18
+__vt__11scAdvResult = .data:0x000064B0; // type:object size:0x18
lbl_1_data_64C8 = .data:0x000064C8; // type:object size:0xC data:string
lbl_1_data_64D4 = .data:0x000064D4; // type:object size:0xC
-lbl_1_data_64E0 = .data:0x000064E0; // type:object size:0x8
+__RTTI__11scAdvResult = .data:0x000064E0; // type:object size:0x8
lbl_1_data_64E8 = .data:0x000064E8; // type:object size:0xC data:string
jumptable_1_data_64F4 = .data:0x000064F4; // type:object size:0x34 scope:local
lbl_1_data_6528 = .data:0x00006528; // type:object size:0x1B data:string
diff --git a/configure.py b/configure.py
index ca24f52..bdb75a3 100755
--- a/configure.py
+++ b/configure.py
@@ -983,6 +983,7 @@ def MatchingFor(*versions):
Object(Matching, "mo_scene/sora_scene/sc_net_time_result.cpp"),
Object(Matching, "mo_scene/sora_scene/sc_adv_selchar.cpp"),
Object(Matching, "mo_scene/sora_scene/sc_adv_diff.cpp"),
+ Object(Matching, "mo_scene/sora_scene/sc_adv_result.cpp"),
Object(Matching, "mo_scene/mo_scene.cpp"),
],
},
diff --git a/include/lib/BrawlHeaders b/include/lib/BrawlHeaders
index 24e4dfb..4af9a64 160000
--- a/include/lib/BrawlHeaders
+++ b/include/lib/BrawlHeaders
@@ -1 +1 @@
-Subproject commit 24e4dfb5617cd17b1742024aa474fee4b7f4f0df
+Subproject commit 4af9a6497996f33a1837c1010c04a414df1996f6
diff --git a/src/mo_scene/sora_scene/sc_adv_diff.cpp b/src/mo_scene/sora_scene/sc_adv_diff.cpp
index dfa4ce0..feb2840 100644
--- a/src/mo_scene/sora_scene/sc_adv_diff.cpp
+++ b/src/mo_scene/sora_scene/sc_adv_diff.cpp
@@ -14,10 +14,7 @@ void scAdvDiff::setModule() {
setLoadModule("sora_adv_menu_difficulty.rel", false);
}
-#pragma push
-#pragma section ".rodata" ".rodata"
__declspec(section ".rodata") static muAdvDifficultyTaskParam g_TaskParam = { 2, 0, 1 };
-#pragma pop
void scAdvDiff::start() {
muAdvDifficultyTaskParam param = g_TaskParam;
diff --git a/src/mo_scene/sora_scene/sc_adv_result.cpp b/src/mo_scene/sora_scene/sc_adv_result.cpp
new file mode 100644
index 0000000..bf712cf
--- /dev/null
+++ b/src/mo_scene/sora_scene/sc_adv_result.cpp
@@ -0,0 +1,68 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+scAdvResult* scAdvResult::create() {
+ return new (Heaps::GlobalMode) scAdvResult("scAdvResult");
+}
+
+void scAdvResult::setModule() {
+ setLoadModule("sora_adv_menu_result.rel", false);
+}
+
+struct UnkParam {
+ union {
+ bool asBool;
+ u32 asInt;
+ } unk0;
+ u32 unk4;
+};
+
+void scAdvResult::start() {
+ UnkParam stack18;
+ UnkParam stack10;
+ UnkParam stack8;
+ if (g_GameGlobal->m_advData) {
+ stack10.unk0.asInt = g_GameGlobal->m_advData->m_record.unk4928;
+ stack10.unk4 = g_GameGlobal->m_advData->m_record.unk492C;
+ } else {
+ stack18.unk0.asBool = false;
+ stack18.unk4 = -1;
+ stack10 = stack18;
+ }
+ stack8 = stack10;
+ m_mainPlayerPort = stack8.unk4;
+ muAdvResultTaskParam param = { m_mainPlayerPort, m_earnedCoinsForClear,
+ m_scoreInCurrentStage, m_totalScore, &unk20, &unk34, &unk48 };
+ m_task = muAdvResultTask::create(¶m);
+ if (gfSceneManager::getInstance()->m_memoryLayout) {
+ m_task->unk5A4 = true;
+ }
+ g_gfApplication->unkD0.endKeepScreen();
+}
+
+s32 scAdvResult::process() {
+ if (m_task && m_task->unk40) {
+ gfSceneManager* mgr = gfSceneManager::getInstance();
+ mgr->unk1 = 0;
+ mgr->processStep = 2;
+ }
+ return 0;
+}
+
+s32 scAdvResult::exit() {
+ unk20.remove();
+ unk34.remove();
+ unk48.remove();
+ if (m_task) {
+ m_task->exit();
+ m_task = nullptr;
+ }
+ g_gfApplication->unkD0.startKeepScreen();
+ return 0;
+}