Decompile TV (#80)

* ClearTVShowData

* special_0x44

* DoTVShow (nonmatching because align)

* DoTVShowBravoTrainerPokemonProfile

* Update field names

* DoTVShowBravoTrainerBattleTower

* Renaming of struct fields

* sub_80EBFF4 and UpdateTVScreensOnMap

* SetTVMetatilesOnMap

* Power buttons for the TV screens on the map

* special_0x45

* sub_80EC18C

* special_0x4a

* ResetGabbyAndTy

* GabbyAndTyBeforeInterview

* GabbyAndTyAfterInterview

* Through IsTVShowInSearchOfTrainersAiring

* GabbyAndTyGetLastQuote

* GabbyAndTyGetLastBattleTrivia

* GabbyAndTySetScriptVarsToFieldObjectLocalIds

* InterviewAfter; use TVShow as a precursor for making the individual show structs anonymous

* Make TV structs anonymous within the union

* Move the TV union to its own subheader

* Move TV show enums to the global.tv.h subheader

* Funcion renaming

* Apply static attributes where able

* PutPokemonTodayCaughtOnAir

* sub_80EC8A4

* PutPokemonTodayFailedOnTheAir

* sub_80EC9E8, sub_80ECA10

* sub_80ECA38

* sub_80ECB00

* Put3CheersForPokeblocksOnTheAir

* PutFanClubSpecialOnTheAir

* ContestLiveUpdates_BeforeInterview

* Other before-interview Contest Live Updates functions

* ContestLiveUpdates_BeforeInterview_5

* InterviewAfter_BravoTrainerPokemonProfile

* BravoTrainerPokemonProfile_BeforeInterview1

* BravoTrainerPokemonProfile_BeforeInterview2

* Disassemble TV data

* Decompile TV data

* InterviewAfter_BravoTrainerBattleTowerProfile

* SaveRecordedItemPurchasesForTVShow

* PutNameRaterShowOnTheAir

* StartMassOutbreak

* PutLilycoveContestLadyShowOnTheAir

* InterviewAfter_FanClubLetter

* Rip TV strings

* InterviewAfter_RecentHappenings

* InterviewAfter_PkmnFanClubOpinions

* sub_80ED718

* EndMassOutbreak

* sub_80ED888

* sub_80ED8B4

* UpdateMassOutbreakTimeLeft

* sub_80ED950

* PutFishingAdviceShowOnTheAir

* through sub_80EDA80

* ewram and common syms are now fetched from the object files

* BSS symbols are taken from the tv.o file

* through sub_80EDC60

* sub_80EDCE8

* sub_80EDD78

* through sub_80EDE84

* nomatching sub_80EDE98

* sub_80EDFB4

* sub_80EE104

* sub_80EE104

* sub_80EE184

* sub_80EE2CC

* sub_80EE35C

* sub_80EE44C

* sub_80EE4DC

* sub_80EE5A4

* sub_80EE69C

* sub_80EE72C

* sub_80EE7C0

* sub_80EE818

* sub_80EE8C8

* sub_80EEA70

* sub_80EEB98

* sub_80EEBF4

* through sub_80EED60

* Functions relating to Pokemon News

* sub_80EEF6C

* GetPriceReduction

* IsPriceDiscounted

* sub_80EF120

* through sub_80EF370

* sub_80EF40C

* HasMixableShowAlreadyBeenSpawnedWithPlayerID

* TV_SortPurchasesByQuantity

* FindActiveBroadcastByShowType_SetScriptResult

* InterviewBefore

* through sub_80EF88C

* through sub_80EF93C

* through sub_80EFA24

* through TV_BernoulliTrial

* sub_80EFB58

* sub_80EFBA4

* sub_80EFBDC

* through sub_80EFD98

* ChangePokemonNickname

* ChangeBoxPokemonNickname

* sub_80EFF9C

* through player_id_to_dword

* CheckForBigMovieOrEmergencyNewsOnTV

* GetMomOrDadStringForTVMessage

* sub_80F01E8

* sub_80F0358

* sub_80F049C

* TV record mixing functions

* sub_80F06D0

* sub_80F0708 nonmatching

* through sub_80F0B24

* sub_80F0B64

* through sub_80F0C04

* sub_80F0C7C

* sub_80F0D60

* sub_80F0E58

* sub_80F0E84

* through sub_80F0F24

* sub_80F0F64

* sub_80F1208

* sub_80F1254

* sub_80F1290

* sub_80F12A4

* sub_80F14F8

* DoTVShowTodaysSmartShopper

* DoTVShowTheNameRaterShow

* DoTVShowPokemonTodaySuccessfulCapture

* DoTVShowPokemonTodayFailedCapture

* DoTVShowPokemonFanClubLetter

* DoTVShowRecentHappenings

* DoTVShowPokemonFanClubOpinions

* DoTVShowPokemonNewsMassOutbreak

* DoTVShowPokemonContestLiveUpdates

* DoTVShowPokemonBattleUpdate

* DoTVShow3CheersForPokeblocks

* DoTVShowInSearchOfTrainers

* Label GabbyAndTyData fields; remove ddump comments from data/text/tv.inc

* DoTVShowPokemonAngler

* DoTVShowTheWorldOfMasters; update RAM symbols and field names

* Decorate static functions

* DoTVShowTodaysRivalTrainer; region map enums

* TVDewfordTrendWatcherNetworkTextGroup

* DoTVShowHoennTreasureInvestigators

* DoTVShowFindThatGamer

* DoTVShowBreakingNewsTV

* DoTVShowSecretBaseVisit

* DoTVShowPokemonLotterWinnerFlashReport

* DoTVShowThePokemonBattleSeminar

* DoTVShowTrainerFanClubSpecial, DoTVShowTrainerFanClub

* DoTVShowSpotTheCuties

* DoTVShowPokemonNewsBattleFrontier

* DoTVShowWhatsNo1InHoennToday

* Helpers for DoTVShowSecretBaseSecrets

* DoTVShowSecretBaseSecrets

* DoTVShowSafariFanClub

* Finish decompilation of tv.s

* Some renaming

* Rename text group pointers

* revoke statis; pokenews enums

* Labels are number one

* Label all TV struct fields

* Make data/text/tv.inc more readable

* Split data/text/tv.inc

* Rename pokenews text pointers

* Frontier Symbol constants; indicate static rodata objects with 's' prefix

* Fix leading spaces/tabs

F*** CLion sometimes

* Fix inconsequential warning
This commit is contained in:
PikalaxALT
2017-10-13 11:09:36 -04:00
committed by Diegoisawesome
parent 428dd0e0a8
commit 52db3ad5aa
76 changed files with 12689 additions and 17601 deletions

View File

@@ -78,6 +78,7 @@
#define BATTLE_PLAYER_TELEPORTED 0x5
#define BATTLE_POKE_FLED 0x6
#define BATTLE_CAUGHT 0x7
#define BATTLE_SAFARI_OUT_OF_BALLS 0x8
#define BATTLE_FORFEITED 0x9
#define BATTLE_OPPONENT_TELEPORTED 0xA
@@ -528,11 +529,11 @@ struct BattleResults
u8 playerSwitchesCounter; // 0x2
u8 unk3; // 0x3
u8 unk4; // 0x4
u8 unk5_0:1; // 0x5 , 0x1
u8 unk5_1:1; // 0x5 , 0x2
u8 caughtMonBall:4; // 0x5 , 0x4/0x8/0x10/0x20
u8 unk5_6:1; // 0x5 , 0x40
u8 unk5_7:1; // 0x5 , 0x80
u8 unk5_0:1; // 0x5
u8 usedMasterBall:1; // 0x5
u8 caughtMonBall:4; // 0x5
u8 unk5_6:1; // 0x5
u8 unk5_7:1; // 0x5
u16 playerMon1Species; // 0x6
u8 playerMon1Name[11]; // 0x8
u8 battleTurnCounter; // 0x13
@@ -545,7 +546,7 @@ struct BattleResults
u16 caughtMonSpecies; // 0x28
u8 caughtMonNick[10]; // 0x2A
u8 filler34[2];
u8 catchAttempts[12]; // 0x36
u8 catchAttempts[11]; // 0x36
};
extern struct BattleResults gBattleResults;
@@ -902,6 +903,10 @@ struct MonSpritesGfx
struct SpriteTemplate templates[4];
};
extern struct BattleSpritesGfx* gMonSpritesGfx;
extern u8 gBattleOutcome;
extern u16 gLastUsedItem;
extern u32 gBattleTypeFlags;
extern struct MonSpritesGfx* gMonSpritesGfxPtr;
#endif // GUARD_BATTLE_H

6
include/battle_tower.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef GUARD_BATTLE_TOWER_H
#define GUARD_BATTLE_TOWER_H
u16 sub_8164FCC(u8, u8);
#endif //GUARD_BATTLE_TOWER_H

18
include/contest.h Normal file
View File

@@ -0,0 +1,18 @@
#ifndef GUARD_CONTEST_H
#define GUARD_CONTEST_H
struct ContestStruct_02039E00 {
u16 unk_00;
u8 unk_02[11];
u8 unk_0d[8];
u8 filler_15[9];
u8 filler_1E[34];
};
extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
extern u8 gUnknown_02039F24;
extern EWRAM_DATA u16 gUnknown_02039F2C;
extern EWRAM_DATA u8 gUnknown_02039F2E;
extern EWRAM_DATA u8 gUnknown_02039F30;
#endif //GUARD_CONTEST_H

147
include/decoration.h Normal file
View File

