summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-05-17 20:51:05 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-05-17 20:51:05 -0400
commitebea499a3f052456ece4272ae06c55eee0194cdf (patch)
treea784d50f7365a100dfb651d346eff949e80bf581
parent16fbf5dd8a674b5df7e6ff61325fd138ca1eb212 (diff)
sub_80BE9D4 (mostly matching)
-rw-r--r--asm/tv.s59
-rw-r--r--include/global.h12
-rw-r--r--src/tv.c38
3 files changed, 47 insertions, 62 deletions
diff --git a/asm/tv.s b/asm/tv.s
index 6bad83371..f0a53c5c6 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -1613,65 +1613,6 @@ _080BE474: .4byte gSaveBlock2
.section .text_80BE8EC
- thumb_func_start sub_80BE9D4
-sub_80BE9D4: @ 80BE9D4
- push {r4,r5,lr}
- ldr r5, _080BEA3C @ =gSaveBlock1 + 0x2738
- adds r0, r5, 0
- bl sub_80BF74C
- ldr r4, _080BEA40 @ =gUnknown_03005D38
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BEA36
- movs r0, 0x18
- bl sub_80BF1B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BEA36
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- adds r4, r5
- movs r1, 0
- movs r0, 0x18
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, _080BEA44 @ =gUnknown_020387E2
- ldrh r0, [r1]
- strb r0, [r4, 0x2]
- ldrh r0, [r1]
- lsrs r0, 8
- strb r0, [r4, 0x3]
- ldr r0, _080BEA48 @ =gUnknown_020387E0
- ldrh r0, [r0]
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, _080BEA4C @ =gSaveBlock2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80BE138
- movs r0, GAME_LANGUAGE
- strb r0, [r4, 0x6]
-_080BEA36:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BEA3C: .4byte gSaveBlock1 + 0x2738
-_080BEA40: .4byte gUnknown_03005D38
-_080BEA44: .4byte gUnknown_020387E2
-_080BEA48: .4byte gUnknown_020387E0
-_080BEA4C: .4byte gSaveBlock2
- thumb_func_end sub_80BE9D4
-
thumb_func_start sub_80BEA50
sub_80BEA50: @ 80BEA50
ldr r1, _080BEA58 @ =gUnknown_020387E0
diff --git a/include/global.h b/include/global.h
index f08c76bac..4790c4ed2 100644
--- a/include/global.h
+++ b/include/global.h
@@ -261,6 +261,17 @@ struct TVShowMassOutbreak {
u8 pad19[11];
};
+struct TVShowUnknownTVShowType {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u8 var02;
+ /*0x03*/ u8 var03;
+ /*0x04*/ u16 var04;
+ /*0x06*/ u8 language;
+ u8 pad07[12];
+ /*0x13*/ u8 playerName[8];
+};
+
typedef union TVShow {
struct TVShowCommon common;
struct TVShowFanClubLetter fanclubLetter;
@@ -268,6 +279,7 @@ typedef union TVShow {
struct TVShowFanclubOpinions fanclubOpinions;
struct TVShowNameRaterShow nameRaterShow;
struct TVShowMassOutbreak massOutbreak;
+ struct TVShowUnknownTVShowType unknownTvShowType;
} TVShow;
struct MailStruct
diff --git a/src/tv.c b/src/tv.c
index 7d1fc1091..e2e3fa567 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -51,6 +51,7 @@ extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5];
extern void sub_80BEBF4(void);
+extern u16 gUnknown_020387E0;
extern u16 gUnknown_020387E2;
void ClearTVShowData(void)
@@ -67,6 +68,8 @@ void ClearTVShowData(void)
sub_80BEBF4();
}
+extern void sub_80BE138(TVShow *);
+
asm(".section .text_a");
void sub_80BE478(void)
@@ -319,7 +322,7 @@ void UpdateMassOutbreakTimeLeft(u16 arg0)
gSaveBlock1.outbreakUnk5 -= arg0;
}
-void sub_80BE9D4(u8);
+void sub_80BE9D4();
void sub_80BE97C(bool8 flag)
{
@@ -327,7 +330,7 @@ void sub_80BE97C(bool8 flag)
if (flag != 0) {
var0 = gUnknown_020387E2 >> 8;
if (var0 > 4)
- sub_80BE9D4(var0);
+ sub_80BE9D4();
gUnknown_020387E2 &= 0xFF;
var1 = gUnknown_020387E2 & 0xFF;
if (var1 != 0xFF)
@@ -335,7 +338,7 @@ void sub_80BE97C(bool8 flag)
} else {
var0 = gUnknown_020387E2 & 0xFF;
if (var0 > 4)
- sub_80BE9D4(var0);
+ sub_80BE9D4();
gUnknown_020387E2 &= 0xFF00;
var1 = gUnknown_020387E2 >> 8;
if (var1 != 0xFF)
@@ -343,6 +346,35 @@ void sub_80BE97C(bool8 flag)
}
}
+s8 sub_80BF74C(TVShow tvShows[]);
+u8 sub_80BF1B4(s8);
+
+void sub_80BE9D4()
+{
+ TVShow *show;
+ gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(24) != 1) {
+ show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]);
+#ifdef NONMATCHING
+ show->common.var00 = 24;
+ show->common.var01 = 0;
+#else
+ asm(".syntax unified\n\
+ movs r1, 0\n\
+ movs r0, 24\n\
+ strb r0, [r4]\n\
+ strb r1, [r4, 1]\n\
+ .syntax divided\n");
+#endif
+ show->unknownTvShowType.var02 = gUnknown_020387E2 & 0xFF;
+ show->unknownTvShowType.var03 = gUnknown_020387E2 >> 8;
+ show->unknownTvShowType.var04 = gUnknown_020387E0;
+ StringCopy(show->unknownTvShowType.playerName, gSaveBlock2.playerName);
+ sub_80BE138(show);
+ show->unknownTvShowType.language = GAME_LANGUAGE;
+ }
+}
+
asm(".section .text_b");
u8 sub_80BF4F4(u8 arg0)