summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tv.s71
-rw-r--r--include/flags.h2
-rw-r--r--include/global.h4
-rw-r--r--src/tv.c26
4 files changed, 31 insertions, 72 deletions
diff --git a/asm/tv.s b/asm/tv.s
index f16959815..3769408c4 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -2074,77 +2074,6 @@ _080BEE7C: .4byte gSaveBlock1
_080BEE80: .4byte 0x00002abc
thumb_func_end sub_80BEE48
- thumb_func_start sub_80BEE84
-sub_80BEE84: @ 80BEE84
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r5, 0
- ldr r0, _080BEEB8 @ =gSaveBlock1
- mov r8, r0
-_080BEE94:
- lsls r0, r5, 2
- mov r1, r8
- adds r2, r0, r1
- ldr r3, _080BEEBC @ =0x00002abc
- adds r1, r2, r3
- ldrb r1, [r1]
- adds r6, r0, 0
- cmp r1, 0
- beq _080BEEEC
- ldr r1, _080BEEC0 @ =0x00002abe
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r7
- bcs _080BEEC4
- adds r0, r5, 0
- bl sub_80BEC10
- b _080BEEEC
- .align 2, 0
-_080BEEB8: .4byte gSaveBlock1
-_080BEEBC: .4byte 0x00002abc
-_080BEEC0: .4byte 0x00002abe
-_080BEEC4:
- ldr r3, _080BEF04 @ =0x00002abd
- adds r4, r2, r3
- ldrb r0, [r4]
- cmp r0, 0
- bne _080BEEDE
- ldr r0, _080BEF08 @ =0x00000804
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BEEDE
- strb r0, [r4]
-_080BEEDE:
- mov r0, r8
- adds r1, r6, r0
- ldr r3, _080BEF0C @ =0x00002abe
- adds r1, r3
- ldrh r0, [r1]
- subs r0, r7
- strh r0, [r1]
-_080BEEEC:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _080BEE94
- bl sub_80BEC40
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BEF04: .4byte 0x00002abd
-_080BEF08: .4byte 0x00000804
-_080BEF0C: .4byte 0x00002abe
- thumb_func_end sub_80BEE84
-
.section .text_80BF544
thumb_func_start sub_80BFF68
diff --git a/include/flags.h b/include/flags.h
index d2aa0c47f..0e408a833 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -63,3 +63,5 @@
#define SPECIAL_FLAG_1 0x4001
#endif // GUARD_FLAGS_H
+
+bool8 FlagGet(u16 flag);
diff --git a/include/global.h b/include/global.h
index 086b858d0..9a9e08fbb 100644
--- a/include/global.h
+++ b/include/global.h
@@ -393,7 +393,9 @@ struct SaveTVStruct {
};
struct UnknownSaveStruct2ABC {
- u8 pad00[4];
+ u8 val0;
+ u8 val1;
+ u16 val2;
};
struct SaveBlock1 /* 0x02025734 */
diff --git a/src/tv.c b/src/tv.c
index 7c22d737e..53d70b6a5 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -459,8 +459,34 @@ void sub_80BEA88(void)
asm(".section .text_b");
void sub_80BF6D8(void);
+void sub_80BEC10(u8);
+void sub_80BEC40(void);
void sub_80BF588(TVShow tvShows[]);
+void sub_80BEE84(u16 var0)
+{
+ u8 i;
+ for (i=0; i<16; i++)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val0)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val2 < var0)
+ {
+ sub_80BEC10(i);
+ }
+ else
+ {
+ if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1)
+ {
+ gSaveBlock1.unknown_2ABC[i].val1 = 1;
+ }
+ gSaveBlock1.unknown_2ABC[i].val2 -= var0;
+ }
+ }
+ }
+ sub_80BEC40();
+}
+
void sub_80BEF10(u8 strvaridx, u8 rank)
{
switch (rank)