@@ -0,0 +1,147 @@
#ifndef GUARD_DECORATION_H
#define GUARD_DECORATION_H
enum DecoId {
/*000*/ DECOR_NONE,
/*001*/ DECOR_SMALL_DESK,
/*002*/ DECOR_POKEMON_DESK,
/*003*/ DECOR_HEAVY_DESK,
/*004*/ DECOR_RAGGED_DESK,
/*005*/ DECOR_COMFORT_DESK,
/*006*/ DECOR_PRETTY_DESK,
/*007*/ DECOR_BRICK_DESK,
/*008*/ DECOR_CAMP_DESK,
/*009*/ DECOR_HARD_DESK,
/*010*/ DECOR_SMALL_CHAIR,
/*011*/ DECOR_POKEMON_CHAIR,
/*012*/ DECOR_HEAVY_CHAIR,
/*013*/ DECOR_PRETTY_CHAIR,
/*014*/ DECOR_COMFORT_CHAIR,
/*015*/ DECOR_RAGGED_CHAIR,
/*016*/ DECOR_BRICK_CHAIR,
/*017*/ DECOR_CAMP_CHAIR,
/*018*/ DECOR_HARD_CHAIR,
/*019*/ DECOR_RED_PLANT,
/*020*/ DECOR_TROPICAL_PLANT,
/*021*/ DECOR_PRETTY_FLOWERS,
/*022*/ DECOR_COLORFUL_PLANT,
/*023*/ DECOR_BIG_PLANT,
/*024*/ DECOR_GORGEOUS_PLANT,
/*025*/ DECOR_RED_BRICK,
/*026*/ DECOR_YELLOW_BRICK,
/*027*/ DECOR_BLUE_BRICK,
/*028*/ DECOR_RED_BALLOON,
/*029*/ DECOR_BLUE_BALLOON,
/*030*/ DECOR_YELLOW_BALLOON,
/*031*/ DECOR_RED_TENT,
/*032*/ DECOR_BLUE_TENT,
/*033*/ DECOR_SOLID_BOARD,
/*034*/ DECOR_SLIDE,
/*035*/ DECOR_FENCE_LENGTH,
/*036*/ DECOR_FENCE_WIDTH,
/*037*/ DECOR_TIRE,
/*038*/ DECOR_STAND,
/*039*/ DECOR_MUD_BALL,
/*040*/ DECOR_BREAKABLE_DOOR,
/*041*/ DECOR_SAND_ORNAMENT,
/*042*/ DECOR_SILVER_SHIELD,
/*043*/ DECOR_GOLD_SHIELD,
/*044*/ DECOR_GLASS_ORNAMENT,
/*045*/ DECOR_TV,
/*046*/ DECOR_ROUND_TV,
/*047*/ DECOR_CUTE_TV,
/*048*/ DECOR_GLITTER_MAT,
/*049*/ DECOR_JUMP_MAT,
/*050*/ DECOR_SPIN_MAT,
/*051*/ DECOR_C_LOW_NOTE_MAT,
/*052*/ DECOR_D_NOTE_MAT,
/*053*/ DECOR_E_NOTE_MAT,
/*054*/ DECOR_F_NOTE_MAT,
/*055*/ DECOR_G_NOTE_MAT,
/*056*/ DECOR_A_NOTE_MAT,
/*057*/ DECOR_B_NOTE_MAT,
/*058*/ DECOR_C_HIGH_NOTE_MAT,
/*059*/ DECOR_SURF_MAT,
/*060*/ DECOR_THUNDER_MAT,
/*061*/ DECOR_FIRE_BLAST_MAT,
/*062*/ DECOR_POWDER_SNOW_MAT,
/*063*/ DECOR_ATTRACT_MAT,
/*064*/ DECOR_FISSURE_MAT,
/*065*/ DECOR_SPIKES_MAT,
/*066*/ DECOR_BALL_POSTER,
/*067*/ DECOR_GREEN_POSTER,
/*068*/ DECOR_RED_POSTER,
/*069*/ DECOR_BLUE_POSTER,
/*070*/ DECOR_CUTE_POSTER,
/*071*/ DECOR_PIKA_POSTER,
/*072*/ DECOR_LONG_POSTER,
/*073*/ DECOR_SEA_POSTER,
/*074*/ DECOR_SKY_POSTER,
/*075*/ DECOR_KISS_POSTER,
/*076*/ DECOR_PICHU_DOLL,
/*077*/ DECOR_PIKACHU_DOLL,
/*078*/ DECOR_MARILL_DOLL,
/*079*/ DECOR_TOGEPI_DOLL,
/*080*/ DECOR_CYNDAQUIL_DOLL,
/*081*/ DECOR_CHIKORITA_DOLL,
/*082*/ DECOR_TOTODILE_DOLL,
/*083*/ DECOR_JIGGLYPUFF_DOLL,
/*084*/ DECOR_MEOWTH_DOLL,
/*085*/ DECOR_CLEFAIRY_DOLL,
/*086*/ DECOR_DITTO_DOLL,
/*087*/ DECOR_SMOOCHUM_DOLL,
/*088*/ DECOR_TREECKO_DOLL,
/*089*/ DECOR_TORCHIC_DOLL,
/*090*/ DECOR_MUDKIP_DOLL,
/*091*/ DECOR_DUSKULL_DOLL,
/*092*/ DECOR_WYNAUT_DOLL,
/*093*/ DECOR_BALTOY_DOLL,
/*094*/ DECOR_KECLEON_DOLL,
/*095*/ DECOR_AZURILL_DOLL,
/*096*/ DECOR_SKITTY_DOLL,
/*097*/ DECOR_SWABLU_DOLL,
/*098*/ DECOR_GULPIN_DOLL,
/*099*/ DECOR_LOTAD_DOLL,
/*100*/ DECOR_SEEDOT_DOLL,
/*101*/ DECOR_PIKA_CUSHION,
/*102*/ DECOR_ROUND_CUSHION,
/*103*/ DECOR_KISS_CUSHION,
/*104*/ DECOR_ZIGZAG_CUSHION,
/*105*/ DECOR_SPIN_CUSHION,
/*106*/ DECOR_DIAMOND_CUSHION,
/*107*/ DECOR_BALL_CUSHION,
/*108*/ DECOR_GRASS_CUSHION,
/*109*/ DECOR_FIRE_CUSHION,
/*110*/ DECOR_WATER_CUSHION,
/*111*/ DECOR_SNORLAX_DOLL,
/*112*/ DECOR_RHYDON_DOLL,
/*113*/ DECOR_LAPRAS_DOLL,
/*114*/ DECOR_VENUSAUR_DOLL,
/*115*/ DECOR_CHARIZARD_DOLL,
/*116*/ DECOR_BLASTOISE_DOLL,
/*117*/ DECOR_WAILMER_DOLL,
/*118*/ DECOR_REGIROCK_DOLL,
/*119*/ DECOR_REGICE_DOLL,
/*120*/ DECOR_REGISTEEL_DOLL
};
// Exported type declarations
struct Decoration
{
/*0x00*/ u8 id;
/*0x01*/ u8 name[16];
/*0x11*/ u8 permission;
/*0x12*/ u8 shape;
/*0x13*/ u8 category;
/*0x14*/ u16 price;
/*0x18*/ const u8 *description;
/*0x1c*/ const u16 *tiles;
};
// Exported RAM declarations
// Exported ROM declarations
extern const struct Decoration gDecorations[];
#endif //GUARD_DECORATION_H

View File

@@ -30,7 +30,9 @@ enum
void InitEasyChatPhrases(void);
void easy_chat_input_maybe(void);
void CopyEasyChatWord(u8 *, u16);
bool32 sub_811F8D8(u16);
void CopyEasyChatWord(u8 *dest, u16 word);
bool32 sub_811F8D8(u16 word);
void InitializeEasyChatWordArray(u16 *words, u16 length);
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
#endif // GUARD_EASYCHAT_H

View File

