diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2017-10-13 11:09:36 -0400 |
---|---|---|
committer | Diegoisawesome <Diegoisawesome@users.noreply.github.com> | 2017-10-13 10:09:36 -0500 |
commit | 52db3ad5aa83ae70e06eae87f502b09fff55aecc (patch) | |
tree | 60f8af2ad4311a7b83455e5acf1a702e824757fa /include/global.h | |
parent | 428dd0e0a8539b171fccc59ea717fda970a22e91 (diff) |
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
Diffstat (limited to 'include/global.h')
-rw-r--r-- | include/global.h | 324 |
1 files changed, 47 insertions, 277 deletions
diff --git a/include/global.h b/include/global.h index e98b01ee2..58a0d79dc 100644 --- a/include/global.h +++ b/include/global.h @@ -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; |