diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_2.c | 25 | ||||
-rw-r--r-- | src/easy_chat.c | 6 | ||||
-rw-r--r-- | src/fieldmap.c | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | src/tv.c | 1116 |
4 files changed, 931 insertions, 224 deletions
diff --git a/src/battle_2.c b/src/battle_2.c index 79d62ce69..17a583441 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -72,31 +72,6 @@ struct UnknownStruct10 u8 filler4[8]; }; -struct UnknownStruct11 -{ - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 unk5_0:1; - u8 unk5_1:1; - u16 unk6; - u8 unk8[10]; - u8 unk12; - u8 unk13; - u8 unk14[10]; - u8 filler1E[2]; - u16 unk20; - u16 unk22; - u16 unk24; - u16 unk26; - u16 unk28; - u8 unk2A[10]; - u8 filler34[2]; - u8 unk36[10]; -}; - struct UnknownStruct12 { u32 unk0; diff --git a/src/easy_chat.c b/src/easy_chat.c index b21b00368..b0168d3bc 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -216,15 +216,15 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) { { case 5: c = 6; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x04); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x04); break; case 7: c = 2; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x1C); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x1C); break; case 8: c = 1; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x02); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); break; default: diff --git a/src/fieldmap.c b/src/fieldmap.c index 0301115d5..46b996e52 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -2,13 +2,6 @@ #include "fieldmap.h" #include "palette.h" -struct BackupMapData -{ - s32 width; - s32 height; - u16 *map; -}; - extern struct MapHeader * const get_mapheader_by_bank_and_number(u8, u8); extern void mapheader_run_script_with_tag_x1(void); extern void sub_80BB970(struct MapEvents *); @@ -32,7 +25,6 @@ struct Coords32 }; extern const struct Coords32 gUnknown_0821664C[]; -extern struct BackupMapData gUnknown_03004870; EWRAM_DATA static u16 gUnknown_02029828[0x2800] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; diff --git a/src/tv.c b/src/tv.c index d2e38c088..566d547a6 100644..100755 --- a/src/tv.c +++ b/src/tv.c @@ -3,7 +3,9 @@ #include "tv.h" #include "data2.h" #include "event_data.h" +#include "fieldmap.h" #include "field_message_box.h" +#include "field_camera.h" #include "flags.h" #include "rng.h" #include "string_util.h" @@ -14,6 +16,7 @@ #include "rom4.h" #include "map_constants.h" #include "strings.h" +#include "battle.h" #include "link.h" #include "easy_chat.h" #include "item.h" @@ -26,22 +29,7 @@ struct UnkTvStruct s8 var0; }; -struct UnkBattleStruct { - u16 var00; - u8 var02[3]; - u8 var05_0:1; - u8 var05_1:1; - u8 var05_pad2:6; - u16 var06; - u8 pad08[24]; - u16 var20; - u8 pad22[6]; - u16 var28; - u8 var2a[11]; - u8 var35; - u8 var36[11]; -}; -extern struct UnkBattleStruct gUnknown_030042E0; +extern struct UnknownStruct11 gUnknown_030042E0; extern u8 gUnknown_0300430A[11]; struct OutbreakPokemon @@ -104,10 +92,10 @@ void ClearTVShowData(void) u8 showidx; u8 extradataidx; for (showidx=0; showidx<25; showidx++) { - gSaveBlock1.tvShows.shows[showidx].common.var00 = 0; - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + gSaveBlock1.tvShows[showidx].common.var00 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; for (extradataidx=0; extradataidx<34; extradataidx++) { - gSaveBlock1.tvShows.shows[showidx].common.pad02[extradataidx] = 0; + gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0; } } sub_80BEBF4(); @@ -134,7 +122,8 @@ void sub_80BE074(void); void sub_80BE778(void); void sub_80BEB20(void); -asm(".section .text_a"); +u8 sub_80BFB54(u8); + s8 sub_80BF74C(TVShow tvShow[]); void sub_80BF55C(TVShow tvShow[], u8 showidx); @@ -151,7 +140,375 @@ void nullsub_21(void); void sub_80BE188(void); void sub_80BE320(void); -extern u8 GabbyAndTyGetBattleNum(void); +#ifdef NONMATCHING +u8 special_0x44(void) +{ + u8 i; + u8 j; + u8 var01; + TVShow *tvShow; + for (i=5; i<24; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == 0) + { + break; + } + } + i = Random() % i; + j = i; + do + { + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) != 4) + { + var01 = gSaveBlock1.tvShows[i].common.var01; + } else + { + tvShow = &gSaveBlock1.tvShows[i]; + if (tvShow->massOutbreak.var16 != 0) { + continue; + } else { + var01 = tvShow->common.var01; + } + } + if (var01 == 1) + { + return i; + } + } while (i == 0 ? i = 23 : i --, i != j); + return 0xff; +} +#else +__attribute__((naked)) +u8 special_0x44(void) +{ + asm(".syntax unified\n" + " push {r4-r7,lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6,r7}\n" + " movs r4, 0x5\n" + " ldr r1, _080BD874 @ =gSaveBlock1\n" + " ldr r2, _080BD878 @ =0x000027ec\n" + " adds r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, 0\n" + " beq _080BD834\n" + " adds r2, r1, 0\n" + " ldr r1, _080BD87C @ =0x00002738\n" + "_080BD81A:\n" + " adds r0, r4, 0x1\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + " cmp r4, 0x17\n" + " bhi _080BD834\n" + " lsls r0, r4, 3\n" + " adds r0, r4\n" + " lsls r0, 2\n" + " adds r0, r2\n" + " adds r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, 0\n" + " bne _080BD81A\n" + "_080BD834:\n" + " bl Random\n" + " lsls r0, 16\n" + " lsrs r0, 16\n" + " adds r1, r4, 0\n" + " bl __modsi3\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + " mov r8, r4\n" + " ldr r7, _080BD874 @ =gSaveBlock1\n" + " ldr r0, _080BD87C @ =0x00002738\n" + " adds r0, r7\n" + " mov r9, r0\n" + "_080BD850:\n" + " lsls r0, r4, 3\n" + " adds r0, r4\n" + " lsls r6, r0, 2\n" + " adds r5, r6, r7\n" + " ldr r1, _080BD87C @ =0x00002738\n" + " adds r0, r5, r1\n" + " ldrb r0, [r0]\n" + " bl sub_80BFB54\n" + " lsls r0, 24\n" + " lsrs r0, 24\n" + " cmp r0, 0x4\n" + " beq _080BD884\n" + " ldr r2, _080BD880 @ =0x00002739\n" + " adds r0, r5, r2\n" + " ldrb r0, [r0]\n" + " b _080BD890\n" + " .align 2, 0\n" + "_080BD874: .4byte gSaveBlock1\n" + "_080BD878: .4byte 0x000027ec\n" + "_080BD87C: .4byte 0x00002738\n" + "_080BD880: .4byte 0x00002739\n" + "_080BD884:\n" + " mov r0, r9\n" + " adds r1, r6, r0\n" + " ldrh r0, [r1, 0x16]\n" + " cmp r0, 0\n" + " bne _080BD898\n" + " ldrb r0, [r1, 0x1]\n" + "_080BD890:\n" + " cmp r0, 0x1\n" + " bne _080BD898\n" + " adds r0, r4, 0\n" + " b _080BD8AC\n" + "_080BD898:\n" + " cmp r4, 0\n" + " bne _080BD8A0\n" + " movs r4, 0x17\n" + " b _080BD8A6\n" + "_080BD8A0:\n" + " subs r0, r4, 0x1\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + "_080BD8A6:\n" + " cmp r4, r8\n" + " bne _080BD850\n" + " movs r0, 0xFF\n" + "_080BD8AC:\n" + " pop {r3,r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4-r7}\n" + " pop {r1}\n" + " bx r1\n" + ".syntax divided\n"); +} +#endif + +u8 sub_80BDA30(void); + +u8 sub_80BD8B8(void) +{ + u8 retval; + retval = special_0x44(); + if (retval == 0xff) + { + return 0xff; + } + if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.var00 == TVSHOW_MASS_OUTBREAK) + { + return sub_80BDA30(); + } + return retval; +} + +u8 CheckForBigMovieOrEmergencyNewsOnTV(void); +void SetTVMetatilesOnMap(int, int, u16); +bool8 sub_80BECA0(void); +bool8 IsTVShowInSearchOfTrainersAiring(void); + +void UpdateTVScreensOnMap(int a0, int a1) +{ + u8 bigMovieOrEmergencyNewsOnTv; + FlagSet(SYS_TV_WATCH); + bigMovieOrEmergencyNewsOnTv = CheckForBigMovieOrEmergencyNewsOnTV(); + switch (bigMovieOrEmergencyNewsOnTv) + { + case 1: + SetTVMetatilesOnMap(a0, a1, 0x3); + break; + case 2: + break; + default: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + { + SetTVMetatilesOnMap(a0, a1, 0x3); + } + else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) + { + FlagReset(SYS_TV_WATCH); + SetTVMetatilesOnMap(a0, a1, 0x3); + } + } +} + +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 sub_80BDA0C(void) +{ + return gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00; +} + +u8 sub_80BDA30(void) +{ + u8 showIdx; + for (showIdx=0; showIdx<24; showIdx++) + { + if (gSaveBlock1.tvShows[showIdx].common.var00 != 0 && gSaveBlock1.tvShows[showIdx].common.var00 != TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showIdx].common.var01 == 1) + { + return showIdx; + } + } + return 0xff; +} + +u8 special_0x4a(void) +{ + TVShow *tvShow; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + if (tvShow->common.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies) + { + return sub_80BDA30(); + } + 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 = gUnknown_030042E0.unk6; + gSaveBlock1.gabbyAndTyData.mon2 = gUnknown_030042E0.unk26; + gSaveBlock1.gabbyAndTyData.lastMove = gUnknown_030042E0.unk22; + if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) + { + gSaveBlock1.gabbyAndTyData.battleNum ++; + } + gSaveBlock1.gabbyAndTyData.valA_0 = gUnknown_030042E0.unk5_0; + if (gUnknown_030042E0.unk0) + { + gSaveBlock1.gabbyAndTyData.valA_1 = 1; + } else + { + gSaveBlock1.gabbyAndTyData.valA_1 = 0; + } + if (gUnknown_030042E0.unk3) + { + gSaveBlock1.gabbyAndTyData.valA_2 = 1; + } else + { + gSaveBlock1.gabbyAndTyData.valA_2 = 0; + } + if (!gUnknown_030042E0.unk5_1) + { + for (i=0; i<11; i++) + { + if (gUnknown_030042E0.unk36[i] != 0) + { + gSaveBlock1.gabbyAndTyData.valA_3 = 1; + break; + } + } + } else + { + gSaveBlock1.gabbyAndTyData.valA_3 = 1; + } + TakeTVShowInSearchOfTrainersOffTheAir(); + if (gSaveBlock1.gabbyAndTyData.lastMove == 0) + { + FlagSet(1); + } +} + +void sub_80BDC14(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.name; + 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; + } + return gSaveBlock1.gabbyAndTyData.battleNum; +} + +bool8 IsTVShowInSearchOfTrainersAiring(void) +{ + return gSaveBlock1.gabbyAndTyData.valA_4; +} + +bool8 GabbyAndTyGetLastQuote(void) +{ + if (gSaveBlock1.gabbyAndTyData.quote == 0xffff) + { + return FALSE; + } + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); + gSaveBlock1.gabbyAndTyData.quote |= 0xffff; + return TRUE; +} + +u8 sub_80BDD18(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()) { @@ -230,27 +587,27 @@ void sub_80BDEC8(void) { total = 0; sub_80BEB20(); sub_80BE778(); - if (gUnknown_030042E0.var28 == 0) { + if (gUnknown_030042E0.unk28 == 0) { sub_80BE074(); } else { sub_80BE028(); - if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.var28], gUnknown_030042E0.var2a) != 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.unk28], gUnknown_030042E0.unk2A) != 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 += gUnknown_030042E0.var36[i]; + total += gUnknown_030042E0.unk36[i]; } - if (total != 0 || gUnknown_030042E0.var05_1 != 0) { + if (total != 0 || gUnknown_030042E0.unk5_1 != 0) { total = FALSE; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT; show->pokemonToday.var01 = total; - if (gUnknown_030042E0.var05_1 != 0) { + if (gUnknown_030042E0.unk5_1 != 0) { total = 1; item = ITEM_MASTER_BALL; } else { for (i=0; i<11; i++) { - total += gUnknown_030042E0.var36[i]; + total += gUnknown_030042E0.unk36[i]; } if (total > 0xff) { total = 0xff; @@ -260,8 +617,8 @@ void sub_80BDEC8(void) { show->pokemonToday.var12 = total; show->pokemonToday.ball = item; StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName); - StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.var2a); - show->pokemonToday.species = gUnknown_030042E0.var28; + StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.unk2A); + show->pokemonToday.species = gUnknown_030042E0.unk28; sub_80BE138(show); show->pokemonToday.language = GAME_LANGUAGE; show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname); @@ -274,15 +631,15 @@ void sub_80BDEC8(void) { void sub_80BE028(void) { TVShow *buffer; - buffer = &gSaveBlock1.tvShows.unknown_2A98; + buffer = &gSaveBlock1.tvShows[24]; if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + sub_80BF55C(gSaveBlock1.tvShows, 24); buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS); buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; } buffer->worldOfMasters.var02++; - buffer->worldOfMasters.var04 = gUnknown_030042E0.var28; - buffer->worldOfMasters.var08 = gUnknown_030042E0.var06; + buffer->worldOfMasters.var04 = gUnknown_030042E0.unk28; + buffer->worldOfMasters.var08 = gUnknown_030042E0.unk6; buffer->worldOfMasters.var0a = gMapHeader.name; } @@ -300,15 +657,15 @@ void sub_80BE074(void) { total = 0xff; } if (total > 2 && gUnknown_02024D26 == 1) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) { flag = FALSE; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; asm_comment("Here the wrong registers are used to hold the show ID and flag."); show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; show->pokemonTodayFailed.var01 = flag; - show->pokemonTodayFailed.species = gUnknown_030042E0.var06; - show->pokemonTodayFailed.species2 = gUnknown_030042E0.var20; + show->pokemonTodayFailed.species = gUnknown_030042E0.unk6; + show->pokemonTodayFailed.species2 = gUnknown_030042E0.unk20; show->pokemonTodayFailed.var10 = total; show->pokemonTodayFailed.var11 = gUnknown_02024D26; show->pokemonTodayFailed.var12 = gMapHeader.name; @@ -440,9 +797,9 @@ void sub_80BE160(TVShow *show) { void sub_80BE188(void) { TVShow *show; TVShow *buffer; - buffer = &gSaveBlock1.tvShows.unknown_2A98; + buffer = &gSaveBlock1.tvShows[24]; if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; show->bravoTrainer.var01 = 1; show->bravoTrainer.species = buffer->bravoTrainer.species; @@ -451,7 +808,7 @@ void sub_80BE188(void) { show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank; show->bravoTrainer.var14 = buffer->bravoTrainer.var14; - show->bravoTrainer.var13_5 = buffer->bravoTrainer.var13_5; + show->bravoTrainer.contestResult = buffer->bravoTrainer.contestResult; show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; sub_80BE160(show); show->bravoTrainer.language = GAME_LANGUAGE; @@ -462,11 +819,11 @@ void sub_80BE188(void) { void sub_80BE23C(u16 a0) { TVShow *show; - show = &gSaveBlock1.tvShows.unknown_2A98; + show = &gSaveBlock1.tvShows[24]; sub_80BF484(); - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + sub_80BF55C(gSaveBlock1.tvShows, 24); show->bravoTrainer.var14 = a0; show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; } @@ -474,10 +831,10 @@ void sub_80BE23C(u16 a0) { void sub_80BE284(u8 a0) { TVShow *show; - show = &gSaveBlock1.tvShows.unknown_2A98; - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + show = &gSaveBlock1.tvShows[24]; + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1) { - show->bravoTrainer.var13_5 = a0; + show->bravoTrainer.contestResult = a0; show->bravoTrainer.contestCategory = gScriptContestCategory; show->bravoTrainer.contestRank = gScriptContestRank; show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); @@ -487,13 +844,13 @@ void sub_80BE284(u8 a0) { void sub_80BE320(void) { TVShow *show; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; show->bravoTrainerTower.var01 = 1; StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName); StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC); show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480; - show->bravoTrainerTower.winningMove = gSaveBlock2.filler_A8.var_482; + show->bravoTrainerTower.defeatedSpecies = gSaveBlock2.filler_A8.var_482; show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD; if (gSaveBlock2.filler_A8.var_4D0 == 0) { @@ -513,11 +870,11 @@ void sub_80BE3BC(void) { rval = sub_80BF77C(0x5555); if (rval == 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { sub_80BF20C(); if (gUnknown_02038724[0].item_amount >= 20) { - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER; tvShow->smartshopperShow.var01 = rval; tvShow->smartshopperShow.shopLocation = gMapHeader.name; @@ -561,7 +918,7 @@ void sub_80BE478(void) return; } - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW; tvShow->nameRaterShow.var01 = 1; @@ -588,7 +945,7 @@ void StartMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species; gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum; @@ -610,7 +967,7 @@ void sub_80BE5FC(void) TVShow *tvShow; u16 species; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER; tvShow->fanclubLetter.var01 = 1; @@ -626,7 +983,7 @@ void sub_80BE65C(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS; tvShow->recentHappenings.var01 = 1; @@ -642,7 +999,7 @@ void sub_80BE6A0(void) TVShow *tvShow; u8 monIndex; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; tvShow->fanclubOpinions.var01 = 1; @@ -680,7 +1037,7 @@ void sub_80BE778(void) for (i = 0; i < 24; i++) { - if (gSaveBlock1.tvShows.shows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) + if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) { return; } @@ -691,7 +1048,7 @@ void sub_80BE778(void) return; } - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 == -1) { return; @@ -707,7 +1064,7 @@ void sub_80BE778(void) val2 = gUnknown_03005D38.var0; - tvShow = &gSaveBlock1.tvShows.shows[val2]; + tvShow = &gSaveBlock1.tvShows[val2]; tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK; tvShow->massOutbreak.var01 = 1; @@ -764,8 +1121,8 @@ void sub_80BE8EC(u16 arg0) TVShow *tvShow; if (gSaveBlock1.outbreakPokemonSpecies == 0) { for (showidx=0; showidx<24; showidx++) { - if (gSaveBlock1.tvShows.shows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows.shows[showidx].massOutbreak.var01 == 0x01) { - tvShow = &(gSaveBlock1.tvShows.shows[showidx]); + if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) { + tvShow = &(gSaveBlock1.tvShows[showidx]); if (tvShow->massOutbreak.var16 < arg0) tvShow->massOutbreak.var16 = 0; else @@ -811,9 +1168,9 @@ void sub_80BE97C(bool8 flag) void sub_80BE9D4() { TVShow *show; - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) { - show = &(gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]); + show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]); #ifdef NONMATCHING show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE; show->pokemonAngler.var01 = 0; @@ -839,18 +1196,17 @@ void sub_80BEA50(u16 var) gUnknown_020387E0 = var; } -void sub_80BF55C(TVShow tvShow[], u8 showidx); void sub_80BEA88(void); void sub_80BEA5C(u16 arg0) { TVShow *unk_2a98; - unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; + unk_2a98 = &gSaveBlock1.tvShows[24]; if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS) { if (unk_2a98->worldOfMasters.var02 < 20) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18); + sub_80BF55C(gSaveBlock1.tvShows, 0x18); } else { @@ -863,14 +1219,14 @@ void sub_80BEA88(void) TVShow *unk_2a98; TVShow *tvShow; u8 rval; - unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; + unk_2a98 = &gSaveBlock1.tvShows[24]; rval = sub_80BF77C(0xFFFF); if (rval == 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) { - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; tvShow->worldOfMasters.var01 = rval; tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02; @@ -1136,7 +1492,7 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) void SetContestCategoryStringVarForInterview(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); } @@ -1196,7 +1552,7 @@ bool8 sub_80BF1B4(u8 showIdx) TVShow *tvShows; u8 i; u32 trainerId; - tvShows = gSaveBlock1.tvShows.shows; + tvShows = gSaveBlock1.tvShows; trainerId = GetPlayerTrainerId(); for (i=5; i<24; i++) { @@ -1237,15 +1593,15 @@ void sub_80BF25C(u8 showType) u8 i; for (i=0; i<5; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == showType) { - if(gSaveBlock1.tvShows.shows[i].common.var01 == 1) + if (gSaveBlock1.tvShows[i].common.var00 == showType) { + if(gSaveBlock1.tvShows[i].common.var01 == 1) { gScriptResult = 1; } else { - sub_80BF55C(gSaveBlock1.tvShows.shows, i); - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF55C(gSaveBlock1.tvShows, i); + sub_80BF588(gSaveBlock1.tvShows); sub_80BF6D8(); } return; @@ -1288,7 +1644,7 @@ void sub_80BF334(void) sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); if (gScriptResult == 0) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubLetter.pad04, 6); } } @@ -1298,7 +1654,7 @@ void sub_80BF3A4(void) TVShow *show; sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->recentHappenings.var04, 6); } } @@ -1311,7 +1667,7 @@ void sub_80BF3DC(void) StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); StringGetEnd10(gStringVar2); - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubOpinions.var1C, 2); } } @@ -1331,7 +1687,7 @@ void sub_80BF484(void) TVShow *show; sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->bravoTrainer.var04, 2); } } @@ -1341,7 +1697,7 @@ void sub_80BF4BC(void) TVShow *show; sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later } } @@ -1397,7 +1753,7 @@ void sub_80BF588(TVShow tvShow[]) for (showidx2=showidx+1; showidx2<24; showidx2++) { if (tvShow[showidx2].common.var00 != 0) { tvShow[showidx] = tvShow[showidx2]; - sub_80BF55C(gSaveBlock1.tvShows.shows, showidx2); + sub_80BF55C(gSaveBlock1.tvShows, showidx2); break; } } @@ -1433,7 +1789,7 @@ u16 sub_80BF674(u16 species) void sub_80BF6D8(void) { - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); gSpecialVar_0x8006 = gUnknown_03005D38.var0; if (gUnknown_03005D38.var0 == -1) gScriptResult = 1; @@ -1549,7 +1905,7 @@ bool8 sub_80BF974(void) u8 i; for (i=0; i<5; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == gSpecialVar_0x8004) + if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004) return TRUE; } return FALSE; @@ -1803,14 +2159,15 @@ void sub_80BFD20(void) } extern u8 ewram[]; -#define gUnknown_02007000 (*(struct ewramStruct_0207000 *)(ewram + 0x7000)) +#define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000)) extern u8 gUnknown_020387E4; -struct ewramStruct_0207000 { - struct SaveTVStruct tvshows[4]; -}; +typedef union ewramStruct_02007000 { + TVShow tvshows[4][25]; + struct UnknownSaveStruct2ABC unknown_2abc[4][16]; +} ewramStruct_02007000; -void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3); +void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]); void sub_80C04A0(void); void sub_80C01D4(void); @@ -1819,44 +2176,45 @@ void sub_80C0408(void); void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) { u8 i; - struct ewramStruct_0207000 *ewramTVShows; + ewramStruct_02007000 *ewramTVShows; for (i=0; i<4; i++) { - memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], sizeof(struct SaveTVStruct)); + 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]); + 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]); + 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]); + 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); + sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], gSaveBlock1.tvShows); break; } - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF588(gSaveBlock1.tvShows); sub_80C04A0(); - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF588(gSaveBlock1.tvShows); sub_80C01D4(); sub_80C0408(); } extern u8 gUnknown_03000720; +extern u8 gUnknown_03000721; extern s8 gUnknown_03000722; s8 sub_80C019C(TVShow tvShows[]); -bool8 sub_80BFF68(struct SaveTVStruct ** tv1, struct SaveTVStruct ** tv2, u8 idx); +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(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) +void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]) { u8 i, j; - struct SaveTVStruct ** argslist[4]; + TVShow ** argslist[4]; argslist[0] = &arg0; argslist[1] = &arg1; argslist[2] = &arg2; @@ -1866,20 +2224,20 @@ void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct Sa for (i=0; i<gUnknown_03000720; i++) { if (i == 0) gUnknown_020387E4 = i; - gUnknown_03000722 = sub_80C019C(argslist[i][0]->shows); + 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]->shows); - if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(argslist[(i + j + 1) % gUnknown_03000720], argslist[i], (i + j + 1) % gUnknown_03000720) == 1) { + 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]->shows, gUnknown_03000722); + sub_80BF55C(argslist[i][0], gUnknown_03000722); } } } @@ -1887,28 +2245,28 @@ void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct Sa } #ifdef NONMATCHING -bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { +bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { u8 value; u8 switchval; - struct SaveTVStruct *tv1; - struct SaveTVStruct *tv2; + TVShow tv1[25]; + TVShow tv2[25]; tv1 = *arg1; tv2 = *arg2; value = FALSE; - switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00); + switchval = sub_80BFB54(tv2[gUnknown_03000722].common.var00); switch (switchval) { case 2: - value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C004C(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; case 3: - value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C00B4(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; case 4: - value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C0134(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; } if (value == TRUE) { - sub_80BF55C(tv2->shows, gUnknown_03000722); + sub_80BF55C(tv2, gUnknown_03000722); return TRUE; } else { return FALSE; @@ -1916,7 +2274,7 @@ bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 i } #else __attribute__((naked)) -bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { +bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ sub sp, 0x4\n\ @@ -2096,54 +2454,54 @@ void sub_80C03A8(u8 showidx); void sub_80C03C8(u16 species, u8 showidx); #ifdef NONMATCHING -void sub_80C01D4(void) { - u8 i; - for (i=0; i<24; i++) { - switch (gSaveBlock1.tvShows.shows[i].common.var00) { - case 0: - break; - case TVSHOW_FAN_CLUB_LETTER: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); - break; - case TVSHOW_RECENT_HAPPENINGS: - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); - break; - case TVSHOW_SMART_SHOPPER: - break; - case TVSHOW_POKEMON_TODAY_FAILED: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); - break; - case TVSHOW_FISHING_ADVICE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); - break; - case TVSHOW_WORLD_OF_MASTERS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); - break; - case TVSHOW_MASS_OUTBREAK: - break; - default: - sub_80C03A8(i); +void sub_80C01D4(void) +{ + u16 i; + for (i=0; i<24; i++) + { + switch (gSaveBlock1.tvShows[i].common.var00) + { + 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); } } } @@ -2356,12 +2714,12 @@ _080C03A0:\n\ #endif void sub_80C03A8(u8 showidx) { - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; } void sub_80C03C8(u16 species, u8 showidx) { - if (sub_8090D90(SpeciesToNationalPokedexNum(species), 0) == 0) { - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + if (!sub_8090D90(SpeciesToNationalPokedexNum(species), 0)) { + gSaveBlock1.tvShows[showidx].common.var01 = 0; } } @@ -2370,8 +2728,8 @@ void sub_80C0408(void) { u16 i; if (FlagGet(SYS_GAME_CLEAR) != 1) { for (i=0; i<24; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { - gSaveBlock1.tvShows.shows[i].common.var01 = 0; + if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { + gSaveBlock1.tvShows[i].common.var01 = 0; } } } @@ -2428,13 +2786,94 @@ _080C0458: .4byte 0x00002738\n\ void sub_80C045C(void) { u8 i; for (i=0; i<5; i++) { - if (sub_80BFB54(gSaveBlock1.tvShows.shows[i].common.var00) == 2) { - gSaveBlock1.tvShows.shows[i].common.var01 = 0; + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2) { + gSaveBlock1.tvShows[i].common.var01 = 0; } } } -asm(".section .dotvshow\n"); +void sub_80C04A0(void) +{ + s8 showIdx; + s8 count; + count = 0; + for (showIdx=5; showIdx<24; showIdx++) + { + if (gSaveBlock1.tvShows[showIdx].common.var00 == 0) + { + count ++; + } + } + for (showIdx=0; showIdx<5-count; showIdx++) + { + sub_80BF55C(gSaveBlock1.tvShows, showIdx+5); + } +} + +void sub_80C05C4(struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16]); +void sub_80C0750(void); +void sub_80C0788(void); +s8 sub_80C0730(struct UnknownSaveStruct2ABC[16], u8); +void sub_80C06BC(struct UnknownSaveStruct2ABC *[16], struct UnknownSaveStruct2ABC *[16]); + +void sub_80C0514(void *a0, u32 a1, u8 a2) +{ + ewramStruct_02007000 *struct02007000; + u8 i; + for (i=0; i<4; i++) + { + memcpy(gUnknown_02007000.unknown_2abc[i], a0 + i * a1, 64); + } + struct02007000 = &gUnknown_02007000; + switch (a2) + { + case 0: + sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 1: + sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 2: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]); + break; + case 3: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC); + break; + } + sub_80C0750(); + sub_80C0788(); +} + +void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2ABC a1[16], struct UnknownSaveStruct2ABC a2[16], struct UnknownSaveStruct2ABC a3[16]) +{ + u8 i; + u8 j; + u8 k; + struct UnknownSaveStruct2ABC ** 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 DoTVShowPokemonFanClubLetter(void); void DoTVShowRecentHappenings(void); @@ -2452,11 +2891,11 @@ void DoTVShowTheWorldOfMasters(void); bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2); -void sub_80C06BC(int *arg0, int *arg1) { +void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16]) { struct UnknownSaveStruct2ABC *str0; struct UnknownSaveStruct2ABC *str1; - str0 = (void *)arg0[0]; - str1 = (void *)arg1[0]; + str0 = arg0[0]; + str1 = arg1[0]; str1 += gUnknown_03000722; sub_80C06E8(str0, str1, gUnknown_03005D38.var0); } @@ -2504,8 +2943,8 @@ void sub_80C0788(void) { } void DoTVShow(void) { - if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { - switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { + if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0) { + switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00) { case TVSHOW_FAN_CLUB_LETTER: DoTVShowPokemonFanClubLetter(); break; @@ -2556,7 +2995,308 @@ void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) { } } -asm(".section .text_c"); +void DoTVShowBravoTrainerPokemonProfile(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); + sub_80BEF10(2, tvShow->bravoTrainer.contestRank); + if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[tvShow->bravoTrainer.species], tvShow->bravoTrainer.pokemonNickname)) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 1; + } + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainer.pokemonNickname, tvShow->bravoTrainer.var1f); + CopyContestCategoryToStringVar(2, tvShow->bravoTrainer.contestCategory); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + if (tvShow->bravoTrainer.contestResult == 0) // placed first + { + gUnknown_020387E8 = 3; + } else + { + gUnknown_020387E8 = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); + sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); + sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); + sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); + if (tvShow->bravoTrainer.var14) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 7; + } + break; + case 6: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + StringCopy(gStringVar2, gMoveNames[tvShow->bravoTrainer.var14]); + sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); + gUnknown_020387E8 = 7; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainer.species]); + TVShowDone(); + break; + case 8: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + gUnknown_020387E8 = 2; + break; + } + ShowFieldMessage(gTVBravoTrainerTextGroup[switchval]); +} + +void DoTVShowBravoTrainerBattleTowerProfile(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); + if (tvShow->bravoTrainerTower.var16 >= 7) + { + gUnknown_020387E8 = 1; + } else + { + gUnknown_020387E8 = 2; + } + break; + case 1: + sub_80BF088(0, tvShow->bravoTrainerTower.btLevel); + sub_80BF088(1, tvShow->bravoTrainerTower.var16); + if (tvShow->bravoTrainerTower.var1c == 1) + { + gUnknown_020387E8 = 3; + } else + { + gUnknown_020387E8 = 4; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + sub_80BF088(1, tvShow->bravoTrainerTower.var16 + 1); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 7: + gUnknown_020387E8 = 11; + break; + case 8: + case 9: + case 10: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 11: + sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 12; + } else + { + gUnknown_020387E8 = 13; + } + break; + case 12: + case 13: + sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); + TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + TVShowConvertInternationalString(gStringVar3, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 14; + break; + case 14: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[switchval]); +} + +void DoTVShowTodaysSmartShopper(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + sub_80FBFB4(gStringVar2, tvShow->smartshopperShow.shopLocation, 0); + if (tvShow->smartshopperShow.itemAmounts[0] >= 0xff) + { + gUnknown_020387E8 = 11; + } else + { + gUnknown_020387E8 = 1; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0]); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 2: + case 4: + case 5: + if (tvShow->smartshopperShow.itemIds[1] != 0) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 10; + } + break; + case 3: + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0] + 1); + if (tvShow->smartshopperShow.itemIds[1] != 0) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 10; + } + break; + case 6: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[1])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[1]); + if (tvShow->smartshopperShow.itemIds[2] != 0) + { + gUnknown_020387E8 = 7; + } else if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 7: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[2])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[2]); + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 8: + if (tvShow->smartshopperShow.itemAmounts[0] < 0xff) + { + gUnknown_020387E8 = 9; + } else + { + gUnknown_020387E8 = 12; + } + break; + case 9: + sub_80BF154(1, &tvShow->smartshopperShow); + TVShowDone(); + break; + case 10: + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 11: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 12; + } + break; + case 12: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + TVShowDone(); + break; + } + ShowFieldMessage(gTVSmartShopperTextGroup[switchval]); +} void TVShowConvertInternationalString(u8 *, u8 *, u8); @@ -2565,7 +3305,7 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void); void DoTVShowTheNameRaterShow(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2661,7 +3401,7 @@ void DoTVShowTheNameRaterShow(void) { void DoTVShowPokemonTodaySuccessfulCapture(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2731,7 +3471,7 @@ void DoTVShowPokemonTodayFailedCapture(void) { TVShow *tvShow; u8 switchval; u16 rval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2777,7 +3517,7 @@ void DoTVShowPokemonFanClubLetter(void) { TVShow *tvShow; u8 switchval; u16 rval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2828,7 +3568,7 @@ void DoTVShowPokemonFanClubLetter(void) { void DoTVShowRecentHappenings(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2860,7 +3600,7 @@ void DoTVShowRecentHappenings(void) { void DoTVShowPokemonFanClubOpinions(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2895,7 +3635,7 @@ void DoTVShowPokemonNewsMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0); @@ -2914,7 +3654,7 @@ void DoTVShowInSearchOfTrainers(void) { switch (switchval) { case 0: sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); - if (gSaveBlock1.gabbyAndTyData.val9 > 1) { + if (gSaveBlock1.gabbyAndTyData.battleNum > 1) { gUnknown_020387E8 = 1; } else { gUnknown_020387E8 = 2; @@ -2938,7 +3678,7 @@ void DoTVShowInSearchOfTrainers(void) { break; case 3: StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.lastMove]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); gUnknown_020387E8 = 8; break; @@ -2949,7 +3689,7 @@ void DoTVShowInSearchOfTrainers(void) { gUnknown_020387E8 = 8; break; case 8: - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); gScriptResult = 1; @@ -2963,7 +3703,7 @@ void DoTVShowInSearchOfTrainers(void) { void DoTVShowPokemonAngler(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) { gUnknown_020387E8 = 0; @@ -2991,7 +3731,7 @@ void DoTVShowPokemonAngler(void) { void DoTVShowTheWorldOfMasters(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -3022,7 +3762,7 @@ void TVShowDone(void) gScriptResult = 1; gUnknown_020387E8 = 0; - gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 = 0; + gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; } void sub_80C2014(void) |