@@ -8,4 +8,353 @@
extern const u8 gUnknown_082766A2[];
extern const u8 gUnknown_082766A6[];
extern const u8 gTVBravoTrainerText00[];
extern const u8 gTVBravoTrainerText01[];
extern const u8 gTVBravoTrainerText02[];
extern const u8 gTVBravoTrainerText03[];
extern const u8 gTVBravoTrainerText04[];
extern const u8 gTVBravoTrainerText05[];
extern const u8 gTVBravoTrainerText06[];
extern const u8 gTVBravoTrainerText07[];
extern const u8 gTVBravoTrainerText08[];
extern const u8 gTVBravoTrainerBattleTowerText00[];
extern const u8 gTVBravoTrainerBattleTowerText01[];
extern const u8 gTVBravoTrainerBattleTowerText02[];
extern const u8 gTVBravoTrainerBattleTowerText03[];
extern const u8 gTVBravoTrainerBattleTowerText04[];
extern const u8 gTVBravoTrainerBattleTowerText05[];
extern const u8 gTVBravoTrainerBattleTowerText06[];
extern const u8 gTVBravoTrainerBattleTowerText07[];
extern const u8 gTVBravoTrainerBattleTowerText08[];
extern const u8 gTVBravoTrainerBattleTowerText09[];
extern const u8 gTVBravoTrainerBattleTowerText10[];
extern const u8 gTVBravoTrainerBattleTowerText11[];
extern const u8 gTVBravoTrainerBattleTowerText12[];
extern const u8 gTVBravoTrainerBattleTowerText13[];
extern const u8 gTVBravoTrainerBattleTowerText14[];
extern const u8 gTVFanClubOpinionsText00[];
extern const u8 gTVFanClubOpinionsText01[];
extern const u8 gTVFanClubOpinionsText02[];
extern const u8 gTVFanClubOpinionsText03[];
extern const u8 gTVFanClubOpinionsText04[];
extern const u8 gTVFanClubText00[];
extern const u8 gTVFanClubText01[];
extern const u8 gTVFanClubText02[];
extern const u8 gTVFanClubText03[];
extern const u8 gTVFanClubText04[];
extern const u8 gTVFanClubText05[];
extern const u8 gTVFanClubText06[];
extern const u8 gTVFanClubText07[];
extern const u8 gTVRecentHappeningsText00[];
extern const u8 gTVRecentHappeningsText01[];
extern const u8 gTVRecentHappeningsText02[];
extern const u8 gTVRecentHappeningsText03[];
extern const u8 gTVRecentHappeningsText04[];
extern const u8 gTVRecentHappeningsText05[];
extern const u8 gTVMassOutbreakText00[];
extern const u8 gTV3CheersForPokeblocksText00[];
extern const u8 gTV3CheersForPokeblocksText01[];
extern const u8 gTV3CheersForPokeblocksText02[];
extern const u8 gTV3CheersForPokeblocksText03[];
extern const u8 gTV3CheersForPokeblocksText04[];
extern const u8 gTV3CheersForPokeblocksText05[];
extern const u8 gTVTrainerFanClubSpecialText00[];
extern const u8 gTVTrainerFanClubSpecialText01[];
extern const u8 gTVTrainerFanClubSpecialText02[];
extern const u8 gTVTrainerFanClubSpecialText03[];
extern const u8 gTVTrainerFanClubSpecialText04[];
extern const u8 gTVTrainerFanClubSpecialText05[];
extern const u8 gTVNameRaterText00[];
extern const u8 gTVNameRaterText01[];
extern const u8 gTVNameRaterText02[];
extern const u8 gTVNameRaterText03[];
extern const u8 gTVNameRaterText04[];
extern const u8 gTVNameRaterText05[];
extern const u8 gTVNameRaterText06[];
extern const u8 gTVNameRaterText07[];
extern const u8 gTVNameRaterText08[];
extern const u8 gTVNameRaterText09[];
extern const u8 gTVNameRaterText10[];
extern const u8 gTVNameRaterText11[];
extern const u8 gTVNameRaterText12[];
extern const u8 gTVNameRaterText13[];
extern const u8 gTVNameRaterText14[];
extern const u8 gTVNameRaterText15[];
extern const u8 gTVNameRaterText16[];
extern const u8 gTVNameRaterText17[];
extern const u8 gTVNameRaterText18[];
extern const u8 gTVPokemonAnglerText00[];
extern const u8 gTVPokemonAnglerText01[];
extern const u8 gTVPokemonTodayFailedText00[];
extern const u8 gTVPokemonTodayFailedText01[];
extern const u8 gTVPokemonTodayFailedText02[];
extern const u8 gTVPokemonTodayFailedText03[];
extern const u8 gTVPokemonTodayFailedText04[];
extern const u8 gTVPokemonTodayFailedText05[];
extern const u8 gTVPokemonTodayFailedText06[];
extern const u8 gTVPokemonTodaySuccessfulText00[];
extern const u8 gTVPokemonTodaySuccessfulText01[];
extern const u8 gTVPokemonTodaySuccessfulText02[];
extern const u8 gTVPokemonTodaySuccessfulText03[];
extern const u8 gTVPokemonTodaySuccessfulText04[];
extern const u8 gTVPokemonTodaySuccessfulText05[];
extern const u8 gTVPokemonTodaySuccessfulText06[];
extern const u8 gTVPokemonTodaySuccessfulText07[];
extern const u8 gTVPokemonTodaySuccessfulText08[];
extern const u8 gTVPokemonTodaySuccessfulText09[];
extern const u8 gTVPokemonTodaySuccessfulText10[];
extern const u8 gTVPokemonTodaySuccessfulText11[];
extern const u8 gTVTodaysSmartShopperText00[];
extern const u8 gTVTodaysSmartShopperText01[];
extern const u8 gTVTodaysSmartShopperText02[];
extern const u8 gTVTodaysSmartShopperText03[];
extern const u8 gTVTodaysSmartShopperText04[];
extern const u8 gTVTodaysSmartShopperText05[];
extern const u8 gTVTodaysSmartShopperText06[];
extern const u8 gTVTodaysSmartShopperText07[];
extern const u8 gTVTodaysSmartShopperText08[];
extern const u8 gTVTodaysSmartShopperText09[];
extern const u8 gTVTodaysSmartShopperText10[];
extern const u8 gTVTodaysSmartShopperText11[];
extern const u8 gTVTodaysSmartShopperText12[];
extern const u8 gTVWorldOfMastersText00[];
extern const u8 gTVWorldOfMastersText01[];
extern const u8 gTVWorldOfMastersText02[];
extern const u8 gTVTodaysRivalTrainerText00[];
extern const u8 gTVTodaysRivalTrainerText07[];
extern const u8 gTVTodaysRivalTrainerText08[];
extern const u8 gTVTodaysRivalTrainerText09[];
extern const u8 gTVTodaysRivalTrainerText10[];
extern const u8 gTVTodaysRivalTrainerText01[];
extern const u8 gTVTodaysRivalTrainerText02[];
extern const u8 gTVTodaysRivalTrainerText03[];
extern const u8 gTVTodaysRivalTrainerText04[];
extern const u8 gTVTodaysRivalTrainerText05[];
extern const u8 gTVTodaysRivalTrainerText06[];
extern const u8 gTVDewfordTrendWatcherNetworkText00[];
extern const u8 gTVDewfordTrendWatcherNetworkText01[];
extern const u8 gTVDewfordTrendWatcherNetworkText02[];
extern const u8 gTVDewfordTrendWatcherNetworkText03[];
extern const u8 gTVDewfordTrendWatcherNetworkText04[];
extern const u8 gTVDewfordTrendWatcherNetworkText05[];
extern const u8 gTVDewfordTrendWatcherNetworkText06[];
extern const u8 gTVHoennTreasureInvestigatorsText00[];
extern const u8 gTVHoennTreasureInvestigatorsText01[];
extern const u8 gTVHoennTreasureInvestigatorsText02[];
extern const u8 gTVFindThatGamerText00[];
extern const u8 gTVFindThatGamerText01[];
extern const u8 gTVFindThatGamerText02[];
extern const u8 gTVFindThatGamerText03[];
extern const u8 gTVBreakingNewsText00[];
extern const u8 gTVBreakingNewsText01[];
extern const u8 gTVBreakingNewsText02[];
extern const u8 gTVBreakingNewsText03[];
extern const u8 gTVBreakingNewsText04[];
extern const u8 gTVBreakingNewsText05[];
extern const u8 gTVBreakingNewsText06[];
extern const u8 gTVBreakingNewsText07[];
extern const u8 gTVBreakingNewsText12[];
extern const u8 gTVBreakingNewsText08[];
extern const u8 gTVBreakingNewsText09[];
extern const u8 gTVBreakingNewsText10[];
extern const u8 gTVBreakingNewsText11[];
extern const u8 gTVSecretBaseVisitText00[];
extern const u8 gTVSecretBaseVisitText01[];
extern const u8 gTVSecretBaseVisitText02[];
extern const u8 gTVSecretBaseVisitText03[];
extern const u8 gTVSecretBaseVisitText04[];
extern const u8 gTVSecretBaseVisitText05[];
extern const u8 gTVSecretBaseVisitText06[];
extern const u8 gTVSecretBaseVisitText07[];
extern const u8 gTVSecretBaseVisitText08[];
extern const u8 gTVSecretBaseVisitText09[];
extern const u8 gTVSecretBaseVisitText10[];
extern const u8 gTVSecretBaseVisitText11[];
extern const u8 gTVSecretBaseVisitText12[];
extern const u8 gTVSecretBaseVisitText13[];
extern const u8 gTVPokemonLotteryWinnerFlashReportText00[];
extern const u8 gTVThePokemonBattleSeminarText00[];
extern const u8 gTVThePokemonBattleSeminarText01[];
extern const u8 gTVThePokemonBattleSeminarText02[];
extern const u8 gTVThePokemonBattleSeminarText03[];
extern const u8 gTVThePokemonBattleSeminarText04[];
extern const u8 gTVThePokemonBattleSeminarText05[];
extern const u8 gTVThePokemonBattleSeminarText06[];
extern const u8 gTVTrainerFanClubText00[];
extern const u8 gTVTrainerFanClubText01[];
extern const u8 gTVTrainerFanClubText02[];
extern const u8 gTVTrainerFanClubText03[];
extern const u8 gTVTrainerFanClubText04[];
extern const u8 gTVTrainerFanClubText05[];
extern const u8 gTVTrainerFanClubText06[];
extern const u8 gTVTrainerFanClubText07[];
extern const u8 gTVTrainerFanClubText08[];
extern const u8 gTVTrainerFanClubText09[];
extern const u8 gTVTrainerFanClubText10[];
extern const u8 gTVTrainerFanClubText11[];
extern const u8 gTVCutiesText00[];
extern const u8 gTVCutiesText01[];
extern const u8 gTVCutiesText02[];
extern const u8 gTVCutiesText03[];
extern const u8 gTVCutiesText04[];
extern const u8 gTVCutiesText05[];
extern const u8 gTVCutiesText06[];
extern const u8 gTVCutiesText07[];
extern const u8 gTVCutiesText08[];
extern const u8 gTVCutiesText09[];
extern const u8 gTVCutiesText10[];
extern const u8 gTVCutiesText11[];
extern const u8 gTVCutiesText12[];
extern const u8 gTVCutiesText13[];
extern const u8 gTVCutiesText14[];
extern const u8 gTVCutiesText15[];
extern const u8 gTVPokemonNewsBattleFrontierText00[];
extern const u8 gTVPokemonNewsBattleFrontierText01[];
extern const u8 gTVPokemonNewsBattleFrontierText02[];
extern const u8 gTVPokemonNewsBattleFrontierText03[];
extern const u8 gTVPokemonNewsBattleFrontierText04[];
extern const u8 gTVPokemonNewsBattleFrontierText05[];
extern const u8 gTVPokemonNewsBattleFrontierText06[];
extern const u8 gTVPokemonNewsBattleFrontierText07[];
extern const u8 gTVPokemonNewsBattleFrontierText08[];
extern const u8 gTVPokemonNewsBattleFrontierText09[];
extern const u8 gTVPokemonNewsBattleFrontierText10[];
extern const u8 gTVPokemonNewsBattleFrontierText11[];
extern const u8 gTVPokemonNewsBattleFrontierText12[];
extern const u8 gTVPokemonNewsBattleFrontierText13[];
extern const u8 gTVPokemonNewsBattleFrontierText14[];
extern const u8 gTVPokemonNewsBattleFrontierText15[];
extern const u8 gTVPokemonNewsBattleFrontierText16[];
extern const u8 gTVPokemonNewsBattleFrontierText17[];
extern const u8 gTVPokemonNewsBattleFrontierText18[];
extern const u8 gTVWhatsNo1InHoennTodayText00[];
extern const u8 gTVWhatsNo1InHoennTodayText01[];
extern const u8 gTVWhatsNo1InHoennTodayText02[];
extern const u8 gTVWhatsNo1InHoennTodayText03[];
extern const u8 gTVWhatsNo1InHoennTodayText04[];
extern const u8 gTVWhatsNo1InHoennTodayText05[];
extern const u8 gTVWhatsNo1InHoennTodayText06[];
extern const u8 gTVWhatsNo1InHoennTodayText07[];
extern const u8 gTVWhatsNo1InHoennTodayText08[];
extern const u8 gTVSecretBaseSecretsText00[];
extern const u8 gTVSecretBaseSecretsText01[];
extern const u8 gTVSecretBaseSecretsText02[];
extern const u8 gTVSecretBaseSecretsText03[];
extern const u8 gTVSecretBaseSecretsText04[];
extern const u8 gTVSecretBaseSecretsText05[];
extern const u8 gTVSecretBaseSecretsText06[];
extern const u8 gTVSecretBaseSecretsText07[];
extern const u8 gTVSecretBaseSecretsText08[];
extern const u8 gTVSecretBaseSecretsText09[];
extern const u8 gTVSecretBaseSecretsText10[];
extern const u8 gTVSecretBaseSecretsText11[];
extern const u8 gTVSecretBaseSecretsText12[];
extern const u8 gTVSecretBaseSecretsText13[];
extern const u8 gTVSecretBaseSecretsText14[];
extern const u8 gTVSecretBaseSecretsText15[];
extern const u8 gTVSecretBaseSecretsText16[];
extern const u8 gTVSecretBaseSecretsText17[];
extern const u8 gTVSecretBaseSecretsText18[];
extern const u8 gTVSecretBaseSecretsText19[];
extern const u8 gTVSecretBaseSecretsText20[];
extern const u8 gTVSecretBaseSecretsText21[];
extern const u8 gTVSecretBaseSecretsText22[];
extern const u8 gTVSecretBaseSecretsText23[];
extern const u8 gTVSecretBaseSecretsText24[];
extern const u8 gTVSecretBaseSecretsText25[];
extern const u8 gTVSecretBaseSecretsText26[];
extern const u8 gTVSecretBaseSecretsText27[];
extern const u8 gTVSecretBaseSecretsText28[];
extern const u8 gTVSecretBaseSecretsText29[];
extern const u8 gTVSecretBaseSecretsText30[];
extern const u8 gTVSecretBaseSecretsText31[];
extern const u8 gTVSecretBaseSecretsText32[];
extern const u8 gTVSecretBaseSecretsText33[];
extern const u8 gTVSecretBaseSecretsText34[];
extern const u8 gTVSecretBaseSecretsText35[];
extern const u8 gTVSecretBaseSecretsText36[];
extern const u8 gTVSecretBaseSecretsText37[];
extern const u8 gTVSecretBaseSecretsText38[];
extern const u8 gTVSecretBaseSecretsText39[];
extern const u8 gTVSecretBaseSecretsText40[];
extern const u8 gTVSecretBaseSecretsText41[];
extern const u8 gTVSecretBaseSecretsText42[];
extern const u8 gTVSafariFanClubText00[];
extern const u8 gTVSafariFanClubText01[];
extern const u8 gTVSafariFanClubText02[];
extern const u8 gTVSafariFanClubText03[];
extern const u8 gTVSafariFanClubText04[];
extern const u8 gTVSafariFanClubText05[];
extern const u8 gTVSafariFanClubText06[];
extern const u8 gTVSafariFanClubText07[];
extern const u8 gTVSafariFanClubText08[];
extern const u8 gTVSafariFanClubText09[];
extern const u8 gTVSafariFanClubText10[];
extern const u8 gTVContestLiveUpdatesText00[];
extern const u8 gTVContestLiveUpdatesText01[];
extern const u8 gTVContestLiveUpdatesText02[];
extern const u8 gTVContestLiveUpdatesText03[];
extern const u8 gTVContestLiveUpdatesText04[];
extern const u8 gTVContestLiveUpdatesText05[];
extern const u8 gTVContestLiveUpdatesText06[];
extern const u8 gTVContestLiveUpdatesText07[];
extern const u8 gTVContestLiveUpdatesText08[];
extern const u8 gTVContestLiveUpdatesText09[];
extern const u8 gTVContestLiveUpdatesText10[];
extern const u8 gTVContestLiveUpdatesText11[];
extern const u8 gTVContestLiveUpdatesText12[];
extern const u8 gTVContestLiveUpdatesText13[];
extern const u8 gTVContestLiveUpdatesText14[];
extern const u8 gTVContestLiveUpdatesText15[];
extern const u8 gTVContestLiveUpdatesText16[];
extern const u8 gTVContestLiveUpdatesText17[];
extern const u8 gTVContestLiveUpdatesText18[];
extern const u8 gTVContestLiveUpdatesText19[];
extern const u8 gTVContestLiveUpdatesText20[];
extern const u8 gTVContestLiveUpdatesText21[];
extern const u8 gTVContestLiveUpdatesText22[];
extern const u8 gTVContestLiveUpdatesText23[];
extern const u8 gTVContestLiveUpdatesText24[];
extern const u8 gTVContestLiveUpdatesText25[];
extern const u8 gTVContestLiveUpdatesText26[];
extern const u8 gTVContestLiveUpdatesText27[];
extern const u8 gTVContestLiveUpdatesText28[];
extern const u8 gTVContestLiveUpdatesText29[];
extern const u8 gTVContestLiveUpdatesText30[];
extern const u8 gTVContestLiveUpdatesText31[];
extern const u8 gTVContestLiveUpdatesText32[];
extern const u8 gTVPokemonBattleUpdateText00[];
extern const u8 gTVPokemonBattleUpdateText01[];
extern const u8 gTVPokemonBattleUpdateText02[];
extern const u8 gTVPokemonBattleUpdateText03[];
extern const u8 gTVPokemonBattleUpdateText04[];
extern const u8 gTVPokemonBattleUpdateText05[];
extern const u8 gTVPokemonBattleUpdateText06[];
extern const u8 gTVPokemonBattleUpdateText07[];
extern const u8 gTVInSearchOfTrainersText00[];
extern const u8 gTVInSearchOfTrainersText01[];
extern const u8 gTVInSearchOfTrainersText02[];
extern const u8 gTVInSearchOfTrainersText03[];
extern const u8 gTVInSearchOfTrainersText04[];
extern const u8 gTVInSearchOfTrainersText05[];
extern const u8 gTVInSearchOfTrainersText06[];
extern const u8 gTVInSearchOfTrainersText07[];
extern const u8 gTVInSearchOfTrainersText08[];
extern const u8 gTVPokemonContestLiveUpdates2Text00[];
extern const u8 gTVPokemonContestLiveUpdates2Text01[];
extern const u8 gTVPokemonContestLiveUpdates2Text02[];
extern const u8 gTVPokemonContestLiveUpdates2Text03[];
extern const u8 gPokeNewsTextSlateport_Upcoming[];
extern const u8 gPokeNewsTextSlateport_Ongoing[];
extern const u8 gPokeNewsTextSlateport_Ending[];
extern const u8 gPokeNewsTextGameCorner_Upcoming[];
extern const u8 gPokeNewsTextGameCorner_Ongoing[];
extern const u8 gPokeNewsTextGameCorner_Ending[];
extern const u8 gPokeNewsTextLilycove_Upcoming[];
extern const u8 gPokeNewsTextLilycove_Ongoing[];
extern const u8 gPokeNewsTextLilycove_Ending[];
extern const u8 gPokeNewsTextBlendMaster_Upcoming[];
extern const u8 gPokeNewsTextBlendMaster_Ongoing[];
extern const u8 gPokeNewsTextBlendMaster_Ending[];
#endif //GUARD_EVENT_SCRIPTS_H

