summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-04-29 00:25:01 -0400
committerGitHub <noreply@github.com>2021-04-29 00:25:01 -0400
commitf7a699c686d329edb48686d175caf709de426bf5 (patch)
treee018c1eff7e4ea0ba86cca1cfdcb034e40dbd7c7 /include
parent6c38837b266c0dd36ccdd04559199282daa7a8a0 (diff)
parentaad090e154d4cb1397468f3b19071ddad688a7bc (diff)
Merge pull request #1421 from GriffinRichards/doc-tvrecordmix
Document TV
Diffstat (limited to 'include')
-rw-r--r--include/constants/battle_frontier.h15
-rw-r--r--include/constants/easy_chat.h2
-rw-r--r--include/constants/metatile_labels.h2
-rw-r--r--include/constants/tv.h38
-rw-r--r--include/daycare.h2
-rw-r--r--include/global.h8
-rw-r--r--include/global.tv.h22
-rw-r--r--include/mauville_old_man.h2
-rw-r--r--include/tv.h30
9 files changed, 83 insertions, 38 deletions
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index bbe6db81c..68c5a42ef 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -78,6 +78,21 @@
#define FRONTIER_MANIAC_MESSAGE_COUNT 3
+// Frontier TV Show
+#define FRONTIER_SHOW_TOWER_SINGLES 1
+#define FRONTIER_SHOW_TOWER_DOUBLES 2
+#define FRONTIER_SHOW_TOWER_MULTIS 3
+#define FRONTIER_SHOW_TOWER_LINK_MULTIS 4
+#define FRONTIER_SHOW_DOME_SINGLES 5
+#define FRONTIER_SHOW_DOME_DOUBLES 6
+#define FRONTIER_SHOW_FACTORY_SINGLES 7
+#define FRONTIER_SHOW_FACTORY_DOUBLES 8
+#define FRONTIER_SHOW_PIKE 9
+#define FRONTIER_SHOW_ARENA 10
+#define FRONTIER_SHOW_PALACE_SINGLES 11
+#define FRONTIER_SHOW_PALACE_DOUBLES 12
+#define FRONTIER_SHOW_PYRAMID 13
+
// Frontier Gambler
#define FRONTIER_GAMBLER_WAITING 0
#define FRONTIER_GAMBLER_PLACED_BET 1
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 069f17fcb..f98cedbb7 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -9,7 +9,7 @@
#define EASY_CHAT_TYPE_INTERVIEW 5
#define EASY_CHAT_TYPE_BARD_SONG 6
#define EASY_CHAT_TYPE_FAN_CLUB 7
-#define EASY_CHAT_TYPE_UNK_8 8
+#define EASY_CHAT_TYPE_DUMMY_SHOW 8
#define EASY_CHAT_TYPE_TRENDY_PHRASE 9
#define EASY_CHAT_TYPE_GABBY_AND_TY 10
#define EASY_CHAT_TYPE_CONTEST_INTERVIEW 11
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index 836ab6ef2..b5ef69046 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -42,6 +42,8 @@
#define METATILE_General_BlueCaveOpen 0x1B1
// gTileset_Building
+#define METATILE_Building_TV_Off 0x002
+#define METATILE_Building_TV_On 0x003
#define METATILE_Building_PC_Off 0x004
#define METATILE_Building_PC_On 0x005
diff --git a/include/constants/tv.h b/include/constants/tv.h
index f7b091f49..1b28f6e6e 100644
--- a/include/constants/tv.h
+++ b/include/constants/tv.h
@@ -6,12 +6,22 @@
#define POKENEWS_GAME_CORNER 2
#define POKENEWS_LILYCOVE 3
#define POKENEWS_BLENDMASTER 4
+#define NUM_POKENEWS_TYPES 4 // Excludes NONE
+
+// TV shows are categorized as being in one of 3 groups
+// - TVGROUP_NORMAL, TV shows that can appear without Record Mixing
+// - TVGROUP_RECORD_MIX, TV shows that can only appear via Record Mixing
+// - TVGROUP_OUTBREAK, just contains TVSHOW_MASS_OUTBREAK
+// Each group was allotted 20 spaces arbitrarily, though none use all 20
#define TVSHOW_OFF_AIR 0
+
+// TVGROUP_NORMAL
+#define TVGROUP_NORMAL_START 1
#define TVSHOW_FAN_CLUB_LETTER 1
#define TVSHOW_RECENT_HAPPENINGS 2
#define TVSHOW_PKMN_FAN_CLUB_OPINIONS 3
-#define TVSHOW_UNKN_SHOWTYPE_04 4
+#define TVSHOW_DUMMY 4
#define TVSHOW_NAME_RATER_SHOW 5
#define TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE 6
#define TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE 7
@@ -20,7 +30,11 @@
#define TVSHOW_BATTLE_UPDATE 10
#define TVSHOW_FAN_CLUB_SPECIAL 11
#define TVSHOW_LILYCOVE_CONTEST_LADY 12
-// //
+//
+#define TVGROUP_NORMAL_END 20
+
+// TVGROUP_RECORD_MIX
+#define TVGROUP_RECORD_MIX_START 21
#define TVSHOW_POKEMON_TODAY_CAUGHT 21
#define TVSHOW_SMART_SHOPPER 22
#define TVSHOW_POKEMON_TODAY_FAILED 23
@@ -40,8 +54,22 @@
#define TVSHOW_NUMBER_ONE 37
#define TVSHOW_SECRET_BASE_SECRETS 38
#define TVSHOW_SAFARI_FAN_CLUB 39
-// //
-#define TVSHOW_MASS_OUTBREAK 41
+#define TVGROUP_RECORD_MIX_END 40
+
+// TVGROUP_OUTBREAK
+#define TVGROUP_OUTBREAK_START 41
+#define TVSHOW_MASS_OUTBREAK 41
+//
+#define TVGROUP_OUTBREAK_END 60
+
+// The first 5 elements of gSaveBlock1Ptr->tvShows are reserved
+// for TV shows from TVGROUP_NORMAL. The remainder are for TV
+// shows from TVGROUP_RECORD_MIX.
+#define NUM_NORMAL_TVSHOW_SLOTS 5
+
+#define PLAYERS_HOUSE_TV_NONE 0
+#define PLAYERS_HOUSE_TV_LATI 1
+#define PLAYERS_HOUSE_TV_MOVIE 2
// Number of ribbons to put Spot the Cuties on air
#define NUM_CUTIES_RIBBONS 4
@@ -221,4 +249,6 @@
#define CONTESTLADYLIVE_STATE_LOST 2
#define CONTESTLADYLIVE_STATE_LOST_BADLY 3
+#define SMARTSHOPPER_NUM_ITEMS 3
+
#endif //GUARD_CONSTANTS_TV_H
diff --git a/include/daycare.h b/include/daycare.h
index 7d6f2fb19..d6c0d4201 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -6,7 +6,7 @@
u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest);
u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest);
u8 CountPokemonInDaycare(struct DayCare *daycare);
-void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail);
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *daycareMail);
void StoreSelectedPokemonInDaycare(void);
u16 TakePokemonFromDaycare(void);
void GetDaycareCost(void);
diff --git a/include/global.h b/include/global.h
index 19605ca57..e4c11f9ef 100644
--- a/include/global.h
+++ b/include/global.h
@@ -727,7 +727,7 @@ struct ContestWinner
u8 contestRank;
};
-struct DayCareMail
+struct DaycareMail
{
struct MailStruct message;
u8 OT_name[PLAYER_NAME_LENGTH + 1];
@@ -739,7 +739,7 @@ struct DayCareMail
struct DaycareMon
{
struct BoxPokemon mon;
- struct DayCareMail mail;
+ struct DaycareMail mail;
u32 steps;
};
@@ -750,9 +750,9 @@ struct DayCare
u8 stepCounter;
};
-struct RecordMixingDayCareMail
+struct RecordMixingDaycareMail
{
- struct DayCareMail mail[DAYCARE_MON_COUNT];
+ struct DaycareMail mail[DAYCARE_MON_COUNT];
u32 numDaycareMons;
bool16 holdsItem[DAYCARE_MON_COUNT];
};
diff --git a/include/global.tv.h b/include/global.tv.h
index 64e6a984e..2bc7dda99 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -1,13 +1,15 @@
#ifndef GUARD_GLOBAL_TV_H
#define GUARD_GLOBAL_TV_H
+#include "constants/tv.h"
+
typedef union // size = 0x24
{
// Common
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u8 pad02[26];
+ /*0x02*/ u8 data[26];
/*0x1C*/ u8 srcTrainerId3Lo;
/*0x1D*/ u8 srcTrainerId3Hi;
/*0x1E*/ u8 srcTrainerId2Lo;
@@ -22,7 +24,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u8 pad02[34];
+ /*0x02*/ u8 data[34];
} commonInit;
// Local shows
@@ -40,7 +42,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 var02;
+ /*0x02*/ u16 species;
/*0x04*/ u16 words[6];
/*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x18*/ u8 language;
@@ -62,16 +64,16 @@ typedef union // size = 0x24
/*0x1C*/ u16 words[4];
} fanclubOpinions;
- // TVSHOW_UNKN_SHOWTYPE_04 (dummied out)
+ // TVSHOW_DUMMY
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 words[2];
- /*0x06*/ u16 var06;
+ /*0x06*/ u16 species;
/*0x08*/ u8 pad_08[3];
- /*0x0b*/ u8 string_0b[12];
+ /*0x0b*/ u8 name[12];
/*0x17*/ u8 language;
- } unkShow04;
+ } dummy;
// TVSHOW_NAME_RATER_SHOW
struct {
@@ -212,8 +214,8 @@ typedef union // size = 0x24
/*0x02*/ u8 priceReduced;
/*0x03*/ u8 language;
/*0x04*/ u8 pad04[2];
- /*0x06*/ u16 itemIds[3];
- /*0x0C*/ u16 itemAmounts[3];
+ /*0x06*/ u16 itemIds[SMARTSHOPPER_NUM_ITEMS];
+ /*0x0C*/ u16 itemAmounts[SMARTSHOPPER_NUM_ITEMS];
/*0x12*/ u8 shopLocation;
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} smartshopperShow;
@@ -401,7 +403,7 @@ typedef union // size = 0x24
/*0x08*/ u16 species3;
/*0x0a*/ u16 species4;
/*0x0c*/ u8 language;
- /*0x0d*/ u8 facility;
+ /*0x0d*/ u8 facilityAndMode;
/*0x0e*/ u8 filler_0e[5];
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} frontier;
diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h
index 29c66a992..603d585da 100644
--- a/include/mauville_old_man.h
+++ b/include/mauville_old_man.h
@@ -7,7 +7,7 @@ void SetMauvilleOldMan(void);
u8 GetCurrentMauvilleOldMan(void);
void ScrSpecial_SetMauvilleOldManObjEventGfx(void);
u8 sub_81201C8(void);
-void sub_8120B70(OldMan *dest);
+void SanitizeMauvilleOldManForRuby(OldMan *dest);
void sub_8120670(void);
void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 r1, u32 r6);
void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 unused, u32 a2);
diff --git a/include/tv.h b/include/tv.h
index f94c5b7e5..30cd13326 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -1,13 +1,10 @@
#ifndef GUARD_TV_H
#define GUARD_TV_H
-#define SLOT_MACHINE 0
-#define ROULETTE 1
-
extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
-void sub_80EE184(void);
+void TryPutBreakingNewsOnAir(void);
void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove);
void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facility);
void DoTVShow(void);
@@ -23,41 +20,37 @@ void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx);
void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx);
u32 GetPlayerIDAsU32(void);
bool8 GetPriceReduction(u8 newsKind);
-void sub_80F14F8(TVShow *shows);
+void SanitizeTVShowLocationsForRuby(TVShow *shows);
size_t CountDigits(int value);
u8 GetRibbonCount(struct Pokemon *pokemon);
void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent);
void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent);
-void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut);
+void TryPutFindThatGamerOnAir(u16 nCoinsPaidOut);
void TryPutSecretBaseSecretsOnAir(void);
void TryPutTodaysRivalTrainerOnAir(void);
void TryPutTrendWatcherOnAir(const u16 *words);
-void sub_80EDA80(void);
void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx);
-void sub_80F0BB8(void);
+void DeactivateAllNormalTVShows(void);
void RecordFishingAttemptForTV(bool8 caughtFish);
void IncrementDailySlotsUses(void);
void IncrementDailyRouletteUses(void);
void IncrementDailyWildBattles(void);
void IncrementDailyBerryBlender(void);
-void sub_80F1208(TVShow *shows);
-void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed);
-void sub_80F14F8(TVShow *shows);
-size_t sub_80EF370(int value);
+void SanitizeTVShowsForRuby(TVShow *shows);
+void TryPutSafariFanClubOnAir(u8 nMonsCaught, u8 nPkblkUsed);
bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
void SetPokemonAnglerSpecies(u16 species);
void UpdateTVShowsPerDay(u16 days);
-void PutPokemonTodayCaughtOnAir(void);
-void TV_PutSecretBaseVisitOnTheAir(void);
+void TryPutPokemonTodayOnAir(void);
+void TryPutSecretBaseVisitOnAir(void);
void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent);
void BravoTrainerPokemonProfile_BeforeInterview1(u16 move);
void InterviewBefore(void);
void InterviewAfter(void);
void UpdateTVScreensOnMap(int, int);
-void TV_PrintIntToStringVar(u8 varIdx, int value);
-void SaveRecordedItemPurchasesForTVShow(void);
+void ConvertIntToDecimalString(u8 varIdx, int value);
+void TryPutSmartShopperOnAir(void);
bool8 ShouldAirFrontierTVShow(void);
-void sub_80EE8C8(u16 winStreak, u8 facilityAndMode);
void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace);
void ContestLiveUpdates_Init(u8 round1Placing);
void ContestLiveUpdates_SetRound2Placing(u8 round2Placing);
@@ -65,5 +58,8 @@ void ContestLiveUpdates_SetWinnerAppealFlag(u8 flag);
void ContestLiveUpdates_SetWinnerMoveUsed(u16 move);
void ContestLiveUpdates_SetLoserData(u8 flag, u8 loser);
void ResetGabbyAndTy(void);
+u8 CheckForPlayersHouseNews(void);
+bool8 IsGabbyAndTyShowOnTheAir(void);
+void TryPutTrainerFanClubOnAir(void);
#endif //GUARD_TV_H