497 lines
14 KiB
C
497 lines
14 KiB
C
#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 data[26];
|
|
/*0x1C*/ u8 srcTrainerId3Lo;
|
|
/*0x1D*/ u8 srcTrainerId3Hi;
|
|
/*0x1E*/ u8 srcTrainerId2Lo;
|
|
/*0x1F*/ u8 srcTrainerId2Hi;
|
|
/*0x20*/ u8 srcTrainerIdLo;
|
|
/*0x21*/ u8 srcTrainerIdHi;
|
|
/*0x22*/ u8 trainerIdLo;
|
|
/*0x23*/ u8 trainerIdHi;
|
|
} common;
|
|
|
|
// Common init (used for initialization loop)
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 data[34];
|
|
} commonInit;
|
|
|
|
// Local shows
|
|
// TVSHOW_FAN_CLUB_LETTER
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 species;
|
|
/*0x04*/ u16 words[6];
|
|
/*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x18*/ u8 language;
|
|
} fanclubLetter;
|
|
|
|
// TVSHOW_RECENT_HAPPENINGS
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 species;
|
|
/*0x04*/ u16 words[6];
|
|
/*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x18*/ u8 language;
|
|
} recentHappenings;
|
|
|
|
// TVSHOW_PKMN_FAN_CLUB_OPINIONS
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 species;
|
|
/*0x04*/ u8 friendshipHighNybble:4;
|
|
/*0x04*/ u8 questionAsked:4;
|
|
/*0x05*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x0D*/ u8 language;
|
|
/*0x0E*/ u8 pokemonNameLanguage;
|
|
/*0x0F*/ u8 filler_0F[1];
|
|
/*0x10*/ u8 nickname[PLAYER_NAME_LENGTH + 1];
|
|
/*0x18*/ u16 words18[2];
|
|
/*0x1C*/ u16 words[2];
|
|
} fanclubOpinions;
|
|
|
|
// TVSHOW_DUMMY
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 words[2];
|
|
/*0x06*/ u16 species;
|
|
/*0x08*/ u8 pad_08[3];
|
|
/*0x0b*/ u8 name[12];
|
|
/*0x17*/ u8 language;
|
|
} dummy;
|
|
|
|
// TVSHOW_NAME_RATER_SHOW
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 species;
|
|
/*0x04*/ u8 pokemonName[POKEMON_NAME_LENGTH + 1];
|
|
/*0x0F*/ u8 trainerName[11];
|
|
/*0x1A*/ u8 random;
|
|
/*0x1B*/ u8 random2;
|
|
/*0x1C*/ u16 randomSpecies;
|
|
/*0x1E*/ u8 language;
|
|
/*0x1F*/ u8 pokemonNameLanguage;
|
|
} nameRaterShow;
|
|
|
|
// TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE (contest)
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 species;
|
|
/*0x04*/ u16 words[2];
|
|
/*0x08*/ u8 pokemonNickname[POKEMON_NAME_LENGTH + 1];
|
|
/*0x13*/ u8 contestCategory:3;
|
|
/*0x13*/ u8 contestRank:2;
|
|
/*0x13*/ u8 contestResult:2;
|
|
/*0x14*/ u16 move;
|
|
/*0x16*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x1E*/ u8 language;
|
|
/*0x1F*/ u8 pokemonNameLanguage;
|
|
} bravoTrainer;
|
|
|
|
// TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 trainerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x0A*/ u16 species;
|
|
/*0x0C*/ u8 pokemonName[8];
|
|
/*0x14*/ u16 defeatedSpecies;
|
|
/*0x16*/ u16 numFights;
|
|
/*0x18*/ u16 words[1];
|
|
/*0x1A*/ u8 btLevel;
|
|
/*0x1B*/ u8 interviewResponse;
|
|
/*0x1C*/ bool8 wonTheChallenge;
|
|
/*0x1D*/ u8 language;
|
|
/*0x1E*/ u8 pokemonNameLanguage;
|
|
} bravoTrainerTower;
|
|
|
|
// TVSHOW_CONTEST_LIVE_UPDATES
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 losingSpecies;
|
|
/*0x04*/ u8 losingTrainerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x0C*/ u8 loserAppealFlag;
|
|
/*0x0D*/ u8 round1Placing;
|
|
/*0x0e*/ u8 round2Placing;
|
|
/*0x0f*/ u8 winnerAppealFlag;
|
|
/*0x10*/ u16 move;
|
|
/*0x12*/ u16 winningSpecies;
|
|
/*0x14*/ u8 winningTrainerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x1C*/ u8 category;
|
|
/*0x1D*/ u8 winningTrainerLanguage;
|
|
/*0x1E*/ u8 losingTrainerLanguage;
|
|
} contestLiveUpdates;
|
|
|
|
// TVSHOW_3_CHEERS_FOR_POKEBLOCKS
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 sheen;
|
|
/*0x03*/ u8 flavor:3;
|
|
/*0x03*/ u8 color:2;
|
|
/*0x04*/ u8 worstBlenderName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x0C*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x14*/ u8 language;
|
|
/*0x15*/ u8 worstBlenderLanguage;
|
|
} threeCheers;
|
|
|
|
// TVSHOW_BATTLE_UPDATE
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 speciesOpponent;
|
|
/*0x04*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x0C*/ u8 linkOpponentName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x14*/ u16 move;
|
|
/*0x16*/ u16 speciesPlayer;
|
|
/*0x18*/ u8 battleType;
|
|
/*0x19*/ u8 language;
|
|
/*0x1A*/ u8 linkOpponentLanguage;
|
|
} battleUpdate;
|
|
|
|
// TVSHOW_FAN_CLUB_SPECIAL
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x0a*/ u8 idLo;
|
|
/*0x0b*/ u8 idHi;
|
|
/*0x0c*/ u8 idolName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x14*/ u16 words[1];
|
|
/*0x16*/ u8 score;
|
|
/*0x17*/ u8 language;
|
|
/*0x18*/ u8 idolNameLanguage;
|
|
} fanClubSpecial;
|
|
|
|
// TVSHOW_LILYCOVE_CONTEST_LADY
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x0a*/ u8 contestCategory;
|
|
/*0x0b*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
|
/*0x16*/ u8 pokeblockState;
|
|
/*0x17*/ u8 language;
|
|
/*0x18*/ u8 pokemonNameLanguage;
|
|
} contestLady;
|
|
|
|
// Record Mixing Shows
|
|
// TVSHOW_POKEMON_TODAY_CAUGHT
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 language;
|
|
/*0x03*/ u8 language2;
|
|
/*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
|
/*0x0F*/ u8 ball;
|
|
/*0x10*/ u16 species;
|
|
/*0x12*/ u8 nBallsUsed;
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} pokemonToday;
|
|
|
|
// TVSHOW_SMART_SHOPPER
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 priceReduced;
|
|
/*0x03*/ u8 language;
|
|
/*0x04*/ u8 pad04[2];
|
|
/*0x06*/ u16 itemIds[SMARTSHOPPER_NUM_ITEMS];
|
|
/*0x0C*/ u16 itemAmounts[SMARTSHOPPER_NUM_ITEMS];
|
|
/*0x12*/ u8 shopLocation;
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} smartshopperShow;
|
|
|
|
// TVSHOW_POKEMON_TODAY_FAILED
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 language;
|
|
/*0x03*/ u8 pad03[9];
|
|
/*0x0c*/ u16 species;
|
|
/*0x0e*/ u16 species2;
|
|
/*0x10*/ u8 nBallsUsed;
|
|
/*0x11*/ u8 outcome;
|
|
/*0x12*/ u8 location;
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} pokemonTodayFailed;
|
|
|
|
// TVSHOW_FISHING_ADVICE
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 nBites;
|
|
/*0x03*/ u8 nFails;
|
|
/*0x04*/ u16 species;
|
|
/*0x06*/ u8 language;
|
|
/*0x07*/ u8 pad07[12];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} pokemonAngler;
|
|
|
|
// TVSHOW_WORLD_OF_MASTERS
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 numPokeCaught;
|
|
/*0x04*/ u16 caughtPoke;
|
|
/*0x06*/ u16 steps;
|
|
/*0x08*/ u16 species;
|
|
/*0x0a*/ u8 location;
|
|
/*0x0b*/ u8 language;
|
|
/*0x0c*/ u8 pad0c[7];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} worldOfMasters;
|
|
|
|
// TVSHOW_TODAYS_RIVAL_TRAINER
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 dexCount;
|
|
/*0x04*/ u8 badgeCount;
|
|
/*0x05*/ u8 nSilverSymbols;
|
|
/*0x06*/ u8 nGoldSymbols;
|
|
/*0x07*/ u8 location;
|
|
/*0x08*/ u16 battlePoints;
|
|
/*0x0a*/ u16 mapLayoutId;
|
|
/*0x0c*/ u8 language;
|
|
/*0x0d*/ u8 filler_0d[6];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} rivalTrainer;
|
|
|
|
// TVSHOW_TREND_WATCHER
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 filler_02[2];
|
|
/*0x04*/ u16 words[2];
|
|
/*0x08*/ u8 gender;
|
|
/*0x09*/ u8 language;
|
|
/*0x0a*/ u8 filler_0a[9];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} trendWatcher;
|
|
|
|
// TVSHOW_TREASURE_INVESTIGATORS
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 item;
|
|
/*0x04*/ u8 location;
|
|
/*0x05*/ u8 language;
|
|
/*0x06*/ u16 mapLayoutId;
|
|
/*0x08*/ u8 filler_08[11];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} treasureInvestigators;
|
|
|
|
// TVSHOW_FIND_THAT_GAMER
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 won;
|
|
/*0x03*/ u8 whichGame;
|
|
/*0x04*/ u16 nCoins;
|
|
/*0x06*/ u8 filler_06[2];
|
|
/*0x08*/ u8 language;
|
|
/*0x09*/ u8 filler_09[10];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} findThatGamer;
|
|
|
|
// TVSHOW_BREAKING_NEWS
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 lastOpponentSpecies;
|
|
/*0x04*/ u8 location;
|
|
/*0x05*/ u8 outcome;
|
|
/*0x06*/ u16 caughtMonBall;
|
|
/*0x08*/ u16 balls;
|
|
/*0x0a*/ u16 poke1Species;
|
|
/*0x0c*/ u16 lastUsedMove;
|
|
/*0x0e*/ u8 language;
|
|
/*0x0f*/ u8 filler_0f[4];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} breakingNews;
|
|
|
|
// TVSHOW_SECRET_BASE_VISIT
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 avgLevel;
|
|
/*0x03*/ u8 numDecorations;
|
|
/*0x04*/ u8 decorations[4];
|
|
/*0x08*/ u16 species;
|
|
/*0x0a*/ u16 move;
|
|
/*0x0c*/ u8 language;
|
|
/*0x0d*/ u8 filler_0d[6];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} secretBaseVisit;
|
|
|
|
// TVSHOW_LOTTO_WINNER
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 item;
|
|
/*0x04*/ u8 whichPrize;
|
|
/*0x05*/ u8 language;
|
|
/*0x06*/ u8 filler_06[13];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} lottoWinner;
|
|
|
|
// TVSHOW_BATTLE_SEMINAR
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 move;
|
|
/*0x04*/ u16 foeSpecies;
|
|
/*0x06*/ u16 species;
|
|
/*0x08*/ u16 otherMoves[3];
|
|
/*0x0e*/ u16 betterMove;
|
|
/*0x10*/ u8 nOtherMoves;
|
|
/*0x11*/ u8 language;
|
|
/*0x12*/ u8 filler_12[1];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} battleSeminar;
|
|
|
|
// TVSHOW_TRAINER_FAN_CLUB
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 filler_02[2];
|
|
/*0x04*/ u16 words[2];
|
|
/*0x08*/ u8 language;
|
|
/*0x09*/ u8 filler_09[10];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} trainerFanClub;
|
|
|
|
// TVSHOW_CUTIES
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 nRibbons;
|
|
/*0x03*/ u8 selectedRibbon;
|
|
/*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
|
/*0x0f*/ u8 language;
|
|
/*0x10*/ u8 pokemonNameLanguage;
|
|
/*0x11*/ u8 filler_12[2];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} cuties;
|
|
|
|
// TVSHOW_FRONTIER
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 winStreak;
|
|
/*0x04*/ u16 species1;
|
|
/*0x06*/ u16 species2;
|
|
/*0x08*/ u16 species3;
|
|
/*0x0a*/ u16 species4;
|
|
/*0x0c*/ u8 language;
|
|
/*0x0d*/ u8 facilityAndMode;
|
|
/*0x0e*/ u8 filler_0e[5];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} frontier;
|
|
|
|
// TVSHOW_NUMBER_ONE
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 count;
|
|
/*0x04*/ u8 actionIdx;
|
|
/*0x05*/ u8 language;
|
|
/*0x06*/ u8 filler_06[13];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} numberOne;
|
|
|
|
// TVSHOW_SECRET_BASE_SECRETS
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u16 stepsInBase;
|
|
/*0x04*/ u8 baseOwnersName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x0c*/ u32 flags;
|
|
/*0x10*/ u16 item;
|
|
/*0x12*/ u8 savedState;
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
/*0x1b*/ u8 language;
|
|
/*0x1c*/ u8 baseOwnersNameLanguage;
|
|
} secretBaseSecrets;
|
|
|
|
// TVSHOW_SAFARI_FAN_CLUB
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 monsCaught;
|
|
/*0x03*/ u8 pokeblocksUsed;
|
|
/*0x04*/ u8 language;
|
|
/*0x05*/ u8 filler_05[14];
|
|
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
} safariFanClub;
|
|
|
|
// Mass Outbreak
|
|
// TVSHOW_MASS_OUTBREAK
|
|
struct {
|
|
/*0x00*/ u8 kind;
|
|
/*0x01*/ bool8 active;
|
|
/*0x02*/ u8 unused1;
|
|
/*0x03*/ u8 unused3;
|
|
/*0x04*/ u16 moves[MAX_MON_MOVES];
|
|
/*0x0C*/ u16 species;
|
|
/*0x0E*/ u16 unused2;
|
|
/*0x10*/ u8 locationMapNum;
|
|
/*0x11*/ u8 locationMapGroup;
|
|
/*0x12*/ u8 unused4;
|
|
/*0x13*/ u8 probability;
|
|
/*0x14*/ u8 level;
|
|
/*0x15*/ u8 unused5;
|
|
/*0x16*/ u16 daysLeft;
|
|
/*0x18*/ u8 language;
|
|
} massOutbreak;
|
|
} TVShow;
|
|
|
|
typedef struct
|
|
{
|
|
u8 kind;
|
|
u8 state;
|
|
u16 dayCountdown;
|
|
} PokeNews;
|
|
|
|
struct GabbyAndTyData
|
|
{
|
|
/*2ba4*/ u16 mon1;
|
|
/*2ba6*/ u16 mon2;
|
|
/*2ba8*/ u16 lastMove;
|
|
/*2baa*/ u16 quote[1];
|
|
/*2bac*/ u8 mapnum;
|
|
/*2bad*/ u8 battleNum;
|
|
/*2bae*/ u8 battleTookMoreThanOneTurn:1;
|
|
/*2bae*/ u8 playerLostAMon: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 playerUsedHealingItem2:1;
|
|
/*2baf*/ u8 playerThrewABall2:1;
|
|
/*2baf*/ u8 valB_4:4;
|
|
};
|
|
|
|
#endif //GUARD_GLOBAL_TV_H
|