View File

@@ -22,4 +22,6 @@ extern u16 gUnknown_03005DE8;
// Exported ROM declarations
void DrawWholeMapView(void);
#endif //GUARD_FIELD_CAMERA_H

View File

@@ -0,0 +1,12 @@
#ifndef GUARD_field_message_box_H
#define GUARD_field_message_box_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
void ShowFieldMessage(const u8 *);
#endif //GUARD_field_message_box_H

View File

@@ -8,9 +8,14 @@
// Exported type declarations
// Exported RAM declarations
extern struct MapCoords {
int width;
int height;
} gUnknown_03005DC0;
// Exported ROM declarations
u8 MapGridGetMetatileBehaviorAt(s16, s16);
u32 MapGridGetMetatileBehaviorAt(int, int);
void MapGridSetMetatileIdAt(int, int, u16);
void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s16, s16);
s32 GetMapBorderIdAt(s16, s16);

View File

@@ -3,7 +3,7 @@
#define TRAINER_FLAG_START 0x500
#define TRAINERS_FLAG_NO 0x356
#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA)
#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
// SYSTEM FLAGS
@@ -84,6 +84,20 @@
#define SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61
#define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62
#define SYS_TOWER_SILVER CODE_FLAGS + 0x64
#define SYS_TOWER_GOLD CODE_FLAGS + 0x65
#define SYS_DOME_SILVER CODE_FLAGS + 0x66
#define SYS_DOME_GOLD CODE_FLAGS + 0x67
#define SYS_PALACE_SILVER CODE_FLAGS + 0x68
#define SYS_PALACE_GOLD CODE_FLAGS + 0x69
#define SYS_ARENA_SILVER CODE_FLAGS + 0x6A
#define SYS_ARENA_GOLD CODE_FLAGS + 0x6B
#define SYS_FACTORY_SILVER CODE_FLAGS + 0x6C
#define SYS_FACTORY_GOLD CODE_FLAGS + 0x6D
#define SYS_PIKE_SILVER CODE_FLAGS + 0x6E
#define SYS_PIKE_GOLD CODE_FLAGS + 0x6F
#define SYS_PYRAMID_SILVER CODE_FLAGS + 0x70
#define SYS_PYRAMID_GOLD CODE_FLAGS + 0x71
#define SYS_FRONTIER_PASS CODE_FLAGS + 0x72
#define SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77

