summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/secret_base.c102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/secret_base.c b/src/secret_base.c
index a099b14e7..bf98b0b4c 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -30,6 +30,11 @@ u8 sub_80BCBF8();
void sub_80BCB90(u8);
void sub_80BCBC0(u8);
+void Task_SecretBasePC_Registry(u8);
+void sub_80BC7D8(u8);
+void sub_80BC824(u8);
+void sub_80BCC54(u8);
+
const struct
{
u16 unk_083D1358_0;
@@ -1085,3 +1090,100 @@ void sub_80BC5BC(void)
gSaveBlock1.secretBases[sub_80BC14C(gUnknown_020387DC)].sbr_field_1_6 ^= 1;
FlagSet(0x10c);
}
+
+void SecretBasePC_Decoration(void)
+{
+ CreateTask(Task_SecretBasePC_Decoration, 0);
+}
+
+void SecretBasePC_Registry(void)
+{
+ CreateTask(Task_SecretBasePC_Registry, 0);
+}
+
+#ifdef NONMATCHING
+void Task_SecretBasePC_Registry(u8 taskId)
+{
+ s16 *data;
+ ScriptContext2_Enable();
+ sub_80F944C();
+ LoadScrollIndicatorPalette();
+ data = gTasks[taskId].data;
+ if ((data[0] = sub_80BC538()) != 0)
+ {
+ data[3] = max(data[0], 7);
+ data[1] = 0;
+ data[2] = 0;
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+ sub_80BC7D8(taskId);
+ gTasks[taskId].func = sub_80BC824;
+ }
+ else
+ {
+ DisplayItemMessageOnField(taskId, gSecretBaseText_NoRegistry, sub_80BCC54, 0);
+ }
+}
+#else
+__attribute__((naked))
+void Task_SecretBasePC_Registry(u8 taskId)
+{
+ asm_unified("\tpush {r4,r5,lr}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tbl ScriptContext2_Enable\n"
+ "\tbl sub_80F944C\n"
+ "\tbl LoadScrollIndicatorPalette\n"
+ "\tlsls r0, r5, 2\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 3\n"
+ "\tldr r1, _080BC688 @ =gTasks + 0x8\n"
+ "\tadds r4, r0, r1\n"
+ "\tbl sub_80BC538\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tstrh r0, [r4]\n"
+ "\tadds r1, r0, 0\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _080BC694\n"
+ "\tcmp r1, 0x7\n"
+ "\tble _080BC65E\n"
+ "\tmovs r0, 0x7\n"
+ "_080BC65E:\n"
+ "\tstrh r0, [r4, 0x6]\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r4, 0x2]\n"
+ "\tstrh r0, [r4, 0x4]\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0x1D\n"
+ "\tmovs r3, 0x13\n"
+ "\tbl MenuZeroFillWindowRect\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_80BC7D8\n"
+ "\tldr r1, _080BC68C @ =gTasks\n"
+ "\tlsls r0, r5, 2\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, _080BC690 @ =sub_80BC824\n"
+ "\tstr r1, [r0]\n"
+ "\tb _080BC6A0\n"
+ "\t.align 2, 0\n"
+ "_080BC688: .4byte gTasks + 0x8\n"
+ "_080BC68C: .4byte gTasks\n"
+ "_080BC690: .4byte sub_80BC824\n"
+ "_080BC694:\n"
+ "\tldr r1, _080BC6A8 @ =gSecretBaseText_NoRegistry\n"
+ "\tldr r2, _080BC6AC @ =sub_80BCC54\n"
+ "\tadds r0, r5, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl DisplayItemMessageOnField\n"
+ "_080BC6A0:\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_080BC6A8: .4byte gSecretBaseText_NoRegistry\n"
+ "_080BC6AC: .4byte sub_80BCC54");
+}
+#endif