summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h81
-rw-r--r--include/battle_anim.h4
-rw-r--r--include/battle_util.h6
-rw-r--r--include/contest.h118
-rw-r--r--include/contest_painting.h3
-rw-r--r--include/gba/m4a_internal.h65
-rw-r--r--include/global.tv.h4
-rw-r--r--include/graphics.h4
-rw-r--r--include/list_menu.h2
-rw-r--r--include/party_menu.h2
-rwxr-xr-xinclude/pokedex_cry_screen.h2
-rw-r--r--include/text.h5
-rw-r--r--include/trade.h3
-rw-r--r--include/tv.h5
-rw-r--r--include/util.h2
15 files changed, 177 insertions, 129 deletions
diff --git a/include/battle.h b/include/battle.h
index 73caed16f..94596c75e 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -28,10 +28,11 @@
#define B_ACTION_SAFARI_GO_NEAR 7
#define B_ACTION_SAFARI_RUN 8
#define B_ACTION_WALLY_THROW 9
-// The exact purposes of these are unclear
-#define B_ACTION_EXEC_SCRIPT 10 // when executing an action
+#define B_ACTION_EXEC_SCRIPT 10
+#define B_ACTION_TRY_FINISH 11
+#define B_ACTION_FINISHED 12
+
#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
-#define B_ACTION_FINISHED 12 // when executing an action
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF
@@ -128,36 +129,36 @@ struct UnknownFlags
struct DisableStruct
{
- u32 transformedMonPersonality;
- u16 disabledMove;
- u16 encoredMove;
- u8 protectUses;
- u8 stockpileCounter;
- u8 substituteHP;
- u8 disableTimer:4;
- u8 disableTimerStartValue:4;
- u8 encoredMovePos;
- u8 filler_D; // Unused field.
- u8 encoreTimer:4;
- u8 encoreTimerStartValue:4;
- u8 perishSongTimer:4;
- u8 perishSongTimerStartValue:4;
- u8 furyCutterCounter;
- u8 rolloutTimer:4;
- u8 rolloutTimerStartValue:4;
- u8 chargeTimer:4;
- u8 chargeTimerStartValue:4;
- u8 tauntTimer:4;
- u8 tauntTimer2:4;
- u8 battlerPreventingEscape;
- u8 battlerWithSureHit;
- u8 isFirstTurn;
- u8 unk17;
- u8 truantCounter:1;
- u8 truantUnknownBit:1;
- u8 unk18_a_2:2;
- u8 unk18_b:4;
- u8 rechargeTimer;
+ u32 transformedMonPersonality;
+ u16 disabledMove;
+ u16 encoredMove;
+ u8 protectUses;
+ u8 stockpileCounter;
+ u8 substituteHP;
+ u8 disableTimer:4;
+ u8 disableTimerStartValue:4;
+ u8 encoredMovePos;
+ u8 filler_D; // Unused field.
+ u8 encoreTimer:4;
+ u8 encoreTimerStartValue:4;
+ u8 perishSongTimer:4;
+ u8 perishSongTimerStartValue:4;
+ u8 furyCutterCounter;
+ u8 rolloutTimer:4;
+ u8 rolloutTimerStartValue:4;
+ u8 chargeTimer:4;
+ u8 chargeTimerStartValue:4;
+ u8 tauntTimer:4;
+ u8 tauntTimer2:4;
+ u8 battlerPreventingEscape;
+ u8 battlerWithSureHit;
+ u8 isFirstTurn;
+ u8 filler_17; // Unused field.
+ u8 truantCounter:1;
+ u8 truantSwitchInHack:1;
+ u8 filler_18_2:2; // Unused field.
+ u8 mimickedMoves:4;
+ u8 rechargeTimer;
};
struct ProtectStruct
@@ -168,7 +169,7 @@ struct ProtectStruct
u32 helpingHand:1;
u32 bounceMove:1;
u32 stealMove:1;
- u32 flag0Unknown:1;
+ u32 flag0Unknown:1; // Only set to 0 once.
u32 prlzImmobility:1;
u32 confusionSelfDmg:1;
u32 targetNotAffected:1;
@@ -178,10 +179,10 @@ struct ProtectStruct
u32 loveImmobility:1;
u32 usedDisabledMove:1;
u32 usedTauntedMove:1;
- u32 flag2Unknown:1;
+ u32 flag2Unknown:1; // Only set to 0 once. Checked in 'WasUnableToUseMove' function.
u32 flinchImmobility:1;
u32 notFirstStrike:1;
- u32 flag_x10:1;
+ u32 palaceUnableToUseMove:1;
u32 physicalDmg;
u32 specialDmg;
u8 physicalBattlerId;
@@ -300,8 +301,8 @@ struct BattleResults
u8 playerFaintCounter; // 0x0
u8 opponentFaintCounter; // 0x1
u8 playerSwitchesCounter; // 0x2
- u8 unk3; // 0x3
- u8 unk4; // 0x4
+ u8 numHealingItemsUsed; // 0x3
+ u8 numRevivesUsed; // 0x4
u8 playerMonWasDamaged:1; // 0x5
u8 usedMasterBall:1; // 0x5
u8 caughtMonBall:4; // 0x5
@@ -441,8 +442,8 @@ struct BattleStruct
u8 safariPkblThrowCounter;
u8 safariEscapeFactor;
u8 safariCatchFactor;
- u8 field_7D; // unknown spriteId
- u8 field_7E; // unknown spriteId
+ u8 linkBattleVsSpriteId_V; // The letter "V"
+ u8 linkBattleVsSpriteId_S; // The letter "S"
u8 formToChangeInto;
u8 chosenMovePositions[MAX_BATTLERS_COUNT];
u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT];
diff --git a/include/battle_anim.h b/include/battle_anim.h
index fc0f603eb..8e8a17675 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -75,6 +75,10 @@ int GetAnimBgAttribute(u8 bgId, u8 attributeId);
// battle_anim_80A5C6C.s
void sub_80A6450(struct Sprite *sprite);
+void sub_80A8AEC(struct Sprite *sprite);
+void sub_80A8A6C(struct Sprite *sprite);
+void sub_80A8E30(struct Sprite *sprite);
+void sub_80A8B64(struct Sprite *sprite);
void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
void DestroySpriteAndMatrix(struct Sprite *sprite);
void AnimTranslateLinearSimple(struct Sprite *sprite);
diff --git a/include/battle_util.h b/include/battle_util.h
index b3fff196e..71bb22a00 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -42,9 +42,9 @@
#define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK)))
u8 GetBattlerForBattleScript(u8 caseId);
-void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move);
-void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
-void PressurePPLoseOnUsingImprision(u8 bankAtk);
+void PressurePPLose(u8 target, u8 attacker, u16 move);
+void PressurePPLoseOnUsingPerishSong(u8 attacker);
+void PressurePPLoseOnUsingImprision(u8 attacker);
void MarkAllBattlersForControllerExec(void); // unused
void MarkBattlerForControllerExec(u8 battlerId);
void sub_803F850(u8 arg0);
diff --git a/include/contest.h b/include/contest.h
index 73ebb79fa..e4391a327 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -221,22 +221,6 @@ struct ContestPokemon
/*0x3C*/ u32 otId; // otId
}; // wow
-extern struct ContestPokemon gContestMons[4];
-extern u8 gContestMonPartyIndex;
-extern u16 gSpecialVar_ContestCategory;
-extern u16 gSpecialVar_ContestRank;
-extern u8 gUnknown_02039F2B;
-extern u8 gNumLinkContestPlayers;
-extern u8 gHighestRibbonRank;
-extern u8 gContestFinalStandings[4];
-extern u8 gContestPlayerMonIndex;
-extern s16 gUnknown_02039F08[4];
-extern s16 gUnknown_02039F10[4];
-extern s16 gUnknown_02039F18[4];
-extern s16 gContestMonConditions[4];
-extern u8 gIsLinkContest;
-extern struct ContestWinner gUnknown_02039F3C;
-
struct Shared18000
{
/*0x18000*/ u8 unk18000;
@@ -260,10 +244,10 @@ struct ContestStruct_field_18
struct Contest
{
- /*0x19204*/ u8 playerMoveChoice;
- /*0x19205*/ u8 turnNumber;
- /*0x19206*/ u8 unk19206[4]; // seems to only be used by an unref function
- /*0x1920A*/ u16 unk1920A_0:1; // Task active flags?
+ /*0x0*/ u8 playerMoveChoice;
+ /*0x1*/ u8 turnNumber;
+ /*0x2*/ u8 unk19206[4]; // seems to only be used by an unref function
+ /*0x6*/ u16 unk1920A_0:1; // Task active flags?
u16 unk1920A_1:1;
u16 unk1920A_2:1;
u16 unk1920A_3:1;
@@ -271,18 +255,18 @@ struct Contest
u16 unk1920A_5:1;
u16 unk1920A_6:1;
u16 unk1920A_7:1;
- /*0x1920B*/ u16 unk1920B_0:1;
+ /*0x7*/ u16 unk1920B_0:1;
u16 unk1920B_1:1;
u16 unk1920B_2:1;
- /*0x1920C*/ u8 mainTaskId;
- /*0x1920D*/ u8 unk1920D[4];
- /*0x19211*/ u8 unk19211;
- /*0x19212*/ u8 unk19212;
- /*0x19213*/ u8 filler19213;
- /*0x19214*/ u8 unk19214;
- /*0x19215*/ u8 unk19215;
- /*0x19216*/ u8 unk19216; // sprite ID
- /*0x19217*/ s8 applauseLevel;
+ /*0x8*/ u8 mainTaskId;
+ /*0x9*/ u8 unk1920D[4];
+ /*0xD*/ u8 unk19211;
+ /*0xE*/ u8 unk19212;
+ /*0xF*/ u8 filler19213;
+ /*0x10*/ u8 unk19214;
+ /*0x11*/ u8 unk19215;
+ /*0x12*/ u8 unk19216; // sprite ID
+ /*0x13*/ s8 applauseLevel;
/*0x19218*/ u8 unk19218[4];
/*0x1921C*/ u32 unk1921C; // saved RNG value?
u16 unk19220[5][4]; // move history?
@@ -385,9 +369,22 @@ struct UnknownContestStruct4
u8 unk2_2:1;
};
+struct UnknownContestStruct6
+{
+ s32 unk0;
+ s32 unk4;
+ s32 unk8;
+ s32 unkC;
+};
+
struct ContestResourcesField1C
{
- u8 filler_00[0x40];
+ u16 unk0[5];
+ s16 unkA;
+ u8 unkC;
+ u8 unkD;
+ u8 unkE_1:1;
+ u8 unkE_2:1;
};
struct ContestResourcesField20
@@ -412,38 +409,64 @@ struct ContestResources
void * field_3c;
};
-extern struct ContestResources *gContestResources;
-
#define sContest (*gContestResources->field_0)
#define sContestantStatus (gContestResources->field_4)
#define shared192D0 (*gContestResources->field_8)
#define eContestAI (gContestResources->field_C)
#define shared19328 (*gContestResources->field_10)
#define shared19338 (*gContestResources->field_14)
-
#define shared15800 (gHeap + 0x18000)
+#define shared16800 (gHeap + 0x19000)
#define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000))
-extern u32 gContestRngValue;
+extern struct ContestPokemon gContestMons[4];
+extern s16 gContestMonConditions[4];
+extern s16 gUnknown_02039F08[4];
+extern s16 gUnknown_02039F10[4];
+extern s16 gUnknown_02039F18[4];
+extern u8 gContestFinalStandings[4];
+extern u8 gContestMonPartyIndex;
+extern u8 gContestPlayerMonIndex;
extern u8 gUnknown_02039F26[4];
+extern u8 gIsLinkContest;
+extern u8 gUnknown_02039F2B;
+extern u16 gSpecialVar_ContestCategory;
+extern u16 gSpecialVar_ContestRank;
+extern u8 gNumLinkContestPlayers;
+extern u8 gHighestRibbonRank;
+extern struct ContestResources *gContestResources;
+extern u8 sContestBgCopyFlags;
+extern struct ContestWinner gUnknown_02039F3C;
+extern u8 gUnknown_02039F5C;
+extern u8 gUnknown_02039F5D;
-bool8 IsSpeciesNotUnown(u16 species);
+extern u32 gContestRngValue;
+
+// contest.c
+void ResetLinkContestBoolean(void);
void LoadContestBgAfterMoveAnim(void);
+void sub_80D7B24(void);
+void sub_80DA8C8(u8 partyIndex);
+void sub_80DAB8C(u8 contestType, u8 rank);
+void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
+u8 sub_80DAE0C(struct Pokemon *pkmn);
+void sub_80DB09C(u8 contestCategory);
+bool8 IsSpeciesNotUnown(u16 species);
+bool8 Contest_IsMonsTurnDisabled(u8 a);
+void sub_80DBED4(void);
+void sub_80DCE58(u8 a);
void SetContestantEffectStringID(u8 a, u8 b);
void SetContestantEffectStringID2(u8 a, u8 b);
+void SetStartledString(u8 contestant, u8 jam);
void MakeContestantNervous(u8 p);
-bool8 Contest_IsMonsTurnDisabled(u8 a);
+s8 Contest_GetMoveExcitement(u16 move);
bool8 sub_80DE1E8(u8 a);
-void SetStartledString(u8 a, u8 b);
-s8 Contest_GetMoveExcitement(u16);
-u8 sub_80DAE0C(struct Pokemon *);
-void sub_80DEDA8(u8);
-void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
-void sub_80DB09C(u8 contestCategory);
-void sub_80DCE58(u8);
-void sub_80DFA08(struct ContestPokemon *mon, int language);
-void sub_80DBED4(void);
-u8 sub_80DEFA8(u8, u8);
+void Contest_PrintTextToBg0WindowAt(u32 windowId, u8 *currChar, s32 x, s32 y, s32 fontId);
+void ResetContestLinkResults(void);
+bool8 sub_80DEDA8(u8 a);
+u8 sub_80DEFA8(u8 a, u8 b);
+void ClearContestWinnerPicsInContestHall(void);
+void sub_80DFA08(struct ContestPokemon *mon, s32 language);
// contest link
void sub_81D9DE4(u8 taskId);
@@ -456,5 +479,4 @@ bool8 sub_80FC55C(void);
bool8 sub_80FC530(u8);
u8 sub_80F86E0(u8 *);
-
#endif //GUARD_CONTEST_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
index ca03a72b5..c633c50cc 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -13,7 +13,4 @@ enum
void sub_812FDA8(int);
void CB2_ContestPainting(void);
-extern u8 gUnknown_02039F5C;
-extern u8 gUnknown_02039F5D;
-
#endif
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index 339a0774e..e2836c6f6 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -69,38 +69,38 @@ struct ToneData
struct CgbChannel
{
- u8 sf;
- u8 ty;
- u8 rightVolume;
- u8 leftVolume;
- u8 at;
- u8 de;
- u8 su;
- u8 re;
- u8 ky;
- u8 ev;
- u8 eg;
- u8 ec;
- u8 echoVolume;
- u8 echoLength;
- u8 d1;
- u8 d2;
- u8 gt;
- u8 mk;
- u8 ve;
- u8 pr;
- u8 rp;
- u8 d3[3];
- u8 d5;
- u8 sg;
- u8 n4;
- u8 pan;
- u8 panMask;
- u8 mo;
- u8 le;
- u8 sw;
- u32 fr;
- u32 wp;
+ u8 sf; // 0x0
+ u8 ty; // 0x1
+ u8 rightVolume; // 0x2
+ u8 leftVolume; // 0x3
+ u8 at; // 0x4
+ u8 de; // 0x5
+ u8 su; // 0x6
+ u8 re; // 0x7
+ u8 ky; // 0x8
+ u8 ev; // 0x9
+ u8 eg; // 0xA
+ u8 ec; // 0xB
+ u8 echoVolume; // 0xC
+ u8 echoLength; // 0xD
+ u8 d1; // 0xE
+ u8 d2; // 0xF
+ u8 gt; // 0x10
+ u8 mk; // 0x11
+ u8 ve; // 0x12
+ u8 pr; // 0x13
+ u8 rp; // 0x14
+ u8 d3[3]; // 0x15, 0x16, 0x17
+ u8 d5; // 0x18
+ u8 sg; // 0x19
+ u8 n4; // 0x1A
+ u8 pan; // 0x1B
+ u8 panMask; // 0x1C
+ u8 mo; // 0x1D
+ u8 le; // 0x1E
+ u8 sw; // 0x1F
+ u32 fr; // 0x20
+ u32 *wp;
u32 cp;
u32 tp;
u32 pp;
@@ -397,6 +397,7 @@ void m4aSoundMode(u32 mode);
void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track, u8 a3);
void CgbSound(void);
void CgbOscOff(u8);
+void CgbModVol(struct CgbChannel *chan);
u32 MidiKeyToCgbFreq(u8, u8, u8);
void DummyFunc(void);
void MPlayJumpTableCopy(void **mplayJumpTable);
diff --git a/include/global.tv.h b/include/global.tv.h
index 61f014984..aa151a75c 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -521,13 +521,13 @@ struct GabbyAndTyData
/*2bad*/ u8 battleNum;
/*2bae*/ u8 battleTookMoreThanOneTurn:1;
/*2bae*/ u8 playerLostAMon:1;
- /*2bae*/ u8 playerUsedAnItem:1;
+ /*2bae*/ u8 playerUsedHealingItem:1;
/*2bae*/ u8 playerThrewABall:1;
/*2bae*/ u8 onAir:1;
/*2bae*/ u8 valA_5:3;
/*2baf*/ u8 battleTookMoreThanOneTurn2:1;
/*2baf*/ u8 playerLostAMon2:1;
- /*2baf*/ u8 playerUsedAnItem2:1;
+ /*2baf*/ u8 playerUsedHealingItem2:1;
/*2baf*/ u8 playerThrewABall2:1;
/*2baf*/ u8 valB_4:4;
};
diff --git a/include/graphics.h b/include/graphics.h
index cfe73c6c3..f7eaa394d 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4745,9 +4745,13 @@ extern const u32 gBattleStatMask8_Pal[];
extern const u32 gUnknown_08D9A88C[];
extern const u32 gContestMiscGfx[];
extern const u32 gContestAudienceGfx[];
+extern const u8 gContestApplauseMeterGfx[];
+extern const u8 gContestNextTurnNumbersGfx[];
+extern const u8 gContestNextTurnRandomGfx[];
extern const u32 gUnknown_08C16FA8[];
extern const u32 gUnknown_08C16E90[];
extern const u32 gUnknown_08C17170[];
+extern const u32 gUnknown_08C17980[];
extern const u32 gUnknown_08D95E00[];
extern const u32 gUnknown_08D960D0[];
diff --git a/include/list_menu.h b/include/list_menu.h
index 84c38306b..ef23688d8 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -101,7 +101,7 @@ extern struct ListMenuTemplate gMultiuseListMenuTemplate;
s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *arg1, u16 scrollOffset, u16 selectedRow);
-s32 ListMenuHandleInputGetItemId(u8 listTaskId);
+s32 ListMenu_ProcessInput(u8 listTaskId);
void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
void RedrawListMenu(u8 listTaskId);
void ChangeListMenuPals(u8 listTaskId, u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
diff --git a/include/party_menu.h b/include/party_menu.h
index ae7c414a8..702b4fde1 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -48,6 +48,8 @@ extern MainCallback gPostMenuFieldCallback;
extern u8 gSelectedOrderFromParty[4];
extern u8 gUnknown_0203CF00[3];
+extern void (*gUnknown_03006328)(u8, TaskFunc);
+
extern const u16 gTutorMoves[];
void sub_81B0FCC(u8 slot, u8 b);
diff --git a/include/pokedex_cry_screen.h b/include/pokedex_cry_screen.h
index 392e80a6d..93f1b02a5 100755
--- a/include/pokedex_cry_screen.h
+++ b/include/pokedex_cry_screen.h
@@ -10,6 +10,8 @@ struct CryRelatedStruct
u8 yPos;
};
+extern u8 gDexCryScreenState;
+
bool8 sub_8145354(struct CryRelatedStruct*, u8);
void sub_814545C(u8);
void sub_8145534(u16);
diff --git a/include/text.h b/include/text.h
index d9c7a9a2e..96c5a4507 100644
--- a/include/text.h
+++ b/include/text.h
@@ -13,10 +13,15 @@
#define CHAR_7 0xA8
#define CHAR_8 0xA9
#define CHAR_9 0xAA
+#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_ELLIPSIS 0xB0
+#define CHAR_DBL_QUOT_LEFT 0xB1
+#define CHAR_DBL_QUOT_RIGHT 0xB2
+#define CHAR_SGL_QUOT_LEFT 0xB3
+#define CHAR_SGL_QUOT_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7
diff --git a/include/trade.h b/include/trade.h
index 95a10cacf..0c95e1e81 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -6,8 +6,11 @@
// Exported type declarations
// Exported RAM declarations
+extern struct MailStruct gUnknown_020321C0[PARTY_SIZE];
+extern u8 gUnknown_02032298[2];
// Exported ROM declarations
+extern const struct WindowTemplate gUnknown_0833900C;
s32 sub_807A728(void);
void sub_80773AC(void);
diff --git a/include/tv.h b/include/tv.h
index ea0226815..760d87522 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -56,5 +56,10 @@ void SaveRecordedItemPurchasesForTVShow(void);
bool8 sub_80EE818(void);
void sub_80EE8C8(u16 winStreak, u8 facilityAndMode);
void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace);
+void ContestLiveUpdates_BeforeInterview_1(u8 a0);
+void ContestLiveUpdates_BeforeInterview_2(u8 a0);
+void ContestLiveUpdates_BeforeInterview_3(u8 a0);
+void ContestLiveUpdates_BeforeInterview_4(u16 a0);
+void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1);
#endif //GUARD_TV_H
diff --git a/include/util.h b/include/util.h
index 9d13453c2..56c89359a 100644
--- a/include/util.h
+++ b/include/util.h
@@ -15,5 +15,7 @@ u16 CalcCRC16WithTable(u8 *data, u32 length);
u32 CalcByteArraySum(const u8* data, u32 length);
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor);
void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha);
+void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output);
+
#endif // GUARD_UTIL_H