View File

@@ -56,4 +56,7 @@
#define NUM_GAME_STATS 64
void IncrementGameStat(u8);
u32 GetGameStat(u8);
#endif // GUARD_GAME_STAT_H

View File

@@ -197,7 +197,13 @@ struct SaveBlock2
// All below could be a one giant struct
/*0x64C*/ u8 field_64C[1629];
/*0x64C*/ u8 field_64C[0x588];
/*0xBD4*/ u16 field_BD4;
/*0xBD6*/ u16 field_BD6;
/*0xBD8*/ u8 field_BD8[11];
/*0xBE3*/ u8 filler_BE3[8];
/*0xBEB*/ u8 field_BEB;
/*0xBE3*/ u8 filler_BEC[189];
/*0xCA9*/ u8 frontierChosenLvl : 2; // 0x1, 0x2 -> 0x3
/*0xCA9*/ u8 field_CA9_a : 1; // 0x4
/*0xCA9*/ u8 field_CA9_b : 1; // 0x8
@@ -205,7 +211,10 @@ struct SaveBlock2
/*0xCA9*/ u8 field_CA9_d : 1; // 0x20
/*0xCA9*/ u8 field_CA9_e : 1; // 0x40
/*0xCA9*/ u8 field_CA9_f : 1; // 0x80
/*0xCAA*/ u8 field_CAA[368];
/*0xCAA*/ u16 field_CAA[0x2e];
/*0xD06*/ u8 field_D06;
/*0xD07*/ u8 field_D07;
/*0xd08*/ u8 filler_D08[0x112];
/*0xE1A*/ u16 battlePyramidFloor; // possibly?
/*0xE1C*/ u8 field_E1C[16];
/*0xE2C*/ struct PyramidBag pyramidBag;
@@ -225,30 +234,31 @@ extern struct SaveBlock2 *gSaveBlock2Ptr;
struct SecretBaseRecord
{
u8 sbr_field_0;
u8 sbr_field_1_0:4;
u8 gender:1;
u8 sbr_field_1_5:1;
u8 sbr_field_1_6:2;
u8 trainerName[7];
u8 trainerId[4]; // byte 0 is used for determining trainer class
u8 language;
u16 sbr_field_e;
u8 sbr_field_10;
u8 sbr_field_11;
u8 decorations[16];
u8 decorationPos[16];
u32 partyPersonality[6];
u16 partyMoves[6 * 4];
u16 partySpecies[6];
u16 partyHeldItems[6];
u8 partyLevels[6];
u8 partyEVs[6];
/*ID?*/ /*0x1A9C*/ u8 sbr_field_0;
/*0x1A9D*/ u8 sbr_field_1_0:4;
/*0x1A9D*/ u8 gender:1;
/*0x1A9D*/ u8 sbr_field_1_5:1;
/*0x1A9D*/ u8 sbr_field_1_6:2;
/*0x1A9E*/ u8 trainerName[7]; // 0xFF bytes?
/*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
/*0x1AA9*/ u8 language;
/*0x1AAA*/ u16 sbr_field_e;
/*0x1AAC*/ u8 sbr_field_10;
/*0x1AAD*/ u8 sbr_field_11;
/*0x1AAE*/ u8 decorations[16];
/*0x1ABE*/ u8 decorationPos[16];
/*0x1ACE*/ u32 partyPersonality[6];
/*0x1AE6*/ u16 partyMoves[6 * 4];
/*0x1B16*/ u16 partySpecies[6];
/*0x1B22*/ u16 partyHeldItems[6];
/*0x1B2E*/ u8 partyLevels[6];
/*0x1B34*/ u8 partyEVs[6];
};
#include "game_stat.h"
#include "global.fieldmap.h"
#include "global.berry.h"
#include "global.tv.h"
#include "pokemon.h"
struct WarpData
@@ -317,218 +327,6 @@ struct EasyChatPair
u16 words[2];
}; /*size = 0x8*/
struct TVShowCommon
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u8 pad02[20];
/*0x16*/ u16 var16[3];
/*0x1C*/ u8 srcTrainerId3Lo;
/*0x1D*/ u8 srcTrainerId3Hi;
/*0x1E*/ u8 srcTrainerId2Lo;
/*0x1F*/ u8 srcTrainerId2Hi;
/*0x20*/ u8 srcTrainerIdLo;
/*0x21*/ u8 srcTrainerIdHi;
/*0x22*/ u8 trainerIdLo;
/*0x23*/ u8 trainerIdHi;
};
struct TVShowFanClubLetter
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 species;
/*0x04*/ u16 pad04[6];
/*0x10*/ u8 playerName[8];
/*0x18*/ u8 language;
};
struct TVShowRecentHappenings
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 var02;
/*0x04*/ u16 var04[6];
/*0x10*/ u8 playerName[8];
/*0x18*/ u8 language;
/*0x19*/ u8 pad19[10];
};
struct TVShowFanclubOpinions
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 var02;
/*0x04*/ u8 var04A:4;
/*0x04*/ u8 var04B:4;
/*0x05*/ u8 playerName[8];
/*0x0D*/ u8 language;
/*0x0E*/ u8 var0E;
/*0x0F*/ u8 var0F;
/*0x10*/ u8 var10[8];
/*0x18*/ u16 var18[2];
/*0x1C*/ u16 var1C[4];
};
struct TVShowUnknownType04
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u8 pad02[4];
/*0x06*/ u16 var06;
};
struct TVShowNameRaterShow
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 species;
/*0x04*/ u8 pokemonName[11];
/*0x0F*/ u8 trainerName[11];
/*0x1A*/ u8 random;
/*0x1B*/ u8 random2;
/*0x1C*/ u16 var1C;
/*0x1E*/ u8 language;
/*0x1F*/ u8 pokemonNameLanguage;
};
struct TVShowBravoTrainerPokemonProfiles
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 species;
/*0x04*/ u16 var04[2];
/*0x08*/ u8 pokemonNickname[11];
/*0x13*/ u8 contestCategory:3;
/*0x13*/ u8 contestRank:2;
/*0x13*/ u8 contestResult:2;
/*0x13*/ u8 var13_7:1;
/*0x14*/ u16 var14;
/*0x16*/ u8 playerName[8];
/*0x1E*/ u8 language;
/*0x1F*/ u8 var1f;
};
struct TVShowBravoTrainerBattleTowerSpotlight
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u8 trainerName[8];
/*0x0A*/ u16 species;
/*0x0C*/ u8 pokemonName[8];
/*0x14*/ u16 defeatedSpecies;
/*0x16*/ u16 var16;
/*0x18*/ u16 var18[1];
/*0x1A*/ u8 btLevel;
/*0x1B*/ u8 var1b;
/*0x1C*/ u8 var1c;
/*0x1D*/ u8 language;
};
struct TVShowPokemonToday
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u8 language;
/*0x03*/ u8 language2;
/*0x04*/ u8 nickname[11];
/*0x0F*/ u8 ball;
/*0x10*/ u16 species;
/*0x12*/ u8 var12;
/*0x13*/ u8 playerName[8];
};
struct TVShowSmartShopper
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u8 priceReduced;
/*0x03*/ u8 language;
/*0x04*/ u8 pad04[2];
/*0x06*/ u16 itemIds[3];
/*0x0C*/ u16 itemAmounts[3];
/*0x12*/ u8 shopLocation;
/*0x13*/ u8 playerName[8];
};
struct TVShowPokemonTodayFailed
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u8 language;
/*0x03*/ u8 pad03[9];
/*0x0c*/ u16 species;
/*0x0e*/ u16 species2;
/*0x10*/ u8 var10;
/*0x11*/ u8 var11;
/*0x12*/ u8 var12;
/*0x13*/ u8 playerName[8];
};
struct TVShowPokemonAngler
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u8 var02;
/*0x03*/ u8 var03;
/*0x04*/ u16 var04;
/*0x06*/ u8 language;
u8 pad07[12];
/*0x13*/ u8 playerName[8];
};
struct TVShowWorldOfMasters
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 var02;
/*0x04*/ u16 var04;
/*0x06*/ u16 var06;
/*0x08*/ u16 var08;
/*0x0a*/ u8 var0a;
/*0x0b*/ u8 language;
u8 pad0c[7];
/*0x13*/ u8 playerName[8];
};
struct TVShowMassOutbreak
{
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u8 var02;
/*0x03*/ u8 var03;
/*0x04*/ u16 moves[4];
/*0x0C*/ u16 species;
/*0x0E*/ u16 var0E;
/*0x10*/ u8 locationMapNum;
/*0x11*/ u8 locationMapGroup;
/*0x12*/ u8 var12;
/*0x13*/ u8 probability;
/*0x14*/ u8 level;
/*0x15*/ u8 var15;
/*0x16*/ u16 var16;
/*0x18*/ u8 language;
u8 pad19[11];
};
typedef union TVShow
{
struct TVShowCommon common;
struct TVShowFanClubLetter fanclubLetter;
struct TVShowRecentHappenings recentHappenings;
struct TVShowFanclubOpinions fanclubOpinions;
struct TVShowUnknownType04 unkShow04;
struct TVShowNameRaterShow nameRaterShow;
struct TVShowBravoTrainerPokemonProfiles bravoTrainer;
struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower;
struct TVShowPokemonToday pokemonToday;
struct TVShowSmartShopper smartshopperShow;
struct TVShowPokemonTodayFailed pokemonTodayFailed;
struct TVShowPokemonAngler pokemonAngler;
struct TVShowWorldOfMasters worldOfMasters;
struct TVShowMassOutbreak massOutbreak;
} TVShow;
struct MailStruct
{
/*0x00*/ u16 words[9];
@@ -576,35 +374,6 @@ typedef union OldMan
u8 filler[0x40];
} OldMan;
struct UnknownSaveStruct2ABC
{
u8 val0;
u8 val1;
u16 val2;
};
struct GabbyAndTyData
{
/*2b10*/ u16 mon1;
/*2b12*/ u16 mon2;
/*2b14*/ u16 lastMove;
/*2b16*/ u16 quote;
/*2b18*/ u8 mapnum;
/*2b19*/ u8 battleNum;
/*2b1a*/ u8 valA_0:1;
/*2b1a*/ u8 valA_1:1;
/*2b1a*/ u8 valA_2:1;
/*2b1a*/ u8 valA_3:1;
/*2b1a*/ u8 valA_4:1;
/*2b1a*/ u8 valA_5:3;
/*2b1b*/ u8 valB_0:1;
/*2b1b*/ u8 valB_1:1;
/*2b1b*/ u8 valB_2:1;
/*2b1b*/ u8 valB_3:1;
/*2b1b*/ u8 valB_4:1;
/*2b1b*/ u8 valB_5:3;
};
struct RecordMixing_UnknownStructSub
{
u32 unk0;
@@ -781,22 +550,22 @@ struct SaveBlock1
/*0x????*/ u8 decorCushion[10];
/*0x27CA*/ u8 padding_27CA[2];
/*0x27CC*/ TVShow tvShows[25];
/*0x2B50*/ struct UnknownSaveStruct2ABC pokeNews[16];
/*0x2B50*/ PokeNews pokeNews[16];
/*0x2B90*/ u16 outbreakPokemonSpecies;
/*0x????*/ u8 outbreakLocationMapNum;
/*0x????*/ u8 outbreakLocationMapGroup;
/*0x????*/ u8 outbreakPokemonLevel;
/*0x????*/ u8 outbreakUnk1;
/*0x????*/ u16 outbreakUnk2;
/*0x????*/ u16 outbreakPokemonMoves[4];
/*0x????*/ u8 outbreakUnk4;
/*0x????*/ u8 outbreakPokemonProbability;
/*0x????*/ u16 outbreakUnk5;
/*0x2B92*/ u8 outbreakLocationMapNum;
/*0x2B93*/ u8 outbreakLocationMapGroup;
/*0x2B94*/ u8 outbreakPokemonLevel;
/*0x2B95*/ u8 outbreakUnk1;
/*0x2B96*/ u16 outbreakUnk2;
/*0x2B98*/ u16 outbreakPokemonMoves[4];
/*0x2BA0*/ u8 outbreakUnk4;
/*0x2BA1*/ u8 outbreakPokemonProbability;
/*0x2BA2*/ u16 outbreakDaysLeft;
/*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData;
/*0x????*/ u16 unk2B1C[6];
/*0x????*/ u16 unk2B28[6];
/*0x????*/ u16 unk2B34[6];
/*0x????*/ u16 unk2B3A[3];
/*0x2BB0*/ u16 unk2BB0[6];
/*0x2BBC*/ u16 unk2BBC[6];
/*0x2BC8*/ u16 unk2BC8[6];
/*0x2BD4*/ u16 unk2BD4[3];
/*0x2BE0*/ struct MailStruct mail[16];
/*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system
/*0x2E25*/ u8 unk2E25[3]; // possibly padding?
@@ -806,7 +575,8 @@ struct SaveBlock1
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
/*0x3030*/ struct DaycareData daycare;
/*0x3150*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x31A0*/ u8 filler_31A0[8];
/*0x31A0*/ u8 unk_31A0;
/*0x31A1*/ u8 filler_31A1[7];
/*0x31A8*/ u8 giftRibbons[52];
/*0x31DC*/ struct Roamer roamer;
/*0x31F8*/ struct EnigmaBerry enigmaBerry;

535
include/global.tv.h Normal file
View File

@@ -0,0 +1,535 @@
#ifndef GUARD_GLOBAL_TV_H
#define GUARD_GLOBAL_TV_H
enum
{
TVSHOW_OFF_AIR,
TVSHOW_FAN_CLUB_LETTER = 1,
TVSHOW_RECENT_HAPPENINGS,
TVSHOW_PKMN_FAN_CLUB_OPINIONS,
TVSHOW_UNKN_SHOWTYPE_04,
TVSHOW_NAME_RATER_SHOW,
TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE,
TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE,
TVSHOW_CONTEST_LIVE_UPDATES,
TVSHOW_3_CHEERS_FOR_POKEBLOCKS,
TVSHOW_BATTLE_UPDATE,
TVSHOW_FAN_CLUB_SPECIAL,
TVSHOW_CONTEST_LIVE_UPDATES_2,
TVSHOW_POKEMON_TODAY_CAUGHT = 21,
TVSHOW_SMART_SHOPPER,
TVSHOW_POKEMON_TODAY_FAILED,
TVSHOW_FISHING_ADVICE,
TVSHOW_WORLD_OF_MASTERS,
TVSHOW_TODAYS_RIVAL_TRAINER,
TVSHOW_TREND_WATCHER,
TVSHOW_TREASURE_INVESTIGATORS,
TVSHOW_FIND_THAT_GAMER,
TVSHOW_BREAKING_NEWS,
TVSHOW_SECRET_BASE_VISIT,
TVSHOW_LOTTO_WINNER,
TVSHOW_BATTLE_SEMINAR,
TVSHOW_TRAINER_FAN_CLUB,
TVSHOW_CUTIES,
TVSHOW_FRONTIER,
TVSHOW_NUMBER_ONE,
TVSHOW_SECRET_BASE_SECRETS,
TVSHOW_SAFARI_FAN_CLUB,
TVSHOW_MASS_OUTBREAK = 41,
};
typedef union // size = 0x24
{
// Common
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 pad02[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;
// Local shows
// TVSHOW_FAN_CLUB_LETTER
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 species;
/*0x04*/ u16 words[6];
/*0x10*/ u8 playerName[8];
/*0x18*/ u8 language;
} fanclubLetter;
// TVSHOW_RECENT_HAPPENINGS
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 var02;
/*0x04*/ u16 words[6];
/*0x10*/ u8 playerName[8];
/*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[8];
/*0x0D*/ u8 language;
/*0x0E*/ u8 pokemonNameLanguage;
/*0x0F*/ u8 filler_0F[1];
/*0x10*/ u8 nickname[8];
/*0x18*/ u8 filler_18[4];
/*0x1C*/ u16 words[4];
} fanclubOpinions;
// TVSHOW_UNKN_SHOWTYPE_04 (dummied out)
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 pad02[4];
/*0x06*/ u16 var06;
/*0x08*/ u8 pad_08[3];
/*0x0b*/ u8 string_0b[12];
/*0x17*/ u8 language;
} unkShow04;
// TVSHOW_NAME_RATER_SHOW
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 species;
/*0x04*/ u8 pokemonName[11];
/*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[11];
/*0x13*/ u8 contestCategory:3;
/*0x13*/ u8 contestRank:2;
/*0x13*/ u8 contestResult:2;
/*0x14*/ u16 move;
/*0x16*/ u8 playerName[8];
/*0x1E*/ u8 language;
/*0x1F*/ u8 pokemonNameLanguage;
} bravoTrainer;
// TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 trainerName[8];
/*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 winningSpecies;
/*0x04*/ u8 winningTrainerName[8];
/*0x0C*/ u8 appealFlags2;
/*0x0D*/ u8 round1Rank;
/*0x0e*/ u8 round2Rank;
/*0x0f*/ u8 appealFlags1;
/*0x10*/ u16 move;
/*0x12*/ u16 species;
/*0x14*/ u8 playerName[8];
/*0x1C*/ u8 category;
/*0x1D*/ u8 language;
/*0x1E*/ u8 winningTrainerLanguage;
} contestLiveUpdates;
// TVSHOW_3_CHEERS_FOR_POKEBLOCKS
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 sheen;
/*0x03*/ u8 flavor:3;
/*0x03*/ u8 unk_03_3:2;
/*0x04*/ u8 worstBlenderName[8];
/*0x0C*/ u8 playerName[8];
/*0x14*/ u8 language;
/*0x15*/ u8 worstBlenderLanguage;
} threeCheers;
// TVSHOW_BATTLE_UPDATE
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 species;
/*0x04*/ u8 playerName[8];
/*0x0C*/ u8 linkOpponentName[8];
/*0x14*/ u16 move;
/*0x16*/ u16 species2;
/*0x18*/ u8 battleType;
/*0x19*/ u8 language;
/*0x1A*/ u8 linkOpponentLanguage;
} battleUpdate;
// TVSHOW_FAN_CLUB_SPECIAL
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 playerName[8];
/*0x0a*/ u8 idLo;
/*0x0b*/ u8 idHi;
/*0x0c*/ u8 idolName[8];
/*0x14*/ u16 words[1];
/*0x16*/ u8 score;
/*0x17*/ u8 language;
/*0x18*/ u8 idolNameLanguage;
} fanClubSpecial;
// TVSHOW_CONTEST_LIVE_UPDATES_2
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 playerName[8];
/*0x0a*/ u8 contestCategory;
/*0x0b*/ u8 nickname[11];
/*0x16*/ u8 pokeblockState;
/*0x17*/ u8 language;
/*0x18*/ u8 pokemonNameLanguage;
} contestLiveUpdates2;
// Record Mixing Shows
// TVSHOW_POKEMON_TODAY_CAUGHT
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 language;
/*0x03*/ u8 language2;
/*0x04*/ u8 nickname[11];
/*0x0F*/ u8 ball;
/*0x10*/ u16 species;
/*0x12*/ u8 nBallsUsed;
/*0x13*/ u8 playerName[8];
} pokemonToday;
// TVSHOW_SMART_SHOPPER
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 priceReduced;
/*0x03*/ u8 language;
/*0x04*/ u8 pad04[2];
/*0x06*/ u16 itemIds[3];
/*0x0C*/ u16 itemAmounts[3];
/*0x12*/ u8 shopLocation;
/*0x13*/ u8 playerName[8];
} 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[8];
} 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[8];
} 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[8];
} 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 mapDataId;
/*0x0c*/ u8 language;
/*0x0d*/ u8 filler_0d[6];
/*0x13*/ u8 playerName[8];
} 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[8];
} trendWatcher;
// TVSHOW_TREASURE_INVESTIGATORS
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 item;
/*0x04*/ u8 location;
/*0x05*/ u8 language;
/*0x06*/ u16 mapDataId;
/*0x08*/ u8 filler_08[11];
/*0x13*/ u8 playerName[8];
} 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[8];
} 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[8];
} breakingNews;
// TVSHOW_SECRET_BASE_VISIT
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 avgLevel;
/*0x03*/ u8 nDecorations;
/*0x04*/ u8 decorations[4];
/*0x08*/ u16 species;
/*0x0a*/ u16 move;
/*0x0c*/ u8 language;
/*0x0d*/ u8 filler_0d[6];
/*0x13*/ u8 playerName[8];
} 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[8];
} 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[8];
} 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[8];
} trainerFanClub;
// TVSHOW_CUTIES
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 nRibbons;
/*0x03*/ u8 selectedRibbon;
/*0x04*/ u8 nickname[11];
/*0x0f*/ u8 language;
/*0x10*/ u8 pokemonNameLanguage;
/*0x11*/ u8 filler_12[2];
/*0x13*/ u8 playerName[8];
} 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 facility;
/*0x0e*/ u8 filler_0e[5];
/*0x13*/ u8 playerName[8];
} 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[8];
} numberOne;
// TVSHOW_SECRET_BASE_SECRETS
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 stepsInBase;
/*0x04*/ u8 baseOwnersName[8];
/*0x0c*/ u32 flags;
/*0x10*/ u16 item;
/*0x12*/ u8 savedState;
/*0x13*/ u8 playerName[8];
/*0x1b*/ u8 language;
/*0x1c*/ u8 baseOwnersNameLanguage;
} secretBaseSecrets;
// TVSHOW_SAFARI_FAN_CLUB
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 nMonsCaught;
/*0x03*/ u8 nPkblkUsed;
/*0x04*/ u8 language;
/*0x05*/ u8 filler_05[14];
/*0x13*/ u8 playerName[8];
} safariFanClub;
// Mass Outbreak
// TVSHOW_MASS_OUTBREAK
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 var02;
/*0x03*/ u8 var03;
/*0x04*/ u16 moves[4];
/*0x0C*/ u16 species;
/*0x0E*/ u16 var0E;
/*0x10*/ u8 locationMapNum;
/*0x11*/ u8 locationMapGroup;
/*0x12*/ u8 var12;
/*0x13*/ u8 probability;
/*0x14*/ u8 level;
/*0x15*/ u8 var15;
/*0x16*/ u16 daysLeft;
/*0x18*/ u8 language;
} massOutbreak;
} TVShow;
enum {
POKENEWS_NONE,
POKENEWS_SLATEPORT,
POKENEWS_GAME_CORNER,
POKENEWS_LILYCOVE,
POKENEWS_BLENDMASTER
};
typedef struct // 2b50
{
u8 kind;
u8 state;
u16 days;
} 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 playerUsedAnItem: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 playerThrewABall2:1;
/*2baf*/ u8 valB_4:4;
};
#endif //GUARD_GLOBAL_TV_H

