summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-05-17 22:20:27 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-05-17 22:20:27 -0400
commit0aabedd7514ad7831ec76c93e4e9e83e3c68809d (patch)
treede286e8495e5dbecf39ed45e79e43483a2e7a04d
parentebea499a3f052456ece4272ae06c55eee0194cdf (diff)
More tv fns
-rw-r--r--asm/tv.s104
-rw-r--r--include/global.h32
-rw-r--r--src/tv.c75
3 files changed, 106 insertions, 105 deletions
diff --git a/asm/tv.s b/asm/tv.s
index f0a53c5c6..0537eac33 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -1613,110 +1613,6 @@ _080BE474: .4byte gSaveBlock2
.section .text_80BE8EC
- thumb_func_start sub_80BEA50
-sub_80BEA50: @ 80BEA50
- ldr r1, _080BEA58 @ =gUnknown_020387E0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080BEA58: .4byte gUnknown_020387E0
- thumb_func_end sub_80BEA50
-
- thumb_func_start sub_80BEA5C
-sub_80BEA5C: @ 80BEA5C
- push {lr}
- ldr r1, _080BEA78 @ =gSaveBlock1 + 0x2A98
- ldrb r0, [r1]
- cmp r0, 0x19
- bne _080BEA84
- ldrh r0, [r1, 0x2]
- cmp r0, 0x13
- bhi _080BEA80
- ldr r2, _080BEA7C @ =0xfffffca0
- adds r0, r1, r2
- movs r1, 0x18
- bl sub_80BF55C
- b _080BEA84
- .align 2, 0
-_080BEA78: .4byte gSaveBlock1 + 0x2A98
-_080BEA7C: .4byte 0xfffffca0
-_080BEA80:
- bl sub_80BEA88
-_080BEA84:
- pop {r0}
- bx r0
- thumb_func_end sub_80BEA5C
-
- thumb_func_start sub_80BEA88
-sub_80BEA88: @ 80BEA88
- push {r4-r7,lr}
- ldr r5, _080BEB0C @ =gSaveBlock1 + 0x2A98
- ldr r0, _080BEB10 @ =0x0000ffff
- bl sub_80BF77C
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080BEB04
- ldr r0, _080BEB14 @ =0xfffffca0
- adds r7, r5, r0
- adds r0, r7, 0
- bl sub_80BF74C
- ldr r4, _080BEB18 @ =gUnknown_03005D38
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BEB04
- movs r0, 0x19
- bl sub_80BF1B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BEB04
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- adds r4, r7
- movs r0, 0x19
- strb r0, [r4]
- strb r6, [r4, 0x1]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- movs r0, 0x5
- bl GetGameStat
- ldrh r1, [r5, 0x6]
- subs r0, r1
- strh r0, [r4, 0x6]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x8]
- ldrb r0, [r5, 0xA]
- strb r0, [r4, 0xA]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, _080BEB1C @ =gSaveBlock2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80BE138
- movs r0, GAME_LANGUAGE
- strb r0, [r4, 0xB]
-_080BEB04:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BEB0C: .4byte gSaveBlock1 + 0x2A98
-_080BEB10: .4byte 0x0000ffff
-_080BEB14: .4byte 0xfffffca0
-_080BEB18: .4byte gUnknown_03005D38
-_080BEB1C: .4byte gSaveBlock2
- thumb_func_end sub_80BEA88
-
thumb_func_start sub_80BEB20
sub_80BEB20: @ 80BEB20
push {r4-r6,lr}
diff --git a/include/global.h b/include/global.h
index 4790c4ed2..522ec065b 100644
--- a/include/global.h
+++ b/include/global.h
@@ -272,6 +272,19 @@ struct TVShowUnknownTVShowType {
/*0x13*/ u8 playerName[8];
};
+struct TVShowUnknownTVShowType2 {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u16 var04;
+ /*0x06*/ u16 var06;
+ /*0x08*/ u16 var08;
+ /*0x0a*/ u8 var0a;
+ /*0x0b*/ u8 language;
+ u8 pad0c[7];
+ /*0x13*/ u8 playerName[8];
+};
+
typedef union TVShow {
struct TVShowCommon common;
struct TVShowFanClubLetter fanclubLetter;
@@ -280,6 +293,7 @@ typedef union TVShow {
struct TVShowNameRaterShow nameRaterShow;
struct TVShowMassOutbreak massOutbreak;
struct TVShowUnknownTVShowType unknownTvShowType;
+ struct TVShowUnknownTVShowType2 unknownTvShowType2;
} TVShow;
struct MailStruct
@@ -339,6 +353,21 @@ 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 UnknownSaveStruct2ABC {
+ u8 pad00[4];
+};
+
struct SaveBlock1 /* 0x02025734 */
{
/*0x00*/ struct Coords16 pos;
@@ -389,7 +418,8 @@ struct SaveBlock1 /* 0x02025734 */
/*0x272C*/ u8 decorCushion[10];
/*0x2736*/ u8 padding_2736[2];
/*0x2738*/ TVShow tvShows[24];
- /*0x2A98*/ u8 filler_2A98[0x64];
+ /*0x2A98*/ struct UnknownSaveStruct2A98 unknown_2A98;
+ /*0x2ABC*/ struct UnknownSaveStruct2ABC unknown_2ABC[16];
/*0x2AFC*/ u16 outbreakPokemonSpecies;
/*0x2AFE*/ u8 outbreakLocationMapNum;
/*0x2AFF*/ u8 outbreakLocationMapGroup;
diff --git a/src/tv.c b/src/tv.c
index e2e3fa567..ddfb57c45 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -375,6 +375,81 @@ void sub_80BE9D4()
}
}
+void sub_80BEA50(u16 var)
+{
+ gUnknown_020387E0 = var;
+}
+
+void sub_80BF55C(TVShow tvShow[], u8 showidx);
+void sub_80BEA88(void);
+
+void sub_80BEA5C(u16 arg0)
+{
+ struct UnknownSaveStruct2A98 *unk_2a98;
+ unk_2a98 = &gSaveBlock1.unknown_2A98;
+ if (unk_2a98->var00 == 0x19)
+ {
+ if (unk_2a98->var02 <= 0x13)
+ {
+ sub_80BF55C(gSaveBlock1.tvShows, 0x18);
+ }
+ else
+ {
+ sub_80BEA88();
+ }
+ }
+}
+void sub_80BEA88(void)
+{
+ struct UnknownSaveStruct2A98 *unk_2a98;
+ TVShow *tvShow;
+ u8 rval;
+ unk_2a98 = &gSaveBlock1.unknown_2A98;
+ rval = sub_80BF77C(0xFFFF);
+ if (rval == 0)
+ {
+ gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(0x19) != 1)
+ {
+ tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
+ tvShow->unknownTvShowType2.var00 = 0x19;
+ tvShow->unknownTvShowType2.var01 = rval;
+ tvShow->unknownTvShowType2.var02 = unk_2a98->var02;
+ tvShow->unknownTvShowType2.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06;
+ tvShow->unknownTvShowType2.var04 = unk_2a98->var04;
+ tvShow->unknownTvShowType2.var08 = unk_2a98->var08;
+ tvShow->unknownTvShowType2.var0a = unk_2a98->var0a;
+ StringCopy(tvShow->unknownTvShowType2.playerName, gSaveBlock2.playerName);
+ sub_80BE138(tvShow);
+ tvShow->unknownTvShowType2.language = GAME_LANGUAGE;
+ }
+ }
+}
+
+// void sub_80BEB20(void)
+// {
+ // struct UnknownSaveStruct2ABC *unk_2abc;
+ // u16 rval16;
+ // u16 val;
+ // unk_2abc = &gSaveBlock1.unknown_2ABC;
+ // TVShow *tvShow;
+ // if (FlagGet(SYS_GAME_CLEAR) != 0)
+ // {
+ // gUnknown_03005D38.var0 = sub_80BEBC8(unk_2abc);
+ // if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1)
+ // {
+ // rval16 = Random();
+ // val = (rval16 % 3) + 1;
+ // if (sub_80BEE48(val) != 1)
+ // {
+ // tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
+ // unk_2abc[gUnknown_03005D38.var0][0] = val;
+ // to do
+ // }
+ // }
+ // }
+// }
+
asm(".section .text_b");
u8 sub_80BF4F4(u8 arg0)