summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/contest_link_80C2020.c88
-rw-r--r--src/field/tv.c26
2 files changed, 91 insertions, 23 deletions
diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c
index 4e9209554..376ad1720 100644
--- a/src/battle/contest_link_80C2020.c
+++ b/src/battle/contest_link_80C2020.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "data2.h"
#include "util.h"
+#include "overworld.h"
#include "constants/songs.h"
#include "ewram.h"
#include "main.h"
@@ -13,10 +14,13 @@
#include "string_util.h"
#include "menu.h"
#include "sound.h"
+#include "pokedex.h"
+#include "tv.h"
#include "battle.h"
#include "contest.h"
#include "link.h"
#include "field_effect.h"
+#include "field_specials.h"
#include "contest_link_80C857C.h"
#include "contest_link_80C2020.h"
@@ -34,7 +38,7 @@ struct UnkEwramStruct18000 {
u8 unk_00;
u8 filler_01[1];
u8 unk_02;
- u8 filler_03[1];
+ u8 unk_03;
u8 unk_04;
u8 unk_05;
u8 unk_06;
@@ -66,6 +70,10 @@ void sub_80C27EC(u8 taskId);
void sub_80C2878(u8 taskId);
void sub_80C2A8C(u8 taskId);
void sub_80C2D1C(u8 taskId);
+void sub_80C2D80(u8 taskId);
+void sub_80C2DD8(u8 taskId);
+void sub_80C2E14(u8 taskId);
+void sub_80C2EA0(u8 taskId);
void sub_80C2F28(u8 taskId);
void sub_80C2F64(u8 taskId);
void sub_80C30D4(u8 a0, u8 a1);
@@ -642,3 +650,81 @@ void sub_80C2A8C(u8 taskId)
break;
}
}
+
+void sub_80C2D1C(u8 taskId)
+{
+ int i;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (!(gIsLinkContest & 1))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gContestMons[i].species), FLAG_SET_SEEN);
+ }
+ }
+ gTasks[taskId].func = sub_80C2D80;
+ }
+}
+
+void sub_80C2D80(u8 taskId)
+{
+ if (gIsLinkContest & 1)
+ {
+ sub_80C3698(gOtherText_LinkStandby);
+ sub_800832C();
+ gTasks[taskId].func = sub_80C2DD8;
+ }
+ else
+ {
+ gTasks[taskId].func = sub_80C2E14;
+ }
+}
+
+void sub_80C2DD8(u8 taskId)
+{
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gIsLinkContest = 0;
+ sub_80C3764();
+ gTasks[taskId].func = sub_80C2E14;
+ }
+}
+
+void sub_80C2E14(u8 taskId)
+{
+ sub_80BE284(gContestFinalStandings[gContestPlayerMonIndex]);
+ sub_810FB10(2);
+ Contest_SaveWinner(gSpecialVar_ContestRank);
+ Contest_SaveWinner(0xFE);
+ ewram15DDF = 1;
+ ewram15DDE = sub_80B2C4C(0xfe, 0);
+ BeginHardwarePaletteFade(0xff, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_80C2EA0;
+}
+
+void sub_80C2EA0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[1] == 0)
+ {
+ DestroyTask(eContestLink80C2020Struct2018000.unk_03);
+ BlendPalettes(0x0000ffff, 16, 0);
+ gTasks[taskId].data[1]++;
+ }
+ else if (gTasks[taskId].data[1] == 1)
+ {
+ BlendPalettes(0xffff0000, 16, 0);
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ REG_BLDCNT = 0;
+ REG_BLDY = 0;
+ DestroyTask(taskId);
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+ }
+}
diff --git a/src/field/tv.c b/src/field/tv.c
index 8bd36bb9c..36a6331b0 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "tv.h"
#include "battle_tower.h"
+#include "contest.h"
#include "contest_painting.h"
#include "data2.h"
#include "easy_chat.h"
@@ -69,7 +70,6 @@ struct UnkTvStruct gUnknown_03005D38;
extern u16 gSpecialVar_LastTalked;
extern u8 gSpecialVar_ContestCategory;
-extern u8 gSpecialVar_ContestRank;
extern u8 gUnknown_03004316[11];
extern u8 gBattleOutcome;
@@ -443,12 +443,6 @@ void ClearTVShowData(void)
sub_80BEBF4();
}
-bool8 sub_80BF1B4(u8);
-void sub_80BF20C(void);
-extern u8 gSpecialVar_ContestCategory;
-extern u8 gSpecialVar_ContestRank;
-extern u8 gUnknown_03004316[11];
-extern u8 gBattleOutcome;
void InterviewBefore_FanClubLetter(void);
void InterviewBefore_RecentHappenings(void);
@@ -458,21 +452,9 @@ void InterviewBefore_NameRater(void);
void InterviewBefore_BravoTrainerPkmnProfile(void);
void InterviewBefore_BravoTrainerBTProfile(void);
-void sub_80BE028(void);
-void sub_80BE074(void);
-void sub_80BE778(void);
-void sub_80BEB20(void);
u8 GetTVChannelByShowType(u8);
-s8 sub_80BF74C(TVShow tvShow[]);
-
-void sub_80BF55C(TVShow tvShow[], u8 showidx);
-void sub_80BEA88(void);
-
-void sub_80BE138(TVShow *show);
-void sub_80BE160(TVShow *show);
-extern u16 gLastUsedItem;
void InterviewAfter_FanClubLetter(void);
void InterviewAfter_RecentHappenings(void);
@@ -982,16 +964,16 @@ void sub_80BE23C(u16 a0)
}
}
-void sub_80BE284(u8 a0)
+void sub_80BE284(u8 contestResult)
{
struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer;
gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows);
if (gUnknown_03005D38.var0 != -1)
{
- bravoTrainer->contestResult = a0;
+ bravoTrainer->contestResult = contestResult;
bravoTrainer->contestCategory = gSpecialVar_ContestCategory;
- bravoTrainer->contestRank = gSpecialVar_ContestRank;
+ bravoTrainer->contestRank = (u8)gSpecialVar_ContestRank;
bravoTrainer->species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL);
GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, bravoTrainer->pokemonNickname);
}