View File

@@ -0,0 +1,13 @@
#ifndef GUARD_international_string_util_H
#define GUARD_international_string_util_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
void TVShowConvertInternationalString(void *dest, const void *src, u8 language);
u32 sub_81DB604(const u8 *);
#endif //GUARD_international_string_util_H

View File

@@ -58,5 +58,6 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
u8 ItemId_GetBattleUsage(u16 itemId);
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
u16 itemid_get_market_price(u16 itemId);
#endif // ITEM_H

View File

@@ -177,12 +177,12 @@ u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);
void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
u8 GetLinkPlayerCount(void);
void sub_800E0E8(void);
bool8 sub_800A520(void);
bool8 sub_8010500(void);
void sub_800DFB4(u8, u8);
void sub_800ADF8(void);
u8 sub_8009FCC(void);
#endif // GUARD_LINK_H

View File

@@ -2,7 +2,7 @@
#define GUARD_MALLOC_H
#define malloc Alloc
#define calloc AllocZeroed
#define calloc(ct, sz) AllocZeroed((ct) * (sz))
#define free Free
extern u8 gHeap[];

View File

@@ -359,6 +359,7 @@ enum
MOVE_DOOM_DESIRE,
MOVE_PSYCHO_BOOST,
};
extern const u8 gMoveNames[][13];
#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST

