summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tv.s156
-rw-r--r--include/global.h2
-rw-r--r--include/tv.h1
-rw-r--r--src/tv.c83
4 files changed, 79 insertions, 163 deletions
diff --git a/asm/tv.s b/asm/tv.s
index 6cc8332af..3baee170b 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -2583,162 +2583,6 @@ _080BF248:
_080BF258: .4byte gUnknown_02038724
thumb_func_end sub_80BF20C
- thumb_func_start sub_80BF25C
-sub_80BF25C: @ 80BF25C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0
- ldr r3, _080BF28C @ =gSaveBlock1
- ldr r0, _080BF290 @ =0x00002738
- adds r4, r3, r0
-_080BF26A:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r3
- ldr r6, _080BF290 @ =0x00002738
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, r5
- bne _080BF2AE
- ldr r3, _080BF294 @ =0x00002739
- adds r0, r2, r3
- ldrb r2, [r0]
- cmp r2, 0x1
- bne _080BF29C
- ldr r0, _080BF298 @ =gScriptResult
- strh r2, [r0]
- b _080BF2BC
- .align 2, 0
-_080BF28C: .4byte gSaveBlock1
-_080BF290: .4byte 0x00002738
-_080BF294: .4byte 0x00002739
-_080BF298: .4byte gScriptResult
-_080BF29C:
- adds r0, r4, 0
- bl sub_80BF55C
- adds r0, r4, 0
- bl sub_80BF588
- bl sub_80BF6D8
- b _080BF2BC
-_080BF2AE:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080BF26A
- bl sub_80BF6D8
-_080BF2BC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BF25C
-
- thumb_func_start sub_80BF2C4
-sub_80BF2C4: @ 80BF2C4
- push {lr}
- ldr r1, _080BF2E0 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080BF2E4 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0x6
- bhi _080BF330
- lsls r0, 2
- ldr r1, _080BF2E8 @ =_080BF2EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BF2E0: .4byte gScriptResult
-_080BF2E4: .4byte gSpecialVar_0x8005
-_080BF2E8: .4byte _080BF2EC
- .align 2, 0
-_080BF2EC:
- .4byte _080BF308
- .4byte _080BF30E
- .4byte _080BF314
- .4byte _080BF31A
- .4byte _080BF320
- .4byte _080BF326
- .4byte _080BF32C
-_080BF308:
- bl sub_80BF334
- b _080BF330
-_080BF30E:
- bl sub_80BF3A4
- b _080BF330
-_080BF314:
- bl sub_80BF3DC
- b _080BF330
-_080BF31A:
- bl sub_80BF46C
- b _080BF330
-_080BF320:
- bl sub_80BF478
- b _080BF330
-_080BF326:
- bl sub_80BF484
- b _080BF330
-_080BF32C:
- bl sub_80BF4BC
-_080BF330:
- pop {r0}
- bx r0
- thumb_func_end sub_80BF2C4
-
- thumb_func_start sub_80BF334
-sub_80BF334: @ 80BF334
- push {r4,lr}
- movs r0, 0x1
- bl sub_80BF25C
- ldr r0, _080BF38C @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BF384
- ldr r4, _080BF390 @ =gStringVar1
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _080BF394 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, _080BF398 @ =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, _080BF39C @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BF3A0 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- adds r0, 0x4
- movs r1, 0x6
- bl sub_80EB6FC
-_080BF384:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF38C: .4byte gScriptResult
-_080BF390: .4byte gStringVar1
-_080BF394: .4byte gPlayerParty
-_080BF398: .4byte gSpeciesNames
-_080BF39C: .4byte gUnknown_03005D38
-_080BF3A0: .4byte gSaveBlock1 + 0x2738
- thumb_func_end sub_80BF334
-
.section .text_80BF544
thumb_func_start sub_80BFF68
diff --git a/include/global.h b/include/global.h
index 5ea13f7cc..4a82972b5 100644
--- a/include/global.h
+++ b/include/global.h
@@ -201,7 +201,7 @@ struct TVShowFanClubLetter {
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 species;
- u8 pad04[12];
+ /*0x04*/ u16 pad04[6];
/*0x10*/ u8 playerName[8];
/*0x18*/ u8 var18;
};
diff --git a/include/tv.h b/include/tv.h
index e7186b05b..f6dd7a007 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -9,6 +9,7 @@ enum
TVSHOW_FAN_CLUB_LETTER = 1,
TVSHOW_RECENT_HAPPENINGS = 2,
TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3,
+ TVSHOW_UNKN_SHOWTYPE_04 = 4,
TVSHOW_NAME_RATER_SHOW = 5,
TVSHOW_UNK_SHOWTYPE_06 = 6,
TVSHOW_UNK_SHOWTYPE_07 = 7,
diff --git a/src/tv.c b/src/tv.c
index 9e40d4132..9a7b70c6e 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -32,6 +32,7 @@ struct OutbreakPokemon
extern u8 *gUnknown_083D1464[3];
extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
extern u16 gSpecialVar_0x8006;
extern u8 gSpecialVar_0x8007;
extern u16 gScriptResult;
@@ -446,7 +447,77 @@ void sub_80BEA88(void)
asm(".section .text_b");
-void sub_80BF25C(u8);
+void sub_80BF6D8(void);
+void sub_80BF588(TVShow tvShows[]);
+
+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)
+ {
+ gScriptResult = 1;
+ }
+ else
+ {
+ sub_80BF55C(gSaveBlock1.tvShows.shows, i);
+ sub_80BF588(gSaveBlock1.tvShows.shows);
+ sub_80BF6D8();
+ }
+ return;
+ }
+ }
+ sub_80BF6D8();
+}
+
+void sub_80BF334(void);
+void sub_80BF3A4(void);
+void sub_80BF3DC(void);
+void sub_80BF46C(void);
+void sub_80BF478(void);
+void sub_80BF484(void);
+void sub_80BF4BC(void);
+
+void sub_80BF2C4(void)
+{
+ gScriptResult = 0;
+ switch (gSpecialVar_0x8005) {
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80BF334();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ sub_80BF3A4();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80BF3DC();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ sub_80BF46C();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ sub_80BF478();
+ break;
+ case TVSHOW_UNK_SHOWTYPE_06:
+ sub_80BF484();
+ break;
+ case TVSHOW_UNK_SHOWTYPE_07:
+ sub_80BF4BC();
+ break;
+ }
+}
+
+void sub_80BF334(void)
+{
+ TVShow *show;
+ 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];
+ sub_80EB6FC(show->fanclubLetter.pad04, 6);
+ }
+}
void sub_80BF3A4(void)
{
@@ -623,7 +694,7 @@ bool8 sub_80BF77C(u16 value)
return TRUE;
}
-void sub_80BF79C(struct TVShowRecentHappenings *arg0) // TVShowFanClubLetter?
+void sub_80BF79C(struct TVShowRecentHappenings *arg0)
{
u8 i = Random() % 6;
while (1) {
@@ -636,13 +707,13 @@ void sub_80BF79C(struct TVShowRecentHappenings *arg0) // TVShowFanClubLetter?
sub_80EB3FC(gStringVar3, arg0->var04[i]);
}
-u8 sub_80BF7E8(struct TVShowFanClubLetter *arg0) // TVShowRecentHappenings?
+u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0)
{
u16 flagsum = 0;
u8 i = 0;
- if (arg0->pad04[0] != 0xFF) {
- while (i < 11 && arg0->pad04[i] != 0xFF) {
- flagsum += arg0->pad04[i];
+ if (arg0->pokemonName[0] != 0xFF) {
+ while (i < 11 && arg0->pokemonName[i] != 0xFF) {
+ flagsum += arg0->pokemonName[i];
i++;
}
}