summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-07-20 14:34:18 -0400
committerscnorton <scnorton@biociphers.org>2017-07-20 14:34:18 -0400
commit071a1ff58d550078427310f695113d8d44938f31 (patch)
tree6f897d110c0fa65760466c8335b9490726c89b07
parentb2e57bc5b2c173a848e02bbe9687c0eaef72290f (diff)
Task_SecretBasePC_Registry
-rw-r--r--asm/secret_base.s86
-rw-r--r--include/decoration.h1
-rw-r--r--src/secret_base.c102
3 files changed, 103 insertions, 86 deletions
diff --git a/asm/secret_base.s b/asm/secret_base.s
index c45cc7435..e47516d57 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -6,92 +6,6 @@
.section .text_80BC1D0
- thumb_func_start SecretBasePC_Decoration
-SecretBasePC_Decoration: @ 80BC604
- push {lr}
- ldr r0, _080BC614 @ =Task_SecretBasePC_Decoration
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BC614: .4byte Task_SecretBasePC_Decoration
- thumb_func_end SecretBasePC_Decoration
-
- thumb_func_start SecretBasePC_Registry
-SecretBasePC_Registry: @ 80BC618
- push {lr}
- ldr r0, _080BC628 @ =Task_SecretBasePC_Registry
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BC628: .4byte Task_SecretBasePC_Registry
- thumb_func_end SecretBasePC_Registry
-
- thumb_func_start Task_SecretBasePC_Registry
-Task_SecretBasePC_Registry: @ 80BC62C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl ScriptContext2_Enable
- bl sub_80F944C
- bl LoadScrollIndicatorPalette
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080BC688 @ =gTasks + 0x8
- adds r4, r0, r1
- bl sub_80BC538
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- adds r1, r0, 0
- cmp r1, 0
- beq _080BC694
- cmp r1, 0x7
- ble _080BC65E
- movs r0, 0x7
-_080BC65E:
- strh r0, [r4, 0x6]
- movs r0, 0
- strh r0, [r4, 0x2]
- strh r0, [r4, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- adds r0, r5, 0
- bl sub_80BC7D8
- ldr r1, _080BC68C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BC690 @ =sub_80BC824
- str r1, [r0]
- b _080BC6A0
- .align 2, 0
-_080BC688: .4byte gTasks + 0x8
-_080BC68C: .4byte gTasks
-_080BC690: .4byte sub_80BC824
-_080BC694:
- ldr r1, _080BC6A8 @ =gSecretBaseText_NoRegistry
- ldr r2, _080BC6AC @ =sub_80BCC54
- adds r0, r5, 0
- movs r3, 0
- bl DisplayItemMessageOnField
-_080BC6A0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC6A8: .4byte gSecretBaseText_NoRegistry
-_080BC6AC: .4byte sub_80BCC54
- thumb_func_end Task_SecretBasePC_Registry
-
thumb_func_start sub_80BC6B0
sub_80BC6B0: @ 80BC6B0
push {r4-r7,lr}
diff --git a/include/decoration.h b/include/decoration.h
index 7a6d8ef5a..376eba7d7 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -301,6 +301,7 @@ extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); // src/men
extern void BuyMenuFreeMemory(void); // src/menu_helpers
extern void sub_8109DAC(u8); // src/trader
extern void ReshowPlayerPC(u8); // src/player_pc
+void Task_SecretBasePC_Decoration(u8);
void sub_80FE2B4(void);
void Task_DecorationPCProcessMenuInput(u8);
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