summaryrefslogtreecommitdiff
path: root/src/contest.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/contest.c')
-rw-r--r--src/contest.c1855
1 files changed, 988 insertions, 867 deletions
diff --git a/src/contest.c b/src/contest.c
index 02d7038cf..eb3252f72 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -11,7 +11,7 @@
#include "battle.h"
#include "battle_anim.h"
#include "contest.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "graphics.h"
#include "link.h"
@@ -41,10 +41,37 @@
#include "contest_link_80FC4F4.h"
#include "script_pokemon_util_80F87D8.h"
#include "international_string_util.h"
-#include "data2.h"
+#include "data.h"
#include "constants/rgb.h"
#include "contest_ai.h"
+#define APPLAUSE_METER_GFX_TAG 0xABE2
+
+// An index into a palette where the text color for each contestant is stored.
+// Contestant 0 will use palette color 10, contestant 1 will use color 11, etc.
+#define CONTESTANT_TEXT_COLOR_START 10
+
+enum
+{
+// The "{Pokemon Name} / {Trainer Name}" windows.
+ CONTEST_WINDOW_CONTESTANT0_NAME,
+ CONTEST_WINDOW_CONTESTANT1_NAME,
+ CONTEST_WINDOW_CONTESTANT2_NAME,
+ CONTEST_WINDOW_CONTESTANT3_NAME,
+ CONTEST_WINDOW_GENERAL_TEXT,
+ // The available moves, from top to bottom
+ CONTEST_WINDOW_MOVE0,
+ CONTEST_WINDOW_MOVE1,
+ CONTEST_WINDOW_MOVE2,
+ CONTEST_WINDOW_MOVE3,
+ // The small "/" character between the move category and the
+ // appeal/jam display
+ CONTEST_WINDOW_SLASH,
+ CONTEST_WINDOW_MOVE_DESCRIPTION
+};
+
+#define MOVE_WINDOWS_START CONTEST_WINDOW_MOVE0
+
// This file's functions.
static void sub_80D782C(void);
static void sub_80D7C7C(u8 taskId);
@@ -52,11 +79,11 @@ static void sub_80D7CB4(u8 taskId);
static void sub_80D7DAC(u8 taskId);
static void sub_80D7DC8(u8 taskId);
static void sub_80D7DE8(u8 taskId);
-static bool8 sub_80D7E44(u8 *);
+static bool8 SetupContestGraphics(u8 *stateVar);
static void sub_80D80C8(u8 taskId);
static void sub_80D8108(u8 taskId);
static void vblank_cb_battle(void);
-static void sub_80D823C(void);
+static void CB2_ContestMain(void);
static void sub_80D833C(u8 taskId);
static void sub_80D8424(u8 taskId);
static void sub_80D8610(u8 taskId);
@@ -94,31 +121,31 @@ static void sub_80DA7EC(u8);
static void sub_80DA830(u8);
static void sub_80DA874(void);
static bool8 sub_80DA8A4(void);
-static void sub_80DAF04(u8);
-static void sub_80DAF1C(u8 a0, u8 a1);
-static void sub_80DAF88(u8);
-static void sub_80DAFA0(u8, u8);
+static void PrintContestantTrainerName(u8);
+static void PrintContestantTrainerNameWithColor(u8 a0, u8 a1);
+static void PrintContestantMonName(u8);
+static void PrintContestantMonNameWithColor(u8, u8);
static u8 sub_80DB0C4(void);
static u8 sub_80DB120(void);
static u8 sub_80DB174(u16, u32, u32, u32);
-static void prints_contest_move_description(u16);
+static void PrintContestMoveDescription(u16);
static u16 SanitizeSpecies(u16);
-static void sub_80DB89C(void);
+static void ContestClearGeneralTextWindow(void);
static u16 GetChosenMove(u8);
-static void sub_80DB918(void);
-static void sub_80DBF68(void);
-static void sub_80DBF90(void);
+static void GetAllChosenMoves(void);
+static void ContestPrintLinkStandby(void);
+static void FillContestantWindowBgs(void);
static void sub_80DC2BC(void);
static void sub_80DC490(bool8);
static void sub_80DC4F0(void);
static void CreateApplauseMeterSprite(void);
static void sub_80DC5E8(void);
static void sub_80DC7EC(void);
-static void sub_80DCD48(void);
-static void sub_80DD04C(void);
-static void sub_80DD590(void);
-static void sub_80DDB0C(void);
-static void sub_80DDBE8(void);
+static void ContestDebugDoPrint(void);
+static void DrawContestantWindows(void);
+static void ApplyNextTurnOrder(void);
+static void StartMoveApplauseMeterOnscreen(void);
+static void TryMoveApplauseMeterOffscreen(void);
static void sub_80DE224(void);
static void sub_80DE350(void);
static void sub_80DE424(u8);
@@ -127,7 +154,7 @@ static void sub_80DEA20(void);
static void Contest_StartTextPrinter(const u8 *, u32);
static void ContestBG_FillBoxWithIncrementingTile(u8, u16, u8, u8, u8, u8, u8, s16);
static bool32 Contest_RunTextPrinters(void);
-static void Contest_SetBgCopyFlags(u32);
+static void Contest_SetBgCopyFlags(u32 flagIndex);
static void sub_80DBD18(void);
static void sub_80DD080(u8);
static void sub_80DE9DC(u8);
@@ -148,10 +175,10 @@ static bool8 sub_80DB798(u8);
static void sub_80DB884(void);
static void sub_80DC9B4(u8);
static void sub_80DDED0(s8, s8);
-static void sub_80DDCDC(s8);
+static void ShowAndUpdateApplauseMeter(s8 unused);
static void sub_80DDE0C(void);
-static void sub_80DD940(void);
-static void sub_80DB944(void);
+static void UpdateApplauseMeter(void);
+static void RankContestants(void);
static void sub_80DBA18(void);
static void sub_80DC3AC(void);
static bool8 sub_80DC3C4(void);
@@ -169,11 +196,11 @@ static void sub_80DC81C(u8);
static void sub_80DC87C(u8);
static void sub_80DCC84(struct Sprite *);
static void sub_80DCCD8(struct Sprite *sprite);
-static u8 sub_80DDA20(void);
-static void c3_08130B10(u8);
-static void sub_80DDB6C(u8);
-static void task08_080CD1CC(u8);
-static void sub_80DDD20(u8);
+static u8 StartApplauseOverflowAnimation(void);
+static void Task_ApplauseOverflowAnimation(u8);
+static void Task_MoveApplauseMeterOnscreen(u8);
+static void Task_MoveApplauseMeterOffscreen(u8);
+static void Task_ShowAndUpdateApplauseMeter(u8);
static void sub_80DDE30(u8);
static void sub_80DDF80(u8);
static const u8 *GetTurnOrderNumberGfx(u8);
@@ -186,10 +213,10 @@ static void sub_80DEA5C(void);
static void sub_80DF250(void);
static void sub_80DF4F8(void);
static void sub_80DF080(u8);
-static void sub_80DF750(void);
+static void ContestDebugPrintBitStrings(void);
static void sub_80DF9D4(u8 *);
static void sub_80DF9E0(u8 *, s32);
-static void sub_80DB2BC(void);
+static void SwapMoveDescAndContestTilemaps(void);
// EWRAM vars.
EWRAM_DATA struct ContestPokemon gContestMons[4] = {0};
@@ -200,8 +227,8 @@ 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 gIsLinkContest = 0;
+EWRAM_DATA u8 gContestantTurnOrder[4] = {0};
+EWRAM_DATA u8 gLinkContestFlags = 0;
// Bit 0: Is a link contest
// Bit 1: Link contest uses wireless adapter
EWRAM_DATA u8 gUnknown_02039F2B = 0;
@@ -218,14 +245,14 @@ EWRAM_DATA u8 gUnknown_02039F5D = 0;
// IWRAM common vars.
u32 gContestRngValue;
-extern const u8 *const gUnknown_0827E8DA[];
+extern const u8 gText_LinkStandby4[];
extern const u8 gText_0827D55A[];
extern const u8 gText_0827E793[];
extern const u8 gText_0827E32E[];
extern const u8 gText_0827E35B[];
extern const u8 gText_0827E38D[];
extern const u8 gText_0827E2FE[];
-extern const u8 gText_0827E6E3[];
+extern const u8 gText_RepeatedAppeal[];
extern const u8 gText_0827E73C[];
extern const u8 gText_0827E717[];
extern const u8 gText_0827E76A[];
@@ -242,8 +269,6 @@ extern const u8 gText_Contest_Fear[];
extern const u8 gText_BDot[];
extern const u8 gText_CDot[];
extern const u8 *const gUnknown_08587E10[];
-extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
-extern const union AffineAnimCmd *const gUnknown_082FF694[];
extern const struct SpriteTemplate gSpriteTemplate_8587AD0;
extern const struct SpriteTemplate gSpriteTemplate_8587B18[];
extern void (*const gContestEffectFuncs[])(void);
@@ -467,20 +492,20 @@ const struct SpriteTemplate gSpriteTemplate_8587B98 =
.callback = SpriteCallbackDummy
};
-const struct CompressedSpriteSheet gUnknown_08587BB0 =
+static const struct CompressedSpriteSheet sApplauseMeterSpriteSheet =
{
.data = gContestApplauseGfx,
.size = 0x400,
- .tag = 0xABE2
+ .tag = APPLAUSE_METER_GFX_TAG
};
-const struct SpritePalette gUnknown_08587BB8 =
+static const struct SpritePalette sApplauseMeterPalette =
{
.data = gContestPal,
- .tag = 0xABE2
+ .tag = APPLAUSE_METER_GFX_TAG
};
-const struct OamData gOamData_8587BC0 =
+static const struct OamData sApplauseMeterOamData =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -494,11 +519,11 @@ const struct OamData gOamData_8587BC0 =
.paletteNum = 0,
};
-const struct SpriteTemplate gSpriteTemplate_8587BC8 =
+static const struct SpriteTemplate sApplauseMeterSpriteTemplate =
{
- .tileTag = 0xABE2,
- .paletteTag = 0xABE2,
- .oam = &gOamData_8587BC0,
+ .tileTag = APPLAUSE_METER_GFX_TAG,
+ .paletteTag = APPLAUSE_METER_GFX_TAG,
+ .oam = &sApplauseMeterOamData,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
@@ -565,7 +590,7 @@ const u16 gUnknown_08587C30[] = INCBIN_U16("graphics/unknown/unknown_587C30.gbap
#include "data/contest_text_tables.h"
-const struct BgTemplate gUnknown_08587F34[] =
+static const struct BgTemplate sContestBgTemplates[] =
{
{
.bg = 0,
@@ -605,9 +630,9 @@ const struct BgTemplate gUnknown_08587F34[] =
}
};
-const struct WindowTemplate gUnknown_08587F44[] =
+static const struct WindowTemplate sContestWindowTemplates[] =
{
- {
+ [CONTEST_WINDOW_CONTESTANT0_NAME] = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 0,
@@ -616,7 +641,7 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x200
},
- {
+ [CONTEST_WINDOW_CONTESTANT1_NAME] = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 5,
@@ -625,7 +650,7 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x218
},
- {
+ [CONTEST_WINDOW_CONTESTANT2_NAME] = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 10,
@@ -634,7 +659,7 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x230
},
- {
+ [CONTEST_WINDOW_CONTESTANT3_NAME] = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 15,
@@ -643,7 +668,7 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x248
},
- {
+ [CONTEST_WINDOW_GENERAL_TEXT] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
@@ -652,55 +677,55 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x260
},
- {
+ [CONTEST_WINDOW_MOVE0] = {
.bg = 0,
.tilemapLeft = 1,
- .tilemapTop = 0x1F,
+ .tilemapTop = 31,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2A4
},
- {
+ [CONTEST_WINDOW_MOVE1] = {
.bg = 0,
.tilemapLeft = 1,
- .tilemapTop = 0x21,
+ .tilemapTop = 33,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2B6
},
- {
+ [CONTEST_WINDOW_MOVE2] = {
.bg = 0,
.tilemapLeft = 1,
- .tilemapTop = 0x23,
+ .tilemapTop = 35,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2C8
},
- {
+ [CONTEST_WINDOW_MOVE3] = {
.bg = 0,
.tilemapLeft = 1,
- .tilemapTop = 0x25,
+ .tilemapTop = 37,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2DA
},
- {
+ [CONTEST_WINDOW_SLASH] = {
.bg = 0,
.tilemapLeft = 16,
- .tilemapTop = 0x1F,
+ .tilemapTop = 31,
.width = 1,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2EC
},
- {
+ [CONTEST_WINDOW_MOVE_DESCRIPTION] = {
.bg = 0,
.tilemapLeft = 11,
- .tilemapTop = 0x23,
+ .tilemapTop = 35,
.width = 18,
.height = 4,
.paletteNum = 0xF,
@@ -847,10 +872,10 @@ static void TaskDummy1(u8 taskId)
void ResetLinkContestBoolean(void)
{
- gIsLinkContest = 0;
+ gLinkContestFlags = 0;
}
-static void sub_80D7678(void)
+static void SetupContestGpuRegs(void)
{
u16 savedIme;
@@ -882,36 +907,36 @@ void LoadContestBgAfterMoveAnim(void)
LZDecompressVram(gContestMiscGfx, (void *)VRAM);
LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
- CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
+ CopyToBgTilemapBuffer(3, gOldContestGfx, 0, 0);
CopyBgTilemapBufferToVram(3);
- LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200);
+ LoadCompressedPalette(gOldContestPalette, 0, 0x200);
sub_80D782C();
- for (i = 0; i < MAX_MON_MOVES; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- u32 var = 5 + i;
+ u32 contestantWindowId = MOVE_WINDOWS_START + i;
- LoadPalette(shared18000.unk18004[var], 16 * (5 + gUnknown_02039F26[i]), 16 * sizeof(u16));
+ LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId], 16 * (MOVE_WINDOWS_START + gContestantTurnOrder[i]), sizeof((eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId])));
}
}
-static void sub_80D779C(void)
+static void InitContestInfoBgs(void)
{
s32 i;
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_08587F34, ARRAY_COUNT(gUnknown_08587F34));
+ InitBgsFromTemplates(0, sContestBgTemplates, ARRAY_COUNT(sContestBgTemplates));
SetBgAttribute(3, BG_ATTR_WRAPAROUND, 1);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- SetBgTilemapBuffer(i, gContestResources->field_24[i]);
+ SetBgTilemapBuffer(i, gContestResources->contestBgTilemaps[i]);
}
}
-static void sub_80D77E4(void)
+static void InitContestWindows(void)
{
- InitWindows(gUnknown_08587F44);
+ InitWindows(sContestWindowTemplates);
DeactivateAllTextPrinters();
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
gTextFlags.canABSpeedUpPrint = FALSE;
}
@@ -932,78 +957,82 @@ static void sub_80D782C(void)
FillPalette(RGB(31, 17, 31), 0xF3, 2);
}
-static void sub_80D787C(void)
+static void InitContestResources(void)
{
s32 i;
- *gContestResources->field_0 = (struct Contest){};
- for (i = 0; i < 4; i++)
+ eContest = (struct Contest){};
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_0->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].unkB_0 = 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));
- if (!(gIsLinkContest & 1))
- sub_80DCE58(0);
- for (i = 0; i < 4; i++)
+ memset(gContestResources->field_14, 0, CONTESTANT_COUNT * sizeof(struct UnknownContestStruct4));
+
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
+ SortContestants(FALSE);
+
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_4[i].nextTurnOrder = 0xFF;
- gContestResources->field_0->unk19218[i] = gUnknown_02039F26[i];
+ eContestantStatus[i].nextTurnOrder = 0xFF;
+ eContest.prevTurnOrder[i] = gContestantTurnOrder[i];
}
- sub_80DD590();
- memset(gContestResources->field_1c, 0, sizeof(*gContestResources->field_1c) * 4);
+ // Calling this here while all the nextTurnOrder values are 0xFF will actually
+ // just reverse the turn order.
+ ApplyNextTurnOrder();
+ 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->field_0 = AllocZeroed(sizeof(struct Contest));
- gContestResources->field_4 = AllocZeroed(sizeof(struct ContestantStatus) * 4);
+ gContestResources->contest = AllocZeroed(sizeof(struct Contest));
+ 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);
- gContestResources->field_24[2] = AllocZeroed(0x1000);
- gContestResources->field_24[3] = AllocZeroed(0x1000);
+ gContestResources->contestBgTilemaps[0] = AllocZeroed(0x1000);
+ gContestResources->contestBgTilemaps[1] = AllocZeroed(0x1000);
+ gContestResources->contestBgTilemaps[2] = AllocZeroed(0x1000);
+ gContestResources->contestBgTilemaps[3] = AllocZeroed(0x1000);
gContestResources->field_34 = AllocZeroed(0x800);
gContestResources->field_38 = AllocZeroed(0x800);
gContestResources->field_3c = AllocZeroed(0x2000);
gUnknown_0202305C = gContestResources->field_3c;
- gUnknown_02023060 = gContestResources->field_24[1];
+ gUnknown_02023060 = gContestResources->contestBgTilemaps[1];
}
-static void sub_80D7A5C(void)
+static void FreeContestResources(void)
{
- FREE_AND_SET_NULL(gContestResources->field_0);
- FREE_AND_SET_NULL(gContestResources->field_4);
+ FREE_AND_SET_NULL(gContestResources->contest);
+ 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);
FREE_AND_SET_NULL(gContestResources->field_1c);
FREE_AND_SET_NULL(gContestResources->field_20);
- FREE_AND_SET_NULL(gContestResources->field_24[0]);
- FREE_AND_SET_NULL(gContestResources->field_24[1]);
- FREE_AND_SET_NULL(gContestResources->field_24[2]);
- FREE_AND_SET_NULL(gContestResources->field_24[3]);
+ FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[0]);
+ FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[1]);
+ FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[2]);
+ FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[3]);
FREE_AND_SET_NULL(gContestResources->field_34);
FREE_AND_SET_NULL(gContestResources->field_38);
FREE_AND_SET_NULL(gContestResources->field_3c);
@@ -1012,20 +1041,20 @@ static void sub_80D7A5C(void)
gUnknown_02023060 = NULL;
}
-void sub_80D7B24(void)
+void CB2_StartContest(void)
{
switch (gMain.state)
{
case 0:
sContestBgCopyFlags = 0;
- sub_80D7988();
+ AllocContestResources();
AllocateMonSpritesGfx();
FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed);
gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x4000);
SetVBlankCallback(NULL);
- sub_80D779C();
- sub_80D77E4();
- sub_80D7678();
+ InitContestInfoBgs();
+ InitContestWindows();
+ SetupContestGpuRegs();
ScanlineEffect_Clear();
ResetPaletteFade();
gPaletteFade.bufferTransferDisabled = TRUE;
@@ -1033,19 +1062,18 @@ void sub_80D7B24(void)
ResetTasks();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
- //shared18000.unk18000 = 0;
- gHeap[0x1a000] = 0;
+ eContestDebugMode = CONTEST_DEBUG_MODE_OFF;
ClearBattleMonForms();
- sub_80D787C();
+ InitContestResources();
gMain.state++;
break;
case 1:
gMain.state++;
break;
case 2:
- if (sub_80D7E44(&gContestResources->field_0->unk1925D))
+ if (SetupContestGraphics(&eContest.contestSetupState))
{
- gContestResources->field_0->unk1925D = 0;
+ eContest.contestSetupState = 0;
gMain.state++;
}
break;
@@ -1056,11 +1084,11 @@ void sub_80D7B24(void)
BeginFastPaletteFade(2);
gPaletteFade.bufferTransferDisabled = FALSE;
SetVBlankCallback(vblank_cb_battle);
- gContestResources->field_0->mainTaskId = CreateTask(sub_80D7C7C, 10);
- SetMainCallback2(sub_80D823C);
- if (gIsLinkContest & 2)
+ eContest.mainTaskId = CreateTask(sub_80D7C7C, 10);
+ SetMainCallback2(CB2_ContestMain);
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(8, 8);
}
break;
@@ -1078,14 +1106,14 @@ static void sub_80D7C7C(u8 taskId)
static void sub_80D7CB4(u8 taskId)
{
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
- if (gIsLinkContest & 2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
{
switch (gTasks[taskId].data[0])
{
case 0:
- sub_80DBF68();
+ ContestPrintLinkStandby();
gTasks[taskId].data[0]++;
// fallthrough
case 1:
@@ -1106,8 +1134,8 @@ static void sub_80D7CB4(u8 taskId)
if (!gPaletteFade.active)
{
gPaletteFade.bufferTransferDisabled = FALSE;
- if (!(gIsLinkContest & 2))
- sub_80DBF68();
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS))
+ ContestPrintLinkStandby();
CreateTask(sub_80D7DAC, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = TaskDummy1;
@@ -1137,17 +1165,17 @@ static void sub_80D7DE8(u8 taskId)
{
GetMultiplayerId(); // unused return value
DestroyTask(taskId);
- gTasks[gContestResources->field_0->mainTaskId].func = sub_80D80C8;
+ gTasks[eContest.mainTaskId].func = sub_80D80C8;
gRngValue = gContestRngValue;
}
}
-static u8 sub_80D7E44(u8 *a)
+static bool8 SetupContestGraphics(u8 *stateVar)
{
- u16 sp0[16];
- u16 sp20[16];
+ u16 tempPalette1[16];
+ u16 tempPalette2[16];
- switch (*a)
+ switch (*stateVar)
{
case 0:
gPaletteFade.bufferTransferDisabled = TRUE;
@@ -1160,31 +1188,32 @@ static u8 sub_80D7E44(u8 *a)
break;
case 2:
LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
- DmaCopyLarge32(3, (void *)(BG_SCREEN_ADDR(4)), shared15800, 0x2000, 0x1000);
+ DmaCopyLarge32(3, (void *)(BG_SCREEN_ADDR(4)), eUnzippedContestAudienceGfx, 0x2000, 0x1000);
break;
case 3:
- CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
+ CopyToBgTilemapBuffer(3, gOldContestGfx, 0, 0);
CopyBgTilemapBufferToVram(3);
break;
case 4:
CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0);
CopyBgTilemapBufferToVram(2);
- DmaCopy32Defvars(3, gContestResources->field_24[2], shared18000.unk18A04, 0x800);
+ // This is a bug, and copies random junk. savedJunk is never read.
+ DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eUnknownHeap1A004.savedJunk, sizeof(eUnknownHeap1A004.savedJunk));
break;
case 5:
- LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200);
- CpuCopy32(gPlttBufferUnfaded + 128, sp0, 16 * sizeof(u16));
- CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, sp20, 16 * sizeof(u16));
- CpuCopy32(sp20, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
- CpuCopy32(sp0, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
- DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18004, 0x200);
+ LoadCompressedPalette(gOldContestPalette, 0, 0x200);
+ CpuCopy32(gPlttBufferUnfaded + 128, tempPalette1, 16 * sizeof(u16));
+ CpuCopy32(gPlttBufferUnfaded + (MOVE_WINDOWS_START + gContestPlayerMonIndex) * 16, tempPalette2, 16 * sizeof(u16));
+ CpuCopy32(tempPalette2, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
+ CpuCopy32(tempPalette1, gPlttBufferUnfaded + (MOVE_WINDOWS_START + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.cachedWindowPalettes, sizeof(eUnknownHeap1A004.cachedWindowPalettes));
sub_80D782C();
break;
case 6:
- sub_80DD04C();
- sub_80DBF90();
- sub_80DB2BC();
- gContestResources->field_0->unk19216 = sub_80DB120();
+ DrawContestantWindows();
+ FillContestantWindowBgs();
+ SwapMoveDescAndContestTilemaps();
+ eContest.unk19216 = sub_80DB120();
sub_80DC2BC();
sub_80DC4F0();
CreateApplauseMeterSprite();
@@ -1208,12 +1237,12 @@ static u8 sub_80D7E44(u8 *a)
ShowBg(1);
break;
default:
- *a = 0;
- return 1;
+ *stateVar = 0;
+ return TRUE;
}
- (*a)++;
- return 0;
+ (*stateVar)++;
+ return FALSE;
}
static void sub_80D80C8(u8 taskId)
@@ -1256,13 +1285,13 @@ static void sub_80D8108(u8 taskId)
((struct BgCnt *)&bg2Cnt)->priority = 0;
SetGpuReg(REG_OFFSET_BG0CNT, bg0Cnt);
SetGpuReg(REG_OFFSET_BG2CNT, bg2Cnt);
- sub_80DDB0C();
+ StartMoveApplauseMeterOnscreen();
gTasks[taskId].data[0]++;
break;
}
case 4:
default:
- if (gContestResources->field_0->unk1920A_6)
+ if (eContest.applauseMeterIsMoving)
break;
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
@@ -1271,7 +1300,7 @@ static void sub_80D8108(u8 taskId)
}
}
-static void sub_80D823C(void)
+static void CB2_ContestMain(void)
{
s32 i;
@@ -1314,16 +1343,16 @@ static void sub_80D833C(u8 taskId)
{
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
- sub_80DCD48();
- DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400);
- ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ContestDebugDoPrint();
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.unk18204, PLTT_BUFFER_SIZE * 2);
+ ConvertIntToDecimalStringN(gStringVar1, eContest.turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
StringCopy(gDisplayedStringBattle, gText_0827D507);
else
StringCopy(gDisplayedStringBattle, gText_0827D531);
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0]++;
}
else
@@ -1366,15 +1395,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
@@ -1382,12 +1411,12 @@ static void sub_80D8490(u8 taskId)
}
r5 = StringCopy(r5, gMoveNames[move]);
- FillWindowPixelBuffer(i + 5, PIXEL_FILL(0));
- Contest_PrintTextToBg0WindowAt(i + 5, sp8, 5, 1, 7);
+ FillWindowPixelBuffer(i + MOVE_WINDOWS_START, PIXEL_FILL(0));
+ Contest_PrintTextToBg0WindowAt(i + MOVE_WINDOWS_START, sp8, 5, 1, 7);
}
- sub_80D880C(gContestResources->field_0->playerMoveChoice);
- prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ sub_80D880C(eContest.playerMoveChoice);
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[eContest.playerMoveChoice]);
gTasks[taskId].func = sub_80D8610;
}
@@ -1414,12 +1443,12 @@ static void sub_80D8610(u8 taskId)
case B_BUTTON:
PlaySE(SE_SELECT);
sub_80DC490(FALSE);
- ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ConvertIntToDecimalStringN(gStringVar1, eContest.turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
StringCopy(gDisplayedStringBattle, gText_0827D507);
else
StringCopy(gDisplayedStringBattle, gText_0827D531);
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
Contest_StartTextPrinter(gStringVar4, 0);
gBattle_BG0_Y = 0;
@@ -1430,24 +1459,24 @@ static void sub_80D8610(u8 taskId)
case DPAD_RIGHT:
break;
case DPAD_UP:
- sub_80D883C(gContestResources->field_0->playerMoveChoice);
- if (gContestResources->field_0->playerMoveChoice == 0)
- gContestResources->field_0->playerMoveChoice = numMoves - 1;
+ sub_80D883C(eContest.playerMoveChoice);
+ if (eContest.playerMoveChoice == 0)
+ eContest.playerMoveChoice = numMoves - 1;
else
- gContestResources->field_0->playerMoveChoice--;
- sub_80D880C(gContestResources->field_0->playerMoveChoice);
- prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ eContest.playerMoveChoice--;
+ sub_80D880C(eContest.playerMoveChoice);
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[eContest.playerMoveChoice]);
if (numMoves > 1)
PlaySE(SE_SELECT);
break;
case DPAD_DOWN:
- sub_80D883C(gContestResources->field_0->playerMoveChoice);
- if (gContestResources->field_0->playerMoveChoice == numMoves - 1)
- gContestResources->field_0->playerMoveChoice = 0;
+ sub_80D883C(eContest.playerMoveChoice);
+ if (eContest.playerMoveChoice == numMoves - 1)
+ eContest.playerMoveChoice = 0;
else
- gContestResources->field_0->playerMoveChoice++;
- sub_80D880C(gContestResources->field_0->playerMoveChoice);
- prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ eContest.playerMoveChoice++;
+ sub_80D880C(eContest.playerMoveChoice);
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[eContest.playerMoveChoice]);
if (numMoves > 1)
PlaySE(SE_SELECT);
break;
@@ -1468,21 +1497,21 @@ static void sub_80D883C(s8 a0)
static void sub_80D8894(u8 taskId)
{
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
- u16 var = GetChosenMove(gContestPlayerMonIndex);
+ u16 move = GetChosenMove(gContestPlayerMonIndex);
u8 taskId2;
- gContestResources->field_4[gContestPlayerMonIndex].currMove = var;
+ eContestantStatus[gContestPlayerMonIndex].currMove = move;
taskId2 = CreateTask(sub_80FC9F8, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FC9F8, sub_80D892C);
gTasks[taskId].func = TaskDummy1;
- sub_80DBF68();
+ ContestPrintLinkStandby();
sub_80DC490(FALSE);
}
else
{
- sub_80DB918();
+ GetAllChosenMoves();
gTasks[taskId].func = sub_80D895C;
}
}
@@ -1490,28 +1519,28 @@ static void sub_80D8894(u8 taskId)
static void sub_80D892C(u8 taskId)
{
DestroyTask(taskId);
- gTasks[gContestResources->field_0->mainTaskId].func = sub_80D895C;
+ gTasks[eContest.mainTaskId].func = sub_80D895C;
}
static void sub_80D895C(u8 taskId)
{
s32 i;
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
sub_80DC490(FALSE);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- FillWindowPixelBuffer(5 + i, PIXEL_FILL(0));
- PutWindowTilemap(5 + i);
- CopyWindowToVram(5 + i, 2);
+ FillWindowPixelBuffer(MOVE_WINDOWS_START + i, PIXEL_FILL(0));
+ PutWindowTilemap(MOVE_WINDOWS_START + i);
+ CopyWindowToVram(MOVE_WINDOWS_START + i, 2);
}
Contest_SetBgCopyFlags(0);
-
- DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400);
- LoadPalette(shared18000.unk18204, 0, 0x400);
+ // This seems to be a bug; it should have just copied PLTT_BUFFER_SIZE.
+ DmaCopy32Defvars(3, gPlttBufferFaded, eUnknownHeap1A004.unk18604, PLTT_BUFFER_SIZE * 2);
+ LoadPalette(eUnknownHeap1A004.unk18204, 0, PLTT_BUFFER_SIZE * 2);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].func = sub_80D8A04;
@@ -1524,7 +1553,7 @@ static void sub_80D8A04(u8 taskId)
gTasks[taskId].data[0] = 0;
if (++gTasks[taskId].data[1] == 2)
{
- sub_80DDBE8();
+ TryMoveApplauseMeterOffscreen();
sub_80DE69C(1);
gTasks[taskId].func = sub_80D8A50;
}
@@ -1533,7 +1562,7 @@ static void sub_80D8A04(u8 taskId)
static void sub_80D8A50(u8 taskId)
{
- if (!gContestResources->field_0->unk1920A_6 && !gContestResources->field_0->unk1920B_1)
+ if (!eContest.applauseMeterIsMoving && !eContest.unk1920B_1)
gTasks[taskId].func = sub_80D8A88;
}
@@ -1541,15 +1570,15 @@ static void sub_80D8A88(u8 taskId)
{
if (++gTasks[taskId].data[0] > 19)
{
- gContestResources->field_0->unk19214 = 0;
- gContestResources->field_0->unk1921C = gRngValue;
- if ((gIsLinkContest & 1) && sub_80DA8A4())
+ eContest.unk19214 = 0;
+ eContest.unk1921C = gRngValue;
+ if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) && sub_80DA8A4())
{
s32 i;
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;
@@ -1561,50 +1590,50 @@ static void sub_80D8B38(u8 taskId)
{
u8 spriteId;
s32 i;
- u8 r6 = gContestResources->field_0->unk19215;
+ u8 r6 = eContest.unk19215;
s8 r3;
switch (gTasks[taskId].data[0])
{
case 0:
- sub_80DCD48();
- for (i = 0; gContestResources->field_0->unk19214 != gContestResources->field_8->turnOrder[i]; i++)
+ ContestDebugDoPrint();
+ for (i = 0; eContest.unk19214 != gContestResources->field_8->turnOrder[i]; i++)
;
- gContestResources->field_0->unk19215 = i;
- r6 = gContestResources->field_0->unk19215;
- if (gIsLinkContest & 1)
+ eContest.unk19215 = i;
+ r6 = eContest.unk19215;
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
u8 taskId2;
- gContestResources->field_0->unk1920B_2 = 1;
+ eContest.unk1920B_2 = 1;
if (sub_80DA8A4())
- sub_80DD080(gContestResources->field_0->unk19215);
+ sub_80DD080(eContest.unk19215);
taskId2 = CreateTask(sub_80FCC88, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110);
- sub_80DBF68();
+ ContestPrintLinkStandby();
gTasks[taskId].data[0] = 1;
}
else
{
- sub_80DD080(gContestResources->field_0->unk19215);
+ sub_80DD080(eContest.unk19215);
gTasks[taskId].data[0] = 2;
}
return;
case 1:
- if (!gContestResources->field_0->unk1920B_2)
+ if (!eContest.unk1920B_2)
gTasks[taskId].data[0] = 2;
return;
case 2:
sub_80DF080(r6);
- sub_80DF750();
- if (gContestResources->field_4[r6].numTurnsSkipped != 0
- || gContestResources->field_4[r6].noMoreTurns)
+ ContestDebugPrintBitStrings();
+ if (eContestantStatus[r6].numTurnsSkipped != 0
+ || eContestantStatus[r6].noMoreTurns)
{
gTasks[taskId].data[0] = 31;
}
else
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 3;
}
@@ -1613,17 +1642,17 @@ static void sub_80D8B38(u8 taskId)
for (i = 0; i < 4; i++)
gBattleMonForms[i] = 0;
memset(gContestResources->field_18, 0, sizeof(*gContestResources->field_18));
- sub_80DE9DC(gContestResources->field_0->unk19215);
+ sub_80DE9DC(eContest.unk19215);
spriteId = sub_80DB174(
- gContestMons[gContestResources->field_0->unk19215].species,
- gContestMons[gContestResources->field_0->unk19215].otId,
- gContestMons[gContestResources->field_0->unk19215].personality,
- gContestResources->field_0->unk19215);
+ gContestMons[eContest.unk19215].species,
+ gContestMons[eContest.unk19215].otId,
+ gContestMons[eContest.unk19215].personality,
+ eContest.unk19215);
gSprites[spriteId].pos2.x = 120;
gSprites[spriteId].callback = sub_80DA134;
gTasks[taskId].data[2] = spriteId;
gBattlerSpriteIds[gBattlerAttacker] = spriteId;
- sub_80DCBE8(sub_80DC9EC(gContestResources->field_0->unk19215), FALSE);
+ sub_80DCBE8(sub_80DC9EC(eContest.unk19215), FALSE);
gTasks[taskId].data[0] = 4;
return;
case 4:
@@ -1635,18 +1664,18 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 5:
- if (gContestResources->field_4[r6].nervous)
+ if (eContestantStatus[r6].nervous)
{
gTasks[taskId].data[0] = 33;
}
else
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
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;
@@ -1655,16 +1684,16 @@ static void sub_80D8B38(u8 taskId)
case 6:
if (!Contest_RunTextPrinters())
{
- gContestResources->field_0->unk1925E = 0;
+ eContest.unk1925E = 0;
gTasks[taskId].data[0] = 7;
}
return;
case 7:
{
- u16 move = SanitizeMove(gContestResources->field_4[gContestResources->field_0->unk19215].currMove);
+ u16 move = SanitizeMove(eContestantStatus[eContest.unk19215].currMove);
- sub_80DE864(gContestResources->field_0->unk19215);
- sub_80DE9DC(gContestResources->field_0->unk19215);
+ sub_80DE864(eContest.unk19215);
+ sub_80DE9DC(eContest.unk19215);
SelectContestMoveBankTarget(move);
DoMoveAnim(move);
gTasks[taskId].data[0] = 8;
@@ -1675,14 +1704,14 @@ static void sub_80D8B38(u8 taskId)
if (!gAnimScriptActive)
{
sub_80DE9B0(r6);
- if (gContestResources->field_0->unk1925E != 0)
+ if (eContest.unk1925E != 0)
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 9;
}
else
{
- if (!gContestResources->field_4[r6].hasJudgesAttention)
+ if (!eContestantStatus[r6].hasJudgesAttention)
sub_80DC674(r6);
sub_80DE12C();
gTasks[taskId].data[0] = 23;
@@ -1698,25 +1727,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
@@ -1735,15 +1764,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);
}
@@ -1755,7 +1784,7 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 49;
return;
case 49:
- if (!gContestResources->field_0->unk1920A_4)
+ if (!eContest.unk1920A_4)
gTasks[taskId].data[0] = 47;
return;
case 47:
@@ -1763,20 +1792,20 @@ 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:
- if (!gContestResources->field_14[gContestResources->field_0->unk19215].unk2_2)
+ if (!gContestResources->field_14[eContest.unk19215].unk2_2)
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;
case 36:
- if (!gContestResources->field_0->unk1920A_4)
+ if (!eContest.unk1920A_4)
gTasks[taskId].data[0] = 37;
return;
case 37:
@@ -1816,8 +1845,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;
@@ -1828,9 +1857,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
@@ -1847,19 +1876,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))
{
@@ -1881,17 +1910,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;
@@ -1900,10 +1929,10 @@ 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();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
StringExpandPlaceholders(gStringVar4, gText_0827E793);
Contest_StartTextPrinter(gStringVar4, 1);
@@ -1914,30 +1943,30 @@ 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();
+ ContestClearGeneralTextWindow();
if (r3 == 1)
- Contest_StartTextPrinter(gText_0827E32E, 1);
+ Contest_StartTextPrinter(gText_0827E32E, TRUE);
else if (r3 == 2)
- Contest_StartTextPrinter(gText_0827E35B, 1);
+ Contest_StartTextPrinter(gText_0827E35B, TRUE);
else
- Contest_StartTextPrinter(gText_0827E38D, 1);
+ Contest_StartTextPrinter(gText_0827E38D, TRUE);
sub_80DD720(3);
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 45;
}
else
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
StringExpandPlaceholders(gStringVar4, gText_0827E2FE);
Contest_StartTextPrinter(gStringVar4, 1);
@@ -1947,9 +1976,9 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 45:
- if (!gContestResources->field_0->unk1920A_4)
+ if (!eContest.unk1920A_4)
{
- sub_80DC9B4(gContestResources->field_0->unk19215);
+ sub_80DC9B4(eContest.unk19215);
gTasks[taskId].data[0] = 15;
}
return;
@@ -1958,13 +1987,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;
}
@@ -1978,12 +2007,12 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 17:
- if (gContestResources->field_4[r6].disappointedRepeat)
+ if (eContestantStatus[r6].disappointedRepeat)
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
- StringExpandPlaceholders(gStringVar4, gText_0827E6E3);
- Contest_StartTextPrinter(gStringVar4, 1);
+ StringExpandPlaceholders(gStringVar4, gText_RepeatedAppeal);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[10] = 0;
sub_80DD720(0);
gTasks[taskId].data[0] = 46;
@@ -1994,23 +2023,23 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 46:
- if (!gContestResources->field_0->unk1920A_4)
+ if (!eContest.unk1920A_4)
gTasks[taskId].data[0] = 19;
return;
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;
case 18:
- sub_80DCD48();
+ ContestDebugDoPrint();
if (!gContestResources->field_14[r6].unk2_2)
{
gTasks[taskId].data[10] = 0;
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 41;
}
return;
@@ -2022,25 +2051,25 @@ 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();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
- gContestResources->field_0->applauseLevel += r3;
- if (gContestResources->field_0->applauseLevel < 0)
- gContestResources->field_0->applauseLevel = 0;
+ eContest.applauseLevel += r3;
+ if (eContest.applauseLevel < 0)
+ eContest.applauseLevel = 0;
if (r3 == 0)
{
gTasks[taskId].data[0] = 55;
@@ -2049,7 +2078,7 @@ static void sub_80D8B38(u8 taskId)
{
if (r3 < 0)
StringExpandPlaceholders(gStringVar4, gText_0827E73C);
- else if (r3 > 0 && gContestResources->field_0->applauseLevel <= 4)
+ else if (r3 > 0 && eContest.applauseLevel <= 4)
StringExpandPlaceholders(gStringVar4, gText_0827E717);
else
StringExpandPlaceholders(gStringVar4, gText_0827E76A);
@@ -2072,14 +2101,14 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[10]++;
break;
case 1:
- if (!gContestResources->field_0->unk1920B_0 && !Contest_RunTextPrinters())
+ if (!eContest.unk1920B_0 && !Contest_RunTextPrinters())
{
- sub_80DDCDC(-1);
+ ShowAndUpdateApplauseMeter(-1);
gTasks[taskId].data[10]++;
}
break;
case 2:
- if (!gContestResources->field_0->unk1920A_5)
+ if (!eContest.isShowingApplauseMeter)
{
if (gTasks[taskId].data[11]++ > 29)
{
@@ -2110,22 +2139,22 @@ static void sub_80D8B38(u8 taskId)
}
break;
case 1:
- if (!gContestResources->field_0->unk1920B_0)
+ if (!eContest.unk1920B_0)
{
sub_80DDE0C();
PlaySE(SE_W227B);
- sub_80DDCDC(1);
+ ShowAndUpdateApplauseMeter(1);
gTasks[taskId].data[10]++;
}
break;
case 2:
- if (!gContestResources->field_0->unk1920A_5)
+ if (!eContest.isShowingApplauseMeter)
{
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]++;
}
}
@@ -2133,7 +2162,7 @@ static void sub_80D8B38(u8 taskId)
case 3:
if (!gContestResources->field_14[r6].unk2_2)
{
- if (!gContestResources->field_0->unk1920A_7)
+ if (!eContest.unk1920A_7)
{
sub_80DDED0(1, -1);
gTasks[taskId].data[10]++;
@@ -2153,43 +2182,43 @@ static void sub_80D8B38(u8 taskId)
case 43:
if (!gContestResources->field_14[r6].unk2_2)
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 55;
}
return;
case 57:
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
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);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0] = 58;
return;
case 58:
if (!Contest_RunTextPrinters())
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, gText_0827E817);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0] = 59;
}
return;
case 59:
if (!Contest_RunTextPrinters())
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 55;
}
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);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0] = 34;
return;
case 34:
@@ -2197,16 +2226,16 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 55;
return;
case 55:
- sub_80DDBE8();
+ TryMoveApplauseMeterOffscreen();
gTasks[taskId].data[0] = 56;
return;
case 56:
- if (!gContestResources->field_0->unk1920A_6)
+ if (!eContest.applauseMeterIsMoving)
{
- if (gContestResources->field_0->applauseLevel > 4)
+ if (eContest.applauseLevel > 4)
{
- gContestResources->field_0->applauseLevel = 0;
- sub_80DD940();
+ eContest.applauseLevel = 0;
+ UpdateApplauseMeter();
}
gTasks[taskId].data[0] = 10;
}
@@ -2230,10 +2259,10 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 21;
return;
case 31:
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
StringExpandPlaceholders(gStringVar4, gText_0827D56F);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0] = 32;
return;
case 32:
@@ -2248,7 +2277,7 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 22:
- if (++gContestResources->field_0->unk19214 == 4)
+ if (++eContest.unk19214 == 4)
{
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
@@ -2265,7 +2294,7 @@ static void sub_80D8B38(u8 taskId)
static void sub_80DA110(u8 taskId)
{
- sContest.unk1920B_2 = 0;
+ eContest.unk1920B_2 = 0;
DestroyTask(taskId);
}
@@ -2300,30 +2329,30 @@ static void sub_80DA198(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
u8 taskId2;
- sContest.unk1920B_2 = 1;
+ eContest.unk1920B_2 = 1;
if (sub_80DA8A4())
{
- sub_80DB944();
+ RankContestants();
sub_80DBA18();
}
taskId2 = CreateTask(sub_80FCC88, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110);
- sub_80DBF68();
+ ContestPrintLinkStandby();
gTasks[taskId].data[0] = 1;
}
else
{
- sub_80DB944();
+ RankContestants();
sub_80DBA18();
gTasks[taskId].data[0] = 2;
}
break;
case 1:
- if (!sContest.unk1920B_2)
+ if (!eContest.unk1920B_2)
gTasks[taskId].data[0] = 2;
break;
case 2:
@@ -2354,7 +2383,7 @@ static void sub_80DA28C(u8 taskId)
}
break;
case 1:
- if (!sContest.unk1920B_1)
+ if (!eContest.unk1920B_1)
{
if (++gTasks[taskId].data[1] > 20)
{
@@ -2380,7 +2409,7 @@ static void sub_80DA31C(u8 taskId)
static void sub_80DA348(u8 taskId)
{
- DmaCopy32Defvars(3, shared18000.unk18204, gPlttBufferUnfaded, 0x400);
+ DmaCopy32Defvars(3, eUnknownHeap1A004.unk18204, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 2;
gTasks[taskId].func = sub_80DA38C;
@@ -2400,12 +2429,12 @@ static void sub_80DA3CC(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- u8 r4 = sContestantStatus[gContestPlayerMonIndex].attentionLevel;
+ u8 r4 = eContestantStatus[gContestPlayerMonIndex].attentionLevel;
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname);
StringExpandPlaceholders(gStringVar4, gUnknown_08587D90[r4]);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0]++;
}
else
@@ -2414,7 +2443,7 @@ static void sub_80DA3CC(u8 taskId)
{
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_80DA464;
- sub_80DCD48();
+ ContestDebugDoPrint();
}
}
}
@@ -2458,21 +2487,21 @@ static void sub_80DA51C(u8 taskId)
((vBgCnt *)&sp2)->priority = 0;
SetGpuReg(REG_OFFSET_BG0CNT, sp0);
SetGpuReg(REG_OFFSET_BG2CNT, sp2);
- sContest.turnNumber++;
- if (sContest.turnNumber == 5)
+ eContest.turnNumber++;
+ if (eContest.turnNumber == 5)
{
gTasks[taskId].func = sub_80DA5E8;
}
else
{
- sub_80DDB0C();
+ StartMoveApplauseMeterOnscreen();
gTasks[taskId].func = sub_80DA5B4;
}
}
static void sub_80DA5B4(u8 taskId)
{
- if (!sContest.unk1920A_6)
+ if (!eContest.applauseMeterIsMoving)
gTasks[taskId].func = sub_80D833C;
}
@@ -2483,20 +2512,20 @@ static void sub_80DA5E8(u8 taskId)
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
for (i = 0; i < 4; i++)
- gUnknown_02039F10[i] = sContestantStatus[i].unk4;
+ gUnknown_02039F10[i] = eContestantStatus[i].pointTotal;
sub_80DBD18();
- sub_80DB89C();
- if (!(gIsLinkContest & 1))
- BravoTrainerPokemonProfile_BeforeInterview1(sContestantStatus[gContestPlayerMonIndex].prevMove);
+ ContestClearGeneralTextWindow();
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
+ BravoTrainerPokemonProfile_BeforeInterview1(eContestantStatus[gContestPlayerMonIndex].prevMove);
else
{
sub_80DF250();
sub_80DF4F8();
- sub_80DF750();
+ ContestDebugPrintBitStrings();
}
gContestRngValue = gRngValue;
StringExpandPlaceholders(gStringVar4, gText_0827D597);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[2] = 0;
gTasks[taskId].func = sub_80DA6B4;
}
@@ -2519,7 +2548,7 @@ static void sub_80DA700(u8 taskId)
gBattle_BG1_Y -= 7;
if ((s16)gBattle_BG1_Y < 0)
gBattle_BG1_Y = 0;
- if (gBattle_BG1_Y == 0) // Why cast?
+ if (gBattle_BG1_Y == 0)
{
gTasks[taskId].func = sub_80DA740;
gTasks[taskId].data[0] = 0;
@@ -2531,13 +2560,13 @@ static void sub_80DA740(u8 taskId)
if (gTasks[taskId].data[0]++ >= 50)
{
gTasks[taskId].data[0] = 0;
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
gTasks[taskId].func = sub_80DA7A0;
}
else
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = sub_80DA830;
}
}
@@ -2549,15 +2578,15 @@ static void sub_80DA7A0(u8 taskId)
SetTaskFuncWithFollowupFunc(taskId2, sub_80FCACC, sub_80DA7EC);
gTasks[taskId].func = TaskDummy1;
- sub_80DBF68();
+ ContestPrintLinkStandby();
sub_80DC490(FALSE);
}
static void sub_80DA7EC(u8 taskId)
{
DestroyTask(taskId);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gTasks[sContest.mainTaskId].func = sub_80DA830;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[eContest.mainTaskId].func = sub_80DA830;
}
static void sub_80DA830(u8 taskId)
@@ -2567,7 +2596,7 @@ static void sub_80DA830(u8 taskId)
DestroyTask(taskId);
gFieldCallback = sub_80DA874;
FreeAllWindowBuffers();
- sub_80D7A5C();
+ FreeContestResources();
FreeMonSpritesGfx();
SetMainCallback2(CB2_ReturnToField);
}
@@ -2579,9 +2608,9 @@ static void sub_80DA874(void)
EnableBothScriptContexts();
}
-static void sub_80DA884(void)
+static void TryPutPlayerLast(void)
{
- if (!(gIsLinkContest & 1))
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
gContestPlayerMonIndex = 3;
}
@@ -2603,7 +2632,7 @@ void sub_80DA8C8(u8 partyIndex)
s16 tough;
StringCopy(name, gSaveBlock2Ptr->playerName);
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
sub_80DF9D4(name);
}
@@ -2612,12 +2641,12 @@ void sub_80DA8C8(u8 partyIndex)
gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_BRENDAN;
else
gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_MAY;
- gContestMons[gContestPlayerMonIndex].flags = 0;
+ gContestMons[gContestPlayerMonIndex].aiChecks = 0;
gContestMons[gContestPlayerMonIndex].unk2C[0] = 0;
gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name);
StringGetEnd10(name);
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
sub_80DF9E0(name, GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE));
}
@@ -2677,9 +2706,9 @@ void sub_80DAB8C(u8 contestType, u8 rank)
bool8 r7 = FALSE;
const u8 * r3;
- sub_80DA884();
+ TryPutPlayerLast();
- if (FlagGet(FLAG_SYS_GAME_CLEAR) && !(gIsLinkContest & 1))
+ if (FlagGet(FLAG_SYS_GAME_CLEAR) && !(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
r7 = TRUE;
// Find all suitable opponents
@@ -2815,55 +2844,55 @@ u8 sub_80DAE0C(struct Pokemon *pkmn)
return retVal;
}
-static void sub_80DAEA4(void)
+static void DrawContestantWindowText(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- FillWindowPixelBuffer(gUnknown_02039F26[i], PIXEL_FILL(0));
- sub_80DAF04(i);
- sub_80DAF88(i);
+ FillWindowPixelBuffer(gContestantTurnOrder[i], PIXEL_FILL(0));
+ PrintContestantTrainerName(i);
+ PrintContestantMonName(i);
}
}
-static u8 *sub_80DAED4(const u8 *src, u8 color)
+static u8 *Contest_CopyStringWithColor(const u8 *string, u8 color)
{
u8 * ptr = StringCopy(gDisplayedStringBattle, gText_ColorTransparent);
- ptr[-1] = color;
- ptr = StringCopy(ptr, src);
+ ptr[-1] = color; // Overwrites the "{COLOR TRANSPARENT}" part of the string.
+ ptr = StringCopy(ptr, string);
return ptr;
}
-static void sub_80DAF04(u8 a0)
+static void PrintContestantTrainerName(u8 contestant)
{
- sub_80DAF1C(a0, a0 + 10);
+ PrintContestantTrainerNameWithColor(contestant, contestant + CONTESTANT_TEXT_COLOR_START);
}
-static void sub_80DAF1C(u8 a0, u8 a1)
+static void PrintContestantTrainerNameWithColor(u8 contestant, u8 color)
{
u8 buffer[32];
s32 offset;
StringCopy(buffer, gText_Slash);
- StringAppend(buffer, gContestMons[a0].trainerName);
- sub_80DAED4(buffer, a1);
+ StringAppend(buffer, gContestMons[contestant].trainerName);
+ Contest_CopyStringWithColor(buffer, color);
offset = GetStringRightAlignXOffset(7, gDisplayedStringBattle, 0x60);
if (offset > 55)
offset = 55;
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, offset, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[contestant], gDisplayedStringBattle, offset, 1, 7);
}
-static void sub_80DAF88(u8 a0)
+static void PrintContestantMonName(u8 contestant)
{
- sub_80DAFA0(a0, a0 + 10);
+ PrintContestantMonNameWithColor(contestant, contestant + CONTESTANT_TEXT_COLOR_START);
}
-static void sub_80DAFA0(u8 a0, u8 a1)
+static void PrintContestantMonNameWithColor(u8 contestant, u8 color)
{
- sub_80DAED4(gContestMons[a0].nickname, a1);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, 5, 1, 7);
+ Contest_CopyStringWithColor(gContestMons[contestant].nickname, color);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[contestant], gDisplayedStringBattle, 5, 1, 7);
}
static u16 sub_80DAFE0(u8 who, u8 contestCategory)
@@ -2973,10 +3002,13 @@ bool8 IsSpeciesNotUnown(u16 species)
return TRUE;
}
-static void sub_80DB2BC(void)
+// The contestant info windows and general-purpose text box are drawn on one half, while
+// the moves and move description windows are drawn on another screen. Only the first 32 * 20
+// tiles are actually drawn on screen.
+static void SwapMoveDescAndContestTilemaps(void)
{
- CpuCopy16(gContestResources->field_24[0], gContestResources->field_24[0] + 0x500, 0x280);
- CpuCopy16(gContestResources->field_24[2], gContestResources->field_24[2] + 0x500, 0x280);
+ CpuCopy16(gContestResources->contestBgTilemaps[0], gContestResources->contestBgTilemaps[0] + 0x500, 32 * 20);
+ CpuCopy16(gContestResources->contestBgTilemaps[2], gContestResources->contestBgTilemaps[2] + 0x500, 32 * 20);
}
static u16 sub_80DB2EC(u16 a0, u8 a1)
@@ -3002,12 +3034,13 @@ static u16 sub_80DB2EC(u16 a0, u8 a1)
return var;
}
-static void prints_contest_move_description(u16 a)
+static void PrintContestMoveDescription(u16 a)
{
u8 category;
u16 categoryTile;
u8 numHearts;
+ // The contest category icon is implemented as a 5x2 group of tiles.
category = gContestMoves[a].contestCategory;
if (category == CONTEST_CATEGORY_COOL)
categoryTile = 0x4040;
@@ -3029,7 +3062,9 @@ static void prints_contest_move_description(u16 a)
numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10;
if (numHearts > 8)
numHearts = 8;
+ // Filled-in hearts
ContestBG_FillBoxWithTile(0, 0x5035, 0x15, 0x1f, 0x08, 0x01, 0x11);
+ // Empty hearts
ContestBG_FillBoxWithTile(0, 0x5012, 0x15, 0x1f, numHearts, 0x01, 0x11);
if (gContestEffects[gContestMoves[a].effect].jam == 0xFF)
@@ -3038,17 +3073,19 @@ static void prints_contest_move_description(u16 a)
numHearts = gContestEffects[gContestMoves[a].effect].jam / 10;
if (numHearts > 8)
numHearts = 8;
+ // Filled-in hearts
ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11);
+ // Empty hearts
ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11);
- FillWindowPixelBuffer(10, PIXEL_FILL(0));
- Contest_PrintTextToBg0WindowStd(10, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
- Contest_PrintTextToBg0WindowStd(9, gText_Slash);
+ FillWindowPixelBuffer(CONTEST_WINDOW_MOVE_DESCRIPTION, PIXEL_FILL(0));
+ Contest_PrintTextToBg0WindowStd(CONTEST_WINDOW_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
+ Contest_PrintTextToBg0WindowStd(CONTEST_WINDOW_SLASH, gText_Slash);
}
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)
{
@@ -3068,7 +3105,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)
@@ -3081,17 +3118,17 @@ static bool8 sub_80DB5B8(u8 contestantIdx, bool8 resetMod)
u8 r6;
s32 r4;
- if (sContestantStatus[contestantIdx].conditionMod == 0)
+ if (eContestantStatus[contestantIdx].conditionMod == 0)
return FALSE;
- r6 = gUnknown_02039F26[contestantIdx] * 5 + 2;
- r4 = sContestantStatus[contestantIdx].condition / 10;
- if (sContestantStatus[contestantIdx].conditionMod == 1)
+ r6 = gContestantTurnOrder[contestantIdx] * 5 + 2;
+ r4 = eContestantStatus[contestantIdx].condition / 10;
+ if (eContestantStatus[contestantIdx].conditionMod == 1)
{
ContestBG_FillBoxWithTile(0, sub_80DB5B0(), 19, r6, 1, r4, 17);
if (resetMod)
{
PlaySE(SE_EXPMAX);
- sContestantStatus[contestantIdx].conditionMod = 0;
+ eContestantStatus[contestantIdx].conditionMod = 0;
}
}
else
@@ -3100,7 +3137,7 @@ static bool8 sub_80DB5B8(u8 contestantIdx, bool8 resetMod)
if (resetMod)
{
PlaySE(SE_FU_ZAKU2);
- sContestantStatus[contestantIdx].conditionMod = 0;
+ eContestantStatus[contestantIdx].conditionMod = 0;
}
}
return TRUE;
@@ -3111,12 +3148,12 @@ static void sub_80DB69C(void)
s32 i;
s32 r6;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- u8 r4 = gUnknown_02039F26[i] * 5 + 2;
+ u8 r4 = gContestantTurnOrder[i] * 5 + 2;
u16 r5 = sub_80DB5B0();
- r6 = sContestantStatus[i].condition / 10;
+ r6 = eContestantStatus[i].condition / 10;
ContestBG_FillBoxWithTile(0, r5, 19, r4, 1, r6, 17);
ContestBG_FillBoxWithTile(0, 0, 19, r4 + r6, 1, 3 - r6, 17);
}
@@ -3152,13 +3189,13 @@ 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 (sContestantStatus[a].resistant != 0 || sContestantStatus[a].immune != 0 || sContestantStatus[a].jamSafetyCount != 0 || sContestantStatus[a].jamReduction != 0)
+ if (eContestantStatus[a].resistant != 0 || eContestantStatus[a].immune != 0 || eContestantStatus[a].jamSafetyCount != 0 || eContestantStatus[a].jamReduction != 0)
r8 = sub_80DB748(0);
- else if (sContestantStatus[a].nervous)
+ else if (eContestantStatus[a].nervous)
r8 = sub_80DB748(1);
- else if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ else if (eContestantStatus[a].numTurnsSkipped != 0 || eContestantStatus[a].noMoreTurns)
r8 = sub_80DB748(2);
else
r9 = FALSE;
@@ -3182,50 +3219,52 @@ static void sub_80DB884(void)
sub_80DB798(i);
}
-static void sub_80DB89C(void)
+static void ContestClearGeneralTextWindow(void)
{
- FillWindowPixelBuffer(4, PIXEL_FILL(0));
- CopyWindowToVram(4, 2);
+ FillWindowPixelBuffer(CONTEST_WINDOW_GENERAL_TEXT, PIXEL_FILL(0));
+ CopyWindowToVram(CONTEST_WINDOW_GENERAL_TEXT, 2);
Contest_SetBgCopyFlags(0);
}
-static u16 GetChosenMove(u8 a)
+static u16 GetChosenMove(u8 contestant)
{
- if (Contest_IsMonsTurnDisabled(a))
+ if (Contest_IsMonsTurnDisabled(contestant))
return 0;
- if (a == gContestPlayerMonIndex)
+ if (contestant == gContestPlayerMonIndex)
{
- return gContestMons[a].moves[sContest.playerMoveChoice];
+ return gContestMons[contestant].moves[eContest.playerMoveChoice];
}
else
{
u8 moveChoice;
- ContestAI_ResetAI(a);
+ ContestAI_ResetAI(contestant);
moveChoice = ContestAI_GetActionToUse();
- return gContestMons[a].moves[moveChoice];
+ return gContestMons[contestant].moves[moveChoice];
}
}
-static void sub_80DB918(void)
+static void GetAllChosenMoves(void)
{
s32 i;
- for (i = 0; i < 4; i++)
- sContestantStatus[i].currMove = GetChosenMove(i);
+ for (i = 0; i < CONTESTANT_COUNT; i++)
+ eContestantStatus[i].currMove = GetChosenMove(i);
}
-static void sub_80DB944(void)
+static void RankContestants(void)
{
s32 i;
s32 j;
- s16 arr[4];
+ s16 arr[CONTESTANT_COUNT];
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sContestantStatus[i].unk4 += sContestantStatus[i].appeal2;
- arr[i] = sContestantStatus[i].unk4;
+ eContestantStatus[i].pointTotal += eContestantStatus[i].appeal2;
+ arr[i] = eContestantStatus[i].pointTotal;
}
+
+ // Sort the point totals using bubble-sort.
for (i = 0; i < 3; i++)
{
for (j = 3; j > i; j--)
@@ -3239,49 +3278,59 @@ static void sub_80DB944(void)
}
}
}
- for (i = 0; i < 4; i++)
+
+ // For each contestant, find the best rank with their point total.
+ // Normally, each point total is different, and this will output the
+ // rankings as expected. However, if two pokemon are tied, then they
+ // both get the best rank for that point total.
+ //
+ // For example if the point totals are [100, 80, 80, 50], the ranks will
+ // be [1, 2, 2, 4]. The pokemon with a point total of 80 stop looking
+ // when they see the first 80 in the array, so they both share the '2'
+ // rank.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- for (j = 0; j < 4; j++)
+ for (j = 0; j < CONTESTANT_COUNT; j++)
{
- if (sContestantStatus[i].unk4 == arr[j])
+ if (eContestantStatus[i].pointTotal == arr[j])
{
- sContestantStatus[i].unkB_0 = j;
+ eContestantStatus[i].ranking = j;
break;
}
}
}
- sub_80DCE58(1);
- sub_80DD590();
+ SortContestants(TRUE);
+ ApplyNextTurnOrder();
}
static void sub_80DBA18(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
u8 attentionLevel;
- if (sContestantStatus[i].currMove == MOVE_NONE)
+ if (eContestantStatus[i].currMove == MOVE_NONE)
attentionLevel = 5;
- else if (sContestantStatus[i].appeal2 <= 0)
+ else if (eContestantStatus[i].appeal2 <= 0)
attentionLevel = 0;
- else if (sContestantStatus[i].appeal2 < 30)
+ else if (eContestantStatus[i].appeal2 < 30)
attentionLevel = 1;
- else if (sContestantStatus[i].appeal2 < 60)
+ else if (eContestantStatus[i].appeal2 < 60)
attentionLevel = 2;
- else if (sContestantStatus[i].appeal2 < 80)
+ else if (eContestantStatus[i].appeal2 < 80)
attentionLevel = 3;
else
attentionLevel = 4;
- sContestantStatus[i].attentionLevel = attentionLevel;
+ eContestantStatus[i].attentionLevel = attentionLevel;
}
}
-static bool8 sub_80DBA68(u8 a)
+static bool8 ContestantCanUseTurn(u8 contestant)
{
- if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns)
return FALSE;
else
return TRUE;
@@ -3291,92 +3340,92 @@ static void sub_80DBAA0(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sContestantStatus[i].appeal2 = 0;
- sContestantStatus[i].appeal1 = 0;
- sContestantStatus[i].jamSafetyCount = 0;
- if (sContestantStatus[i].numTurnsSkipped > 0)
- sContestantStatus[i].numTurnsSkipped--;
- sContestantStatus[i].jam = 0;
- sContestantStatus[i].resistant = 0;
- sContestantStatus[i].jamReduction = 0;
- sContestantStatus[i].immune = 0;
- sContestantStatus[i].moreEasilyStartled = 0;
- sContestantStatus[i].usedRepeatableMove = 0;
- sContestantStatus[i].nervous = 0;
- sContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
- sContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
- sContestantStatus[i].conditionMod = 0;
- sContestantStatus[i].unk15_2 = sContestantStatus[i].disappointedRepeat;
- sContestantStatus[i].disappointedRepeat = FALSE;
- sContestantStatus[i].turnOrderModAction = 0;
- sContestantStatus[i].appealTripleCondition = 0;
- if (sContestantStatus[i].turnSkipped)
- {
- sContestantStatus[i].numTurnsSkipped = 1;
- sContestantStatus[i].turnSkipped = 0;
- }
- if (sContestantStatus[i].exploded)
- {
- sContestantStatus[i].noMoreTurns = 1;
- sContestantStatus[i].exploded = 0;
- }
- sContestantStatus[i].overrideCategoryExcitementMod = 0;
+ eContestantStatus[i].appeal2 = 0;
+ eContestantStatus[i].appeal1 = 0;
+ eContestantStatus[i].jamSafetyCount = 0;
+ if (eContestantStatus[i].numTurnsSkipped > 0)
+ eContestantStatus[i].numTurnsSkipped--;
+ eContestantStatus[i].jam = 0;
+ eContestantStatus[i].resistant = 0;
+ eContestantStatus[i].jamReduction = 0;
+ eContestantStatus[i].immune = 0;
+ eContestantStatus[i].moreEasilyStartled = 0;
+ eContestantStatus[i].usedRepeatableMove = 0;
+ eContestantStatus[i].nervous = FALSE;
+ eContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
+ eContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
+ eContestantStatus[i].conditionMod = 0;
+ eContestantStatus[i].unk15_2 = eContestantStatus[i].disappointedRepeat;
+ eContestantStatus[i].disappointedRepeat = FALSE;
+ eContestantStatus[i].turnOrderModAction = 0;
+ eContestantStatus[i].appealTripleCondition = 0;
+ if (eContestantStatus[i].turnSkipped)
+ {
+ eContestantStatus[i].numTurnsSkipped = 1;
+ eContestantStatus[i].turnSkipped = 0;
+ }
+ if (eContestantStatus[i].exploded)
+ {
+ eContestantStatus[i].noMoreTurns = 1;
+ eContestantStatus[i].exploded = 0;
+ }
+ eContestantStatus[i].overrideCategoryExcitementMod = 0;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sContestantStatus[i].prevMove = sContestantStatus[i].currMove;
- sContest.unk19220[sContest.turnNumber][i] = sContestantStatus[i].currMove;
- sContest.unk19248[sContest.turnNumber][i] = Contest_GetMoveExcitement(sContestantStatus[i].currMove);
- sContestantStatus[i].currMove = MOVE_NONE;
+ eContestantStatus[i].prevMove = eContestantStatus[i].currMove;
+ eContest.moveHistory[eContest.turnNumber][i] = eContestantStatus[i].currMove;
+ eContest.excitementHistory[eContest.turnNumber][i] = Contest_GetMoveExcitement(eContestantStatus[i].currMove);
+ eContestantStatus[i].currMove = MOVE_NONE;
}
- shared19328.excitementFrozen = 0;
+ eContestResources10.excitementFrozen = 0;
}
bool8 Contest_IsMonsTurnDisabled(u8 a)
{
- if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ if (eContestantStatus[a].numTurnsSkipped != 0 || eContestantStatus[a].noMoreTurns)
return TRUE;
else
return FALSE;
}
-static void sub_80DBCE0(u8 a)
+static void sub_80DBCE0(u8 contestant)
{
- gUnknown_02039F18[a] = sub_80DBD34(a);
- gUnknown_02039F08[a] = gContestMonConditions[a] + gUnknown_02039F18[a];
+ gUnknown_02039F18[contestant] = sub_80DBD34(contestant);
+ gUnknown_02039F08[contestant] = gContestMonConditions[contestant] + gUnknown_02039F18[contestant];
}
static void sub_80DBD18(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
sub_80DBCE0(i);
DetermineFinalStandings();
}
-static s16 sub_80DBD34(u8 a)
+static s16 sub_80DBD34(u8 contestant)
{
- return gUnknown_02039F10[a] * 2;
+ return gUnknown_02039F10[contestant] * 2;
}
static void DetermineFinalStandings(void)
{
- u16 sp0[4] = {0};
- struct UnknownContestStruct6 sp8[4];
+ u16 randomOrdering[CONTESTANT_COUNT] = {0};
+ struct UnknownContestStruct6 sp8[CONTESTANT_COUNT];
s32 i;
s32 j;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
s32 r2;
- sp0[i] = Random();
+ randomOrdering[i] = Random();
for (r2 = 0; r2 < i; r2++)
{
- if (sp0[i] == sp0[r2])
+ if (randomOrdering[i] == randomOrdering[r2])
{
i--;
break;
@@ -3384,11 +3433,11 @@ static void DetermineFinalStandings(void)
}
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
sp8[i].unk0 = gUnknown_02039F08[i];
sp8[i].unk4 = gContestMonConditions[i];
- sp8[i].unk8 = sp0[i];
+ sp8[i].unk8 = randomOrdering[i];
sp8[i].unkC = i;
}
@@ -3418,13 +3467,13 @@ static void DetermineFinalStandings(void)
}
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
gContestFinalStandings[sp8[i].unkC] = i;
}
-void sub_80DBED4(void)
+void SaveLinkContestResults(void)
{
- if ((gIsLinkContest & 1))
+ if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
{
gSaveBlock2Ptr->contestLinkResults[gSpecialVar_ContestCategory][gContestFinalStandings[gContestPlayerMonIndex]] =
((gSaveBlock2Ptr->contestLinkResults[gSpecialVar_ContestCategory][gContestFinalStandings[gContestPlayerMonIndex]] + 1) > 9999) ? 9999 :
@@ -3452,19 +3501,19 @@ static bool8 sub_80DBF30(s32 a, s32 b, struct UnknownContestStruct6 *c)
return retVal;
}
-static void sub_80DBF68(void)
+static void ContestPrintLinkStandby(void)
{
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
- sub_80DB89C();
- Contest_StartTextPrinter((u8*) &gUnknown_0827E8DA, 0);
+ ContestClearGeneralTextWindow();
+ Contest_StartTextPrinter(gText_LinkStandby4, 0);
}
-static void sub_80DBF90(void)
+static void FillContestantWindowBgs(void)
{
int i;
- for(i = 0; i < 4; i++)
+ for(i = 0; i < CONTESTANT_COUNT; i++)
{
ContestBG_FillBoxWithTile(0, 0, 0x16, 2 + i * 5, 8, 2, 0x11);
}
@@ -3592,7 +3641,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);
@@ -3614,28 +3663,28 @@ static void sub_80DC2BC(void)
s32 i;
LoadSpriteSheet(&gUnknown_08587A74);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; 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);
}
}
-static void sub_80DC308(u8 a)
+static void sub_80DC308(u8 contestant)
{
u8 spriteId;
s16 r5;
- gContestResources->field_14[a].unk2_0 = 1;
- spriteId = gContestResources->field_14[a].unk0;
- r5 = sContestantStatus[a].unk4 / 10 * 2;
+ gContestResources->field_14[contestant].unk2_0 = 1;
+ spriteId = gContestResources->field_14[contestant].unk0;
+ r5 = eContestantStatus[contestant].pointTotal / 10 * 2;
if (r5 > 56)
r5 = 56;
else if (r5 < 0)
r5 = 0;
gSprites[spriteId].invisible = FALSE;
- gSprites[spriteId].data[0] = a;
+ gSprites[spriteId].data[0] = contestant;
gSprites[spriteId].data[1] = r5;
if (gSprites[spriteId].data[1] > gSprites[spriteId].pos2.x)
gSprites[spriteId].data[2] = 1;
@@ -3648,7 +3697,7 @@ static void sub_80DC3AC(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
sub_80DC308(i);
}
@@ -3656,12 +3705,12 @@ static bool8 sub_80DC3C4(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (gContestResources->field_14[i].unk2_0)
break;
}
- if (i == 4)
+ if (i == CONTESTANT_COUNT)
return TRUE;
else
return FALSE;
@@ -3684,17 +3733,17 @@ 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]];
+ for (i = 0; i < CONTESTANT_COUNT; i++)
+ gSprites[gContestResources->field_14[i].unk0].pos1.y = gUnknown_08587A6C[gContestantTurnOrder[i]];
}
static void sub_80DC490(bool8 a)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- if (gUnknown_02039F26[i] > 1)
+ if (gContestantTurnOrder[i] > 1)
{
if (!a)
gSprites[gContestResources->field_14[i].unk0].pos1.x = 180;
@@ -3709,12 +3758,12 @@ static void sub_80DC4F0(void)
s32 i;
LoadSpritePalette(&gUnknown_08587B08);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
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;
@@ -3725,11 +3774,11 @@ static void CreateApplauseMeterSprite(void)
{
u8 spriteId;
- LoadCompressedSpriteSheet(&gUnknown_08587BB0);
- LoadSpritePalette(&gUnknown_08587BB8);
- spriteId = CreateSprite(&gSpriteTemplate_8587BC8, 30, 44, 1);
+ LoadCompressedSpriteSheet(&sApplauseMeterSpriteSheet);
+ LoadSpritePalette(&sApplauseMeterPalette);
+ spriteId = CreateSprite(&sApplauseMeterSpriteTemplate, 30, 44, 1);
gSprites[spriteId].invisible = TRUE;
- sContest.applauseMeterSpriteId = spriteId;
+ eContest.applauseMeterSpriteId = spriteId;
}
static void sub_80DC5E8(void)
@@ -3737,15 +3786,15 @@ static void sub_80DC5E8(void)
u8 i;
u8 taskId = CreateTask(sub_80DC728, 30);
- sContest.unk19211 = taskId;
- for (i = 0; i < 4; i++)
+ eContest.unk19211 = taskId;
+ for (i = 0; i < CONTESTANT_COUNT; i++)
gTasks[taskId].data[i * 4] = 0xFF;
}
static void sub_80DC630(u8 a)
{
- gTasks[sContest.unk19211].data[a * 4 + 0] = 0;
- gTasks[sContest.unk19211].data[a * 4 + 1] = 0;
+ gTasks[eContest.unk19211].data[a * 4 + 0] = 0;
+ gTasks[eContest.unk19211].data[a * 4 + 1] = 0;
}
static void sub_80DC674(u8 a)
@@ -3759,12 +3808,12 @@ static void sub_80DC6A4(u8 taskId)
{
u8 r4 = gTasks[taskId].data[0];
- if (gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0
- || gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0xFF)
+ if (gTasks[eContest.unk19211].data[r4 * 4 + 0] == 0
+ || gTasks[eContest.unk19211].data[r4 * 4 + 0] == 0xFF)
{
- gTasks[sContest.unk19211].data[r4 * 4 + 0] = 0xFF;
- gTasks[sContest.unk19211].data[r4 * 4 + 1] = 0;
- BlendPalette((sContest.unk19218[r4] + 5) * 16 + 6, 2, 0, RGB(31, 31, 18));
+ gTasks[eContest.unk19211].data[r4 * 4 + 0] = 0xFF;
+ gTasks[eContest.unk19211].data[r4 * 4 + 1] = 0;
+ BlendPalette((eContest.prevTurnOrder[r4] + MOVE_WINDOWS_START) * 16 + 6, 2, 0, RGB(31, 31, 18));
DestroyTask(taskId);
}
}
@@ -3773,7 +3822,7 @@ static void sub_80DC728(u8 taskId)
{
u8 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
u8 r3 = i * 4;
@@ -3789,7 +3838,7 @@ static void sub_80DC728(u8 taskId)
gTasks[taskId].data[r3 + 1] ^= 1;
BlendPalette(
- (sContest.unk19218[i] + 5) * 16 + 6,
+ (eContest.prevTurnOrder[i] + MOVE_WINDOWS_START) * 16 + 6,
2,
gTasks[taskId].data[r3 + 0],
RGB(31, 31, 18));
@@ -3801,15 +3850,15 @@ static void sub_80DC7EC(void)
{
s32 i;
- sContest.unk19212 = CreateTask(sub_80DC8D0, 30);
- for (i = 0; i < 4; i++)
+ eContest.unk19212 = CreateTask(sub_80DC8D0, 30);
+ for (i = 0; i < CONTESTANT_COUNT; i++)
sub_80DC81C(i);
}
-static void sub_80DC81C(u8 a)
+static void sub_80DC81C(u8 contestant)
{
- gTasks[sContest.unk19212].data[a * 4 + 0] = 0xFF;
- gTasks[sContest.unk19212].data[a * 4 + 1] = 0;
+ gTasks[eContest.unk19212].data[contestant * 4 + 0] = 0xFF;
+ gTasks[eContest.unk19212].data[contestant * 4 + 1] = 0;
}
static void sub_80DC864(void)
@@ -3820,22 +3869,22 @@ static void sub_80DC864(void)
sub_80DC87C(i);
}
-static void sub_80DC87C(u8 a)
+static void sub_80DC87C(u8 contestant)
{
- u32 var;
- u32 r0;
+ u32 windowId1;
+ u32 windowId2;
- sub_80DC81C(a);
+ sub_80DC81C(contestant);
- r0 = a + 5;
+ windowId1 = contestant + MOVE_WINDOWS_START;
DmaCopy16Defvars(3,
- gPlttBufferUnfaded + r0 * 16 + 10,
- gPlttBufferFaded + r0 * 16 + 10,
+ gPlttBufferUnfaded + windowId1 * 16 + 10,
+ gPlttBufferFaded + windowId1 * 16 + 10,
2);
- var = (a + 5) * 16 + 12 + a;
+ windowId2 = (contestant + MOVE_WINDOWS_START) * 16 + 12 + contestant;
DmaCopy16Defvars(3,
- gPlttBufferUnfaded + var,
- gPlttBufferFaded + var,
+ gPlttBufferUnfaded + windowId2,
+ gPlttBufferFaded + windowId2,
2);
}
@@ -3843,7 +3892,7 @@ static void sub_80DC8D0(u8 taskId)
{
u8 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
u8 r3 = i * 4;
@@ -3862,41 +3911,41 @@ static void sub_80DC8D0(u8 taskId)
|| gTasks[taskId].data[r3 + 0] == 0)
gTasks[taskId].data[r3 + 1] ^= 1;
- BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
- BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
+ BlendPalette((i + MOVE_WINDOWS_START) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
+ BlendPalette((i + MOVE_WINDOWS_START) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
}
}
}
}
-static void sub_80DC9B4(u8 a)
+static void sub_80DC9B4(u8 contestant)
{
- if (sContestantStatus[a].hasJudgesAttention)
- sub_80DC630(a);
+ if (eContestantStatus[contestant].hasJudgesAttention)
+ sub_80DC630(contestant);
else
- sub_80DC674(a);
+ sub_80DC674(contestant);
}
-static u8 sub_80DC9EC(u8 a)
+static u8 sub_80DC9EC(u8 contestant)
{
u8 spriteId1, spriteId2;
- u8 x = gUnknown_02039F26[a] * 40 + 32;
+ u8 x = gContestantTurnOrder[contestant] * 40 + 32;
- LoadCompressedSpriteSheet(&sUnknown_08589904[a]);
- LoadSpritePalette(&sUnknown_08589924[a]);
- spriteId1 = CreateSprite(&gSpriteTemplate_858998C[a], 184, x, 29);
- spriteId2 = CreateSprite(&gSpriteTemplate_858998C[a], 248, x, 29);
+ LoadCompressedSpriteSheet(&sUnknown_08589904[contestant]);
+ LoadSpritePalette(&sUnknown_08589924[contestant]);
+ spriteId1 = CreateSprite(&gSpriteTemplate_858998C[contestant], 184, x, 29);
+ spriteId2 = CreateSprite(&gSpriteTemplate_858998C[contestant], 248, x, 29);
gSprites[spriteId2].oam.tileNum += 64;
CopySpriteTiles(0,
3,
(void *)VRAM,
- (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x26),
+ (u16 *)(BG_SCREEN_ADDR(28) + gContestantTurnOrder[contestant] * 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[contestant] * 5 * 64 + 0x36),
gContestResources->field_38);
CpuFill32(0, gContestResources->field_34 + 0x500, 0x300);
@@ -3915,8 +3964,8 @@ static u8 sub_80DC9EC(u8 a)
gSprites[spriteId1].data[0] = spriteId2;
gSprites[spriteId2].data[0] = spriteId1;
- gSprites[spriteId1].data[1] = a;
- gSprites[spriteId2].data[1] = a;
+ gSprites[spriteId1].data[1] = contestant;
+ gSprites[spriteId2].data[1] = contestant;
return spriteId1;
}
@@ -3981,164 +4030,203 @@ static void sub_80DCCD8(struct Sprite *sprite)
sub_80DCBD0();
}
-static void sub_80DCD08(void)
+// Unused.
+static void ContestDebugTogglePointTotal(void)
{
- if(gHeap[0x1A000] == 1)
- gHeap[0x1A000] = 0;
+ if(eContestDebugMode == CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL)
+ eContestDebugMode = CONTEST_DEBUG_MODE_OFF;
else
- gHeap[0x1A000] = 1;
+ eContestDebugMode = CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL;
- if(gHeap[0x1A000] == 0)
+ if(eContestDebugMode == CONTEST_DEBUG_MODE_OFF)
{
- sub_80DAEA4();
- sub_80DB2BC();
+ DrawContestantWindowText();
+ SwapMoveDescAndContestTilemaps();
}
else
{
- sub_80DCD48();
+ ContestDebugDoPrint();
}
}
-static void sub_80DCD48(void)
+static void ContestDebugDoPrint(void)
{
u8 i;
s16 value;
u8 *txtPtr;
u8 text[8];
- if (gUnknown_020322D5 == 0)
+ if (!gEnableContestDebugging)
return;
- switch (gHeap[0x1A000])
+ switch (eContestDebugMode)
{
- case 0:
+ case CONTEST_DEBUG_MODE_OFF:
break;
- case 2:
- case 3:
- sub_80DF750();
+ case CONTEST_DEBUG_MODE_PRINT_UNK_C:
+ case CONTEST_DEBUG_MODE_PRINT_UNK_D:
+ ContestDebugPrintBitStrings();
break;
+ // The only other possible value is 1, which is only set by ContestDebugTogglePointTotal.
+ //
+ // case CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL:
default:
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- value = sContestantStatus[i].unk4;
+ value = eContestantStatus[i].pointTotal;
txtPtr = text;
- if (sContestantStatus[i].unk4 < 0)
+ if (eContestantStatus[i].pointTotal < 0)
{
value *= -1;
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++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- value = sContestantStatus[i].appeal2;
+ value = eContestantStatus[i].appeal2;
txtPtr = text;
- if (sContestantStatus[i].appeal2 < 0)
+ if (eContestantStatus[i].appeal2 < 0)
{
value *= -1;
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();
+ SwapMoveDescAndContestTilemaps();
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 = sContestantStatus[i].unkB_0;
+ 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 (sContestantStatus[r4 - 1].unkB_0 == sContestantStatus[r4].unkB_0
- && 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;
}
}
}
}
}
-static void sub_80DD04C(void)
+static void DrawContestantWindows(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- LoadPalette(&gHeap[0x1A004] + (i + 5) * 32, (gUnknown_02039F26[i] + 5) * 16, 32);
+ s32 windowId = i + MOVE_WINDOWS_START;
+ LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + MOVE_WINDOWS_START) * 16, sizeof(eUnknownHeap1A004.cachedWindowPalettes[0]));
}
- sub_80DAEA4();
+ DrawContestantWindowText();
}
static void sub_80DD080(u8 contestant)
@@ -4149,104 +4237,104 @@ static void sub_80DD080(u8 contestant)
bool8 r8;
s32 i;
- sContestantStatus[contestant].appeal2 = 0;
- sContestantStatus[contestant].appeal1 = 0;
- r8 = sub_80DBA68(contestant);
+ eContestantStatus[contestant].appeal2 = 0;
+ eContestantStatus[contestant].appeal1 = 0;
+ r8 = ContestantCanUseTurn(contestant);
if (!r8)
return;
- move = sContestantStatus[contestant].currMove;
+ move = eContestantStatus[contestant].currMove;
effect = gContestMoves[move].effect;
- sContestantStatus[contestant].moveCategory = gContestMoves[sContestantStatus[contestant].currMove].contestCategory;
- if (sContestantStatus[contestant].currMove == sContestantStatus[contestant].prevMove && sContestantStatus[contestant].currMove != MOVE_NONE)
+ eContestantStatus[contestant].moveCategory = gContestMoves[eContestantStatus[contestant].currMove].contestCategory;
+ if (eContestantStatus[contestant].currMove == eContestantStatus[contestant].prevMove && eContestantStatus[contestant].currMove != MOVE_NONE)
{
- sContestantStatus[contestant].disappointedRepeat = TRUE;
- sContestantStatus[contestant].moveRepeatCount++;
+ eContestantStatus[contestant].disappointedRepeat = TRUE;
+ eContestantStatus[contestant].moveRepeatCount++;
}
else
{
- sContestantStatus[contestant].moveRepeatCount = 0;
+ eContestantStatus[contestant].moveRepeatCount = 0;
}
- sContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal;
- sContestantStatus[contestant].appeal2 = sContestantStatus[contestant].appeal1;
- shared192D0.jam = gContestEffects[effect].jam;
- shared192D0.jam2 = shared192D0.jam;
+ eContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal;
+ eContestantStatus[contestant].appeal2 = eContestantStatus[contestant].appeal1;
+ eContestResources8.jam = gContestEffects[effect].jam;
+ eContestResources8.jam2 = eContestResources8.jam;
- shared192D0.contestant = contestant;
+ eContestResources8.contestant = contestant;
for (i = 0; i < 4; i++)
{
- sContestantStatus[i].jam = 0;
- shared192D0.unnervedPokes[i] = 0;
+ eContestantStatus[i].jam = 0;
+ eContestResources8.unnervedPokes[i] = 0;
}
- if (sContestantStatus[contestant].hasJudgesAttention
- && !AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove))
- sContestantStatus[contestant].hasJudgesAttention = 0;
+ if (eContestantStatus[contestant].hasJudgesAttention
+ && !AreMovesContestCombo(eContestantStatus[contestant].prevMove, eContestantStatus[contestant].currMove))
+ eContestantStatus[contestant].hasJudgesAttention = 0;
gContestEffectFuncs[effect]();
- if (sContestantStatus[contestant].conditionMod == 1)
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition - 10;
- else if (sContestantStatus[contestant].appealTripleCondition)
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition * 3;
+ if (eContestantStatus[contestant].conditionMod == 1)
+ eContestantStatus[contestant].appeal2 += eContestantStatus[contestant].condition - 10;
+ else if (eContestantStatus[contestant].appealTripleCondition)
+ eContestantStatus[contestant].appeal2 += eContestantStatus[contestant].condition * 3;
else
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition;
+ eContestantStatus[contestant].appeal2 += eContestantStatus[contestant].condition;
- sContestantStatus[contestant].unk16 = 0;
- sContestantStatus[contestant].unk15_6 = 0;
+ eContestantStatus[contestant].unk16 = 0;
+ eContestantStatus[contestant].unk15_6 = 0;
if (sub_80DE1E8(contestant))
{
- u8 r2 = AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove);
+ u8 r2 = AreMovesContestCombo(eContestantStatus[contestant].prevMove, eContestantStatus[contestant].currMove);
- if (r2 != 0 && sContestantStatus[contestant].hasJudgesAttention)
+ if (r2 != 0 && eContestantStatus[contestant].hasJudgesAttention)
{
- sContestantStatus[contestant].unk16 = r2;
- sContestantStatus[contestant].unk15_6 = 1;
- sContestantStatus[contestant].hasJudgesAttention = 0;
- sContestantStatus[contestant].unk17 = sContestantStatus[contestant].appeal1 * sContestantStatus[contestant].unk16;
- sContestantStatus[contestant].unk15_3 = 1;
+ eContestantStatus[contestant].unk16 = r2;
+ eContestantStatus[contestant].unk15_6 = 1;
+ eContestantStatus[contestant].hasJudgesAttention = 0;
+ eContestantStatus[contestant].unk17 = eContestantStatus[contestant].appeal1 * eContestantStatus[contestant].unk16;
+ eContestantStatus[contestant].unk15_3 = 1;
}
else
{
- if (gContestMoves[sContestantStatus[contestant].currMove].comboStarterId != 0)
+ if (gContestMoves[eContestantStatus[contestant].currMove].comboStarterId != 0)
{
- sContestantStatus[contestant].hasJudgesAttention = 1;
- sContestantStatus[contestant].unk15_6 = 1;
+ eContestantStatus[contestant].hasJudgesAttention = 1;
+ eContestantStatus[contestant].unk15_6 = 1;
}
else
{
- sContestantStatus[contestant].hasJudgesAttention = 0;
+ eContestantStatus[contestant].hasJudgesAttention = 0;
}
}
}
- if (sContestantStatus[contestant].disappointedRepeat)
- sContestantStatus[contestant].unk18 = (sContestantStatus[contestant].moveRepeatCount + 1) * 10;
+ if (eContestantStatus[contestant].disappointedRepeat)
+ eContestantStatus[contestant].unk18 = (eContestantStatus[contestant].moveRepeatCount + 1) * 10;
- if (sContestantStatus[contestant].nervous)
+ if (eContestantStatus[contestant].nervous)
{
- sContestantStatus[contestant].hasJudgesAttention = 0;
- sContestantStatus[contestant].appeal2 = 0;
- sContestantStatus[contestant].appeal1 = 0;
+ eContestantStatus[contestant].hasJudgesAttention = 0;
+ eContestantStatus[contestant].appeal2 = 0;
+ eContestantStatus[contestant].appeal1 = 0;
}
- shared19328.bits_0 = Contest_GetMoveExcitement(sContestantStatus[contestant].currMove);
- if (sContestantStatus[contestant].overrideCategoryExcitementMod)
- shared19328.bits_0 = 1;
+ eContestResources10.bits_0 = Contest_GetMoveExcitement(eContestantStatus[contestant].currMove);
+ if (eContestantStatus[contestant].overrideCategoryExcitementMod)
+ eContestResources10.bits_0 = 1;
- if (shared19328.bits_0 > 0)
+ if (eContestResources10.bits_0 > 0)
{
- if (sContest.applauseLevel + shared19328.bits_0 > 4)
- shared19328.unk2 = 60;
+ if (eContest.applauseLevel + eContestResources10.bits_0 > 4)
+ eContestResources10.unk2 = 60;
else
- shared19328.unk2 = 10;
+ eContestResources10.unk2 = 10;
}
else
{
- shared19328.unk2 = 0;
+ eContestResources10.unk2 = 0;
}
rnd = Random() % 3;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (i != contestant)
{
@@ -4255,17 +4343,17 @@ static void sub_80DD080(u8 contestant)
rnd--;
}
}
- sContestantStatus[contestant].unk1B = i;
+ eContestantStatus[contestant].unk1B = i;
}
void SetContestantEffectStringID(u8 a, u8 b)
{
- sContestantStatus[a].effectStringId = b;
+ eContestantStatus[a].effectStringId = b;
}
void SetContestantEffectStringID2(u8 a, u8 b)
{
- sContestantStatus[a].effectStringId2 = b;
+ eContestantStatus[a].effectStringId2 = b;
}
void SetStartledString(u8 contestant, u8 jam)
@@ -4285,81 +4373,103 @@ void SetStartledString(u8 contestant, u8 jam)
static void sub_80DD45C(u8 contestant, u8 stringId)
{
StringCopy(gStringVar1, gContestMons[contestant].nickname);
- StringCopy(gStringVar2, gMoveNames[sContestantStatus[contestant].currMove]);
- if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_COOL)
+ StringCopy(gStringVar2, gMoveNames[eContestantStatus[contestant].currMove]);
+ if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory == CONTEST_CATEGORY_COOL)
StringCopy(gStringVar3, gText_Contest_Shyness);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY)
+ else if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY)
StringCopy(gStringVar3, gText_Contest_Anxiety);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_CUTE)
+ else if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory == CONTEST_CATEGORY_CUTE)
StringCopy(gStringVar3, gText_Contest_Laziness);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_SMART)
+ else if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory == CONTEST_CATEGORY_SMART)
StringCopy(gStringVar3, gText_Contest_Hesitancy);
else
StringCopy(gStringVar3, gText_Contest_Fear);
StringExpandPlaceholders(gStringVar4, gUnknown_08587E10[stringId]);
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
Contest_StartTextPrinter(gStringVar4, 1);
}
void MakeContestantNervous(u8 p)
{
- sContestantStatus[p].nervous = 1;
- sContestantStatus[p].currMove = MOVE_NONE;
+ eContestantStatus[p].nervous = TRUE;
+ eContestantStatus[p].currMove = MOVE_NONE;
}
-static void sub_80DD590(void)
+// This function calculates the new turn order for the next round. The
+// algorithm first checks for explicit turn assignments in the
+// ContestantStatus::nextTurnOrder field of each contestant. The remaining
+// turns are assigned such that the turn order will reverse.
+//
+// For example, if no pokemon have a defined nextTurnOrder, then the 4th
+// will become 1st, the 3rd will become 2nd, etc.
+//
+// Note: This function assumes that multiple pokemon cannot have the same
+// nextTurnOrder value.
+static void ApplyNextTurnOrder(void)
{
- u8 r12 = 0;
+ u8 nextContestant = 0;
s32 i;
s32 j;
- u8 sp0[4];
- u8 sp4[4];
+ u8 newTurnOrder[CONTESTANT_COUNT];
+ bool8 isContestantOrdered[CONTESTANT_COUNT];
- for (i = 0; i < 4; i++)
+ // Copy the current turn order.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sp0[i] = gUnknown_02039F26[i];
- sp4[i] = 0;
+ newTurnOrder[i] = gContestantTurnOrder[i];
+ isContestantOrdered[i] = FALSE;
}
- for (i = 0; i < 4; i++)
+ // For each turn, assign a contestant to that turn.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- for (j = 0; j < 4; j++)
+ // Look for explicit turn assignments.
+ for (j = 0; j < CONTESTANT_COUNT; j++)
{
- if (sContestantStatus[j].nextTurnOrder == i)
+ if (eContestantStatus[j].nextTurnOrder == i)
{
- sp0[j] = i;
- sp4[j] = 1;
+ newTurnOrder[j] = i;
+ isContestantOrdered[j] = TRUE;
break;
}
}
- if (j == 4)
+
+ if (j == CONTESTANT_COUNT)
{
- for (j = 0; j < 4; j++)
+ // No contestant was assigned to this turn. Look for the unassigned contestant
+ // with the highest turn order.
+ //
+ // First, look for the first unassigned contestant.
+ for (j = 0; j < CONTESTANT_COUNT; j++)
{
- if (sp4[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF)
+ if (!isContestantOrdered[j] && eContestantStatus[j].nextTurnOrder == 0xFF)
{
- r12 = j;
+ nextContestant = j;
j++;
break;
}
}
- for (; j < 4; j++)
+
+ // Then, look for a better candidate, with a higher turn order.
+ for (; j < CONTESTANT_COUNT; j++)
{
- if (sp4[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF
- && gUnknown_02039F26[r12] > gUnknown_02039F26[j])
- r12 = j;
+ if (!isContestantOrdered[j] && eContestantStatus[j].nextTurnOrder == 0xFF
+ && gContestantTurnOrder[nextContestant] > gContestantTurnOrder[j])
+ nextContestant = j;
}
- sp0[r12] = i;
- sp4[r12] = 1;
+
+ // Assign the contestant to this turn.
+ newTurnOrder[nextContestant] = i;
+ isContestantOrdered[nextContestant] = TRUE;
}
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- shared192D0.turnOrder[i] = sp0[i];
- sContestantStatus[i].nextTurnOrder = 0xFF;
- sContestantStatus[i].turnOrderMod = 0;
- gUnknown_02039F26[i] = sp0[i];
+ eContestResources8.turnOrder[i] = newTurnOrder[i];
+ eContestantStatus[i].nextTurnOrder = 0xFF;
+ eContestantStatus[i].turnOrderMod = 0;
+ gContestantTurnOrder[i] = newTurnOrder[i];
}
}
@@ -4370,13 +4480,13 @@ static void sub_80DD6DC(struct Sprite *sprite)
sprite->data[1] = 0;
sprite->invisible = TRUE;
sprite->callback = SpriteCallbackDummy;
- sContest.unk1920A_4 = 0;
+ eContest.unk1920A_4 = 0;
}
}
static void sub_80DD720(u8 a)
{
- u8 spriteId = sContest.unk19216;
+ u8 spriteId = eContest.unk19216;
switch (a)
{
@@ -4418,26 +4528,26 @@ static void sub_80DD720(u8 a)
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].callback = sub_80DD6DC;
- sContest.unk1920A_4 = 1;
+ eContest.unk1920A_4 = 1;
}
-static void sub_80DD940(void)
+static void UpdateApplauseMeter(void)
{
s32 i;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < APPLAUSE_METER_SIZE; i++)
{
const u8 *src;
- if (i < sContest.applauseLevel)
- src = gContestApplauseMeterGfx + 64;
+ if (i < eContest.applauseLevel)
+ src = &gContestApplauseMeterGfx[64];
else
src = gContestApplauseMeterGfx;
- CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
- CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
+ CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
+ CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
- if (sContest.applauseLevel > 4)
- sub_80DDA20();
+ if (eContest.applauseLevel > 4)
+ StartApplauseOverflowAnimation();
}
}
@@ -4446,48 +4556,56 @@ s8 Contest_GetMoveExcitement(u16 move)
return gContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory];
}
-static u8 sub_80DDA20(void)
+static u8 StartApplauseOverflowAnimation(void)
{
- u8 taskId = CreateTask(c3_08130B10, 10);
+ u8 taskId = CreateTask(Task_ApplauseOverflowAnimation, 10);
gTasks[taskId].data[1] = 1;
- gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x0ABE2);
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(APPLAUSE_METER_GFX_TAG);
return taskId;
}
-static void c3_08130B10(u8 taskId)
+static void Task_ApplauseOverflowAnimation(u8 taskId)
{
+ // Skip every other frame.
if (++gTasks[taskId].data[0] == 1)
{
gTasks[taskId].data[0] = 0;
+
+ // Alternate between normal colors and white.
if (gTasks[taskId].data[3] == 0)
gTasks[taskId].data[4]++;
else
gTasks[taskId].data[4]--;
- BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], RGB(31, 31, 31));
+
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], RGB_WHITE);
+
+ // At the maximum or minimum blending, switch directions.
if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16)
{
gTasks[taskId].data[3] ^= 1;
- if (sContest.applauseLevel < 5)
+
+ // Continue the animation until the applause meter is cleared.
+ if (eContest.applauseLevel < 5)
{
- BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, RGB(31, 0, 0));
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, RGB_RED);
DestroyTask(taskId);
}
}
}
}
-static void sub_80DDB0C(void)
+static void StartMoveApplauseMeterOnscreen(void)
{
- CreateTask(sub_80DDB6C, 10);
- gSprites[sContest.applauseMeterSpriteId].pos2.x = -70;
- gSprites[sContest.applauseMeterSpriteId].invisible = FALSE;
- sContest.unk1920A_6 = 1;
+ CreateTask(Task_MoveApplauseMeterOnscreen, 10);
+ gSprites[eContest.applauseMeterSpriteId].pos2.x = -70;
+ gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
+ eContest.applauseMeterIsMoving = TRUE;
}
-static void sub_80DDB6C(u8 taskId)
+static void Task_MoveApplauseMeterOnscreen(u8 taskId)
{
- struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId];
+ struct Sprite *sprite = &gSprites[eContest.applauseMeterSpriteId];
gTasks[taskId].data[10] += 1664;
sprite->pos2.x += gTasks[taskId].data[10] >> 8;
@@ -4496,28 +4614,28 @@ static void sub_80DDB6C(u8 taskId)
sprite->pos2.x = 0;
if (sprite->pos2.x == 0)
{
- sContest.unk1920A_6 = 0;
+ eContest.applauseMeterIsMoving = FALSE;
DestroyTask(taskId);
}
}
-static void sub_80DDBE8(void)
+static void TryMoveApplauseMeterOffscreen(void)
{
- if (gSprites[sContest.applauseMeterSpriteId].invisible == TRUE)
+ if (gSprites[eContest.applauseMeterSpriteId].invisible == TRUE)
{
- sContest.unk1920A_6 = 0;
+ eContest.applauseMeterIsMoving = FALSE;
}
else
{
- CreateTask(task08_080CD1CC, 10);
- gSprites[sContest.applauseMeterSpriteId].pos2.x = 0;
- sContest.unk1920A_6 = 1;
+ CreateTask(Task_MoveApplauseMeterOffscreen, 10);
+ gSprites[eContest.applauseMeterSpriteId].pos2.x = 0;
+ eContest.applauseMeterIsMoving = TRUE;
}
}
-static void task08_080CD1CC(u8 taskId)
+static void Task_MoveApplauseMeterOffscreen(u8 taskId)
{
- struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId];
+ struct Sprite *sprite = &gSprites[eContest.applauseMeterSpriteId];
gTasks[taskId].data[10] += 1664;
sprite->pos2.x -= gTasks[taskId].data[10] >> 8;
@@ -4527,29 +4645,29 @@ static void task08_080CD1CC(u8 taskId)
if (sprite->pos2.x == -70)
{
sprite->invisible = TRUE;
- sContest.unk1920A_6 = 0;
+ eContest.applauseMeterIsMoving = FALSE;
DestroyTask(taskId);
}
}
-static void sub_80DDCDC(s8 a)
+static void ShowAndUpdateApplauseMeter(s8 unused)
{
- u8 taskId = CreateTask(sub_80DDD20, 5);
+ u8 taskId = CreateTask(Task_ShowAndUpdateApplauseMeter, 5);
- gTasks[taskId].data[0] = a;
- sContest.unk1920A_5 = 1;
+ gTasks[taskId].data[0] = unused;
+ eContest.isShowingApplauseMeter = TRUE;
}
-static void sub_80DDD20(u8 taskId)
+static void Task_ShowAndUpdateApplauseMeter(u8 taskId)
{
switch (gTasks[taskId].data[10])
{
case 0:
- sub_80DDB0C();
+ StartMoveApplauseMeterOnscreen();
gTasks[taskId].data[10]++;
break;
case 1:
- if (!sContest.unk1920A_6)
+ if (!eContest.applauseMeterIsMoving)
{
gTasks[taskId].data[10]++;
}
@@ -4558,29 +4676,31 @@ static void sub_80DDD20(u8 taskId)
if (gTasks[taskId].data[11]++ > 20)
{
gTasks[taskId].data[11] = 0;
- sub_80DD940();
- sContest.unk1920A_5 = 0;
+ UpdateApplauseMeter();
+ eContest.isShowingApplauseMeter = FALSE;
DestroyTask(taskId);
}
break;
}
}
-void unref_sub_80DDDA8(void)
+// Unused.
+void HideApplauseMeterNoAnim(void)
{
- gSprites[sContest.applauseMeterSpriteId].pos2.x = 0;
- gSprites[sContest.applauseMeterSpriteId].invisible = FALSE;
+ gSprites[eContest.applauseMeterSpriteId].pos2.x = 0;
+ gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
}
-void unref_sub_80DDDE4(void)
+// Unused.
+void ShowApplauseMeterNoAnim(void)
{
- gSprites[sContest.applauseMeterSpriteId].invisible = TRUE;
+ gSprites[eContest.applauseMeterSpriteId].invisible = TRUE;
}
static void sub_80DDE0C(void)
{
CreateTask(sub_80DDE30, 15);
- sContest.unk1920A_7 = 1;
+ eContest.unk1920A_7 = 1;
}
static void sub_80DDE30(u8 taskId)
@@ -4590,11 +4710,11 @@ static void sub_80DDE30(u8 taskId)
gTasks[taskId].data[10] = 0;
if (gTasks[taskId].data[11] == 0)
{
- RequestDma3Copy(shared16800, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
+ RequestDma3Copy(eUnknownHeap19000, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
}
else
{
- RequestDma3Copy(shared15800, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
+ RequestDma3Copy(eUnzippedContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
gTasks[taskId].data[12]++;
}
@@ -4602,7 +4722,7 @@ static void sub_80DDE30(u8 taskId)
if (gTasks[taskId].data[12] == 9)
{
- sContest.unk1920A_7 = 0;
+ eContest.unk1920A_7 = 0;
DestroyTask(taskId);
}
}
@@ -4624,11 +4744,11 @@ static void sub_80DDED0(s8 a, s8 b)
if (b > 0)
{
blendCoeff = 0;
- r3 = sContest.applauseLevel * 3;
+ r3 = eContest.applauseLevel * 3;
}
else
{
- blendCoeff = sContest.applauseLevel * 3;
+ blendCoeff = eContest.applauseLevel * 3;
r3 = 0;
}
}
@@ -4650,7 +4770,7 @@ static void sub_80DDED0(s8 a, s8 b)
gTasks[taskId].tBlendCoeff = blendCoeff;
gTasks[taskId].data[2] = b;
gTasks[taskId].data[3] = r3;
- sContest.unk1920B_0 = 0;
+ eContest.unk1920B_0 = 0;
}
static void sub_80DDF80(u8 taskId)
@@ -4667,7 +4787,7 @@ static void sub_80DDF80(u8 taskId)
if (gTasks[taskId].tBlendCoeff == gTasks[taskId].data[3])
{
DestroyTask(taskId);
- sContest.unk1920B_0 = 0;
+ eContest.unk1920B_0 = 0;
}
}
}
@@ -4681,10 +4801,10 @@ static void sub_80DE008(bool8 a)
for (i = 0; i < 4; i++)
{
- if (sContestantStatus[i].turnOrderMod != 0 && 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
@@ -4696,10 +4816,10 @@ static void sub_80DE008(bool8 a)
static const u8 *GetTurnOrderNumberGfx(u8 contestant)
{
- if (sContestantStatus[contestant].turnOrderMod != 1)
+ if (eContestantStatus[contestant].turnOrderMod != 1)
return gContestNextTurnRandomGfx;
else
- return gContestNextTurnNumbersGfx + sContestantStatus[contestant].nextTurnOrder * 32;
+ return gContestNextTurnNumbersGfx + eContestantStatus[contestant].nextTurnOrder * 32;
}
static void sub_80DE12C(void)
@@ -4709,11 +4829,11 @@ static void sub_80DE12C(void)
u8 r8 = 1;
u8 r9 = 0x11;
- for (r7 = 0; r7 < 4; r7++)
+ for (r7 = 0; r7 < CONTESTANT_COUNT; r7++)
{
- if (shared192D0.unnervedPokes[r7] != 0 && !Contest_IsMonsTurnDisabled(r7))
+ 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);
@@ -4724,9 +4844,9 @@ static void sub_80DE12C(void)
}
}
-bool8 sub_80DE1E8(u8 a)
+bool8 sub_80DE1E8(u8 contestant)
{
- if (sContestantStatus[a].disappointedRepeat || sContestantStatus[a].nervous)
+ if (eContestantStatus[contestant].disappointedRepeat || eContestantStatus[contestant].nervous)
return FALSE;
else
return TRUE;
@@ -4758,7 +4878,7 @@ static void sub_80DE224(void)
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- CpuFill32(0, gContestResources->field_24[1], 0x1000);
+ CpuFill32(0, gContestResources->contestBgTilemaps[1], 0x1000);
CopyToBgTilemapBuffer(1, gUnknown_08C17980, 0, 0);
Contest_SetBgCopyFlags(1);
@@ -4775,8 +4895,8 @@ static void sub_80DE350(void)
s32 i;
u16 bg1Cnt;
- RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 0x1);
- CpuFill32(0, gContestResources->field_24[1], 0x1000);
+ RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 1);
+ CpuFill32(0, gContestResources->contestBgTilemaps[1], 0x1000);
Contest_SetBgCopyFlags(1);
bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
((vBgCnt *) &bg1Cnt)->priority = 1;
@@ -4789,7 +4909,7 @@ static void sub_80DE350(void)
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
gSprites[gContestResources->field_14[i].unk0].oam.priority = 0;
gSprites[gContestResources->field_14[i].unk1].oam.priority = 0;
@@ -4824,27 +4944,27 @@ static void sub_80DE4A8(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- for (i = 0; i < 4; i++)
- sContest.unk19218[i] = gUnknown_02039F26[i];
- sub_80DBF90();
+ for (i = 0; i < CONTESTANT_COUNT; i++)
+ eContest.prevTurnOrder[i] = gContestantTurnOrder[i];
+ FillContestantWindowBgs();
sub_80DC864();
sub_80DB69C();
- sub_80DD04C();
+ DrawContestantWindows();
sub_80DE008(TRUE);
sub_80DC44C();
gTasks[taskId].data[0] = 1;
break;
case 1:
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
u8 taskId2;
- sContest.unk1920B_2 = 1;
+ eContest.unk1920B_2 = 1;
if (sub_80DA8A4())
sub_80DBAA0();
taskId2 = CreateTask(sub_80FCC88, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110);
- sub_80DBF68();
+ ContestPrintLinkStandby();
gTasks[taskId].data[0] = 2;
}
else
@@ -4854,12 +4974,12 @@ static void sub_80DE4A8(u8 taskId)
}
break;
case 2:
- if (!sContest.unk1920B_2)
+ if (!eContest.unk1920B_2)
gTasks[taskId].data[0] = 3;
break;
case 3:
sub_80DB884();
- sub_80DB2BC();
+ SwapMoveDescAndContestTilemaps();
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_80DE5F4;
break;
@@ -4922,7 +5042,7 @@ static void sub_80DE69C(u8 a)
s32 i;
u8 taskId;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
gSprites[gContestResources->field_14[i].unk0].oam.matrixNum = AllocOamMatrix();
gSprites[gContestResources->field_14[i].unk0].oam.affineMode = 1;
@@ -4935,7 +5055,7 @@ static void sub_80DE69C(u8 a)
}
taskId = CreateTask(sub_80DE794, 5);
gTasks[taskId].data[0] = a;
- sContest.unk1920B_1 = 1;
+ eContest.unk1920B_1 = 1;
}
static void sub_80DE794(u8 taskId)
@@ -4946,12 +5066,12 @@ static void sub_80DE794(u8 taskId)
{
if ((u8)gTasks[taskId].data[0] == 1)
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
gSprites[gContestResources->field_14[i].unk0].invisible = TRUE;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
FreeSpriteOamMatrix(&gSprites[gContestResources->field_14[i].unk0]);
- sContest.unk1920B_1 = 0;
+ eContest.unk1920B_1 = 0;
DestroyTask(taskId);
}
}
@@ -4973,13 +5093,13 @@ static u16 SanitizeSpecies(u16 species)
static void sub_80DE864(u8 a)
{
s32 i;
- u16 move = SanitizeMove(sContestantStatus[a].currMove);
+ u16 move = SanitizeMove(eContestantStatus[a].currMove);
u16 species = SanitizeSpecies(gContestMons[a].species);
u8 r5_2;
memset(&gContestResources->field_18->species, 0, 0x14);
ClearBattleAnimationVars();
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
gBattleMonForms[i] = 0;
switch (move)
{
@@ -4991,7 +5111,7 @@ static void sub_80DE864(u8 a)
break;
case MOVE_TRANSFORM:
case MOVE_ROLE_PLAY:
- r5_2 = sContestantStatus[a].unk1B;
+ r5_2 = eContestantStatus[a].unk1B;
gContestResources->field_18->unk2 = SanitizeSpecies(gContestMons[r5_2].species);
gContestResources->field_18->unk10 = gContestMons[r5_2].personality;
gContestResources->field_18->unk4_0 = 1;
@@ -5006,9 +5126,9 @@ static void sub_80DE864(u8 a)
case MOVE_RAZOR_WIND:
case MOVE_SKULL_BASH:
case MOVE_SKY_ATTACK:
- if (sContest.unk1925E == 0)
+ if (eContest.unk1925E == 0)
{
- sContest.unk1925E = 2;
+ eContest.unk1925E = 2;
gAnimMoveTurn = 0;
}
else
@@ -5022,17 +5142,17 @@ static void sub_80DE864(u8 a)
static void sub_80DE9B0(u8 unused)
{
- memset(&gContestResources->field_18->species, 0, 0x14);
- if (sContest.unk1925E != 0)
- sContest.unk1925E--;
+ memset(gContestResources->field_18, 0, sizeof(struct ContestStruct_field_18));
+ if (eContest.unk1925E != 0)
+ eContest.unk1925E--;
}
-static void sub_80DE9DC(u8 a)
+static void sub_80DE9DC(u8 contestant)
{
- gContestResources->field_18->unk5 = a;
- gContestResources->field_18->species = SanitizeSpecies(gContestMons[a].species);
- gContestResources->field_18->unk8 = gContestMons[a].personality;
- gContestResources->field_18->unkC = gContestMons[a].otId;
+ gContestResources->field_18->unk5 = contestant;
+ gContestResources->field_18->species = SanitizeSpecies(gContestMons[contestant].species);
+ gContestResources->field_18->unk8 = gContestMons[contestant].personality;
+ gContestResources->field_18->unkC = gContestMons[contestant].otId;
}
static void sub_80DEA20(void)
@@ -5142,7 +5262,7 @@ static void Contest_StartTextPrinter(const u8 *currChar, bool32 b)
}
else
{
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
speed = 4;
else
speed = GetPlayerTextSpeedDelay();
@@ -5153,15 +5273,15 @@ static void Contest_StartTextPrinter(const u8 *currChar, bool32 b)
Contest_SetBgCopyFlags(0);
}
-static void ContestBG_FillBoxWithIncrementingTile(u8 a, u16 b, u8 c, u8 d, u8 e, u8 f, u8 g, s16 h)
+static void ContestBG_FillBoxWithIncrementingTile(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumData)
{
- WriteSequenceToBgTilemapBuffer(a, b, c, d, e, f, g, h);
- Contest_SetBgCopyFlags(a);
+ WriteSequenceToBgTilemapBuffer(bg, firstTileNum, x, y, width, height, paletteSlot, tileNumData);
+ Contest_SetBgCopyFlags(bg);
}
-static void ContestBG_FillBoxWithTile(u8 a, u16 b, u8 c, u8 d, u8 e, u8 f, u8 g)
+static void ContestBG_FillBoxWithTile(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot)
{
- ContestBG_FillBoxWithIncrementingTile(a, b, c, d, e, f, g, 0);
+ ContestBG_FillBoxWithIncrementingTile(bg, firstTileNum, x, y, width, height, paletteSlot, 0);
}
static bool32 Contest_RunTextPrinters(void)
@@ -5170,9 +5290,9 @@ static bool32 Contest_RunTextPrinters(void)
return IsTextPrinterActive(4);
}
-static void Contest_SetBgCopyFlags(u32 var)
+static void Contest_SetBgCopyFlags(u32 flagIndex)
{
- sContestBgCopyFlags |= 1 << var;
+ sContestBgCopyFlags |= 1 << flagIndex;
}
void ResetContestLinkResults(void)
@@ -5180,7 +5300,7 @@ void ResetContestLinkResults(void)
s32 i;
s32 j;
- for(i = 0; i < 5; i++)
+ for(i = 0; i < CONTEST_CATEGORIES_COUNT; i++)
for(j = 0; j < 4; j++)
gSaveBlock2Ptr->contestLinkResults[i][j] = 0;
}
@@ -5190,7 +5310,7 @@ bool8 sub_80DEDA8(u8 a)
s32 i;
u8 r7 = Random() % 3;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < CONTESTANT_COUNT - 1; i++)
{
if (gContestFinalStandings[i] == 0)
break;
@@ -5224,7 +5344,7 @@ bool8 sub_80DEDA8(u8 a)
gSaveBlock1Ptr->contestWinners[r4].trainerId = gContestMons[i].otId;
StringCopy(gSaveBlock1Ptr->contestWinners[r4].monName, gContestMons[i].nickname);
StringCopy(gSaveBlock1Ptr->contestWinners[r4].trainerName, gContestMons[i].trainerName);
- if(gIsLinkContest & 1)
+ if(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
gSaveBlock1Ptr->contestWinners[r4].contestRank = 4;
else
gSaveBlock1Ptr->contestWinners[r4].contestRank = gSpecialVar_ContestRank;
@@ -5295,13 +5415,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
@@ -5311,37 +5431,37 @@ 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[gContestResources->field_0->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 (gContestResources->field_0->applauseLevel == 4
+ if (eContest.applauseLevel == 4
&& !gContestResources->field_10->excitementFrozen
&& gContestResources->field_10->bits_0 < 0)
{
@@ -5373,7 +5493,7 @@ static void sub_80DF250(void)
}
gContestResources->field_1c[r1].unkD |= 1;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (i != var_38 && gUnknown_02039F08[var_38] - gUnknown_02039F08[i] <= 50)
gContestResources->field_1c[i].unkD |= 4;
@@ -5381,7 +5501,7 @@ static void sub_80DF250(void)
if (!gContestResources->field_1c[i].unkE_2)
gContestResources->field_1c[i].unkD |= 8;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < CONTESTANT_COUNT; j++)
{
if (gContestMonConditions[i] < gContestMonConditions[j])
break;
@@ -5474,7 +5594,7 @@ static void sub_80DF4F8(void)
return;
r7 = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (gContestFinalStandings[i] == 0)
r7 = i;
@@ -5482,7 +5602,7 @@ static void sub_80DF4F8(void)
r9 = 0;
r10 = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (gContestMonConditions[r7] < gContestMonConditions[i])
r9++;
@@ -5526,7 +5646,7 @@ static void sub_80DF4F8(void)
}
r5 = 1;
- for (; i < 4; i++)
+ for (; i < CONTESTANT_COUNT; i++)
{
if (i != r7)
{
@@ -5561,32 +5681,32 @@ static void sub_80DF4F8(void)
}
// Unused
-void sub_80DF704(u8 arg0)
+void ContestDebugToggleBitfields(bool8 showUnkD)
{
- if (gHeap[0x1A000] == 0)
+ if (eContestDebugMode == CONTEST_DEBUG_MODE_OFF)
{
- if (arg0 == 0)
- gHeap[0x1A000] = 2;
+ if (!showUnkD)
+ eContestDebugMode = CONTEST_DEBUG_MODE_PRINT_UNK_C;
else
- gHeap[0x1A000] = 3;
+ eContestDebugMode = CONTEST_DEBUG_MODE_PRINT_UNK_D;
}
else
{
- gHeap[0x1A000] = 0;
+ eContestDebugMode = CONTEST_DEBUG_MODE_OFF;
}
- if (gHeap[0x1A000] == 0)
+ if (eContestDebugMode == CONTEST_DEBUG_MODE_OFF)
{
- sub_80DAEA4();
- sub_80DB2BC();
+ DrawContestantWindowText();
+ SwapMoveDescAndContestTilemaps();
}
else
{
- sub_80DF750();
+ ContestDebugPrintBitStrings();
}
}
-static void sub_80DF750(void)
+static void ContestDebugPrintBitStrings(void)
{
u8 i;
s8 j;
@@ -5595,20 +5715,21 @@ static void sub_80DF750(void)
u8 *txtPtr;
u32 bits;
- if (gUnknown_020322D5 == 0)
+ if (!gEnableContestDebugging)
return;
- if (gHeap[0x1A000] != 2 && gHeap[0x1A000] != 3)
+
+ if (eContestDebugMode != CONTEST_DEBUG_MODE_PRINT_UNK_C && eContestDebugMode != CONTEST_DEBUG_MODE_PRINT_UNK_D)
return;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
- if (gHeap[0x1A000] == 2)
+ if (eContestDebugMode == CONTEST_DEBUG_MODE_PRINT_UNK_C)
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; 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.
{
@@ -5620,13 +5741,13 @@ 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
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
StringCopy(text1, gText_BDot);
bits = gContestResources->field_1c[i].unkD;
@@ -5641,11 +5762,11 @@ 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();
+ SwapMoveDescAndContestTilemaps();
}
static u8 sub_80DF940(u8 *nickname)