summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest_link_80C857C.s130
-rw-r--r--include/contest.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle/contest_link_80C857C.c60
-rw-r--r--src/contest_ai.c1
-rw-r--r--src/debug/matsuda_debug_menu.c1
-rw-r--r--src/script_pokemon_util_80C4BF0.c1
7 files changed, 56 insertions, 141 deletions
diff --git a/asm/contest_link_80C857C.s b/asm/contest_link_80C857C.s
deleted file mode 100644
index 27cdfd2a3..000000000
--- a/asm/contest_link_80C857C.s
+++ /dev/null
@@ -1,130 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80C8EBC
-sub_80C8EBC: @ 80C8EBC
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C8EE4 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C8EE8_B
- cmp r0, 0x1
- beq _080C8F00
- movs r0, 0
- strh r0, [r4, 0x8]
- adds r0, r2, 0
- bl SwitchTaskToFollowupFunc
- b _080C8F22
- .align 2, 0
-_080C8EE4: .4byte gTasks
-_080C8EE8_B:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8F22
- ldr r0, _080C8EFC @ =gUnknown_02038670
- movs r1, 0x8
- bl sub_80C857C
- b _080C8F1C
- .align 2, 0
-_080C8EFC: .4byte gUnknown_02038670
-_080C8F00:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8F22
- ldr r0, _080C8F28 @ =gUnknown_02038670
- ldr r1, _080C8F2C @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8F30 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x8
- bl memcpy
-_080C8F1C:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080C8F22:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C8F28: .4byte gUnknown_02038670
-_080C8F2C: .4byte gUnknown_0203869B
-_080C8F30: .4byte gBlockRecvBuffer
- thumb_func_end sub_80C8EBC
-
- thumb_func_start sub_80C8F34
-sub_80C8F34: @ 80C8F34
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C8F5C @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C8F60
- cmp r0, 0x1
- beq _080C8F78
- movs r0, 0
- strh r0, [r4, 0x8]
- adds r0, r2, 0
- bl SwitchTaskToFollowupFunc
- b _080C8F9A
- .align 2, 0
-_080C8F5C: .4byte gTasks
-_080C8F60:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8F9A
- ldr r0, _080C8F74 @ =gUnknown_02038696
- movs r1, 0x4
- bl sub_80C857C
- b _080C8F94
- .align 2, 0
-_080C8F74: .4byte gUnknown_02038696
-_080C8F78:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8F9A
- ldr r0, _080C8FA0 @ =gUnknown_02038696
- ldr r1, _080C8FA4 @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8FA8 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x4
- bl memcpy
-_080C8F94:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080C8F9A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C8FA0: .4byte gUnknown_02038696
-_080C8FA4: .4byte gUnknown_0203869B
-_080C8FA8: .4byte gBlockRecvBuffer
- thumb_func_end sub_80C8F34
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/contest.h b/include/contest.h
index f8fceae79..b0bdd7f61 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -274,6 +274,8 @@ struct UnknownContestStruct6
extern u8 gContestPlayerMonIndex;
extern u8 gIsLinkContest;
extern u32 gContestRngValue;
+extern u8 gUnknown_02038696[4];
+extern s16 gUnknown_02038670[4];
extern s16 gUnknown_02038678[4];
extern s16 gUnknown_02038680[4];
extern u16 gUnknown_02038688[4];
diff --git a/ld_script.txt b/ld_script.txt
index 411d282d1..fc13444f1 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -170,8 +170,6 @@ SECTIONS {
src/field/rotating_gate.o(.text);
src/field/safari_zone.o(.text);
src/battle/contest_link_80C857C.o(.text);
- asm/contest_link_80C857C.o(.text);
- src/battle/contest_link_80C857C.o(.text_de);
src/field/item_use.o(.text);
src/battle/anim/powder.o(.text);
src/battle/anim/orbs.o(.text);
diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c
index f505fa658..e85350aea 100644
--- a/src/battle/contest_link_80C857C.c
+++ b/src/battle/contest_link_80C857C.c
@@ -228,11 +228,11 @@ void sub_80C8734(u8 taskId)
de_sub_80C9274(FALSE);
#endif
sub_8007E9C(2);
-#if GERMAN
- gTasks[taskId].data[0] = 1;
- }
-#else
+#if ENGLISH
gTasks[taskId].data[0]++;
+#elif GERMAN
+ gTasks[taskId].data[0] = 1;
+ }
#endif
}
}
@@ -638,7 +638,7 @@ void sub_80C8E1C(u8 taskId)
sub_8007E9C(2);
#if ENGLISH
gTasks[taskId].data[0]++;
-#else
+#elif GERMAN
gTasks[taskId].data[0] = 1;
}
#endif
@@ -674,7 +674,55 @@ void sub_80C8E1C(u8 taskId)
}
}
-asm(".section .text_de");
+void sub_80C8EBC(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ case 0:
+ if (sub_8007ECC())
+ {
+ sub_80C857C(gUnknown_02038670, sizeof gUnknown_02038670);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (sub_80C85D8())
+ {
+ memcpy(gUnknown_02038670, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038670);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ }
+}
+
+void sub_80C8F34(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ case 0:
+ if (sub_8007ECC())
+ {
+ sub_80C857C(gUnknown_02038696, sizeof gUnknown_02038696);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (sub_80C85D8())
+ {
+ memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ }
+}
#if GERMAN
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 66b387270..1e249083b 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -8,7 +8,6 @@ extern u8 AreMovesContestCombo(u16, u16);
extern bool8 sub_80B214C(u8);
extern bool8 Contest_IsMonsTurnDisabled(u8);
-extern s16 gUnknown_02038670[];
extern u16 gSpecialVar_ContestCategory;
extern u8 *gAIScriptPtr;
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 15d28df09..efd952ef7 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -18,7 +18,6 @@
#include "ewram.h"
extern u8 gUnknown_0203856C;
-extern s16 gUnknown_02038670[];
extern u8 gUnknown_02038694;
extern u16 gSpecialVar_ContestCategory;
extern u16 gSpecialVar_ContestRank;
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
index 513f6ce2a..02e66d313 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -39,7 +39,6 @@ extern u16 gSpecialVar_ContestRank;
extern u8 gUnknown_02038694;
extern u8 gUnknown_0203856C;
-extern s16 gUnknown_02038670[];
void SetContestTrainerGfxIds(void)
{