summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-06-12 19:10:28 -0400
committerProjectRevoTPP <projectrevotpp@hotmail.com>2017-06-12 19:10:28 -0400
commit13a7274a1649a8cb8f3bc165ee1eb403c12430dc (patch)
treebf08a44b86a3e5b5ae3200470f16843fa1ce2358 /src
parentda3eaf350d8ff4b61ba919a0a987ab2468525b9d (diff)
parente09e1da6c252e17cf6db429ad142b05dbf156548 (diff)
merge
Diffstat (limited to 'src')
-rw-r--r--src/battle_2.c25
-rw-r--r--src/easy_chat.c6
-rw-r--r--src/fieldmap.c8
-rwxr-xr-x[-rw-r--r--]src/tv.c1114
4 files changed, 930 insertions, 223 deletions
diff --git a/src/battle_2.c b/src/battle_2.c
index 732a4c529..dc3308e10 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 720adad79..e43ba751f 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 110dfba89..3506752c3 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 (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) {
- gSaveBlock1.tvShows.shows[showidx].common.var01 = 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)