summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/hof_pc.s82
-rw-r--r--ld_script.txt2
-rw-r--r--src/hof_pc.c41
3 files changed, 42 insertions, 83 deletions
diff --git a/asm/hof_pc.s b/asm/hof_pc.s
deleted file mode 100644
index c66e2fb05..000000000
--- a/asm/hof_pc.s
+++ /dev/null
@@ -1,82 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start AccessHallOfFamePC
-AccessHallOfFamePC: @ 810D618
- push {lr}
- ldr r0, _0810D628 @ =sub_81428CC
- bl SetMainCallback2
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .align 2, 0
-_0810D628: .4byte sub_81428CC
- thumb_func_end AccessHallOfFamePC
-
- thumb_func_start ReturnFromHallOfFamePC
-ReturnFromHallOfFamePC: @ 810D62C
- push {lr}
- ldr r0, _0810D640 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- ldr r1, _0810D644 @ =gUnknown_0300485C
- ldr r0, _0810D648 @ =ReshowPCMenuAfterHallOfFamePC
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0810D640: .4byte c2_exit_to_overworld_2_switch
-_0810D644: .4byte gUnknown_0300485C
-_0810D648: .4byte ReshowPCMenuAfterHallOfFamePC
- thumb_func_end ReturnFromHallOfFamePC
-
- thumb_func_start ReshowPCMenuAfterHallOfFamePC
-ReshowPCMenuAfterHallOfFamePC: @ 810D64C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- bl sub_8053E90
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl TryCreatePCMenu
- bl sub_80B5838
- ldr r0, _0810D680 @ =sub_810D684
- movs r1, 0xA
- bl CreateTask
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0810D680: .4byte sub_810D684
- thumb_func_end ReshowPCMenuAfterHallOfFamePC
-
- thumb_func_start sub_810D684
-sub_810D684: @ 810D684
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0810D6A0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810D69C
- adds r0, r2, 0
- bl DestroyTask
-_0810D69C:
- pop {r0}
- bx r0
- .align 2, 0
-_0810D6A0: .4byte gPaletteFade
- thumb_func_end sub_810D684
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index 91a6d01de..29cf785b3 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -215,7 +215,7 @@ SECTIONS {
src/post_battle_event_funcs.o(.text);
asm/time_events.o(.text);
asm/birch_pc.o(.text);
- asm/hof_pc.o(.text);
+ src/hof_pc.o(.text);
asm/field_specials.o(.text);
asm/battle_records.o(.text);
asm/pokedex_area_screen.o(.text);
diff --git a/src/hof_pc.c b/src/hof_pc.c
new file mode 100644
index 000000000..7c01020d5
--- /dev/null
+++ b/src/hof_pc.c
@@ -0,0 +1,41 @@
+#include "global.h"
+#include "script.h"
+#include "main.h"
+#include "script_menu.h"
+#include "palette.h"
+#include "rom4.h"
+#include "task.h"
+
+extern void sub_81428CC(void);
+extern void (*gUnknown_0300485C)(void);
+
+static void ReshowPCMenuAfterHallOfFamePC(void);
+static void Task_WaitForPaletteFade(u8);
+
+void AccessHallOfFamePC(void)
+{
+ SetMainCallback2(sub_81428CC);
+ ScriptContext2_Enable();
+}
+
+void ReturnFromHallOfFamePC(void)
+{
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ gUnknown_0300485C = ReshowPCMenuAfterHallOfFamePC;
+}
+
+static void ReshowPCMenuAfterHallOfFamePC(void)
+{
+ ScriptContext2_Enable();
+ sub_8053E90();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ TryCreatePCMenu();
+ sub_80B5838();
+ CreateTask(Task_WaitForPaletteFade, 10);
+}
+
+static void Task_WaitForPaletteFade(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ DestroyTask(taskId);
+}