summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/contest_link_80C2020.c139
1 files changed, 137 insertions, 2 deletions
diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c
index 1fe6e8cb6..dd09e2465 100644
--- a/src/battle/contest_link_80C2020.c
+++ b/src/battle/contest_link_80C2020.c
@@ -14,13 +14,21 @@
#include "battle.h"
#include "contest.h"
#include "link.h"
+#include "contest_link_80C857C.h"
+#include "contest_link_80C2020.h"
#define ABS(x) ((x) < 0 ? -(x) : (x))
struct UnkEwramStruct18000 {
- u8 filler_00[2];
+ u8 unk_00;
+ u8 filler_01[1];
u8 unk_02;
- u8 filler_03[0x15];
+ u8 filler_03[1];
+ u8 unk_04;
+ u8 filler_05[5];
+ u8 unk_0a;
+ u8 filler_0b[9];
+ u8 unk_14;
};
struct UnkEwramStruct18018 {
@@ -34,8 +42,19 @@ void sub_80C2430(void);
void sub_80C2448(void);
void sub_80C24F4(u8 taskId);
void sub_80C255C(u8 taskId);
+void sub_80C25A4(u8 taskId);
+void sub_80C25C0(u8 taskId);
void sub_80C2600(u8 taskId);
+void sub_80C26E4(u8 taskId);
+void sub_80C2770(u8 taskId);
+void sub_80C27EC(u8 taskId);
void sub_80C2F28(u8 taskId);
+void sub_80C2F64(u8 taskId);
+void sub_80C3158(const u8 *string, u8 spriteId);
+u16 sub_80C34AC(const u8 *string);
+void sub_80C34CC(s16 data4, s16 pos0y, u16 data5, s16 data6);
+void sub_80C3520(u16 a0);
+void sub_80C3764(void);
void sub_80C37E4(void);
void sub_80C310C(void);
void sub_80C30D4(u8 a0, u8 a1);
@@ -44,6 +63,7 @@ void sub_80C3698(const u8 *string);
void sub_80C3F00(void);
u8 sub_80C3990(u8 a0, u8 a1);
s8 sub_80C39E4(u8 a0, u8 a1);
+void sub_80C40D4(u8 a0, u8 a1);
extern const u8 gUnknown_083D17DC[];
extern const u8 gUnknown_083D17E0[];
@@ -235,3 +255,118 @@ void sub_80C24F4(u8 taskId)
}
}
}
+
+void sub_80C255C(u8 taskId)
+{
+ if (gReceivedRemoteLinkPlayers && GetLinkPlayerCount() == MAX_LINK_PLAYERS)
+ {
+ CreateTask(sub_80C25A4, 0);
+ gTasks[taskId].func = TaskDummy;
+ }
+}
+
+void sub_80C25A4(u8 taskId)
+{
+ SetTaskFuncWithFollowupFunc(taskId, sub_80C89DC, sub_80C25C0);
+}
+
+void sub_80C25C0(u8 taskId)
+{
+ if (sub_8007ECC())
+ {
+ DestroyTask(taskId);
+ gTasks[eContestLink80C2020Struct2018000.unk_02].func = sub_80C2600;
+ sub_80C3764();
+ }
+}
+
+void sub_80C2600(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ CreateTask(sub_80C2F64, 20);
+ sub_80C3158(gContestText_AnnounceResults, eContestLink80C2020Struct2018000.unk_00);
+ sub_80C34CC(sub_80C34AC(gContestText_AnnounceResults), 0x90, 0x78, 0x440);
+ gTasks[taskId].data[0]++;
+ }
+ else if (gTasks[taskId].data[0] == 1)
+ {
+ if (eContestLink80C2020Struct2018000.unk_04 == 0)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ }
+ else if (gTasks[taskId].data[0] == 2)
+ {
+ if (++gTasks[taskId].data[1] == 0x15)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ }
+ else if (gTasks[taskId].data[0] == 3)
+ {
+ sub_80C3158(gContestText_PreliminaryResults, eContestLink80C2020Struct2018000.unk_00);
+ sub_80C34CC(sub_80C34AC(gContestText_PreliminaryResults), 0x90, 0xffff, 0x440);
+ gTasks[taskId].data[0]++;
+ }
+ else if (gTasks[taskId].data[0] == 4)
+ {
+ if (eContestLink80C2020Struct2018000.unk_04 == 2)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80C26E4;
+ }
+ }
+}
+
+void sub_80C26E4(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (eContestLink80C2020Struct2018000.unk_0a == 0)
+ {
+ sub_80C40D4(0, gTasks[taskId].data[2]++);
+ if (eContestLink80C2020Struct2018000.unk_14 == 0)
+ {
+ gTasks[taskId].data[0] = 2;
+ }
+ else
+ {
+ gTasks[taskId].data[0]++;
+ }
+ }
+ break;
+ case 1:
+ if (eContestLink80C2020Struct2018000.unk_14 == 0)
+ {
+ gTasks[taskId].data[0] = 0;
+ }
+ break;
+ case 2:
+ sub_80C3520(0x440);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_80C2770;
+ break;
+ }
+}
+
+void sub_80C2770(u8 taskId)
+{
+ if (eContestLink80C2020Struct2018000.unk_04 == 0)
+ {
+ if (++gTasks[taskId].data[1] == 21)
+ {
+ gTasks[taskId].data[1] = 0;
+ sub_80C3158(gContestText_Round2Results, eContestLink80C2020Struct2018000.unk_00);
+ sub_80C34CC(sub_80C34AC(gContestText_Round2Results), 0x90, 0xffff, 0x440);
+ }
+ }
+ else if (eContestLink80C2020Struct2018000.unk_04 == 2)
+ {
+ gTasks[taskId].func = sub_80C27EC;
+ }
+}