diff options
-rw-r--r-- | asm/tv.s | 71 | ||||
-rw-r--r-- | include/flags.h | 2 | ||||
-rw-r--r-- | include/global.h | 4 | ||||
-rw-r--r-- | src/tv.c | 26 |
4 files changed, 31 insertions, 72 deletions
@@ -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 */ @@ -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) |