summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-08 14:14:51 -0400
committerhuderlem <huderlem@gmail.com>2019-04-08 17:33:35 -0500
commitfd4aa1ba8e80402b726501a91970cfd88a53f468 (patch)
treea2cb248141a8ef9ea35c1b7905e39d42f7d5b620
parent0c690920ab161e32375947ab07667ed6463468cf (diff)
Finish contest_link_80C2020
-rw-r--r--asm/contest_link_80C2020.s232
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle/contest_link_80C2020.c83
3 files changed, 83 insertions, 233 deletions
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s
deleted file mode 100644
index 22f916120..000000000
--- a/asm/contest_link_80C2020.s
+++ /dev/null
@@ -1,232 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80C4A44
-sub_80C4A44: @ 80C4A44
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- ldr r0, _080C4AA0 @ =gSpecialVar_0x8004
- mov r8, r0
- add r1, sp, 0x4
- mov r12, r1
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r4, r0, 3
- ldr r6, _080C4AA4 @ =gTasks + 0x8
- adds r7, r1, 0
-_080C4A64:
- mov r0, sp
- adds r2, r0, r3
- adds r1, r3, 0x1
- lsls r0, r1, 1
- adds r0, r4
- adds r0, r6
- ldrh r0, [r0]
- strb r0, [r2]
- lsls r1, 24
- lsrs r3, r1, 24
- cmp r3, 0x3
- bls _080C4A64
- movs r3, 0
- mov r2, sp
-_080C4A80:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bhi _080C4A96
- mov r0, sp
- adds r1, r0, r3
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- beq _080C4A80
-_080C4A96:
- cmp r3, 0x4
- bne _080C4AA8
- movs r0, 0
- b _080C4AAA
- .align 2, 0
-_080C4AA0: .4byte gSpecialVar_0x8004
-_080C4AA4: .4byte gTasks + 0x8
-_080C4AA8:
- movs r0, 0x1
-_080C4AAA:
- mov r1, r8
- strh r0, [r1]
- movs r3, 0
- mov r4, r12
- adds r0, r7, r5
- lsls r2, r0, 3
- ldr r6, _080C4AF8 @ =gTasks + 0x8
-_080C4AB8:
- adds r1, r4, r3
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r2
- adds r0, r6
- ldrh r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080C4AB8
- mov r0, r12
- bl sub_80C4B34
- ldr r1, _080C4AFC @ =gUnknown_0203869B
- strb r0, [r1]
- ldr r0, _080C4B00 @ =gSpecialVar_ContestCategory
- ldrb r0, [r0]
- bl sub_80AE82C
- ldr r1, _080C4B04 @ =sub_80C8EBC
- ldr r2, _080C4B08 @ =sub_80C4B0C
- adds r0, r5, 0
- bl SetTaskFuncWithFollowupFunc
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4AF8: .4byte gTasks + 0x8
-_080C4AFC: .4byte gUnknown_0203869B
-_080C4B00: .4byte gSpecialVar_ContestCategory
-_080C4B04: .4byte sub_80C8EBC
-_080C4B08: .4byte sub_80C4B0C
- thumb_func_end sub_80C4A44
-
- thumb_func_start sub_80C4B0C
-sub_80C4B0C: @ 80C4B0C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl sub_80B0F28
- ldr r1, _080C4B2C @ =sub_80C8F34
- ldr r2, _080C4B30 @ =sub_80C4B5C
- adds r0, r4, 0
- bl SetTaskFuncWithFollowupFunc
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4B2C: .4byte sub_80C8F34
-_080C4B30: .4byte sub_80C4B5C
- thumb_func_end sub_80C4B0C
-
- thumb_func_start sub_80C4B34
-sub_80C4B34: @ 80C4B34
- push {r4,lr}
- adds r3, r0, 0
- movs r4, 0
- movs r2, 0x1
-_080C4B3C:
- adds r0, r3, r4
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _080C4B4C
- lsls r0, r2, 24
- lsrs r4, r0, 24
-_080C4B4C:
- adds r2, 0x1
- cmp r2, 0x3
- ble _080C4B3C
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C4B34
-
- thumb_func_start sub_80C4B5C
-sub_80C4B5C: @ 80C4B5C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080C4B84 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _080C4B90
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _080C4B9E
- ldr r0, _080C4B88 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080C4B8C @ =sub_80C4BA4
- str r0, [r1]
- b _080C4B9E
- .align 2, 0
-_080C4B84: .4byte gSpecialVar_0x8004
-_080C4B88: .4byte gTasks
-_080C4B8C: .4byte sub_80C4BA4
-_080C4B90:
- adds r0, r4, 0
- bl DestroyTask
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
-_080C4B9E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80C4B5C
-
- thumb_func_start sub_80C4BA4
-sub_80C4BA4: @ 80C4BA4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_800832C
- ldr r1, _080C4BC4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080C4BC8 @ =sub_80C4BCC
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4BC4: .4byte gTasks
-_080C4BC8: .4byte sub_80C4BCC
- thumb_func_end sub_80C4BA4
-
- thumb_func_start sub_80C4BCC
-sub_80C4BCC: @ 80C4BCC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080C4BEC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080C4BE8
- adds r0, r1, 0
- bl DestroyTask
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
-_080C4BE8:
- pop {r0}
- bx r0
- .align 2, 0
-_080C4BEC: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_80C4BCC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index eba7eb57f..cc9b22ffe 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -159,7 +159,6 @@ SECTIONS {
src/secret_base.o(.text);
src/tv.o(.text);
src/battle/contest_link_80C2020.o(.text);
- asm/contest_link_80C2020.o(.text);
src/script_pokemon_util_80C4BF0.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c
index 14424a4bf..38c1d30d2 100644
--- a/src/battle/contest_link_80C2020.c
+++ b/src/battle/contest_link_80C2020.c
@@ -122,6 +122,10 @@ void sub_80C49F0(u8 taskId);
void sub_80C4A0C(u8 taskId);
void sub_80C4A28(u8 taskId);
void sub_80C4A44(u8 taskId);
+void sub_80C4B0C(u8 taskId);
+void sub_80C4B5C(u8 taskId);
+void sub_80C4BA4(u8 taskId);
+void sub_80C4BCC(u8 taskId);
const u16 gUnknown_083D1624[] = INCBIN_U16("graphics/unknown/unknown_3D1624/0.4bpp");
const u16 gUnknown_083D1644[] = INCBIN_U16("graphics/unknown/unknown_3D1624/1.4bpp");
@@ -2821,3 +2825,82 @@ void sub_80C4A28(u8 taskId)
{
SetTaskFuncWithFollowupFunc(taskId, sub_80C8938, sub_80C4A44);
}
+
+void sub_80C4A44(u8 taskId)
+{
+ u8 i;
+ u8 sp0[4];
+ u8 sp4[4];
+
+ for (i = 0; i < 4; i++)
+ sp0[i] = gTasks[taskId].data[i + 1];
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sp0[0] != sp0[i])
+ break;
+ }
+
+ if (i == 4)
+ gSpecialVar_0x8004 = 0;
+ else
+ gSpecialVar_0x8004 = 1;
+
+ for (i = 0; i < 4; i++)
+ sp4[i] = gTasks[taskId].data[i + 5];
+
+ gUnknown_0203869B = sub_80C4B34(sp4);
+ sub_80AE82C(gSpecialVar_ContestCategory);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80C8EBC, sub_80C4B0C);
+}
+
+void sub_80C4B0C(u8 taskId)
+{
+ sub_80B0F28(0);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80C8F34, sub_80C4B5C);
+}
+
+u8 sub_80C4B34(u8 * a0)
+{
+ s32 i;
+ u8 result = 0;
+
+ for (i = 1; i < 4; i++)
+ {
+ if (a0[result] < a0[i])
+ result = i;
+ }
+
+ return result;
+}
+
+void sub_80C4B5C(u8 taskId)
+{
+ if (gSpecialVar_0x8004 == 1)
+ {
+ if (IsLinkTaskFinished())
+ gTasks[taskId].func = sub_80C4BA4;
+ }
+ else
+ {
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ }
+}
+
+void sub_80C4BA4(u8 taskId)
+{
+ sub_800832C();
+ gTasks[taskId].func = sub_80C4BCC;
+}
+
+void sub_80C4BCC(u8 taskId)
+{
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ }
+}