View File

@@ -16,6 +16,8 @@ enum
FLAG_SET_CAUGHT
};
u8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
u16 pokedex_count(u8);
u16 sub_80C0844(u8);
#endif // GUARD_POKEDEX_H

View File

@@ -2,5 +2,7 @@
#define GUARD_POKEMON_STORAGE_SYSTEM_H
u8* GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8, u8);
void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H

227
include/region_map.h Normal file
View File

@@ -0,0 +1,227 @@
#ifndef GUARD_REGION_MAP_H
#define GUARD_REGION_MAP_H
// Exported type declarations
enum {
REGION_MAP_LITTLEROOT_TOWN,
REGION_MAP_OLDALE_TOWN,
REGION_MAP_DEWFORD_TOWN,
REGION_MAP_LAVARIDGE_TOWN,
REGION_MAP_FALLARBOR_TOWN,
REGION_MAP_VERDANTURF_TOWN,
REGION_MAP_PACIFIDLOG_TOWN,
REGION_MAP_PETALBURG_CITY,
REGION_MAP_SLATEPORT_CITY,
REGION_MAP_MAUVILLE_CITY,
REGION_MAP_RUSTBORO_CITY,
REGION_MAP_FORTREE_CITY,
REGION_MAP_LILYCOVE_CITY,
REGION_MAP_MOSSDEEP_CITY,
REGION_MAP_SOOTOPOLIS_CITY,
REGION_MAP_EVER_GRANDE_CITY,
REGION_MAP_ROUTE_101,
REGION_MAP_ROUTE_102,
REGION_MAP_ROUTE_103,
REGION_MAP_ROUTE_104,
REGION_MAP_ROUTE_105,
REGION_MAP_ROUTE_106,
REGION_MAP_ROUTE_107,
REGION_MAP_ROUTE_108,
REGION_MAP_ROUTE_109,
REGION_MAP_ROUTE_110,
REGION_MAP_ROUTE_111,
REGION_MAP_ROUTE_112,
REGION_MAP_ROUTE_113,
REGION_MAP_ROUTE_114,
REGION_MAP_ROUTE_115,
REGION_MAP_ROUTE_116,
REGION_MAP_ROUTE_117,
REGION_MAP_ROUTE_118,
REGION_MAP_ROUTE_119,
REGION_MAP_ROUTE_120,
REGION_MAP_ROUTE_121,
REGION_MAP_ROUTE_122,
REGION_MAP_ROUTE_123,
REGION_MAP_ROUTE_124,
REGION_MAP_ROUTE_125,
REGION_MAP_ROUTE_126,
REGION_MAP_ROUTE_127,
REGION_MAP_ROUTE_128,
REGION_MAP_ROUTE_129,
REGION_MAP_ROUTE_130,
REGION_MAP_ROUTE_131,
REGION_MAP_ROUTE_132,
REGION_MAP_ROUTE_133,
REGION_MAP_ROUTE_134,
REGION_MAP_UNDERWATER_124,
REGION_MAP_UNDERWATER_125,
REGION_MAP_UNDERWATER_126,
REGION_MAP_UNDERWATER_127,
REGION_MAP_UNDERWATER_128,
REGION_MAP_GRANITE_CAVE,
REGION_MAP_MT_CHIMNEY,
REGION_MAP_SAFARI_ZONE,
REGION_MAP_BATTLE_FRONTIER,
REGION_MAP_PETALBURG_WOODS,
REGION_MAP_RUSTURF_TUNNEL,
REGION_MAP_ABANDONED_SHIP,
REGION_MAP_NEW_MAUVILLE,
REGION_MAP_METEOR_FALLS,
REGION_MAP_METEOR_FALLS2,
REGION_MAP_MT_PYRE,
REGION_MAP_AQUA_HIDEOUT_OLD,
REGION_MAP_SHOAL_CAVE,
REGION_MAP_SEAFLOOR_CAVERN,
REGION_MAP_UNDERWATER,
REGION_MAP_VICTORY_ROAD,
REGION_MAP_MIRAGE_ISLAND,
REGION_MAP_CAVE_OF_ORIGIN,
REGION_MAP_SOUTHERN_ISLAND,
REGION_MAP_FIERY_PATH,
REGION_MAP_FIERY_PATH2,
REGION_MAP_JAGGED_PASS,
REGION_MAP_JAGGED_PASS2,
REGION_MAP_SEALED_CHAMBER,
REGION_MAP_UNDERWATER_SEALED_CHAMBER,
REGION_MAP_SCORCHED_SLAB,
REGION_MAP_ISLAND_CAVE,
REGION_MAP_DESERT_RUINS,
REGION_MAP_ANCIENT_TOMB,
REGION_MAP_INSIDE_OF_TRUCK,
REGION_MAP_SKY_PILLAR,
REGION_MAP_SECRET_BASE,
REGION_MAP_NONE,
REGION_MAP_PALLET_TOWN,
REGION_MAP_VIRIDIAN_CITY,
REGION_MAP_PEWTER_CITY,
REGION_MAP_CERULEAN_CITY,
REGION_MAP_LAVENDER_TOWN,
REGION_MAP_VERMILION_CITY,
REGION_MAP_CELADON_CITY,
REGION_MAP_FUCHSIA_CITY,
REGION_MAP_CINNABAR_ISLAND,
REGION_MAP_INDIGO_PLATEAU,
REGION_MAP_SAFFRON_CITY,
REGION_MAP_ROUTE_4,
REGION_MAP_ROUTE_10,
REGION_MAP_ROUTE_1,
REGION_MAP_ROUTE_2,
REGION_MAP_ROUTE_3,
REGION_MAP_ROUTE_4_2,
REGION_MAP_ROUTE_5,
REGION_MAP_ROUTE_6,
REGION_MAP_ROUTE_7,
REGION_MAP_ROUTE_8,
REGION_MAP_ROUTE_9,
REGION_MAP_ROUTE_10_2,
REGION_MAP_ROUTE_11,
REGION_MAP_ROUTE_12,
REGION_MAP_ROUTE_13,
REGION_MAP_ROUTE_14,
REGION_MAP_ROUTE_15,
REGION_MAP_ROUTE_16,
REGION_MAP_ROUTE_17,
REGION_MAP_ROUTE_18,
REGION_MAP_ROUTE_19,
REGION_MAP_ROUTE_20,
REGION_MAP_ROUTE_21,
REGION_MAP_ROUTE_22,
REGION_MAP_ROUTE_23,
REGION_MAP_ROUTE_24,
REGION_MAP_ROUTE_25,
REGION_MAP_VIRIDIAN_FOREST,
REGION_MAP_MT_MOON,
REGION_MAP_S_S_ANNE,
REGION_MAP_UNDERGROUND_PATH,
REGION_MAP_UNDERGROUND_PATH_2,
REGION_MAP_DIGLETTS_CAVE,
REGION_MAP_KANTO_VICTORY_ROAD,
REGION_MAP_ROCKET_HIDEOUT,
REGION_MAP_SILPH_CO,
REGION_MAP_POKEMON_MANSION,
REGION_MAP_KANTO_SAFARI_ZONE,
REGION_MAP_POKEMON_LEAGUE,
REGION_MAP_ROCK_TUNNEL,
REGION_MAP_SEAFOAM_ISLANDS,
REGION_MAP_POKEMON_TOWER,
REGION_MAP_CERULEAN_CAVE,
REGION_MAP_POWER_PLANT,
REGION_MAP_ONE_ISLAND,
REGION_MAP_TWO_ISLAND,
REGION_MAP_THREE_ISLAND,
REGION_MAP_FOUR_ISLAND,
REGION_MAP_FIVE_ISLAND,
REGION_MAP_SEVEN_ISLAND,
REGION_MAP_SIX_ISLAND,
REGION_MAP_KINDLE_ROAD,
REGION_MAP_TREASURE_BEACH,
REGION_MAP_CAPE_BRINK,
REGION_MAP_BOND_BRIDGE,
REGION_MAP_THREE_ISLE_PORT,
REGION_MAP_SEVII_ISLE_6,
REGION_MAP_SEVII_ISLE_7,
REGION_MAP_SEVII_ISLE_8,
REGION_MAP_SEVII_ISLE_9,
REGION_MAP_RESORT_GORGEOUS,
REGION_MAP_WATER_LABYRINTH,
REGION_MAP_FIVE_ISLE_MEADOW,
REGION_MAP_MEMORIAL_PILLAR,
REGION_MAP_OUTCAST_ISLAND,
REGION_MAP_GREEN_PATH,
REGION_MAP_WATER_PATH,
REGION_MAP_RUIN_VALLEY,
REGION_MAP_TRAINER_TOWER,
REGION_MAP_CANYON_ENTRANCE,
REGION_MAP_SEVAULT_CANYON,
REGION_MAP_TANOBY_RUINS,
REGION_MAP_SEVII_ISLE_22,
REGION_MAP_SEVII_ISLE_23,
REGION_MAP_SEVII_ISLE_24,
REGION_MAP_NAVEL_ROCK,
REGION_MAP_MT_EMBER,
REGION_MAP_BERRY_FOREST,
REGION_MAP_ICEFALL_CAVE,
REGION_MAP_ROCKET_WAREHOUSE,
REGION_MAP_TRAINER_TOWER_2,
REGION_MAP_DOTTED_HOLE,
REGION_MAP_LOST_CAVE,
REGION_MAP_PATTERN_BUSH,
REGION_MAP_ALTERING_CAVE,
REGION_MAP_TANOBY_CHAMBERS,
REGION_MAP_THREE_ISLE_PATH,
REGION_MAP_TANOBY_KEY,
REGION_MAP_BIRTH_ISLAND,
REGION_MAP_MONEAN_CHAMBER,
REGION_MAP_LIPTOO_CHAMBER,
REGION_MAP_WEEPTH_CHAMBER,
REGION_MAP_DILFORD_CHAMBER,
REGION_MAP_SCUFIB_CHAMBER,
REGION_MAP_RIXY_CHAMBER,
REGION_MAP_VIAPOIS_CHAMBER,
REGION_MAP_EMBER_SPA,
REGION_MAP_SPECIAL_AREA,
REGION_MAP_AQUA_HIDEOUT,
REGION_MAP_MAGMA_HIDEOUT,
REGION_MAP_MIRAGE_TOWER,
REGION_MAP_BIRTH_ISLAND_2,
REGION_MAP_FARAWAY_ISLAND,
REGION_MAP_ARTISAN_CAVE,
REGION_MAP_MARINE_CAVE,
REGION_MAP_UNDERWATER_MARINE_CAVE,
REGION_MAP_TERRA_CAVE,
REGION_MAP_UNDERWATER_TERRA_CAVE,
REGION_MAP_UNDERWATER_UNK1,
REGION_MAP_UNDERWATER_UNK2,
REGION_MAP_DESERT_UNDERPASS,
REGION_MAP_ALTERING_CAVE_2,
REGION_MAP_NAVEL_ROCK2,
REGION_MAP_TRAINER_HILL
};
// Exported RAM declarations
// Exported ROM declarations
void GetMapName(u8 *, u16, u16);
#endif //GUARD_REGION_MAP_H

