summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tv.s74
-rw-r--r--include/global.h21
-rw-r--r--src/tv.c34
3 files changed, 32 insertions, 97 deletions
diff --git a/asm/tv.s b/asm/tv.s
index 834510a18..97e6679a3 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -1376,80 +1376,6 @@ _080BE27C: .4byte 0xfffffca0
_080BE280: .4byte gUnknown_03005D38
thumb_func_end sub_80BE23C
- thumb_func_start sub_80BE284
-sub_80BE284: @ 80BE284
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r7, _080BE304 @ =gSaveBlock1 + 0x2A98
- ldr r1, _080BE308 @ =0xfffffca0
- adds r0, r7, r1
- bl sub_80BF720
- ldr r1, _080BE30C @ =gUnknown_03005D38
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BE2FE
- movs r3, 0x3
- adds r1, r4, 0
- ands r1, r3
- lsls r1, 5
- ldrb r2, [r7, 0x13]
- movs r0, 0x61
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- ldr r1, _080BE310 @ =gScriptContestCategory
- ldrb r2, [r1]
- movs r1, 0x7
- ands r1, r2
- movs r2, 0x8
- negs r2, r2
- ands r0, r2
- orrs r0, r1
- ldr r1, _080BE314 @ =gScriptContestRank
- ldrb r1, [r1]
- ands r3, r1
- lsls r3, 3
- movs r1, 0x19
- negs r1, r1
- ands r0, r1
- orrs r0, r3
- strb r0, [r7, 0x13]
- ldr r6, _080BE318 @ =gUnknown_02038694
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _080BE31C @ =gPlayerParty
- adds r0, r4
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x2]
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- adds r2, r7, 0
- adds r2, 0x8
- movs r1, 0x2
- bl GetMonData
-_080BE2FE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE304: .4byte gSaveBlock1 + 0x2A98
-_080BE308: .4byte 0xfffffca0
-_080BE30C: .4byte gUnknown_03005D38
-_080BE310: .4byte gScriptContestCategory
-_080BE314: .4byte gScriptContestRank
-_080BE318: .4byte gUnknown_02038694
-_080BE31C: .4byte gPlayerParty
- thumb_func_end sub_80BE284
-
.section .text_80BE8EC
thumb_func_start sub_80C04A0
diff --git a/include/global.h b/include/global.h
index 2090415f9..6528da35d 100644
--- a/include/global.h
+++ b/include/global.h
@@ -338,9 +338,13 @@ struct TVShowBravoTrainerPokemonProfiles {
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 species;
- /*0x04*/ u8 pad04[15];
+ /*0x04*/ u8 pad04[4];
+ /*0x08*/ u8 pokemonNickname[11];
/*0x13*/ u8 contestCategory:3;
- /*0x13*/ u8 var13_3:5;
+ /*0x13*/ u8 contestRank:2;
+ /*0x13*/ u8 var13_5:2;
+ /*0x13*/ u8 var13_7:1;
+ /*0x14*/
};
struct TVShowBravoTrainerBattleTowerSpotlight {
@@ -431,20 +435,9 @@ typedef union SB_Struct {
} SB_Struct;
// size is 0x198
-struct UnknownSaveStruct2A98 {
- u8 var00;
- u8 var01;
- u16 var02;
- u16 var04;
- u16 var06;
- u16 var08;
- u8 var0a;
- u8 pad0b[25];
-};
-
struct SaveTVStruct {
TVShow shows[24];
- struct UnknownSaveStruct2A98 unknown_2A98;
+ TVShow unknown_2A98;
};
struct UnknownSaveStruct2ABC {
diff --git a/src/tv.c b/src/tv.c
index cbfd80f01..a8e1714e0 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -34,6 +34,7 @@ struct OutbreakPokemon
};
extern u8 *gUnknown_083D1464[3];
+extern u8 gUnknown_02038694;
struct TVSaleItem {
u16 item_id;
@@ -100,10 +101,25 @@ extern void sub_80BE138(TVShow *);
bool8 sub_80BF1B4(u8);
void sub_80BF20C(void);
extern u16 sub_8135D3C(u8);
+extern u8 gScriptContestCategory;
+extern u8 gScriptContestRank;
asm(".section .text_a");
s8 sub_80BF74C(TVShow tvShow[]);
+void sub_80BE284(u8 a0) {
+ TVShow *show;
+ show = &gSaveBlock1.tvShows.unknown_2A98;
+ gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows);
+ if (gUnknown_03005D38.var0 != -1) {
+ show->bravoTrainer.var13_5 = a0;
+ show->bravoTrainer.contestCategory = gScriptContestCategory;
+ show->bravoTrainer.contestRank = gScriptContestRank;
+ show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname);
+ }
+}
+
void sub_80BE320(void) {
TVShow *show;
show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
@@ -463,11 +479,11 @@ void sub_80BEA88(void);
void sub_80BEA5C(u16 arg0)
{
- struct UnknownSaveStruct2A98 *unk_2a98;
+ TVShow *unk_2a98;
unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98;
- if (unk_2a98->var00 == TVSHOW_WORLD_OF_MASTERS)
+ if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS)
{
- if (unk_2a98->var02 <= 0x13)
+ if (unk_2a98->worldOfMasters.var02 < 20)
{
sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18);
}
@@ -479,7 +495,7 @@ void sub_80BEA5C(u16 arg0)
}
void sub_80BEA88(void)
{
- struct UnknownSaveStruct2A98 *unk_2a98;
+ TVShow *unk_2a98;
TVShow *tvShow;
u8 rval;
unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98;
@@ -492,11 +508,11 @@ void sub_80BEA88(void)
tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS;
tvShow->worldOfMasters.var01 = rval;
- tvShow->worldOfMasters.var02 = unk_2a98->var02;
- tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06;
- tvShow->worldOfMasters.var04 = unk_2a98->var04;
- tvShow->worldOfMasters.var08 = unk_2a98->var08;
- tvShow->worldOfMasters.var0a = unk_2a98->var0a;
+ tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02;
+ tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->worldOfMasters.var06;
+ tvShow->worldOfMasters.var04 = unk_2a98->worldOfMasters.var04;
+ tvShow->worldOfMasters.var08 = unk_2a98->worldOfMasters.var08;
+ tvShow->worldOfMasters.var0a = unk_2a98->worldOfMasters.var0a;
StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName);
sub_80BE138(tvShow);
tvShow->worldOfMasters.language = GAME_LANGUAGE;