summaryrefslogtreecommitdiff
path: root/src/tv.c
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2017-06-20 20:41:33 -0400
committerGitHub <noreply@github.com>2017-06-20 20:41:33 -0400
commit4ba573ed1eba7c37160ce6107d95447f42902385 (patch)
tree5973f1e72156bb75cb6561a11dd7f333b90fcb3f /src/tv.c
parent13b02fc8232ce61062afe46ca13a1930a3bbc286 (diff)
parentb22e5219ba01c70da9a03397430bff10d0b99060 (diff)
Merge branch 'master' into patch-1
Diffstat (limited to 'src/tv.c')
-rw-r--r--src/tv.c2171
1 files changed, 1449 insertions, 722 deletions
diff --git a/src/tv.c b/src/tv.c
index d2e38c088..14e7cf143 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1,9 +1,13 @@
#include "global.h"
-#include "asm.h"
#include "tv.h"
+#include "battle_tower.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 "flags.h"
#include "rng.h"
#include "string_util.h"
@@ -14,34 +18,33 @@
#include "rom4.h"
#include "map_constants.h"
#include "strings.h"
+#include "battle.h"
#include "link.h"
#include "easy_chat.h"
+#include "field_map_obj.h"
+#include "field_specials.h"
#include "item.h"
#include "items.h"
-#include "contest_painting.h"
+#include "link.h"
+#include "map_constants.h"
+#include "naming_screen.h"
+#include "pokedex.h"
+#include "region_map.h"
+#include "rng.h"
+#include "rom4.h"
#include "rtc.h"
+#include "script_menu.h"
+#include "species.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
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 Struct30042E0 gBattleResults;
extern u8 gUnknown_0300430A[11];
struct OutbreakPokemon
@@ -52,13 +55,13 @@ struct OutbreakPokemon
/*0x0B*/ u8 location;
};
-extern u8 *gUnknown_083D1464[3];
-extern u8 gUnknown_02038694;
-
struct TVSaleItem {
u16 item_id;
u16 item_amount;
};
+
+extern u8 gUnknown_02038694;
+
extern struct TVSaleItem gUnknown_02038724[3];
extern u16 gSpecialVar_0x8004;
@@ -85,11 +88,8 @@ extern u8 *gTVFishingGuruAdviceTextGroup[];
extern u8 *gTVWorldOfMastersTextGroup[];
extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5];
-extern void sub_80BEBF4(void);
-
extern u16 gUnknown_020387E0;
extern u16 gUnknown_020387E2;
-extern const u8 *gUnknown_083CE048[];
extern const u8 *gTVNewsTextGroup1[];
extern const u8 *gTVNewsTextGroup2[];
@@ -97,17 +97,30 @@ extern const u8 *gTVNewsTextGroup3[];
extern u16 gScriptLastTalked;
-u32 GetPlayerTrainerId(void);
+
+extern u8 gScriptContestCategory;
+extern u8 gScriptContestRank;
+extern u8 gUnknown_03004316[11];
+extern u8 gBattleOutcome;
+
+extern u16 gLastUsedItem;
+
+extern u8 ewram[];
+#define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000))
+extern u8 gUnknown_020387E4;
+
+extern u8 gUnknown_03000720;
+extern s8 gUnknown_03000722;
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();
@@ -119,7 +132,7 @@ extern u16 sub_8135D3C(u8);
extern u8 gScriptContestCategory;
extern u8 gScriptContestRank;
extern u8 gUnknown_03004316[11];
-extern u8 gUnknown_02024D26;
+extern u8 gBattleOutcome;
void sub_80BF334(void);
void sub_80BF3A4(void);
@@ -134,7 +147,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);
@@ -142,7 +156,7 @@ void sub_80BEA88(void);
void sub_80BE138(TVShow *show);
void sub_80BE160(TVShow *show);
-extern u16 gUnknown_02024C04;
+extern u16 gLastUsedItem;
void sub_80BE5FC(void);
void sub_80BE65C(void);
@@ -151,7 +165,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 width, int height)
+{
+ u8 bigMovieOrEmergencyNewsOnTv;
+ FlagSet(SYS_TV_WATCH);
+ bigMovieOrEmergencyNewsOnTv = CheckForBigMovieOrEmergencyNewsOnTV();
+ switch (bigMovieOrEmergencyNewsOnTv)
+ {
+ 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_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
+ {
+ SetTVMetatilesOnMap(width, height, 0x3);
+ }
+ else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring()))
+ {
+ FlagReset(SYS_TV_WATCH);
+ SetTVMetatilesOnMap(width, height, 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 = gBattleResults.unk6;
+ gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.unk26;
+ gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.unk22;
+ if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff)
+ {
+ gSaveBlock1.gabbyAndTyData.battleNum ++;
+ }
+ gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0;
+ if (gBattleResults.unk0)
+ {
+ 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(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,38 +612,38 @@ void sub_80BDEC8(void) {
total = 0;
sub_80BEB20();
sub_80BE778();
- if (gUnknown_030042E0.var28 == 0) {
+ if (gBattleResults.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[gBattleResults.unk28], gBattleResults.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 += gBattleResults.unk36[i];
}
- if (total != 0 || gUnknown_030042E0.var05_1 != 0) {
+ if (total != 0 || gBattleResults.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 (gBattleResults.unk5_1 != 0) {
total = 1;
item = ITEM_MASTER_BALL;
} else {
for (i=0; i<11; i++) {
- total += gUnknown_030042E0.var36[i];
+ total += gBattleResults.unk36[i];
}
if (total > 0xff) {
total = 0xff;
}
- item = gUnknown_02024C04;
+ item = gLastUsedItem;
}
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, gBattleResults.unk2A);
+ show->pokemonToday.species = gBattleResults.unk28;
sub_80BE138(show);
show->pokemonToday.language = GAME_LANGUAGE;
show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname);
@@ -274,15 +656,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 = gBattleResults.unk28;
+ buffer->worldOfMasters.var08 = gBattleResults.unk6;
buffer->worldOfMasters.var0a = gMapHeader.name;
}
@@ -299,18 +681,18 @@ void sub_80BE074(void) {
if (total > 0xff) {
total = 0xff;
}
- if (total > 2 && gUnknown_02024D26 == 1) {
- gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows);
+ if (total > 2 && gBattleOutcome == 1) {
+ 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 = gBattleResults.unk6;
+ show->pokemonTodayFailed.species2 = gBattleResults.unk20;
show->pokemonTodayFailed.var10 = total;
- show->pokemonTodayFailed.var11 = gUnknown_02024D26;
+ show->pokemonTodayFailed.var11 = gBattleOutcome;
show->pokemonTodayFailed.var12 = gMapHeader.name;
StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2.playerName);
sub_80BE138(show);
@@ -323,94 +705,94 @@ void sub_80BE074(void) {
__attribute__((naked))
void sub_80BE074(void) {
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- ldr r0, _080BE118 @ =0x0000ffff\n\
- bl sub_80BF77C\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080BE112\n\
- movs r1, 0\n\
- movs r5, 0\n\
- ldr r2, _080BE11C @ =gUnknown_03004316\n\
+ push {r4-r7,lr}\n\
+ ldr r0, _080BE118 @ =0x0000ffff\n\
+ bl sub_80BF77C\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080BE112\n\
+ movs r1, 0\n\
+ movs r5, 0\n\
+ ldr r2, _080BE11C @ =gUnknown_03004316\n\
_080BE088:\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- adds r0, r5, r0\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- adds r0, r1, 0x1\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- cmp r1, 0xA\n\
- bls _080BE088\n\
- cmp r5, 0xFF\n\
- bls _080BE0A2\n\
- movs r5, 0xFF\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r0, r5, r0\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0xA\n\
+ bls _080BE088\n\
+ cmp r5, 0xFF\n\
+ bls _080BE0A2\n\
+ movs r5, 0xFF\n\
_080BE0A2:\n\
- cmp r5, 0x2\n\
- bls _080BE112\n\
- ldr r7, _080BE120 @ =gUnknown_02024D26\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x1\n\
- bne _080BE112\n\
- ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\
- adds r0, r6, 0\n\
- bl sub_80BF74C\n\
- ldr r4, _080BE128 @ =gUnknown_03005D38\n\
- strb r0, [r4]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- cmp r0, r1\n\
- beq _080BE112\n\
- movs r0, 0x17\n\
- bl sub_80BF1B4\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- beq _080BE112\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- lsls r4, r0, 3\n\
- adds r4, r0\n\
- lsls r4, 2\n\
- adds r4, r6\n\
+ cmp r5, 0x2\n\
+ bls _080BE112\n\
+ ldr r7, _080BE120 @ =gBattleOutcome\n\
+ ldrb r0, [r7]\n\
+ cmp r0, 0x1\n\
+ bne _080BE112\n\
+ ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\
+ adds r0, r6, 0\n\
+ bl sub_80BF74C\n\
+ ldr r4, _080BE128 @ =gUnknown_03005D38\n\
+ strb r0, [r4]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ cmp r0, r1\n\
+ beq _080BE112\n\
+ movs r0, 0x17\n\
+ bl sub_80BF1B4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ beq _080BE112\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ lsls r4, r0, 3\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ adds r4, r6\n\
@ -- Here the compiler puts the status flag in the wrong register. --\n\
- movs r1, 0\n\
- movs r0, 0x17\n\
- strb r0, [r4]\n\
- strb r1, [r4, 0x1]\n\
- ldr r1, _080BE12C @ =gUnknown_030042E0\n\
- ldrh r0, [r1, 0x6]\n\
- strh r0, [r4, 0xC]\n\
- ldrh r0, [r1, 0x20]\n\
- strh r0, [r4, 0xE]\n\
- strb r5, [r4, 0x10]\n\
- ldrb r0, [r7]\n\
- strb r0, [r4, 0x11]\n\
- ldr r0, _080BE130 @ =gMapHeader\n\
- ldrb r0, [r0, 0x14]\n\
- strb r0, [r4, 0x12]\n\
- adds r0, r4, 0\n\
- adds r0, 0x13\n\
- ldr r1, _080BE134 @ =gSaveBlock2\n\
- bl StringCopy\n\
- adds r0, r4, 0\n\
- bl sub_80BE138\n\
- movs r0, 2 @ GAME_LANGUAGE\n\
- strb r0, [r4, 0x2]\n\
+ movs r1, 0\n\
+ movs r0, 0x17\n\
+ strb r0, [r4]\n\
+ strb r1, [r4, 0x1]\n\
+ ldr r1, _080BE12C @ =gBattleResults\n\
+ ldrh r0, [r1, 0x6]\n\
+ strh r0, [r4, 0xC]\n\
+ ldrh r0, [r1, 0x20]\n\
+ strh r0, [r4, 0xE]\n\
+ strb r5, [r4, 0x10]\n\
+ ldrb r0, [r7]\n\
+ strb r0, [r4, 0x11]\n\
+ ldr r0, _080BE130 @ =gMapHeader\n\
+ ldrb r0, [r0, 0x14]\n\
+ strb r0, [r4, 0x12]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x13\n\
+ ldr r1, _080BE134 @ =gSaveBlock2\n\
+ bl StringCopy\n\
+ adds r0, r4, 0\n\
+ bl sub_80BE138\n\
+ movs r0, 2 @ GAME_LANGUAGE\n\
+ strb r0, [r4, 0x2]\n\
_080BE112:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080BE118: .4byte 0x0000ffff\n\
_080BE11C: .4byte gUnknown_03004316\n\
-_080BE120: .4byte gUnknown_02024D26\n\
+_080BE120: .4byte gBattleOutcome\n\
_080BE124: .4byte gSaveBlock1 + 0x2738\n\
_080BE128: .4byte gUnknown_03005D38\n\
-_080BE12C: .4byte gUnknown_030042E0\n\
+_080BE12C: .4byte gBattleResults\n\
_080BE130: .4byte gMapHeader\n\
_080BE134: .4byte gSaveBlock2\n\
.syntax divided\n");
@@ -440,9 +822,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 +833,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 +844,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 +856,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 +869,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 +895,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 +943,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 +970,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 +992,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 +1008,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 +1024,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 +1062,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 +1073,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 +1089,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 +1146,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
@@ -784,8 +1166,6 @@ void UpdateMassOutbreakTimeLeft(u16 arg0)
gSaveBlock1.outbreakUnk5 -= arg0;
}
-void sub_80BE9D4();
-
void sub_80BE97C(bool8 flag)
{
u8 var0, var1;
@@ -811,9 +1191,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 +1219,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 +1242,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;
@@ -885,15 +1264,6 @@ void sub_80BEA88(void)
}
}
-int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0);
-void sub_80BEC10(u8);
-void sub_80BF588(TVShow tvShows[]);
-void sub_80BF6D8(void);
-bool8 sub_80BF77C(u16);
-bool8 sub_80BEE48(u8);
-
-bool8 IsPriceDiscounted(u8);
-
void sub_80BEB20(void) {
u16 rval;
struct SaveBlock1 *save;
@@ -1097,16 +1467,16 @@ void sub_80BEF10(u8 strvaridx, u8 rank)
switch (rank)
{
case NORMAL_RANK:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5].text);
break;
case SUPER_RANK:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5].text);
break;
case HYPER_RANK:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5].text);
break;
case MASTER_RANK:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5].text);
break;
}
}
@@ -1116,19 +1486,19 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category)
switch (category)
{
case CONTEST_COOL:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL].text);
break;
case CONTEST_BEAUTY:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY].text);
break;
case CONTEST_CUTE:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE].text);
break;
case CONTEST_SMART:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART].text);
break;
case CONTEST_TOUGH:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]);
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH].text);
break;
}
}
@@ -1136,7 +1506,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 +1566,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 +1607,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 +1658,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 +1668,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 +1681,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 +1701,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 +1711,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 +1767,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;
}
}
@@ -1418,7 +1788,7 @@ u16 sub_80BF674(u16 species)
u16 cspecies;
rspecies = (Random() % (NUM_SPECIES - 1)) + 1;
cspecies = rspecies;
- while ((s8)sub_8090D90(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) {
+ while ((s8)GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) {
if (cspecies == SPECIES_BULBASAUR)
cspecies = NUM_SPECIES - 1;
else
@@ -1433,7 +1803,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 +1919,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;
@@ -1677,119 +2047,119 @@ __attribute__((naked))
void GetMomOrDadStringForTVMessage(void)
{
asm(".syntax unified\n\
- push {r4,lr}\n\
- ldr r1, _080BFC40 @ =gSaveBlock1\n\
- movs r0, 0x4\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x1\n\
- bne _080BFC6C\n\
- ldr r0, _080BFC44 @ =gSaveBlock2\n\
- ldrb r0, [r0, 0x8]\n\
- cmp r0, 0\n\
- bne _080BFC54\n\
- movs r0, 0x5\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0\n\
- bne _080BFC6C\n\
- ldr r0, _080BFC48 @ =gStringVar1\n\
- ldr r1, _080BFC4C @ =gOtherText_Mom\n\
- bl StringCopy\n\
- ldr r0, _080BFC50 @ =0x00004003\n\
- movs r1, 0x1\n\
- bl VarSet\n\
- b _080BFC6C\n\
- .align 2, 0\n\
+ push {r4,lr}\n\
+ ldr r1, _080BFC40 @ =gSaveBlock1\n\
+ movs r0, 0x4\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0x1\n\
+ bne _080BFC6C\n\
+ ldr r0, _080BFC44 @ =gSaveBlock2\n\
+ ldrb r0, [r0, 0x8]\n\
+ cmp r0, 0\n\
+ bne _080BFC54\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0\n\
+ bne _080BFC6C\n\
+ ldr r0, _080BFC48 @ =gStringVar1\n\
+ ldr r1, _080BFC4C @ =gOtherText_Mom\n\
+ bl StringCopy\n\
+ ldr r0, _080BFC50 @ =0x00004003\n\
+ movs r1, 0x1\n\
+ bl VarSet\n\
+ b _080BFC6C\n\
+ .align 2, 0\n\
_080BFC40: .4byte gSaveBlock1\n\
_080BFC44: .4byte gSaveBlock2\n\
_080BFC48: .4byte gStringVar1\n\
_080BFC4C: .4byte gOtherText_Mom\n\
_080BFC50: .4byte 0x00004003\n\
_080BFC54:\n\
- movs r0, 0x5\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x2\n\
- bne _080BFC6C\n\
- ldr r0, _080BFCB4 @ =gStringVar1\n\
- ldr r1, _080BFCB8 @ =gOtherText_Mom\n\
- bl StringCopy\n\
- ldr r0, _080BFCBC @ =0x00004003\n\
- movs r1, 0x1\n\
- bl VarSet\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0x2\n\
+ bne _080BFC6C\n\
+ ldr r0, _080BFCB4 @ =gStringVar1\n\
+ ldr r1, _080BFCB8 @ =gOtherText_Mom\n\
+ bl StringCopy\n\
+ ldr r0, _080BFCBC @ =0x00004003\n\
+ movs r1, 0x1\n\
+ bl VarSet\n\
_080BFC6C:\n\
- ldr r4, _080BFCBC @ =0x00004003\n\
- adds r0, r4, 0\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- beq _080BFCAA\n\
- adds r0, r4, 0\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x2\n\
- beq _080BFCC0\n\
- adds r0, r4, 0\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x2\n\
- bls _080BFCD4\n\
- adds r0, r4, 0\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080BFCC0\n\
+ ldr r4, _080BFCBC @ =0x00004003\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ beq _080BFCAA\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x2\n\
+ beq _080BFCC0\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x2\n\
+ bls _080BFCD4\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080BFCC0\n\
_080BFCAA:\n\
- ldr r0, _080BFCB4 @ =gStringVar1\n\
- ldr r1, _080BFCB8 @ =gOtherText_Mom\n\
- bl StringCopy\n\
- b _080BFD10\n\
- .align 2, 0\n\
+ ldr r0, _080BFCB4 @ =gStringVar1\n\
+ ldr r1, _080BFCB8 @ =gOtherText_Mom\n\
+ bl StringCopy\n\
+ b _080BFD10\n\
+ .align 2, 0\n\
_080BFCB4: .4byte gStringVar1\n\
_080BFCB8: .4byte gOtherText_Mom\n\
_080BFCBC: .4byte 0x00004003\n\
_080BFCC0:\n\
- ldr r0, _080BFCCC @ =gStringVar1\n\
- ldr r1, _080BFCD0 @ =gOtherText_Dad\n\
- bl StringCopy\n\
- b _080BFD10\n\
- .align 2, 0\n\
+ ldr r0, _080BFCCC @ =gStringVar1\n\
+ ldr r1, _080BFCD0 @ =gOtherText_Dad\n\
+ bl StringCopy\n\
+ b _080BFD10\n\
+ .align 2, 0\n\
_080BFCCC: .4byte gStringVar1\n\
_080BFCD0: .4byte gOtherText_Dad\n\
_080BFCD4:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080BFD00\n\
- ldr r0, _080BFCF8 @ =gStringVar1\n\
- ldr r1, _080BFCFC @ =gOtherText_Mom\n\
- bl StringCopy\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl VarSet\n\
- b _080BFD10\n\
- .align 2, 0\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080BFD00\n\
+ ldr r0, _080BFCF8 @ =gStringVar1\n\
+ ldr r1, _080BFCFC @ =gOtherText_Mom\n\
+ bl StringCopy\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl VarSet\n\
+ b _080BFD10\n\
+ .align 2, 0\n\
_080BFCF8: .4byte gStringVar1\n\
_080BFCFC: .4byte gOtherText_Mom\n\
_080BFD00:\n\
- ldr r0, _080BFD18 @ =gStringVar1\n\
- ldr r1, _080BFD1C @ =gOtherText_Dad\n\
- bl StringCopy\n\
- adds r0, r4, 0\n\
- movs r1, 0x2\n\
- bl VarSet\n\
+ ldr r0, _080BFD18 @ =gStringVar1\n\
+ ldr r1, _080BFD1C @ =gOtherText_Dad\n\
+ bl StringCopy\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2\n\
+ bl VarSet\n\
_080BFD10:\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080BFD18: .4byte gStringVar1\n\
_080BFD1C: .4byte gOtherText_Dad\n\
.syntax divided\n");
@@ -1802,15 +2172,12 @@ void sub_80BFD20(void)
RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
-extern u8 ewram[];
-#define gUnknown_02007000 (*(struct ewramStruct_0207000 *)(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 +2186,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 +2234,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 +2255,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,121 +2284,121 @@ 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\
- lsls r2, 24\n\
- lsrs r7, r2, 24\n\
- ldr r4, [r0]\n\
- ldr r6, [r1]\n\
- movs r5, 0\n\
- ldr r2, _080BFFA4 @ =gUnknown_03000722\n\
- movs r1, 0\n\
- ldrsb r1, [r2, r1]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6 @ this is the only mimsmatch\n\
- ldrb r0, [r0]\n\
- str r2, [sp]\n\
- bl sub_80BFB54\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r1, r0, 0\n\
- ldr r2, [sp]\n\
- cmp r0, 0x3\n\
- beq _080BFFD8\n\
- cmp r0, 0x3\n\
- bgt _080BFFA8\n\
- cmp r0, 0x2\n\
- beq _080BFFAE\n\
- b _080C0026\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ lsls r2, 24\n\
+ lsrs r7, r2, 24\n\
+ ldr r4, [r0]\n\
+ ldr r6, [r1]\n\
+ movs r5, 0\n\
+ ldr r2, _080BFFA4 @ =gUnknown_03000722\n\
+ movs r1, 0\n\
+ ldrsb r1, [r2, r1]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6 @ this is the only mimsmatch\n\
+ ldrb r0, [r0]\n\
+ str r2, [sp]\n\
+ bl sub_80BFB54\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r1, r0, 0\n\
+ ldr r2, [sp]\n\
+ cmp r0, 0x3\n\
+ beq _080BFFD8\n\
+ cmp r0, 0x3\n\
+ bgt _080BFFA8\n\
+ cmp r0, 0x2\n\
+ beq _080BFFAE\n\
+ b _080C0026\n\
+ .align 2, 0\n\
_080BFFA4: .4byte gUnknown_03000722\n\
_080BFFA8:\n\
- cmp r1, 0x4\n\
- beq _080C0000\n\
- b _080C0026\n\
+ cmp r1, 0x4\n\
+ beq _080C0000\n\
+ b _080C0026\n\
_080BFFAE:\n\
- ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\
- movs r1, 0\n\
- ldrsb r1, [r0, r1]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4, r0\n\
- ldrb r2, [r2]\n\
- lsls r2, 24\n\
- asrs r2, 24\n\
- lsls r1, r2, 3\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r6, r1\n\
- adds r2, r7, 0\n\
- bl sub_80C004C\n\
- b _080C0022\n\
- .align 2, 0\n\
+ ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\
+ movs r1, 0\n\
+ ldrsb r1, [r0, r1]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ ldrb r2, [r2]\n\
+ lsls r2, 24\n\
+ asrs r2, 24\n\
+ lsls r1, r2, 3\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r6, r1\n\
+ adds r2, r7, 0\n\
+ bl sub_80C004C\n\
+ b _080C0022\n\
+ .align 2, 0\n\
_080BFFD4: .4byte gUnknown_03005D38\n\
_080BFFD8:\n\
- ldr r0, _080BFFFC @ =gUnknown_03005D38\n\
- movs r1, 0\n\
- ldrsb r1, [r0, r1]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4, r0\n\
- ldrb r2, [r2]\n\
- lsls r2, 24\n\
- asrs r2, 24\n\
- lsls r1, r2, 3\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r6, r1\n\
- adds r2, r7, 0\n\
- bl sub_80C00B4\n\
- b _080C0022\n\
- .align 2, 0\n\
+ ldr r0, _080BFFFC @ =gUnknown_03005D38\n\
+ movs r1, 0\n\
+ ldrsb r1, [r0, r1]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ ldrb r2, [r2]\n\
+ lsls r2, 24\n\
+ asrs r2, 24\n\
+ lsls r1, r2, 3\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r6, r1\n\
+ adds r2, r7, 0\n\
+ bl sub_80C00B4\n\
+ b _080C0022\n\
+ .align 2, 0\n\
_080BFFFC: .4byte gUnknown_03005D38\n\
_080C0000:\n\
- ldr r0, _080C0030 @ =gUnknown_03005D38\n\
- movs r1, 0\n\
- ldrsb r1, [r0, r1]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4, r0\n\
- ldrb r2, [r2]\n\
- lsls r2, 24\n\
- asrs r2, 24\n\
- lsls r1, r2, 3\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r6, r1\n\
- adds r2, r7, 0\n\
- bl sub_80C0134\n\
+ ldr r0, _080C0030 @ =gUnknown_03005D38\n\
+ movs r1, 0\n\
+ ldrsb r1, [r0, r1]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ ldrb r2, [r2]\n\
+ lsls r2, 24\n\
+ asrs r2, 24\n\
+ lsls r1, r2, 3\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r6, r1\n\
+ adds r2, r7, 0\n\
+ bl sub_80C0134\n\
_080C0022:\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
_080C0026:\n\
- cmp r5, 0x1\n\
- beq _080C0034\n\
- movs r0, 0\n\
- b _080C0040\n\
- .align 2, 0\n\
+ cmp r5, 0x1\n\
+ beq _080C0034\n\
+ movs r0, 0\n\
+ b _080C0040\n\
+ .align 2, 0\n\
_080C0030: .4byte gUnknown_03005D38\n\
_080C0034:\n\
- ldr r0, _080C0048 @ =gUnknown_03000722\n\
- ldrb r1, [r0]\n\
- adds r0, r6, 0\n\
- bl sub_80BF55C\n\
- movs r0, 0x1\n\
+ ldr r0, _080C0048 @ =gUnknown_03000722\n\
+ ldrb r1, [r0]\n\
+ adds r0, r6, 0\n\
+ bl sub_80BF55C\n\
+ movs r0, 0x1\n\
_080C0040:\n\
- add sp, 0x4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_080C0048: .4byte gUnknown_03000722\n\
.syntax divided\n");
}
@@ -2092,58 +2460,55 @@ s8 sub_80C019C(TVShow tvShows[]) {
return -1;
}
-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);
}
}
}
@@ -2151,217 +2516,217 @@ void sub_80C01D4(void) {
__attribute__((naked))
void sub_80C01D4(void) {
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- movs r6, 0\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\
+ 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\
+ 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\
+ .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\
+ .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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\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 (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) {
+ gSaveBlock1.tvShows[showidx].common.var01 = 0;
}
}
@@ -2370,8 +2735,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;
}
}
}
@@ -2380,43 +2745,43 @@ void sub_80C0408(void) {
__attribute__((naked))
void sub_80C0408(void) {
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r0, _080C044C @ =0x00000804\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- beq _080C0444\n\
- movs r2, 0\n\
- ldr r6, _080C0450 @ =gSaveBlock1\n\
- ldr r4, _080C0454 @ =0x00002739\n\
- movs r3, 0\n\
- ldr r5, _080C0458 @ =0x00002738\n\
+ push {r4-r6,lr}\n\
+ ldr r0, _080C044C @ =0x00000804\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ beq _080C0444\n\
+ movs r2, 0\n\
+ ldr r6, _080C0450 @ =gSaveBlock1\n\
+ ldr r4, _080C0454 @ =0x00002739\n\
+ movs r3, 0\n\
+ ldr r5, _080C0458 @ =0x00002738\n\
_080C0422:\n\
- lsls r0, r2, 3\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r1, r0, r6\n\
- adds r0, r1, r5\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x7\n\
- beq _080C0436\n\
- cmp r0, 0x29\n\
- bne _080C043A\n\
+ lsls r0, r2, 3\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r1, r0, r6\n\
+ adds r0, r1, r5\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x7\n\
+ beq _080C0436\n\
+ cmp r0, 0x29\n\
+ bne _080C043A\n\
_080C0436:\n\
- adds r0, r1, r4\n\
- strb r3, [r0]\n\
+ adds r0, r1, r4\n\
+ strb r3, [r0]\n\
_080C043A:\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x17\n\
- bls _080C0422\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x17\n\
+ bls _080C0422\n\
_080C0444:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080C044C: .4byte 0x00000804\n\
_080C0450: .4byte gSaveBlock1\n\
_080C0454: .4byte 0x00002739\n\
@@ -2428,35 +2793,100 @@ _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;
+ }
+ }
+}
+
+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);
+ }
}
-asm(".section .dotvshow\n");
+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 DoTVShowPokemonFanClubLetter(void);
-void DoTVShowRecentHappenings(void);
-void DoTVShowPokemonFanClubOpinions(void);
-void nullsub_22(void);
-void DoTVShowPokemonNewsMassOutbreak(void);
-void DoTVShowBravoTrainerPokemonProfile(void);
-void DoTVShowBravoTrainerBattleTowerProfile(void);
-void DoTVShowPokemonTodaySuccessfulCapture(void);
-void DoTVShowTodaysSmartShopper(void);
-void DoTVShowTheNameRaterShow(void);
-void DoTVShowPokemonTodayFailedCapture(void);
-void DoTVShowPokemonAngler(void);
-void DoTVShowTheWorldOfMasters(void);
+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();
+}
-bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2);
+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 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 +2934,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,16 +2986,313 @@ void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) {
}
}
-asm(".section .text_c");
+void DoTVShowBravoTrainerPokemonProfile(void)
+{
+ TVShow *tvShow;
+ u8 switchval;
-void TVShowConvertInternationalString(u8 *, u8 *, u8);
+ 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 TakeTVShowInSearchOfTrainersOffTheAir(void);
+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 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 +3388,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 +3458,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 +3504,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 +3555,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 +3587,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 +3622,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 +3641,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 +3665,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 +3676,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 +3690,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 +3718,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 +3749,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)