View File

@@ -29,5 +29,6 @@ const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void c2_exit_to_overworld_2_switch(void);
void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
#endif //GUARD_ROM4_H

View File

@@ -2,5 +2,6 @@
#define GUARD_ROM6_H
void sub_81357FC(u8, void(void));
u8 GetIdxOfFirstPartyMemberThatIsNotAnEgg(void);
#endif //GUARD_ROM6_H

11
include/script_menu.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef GUARD_SCRIPT_MENU_H
#define GUARD_SCRIPT_MENU_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
extern const u8 *const gUnknown_0858BAF0[9];
#endif //GUARD_SCRIPT_MENU_H

11
include/secret_base.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef GUARD_SECRET_BASE_H
#define GUARD_SECRET_BASE_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
void sub_80E980C(void);
#endif //GUARD_SECRET_BASE_H

12
include/shop.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef GUARD_SHOP_H
#define GUARD_SHOP_H
// Exported type declarations
// Exported RAM declarations
extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
// Exported ROM declarations
#endif //GUARD_SHOP_H

View File

@@ -449,5 +449,6 @@ enum
};
#define NUM_SPECIES SPECIES_EGG
extern const u8 gSpeciesNames[][11];
#endif // GUARD_SPECIES_H

View File

@@ -31,7 +31,7 @@ u8 *StringFillWithTerminator(u8 *dest, u16 n);
u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n);
u32 StringLength_Multibyte(u8 *str);
u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color);
bool32 sub_8009228(u8 *str);
bool32 IsStringJapanese(u8 *str);
bool32 sub_800924C(u8 *str, s32 n);
u8 GetExtCtrlCodeLength(u8 code);
static const u8 *SkipExtCtrlCode(const u8 *s);

33
include/strings.h Normal file
View File

@@ -0,0 +1,33 @@
#ifndef GUARD_strings_H
#define GUARD_strings_H
extern const u8 gText_Lv50[];
extern const u8 gText_OpenLevel[];
extern const u8 gText_Mom[];
extern const u8 gText_Dad[];
extern const u8 gText_Cool[];
extern const u8 gText_Beauty[];
extern const u8 gText_Cute[];
extern const u8 gText_Smart[];
extern const u8 gText_Tough[];
extern const u8 gText_Single[];
extern const u8 gText_Double[];
extern const u8 gText_Spicy2[];
extern const u8 gText_Dry2[];
extern const u8 gText_Sweet2[];
extern const u8 gText_Bitter2[];
extern const u8 gText_Sour2[];
extern const u8 gText_Excellent[];
extern const u8 gText_VeryGood[];
extern const u8 gText_Good[];
extern const u8 gText_SoSo[];
extern const u8 gText_Bad[];
extern const u8 gText_TheWorst[];
extern const u8 gText_Slots[];
extern const u8 gText_Roulette[];
extern const u8 gText_Jackpot[];
extern const u8 gText_First[];
extern const u8 gText_Second[];
extern const u8 gText_Third[];
#endif //GUARD_strings_H

21
include/tv.h Normal file
View File

@@ -0,0 +1,21 @@
#ifndef GUARD_TV_H
#define GUARD_TV_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
void PutPokemonTodayCaughtOnAir(void);
u32 GetPlayerIDAsU32(void);
bool8 GetPriceReduction(u8 newsKind);
u8 GetRibbonCount(struct Pokemon *pokemon);
void sub_80EE184(void);
void sub_80F14F8(TVShow *shows);
int sub_80EF370(int value);
#endif //GUARD_TV_H

View File

@@ -53,4 +53,14 @@
#define VAR_0x40BC 0x40BC
#define VAR_0x40C2 0x40C2
#define VAR_FRONTIER_FACILITY 0x40CF
#define VAR_DAILY_SLOTS 0x40E6
#define VAR_DAILY_WILDS 0x40E7
#define VAR_DAILY_BLENDER 0x40E8
#define VAR_DAILY_PLANTED_BERRIES 0x40E9
#define VAR_DAILY_PICKED_BERRIES 0x40EA
#define VAR_DAILY_ROULETTE 0x40EB
#define VAR_DAILY_BP 0x40F1
#endif // GUARD_VARS_H