diff options
Diffstat (limited to 'src/field/tv.c')
-rw-r--r-- | src/field/tv.c | 3571 |
1 files changed, 0 insertions, 3571 deletions
diff --git a/src/field/tv.c b/src/field/tv.c deleted file mode 100644 index 36a6331b0..000000000 --- a/src/field/tv.c +++ /dev/null @@ -1,3571 +0,0 @@ -#include "global.h" -#include "tv.h" -#include "battle_tower.h" -#include "contest.h" -#include "contest_painting.h" -#include "data2.h" -#include "easy_chat.h" -#include "event_data.h" -#include "fieldmap.h" -#include "field_message_box.h" -#include "field_camera.h" -#include "constants/flags.h" -#include "random.h" -#include "string_util.h" -#include "text.h" -#include "constants/species.h" -#include "pokedex.h" -#include "naming_screen.h" -#include "overworld.h" -#include "constants/maps.h" -#include "strings.h" -#include "battle.h" -#include "link.h" -#include "constants/easy_chat.h" -#include "field_map_obj.h" -#include "field_specials.h" -#include "item.h" -#include "constants/items.h" -#include "link.h" -#include "constants/maps.h" -#include "naming_screen.h" -#include "pokedex.h" -#include "region_map.h" -#include "random.h" -#include "overworld.h" -#include "rtc.h" -#include "script_menu.h" -#include "constants/species.h" -#include "string_util.h" -#include "strings.h" -#include "text.h" -#include "ewram.h" -#include "constants/moves.h" -#include "region_map_sections.h" - -struct UnkTvStruct -{ - s8 var0; -}; - -struct OutbreakPokemon -{ - /*0x00*/ u16 species; - /*0x02*/ u16 moves[4]; - /*0x0A*/ u8 level; - /*0x0B*/ u8 location; -}; - -struct TVSaleItem { - u16 item_id; - u16 item_amount; -}; - -extern u8 gUnknown_02038694; - -extern struct TVSaleItem gMartPurchaseHistory[3]; - -struct UnkTvStruct gUnknown_03005D38; - -extern u16 gSpecialVar_LastTalked; - -extern u8 gSpecialVar_ContestCategory; -extern u8 gUnknown_03004316[11]; -extern u8 gBattleOutcome; - -extern u16 gLastUsedItem; - -static EWRAM_DATA u16 gUnknown_020387E0 = 0; -static EWRAM_DATA u16 gUnknown_020387E2 = 0; -static EWRAM_DATA u8 gUnknown_020387E4 = 0; -static EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0; // why is this aligned to a 4-byte boundary? - -static u8 gUnknown_03000720; -static u8 gUnknown_03000721; -static s8 gUnknown_03000722; - -const struct OutbreakPokemon gPokeOutbreakSpeciesList[5] = -{ - { - .species = SPECIES_SURSKIT, - .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE}, - .level = 3, - .location = MAPSEC_Route102, - }, - { - .species = SPECIES_SURSKIT, - .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE}, - .level = 15, - .location = MAPSEC_Route114, - }, - { - .species = SPECIES_SURSKIT, - .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE}, - .level = 15, - .location = MAPSEC_Route117, - }, - { - .species = SPECIES_SURSKIT, - .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE}, - .level = 28, - .location = MAPSEC_Route120, - }, - { - .species = SPECIES_SKITTY, - .moves = {MOVE_GROWL, MOVE_TACKLE, MOVE_NONE, MOVE_NONE}, - .level = 15, - .location = MAPSEC_Route116, - }, -}; - -extern const u8 gTVNewsText_EnergyGuru1[]; -extern const u8 gTVNewsText_GameCorner1[]; -extern const u8 gTVNewsText_LilycoveDepartment1[]; -extern const u8 gTVNewsText_EnergyGuru2[]; -extern const u8 gTVNewsText_GameCorner2[]; -extern const u8 gTVNewsText_LilycoveDepartment2[]; -extern const u8 gTVNewsText_EnergyGuru3[]; -extern const u8 gTVNewsText_GameCorner3[]; -extern const u8 gTVNewsText_LilycoveDepartment3[]; -extern const u8 gTVFanClubText1[]; -extern const u8 gTVFanClubText2[]; -extern const u8 gTVFanClubText3[]; -extern const u8 gTVFanClubText4[]; -extern const u8 gTVFanClubText5[]; -extern const u8 gTVFanClubText6[]; -extern const u8 gTVFanClubText7[]; -extern const u8 gTVFanClubText8[]; -extern const u8 gTVRecentHappeningsText1[]; -extern const u8 gTVRecentHappeningsText2[]; -extern const u8 gTVRecentHappeningsText3[]; -extern const u8 gTVRecentHappeningsText4[]; -extern const u8 gTVRecentHappeningsText5[]; -extern const u8 gTVRecentHappeningsText6[]; -extern const u8 gTVFanClubOpinionsText1[]; -extern const u8 gTVFanClubOpinionsText2[]; -extern const u8 gTVFanClubOpinionsText3[]; -extern const u8 gTVFanClubOpinionsText4[]; -extern const u8 gTVFanClubOpinionsText5[]; -extern const u8 gTVPokemonOutbreakText[]; -extern const u8 gTVPokemonTodayText1[]; -extern const u8 gTVPokemonTodayText2[]; -extern const u8 gTVPokemonTodayText3[]; -extern const u8 gTVPokemonTodayText4[]; -extern const u8 gTVPokemonTodayText5[]; -extern const u8 gTVPokemonTodayText6[]; -extern const u8 gTVPokemonTodayText7[]; -extern const u8 gTVPokemonTodayText8[]; -extern const u8 gTVPokemonTodayText9[]; -extern const u8 gTVPokemonTodayText10[]; -extern const u8 gTVPokemonTodayText11[]; -extern const u8 gTVPokemonTodayText12[]; -extern const u8 gTVSmartShopperText1[]; -extern const u8 gTVSmartShopperText2[]; -extern const u8 gTVSmartShopperText3[]; -extern const u8 gTVSmartShopperText4[]; -extern const u8 gTVSmartShopperText5[]; -extern const u8 gTVSmartShopperText6[]; -extern const u8 gTVSmartShopperText7[]; -extern const u8 gTVSmartShopperText8[]; -extern const u8 gTVSmartShopperText9[]; -extern const u8 gTVSmartShopperText10[]; -extern const u8 gTVSmartShopperText11[]; -extern const u8 gTVSmartShopperText12[]; -extern const u8 gTVSmartShopperText13[]; -extern const u8 gTVBravoTrainerText1[]; -extern const u8 gTVBravoTrainerText2[]; -extern const u8 gTVBravoTrainerText3[]; -extern const u8 gTVBravoTrainerText4[]; -extern const u8 gTVBravoTrainerText5[]; -extern const u8 gTVBravoTrainerText6[]; -extern const u8 gTVBravoTrainerText7[]; -extern const u8 gTVBravoTrainerText8[]; -extern const u8 gTVBravoTrainerText9[]; -extern const u8 gTVBravoTrainerBattleTowerText1[]; -extern const u8 gTVBravoTrainerBattleTowerText2[]; -extern const u8 gTVBravoTrainerBattleTowerText3[]; -extern const u8 gTVBravoTrainerBattleTowerText4[]; -extern const u8 gTVBravoTrainerBattleTowerText5[]; -extern const u8 gTVBravoTrainerBattleTowerText6[]; -extern const u8 gTVBravoTrainerBattleTowerText7[]; -extern const u8 gTVBravoTrainerBattleTowerText8[]; -extern const u8 gTVBravoTrainerBattleTowerText9[]; -extern const u8 gTVBravoTrainerBattleTowerText10[]; -extern const u8 gTVBravoTrainerBattleTowerText11[]; -extern const u8 gTVBravoTrainerBattleTowerText12[]; -extern const u8 gTVBravoTrainerBattleTowerText13[]; -extern const u8 gTVBravoTrainerBattleTowerText14[]; -extern const u8 gTVBravoTrainerBattleTowerText15[]; -extern const u8 gTVNameRaterText1[]; -extern const u8 gTVNameRaterText2[]; -extern const u8 gTVNameRaterText3[]; -extern const u8 gTVNameRaterText4[]; -extern const u8 gTVNameRaterText5[]; -extern const u8 gTVNameRaterText6[]; -extern const u8 gTVNameRaterText7[]; -extern const u8 gTVNameRaterText8[]; -extern const u8 gTVNameRaterText9[]; -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 gTVNameRaterText19[]; -extern const u8 gTVPokemonTodayFailedCaptureText1[]; -extern const u8 gTVPokemonTodayFailedCaptureText2[]; -extern const u8 gTVPokemonTodayFailedCaptureText3[]; -extern const u8 gTVPokemonTodayFailedCaptureText4[]; -extern const u8 gTVPokemonTodayFailedCaptureText5[]; -extern const u8 gTVPokemonTodayFailedCaptureText6[]; -extern const u8 gTVPokemonTodayFailedCaptureText7[]; -extern const u8 gTVFishingGuruAdviceText1[]; -extern const u8 gTVFishingGuruAdviceText2[]; -extern const u8 gTVWorldOfMastersText1[]; -extern const u8 gTVWorldOfMastersText2[]; -extern const u8 gTVWorldOfMastersText3[]; -extern const u8 gTVGabbyAndTyText1[]; -extern const u8 gTVGabbyAndTyText2[]; -extern const u8 gTVGabbyAndTyText3[]; -extern const u8 gTVGabbyAndTyText4[]; -extern const u8 gTVGabbyAndTyText5[]; -extern const u8 gTVGabbyAndTyText6[]; -extern const u8 gTVGabbyAndTyText7[]; -extern const u8 gTVGabbyAndTyText8[]; -extern const u8 gTVGabbyAndTyText9[]; - -const u8 *const gTVNewsTextGroup1[] = -{ - NULL, - gTVNewsText_EnergyGuru1, - gTVNewsText_GameCorner1, - gTVNewsText_LilycoveDepartment1, -}; - -const u8 *const gTVNewsTextGroup2[] = -{ - NULL, - gTVNewsText_EnergyGuru2, - gTVNewsText_GameCorner2, - gTVNewsText_LilycoveDepartment2, -}; - -const u8 *const gTVNewsTextGroup3[] = -{ - NULL, - gTVNewsText_EnergyGuru3, - gTVNewsText_GameCorner3, - gTVNewsText_LilycoveDepartment3, -}; - -u8 *const gUnknown_083D1464[] = -{ - gStringVar1, - gStringVar2, - gStringVar3, -}; - -const u8 *const gTVFanClubTextGroup[] = -{ - gTVFanClubText1, - gTVFanClubText2, - gTVFanClubText3, - gTVFanClubText4, - gTVFanClubText5, - gTVFanClubText6, - gTVFanClubText7, - gTVFanClubText8, -}; - -const u8 *const gTVRecentHappeningsTextGroup[] = -{ - gTVRecentHappeningsText1, - gTVRecentHappeningsText2, - gTVRecentHappeningsText3, - gTVRecentHappeningsText4, - gTVRecentHappeningsText5, - gTVRecentHappeningsText6, -}; - -const u8 *const gTVFanClubOpinionsTextGroup[] = -{ - gTVFanClubOpinionsText1, - gTVFanClubOpinionsText2, - gTVFanClubOpinionsText3, - gTVFanClubOpinionsText4, - gTVFanClubOpinionsText5, -}; - -const u8 *const gTVPokemonOutbreakTextGroup[] = -{ - gTVPokemonOutbreakText, -}; - -const u8 *const gTVPokemonTodayTextGroup[] = -{ - gTVPokemonTodayText1, - gTVPokemonTodayText2, - gTVPokemonTodayText3, - gTVPokemonTodayText4, - gTVPokemonTodayText5, - gTVPokemonTodayText6, - gTVPokemonTodayText7, - gTVPokemonTodayText8, - gTVPokemonTodayText9, - gTVPokemonTodayText10, - gTVPokemonTodayText11, - gTVPokemonTodayText12, -}; - -const u8 *const gTVSmartShopperTextGroup[] = -{ - gTVSmartShopperText1, - gTVSmartShopperText2, - gTVSmartShopperText3, - gTVSmartShopperText4, - gTVSmartShopperText5, - gTVSmartShopperText6, - gTVSmartShopperText7, - gTVSmartShopperText8, - gTVSmartShopperText9, - gTVSmartShopperText10, - gTVSmartShopperText11, - gTVSmartShopperText12, - gTVSmartShopperText13, -}; - -const u8 *const gTVBravoTrainerTextGroup[] = -{ - gTVBravoTrainerText1, - gTVBravoTrainerText2, - gTVBravoTrainerText3, - gTVBravoTrainerText4, - gTVBravoTrainerText5, - gTVBravoTrainerText6, - gTVBravoTrainerText7, - gTVBravoTrainerText8, - gTVBravoTrainerText9, -}; - -const u8 *const gTVBravoTrainerBattleTowerTextGroup[] = -{ - gTVBravoTrainerBattleTowerText1, - gTVBravoTrainerBattleTowerText2, - gTVBravoTrainerBattleTowerText3, - gTVBravoTrainerBattleTowerText4, - gTVBravoTrainerBattleTowerText5, - gTVBravoTrainerBattleTowerText6, - gTVBravoTrainerBattleTowerText7, - gTVBravoTrainerBattleTowerText8, - gTVBravoTrainerBattleTowerText9, - gTVBravoTrainerBattleTowerText10, - gTVBravoTrainerBattleTowerText11, - gTVBravoTrainerBattleTowerText12, - gTVBravoTrainerBattleTowerText13, - gTVBravoTrainerBattleTowerText14, - gTVBravoTrainerBattleTowerText15, -}; - -const u8 *const gTVNameRaterTextGroup[] = -{ - gTVNameRaterText1, - gTVNameRaterText2, - gTVNameRaterText3, - gTVNameRaterText4, - gTVNameRaterText5, - gTVNameRaterText6, - gTVNameRaterText7, - gTVNameRaterText8, - gTVNameRaterText9, - gTVNameRaterText10, - gTVNameRaterText11, - gTVNameRaterText12, - gTVNameRaterText13, - gTVNameRaterText14, - gTVNameRaterText15, - gTVNameRaterText16, - gTVNameRaterText17, - gTVNameRaterText18, - gTVNameRaterText19, -}; - -const u8 *const gTVPokemonTodayFailedCaptureTextGroup[] = -{ - gTVPokemonTodayFailedCaptureText1, - gTVPokemonTodayFailedCaptureText2, - gTVPokemonTodayFailedCaptureText3, - gTVPokemonTodayFailedCaptureText4, - gTVPokemonTodayFailedCaptureText5, - gTVPokemonTodayFailedCaptureText6, - gTVPokemonTodayFailedCaptureText7, -}; - -const u8 *const gTVFishingGuruAdviceTextGroup[] = -{ - gTVFishingGuruAdviceText1, - gTVFishingGuruAdviceText2, -}; - -const u8 *const gTVWorldOfMastersTextGroup[] = -{ - gTVWorldOfMastersText1, - gTVWorldOfMastersText2, - gTVWorldOfMastersText3, -}; - -const u8 *const gTVGabbyAndTyTextGroup[] = -{ - gTVGabbyAndTyText1, - gTVGabbyAndTyText2, - gTVGabbyAndTyText3, - gTVGabbyAndTyText4, - gTVGabbyAndTyText5, - gTVGabbyAndTyText6, - gTVGabbyAndTyText7, - gTVGabbyAndTyText8, - gTVGabbyAndTyText9, -}; - -void ClearTVShowData(void) -{ - u8 showidx; - u8 extradataidx; - for (showidx=0; showidx<25; showidx++) { - gSaveBlock1.tvShows[showidx].common.kind = 0; - gSaveBlock1.tvShows[showidx].common.active = 0; - for (extradataidx=0; extradataidx<34; extradataidx++) { - gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0; - } - } - sub_80BEBF4(); -} - - -void InterviewBefore_FanClubLetter(void); -void InterviewBefore_RecentHappenings(void); -void InterviewBefore_PkmnFanClubOpinions(void); -void InterviewBefore_Dummy(void); -void InterviewBefore_NameRater(void); -void InterviewBefore_BravoTrainerPkmnProfile(void); -void InterviewBefore_BravoTrainerBTProfile(void); - - -u8 GetTVChannelByShowType(u8); - - -void InterviewAfter_FanClubLetter(void); -void InterviewAfter_RecentHappenings(void); -void InterviewAfter_PkmnFanClubOpinions(void); -void InterviewAfter_DummyShow4(void); -void InterviewAfter_BravoTrainerPokemonProfile(void); -void InterviewAfter_BravoTrainerBattleTowerProfile(void); - -u8 special_0x44(void) -{ - u8 i; - u8 j; - u8 selIdx; - TVShow *show; - - for (i = 5; i < ARRAY_COUNT(gSaveBlock1.tvShows) - 1; i++) - { - if (gSaveBlock1.tvShows[i].common.kind == 0) - { - break; - } - } - - j = Random() % i; - selIdx = j; - - do - { - if (GetTVChannelByShowType(gSaveBlock1.tvShows[j].common.kind) != 4) - { - if (gSaveBlock1.tvShows[j].common.active == TRUE) - { - return j; - } - } - else - { - show = &gSaveBlock1.tvShows[j]; - if (show->massOutbreak.daysLeft == 0 && show->massOutbreak.active == TRUE) - { - return j; - } - } - if (j == 0) - { - j = ARRAY_COUNT(gSaveBlock1.tvShows) - 2; - } - else - { - j--; - } - } while (j != selIdx); - - return 0xFF; -} - -u8 FindNonMassOutbreakActiveTVShow(void); - -u8 sub_80BD8B8(void) -{ - u8 retval = special_0x44(); - - if (retval == 0xff) - return 0xff; - if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.kind == TVSHOW_MASS_OUTBREAK) - return FindNonMassOutbreakActiveTVShow(); - return retval; -} - -u8 CheckForBigMovieOrEmergencyNewsOnTV(void); -void SetTVMetatilesOnMap(int, int, u16); -bool8 FindAnyTVNewsOnTheAir(void); -bool8 IsTVShowInSearchOfTrainersAiring(void); - -void UpdateTVScreensOnMap(int width, int height) -{ - FlagSet(FLAG_SYS_TV_WATCH); - switch (CheckForBigMovieOrEmergencyNewsOnTV()) - { - case 1: - SetTVMetatilesOnMap(width, height, 0x3); - break; - case 2: - break; - default: - if (gSaveBlock1.location.mapGroup == MAP_GROUP(LILYCOVE_CITY_COVE_LILY_MOTEL_1F) - && gSaveBlock1.location.mapNum == MAP_NUM(LILYCOVE_CITY_COVE_LILY_MOTEL_1F)) - { - SetTVMetatilesOnMap(width, height, 0x3); - } - else if (FlagGet(FLAG_SYS_TV_START) && (sub_80BD8B8() != 0xff || FindAnyTVNewsOnTheAir() != 0xff || IsTVShowInSearchOfTrainersAiring())) - { - FlagClear(FLAG_SYS_TV_WATCH); - SetTVMetatilesOnMap(width, height, 0x3); - } - break; - } -} - -void SetTVMetatilesOnMap(int width, int height, u16 tileId) -{ - int x; - int y; - - for (y=0; y<height; y++) - { - for (x=0; x<width; x++) - { - if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) - MapGridSetMetatileIdAt(x, y, tileId | 0xc00); - } - } -} - -void TurnOffTVScreen(void) -{ - SetTVMetatilesOnMap(gUnknown_03004870.width, gUnknown_03004870.height, 0x2); - DrawWholeMapView(); -} - -u8 GetTVShowType(void) -{ - return gSaveBlock1.tvShows[gSpecialVar_0x8004].common.kind; -} - -u8 FindNonMassOutbreakActiveTVShow(void) -{ - u8 showIdx; - for (showIdx=0; showIdx<24; showIdx++) - { - if (gSaveBlock1.tvShows[showIdx].common.kind != 0 && gSaveBlock1.tvShows[showIdx].common.kind != TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showIdx].common.active == 1) - return showIdx; - } - return 0xff; -} - -u8 GetNonMassOutbreakActiveTVShow(void) -{ - TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - if (tvShow->common.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies) - return FindNonMassOutbreakActiveTVShow(); - return gSpecialVar_0x8004; -} - -void ResetGabbyAndTy(void) -{ - gSaveBlock1.gabbyAndTyData.mon1 = 0; - gSaveBlock1.gabbyAndTyData.mon2 = 0; - gSaveBlock1.gabbyAndTyData.lastMove = 0; - gSaveBlock1.gabbyAndTyData.quote = 0xffff; - gSaveBlock1.gabbyAndTyData.valA_0 = 0; - gSaveBlock1.gabbyAndTyData.valA_1 = 0; - gSaveBlock1.gabbyAndTyData.valA_2 = 0; - gSaveBlock1.gabbyAndTyData.valA_3 = 0; - gSaveBlock1.gabbyAndTyData.valA_4 = 0; - gSaveBlock1.gabbyAndTyData.valA_5 = 0; - gSaveBlock1.gabbyAndTyData.valB_0 = 0; - gSaveBlock1.gabbyAndTyData.valB_1 = 0; - gSaveBlock1.gabbyAndTyData.valB_2 = 0; - gSaveBlock1.gabbyAndTyData.valB_3 = 0; - gSaveBlock1.gabbyAndTyData.valB_4 = 0; - gSaveBlock1.gabbyAndTyData.valB_5 = 0; - gSaveBlock1.gabbyAndTyData.mapnum = 0; - gSaveBlock1.gabbyAndTyData.battleNum = 0; -} - -void TakeTVShowInSearchOfTrainersOffTheAir(void); - -void GabbyAndTyBeforeInterview(void) -{ - u8 i; - - gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.poke1Species; - gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.opponentSpecies; - gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.lastUsedMove; - if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) - gSaveBlock1.gabbyAndTyData.battleNum ++; - gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0; - - if (gBattleResults.playerFaintCounter) - gSaveBlock1.gabbyAndTyData.valA_1 = 1; - else - gSaveBlock1.gabbyAndTyData.valA_1 = 0; - - if (gBattleResults.unk3) - gSaveBlock1.gabbyAndTyData.valA_2 = 1; - else - gSaveBlock1.gabbyAndTyData.valA_2 = 0; - - if (!gBattleResults.unk5_1) - { - for (i=0; i<11; i++) - { - if (gBattleResults.unk36[i] != 0) - { - gSaveBlock1.gabbyAndTyData.valA_3 = 1; - break; - } - } - } - else - { - gSaveBlock1.gabbyAndTyData.valA_3 = 1; - } - - TakeTVShowInSearchOfTrainersOffTheAir(); - if (gSaveBlock1.gabbyAndTyData.lastMove == 0) - FlagSet(FLAG_TEMP_1); -} - -void GabbyAndTyAfterInterview(void) -{ - gSaveBlock1.gabbyAndTyData.valB_0 = gSaveBlock1.gabbyAndTyData.valA_0; - gSaveBlock1.gabbyAndTyData.valB_1 = gSaveBlock1.gabbyAndTyData.valA_1; - gSaveBlock1.gabbyAndTyData.valB_2 = gSaveBlock1.gabbyAndTyData.valA_2; - gSaveBlock1.gabbyAndTyData.valB_3 = gSaveBlock1.gabbyAndTyData.valA_3; - gSaveBlock1.gabbyAndTyData.valA_4 = 1; - gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId; - IncrementGameStat(GAME_STAT_GOT_INTERVIEWED); -} - -void TakeTVShowInSearchOfTrainersOffTheAir(void) -{ - gSaveBlock1.gabbyAndTyData.valA_4 = 0; -} - -u8 GabbyAndTyGetBattleNum(void) -{ - if (gSaveBlock1.gabbyAndTyData.battleNum >= 6) - return (gSaveBlock1.gabbyAndTyData.battleNum % 3) + 6; - else - return gSaveBlock1.gabbyAndTyData.battleNum; -} - -bool8 IsTVShowInSearchOfTrainersAiring(void) -{ - return gSaveBlock1.gabbyAndTyData.valA_4; -} - -bool8 GabbyAndTyGetLastQuote(void) -{ - if (gSaveBlock1.gabbyAndTyData.quote == 0xffff) - return FALSE; - - EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); - gSaveBlock1.gabbyAndTyData.quote |= 0xffff; - return TRUE; -} - -u8 GabbyAndTyGetLastBattleTrivia(void) -{ - if (!gSaveBlock1.gabbyAndTyData.valB_0) - return 1; - if (gSaveBlock1.gabbyAndTyData.valB_3) - return 2; - if (gSaveBlock1.gabbyAndTyData.valB_2) - return 3; - if (gSaveBlock1.gabbyAndTyData.valB_1) - return 4; - return 0; -} - -void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) -{ - switch (GabbyAndTyGetBattleNum()) - { - case 1: - gSpecialVar_0x8004 = 0xE; - gSpecialVar_0x8005 = 0xD; - break; - case 2: - gSpecialVar_0x8004 = 0x5; - gSpecialVar_0x8005 = 0x6; - break; - case 3: - gSpecialVar_0x8004 = 0x12; - gSpecialVar_0x8005 = 0x11; - break; - case 4: - gSpecialVar_0x8004 = 0x15; - gSpecialVar_0x8005 = 0x16; - break; - case 5: - gSpecialVar_0x8004 = 0x8; - gSpecialVar_0x8005 = 0x9; - break; - case 6: - gSpecialVar_0x8004 = 0x13; - gSpecialVar_0x8005 = 0x14; - break; - case 7: - gSpecialVar_0x8004 = 0x17; - gSpecialVar_0x8005 = 0x18; - break; - case 8: - gSpecialVar_0x8004 = 0xA; - gSpecialVar_0x8005 = 0xB; - break; - } -} - -void InterviewAfter(void) -{ - switch (gSpecialVar_0x8005) - { - case TVSHOW_FAN_CLUB_LETTER: - InterviewAfter_FanClubLetter(); - break; - case TVSHOW_RECENT_HAPPENINGS: - InterviewAfter_RecentHappenings(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - InterviewAfter_PkmnFanClubOpinions(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - InterviewAfter_DummyShow4(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - InterviewAfter_BravoTrainerPokemonProfile(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - InterviewAfter_BravoTrainerBattleTowerProfile(); - break; - } -} - -u8 sub_80BDEAC(u8 *a0) -{ - u8 lang = GAME_LANGUAGE; - - if (a0[0] == EXT_CTRL_CODE_BEGIN && a0[1] == 0x15) - lang = LANGUAGE_JAPANESE; - return lang; -} - -void PutPokemonTodayCaughtOnAir(void) -{ - u8 i; - u16 total; - u16 item; - - total = 0; - sub_80BEB20(); - sub_80BE778(); - - if (gBattleResults.caughtPoke == 0) - { - sub_80BE074(); - } - else - { - sub_80BE028(); - if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.caughtPoke], gBattleResults.caughtNick) != 0) - { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) - { - for (i = 0; i < 11; i++) - total += gBattleResults.unk36[i]; - if (total != 0 || gBattleResults.unk5_1 != 0) - { - struct TVShowPokemonToday *pokemonToday; - - total = 0; - pokemonToday = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonToday; - pokemonToday->kind = TVSHOW_POKEMON_TODAY_CAUGHT; - pokemonToday->active = total; - if (gBattleResults.unk5_1 != 0) - { - total = 1; - item = ITEM_MASTER_BALL; - } - else - { - for (i = 0; i < 11; i++) - total += gBattleResults.unk36[i]; - if (total > 0xff) - total = 0xff; - item = gLastUsedItem; - } - pokemonToday->var12 = total; - pokemonToday->ball = item; - StringCopy(pokemonToday->playerName, gSaveBlock2.playerName); - StringCopy(pokemonToday->nickname, gBattleResults.caughtNick); - pokemonToday->species = gBattleResults.caughtPoke; - sub_80BE138((TVShow *)pokemonToday); - pokemonToday->language = GAME_LANGUAGE; - pokemonToday->language2 = sub_80BDEAC(pokemonToday->nickname); - Text_StripExtCtrlCodes(pokemonToday->nickname); - } - } - } - } -} - -void sub_80BE028(void) -{ - struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters; - - if (worldOfMasters->kind != TVSHOW_WORLD_OF_MASTERS) - { - sub_80BF55C(gSaveBlock1.tvShows, 24); - worldOfMasters->var06 = GetGameStat(GAME_STAT_STEPS); - worldOfMasters->kind = TVSHOW_WORLD_OF_MASTERS; - } - worldOfMasters->var02++; - worldOfMasters->var04 = gBattleResults.caughtPoke; - worldOfMasters->var08 = gBattleResults.poke1Species; - worldOfMasters->var0a = gMapHeader.regionMapSectionId; -} - -void sub_80BE074(void) -{ - u8 i; - u16 total; - u8 zero = 0; - - if (sub_80BF77C(0xffff) == 0) - { - for (i = 0, total = 0; i < ARRAY_COUNT(gUnknown_03004316); i++) - total += gUnknown_03004316[i]; - if (total > 0xff) - total = 0xff; - if (total > 2 && gBattleOutcome == 1) - { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) - { - struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonTodayFailed; - - zero = 0; - pokemonTodayFailed->kind = TVSHOW_POKEMON_TODAY_FAILED; - pokemonTodayFailed->active = zero; - pokemonTodayFailed->species = gBattleResults.poke1Species; - pokemonTodayFailed->species2 = gBattleResults.lastOpponentSpecies; - pokemonTodayFailed->var10 = total; - pokemonTodayFailed->var11 = gBattleOutcome; - pokemonTodayFailed->var12 = gMapHeader.regionMapSectionId; - StringCopy(pokemonTodayFailed->playerName, gSaveBlock2.playerName); - sub_80BE138((TVShow *)pokemonTodayFailed); - pokemonTodayFailed->language = GAME_LANGUAGE; - } - } - } -} - - -void sub_80BE138(TVShow *show) -{ - u32 playerId = GetPlayerTrainerId(); - - show->common.srcTrainerId2Lo = playerId & 0xFF; - show->common.srcTrainerId2Hi = playerId >> 8; - show->common.srcTrainerIdLo = playerId & 0xFF; - show->common.srcTrainerIdHi = playerId >> 8; - show->common.trainerIdLo = playerId & 0xFF; - show->common.trainerIdHi = playerId >> 8; -} - -void sub_80BE160(TVShow *show) -{ - u32 playerId = GetPlayerTrainerId(); - - show->common.srcTrainerIdLo = playerId & 0xFF; - show->common.srcTrainerIdHi = playerId >> 8; - show->common.trainerIdLo = playerId & 0xFF; - show->common.trainerIdHi = playerId >> 8; -} - -void InterviewAfter_BravoTrainerPokemonProfile(void) -{ - struct TVShowBravoTrainerPokemonProfiles *bravoTrainerSrc = &gSaveBlock1.tvShows[24].bravoTrainer; - - if (bravoTrainerSrc->kind == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) - { - struct TVShowBravoTrainerPokemonProfiles *bravoTrainerNew = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer; - - bravoTrainerNew->kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; - bravoTrainerNew->active = 1; - bravoTrainerNew->species = bravoTrainerSrc->species; - StringCopy(bravoTrainerNew->playerName, gSaveBlock2.playerName); - StringCopy(bravoTrainerNew->pokemonNickname, bravoTrainerSrc->pokemonNickname); - bravoTrainerNew->contestCategory = bravoTrainerSrc->contestCategory; - bravoTrainerNew->contestRank = bravoTrainerSrc->contestRank; - bravoTrainerNew->var14 = bravoTrainerSrc->var14; - bravoTrainerNew->contestResult = bravoTrainerSrc->contestResult; - bravoTrainerNew->contestCategory = bravoTrainerSrc->contestCategory; - sub_80BE160((TVShow *)bravoTrainerNew); - bravoTrainerNew->language = GAME_LANGUAGE; - bravoTrainerNew->var1f = sub_80BDEAC(bravoTrainerNew->pokemonNickname); - Text_StripExtCtrlCodes(bravoTrainerNew->pokemonNickname); - } -} - -void sub_80BE23C(u16 a0) -{ - struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer; - - InterviewBefore_BravoTrainerPkmnProfile(); - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1) - { - sub_80BF55C(gSaveBlock1.tvShows, 24); - bravoTrainer->var14 = a0; - bravoTrainer->kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; - } -} - -void sub_80BE284(u8 contestResult) -{ - struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer; - - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1) - { - bravoTrainer->contestResult = contestResult; - bravoTrainer->contestCategory = gSpecialVar_ContestCategory; - bravoTrainer->contestRank = (u8)gSpecialVar_ContestRank; - bravoTrainer->species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); - GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, bravoTrainer->pokemonNickname); - } -} - -void InterviewAfter_BravoTrainerBattleTowerProfile(void) -{ - struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower; - - bravoTrainerTower->kind = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; - bravoTrainerTower->active = 1; - StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName); - StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.battleTower.defeatedByTrainerName); - bravoTrainerTower->species = gSaveBlock2.battleTower.firstMonSpecies; - bravoTrainerTower->defeatedSpecies = gSaveBlock2.battleTower.defeatedBySpecies; - bravoTrainerTower->var16 = GetCurrentBattleTowerWinStreak(gSaveBlock2.battleTower.lastStreakLevelType); - bravoTrainerTower->var1c = gSaveBlock2.battleTower.battleOutcome; - if (gSaveBlock2.battleTower.lastStreakLevelType == 0) - bravoTrainerTower->btLevel = 50; - else - bravoTrainerTower->btLevel = 100; - bravoTrainerTower->var1b = gSpecialVar_0x8004; - sub_80BE160((TVShow *)bravoTrainerTower); - bravoTrainerTower->language = GAME_LANGUAGE; -} - -void sub_80BE3BC(void) -{ - u8 rval; - u8 i; - - rval = sub_80BF77C(0x5555); - if (rval == 0) - { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) - { - sub_80BF20C(); - if (gMartPurchaseHistory[0].item_amount >= 20) - { - struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].smartshopperShow; - - smartShopper->kind = TVSHOW_SMART_SHOPPER; - smartShopper->active = rval; - smartShopper->shopLocation = gMapHeader.regionMapSectionId; - for (i=0; i<3; i++) - { - smartShopper->itemIds[i] = gMartPurchaseHistory[i].item_id; - smartShopper->itemAmounts[i] = gMartPurchaseHistory[i].item_amount; - } - smartShopper->priceReduced = GetPriceReduction(1); - StringCopy(smartShopper->playerName, gSaveBlock2.playerName); - sub_80BE138((TVShow *)smartShopper); - smartShopper->language = GAME_LANGUAGE; - } - } - } -} - -void sub_80BE478(void) -{ - InterviewBefore_NameRater(); - if (gSpecialVar_Result == 1) - return; - - GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); - if (StringLength(gSaveBlock2.playerName) > 1 && StringLength(gStringVar1) > 1) - { - struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].nameRaterShow; - - nameRaterShow->kind = TVSHOW_NAME_RATER_SHOW; - nameRaterShow->active = 1; - nameRaterShow->species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL); - nameRaterShow->random = Random() % 3; - nameRaterShow->random2 = Random() % 2; - nameRaterShow->var1C = sub_80BF674(nameRaterShow->species); - StringCopy(nameRaterShow->trainerName, gSaveBlock2.playerName); - GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, nameRaterShow->pokemonName); - sub_80BE160((TVShow *)nameRaterShow); - nameRaterShow->language = GAME_LANGUAGE; - nameRaterShow->pokemonNameLanguage = sub_80BDEAC(nameRaterShow->pokemonName); - Text_StripExtCtrlCodes(nameRaterShow->pokemonName); - } -} - -void StartMassOutbreak(void) -{ - struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak; - - gSaveBlock1.outbreakPokemonSpecies = massOutbreak->species; - gSaveBlock1.outbreakLocationMapNum = massOutbreak->locationMapNum; - gSaveBlock1.outbreakLocationMapGroup = massOutbreak->locationMapGroup; - gSaveBlock1.outbreakPokemonLevel = massOutbreak->level; - gSaveBlock1.outbreakUnk1 = massOutbreak->var02; - gSaveBlock1.outbreakUnk2 = massOutbreak->var0E; - gSaveBlock1.outbreakPokemonMoves[0] = massOutbreak->moves[0]; - gSaveBlock1.outbreakPokemonMoves[1] = massOutbreak->moves[1]; - gSaveBlock1.outbreakPokemonMoves[2] = massOutbreak->moves[2]; - gSaveBlock1.outbreakPokemonMoves[3] = massOutbreak->moves[3]; - gSaveBlock1.outbreakUnk4 = massOutbreak->var03; - gSaveBlock1.outbreakPokemonProbability = massOutbreak->probability; - gSaveBlock1.outbreakUnk5 = 2; -} - -void InterviewAfter_FanClubLetter(void) -{ - struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter; - - fanclubLetter->kind = TVSHOW_FAN_CLUB_LETTER; - fanclubLetter->active = 1; - StringCopy(fanclubLetter->playerName, gSaveBlock2.playerName); - fanclubLetter->species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); - sub_80BE160((TVShow *)fanclubLetter); - fanclubLetter->language = GAME_LANGUAGE; -} - -void InterviewAfter_RecentHappenings(void) -{ - struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings; - - recentHappenings->kind = TVSHOW_RECENT_HAPPENINGS; - recentHappenings->active = 1; - StringCopy(recentHappenings->playerName, gSaveBlock2.playerName); - recentHappenings->var02 = 0; - sub_80BE160((TVShow *)recentHappenings); - recentHappenings->language = GAME_LANGUAGE; -} - -void InterviewAfter_PkmnFanClubOpinions(void) -{ - u8 monIndex; - struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions; - - fanclubOpinions->kind = TVSHOW_PKMN_FAN_CLUB_OPINIONS; - fanclubOpinions->active = 1; - monIndex = GetLeadMonIndex(); - fanclubOpinions->var04A = GetMonData(&gPlayerParty[monIndex], MON_DATA_FRIENDSHIP, NULL) / 16; - fanclubOpinions->var04B = gSpecialVar_0x8007; - StringCopy(fanclubOpinions->playerName, gSaveBlock2.playerName); - GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, fanclubOpinions->var10); - fanclubOpinions->var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); - sub_80BE160((TVShow *)fanclubOpinions); - fanclubOpinions->language = GAME_LANGUAGE; - fanclubOpinions->var0E = sub_80BDEAC(fanclubOpinions->var10); - Text_StripExtCtrlCodes(fanclubOpinions->var10); -} - -void InterviewAfter_DummyShow4(void) -{ -} - -void sub_80BE778(void) -{ - if (FlagGet(FLAG_SYS_GAME_CLEAR)) - { - u8 i; - - for (i = 0; i < 24; i++) - { - if (gSaveBlock1.tvShows[i].massOutbreak.kind == TVSHOW_MASS_OUTBREAK) - return; - } - if (sub_80BF77C(0x147)) - return; - - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1) - { - u16 rand = Random(); - u16 val = rand % 5; - s32 val2 = gUnknown_03005D38.var0; - struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[val2].massOutbreak; - - massOutbreak->kind = TVSHOW_MASS_OUTBREAK; - massOutbreak->active = 1; - massOutbreak->level = gPokeOutbreakSpeciesList[val].level; - massOutbreak->var02 = 0; - massOutbreak->var03 = 0; - massOutbreak->species = gPokeOutbreakSpeciesList[val].species; - massOutbreak->var0E = 0; - massOutbreak->moves[0] = gPokeOutbreakSpeciesList[val].moves[0]; - massOutbreak->moves[1] = gPokeOutbreakSpeciesList[val].moves[1]; - massOutbreak->moves[2] = gPokeOutbreakSpeciesList[val].moves[2]; - massOutbreak->moves[3] = gPokeOutbreakSpeciesList[val].moves[3]; - massOutbreak->locationMapNum = gPokeOutbreakSpeciesList[val].location; - massOutbreak->locationMapGroup = 0; - massOutbreak->var12 = 0; - massOutbreak->probability = 0x32; - massOutbreak->var15 = 0; - massOutbreak->daysLeft = 0x01; - sub_80BE160((TVShow *)massOutbreak); - massOutbreak->language = GAME_LANGUAGE; - } - } -} - -void EndMassOutbreak(void) -{ - gSaveBlock1.outbreakPokemonSpecies = 0; - gSaveBlock1.outbreakLocationMapNum = 0; - gSaveBlock1.outbreakLocationMapGroup = 0; - gSaveBlock1.outbreakPokemonLevel = 0; - gSaveBlock1.outbreakUnk1 = 0; - gSaveBlock1.outbreakUnk2 = 0; - gSaveBlock1.outbreakPokemonMoves[0] = 0; - gSaveBlock1.outbreakPokemonMoves[1] = 0; - gSaveBlock1.outbreakPokemonMoves[2] = 0; - gSaveBlock1.outbreakPokemonMoves[3] = 0; - gSaveBlock1.outbreakUnk4 = 0; - gSaveBlock1.outbreakPokemonProbability = 0; - gSaveBlock1.outbreakUnk5 = 0; -} - -void UpdateTVShowsPerDay(u16 arg0) -{ - sub_80BE8EC(arg0); - UpdateMassOutbreakTimeLeft(arg0); - sub_80BEE84(arg0); - sub_80BEA5C(arg0); -} - -void sub_80BE8EC(u16 arg0) -{ - u8 showidx; - - if (gSaveBlock1.outbreakPokemonSpecies == 0) - { - for (showidx=0; showidx<24; showidx++) - { - if (gSaveBlock1.tvShows[showidx].massOutbreak.kind == TVSHOW_MASS_OUTBREAK - && gSaveBlock1.tvShows[showidx].massOutbreak.active == 0x01) - { - struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[showidx].massOutbreak; - - if (massOutbreak->daysLeft < arg0) - massOutbreak->daysLeft = 0; - else - massOutbreak->daysLeft -= arg0; - break; - } - } - } -} - -void UpdateMassOutbreakTimeLeft(u16 arg0) -{ - if (gSaveBlock1.outbreakUnk5 <= arg0) - EndMassOutbreak(); - else - gSaveBlock1.outbreakUnk5 -= arg0; -} - -void sub_80BE97C(bool8 flag) -{ - u8 var0, var1; - - if (flag) - { - var0 = gUnknown_020387E2 >> 8; - if (var0 > 4) - sub_80BE9D4(); - gUnknown_020387E2 &= 0xFF; - var1 = gUnknown_020387E2 & 0xFF; - if (var1 != 0xFF) - gUnknown_020387E2++; - } - else - { - var0 = gUnknown_020387E2 & 0xFF; - if (var0 > 4) - sub_80BE9D4(); - gUnknown_020387E2 &= 0xFF00; - var1 = gUnknown_020387E2 >> 8; - if (var1 != 0xFF) - gUnknown_020387E2 += 0x100; - } -} - -void sub_80BE9D4(void) -{ - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) - { - struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonAngler; - register u8 zero asm("r1") = 0; - - asm(""::"r"(zero)); - pokemonAngler->kind = TVSHOW_FISHING_ADVICE; - pokemonAngler->active = zero; - pokemonAngler->var02 = gUnknown_020387E2 & 0xFF; - pokemonAngler->var03 = gUnknown_020387E2 >> 8; - pokemonAngler->var04 = gUnknown_020387E0; - StringCopy(pokemonAngler->playerName, gSaveBlock2.playerName); - sub_80BE138((TVShow *)pokemonAngler); - pokemonAngler->language = GAME_LANGUAGE; - } -} - -void sub_80BEA50(u16 var) -{ - gUnknown_020387E0 = var; -} - -void sub_80BEA88(void); - -void sub_80BEA5C(u16 arg0) -{ - struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters; - - if (worldOfMasters->kind == TVSHOW_WORLD_OF_MASTERS) - { - if (worldOfMasters->var02 < 20) - sub_80BF55C(gSaveBlock1.tvShows, 0x18); - else - sub_80BEA88(); - } -} -void sub_80BEA88(void) -{ - struct TVShowWorldOfMasters *worldOfMastersSrc = &gSaveBlock1.tvShows[24].worldOfMasters; - - if (sub_80BF77C(0xFFFF) == 0) - { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) - { - struct TVShowWorldOfMasters *worldOfMastersDst = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].worldOfMasters; - - worldOfMastersDst->kind = TVSHOW_WORLD_OF_MASTERS; - worldOfMastersDst->active = 0; - worldOfMastersDst->var02 = worldOfMastersSrc->var02; - worldOfMastersDst->var06 = GetGameStat(GAME_STAT_STEPS) - worldOfMastersSrc->var06; - worldOfMastersDst->var04 = worldOfMastersSrc->var04; - worldOfMastersDst->var08 = worldOfMastersSrc->var08; - worldOfMastersDst->var0a = worldOfMastersSrc->var0a; - StringCopy(worldOfMastersDst->playerName, gSaveBlock2.playerName); - sub_80BE138((TVShow *)worldOfMastersDst); - worldOfMastersDst->language = GAME_LANGUAGE; - } - } -} - -void sub_80BEB20(void) -{ - u16 rval; - - if (FlagGet(FLAG_SYS_GAME_CLEAR) != 0) - { - gUnknown_03005D38.var0 = sub_80BEBC8(gSaveBlock1.pokeNews); - if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) - { - rval = (Random() % 3) + 1; - if (sub_80BEE48(rval) != 1) - { - gSaveBlock1.pokeNews[gUnknown_03005D38.var0].kind = rval; - gSaveBlock1.pokeNews[gUnknown_03005D38.var0].days = 4; - gSaveBlock1.pokeNews[gUnknown_03005D38.var0].state = 1; - } - } - } -} - -int sub_80BEBC8(struct PokeNews *pokeNews) -{ - s8 i; - - for (i = 0; i < 16; i++) - { - if (pokeNews[i].kind == 0) - return i; - } - return -1; -} - -void sub_80BEBF4(void) -{ - u8 i; - - for (i = 0; i < 16; i++) - sub_80BEC10(i); -} - -void sub_80BEC10(u8 arg0) -{ - gSaveBlock1.pokeNews[arg0].kind = 0; - gSaveBlock1.pokeNews[arg0].state = 0; - gSaveBlock1.pokeNews[arg0].days = 0; -} - -void sub_80BEC40(void) -{ - u8 i, j; - - for (i = 0; i < 15; i++) - { - if (gSaveBlock1.pokeNews[i].kind == 0) - { - for (j = i + 1; j < 16; j++) - { - if (gSaveBlock1.pokeNews[j].kind != 0) - { - gSaveBlock1.pokeNews[i] = gSaveBlock1.pokeNews[j]; - sub_80BEC10(j); - break; - } - } - } - } -} - -u8 FindAnyTVNewsOnTheAir(void) -{ - u8 i; - for (i = 0; i < 16; i++) - { - if (gSaveBlock1.pokeNews[i].kind != 0 - && gSaveBlock1.pokeNews[i].state == 1 - && gSaveBlock1.pokeNews[i].days < 3) - return i; - } - return 0xFF; -} - -void DoPokeNews(void) -{ - u8 i; - i = FindAnyTVNewsOnTheAir(); - if (i == 0xff) - { - gSpecialVar_Result = 0; - return; - } - if (gSaveBlock1.pokeNews[i].days == 0) - { - gSaveBlock1.pokeNews[i].state = 2; - if (gLocalTime.hours < 20) - ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.pokeNews[i].kind]); - else - ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.pokeNews[i].kind]); - } - else - { - u16 value = gSaveBlock1.pokeNews[i].days; - - ConvertIntToDecimalStringN(gStringVar1, value, 0, 1); - gSaveBlock1.pokeNews[i].state = 0; - ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.pokeNews[i].kind]); - } - gSpecialVar_Result = 1; -} - -bool8 GetPriceReduction(u8 arg0) -{ - u8 i; - - if (arg0 == 0) - return FALSE; - for (i=0; i<16; i++) - { - if (gSaveBlock1.pokeNews[i].kind == arg0) - { - if (gSaveBlock1.pokeNews[i].state == 2 && IsPriceDiscounted(arg0) != 0) - return TRUE; - else - return FALSE; - } - } - return FALSE; -} - -bool8 IsPriceDiscounted(u8 arg0) -{ - switch (arg0) - { - case 1: - if (gSaveBlock1.location.mapGroup == MAP_GROUP(SLATEPORT_CITY) - && gSaveBlock1.location.mapNum == MAP_NUM(SLATEPORT_CITY) - && gSpecialVar_LastTalked == 0x1a) - return TRUE; - else - return FALSE; - break; - case 3: - if (gSaveBlock1.location.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) - && gSaveBlock1.location.mapNum == MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)) - return TRUE; - else - return FALSE; - break; - default: - return TRUE; - } -} - -bool8 sub_80BEE48(u8 arg0) -{ - u8 i; - - if (arg0 == 0) - return TRUE; - for (i=0; i<16; i++) - { - if (gSaveBlock1.pokeNews[i].kind == arg0) - return TRUE; - } - return FALSE; -} - -void sub_80BEE84(u16 var0) -{ - u8 i; - - for (i=0; i<16; i++) - { - if (gSaveBlock1.pokeNews[i].kind) - { - if (gSaveBlock1.pokeNews[i].days < var0) - { - sub_80BEC10(i); - } - else - { - if (!gSaveBlock1.pokeNews[i].state && FlagGet(FLAG_SYS_GAME_CLEAR) == 1) - gSaveBlock1.pokeNews[i].state = 1; - gSaveBlock1.pokeNews[i].days -= var0; - } - } - } - sub_80BEC40(); -} - -void sub_80BEF10(u8 strvaridx, u8 rank) -{ - switch (rank) - { - case NORMAL_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); - break; - case SUPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); - break; - case HYPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); - break; - case MASTER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); - break; - } -} - -void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) -{ - switch (category) - { - case CONTEST_COOL: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); - break; - case CONTEST_BEAUTY: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); - break; - case CONTEST_CUTE: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); - break; - case CONTEST_SMART: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); - break; - case CONTEST_TOUGH: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); - break; - } -} - -void SetContestCategoryStringVarForInterview(void) -{ - struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer; - - CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); -} - -void sub_80BF088(u8 arg0, s32 price) -{ - size_t log10val = sub_80BF0B8(price); - - ConvertIntToDecimalStringN(gUnknown_083D1464[arg0], price, 0, log10val); -} - -size_t sub_80BF0B8(int value) -{ - if (value / 10 == 0) - return 1; - else if (value / 100 == 0) - return 2; - else if (value / 1000 == 0) - return 3; - else if (value / 10000 == 0) - return 4; - else if (value / 100000 == 0) - return 5; - else if (value / 1000000 == 0) - return 6; - else if (value / 10000000 == 0) - return 7; - else if (value / 100000000 == 0) - return 8; - else - return 1; -} - -void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1) -{ - u8 i; - s32 price; - price = 0; - - for (i = 0; i < 3; i++) - { - if (arg1->itemIds[i]) - price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i]; - } - if (arg1->priceReduced == 1) - sub_80BF088(arg0, price >> 1); - else - sub_80BF088(arg0, price); -} - -bool8 sub_80BF1B4(u8 showIdx) -{ - u8 i; - //TVShow *tvShows; - TVShow *tvShows = gSaveBlock1.tvShows; - u32 trainerId = GetPlayerTrainerId(); - - for (i = 5; i < 24; i++) - { - if (tvShows[i].common.kind == showIdx) - { - if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi) - return TRUE; - } - } - return FALSE; -} - -void sub_80BF20C(void) -{ - u8 i, j; - u16 tmpId, tmpAmount; - - for (i = 0; i < 2; i++) - { - for (j = i + 1; j < 3; j++) - { - if (gMartPurchaseHistory[i].item_amount < gMartPurchaseHistory[j].item_amount) - { - tmpId = gMartPurchaseHistory[i].item_id; - tmpAmount = gMartPurchaseHistory[i].item_amount; - gMartPurchaseHistory[i].item_id = gMartPurchaseHistory[j].item_id; - gMartPurchaseHistory[i].item_amount = gMartPurchaseHistory[j].item_amount; - gMartPurchaseHistory[j].item_id = tmpId; - gMartPurchaseHistory[j].item_amount = tmpAmount; - } - } - } -} - -void sub_80BF25C(u8 showType) -{ - u8 i; - - for (i = 0; i < 5; i++) - { - if (gSaveBlock1.tvShows[i].common.kind == showType) - { - if(gSaveBlock1.tvShows[i].common.active == 1) - { - gSpecialVar_Result = 1; - } - else - { - sub_80BF55C(gSaveBlock1.tvShows, i); - sub_80BF588(gSaveBlock1.tvShows); - sub_80BF6D8(); - } - return; - } - } - sub_80BF6D8(); -} - -void InterviewBefore(void) -{ - gSpecialVar_Result = FALSE; - switch (gSpecialVar_0x8005) - { - case TVSHOW_FAN_CLUB_LETTER: - InterviewBefore_FanClubLetter(); - break; - case TVSHOW_RECENT_HAPPENINGS: - InterviewBefore_RecentHappenings(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - InterviewBefore_PkmnFanClubOpinions(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - InterviewBefore_Dummy(); - break; - case TVSHOW_NAME_RATER_SHOW: - InterviewBefore_NameRater(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - InterviewBefore_BravoTrainerPkmnProfile(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - InterviewBefore_BravoTrainerBTProfile(); - break; - } -} - -void InterviewBefore_FanClubLetter(void) -{ - struct TVShowFanClubLetter *fanclubLetter; - - sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); - if (gSpecialVar_Result == 0) - { - StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); - fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter; - sub_80EB6FC(fanclubLetter->pad04, 6); - } -} - -void InterviewBefore_RecentHappenings(void) -{ - struct TVShowRecentHappenings *recentHappenings; - - sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); - if (gSpecialVar_Result == 0) - { - recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings; - sub_80EB6FC(recentHappenings->var04, 6); - } -} - -void InterviewBefore_PkmnFanClubOpinions(void) -{ - struct TVShowFanclubOpinions *fanclubOpinions; - - sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS); - if (gSpecialVar_Result == 0) - { - StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); - GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); - StringGetEnd10(gStringVar2); - fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions; - sub_80EB6FC(fanclubOpinions->var1C, 2); - } -} - -void InterviewBefore_Dummy(void) -{ - gSpecialVar_Result = 1; -} - -void InterviewBefore_NameRater(void) -{ - sub_80BF25C(TVSHOW_NAME_RATER_SHOW); -} - -void InterviewBefore_BravoTrainerPkmnProfile(void) -{ - struct TVShowBravoTrainerPokemonProfiles *bravoTrainer; - - sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); - if (gSpecialVar_Result == 0) - { - bravoTrainer = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer; - sub_80EB6FC(bravoTrainer->var04, 2); - } -} - -void InterviewBefore_BravoTrainerBTProfile(void) -{ - struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower; - - sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); - if (gSpecialVar_Result == 0) - { - bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower; - sub_80EB6FC(bravoTrainerTower->var18, 1); // wrong struct ident, fix later - } -} - -#if ENGLISH -u8 NicknameDiffersFromSpeciesName(u8 monIndex) -{ - u32 species; - - GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, &gStringVar1); - species = GetMonData(&gPlayerParty[monIndex], MON_DATA_SPECIES, NULL); - if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == 0) - return FALSE; - - return TRUE; -} -#elif GERMAN -u8 NicknameDiffersFromSpeciesName(u8 monIndex) -{ - u8 langData[4]; - u32 species; - u8 *tmp; - - GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, &gStringVar1); - - tmp = langData; - tmp[0] = GetMonData(&gPlayerParty[monIndex], MON_DATA_LANGUAGE, &langData); - if (tmp[0] != GAME_LANGUAGE) - return TRUE; - - species = GetMonData(&gPlayerParty[monIndex], MON_DATA_SPECIES, NULL); - if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1)) - return TRUE; - - return FALSE; -} -#endif - -u8 LeadMonNicknamed(void) -{ - return NicknameDiffersFromSpeciesName(GetLeadMonIndex()); -} - -void sub_80BF55C(TVShow tvShow[], u8 showidx) -{ - u8 idx; - - tvShow[showidx].common.kind = 0; - tvShow[showidx].common.active = 0; - for (idx = 0; idx < 34; idx++) - tvShow[showidx].common.pad02[idx] = 0; -} - -void sub_80BF588(TVShow tvShow[]) -{ - u8 showidx; - u8 showidx2; - - for (showidx = 0; showidx < 4; showidx++) - { - if (tvShow[showidx].common.kind == 0) - { - for (showidx2 = showidx + 1; showidx2 < 5; showidx2++) - { - if (tvShow[showidx2].common.kind != 0) - { - tvShow[showidx] = tvShow[showidx2]; - sub_80BF55C(tvShow, showidx2); - break; - } - } - } - } - for (showidx = 5; showidx < 24; showidx++) - { - if (tvShow[showidx].common.kind == 0) - { - for (showidx2 = showidx + 1; showidx2 < 24; showidx2++) - { - if (tvShow[showidx2].common.kind != 0) - { - tvShow[showidx] = tvShow[showidx2]; - sub_80BF55C(gSaveBlock1.tvShows, showidx2); - break; - } - } - } - } -} - -u16 sub_80BF638(u8 arg0, u16 arg1) -{ - u16 retval = sub_80BF674(arg1); - - StringCopy(gUnknown_083D1464[arg0], gSpeciesNames[retval]); - return retval; -} - -u16 sub_80BF674(u16 species) -{ - u16 rspecies; - u16 cspecies; - - rspecies = (Random() % (NUM_SPECIES - 1)) + 1; - cspecies = rspecies; - while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) - { - if (cspecies == SPECIES_BULBASAUR) - cspecies = NUM_SPECIES - 1; - else - cspecies --; - if (cspecies == rspecies) - { - cspecies = species; - return cspecies; - } - } - return cspecies; -} - -void sub_80BF6D8(void) -{ - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - gSpecialVar_0x8006 = gUnknown_03005D38.var0; - if (gUnknown_03005D38.var0 == -1) - gSpecialVar_Result = 1; - else - gSpecialVar_Result = 0; -} - -s8 sub_80BF720(TVShow tvShow[]) -{ - u8 idx; - - for (idx = 0; idx < 5; idx++) - { - if (tvShow[idx].common.kind == 0) - return idx; - } - return -1; -} - -s8 sub_80BF74C(TVShow tvShow[]) -{ - s8 idx; - - for (idx = 5; idx < 24; idx++) - { - if (tvShow[idx].common.kind == 0) - return idx; - } - return -1; -} - -bool8 sub_80BF77C(u16 value) -{ - if (Random() <= value) - return FALSE; - return TRUE; -} - -void sub_80BF79C(TVShow *arg0) -{ - u8 i = Random() % 6; - - while (1) - { - if (i == 6) - i = 0; - if (arg0->recentHappenings.var04[i] != 0xFFFF) - break; - i++; - } - EasyChat_GetWordText(gStringVar3, arg0->recentHappenings.var04[i]); -} - -u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) -{ - u16 flagsum = 0; - u8 i = 0; - - if (arg0->pokemonName[0] != 0xFF) - { - while (i < 11 && arg0->pokemonName[i] != 0xFF) - { - flagsum += arg0->pokemonName[i]; - i++; - } - } - return flagsum & 0x7; -} - - -void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNameRaterShow *tvShow) -{ - u8 flags[3]; - u16 nameLength; - u8 i; - - for (i = 0; i < 3; i++) - flags[i] = EOS; - - if (arg3 == 0) - { - nameLength = StringLength(tvShow->trainerName); - if (arg2 == 0) - { - flags[0] = tvShow->trainerName[arg1]; - } - else if (arg2 == 1) - { - flags[0] = tvShow->trainerName[nameLength - arg1]; - } - else if (arg2 == 2) { - flags[0] = tvShow->trainerName[arg1]; - flags[1] = tvShow->trainerName[arg1 + 1]; - } - else - { - flags[0] = tvShow->trainerName[nameLength - (arg1 + 2)]; - flags[1] = tvShow->trainerName[nameLength - (arg1 + 1)]; - } - } - else if (arg3 == 1) - { - nameLength = StringLength(tvShow->pokemonName); - if (arg2 == 0) - { - flags[0] = tvShow->pokemonName[arg1]; - } - else if (arg2 == 1) - { - flags[0] = tvShow->pokemonName[nameLength - arg1]; - } - else if (arg2 == 2) - { - flags[0] = tvShow->pokemonName[arg1]; - flags[1] = tvShow->pokemonName[arg1 + 1]; - } - else - { - flags[0] = tvShow->pokemonName[nameLength - (arg1 + 2)]; - flags[1] = tvShow->pokemonName[nameLength - (arg1 + 1)]; - } - } - else - { - nameLength = StringLength(gSpeciesNames[arg4]); - if (arg2 == 0) - { - flags[0] = gSpeciesNames[arg4][arg1]; - } - else if (arg2 == 1) - { - flags[0] = gSpeciesNames[arg4][nameLength - arg1]; - } - else if (arg2 == 2) - { - flags[0] = gSpeciesNames[arg4][arg1]; - flags[1] = gSpeciesNames[arg4][arg1 + 1]; - } - else - { - flags[0] = gSpeciesNames[arg4][nameLength - (arg1 + 2)]; - flags[1] = gSpeciesNames[arg4][nameLength - (arg1 + 1)]; - } - } - StringCopy(gUnknown_083D1464[arg0], flags); -} - -bool8 TV_IsScriptShowKindAlreadyInQueue(void) -{ - u8 i; - - for (i = 0; i < 5; i++) - { - if (gSaveBlock1.tvShows[i].common.kind == gSpecialVar_0x8004) - return TRUE; - } - return FALSE; -} - -bool8 TV_PutNameRaterShowOnTheAirIfNicnkameChanged(void) -{ - GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); - if (!StringCompareWithoutExtCtrlCodes(gStringVar3, gStringVar1)) - return FALSE; - sub_80BE478(); - return TRUE; -} - -void ChangePokemonNickname_CB(void); - -void ChangePokemonNickname(void) -{ - u16 spec; - u16 gender; - u32 pval; - - GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar3); - GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar2); - spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0); - gender = GetMonGender(&(gPlayerParty[gSpecialVar_0x8004])); - pval = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_PERSONALITY, 0); - DoNamingScreen(3, gStringVar2, spec, gender, pval, ChangePokemonNickname_CB); -} - -void ChangePokemonNickname_CB(void) -{ - SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2); - c2_exit_to_overworld_1_continue_scripts_restart_music(); -} - -void TV_CopyNicknameToStringVar1AndEnsureTerminated(void) -{ - GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); - StringGetEnd10(gStringVar1); -} - -void TV_CheckMonOTIDEqualsPlayerID(void) -{ - if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0)) - gSpecialVar_Result = 0; - else - gSpecialVar_Result = 1; -} - -u8 GetTVChannelByShowType(u8 arg0) -{ - if (arg0 == 0) - return 0; - else if (arg0 > 0 && arg0 <= 20) - return 2; - else if (arg0 > 20 && arg0 <= 40) - return 3; - else if (arg0 > 40 && arg0 <= 60) - return 4; - else - return 0; -} - -u32 GetPlayerTrainerId(void) -{ - return (gSaveBlock2.playerTrainerId[3] << 24) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[0]); -} - -u8 CheckForBigMovieOrEmergencyNewsOnTV(void) -{ - if (gSaveBlock1.location.mapGroup != MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) - return 0; - if (gSaveBlock2.playerGender == MALE) - { - if (gSaveBlock1.location.mapNum != MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) - return 0; - } - else - { - if (gSaveBlock1.location.mapNum != MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F)) - return 0; - } - if (FlagGet(FLAG_SYS_TV_LATI) == 1) - return 1; - if (FlagGet(FLAG_SYS_TV_HOME) == 1) - return 2; - return 1; -} - -void GetMomOrDadStringForTVMessage(void) -{ - if (gSaveBlock1.location.mapGroup == MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) - { - if (gSaveBlock2.playerGender == MALE) - { - if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) - { - StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_TEMP_3, 1); - } - } - else - { - if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F)) - { - StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_TEMP_3, 1); - } - } - } - if (VarGet(VAR_TEMP_3) == 1) - { - StringCopy(gStringVar1, gOtherText_Mom); - } - else if (VarGet(VAR_TEMP_3) == 2) - { - StringCopy(gStringVar1, gOtherText_Dad); - } - else if (VarGet(VAR_TEMP_3) > 2) - { - if (VarGet(VAR_TEMP_3) % 2 == 0) - StringCopy(gStringVar1, gOtherText_Mom); - else - StringCopy(gStringVar1, gOtherText_Dad); - } - else - { - if (Random() % 2 != 0) - { - StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_TEMP_3, 1); - } - else - { - StringCopy(gStringVar1, gOtherText_Dad); - VarSet(VAR_TEMP_3, 2); - } - } -} - -void sub_80BFD20(void) -{ - VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0); - RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); -} - -typedef union ewramStruct_02007000 -{ - TVShow tvshows[4][25]; - struct PokeNews pokeNews[4][16]; -} ewramStruct_02007000; - -void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]); - -void sub_80C04A0(void); -void sub_80C01D4(void); -void sub_80C0408(void); - -void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) -{ - u8 i; - ewramStruct_02007000 *ewramTVShows; - - for (i = 0; i < 4; i++) - memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow)); - ewramTVShows = &gUnknown_02007000; - switch (arg2) - { - case 0: - sub_80BFE24(gSaveBlock1.tvShows, ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); - break; - case 1: - sub_80BFE24(ewramTVShows->tvshows[0], gSaveBlock1.tvShows, ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); - break; - case 2: - sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], gSaveBlock1.tvShows, ewramTVShows->tvshows[3]); - break; - case 3: - sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], gSaveBlock1.tvShows); - break; - } - sub_80BF588(gSaveBlock1.tvShows); - sub_80C04A0(); - sub_80BF588(gSaveBlock1.tvShows); - sub_80C01D4(); - sub_80C0408(); -} - -s8 sub_80C019C(TVShow tvShows[]); -bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx); -u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); -u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx); -u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); - -void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]) -{ - u8 i, j; - TVShow **argslist[4]; - - argslist[0] = &arg0; - argslist[1] = &arg1; - argslist[2] = &arg2; - argslist[3] = &arg3; - gUnknown_03000720 = GetLinkPlayerCount(); - while (1) - { - for (i=0; i<gUnknown_03000720; i++) - { - if (i == 0) - gUnknown_020387E4 = i; - gUnknown_03000722 = sub_80C019C(argslist[i][0]); - if (gUnknown_03000722 == -1) - { - gUnknown_020387E4++; - if (gUnknown_020387E4 == gUnknown_03000720) - return; - } - else - { - for (j=0; j<gUnknown_03000720-1; j++) - { - gUnknown_03005D38.var0 = sub_80BF74C(argslist[(i + j + 1) % gUnknown_03000720][0]); - if (gUnknown_03005D38.var0 != -1 - && sub_80BFF68(&argslist[(i + j + 1) % gUnknown_03000720][0], &argslist[i][0], (i + j + 1) % gUnknown_03000720) == 1) - break; - } - if (j == gUnknown_03000720 - 1) - sub_80BF55C(argslist[i][0], gUnknown_03000722); - } - } - } -} - -bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) -{ - u8 value; - u8 switchval; - TVShow *tv1; - TVShow *tv2; - - tv1 = *arg1; - tv2 = *arg2; - value = FALSE; - switchval = GetTVChannelByShowType(tv2[gUnknown_03000722].common.kind); - switch (switchval) - { - case 2: - value = sub_80C004C(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); - break; - case 3: - value = sub_80C00B4(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); - break; - case 4: - value = sub_80C0134(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); - break; - } - if (value == TRUE) - { - sub_80BF55C(tv2, gUnknown_03000722); - return TRUE; - } - else - { - return FALSE; - } -} - -u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) -{ - u32 linkTrainerId = GetLinkPlayerTrainerId(idx); - - if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) - return FALSE; - tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; - tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; - tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; - tv2->common.srcTrainerIdHi = linkTrainerId >> 8; - *tv1 = *tv2; - tv1->common.active = 1; - return TRUE; -} - -u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) -{ - u32 linkTrainerId = GetLinkPlayerTrainerId(idx); - if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) - return FALSE; - if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) - return FALSE; - tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo; - tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi; - tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF; - tv2->common.srcTrainerId2Hi = linkTrainerId >> 8; - *tv1 = *tv2; - tv1->common.active = 1; - return TRUE; -} - -u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) -{ - u32 linkTrainerId = GetLinkPlayerTrainerId(idx); - if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) - return FALSE; - tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; - tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; - tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; - tv2->common.srcTrainerIdHi = linkTrainerId >> 8; - *tv1 = *tv2; - tv1->common.active = 1; - tv1->common.var16[0] = 1; - return TRUE; -} - -s8 sub_80C019C(TVShow tvShows[]) -{ - u8 i; - for (i = 0; i < 24; i++) - { - if (tvShows[i].common.active == 0 && (u8)(tvShows[i].common.kind - 1) < 60) - return i; - } - return -1; -} - -#ifdef NONMATCHING -void sub_80C01D4(void) -{ - u16 i; - for (i=0; i<24; i++) - { - switch (gSaveBlock1.tvShows[i].common.kind) - { - case 0: - case TVSHOW_RECENT_HAPPENINGS: - case TVSHOW_SMART_SHOPPER: - case TVSHOW_MASS_OUTBREAK: - break; - case TVSHOW_FAN_CLUB_LETTER: - sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubLetter.species, i); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubOpinions.var02, i); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80C03C8((&gSaveBlock1.tvShows[i])->unkShow04.var06, i); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.var1C, i); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainer.species, i); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.defeatedSpecies, i); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonToday.species, i); - break; - case TVSHOW_POKEMON_TODAY_FAILED: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species2, i); - break; - case TVSHOW_FISHING_ADVICE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonAngler.var04, i); - break; - case TVSHOW_WORLD_OF_MASTERS: - sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var08, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var04, i); - break; - default: - sub_80C03A8(i); - } - } -} -#else -__attribute__((naked)) -void sub_80C01D4(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - movs r6, 0\n\ -_080C01D8:\n\ - ldr r0, _080C01F8 @ =gSaveBlock1\n\ - lsls r2, r6, 3\n\ - adds r1, r2, r6\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldr r0, _080C01FC @ =0x00002738\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x29\n\ - bls _080C01EE\n\ - b _default\n\ -_080C01EE:\n\ - lsls r0, 2\n\ - ldr r1, _080C0200 @ =_080C0204\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080C01F8: .4byte gSaveBlock1\n\ -_080C01FC: .4byte 0x00002738\n\ -_080C0200: .4byte _080C0204\n\ - .align 2, 0\n\ -_080C0204:\n\ - .4byte _break\n\ - .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\ - .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\ - .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\ - .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\ - .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\ - .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\ - .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\ - .4byte _break @ TVSHOW_SMART_SHOPPER\n\ - .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\ - .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\ - .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _break @ TVSHOW_MASS_OUTBREAK\n\ -_fanclubLetter:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02B8: .4byte gSaveBlock1 + 0x2738\n\ -_fanclubOpinions:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02C8: .4byte gSaveBlock1 + 0x2738\n\ -_showtype4:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x6]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02D8: .4byte gSaveBlock1 + 0x2738\n\ -_nameRater:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x2]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x1C]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02F4: .4byte gSaveBlock1 + 0x2738\n\ -_bravoTrainerContest:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0304: .4byte gSaveBlock1 + 0x2738\n\ -_bravoTrainerTower:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xA]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x14]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0320: .4byte gSaveBlock1 + 0x2738\n\ -_pokemonTodayS:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x10]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0330: .4byte gSaveBlock1 + 0x2738\n\ -_pokemonTodayF:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xC]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0xE]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C034C: .4byte gSaveBlock1 + 0x2738\n\ -_fishing:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x4]\n\ -_checkSpecies1:\n\ - lsls r1, r6, 24\n\ - lsrs r1, 24\n\ - bl sub_80C03C8\n\ - b _break\n\ - .align 2, 0\n\ -_080C0364: .4byte gSaveBlock1 + 0x2738\n\ -_worldOfMasters:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x8]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x4]\n\ -_checkSpecies2:\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - b _break\n\ - .align 2, 0\n\ -_080C0388: .4byte gSaveBlock1 + 0x2738\n\ -_default:\n\ - lsls r0, r6, 24\n\ - lsrs r0, 24\n\ - bl sub_80C03A8\n\ -_break:\n\ - adds r0, r6, 0x1\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - cmp r6, 0x17\n\ - bhi _080C03A0\n\ - b _080C01D8\n\ -_080C03A0:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ -.syntax divided\n"); -} -#endif - -void sub_80C03A8(u8 showidx) -{ - gSaveBlock1.tvShows[showidx].common.active = 0; -} - -void sub_80C03C8(u16 species, u8 showidx) -{ - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) - gSaveBlock1.tvShows[showidx].common.active = 0; -} - -void sub_80C0408(void) -{ - u16 i; - - if (FlagGet(FLAG_SYS_GAME_CLEAR) == TRUE) - return; - for (i = 0; i < 24; i++) - { - if (gSaveBlock1.tvShows[i].common.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE) - gSaveBlock1.tvShows[i].common.active = 0; - else if (gSaveBlock1.tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK) - gSaveBlock1.tvShows[i].common.active = 0; - } -} - -void sub_80C045C(void) -{ - u8 i; - - for (i = 0; i < 5; i++) - { - if (GetTVChannelByShowType(gSaveBlock1.tvShows[i].common.kind) == 2) - gSaveBlock1.tvShows[i].common.active = 0; - } -} - -void sub_80C04A0(void) -{ - s8 showIdx; - s8 count; - count = 0; - - for (showIdx = 5; showIdx < 24; showIdx++) - { - if (gSaveBlock1.tvShows[showIdx].common.kind == 0) - count++; - } - for (showIdx = 0; showIdx < 5 - count; showIdx++) - sub_80BF55C(gSaveBlock1.tvShows, showIdx+5); -} - -void sub_80C05C4(struct PokeNews[16], struct PokeNews[16], struct PokeNews[16], struct PokeNews[16]); -void sub_80C0750(void); -void sub_80C0788(void); -s8 sub_80C0730(struct PokeNews[16], u8); -void sub_80C06BC(struct PokeNews *[16], struct PokeNews *[16]); - -void sub_80C0514(void *a0, u32 a1, u8 a2) -{ - ewramStruct_02007000 *struct02007000; - u8 i; - - for (i = 0; i < 4; i++) - memcpy(gUnknown_02007000.pokeNews[i], a0 + i * a1, 64); - struct02007000 = &gUnknown_02007000; - switch (a2) - { - case 0: - sub_80C05C4(gSaveBlock1.pokeNews, struct02007000->pokeNews[1], struct02007000->pokeNews[2], struct02007000->pokeNews[3]); - break; - case 1: - sub_80C05C4(struct02007000->pokeNews[0], gSaveBlock1.pokeNews, struct02007000->pokeNews[2], struct02007000->pokeNews[3]); - break; - case 2: - sub_80C05C4(struct02007000->pokeNews[0], struct02007000->pokeNews[1], gSaveBlock1.pokeNews, struct02007000->pokeNews[3]); - break; - case 3: - sub_80C05C4(struct02007000->pokeNews[0], struct02007000->pokeNews[1], struct02007000->pokeNews[2], gSaveBlock1.pokeNews); - break; - } - sub_80C0750(); - sub_80C0788(); -} - -void sub_80C05C4(struct PokeNews a0[16], struct PokeNews a1[16], struct PokeNews a2[16], struct PokeNews a3[16]) -{ - u8 i; - u8 j; - u8 k; - struct PokeNews ** arglist[4]; - - arglist[0] = &a0; - arglist[1] = &a1; - arglist[2] = &a2; - arglist[3] = &a3; - gUnknown_03000721 = GetLinkPlayerCount(); - for (i = 0; i < 16; i++) - { - for (j = 0; j < gUnknown_03000721; j++) - { - gUnknown_03000722 = sub_80C0730(*arglist[j], i); - if (gUnknown_03000722 != -1) - { - for (k = 0; k < gUnknown_03000721-1; k++) - { - gUnknown_03005D38.var0 = sub_80BEBC8(*arglist[(j + k + 1) % gUnknown_03000721]); - if (gUnknown_03005D38.var0 != -1) - sub_80C06BC(arglist[(j + k + 1) % gUnknown_03000721], arglist[j]); - } - } - } - } -} - -void sub_80C06BC(struct PokeNews *arg0[16], struct PokeNews *arg1[16]) -{ - struct PokeNews *str0; - struct PokeNews *str1; - - str0 = arg0[0]; - str1 = arg1[0]; - str1 += gUnknown_03000722; - sub_80C06E8(str0, str1, gUnknown_03005D38.var0); -} - -bool8 sub_80C06E8(struct PokeNews *arg0, struct PokeNews *arg1, s8 arg2) -{ - u8 i; - - if (arg1->kind == 0) - return FALSE; - for (i = 0; i < 16; i++) - { - if (arg0[i].kind == arg1->kind) - return FALSE; - } - arg0[arg2].kind = arg1->kind; - arg0[arg2].state = 1; - arg0[arg2].days = arg1->days; - return TRUE; -} - -s8 sub_80C0730(struct PokeNews *arg0, u8 arg1) -{ - if (arg0[arg1].kind == 0) - return -1; - return arg1; -} - -void sub_80C0750(void) -{ - u8 i; - - for (i = 0; i < 16; i++) - { - if (gSaveBlock1.pokeNews[i].kind > 3) - sub_80BEC10(i); - } - sub_80BEC40(); -} - -void sub_80C0788(void) -{ - u8 i; - - if (FlagGet(FLAG_SYS_GAME_CLEAR) != 1) - { - for (i = 0; i < 16; i++) - gSaveBlock1.pokeNews[i].state = 0; - } -} - -void DoTVShow(void) -{ - if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.active != 0) - { - switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.kind) - { - case TVSHOW_FAN_CLUB_LETTER: - DoTVShowPokemonFanClubLetter(); - break; - case TVSHOW_RECENT_HAPPENINGS: - DoTVShowRecentHappenings(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - DoTVShowPokemonFanClubOpinions(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - nullsub_22(); - break; - case TVSHOW_MASS_OUTBREAK: - DoTVShowPokemonNewsMassOutbreak(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - DoTVShowBravoTrainerPokemonProfile(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - DoTVShowBravoTrainerBattleTowerProfile(); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - DoTVShowPokemonTodaySuccessfulCapture(); - break; - case TVSHOW_SMART_SHOPPER: - DoTVShowTodaysSmartShopper(); - break; - case TVSHOW_NAME_RATER_SHOW: - DoTVShowTheNameRaterShow(); - break; - case TVSHOW_POKEMON_TODAY_FAILED: - DoTVShowPokemonTodayFailedCapture(); - break; - case TVSHOW_FISHING_ADVICE: - DoTVShowPokemonAngler(); - break; - case TVSHOW_WORLD_OF_MASTERS: - DoTVShowTheWorldOfMasters(); - break; - } - } -} - -void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) -{ - StringCopy(dest, src); - if (language < LANGUAGE_ENGLISH) - ConvertInternationalString(dest, LANGUAGE_JAPANESE); -} - -void DoTVShowBravoTrainerPokemonProfile(void) -{ - struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch(state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); - CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); - sub_80BEF10(2, bravoTrainer->contestRank); - if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[bravoTrainer->species], bravoTrainer->pokemonNickname)) - sTVShowState = 8; - else - sTVShowState = 1; - break; - case 1: - StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); - TVShowConvertInternationalString(gStringVar2, bravoTrainer->pokemonNickname, bravoTrainer->var1f); - CopyContestCategoryToStringVar(2, bravoTrainer->contestCategory); - sTVShowState = 2; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); - if (bravoTrainer->contestResult == 0) // placed first - sTVShowState = 3; - else - sTVShowState = 4; - break; - case 3: - TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); - EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]); - sub_80BF088(2, bravoTrainer->contestResult + 1); - sTVShowState = 5; - break; - case 4: - TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); - EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]); - sub_80BF088(2, bravoTrainer->contestResult + 1); - sTVShowState = 5; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); - CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); - EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]); - if (bravoTrainer->var14) - sTVShowState = 6; - else - sTVShowState = 7; - break; - case 6: - StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); - StringCopy(gStringVar2, gMoveNames[bravoTrainer->var14]); - EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]); - sTVShowState = 7; - break; - case 7: - TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); - StringCopy(gStringVar2, gSpeciesNames[bravoTrainer->species]); - TVShowDone(); - break; - case 8: - StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); - sTVShowState = 2; - break; - } - ShowFieldMessage(gTVBravoTrainerTextGroup[state]); -} - -void DoTVShowBravoTrainerBattleTowerProfile(void) -{ - struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainerTower; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch(state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); - StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]); - if (bravoTrainerTower->var16 >= 7) - sTVShowState = 1; - else - sTVShowState = 2; - break; - case 1: - sub_80BF088(0, bravoTrainerTower->btLevel); - sub_80BF088(1, bravoTrainerTower->var16); - if (bravoTrainerTower->var1c == 1) - sTVShowState = 3; - else - sTVShowState = 4; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); - sub_80BF088(1, bravoTrainerTower->var16 + 1); - if (bravoTrainerTower->var1b == 0) - sTVShowState = 5; - else - sTVShowState = 6; - break; - case 3: - TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); - StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]); - if (bravoTrainerTower->var1b == 0) - sTVShowState = 5; - else - sTVShowState = 6; - break; - case 4: - TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); - StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]); - if (bravoTrainerTower->var1b == 0) - sTVShowState = 5; - else - sTVShowState = 6; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); - sTVShowState = 11; - break; - case 6: - TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); - sTVShowState = 11; - break; - case 7: - sTVShowState = 11; - break; - case 8: - case 9: - case 10: - TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); - sTVShowState = 11; - break; - case 11: - EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]); - if (bravoTrainerTower->var1b == 0) - sTVShowState = 12; - else - sTVShowState = 13; - break; - case 12: - case 13: - EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]); - TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language); - TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language); - sTVShowState = 14; - break; - case 14: - TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); - StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]); - TVShowDone(); - break; - } - ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[state]); -} - -void DoTVShowTodaysSmartShopper(void) -{ - struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gSpecialVar_0x8004].smartshopperShow; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch(state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); - GetMapSectionName(gStringVar2, smartShopper->shopLocation, 0); - if (smartShopper->itemAmounts[0] >= 0xff) - sTVShowState = 11; - else - sTVShowState = 1; - break; - case 1: - TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); - StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name); - sub_80BF088(2, smartShopper->itemAmounts[0]); - sTVShowState += (Random() % 4) + 1; - break; - case 2: - case 4: - case 5: - if (smartShopper->itemIds[1] != 0) - sTVShowState = 6; - else - sTVShowState = 10; - break; - case 3: - sub_80BF088(2, smartShopper->itemAmounts[0] + 1); - if (smartShopper->itemIds[1] != 0) - sTVShowState = 6; - else - sTVShowState = 10; - break; - case 6: - StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[1])->name); - sub_80BF088(2, smartShopper->itemAmounts[1]); - if (smartShopper->itemIds[2] != 0) - sTVShowState = 7; - else if (smartShopper->priceReduced == 1) - sTVShowState = 8; - else - sTVShowState = 9; - break; - case 7: - StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[2])->name); - sub_80BF088(2, smartShopper->itemAmounts[2]); - if (smartShopper->priceReduced == 1) - sTVShowState = 8; - else - sTVShowState = 9; - break; - case 8: - if (smartShopper->itemAmounts[0] < 0xff) - sTVShowState = 9; - else - sTVShowState = 12; - break; - case 9: - sub_80BF154(1, smartShopper); - TVShowDone(); - break; - case 10: - if (smartShopper->priceReduced == 1) - sTVShowState = 8; - else - sTVShowState = 9; - break; - case 11: - TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); - StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name); - if (smartShopper->priceReduced == 1) - sTVShowState = 8; - else - sTVShowState = 12; - break; - case 12: - TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); - TVShowDone(); - break; - } - ShowFieldMessage(gTVSmartShopperTextGroup[state]); -} - -void DoTVShowTheNameRaterShow(void) -{ - struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004].nameRaterShow; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch (state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); - StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]); - TVShowConvertInternationalString(gStringVar3, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); - sTVShowState = sub_80BF7E8(nameRaterShow) + 1; - break; - case 1: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - if (nameRaterShow->random == 0) - sTVShowState = 9; - else if (nameRaterShow->random == 1) - sTVShowState = 10; - else if (nameRaterShow->random == 2) - sTVShowState = 11; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); - if (nameRaterShow->random == 0) - sTVShowState = 9; - else if (nameRaterShow->random == 1) - sTVShowState = 10; - else if (nameRaterShow->random == 2) - sTVShowState = 11; - break; - case 9: - case 10: - case 11: - sub_80BF820(0, 1, 0, 1, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); - sub_80BF820(0, 0, 0, 1, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); - sTVShowState = 12; - break; - case 13: - sub_80BF820(0, 0, 3, 1, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); - sub_80BF820(0, 0, 2, 0, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->language); - TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); - sTVShowState = 14; - break; - case 14: - sub_80BF820(0, 0, 3, 0, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->language); - sub_80BF820(0, 0, 2, 1, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); - sTVShowState = 18; - break; - case 15: - sub_80BF820(1, 0, 2, 1, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage); - StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]); - sub_80BF820(2, 0, 3, 2, nameRaterShow->species, nameRaterShow); - sTVShowState = 16; - break; - case 16: - sub_80BF820(0, 0, 3, 1, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); - sub_80BF820(0, 0, 2, 2, nameRaterShow->species, nameRaterShow); - sTVShowState = 17; - break; - case 17: - sub_80BF820(1, 0, 2, 1, 0, nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage); - sub_80BF820(2, 0, 3, 2, nameRaterShow->var1C, nameRaterShow); - StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->var1C]); - sTVShowState = 18; - break; - case 12: - state = 18; - sTVShowState = 18; - case 18: - TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar2, nameRaterShow->trainerName, nameRaterShow->language); - TVShowDone(); - break; - } - ShowFieldMessage(gTVNameRaterTextGroup[state]); -} - -void DoTVShowPokemonTodaySuccessfulCapture(void) -{ - struct TVShowPokemonToday *pokemonToday = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonToday; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch (state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); - StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); - TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); - if (pokemonToday->ball == ITEM_MASTER_BALL) - sTVShowState = 5; - else - sTVShowState = 1; - break; - case 1: - sTVShowState = 2; - break; - case 2: - StringCopy(gStringVar2, ItemId_GetItem(pokemonToday->ball)->name); - sub_80BF088(2, pokemonToday->var12); - if (pokemonToday->var12 < 4) - sTVShowState = 3; - else - sTVShowState = 4; - break; - case 3: - TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); - StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); - TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); - sTVShowState = 6; - break; - case 4: - sTVShowState = 6; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); - StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); - sTVShowState = 6; - break; - case 6: - TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); - StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); - TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); - sTVShowState += (Random() % 4) + 1; - break; - case 7: - case 8: - StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]); - TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2); - sub_80BF638(2, pokemonToday->species); - sTVShowState = 11; - break; - case 9: - case 10: - StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]); - TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2); - sTVShowState = 11; - break; - case 11: - TVShowDone(); - break; - } - ShowFieldMessage(gTVPokemonTodayTextGroup[state]); -} - -void DoTVShowPokemonTodayFailedCapture(void) -{ - struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonTodayFailed; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch (state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); - StringCopy(gStringVar2, gSpeciesNames[pokemonTodayFailed->species]); - sTVShowState = 1; - break; - case 1: - TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); - GetMapSectionName(gStringVar2, pokemonTodayFailed->var12, 0); - StringCopy(gStringVar3, gSpeciesNames[pokemonTodayFailed->species2]); - if (pokemonTodayFailed->var11 == 1) - sTVShowState = 3; - else - sTVShowState = 2; - break; - case 2: - case 3: - TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); - sub_80BF088(1, pokemonTodayFailed->var10); - if ((Random() % 3) == 0) - sTVShowState = 5; - else - sTVShowState = 4; - break; - case 4: - case 5: - TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); - sTVShowState = 6; - break; - case 6: - TVShowDone(); - break; - } - ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[state]); -} - -void DoTVShowPokemonFanClubLetter(void) -{ - struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubLetter; - u8 state; - u16 rval; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch (state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, fanclubLetter->playerName, fanclubLetter->language); - StringCopy(gStringVar2, gSpeciesNames[fanclubLetter->species]); - sTVShowState = 50; - break; - case 1: - rval = (Random() % 4) + 1; - if (rval == 1) - sTVShowState = 2; - else - sTVShowState = rval + 2; - break; - case 2: - sTVShowState = 51; - break; - case 3: - sTVShowState += (Random() % 3) + 1; - break; - case 4: - case 5: - case 6: - sub_80BF79C((TVShow *)fanclubLetter); - sTVShowState = 7; - break; - case 7: - rval = (Random() % 0x1f) + 0x46; - sub_80BF088(2, rval); - TVShowDone(); - break; - case 50: - ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2); - ShowFieldMessage(gStringVar4); - sTVShowState = 1; - return; - case 51: - ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2); - ShowFieldMessage(gStringVar4); - sTVShowState = 3; - return; - } - ShowFieldMessage(gTVFanClubTextGroup[state]); -} - -void DoTVShowRecentHappenings(void) -{ - struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gSpecialVar_0x8004].recentHappenings; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch (state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, recentHappenings->playerName, recentHappenings->language); - sub_80BF79C((TVShow *)recentHappenings); - sTVShowState = 50; - break; - case 1: - sTVShowState += 1 + (Random() % 3); - break; - case 2: - case 3: - case 4: - sTVShowState = 5; - break; - case 5: - TVShowDone(); - break; - case 50: - ConvertEasyChatWordsToString(gStringVar4, recentHappenings->var04, 2, 2); - ShowFieldMessage(gStringVar4); - sTVShowState = 1; - return; - } - ShowFieldMessage(gTVRecentHappeningsTextGroup[state]); -} - -void DoTVShowPokemonFanClubOpinions(void) -{ - struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubOpinions; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch (state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); - StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]); - TVShowConvertInternationalString(gStringVar3, fanclubOpinions->var10, fanclubOpinions->var0E); - sTVShowState = fanclubOpinions->var04B + 1; - break; - case 1: - case 2: - case 3: - TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); - StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]); - EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[0]); - sTVShowState = 4; - break; - case 4: - TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); - EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[1]); - TVShowDone(); - break; - } - ShowFieldMessage(gTVFanClubOpinionsTextGroup[state]); -} - -void nullsub_22(void) -{ -} - -void DoTVShowPokemonNewsMassOutbreak(void) -{ - struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak; - - GetMapSectionName(gStringVar1, massOutbreak->locationMapNum, 0); - StringCopy(gStringVar2, gSpeciesNames[massOutbreak->species]); - TVShowDone(); - StartMassOutbreak(); - ShowFieldMessage(gTVPokemonOutbreakTextGroup[sTVShowState]); -} - -void DoTVShowInSearchOfTrainers(void) -{ - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch (state) - { - case 0: - GetMapSectionName(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); - if (gSaveBlock1.gabbyAndTyData.battleNum > 1) - sTVShowState = 1; - else - sTVShowState = 2; - break; - case 1: - sTVShowState = 2; - break; - case 2: - if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) - sTVShowState = 4; - else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) - sTVShowState = 5; - else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) - sTVShowState = 6; - else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) - sTVShowState = 7; - else - sTVShowState = 3; - break; - case 3: - StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.lastMove]); - StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - sTVShowState = 8; - break; - case 4: - case 5: - case 6: - case 7: - sTVShowState = 8; - break; - case 8: - EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); - StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gSpecialVar_Result = 1; - sTVShowState = 0;; - TakeTVShowInSearchOfTrainersOffTheAir(); - break; - } - ShowFieldMessage(gTVGabbyAndTyTextGroup[state]); -} - -void DoTVShowPokemonAngler(void) -{ - struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonAngler; - u8 state; - - gSpecialVar_Result = 0; - if (pokemonAngler->var02 < pokemonAngler->var03) - sTVShowState = 0; - else - sTVShowState = 1; - state = sTVShowState; - switch (state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, pokemonAngler->playerName, pokemonAngler->language); - StringCopy(gStringVar2, gSpeciesNames[pokemonAngler->var04]); - sub_80BF088(2, pokemonAngler->var03); - TVShowDone(); - break; - case 1: - TVShowConvertInternationalString(gStringVar1, pokemonAngler->playerName, pokemonAngler->language); - StringCopy(gStringVar2, gSpeciesNames[pokemonAngler->var04]); - sub_80BF088(2, pokemonAngler->var02); - TVShowDone(); - break; - } - ShowFieldMessage(gTVFishingGuruAdviceTextGroup[state]); -} - -void DoTVShowTheWorldOfMasters(void) -{ - struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[gSpecialVar_0x8004].worldOfMasters; - u8 state; - - gSpecialVar_Result = 0; - state = sTVShowState; - switch (state) - { - case 0: - TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName, - worldOfMasters->language); - sub_80BF088(1, worldOfMasters->var06); - sub_80BF088(2, worldOfMasters->var02); - sTVShowState = 1; - break; - case 1: - StringCopy(gStringVar1, gSpeciesNames[worldOfMasters->var08]); - sTVShowState = 2; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName, - worldOfMasters->language); - GetMapSectionName(gStringVar2, worldOfMasters->var0a, 0); - StringCopy(gStringVar3, gSpeciesNames[worldOfMasters->var04]); - TVShowDone(); - break; - } - ShowFieldMessage(gTVWorldOfMastersTextGroup[state]); -} - -void TVShowDone(void) -{ - gSpecialVar_Result = 1; - sTVShowState = 0; - gSaveBlock1.tvShows[gSpecialVar_0x8004].common.active = 0; -} - -void ResetTVShowState(void) -{ - sTVShowState = 0; -} |