summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/contest.c376
-rw-r--r--src/contest_effect.c4
-rw-r--r--src/contest_link_80F57C4.c2
-rw-r--r--src/contest_link_80FC4F4.c16
-rw-r--r--src/contest_link_81D9DE4.c2
5 files changed, 218 insertions, 182 deletions
diff --git a/src/contest.c b/src/contest.c
index 50a98fedc..57c8b46d6 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -200,7 +200,7 @@ EWRAM_DATA s16 gUnknown_02039F18[4] = {0};
EWRAM_DATA u8 gContestFinalStandings[4] = {0};
EWRAM_DATA u8 gContestMonPartyIndex = 0;
EWRAM_DATA u8 gContestPlayerMonIndex = 0;
-EWRAM_DATA u8 gUnknown_02039F26[4] = {0};
+EWRAM_DATA u8 gContestantTurnOrder[4] = {0};
EWRAM_DATA u8 gIsLinkContest = 0;
// Bit 0: Is a link contest
// Bit 1: Link contest uses wireless adapter
@@ -901,7 +901,7 @@ void LoadContestBgAfterMoveAnim(void)
{
u32 var = 5 + i;
- LoadPalette(eUnknownHeap1A004.unk18004[var], 16 * (5 + gUnknown_02039F26[i]), 16 * sizeof(u16));
+ LoadPalette(eUnknownHeap1A004.unk18004[var], 16 * (5 + gContestantTurnOrder[i]), 16 * sizeof(u16));
}
}
@@ -943,51 +943,53 @@ static void sub_80D782C(void)
FillPalette(RGB(31, 17, 31), 0xF3, 2);
}
-static void sub_80D787C(void)
+static void InitContestResources(void)
{
s32 i;
eContest = (struct Contest){};
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- eContest.unk19206[i] = 0xFF;
+ eContest.unused2[i] = 0xFF;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_4[i] = (struct ContestantStatus){};
+ eContestantStatus[i] = (struct ContestantStatus){};
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_4[i].ranking = 0;
- gContestResources->field_4[i].effectStringId = CONTEST_STRING_NONE;
- gContestResources->field_4[i].effectStringId2 = CONTEST_STRING_NONE;
+ eContestantStatus[i].ranking = 0;
+ eContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
+ eContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
}
- *gContestResources->field_8 = (struct UnknownContestStruct7){};
- *gContestResources->field_C = (struct ContestAIInfo){};
+ eContestResources8 = (struct UnknownContestStruct7){};
+ eContestAI = (struct ContestAIInfo){};
*gContestResources->field_10 = (struct UnknownContestStruct5){};
- memset(gContestResources->field_14, 0, 4 * sizeof(struct UnknownContestStruct4));
+ memset(gContestResources->field_14, 0, CONTESTANT_COUNT * sizeof(struct UnknownContestStruct4));
+
if (!(gIsLinkContest & 1))
- sub_80DCE58(0);
- for (i = 0; i < 4; i++)
+ SortContestants(FALSE);
+
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_4[i].nextTurnOrder = 0xFF;
- eContest.unk19218[i] = gUnknown_02039F26[i];
+ eContestantStatus[i].nextTurnOrder = 0xFF;
+ eContest.unk19218[i] = gContestantTurnOrder[i];
}
sub_80DD590();
- memset(gContestResources->field_1c, 0, sizeof(*gContestResources->field_1c) * 4);
+ memset(gContestResources->field_1c, 0, sizeof(*gContestResources->field_1c) * CONTESTANT_COUNT);
}
-static void sub_80D7988(void)
+static void AllocContestResources(void)
{
gContestResources = AllocZeroed(sizeof(struct ContestResources));
gContestResources->contest = AllocZeroed(sizeof(struct Contest));
- gContestResources->field_4 = AllocZeroed(sizeof(struct ContestantStatus) * 4);
+ gContestResources->status = AllocZeroed(sizeof(struct ContestantStatus) * CONTESTANT_COUNT);
gContestResources->field_8 = AllocZeroed(sizeof(struct UnknownContestStruct7));
- gContestResources->field_C = AllocZeroed(sizeof(struct ContestAIInfo));
- gContestResources->field_10 = AllocZeroed(sizeof(struct UnknownContestStruct5) * 4);
- gContestResources->field_14 = AllocZeroed(sizeof(struct UnknownContestStruct4) * 4);
+ gContestResources->aiData = AllocZeroed(sizeof(struct ContestAIInfo));
+ gContestResources->field_10 = AllocZeroed(sizeof(struct UnknownContestStruct5) * CONTESTANT_COUNT);
+ gContestResources->field_14 = AllocZeroed(sizeof(struct UnknownContestStruct4) * CONTESTANT_COUNT);
gContestResources->field_18 = AllocZeroed(sizeof(struct ContestStruct_field_18));
- gContestResources->field_1c = AllocZeroed(sizeof(struct ContestResourcesField1C) * 4);
+ gContestResources->field_1c = AllocZeroed(sizeof(struct ContestResourcesField1C) * CONTESTANT_COUNT);
gContestResources->field_20 = AllocZeroed(sizeof(struct ContestResourcesField20));
gContestResources->field_24[0] = AllocZeroed(0x1000);
gContestResources->field_24[1] = AllocZeroed(0x1000);
@@ -1000,12 +1002,12 @@ static void sub_80D7988(void)
gUnknown_02023060 = gContestResources->field_24[1];
}
-static void sub_80D7A5C(void)
+static void FreeContestResources(void)
{
FREE_AND_SET_NULL(gContestResources->contest);
- FREE_AND_SET_NULL(gContestResources->field_4);
+ FREE_AND_SET_NULL(gContestResources->status);
FREE_AND_SET_NULL(gContestResources->field_8);
- FREE_AND_SET_NULL(gContestResources->field_C);
+ FREE_AND_SET_NULL(gContestResources->aiData);
FREE_AND_SET_NULL(gContestResources->field_10);
FREE_AND_SET_NULL(gContestResources->field_14);
FREE_AND_SET_NULL(gContestResources->field_18);
@@ -1029,7 +1031,7 @@ void sub_80D7B24(void)
{
case 0:
sContestBgCopyFlags = 0;
- sub_80D7988();
+ AllocContestResources();
AllocateMonSpritesGfx();
FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed);
gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x4000);
@@ -1046,7 +1048,7 @@ void sub_80D7B24(void)
gReservedSpritePaletteCount = 4;
eUnknownHeap1A000 = 0;
ClearBattleMonForms();
- sub_80D787C();
+ InitContestResources();
gMain.state++;
break;
case 1:
@@ -1376,15 +1378,15 @@ static void sub_80D8490(u8 taskId)
u16 move = gContestMons[gContestPlayerMonIndex].moves[i];
u8 *r5 = sp8;
- if (gContestResources->field_4[gContestPlayerMonIndex].prevMove != MOVE_NONE
+ if (eContestantStatus[gContestPlayerMonIndex].prevMove != MOVE_NONE
&& sub_80DE1E8(gContestPlayerMonIndex)
- && AreMovesContestCombo(gContestResources->field_4[gContestPlayerMonIndex].prevMove, move) != 0
- && gContestResources->field_4[gContestPlayerMonIndex].hasJudgesAttention)
+ && AreMovesContestCombo(eContestantStatus[gContestPlayerMonIndex].prevMove, move) != 0
+ && eContestantStatus[gContestPlayerMonIndex].hasJudgesAttention)
{
r5 = StringCopy(sp8, gText_ColorLightShadowDarkGrey);
}
else if (move != 0
- && gContestResources->field_4[gContestPlayerMonIndex].prevMove == move
+ && eContestantStatus[gContestPlayerMonIndex].prevMove == move
&& gContestMoves[move].effect != CONTEST_EFFECT_REPETITION_NOT_BORING)
{
// Gray the text because it is a repeated move
@@ -1483,7 +1485,7 @@ static void sub_80D8894(u8 taskId)
u16 var = GetChosenMove(gContestPlayerMonIndex);
u8 taskId2;
- gContestResources->field_4[gContestPlayerMonIndex].currMove = var;
+ eContestantStatus[gContestPlayerMonIndex].currMove = var;
taskId2 = CreateTask(sub_80FC9F8, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FC9F8, sub_80D892C);
gTasks[taskId].func = TaskDummy1;
@@ -1559,7 +1561,7 @@ static void sub_80D8A88(u8 taskId)
for (i = 0; i + gNumLinkContestPlayers < 4; i++)
{
- gContestResources->field_4[gNumLinkContestPlayers + i].currMove = GetChosenMove(gNumLinkContestPlayers + i);
+ eContestantStatus[gNumLinkContestPlayers + i].currMove = GetChosenMove(gNumLinkContestPlayers + i);
}
}
gTasks[taskId].data[0] = 0;
@@ -1607,8 +1609,8 @@ static void sub_80D8B38(u8 taskId)
case 2:
sub_80DF080(r6);
sub_80DF750();
- if (gContestResources->field_4[r6].numTurnsSkipped != 0
- || gContestResources->field_4[r6].noMoreTurns)
+ if (eContestantStatus[r6].numTurnsSkipped != 0
+ || eContestantStatus[r6].noMoreTurns)
{
gTasks[taskId].data[0] = 31;
}
@@ -1645,7 +1647,7 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 5:
- if (gContestResources->field_4[r6].nervous)
+ if (eContestantStatus[r6].nervous)
{
gTasks[taskId].data[0] = 33;
}
@@ -1653,10 +1655,10 @@ static void sub_80D8B38(u8 taskId)
{
sub_80DB89C();
StringCopy(gStringVar1, gContestMons[r6].nickname);
- if (gContestResources->field_4[r6].currMove < MOVES_COUNT)
- StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ if (eContestantStatus[r6].currMove < MOVES_COUNT)
+ StringCopy(gStringVar2, gMoveNames[eContestantStatus[r6].currMove]);
else
- StringCopy(gStringVar2, gUnknown_08587F1C[gContestResources->field_4[r6].moveCategory]);
+ StringCopy(gStringVar2, gUnknown_08587F1C[eContestantStatus[r6].moveCategory]);
StringExpandPlaceholders(gStringVar4, gText_0827D55A);
Contest_StartTextPrinter(gStringVar4, 1);
gTasks[taskId].data[0] = 6;
@@ -1671,7 +1673,7 @@ static void sub_80D8B38(u8 taskId)
return;
case 7:
{
- u16 move = SanitizeMove(gContestResources->field_4[eContest.unk19215].currMove);
+ u16 move = SanitizeMove(eContestantStatus[eContest.unk19215].currMove);
sub_80DE864(eContest.unk19215);
sub_80DE9DC(eContest.unk19215);
@@ -1692,7 +1694,7 @@ static void sub_80D8B38(u8 taskId)
}
else
{
- if (!gContestResources->field_4[r6].hasJudgesAttention)
+ if (!eContestantStatus[r6].hasJudgesAttention)
sub_80DC674(r6);
sub_80DE12C();
gTasks[taskId].data[0] = 23;
@@ -1708,25 +1710,25 @@ static void sub_80D8B38(u8 taskId)
return;
case 23:
gTasks[taskId].data[1] = 0;
- if (gContestResources->field_4[r6].effectStringId != CONTEST_STRING_NONE)
+ if (eContestantStatus[r6].effectStringId != CONTEST_STRING_NONE)
{
- sub_80DD45C(r6, gContestResources->field_4[r6].effectStringId);
- gContestResources->field_4[r6].effectStringId = CONTEST_STRING_NONE;
+ sub_80DD45C(r6, eContestantStatus[r6].effectStringId);
+ eContestantStatus[r6].effectStringId = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 24;
}
else
{
- if (gContestResources->field_4[r6].effectStringId2 != CONTEST_STRING_NONE)
+ if (eContestantStatus[r6].effectStringId2 != CONTEST_STRING_NONE)
{
for (i = 0; i < 4; i++)
{
- if (i != r6 && gContestResources->field_4[i].effectStringId != CONTEST_STRING_NONE)
+ if (i != r6 && eContestantStatus[i].effectStringId != CONTEST_STRING_NONE)
break;
}
if (i == 4)
{
- sub_80DD45C(r6, gContestResources->field_4[r6].effectStringId2);
- gContestResources->field_4[r6].effectStringId2 = CONTEST_STRING_NONE;
+ sub_80DD45C(r6, eContestantStatus[r6].effectStringId2);
+ eContestantStatus[r6].effectStringId2 = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 24;
}
else
@@ -1745,15 +1747,15 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 23;
return;
case 48:
- if (gContestResources->field_4[r6].turnOrderModAction == 1)
+ if (eContestantStatus[r6].turnOrderModAction == 1)
{
sub_80DD720(5);
}
- else if (gContestResources->field_4[r6].turnOrderModAction == 2)
+ else if (eContestantStatus[r6].turnOrderModAction == 2)
{
sub_80DD720(6);
}
- else if (gContestResources->field_4[r6].turnOrderModAction == 3)
+ else if (eContestantStatus[r6].turnOrderModAction == 3)
{
sub_80DD720(7);
}
@@ -1773,7 +1775,7 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 12;
return;
case 12:
- sub_80DC028(0, gContestResources->field_4[r6].appeal2, r6);
+ sub_80DC028(0, eContestantStatus[r6].appeal2, r6);
gTasks[taskId].data[0] = 13;
return;
case 13:
@@ -1781,7 +1783,7 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 35;
return;
case 35:
- if (gContestResources->field_4[r6].conditionMod == 1)
+ if (eContestantStatus[r6].conditionMod == 1)
sub_80DD720(8);
gTasks[taskId].data[0] = 36;
return;
@@ -1826,8 +1828,8 @@ static void sub_80D8B38(u8 taskId)
r3 = 0;
for (r2 = 0; r2 < 4; r2++)
{
- if (r2 != r6 && gUnknown_02039F26[r2] == i
- && gContestResources->field_4[r2].effectStringId != CONTEST_STRING_NONE)
+ if (r2 != r6 && gContestantTurnOrder[r2] == i
+ && eContestantStatus[r2].effectStringId != CONTEST_STRING_NONE)
{
r3 = 1;
break;
@@ -1838,9 +1840,9 @@ static void sub_80D8B38(u8 taskId)
}
if (r3)
{
- gTasks[taskId].data[1] = gUnknown_02039F26[r2];
- sub_80DD45C(r2, gContestResources->field_4[r2].effectStringId);
- gContestResources->field_4[r2].effectStringId = CONTEST_STRING_NONE;
+ gTasks[taskId].data[1] = gContestantTurnOrder[r2];
+ sub_80DD45C(r2, eContestantStatus[r2].effectStringId);
+ eContestantStatus[r2].effectStringId = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 27;
}
else
@@ -1857,19 +1859,19 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 28;
return;
case 28:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
- sub_80DC028(gContestResources->field_4[i].appeal2 + gContestResources->field_4[i].jam, -gContestResources->field_4[i].jam, i);
+ sub_80DC028(eContestantStatus[i].appeal2 + eContestantStatus[i].jam, -eContestantStatus[i].jam, i);
gTasks[taskId].data[0] = 29;
return;
case 29:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
if (!gContestResources->field_14[i].unk2_2)
gTasks[taskId].data[0] = 39;
return;
case 39:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
if (sub_80DB5B8(i, 1))
{
@@ -1891,17 +1893,17 @@ static void sub_80D8B38(u8 taskId)
case 30:
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039F26[i] == gTasks[taskId].data[1])
+ if (gContestantTurnOrder[i] == gTasks[taskId].data[1])
break;
}
if (sub_80DB798(i))
PlaySE(SE_C_PASI);
else
PlaySE(SE_C_SYU);
- if (gContestResources->field_4[i].judgesAttentionWasRemoved)
+ if (eContestantStatus[i].judgesAttentionWasRemoved)
{
sub_80DC674(i);
- gContestResources->field_4[i].judgesAttentionWasRemoved = 0;
+ eContestantStatus[i].judgesAttentionWasRemoved = 0;
}
gTasks[taskId].data[1]++;
gTasks[taskId].data[0] = 26;
@@ -1910,8 +1912,8 @@ static void sub_80D8B38(u8 taskId)
if (gTasks[taskId].data[10]++ > 9)
{
gTasks[taskId].data[10] = 0;
- if (gContestResources->field_4[r6].numTurnsSkipped != 0
- || gContestResources->field_4[r6].turnSkipped)
+ if (eContestantStatus[r6].numTurnsSkipped != 0
+ || eContestantStatus[r6].turnSkipped)
{
sub_80DB89C();
StringCopy(gStringVar1, gContestMons[r6].nickname);
@@ -1924,15 +1926,15 @@ static void sub_80D8B38(u8 taskId)
case 52:
if (!Contest_RunTextPrinters())
{
- if (!gContestResources->field_4[r6].unk15_6)
+ if (!eContestantStatus[r6].unk15_6)
gTasks[taskId].data[0] = 17;
else
gTasks[taskId].data[0] = 14;
}
return;
case 14:
- r3 = gContestResources->field_4[r6].unk16;
- if (gContestResources->field_4[r6].unk16 != 0)
+ r3 = eContestantStatus[r6].unk16;
+ if (eContestantStatus[r6].unk16 != 0)
{
sub_80DB89C();
if (r3 == 1)
@@ -1968,13 +1970,13 @@ static void sub_80D8B38(u8 taskId)
{
if (++gTasks[taskId].data[10] > 50)
{
- if (!gContestResources->field_4[r6].hasJudgesAttention)
+ if (!eContestantStatus[r6].hasJudgesAttention)
{
sub_80DC028(
- gContestResources->field_4[r6].appeal2,
- gContestResources->field_4[r6].unk17,
+ eContestantStatus[r6].appeal2,
+ eContestantStatus[r6].unk17,
r6);
- gContestResources->field_4[r6].appeal2 += gContestResources->field_4[r6].unk17;
+ eContestantStatus[r6].appeal2 += eContestantStatus[r6].unk17;
}
gTasks[taskId].data[0] = 16;
}
@@ -1988,7 +1990,7 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 17:
- if (gContestResources->field_4[r6].disappointedRepeat)
+ if (eContestantStatus[r6].disappointedRepeat)
{
sub_80DB89C();
StringCopy(gStringVar1, gContestMons[r6].nickname);
@@ -2010,8 +2012,8 @@ static void sub_80D8B38(u8 taskId)
case 19:
if (!Contest_RunTextPrinters())
{
- sub_80DC028(gContestResources->field_4[r6].appeal2, -gContestResources->field_4[r6].unk18, r6);
- gContestResources->field_4[r6].appeal2 -= gContestResources->field_4[r6].unk18;
+ sub_80DC028(eContestantStatus[r6].appeal2, -eContestantStatus[r6].unk18, r6);
+ eContestantStatus[r6].appeal2 -= eContestantStatus[r6].unk18;
gTasks[taskId].data[0] = 18;
}
return;
@@ -2032,18 +2034,18 @@ static void sub_80D8B38(u8 taskId)
else
{
r3 = gContestResources->field_10->bits_0;
- if (gContestResources->field_4[r6].overrideCategoryExcitementMod)
+ if (eContestantStatus[r6].overrideCategoryExcitementMod)
{
r3 = 1;
- StringCopy(gStringVar3, gMoveNames[gContestResources->field_4[r6].currMove]);
+ StringCopy(gStringVar3, gMoveNames[eContestantStatus[r6].currMove]);
}
else
{
- StringCopy(gStringVar3, gUnknown_08587F08[gContestMoves[gContestResources->field_4[r6].currMove].contestCategory]);
+ StringCopy(gStringVar3, gUnknown_08587F08[gContestMoves[eContestantStatus[r6].currMove].contestCategory]);
}
if (r3 > 0)
{
- if (gContestResources->field_4[r6].disappointedRepeat)
+ if (eContestantStatus[r6].disappointedRepeat)
r3 = 0;
}
sub_80DB89C();
@@ -2134,8 +2136,8 @@ static void sub_80D8B38(u8 taskId)
if (gTasks[taskId].data[11]++ > 29)
{
gTasks[taskId].data[11] = 0;
- sub_80DC028(gContestResources->field_4[r6].appeal2, gContestResources->field_10->unk2, r6);
- gContestResources->field_4[r6].appeal2 += gContestResources->field_10->unk2;
+ sub_80DC028(eContestantStatus[r6].appeal2, gContestResources->field_10->unk2, r6);
+ eContestantStatus[r6].appeal2 += gContestResources->field_10->unk2;
gTasks[taskId].data[10]++;
}
}
@@ -2171,7 +2173,7 @@ static void sub_80D8B38(u8 taskId)
sub_80DB89C();
StringCopy(gStringVar3, gContestMons[gContestResources->field_10->excitementFreezer].nickname);
StringCopy(gStringVar1, gContestMons[r6].nickname);
- StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ StringCopy(gStringVar2, gMoveNames[eContestantStatus[r6].currMove]);
StringExpandPlaceholders(gStringVar4, gText_0827E7EA);
Contest_StartTextPrinter(gStringVar4, 1);
gTasks[taskId].data[0] = 58;
@@ -2193,11 +2195,11 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 33:
- if (gContestResources->field_4[r6].hasJudgesAttention)
- gContestResources->field_4[r6].hasJudgesAttention = 0;
+ if (eContestantStatus[r6].hasJudgesAttention)
+ eContestantStatus[r6].hasJudgesAttention = 0;
sub_80DC9B4(r6);
StringCopy(gStringVar1, gContestMons[r6].nickname);
- StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ StringCopy(gStringVar2, gMoveNames[eContestantStatus[r6].currMove]);
StringExpandPlaceholders(gStringVar4, gText_0827E58A);
Contest_StartTextPrinter(gStringVar4, 1);
gTasks[taskId].data[0] = 34;
@@ -2577,7 +2579,7 @@ static void sub_80DA830(u8 taskId)
DestroyTask(taskId);
gFieldCallback = sub_80DA874;
FreeAllWindowBuffers();
- sub_80D7A5C();
+ FreeContestResources();
FreeMonSpritesGfx();
SetMainCallback2(CB2_ReturnToField);
}
@@ -2831,7 +2833,7 @@ static void sub_80DAEA4(void)
for (i = 0; i < 4; i++)
{
- FillWindowPixelBuffer(gUnknown_02039F26[i], PIXEL_FILL(0));
+ FillWindowPixelBuffer(gContestantTurnOrder[i], PIXEL_FILL(0));
sub_80DAF04(i);
sub_80DAF88(i);
}
@@ -2862,7 +2864,7 @@ static void sub_80DAF1C(u8 a0, u8 a1)
offset = GetStringRightAlignXOffset(7, gDisplayedStringBattle, 0x60);
if (offset > 55)
offset = 55;
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, offset, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[a0], gDisplayedStringBattle, offset, 1, 7);
}
static void sub_80DAF88(u8 a0)
@@ -2873,7 +2875,7 @@ static void sub_80DAF88(u8 a0)
static void sub_80DAFA0(u8 a0, u8 a1)
{
sub_80DAED4(gContestMons[a0].nickname, a1);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[a0], gDisplayedStringBattle, 5, 1, 7);
}
static u16 sub_80DAFE0(u8 who, u8 contestCategory)
@@ -3058,7 +3060,7 @@ static void prints_contest_move_description(u16 a)
static void sub_80DB4E0(u16 move, u8 b)
{
- u8 r7 = gUnknown_02039F26[b] * 5 + 2;
+ u8 r7 = gContestantTurnOrder[b] * 5 + 2;
if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE)
{
@@ -3078,7 +3080,7 @@ static void sub_80DB584(void)
s32 i;
for (i = 0; i < 4; i++)
- sub_80DB4E0(gContestResources->field_4[i].currMove, i);
+ sub_80DB4E0(eContestantStatus[i].currMove, i);
}
static u16 sub_80DB5B0(void)
@@ -3093,7 +3095,7 @@ static bool8 sub_80DB5B8(u8 contestantIdx, bool8 resetMod)
if (eContestantStatus[contestantIdx].conditionMod == 0)
return FALSE;
- r6 = gUnknown_02039F26[contestantIdx] * 5 + 2;
+ r6 = gContestantTurnOrder[contestantIdx] * 5 + 2;
r4 = eContestantStatus[contestantIdx].condition / 10;
if (eContestantStatus[contestantIdx].conditionMod == 1)
{
@@ -3123,7 +3125,7 @@ static void sub_80DB69C(void)
for (i = 0; i < 4; i++)
{
- u8 r4 = gUnknown_02039F26[i] * 5 + 2;
+ u8 r4 = gContestantTurnOrder[i] * 5 + 2;
u16 r5 = sub_80DB5B0();
r6 = eContestantStatus[i].condition / 10;
@@ -3162,7 +3164,7 @@ static bool8 sub_80DB798(u8 a)
{
bool8 r9 = TRUE;
u16 r8 = 0;
- u8 r7 = gUnknown_02039F26[a] * 5 + 2;
+ u8 r7 = gContestantTurnOrder[a] * 5 + 2;
if (eContestantStatus[a].resistant != 0 || eContestantStatus[a].immune != 0 || eContestantStatus[a].jamSafetyCount != 0 || eContestantStatus[a].jamReduction != 0)
r8 = sub_80DB748(0);
@@ -3272,7 +3274,7 @@ static void sub_80DB944(void)
}
}
}
- sub_80DCE58(1);
+ SortContestants(TRUE);
sub_80DD590();
}
@@ -3614,7 +3616,7 @@ static void sub_80DC0F4(u8 taskId)
r11 = 1;
r5-= 8;
}
- ContestBG_FillBoxWithTile(0, r6, r5 + 22, gUnknown_02039F26[r7] * 5 + 2 + r11, 1, 1, 17);
+ ContestBG_FillBoxWithTile(0, r6, r5 + 22, gContestantTurnOrder[r7] * 5 + 2 + r11, 1, 1, 17);
if (r1 > 0)
{
PlaySE(SE_C_GAJI);
@@ -3638,7 +3640,7 @@ static void sub_80DC2BC(void)
LoadSpriteSheet(&gUnknown_08587A74);
for (i = 0; i < 4; i++)
{
- u8 y = gUnknown_08587A6C[gUnknown_02039F26[i]];
+ u8 y = gUnknown_08587A6C[gContestantTurnOrder[i]];
gContestResources->field_14[i].unk0 = CreateSprite(&gSpriteTemplate_8587AD0, 180, y, 1);
}
@@ -3707,7 +3709,7 @@ static void sub_80DC44C(void)
s32 i;
for (i = 0; i < 4; i++)
- gSprites[gContestResources->field_14[i].unk0].pos1.y = gUnknown_08587A6C[gUnknown_02039F26[i]];
+ gSprites[gContestResources->field_14[i].unk0].pos1.y = gUnknown_08587A6C[gContestantTurnOrder[i]];
}
static void sub_80DC490(bool8 a)
@@ -3716,7 +3718,7 @@ static void sub_80DC490(bool8 a)
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039F26[i] > 1)
+ if (gContestantTurnOrder[i] > 1)
{
if (!a)
gSprites[gContestResources->field_14[i].unk0].pos1.x = 180;
@@ -3736,7 +3738,7 @@ static void sub_80DC4F0(void)
LoadCompressedSpriteSheet(&gUnknown_08587AE8[i]);
gContestResources->field_14[i].unk1 = CreateSprite(&gSpriteTemplate_8587B18[i],
204,
- gUnknown_08587A70[gUnknown_02039F26[i]],
+ gUnknown_08587A70[gContestantTurnOrder[i]],
0);
SetSubspriteTables(&gSprites[gContestResources->field_14[i].unk1], gSubspriteTables_8587B80);
gSprites[gContestResources->field_14[i].unk1].invisible = TRUE;
@@ -3902,7 +3904,7 @@ static void sub_80DC9B4(u8 a)
static u8 sub_80DC9EC(u8 a)
{
u8 spriteId1, spriteId2;
- u8 x = gUnknown_02039F26[a] * 40 + 32;
+ u8 x = gContestantTurnOrder[a] * 40 + 32;
LoadCompressedSpriteSheet(&sUnknown_08589904[a]);
LoadSpritePalette(&sUnknown_08589924[a]);
@@ -3913,12 +3915,12 @@ static u8 sub_80DC9EC(u8 a)
CopySpriteTiles(0,
3,
(void *)VRAM,
- (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x26),
+ (u16 *)(BG_SCREEN_ADDR(28) + gContestantTurnOrder[a] * 5 * 64 + 0x26),
gContestResources->field_34);
CopySpriteTiles(0,
3, (void *)VRAM,
- (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x36),
+ (u16 *)(BG_SCREEN_ADDR(28) + gContestantTurnOrder[a] * 5 * 64 + 0x36),
gContestResources->field_38);
CpuFill32(0, gContestResources->field_34 + 0x500, 0x300);
@@ -4056,7 +4058,7 @@ static void sub_80DCD48(void)
txtPtr = StringCopy(txtPtr, gText_OneDash);
}
ConvertIntToDecimalStringN(txtPtr, value, STR_CONV_MODE_LEFT_ALIGN, 4);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text, 55, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text, 55, 1, 7);
}
for (i = 0; i < 4; i++)
{
@@ -4068,88 +4070,122 @@ static void sub_80DCD48(void)
txtPtr = StringCopy(txtPtr, gText_OneDash);
}
ConvertIntToDecimalStringN(txtPtr, value, STR_CONV_MODE_LEFT_ALIGN, 4);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text, 5, 1, 7);
}
sub_80DB2BC();
break;
}
}
-void sub_80DCE58(u8 a)
+void SortContestants(bool8 useRanking)
{
- u8 sp0[4];
- u16 sp4[4] = {0};
+ u8 scratch[CONTESTANT_COUNT];
+ u16 randomOrdering[CONTESTANT_COUNT] = {0};
s32 i;
- s32 r2;
- s32 r4;
+ s32 v3;
- for (i = 0; i < 4; i++)
+ // Generate a unique random number for each contestant.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sp4[i] = Random();
- for (r2 = 0; r2 < i; r2++)
+ s32 j;
+ randomOrdering[i] = Random();
+
+ // Loop through all the numbers generated so far.
+ for (j = 0; j < i; j++)
{
- if (sp4[i] == sp4[r2])
+ if (randomOrdering[i] == randomOrdering[j])
{
+ // This number isn't unique; try generating again.
i--;
break;
}
}
}
- if (a == 0)
+ if (!useRanking)
{
- for (i = 0; i < 4; i++)
+ // Order based on the results of the Conditions round using Insertion Sort.
+ // Use the randomOrdering to break ties.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gUnknown_02039F26[i] = i;
- for (r4 = 0; r4 < i; r4++)
+ // Append this contestant to the list.
+ gContestantTurnOrder[i] = i;
+
+ // Determine where the contestant should be ordered.
+ for (v3 = 0; v3 < i; v3++)
{
- if (gContestMonConditions[gUnknown_02039F26[r4]] < gContestMonConditions[i]
- || (gContestMonConditions[gUnknown_02039F26[r4]] == gContestMonConditions[i] && sp4[gUnknown_02039F26[r4]] < sp4[i]))
+ if (gContestMonConditions[gContestantTurnOrder[v3]] < gContestMonConditions[i]
+ || (gContestMonConditions[gContestantTurnOrder[v3]] == gContestMonConditions[i] && randomOrdering[gContestantTurnOrder[v3]] < randomOrdering[i]))
{
- for (r2 = i; r2 > r4; r2--)
- gUnknown_02039F26[r2] = gUnknown_02039F26[r2 - 1];
- gUnknown_02039F26[r4] = i;
+ // Shift everything larger up to make room.
+ s32 j;
+ for (j = i; j > v3; j--)
+ gContestantTurnOrder[j] = gContestantTurnOrder[j - 1];
+
+ // Insert into the new spot.
+ gContestantTurnOrder[v3] = i;
break;
}
}
- if (r4 == i)
- gUnknown_02039F26[i] = i;
+
+ // This is redundant.
+ // Perhaps GF switched from true insertion sort to in-place insertion sort, and forgot to
+ // remove this check?
+ if (v3 == i)
+ gContestantTurnOrder[i] = i;
}
- memcpy(sp0, gUnknown_02039F26, sizeof(sp0));
- for (i = 0; i < 4; i++)
- gUnknown_02039F26[sp0[i]] = i;
+
+ // Invert gContestantTurnOrder; above, it was a list of contestant IDs. Now it's a list of turn orderings.
+ //
+ // For example, if contestant 3 had the first turn, then `gContestantTurnOrder[1] = 3`. The turn is the index,
+ // the contestant is the data. After inverting the list, `gContestantTurnOrder[3] = 1`. The contestant is the index,
+ // and the turn is the data.
+ memcpy(scratch, gContestantTurnOrder, sizeof(scratch));
+ for (i = 0; i < CONTESTANT_COUNT; i++)
+ gContestantTurnOrder[scratch[i]] = i;
}
else
{
- memset(sp0, 0xFF, sizeof(sp0));
- for (i = 0; i < 4; i++)
+ // Order contestants based on their ranking.
+ // If contestants have tied ranking, fill in the next available slot.
+ //
+ // Note that ranking is calculated so that shared places still take up a ranking
+ // space. A ranking like [1, 2, 2, 3] is not possible; it would be [1, 2, 2, 4]
+ // instead.
+ memset(scratch, 0xFF, sizeof(scratch));
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- u8 r2 = eContestantStatus[i].ranking;
+ u8 j = eContestantStatus[i].ranking;
while (1)
{
- u8 *ptr = &sp0[r2];
+ u8 *ptr = &scratch[j];
if (*ptr == 0xFF)
{
*ptr = i;
- gUnknown_02039F26[i] = r2;
+ gContestantTurnOrder[i] = j;
break;
}
- r2++;
+ j++;
}
}
- for (i = 0; i < 3; i++)
+
+ // Randomize the order of contestants with tied rankings using Selection Sort.
+ //
+ // Look through the array for tied ranks, and use randomOrdering to break the tie.
+ // This ensures that contestants with the same rank will be randomly ordered. This
+ // uses an in-place slection sort, which involves a lot of extra swapping.
+ for (i = 0; i < CONTESTANT_COUNT - 1; i++)
{
- for (r4 = 3; r4 > i; r4--)
+ for (v3 = CONTESTANT_COUNT - 1; v3 > i; v3--)
{
- if (eContestantStatus[r4 - 1].ranking == eContestantStatus[r4].ranking
- && gUnknown_02039F26[r4 - 1] < gUnknown_02039F26[r4]
- && sp4[r4 - 1] < sp4[r4])
+ if (eContestantStatus[v3 - 1].ranking == eContestantStatus[v3].ranking
+ && gContestantTurnOrder[v3 - 1] < gContestantTurnOrder[v3]
+ && randomOrdering[v3 - 1] < randomOrdering[v3])
{
- u8 temp = gUnknown_02039F26[r4];
-
- gUnknown_02039F26[r4] = gUnknown_02039F26[r4 - 1];
- gUnknown_02039F26[r4 - 1] = temp;
+ u8 temp = gContestantTurnOrder[v3];
+ gContestantTurnOrder[v3] = gContestantTurnOrder[v3 - 1];
+ gContestantTurnOrder[v3 - 1] = temp;
}
}
}
@@ -4162,7 +4198,7 @@ static void sub_80DD04C(void)
for (i = 0; i < 4; i++)
{
- LoadPalette(&gHeap[0x1A004] + (i + 5) * 32, (gUnknown_02039F26[i] + 5) * 16, 32);
+ LoadPalette(&gHeap[0x1A004] + (i + 5) * 32, (gContestantTurnOrder[i] + 5) * 16, 32);
}
sub_80DAEA4();
}
@@ -4343,7 +4379,7 @@ static void sub_80DD590(void)
for (i = 0; i < 4; i++)
{
- sp0[i] = gUnknown_02039F26[i];
+ sp0[i] = gContestantTurnOrder[i];
sp4[i] = 0;
}
@@ -4372,7 +4408,7 @@ static void sub_80DD590(void)
for (; j < 4; j++)
{
if (sp4[j] == 0 && eContestantStatus[j].nextTurnOrder == 0xFF
- && gUnknown_02039F26[r12] > gUnknown_02039F26[j])
+ && gContestantTurnOrder[r12] > gContestantTurnOrder[j])
r12 = j;
}
sp0[r12] = i;
@@ -4385,7 +4421,7 @@ static void sub_80DD590(void)
eContestResources8.turnOrder[i] = sp0[i];
eContestantStatus[i].nextTurnOrder = 0xFF;
eContestantStatus[i].turnOrderMod = 0;
- gUnknown_02039F26[i] = sp0[i];
+ gContestantTurnOrder[i] = sp0[i];
}
}
@@ -4710,7 +4746,7 @@ static void sub_80DE008(bool8 a)
if (eContestantStatus[i].turnOrderMod != 0 && a)
{
CpuCopy32(GetTurnOrderNumberGfx(i), (void *)(VRAM + 0x10000 + (gSprites[gContestResources->field_14[i].unk1].oam.tileNum + 6) * 32), 32);
- gSprites[gContestResources->field_14[i].unk1].pos1.y = gUnknown_08587A70[gUnknown_02039F26[i]];
+ gSprites[gContestResources->field_14[i].unk1].pos1.y = gUnknown_08587A70[gContestantTurnOrder[i]];
gSprites[gContestResources->field_14[i].unk1].invisible = FALSE;
}
else
@@ -4739,7 +4775,7 @@ static void sub_80DE12C(void)
{
if (eContestResources8.unnervedPokes[r7] != 0 && !Contest_IsMonsTurnDisabled(r7))
{
- u32 r6 = gUnknown_02039F26[r7] * 5 + 2;
+ u32 r6 = gContestantTurnOrder[r7] * 5 + 2;
u16 var = sub_80DB748(3);
ContestBG_FillBoxWithIncrementingTile(0, var, 0x14, r6, r10, r8, r9, r8);
@@ -4851,7 +4887,7 @@ static void sub_80DE4A8(u8 taskId)
{
case 0:
for (i = 0; i < 4; i++)
- eContest.unk19218[i] = gUnknown_02039F26[i];
+ eContest.unk19218[i] = gContestantTurnOrder[i];
sub_80DBF90();
sub_80DC864();
sub_80DB69C();
@@ -5321,13 +5357,13 @@ static void sub_80DF080(u8 contestant)
if (!gContestResources->field_10->excitementFrozen
&& gContestResources->field_10->bits_0 > 0
- && !gContestResources->field_4[contestant].disappointedRepeat)
+ && !eContestantStatus[contestant].disappointedRepeat)
{
gContestResources->field_1c[contestant].unkC |= 1;
gContestResources->field_1c[contestant].unkE_2 = 1;
}
- if (gContestResources->field_4[contestant].nervous)
+ if (eContestantStatus[contestant].nervous)
gContestResources->field_1c[contestant].unkC |= 2;
if (!gContestResources->field_10->excitementFrozen
@@ -5337,34 +5373,34 @@ static void sub_80DF080(u8 contestant)
gContestResources->field_1c[contestant].unkC |= 4;
}
- if (gContestResources->field_4[contestant].unk15_6
- && gContestResources->field_4[contestant].unk16 != 0)
+ if (eContestantStatus[contestant].unk15_6
+ && eContestantStatus[contestant].unk16 != 0)
{
gContestResources->field_1c[contestant].unkC |= 8;
}
for (i = 0; i < 4; i++)
{
- if (i != contestant && gContestResources->field_4[i].jam != 0)
+ if (i != contestant && eContestantStatus[i].jam != 0)
{
gContestResources->field_1c[contestant].unkC |= 0x10;
gContestResources->field_1c[i].unkC |= 0x40;
}
}
- if (gContestResources->field_4[contestant].numTurnsSkipped != 0
- || gContestResources->field_4[contestant].noMoreTurns)
+ if (eContestantStatus[contestant].numTurnsSkipped != 0
+ || eContestantStatus[contestant].noMoreTurns)
{
gContestResources->field_1c[contestant].unkC |= 0x20;
}
- else if (!gContestResources->field_4[contestant].nervous)
+ else if (!eContestantStatus[contestant].nervous)
{
gContestResources->field_1c[contestant].unkC |= 0x80;
gContestResources->field_1c[contestant].unkE_1 = 1;
- gContestResources->field_1c[contestant].unk0[eContest.turnNumber] = gContestResources->field_4[contestant].currMove;
+ gContestResources->field_1c[contestant].unk0[eContest.turnNumber] = eContestantStatus[contestant].currMove;
}
- if (gContestResources->field_4[contestant].disappointedRepeat)
+ if (eContestantStatus[contestant].disappointedRepeat)
gContestResources->field_1c[contestant].unkD |= 2;
if (eContest.applauseLevel == 4
@@ -5634,7 +5670,7 @@ static void sub_80DF750(void)
for (i = 0; i < 4; i++)
{
txtPtr = StringCopy(text1, gText_CDot);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text1, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text1, 5, 1, 7);
bits = gContestResources->field_1c[i].unkC;
for (j = 7; j > -1; j--) // Weird loop.
{
@@ -5646,8 +5682,8 @@ static void sub_80DF750(void)
text2[j] = text1[j];
text2[j] = EOS;
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text2, 5, 1, 7);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text1 + j, 55, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text2, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text1 + j, 55, 1, 7);
}
}
else
@@ -5667,8 +5703,8 @@ static void sub_80DF750(void)
text2[j] = text1[j];
text2[j] = EOS;
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text2, 5, 1, 7);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text1 + j, 55, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text2, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text1 + j, 55, 1, 7);
}
}
sub_80DB2BC();
diff --git a/src/contest_effect.c b/src/contest_effect.c
index 369850bb4..7a7f3e3a5 100644
--- a/src/contest_effect.c
+++ b/src/contest_effect.c
@@ -517,7 +517,7 @@ static void ContestEffect_BadlyStartlesMonsInGoodCondition(void)
// The appeal works great if performed first.
static void ContestEffect_BetterIfFirst(void)
{
- if (gUnknown_02039F26[eContestResources8.contestant] == 0)
+ if (gContestantTurnOrder[eContestResources8.contestant] == 0)
{
u16 move = eContestantStatus[eContestResources8.contestant].currMove;
eContestantStatus[eContestResources8.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
@@ -528,7 +528,7 @@ static void ContestEffect_BetterIfFirst(void)
// The appeal works great if performed last.
static void ContestEffect_BetterIfLast(void)
{
- if (gUnknown_02039F26[eContestResources8.contestant] == 3)
+ if (gContestantTurnOrder[eContestResources8.contestant] == 3)
{
u16 move = eContestantStatus[eContestResources8.contestant].currMove;
eContestantStatus[eContestResources8.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c
index 59f41d72a..a8aab95d9 100644
--- a/src/contest_link_80F57C4.c
+++ b/src/contest_link_80F57C4.c
@@ -3069,7 +3069,7 @@ _080F8678:\n\
static void sub_80F86B8(u8 taskId)
{
- sub_80DCE58(0);
+ SortContestants(FALSE);
SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714);
}
diff --git a/src/contest_link_80FC4F4.c b/src/contest_link_80FC4F4.c
index f582626f8..f64f1824b 100644
--- a/src/contest_link_80FC4F4.c
+++ b/src/contest_link_80FC4F4.c
@@ -269,7 +269,7 @@ void sub_80FC9F8(u8 taskId)
case 0:
if (IsLinkTaskFinished())
{
- if (sub_80FC4F4(&gContestResources->field_4[gContestPlayerMonIndex].currMove, sizeof(gContestResources->field_4[gContestPlayerMonIndex].currMove)) == TRUE)
+ if (sub_80FC4F4(&eContestantStatus[gContestPlayerMonIndex].currMove, sizeof(eContestantStatus[gContestPlayerMonIndex].currMove)) == TRUE)
gTasks[taskId].data[0]++;
}
break;
@@ -277,7 +277,7 @@ void sub_80FC9F8(u8 taskId)
if (sub_80FC55C())
{
for (i = 0; i < gNumLinkContestPlayers; i++)
- gContestResources->field_4[i].currMove = gBlockRecvBuffer[i][0];
+ eContestantStatus[i].currMove = gBlockRecvBuffer[i][0];
gTasks[taskId].data[0]++;
}
@@ -373,14 +373,14 @@ void sub_80FCC88(u8 taskId)
case 0:
if (IsLinkTaskFinished())
{
- if (sub_80FC4F4(gContestResources->field_4, 4 * sizeof(struct ContestantStatus)) == 1)
+ if (sub_80FC4F4(eContestantStatus, 4 * sizeof(struct ContestantStatus)) == 1)
gTasks[taskId].data[0]++;
}
break;
case 1:
if (sub_80FC55C())
{
- memcpy(gContestResources->field_4, gBlockRecvBuffer[gUnknown_02039F2B], 4 * sizeof(struct ContestantStatus));
+ memcpy(eContestantStatus, gBlockRecvBuffer[gUnknown_02039F2B], 4 * sizeof(struct ContestantStatus));
gTasks[taskId].data[0]++;
}
break;
@@ -425,14 +425,14 @@ void sub_80FCC88(u8 taskId)
case 9:
if (IsLinkTaskFinished())
{
- if (sub_80FC4F4(gUnknown_02039F26, sizeof(gUnknown_02039F26)) == 1)
+ if (sub_80FC4F4(gContestantTurnOrder, sizeof(gContestantTurnOrder)) == 1)
gTasks[taskId].data[0]++;
}
break;
case 10:
if (sub_80FC55C())
{
- memcpy(gUnknown_02039F26, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F26));
+ memcpy(gContestantTurnOrder, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestantTurnOrder));
gTasks[taskId].data[0]++;
}
break;
@@ -528,14 +528,14 @@ void sub_80FCFD0(u8 taskId)
case 0:
if (IsLinkTaskFinished())
{
- if (sub_80FC4F4(gUnknown_02039F26, sizeof(gUnknown_02039F26)) == 1)
+ if (sub_80FC4F4(gContestantTurnOrder, sizeof(gContestantTurnOrder)) == 1)
gTasks[taskId].data[0]++;
}
break;
case 1:
if (sub_80FC55C())
{
- memcpy(gUnknown_02039F26, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F26));
+ memcpy(gContestantTurnOrder, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestantTurnOrder));
gTasks[taskId].data[0]++;
}
break;
diff --git a/src/contest_link_81D9DE4.c b/src/contest_link_81D9DE4.c
index 4b56c9c38..8060b6cdc 100644
--- a/src/contest_link_81D9DE4.c
+++ b/src/contest_link_81D9DE4.c
@@ -134,7 +134,7 @@ static void sub_81DA10C(u8 taskId)
static void sub_81DA138(u8 taskId)
{
- sub_80DCE58(0);
+ SortContestants(FALSE);
SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714);
}