diff options
-rw-r--r-- | asm/code_800D090.s | 4 | ||||
-rw-r--r-- | asm/code_8027C84.s | 2 | ||||
-rw-r--r-- | asm/code_803D110.s | 4 | ||||
-rw-r--r-- | asm/code_80521D0.s | 2 | ||||
-rw-r--r-- | asm/code_8098468.s | 2 | ||||
-rw-r--r-- | asm/code_80A26CC.s | 196 | ||||
-rw-r--r-- | include/time.h | 7 | ||||
-rw-r--r-- | src/code_8040094.c | 6 | ||||
-rw-r--r-- | src/code_8094F88.c | 44 | ||||
-rw-r--r-- | src/code_8098BDC.c | 7 |
10 files changed, 39 insertions, 235 deletions
diff --git a/asm/code_800D090.s b/asm/code_800D090.s index 691f0f6..0733546 100644 --- a/asm/code_800D090.s +++ b/asm/code_800D090.s @@ -7545,7 +7545,7 @@ sub_8010960: bl sub_80060EC ldr r0, _080109FC ldr r0, [r0] - bl sub_8094FB4 + bl IncrementPlayTime bl sub_800CB20 bl sub_800485C bl CopySpritesToOam @@ -9175,7 +9175,7 @@ sub_801169C: bl sub_80060EC ldr r0, _0801175C ldr r0, [r0] - bl sub_8094FB4 + bl IncrementPlayTime bl sub_800CB20 bl sub_800485C bl CopySpritesToOam diff --git a/asm/code_8027C84.s b/asm/code_8027C84.s index 91d021d..a099f3d 100644 --- a/asm/code_8027C84.s +++ b/asm/code_8027C84.s @@ -35186,7 +35186,7 @@ _08039696: add r1, sp, 0x144 add r2, sp, 0x148 add r3, sp, 0x14C - bl sub_8095014 + bl DeconstructPlayTime ldr r0, [r7] movs r5, 0x84 lsls r5, 2 diff --git a/asm/code_803D110.s b/asm/code_803D110.s index 88bbc1f..63efd41 100644 --- a/asm/code_803D110.s +++ b/asm/code_803D110.s @@ -2673,7 +2673,7 @@ _0803E5A2: str r0, [r1] ldr r0, _0803E65C ldr r0, [r0] - bl sub_8094FB4 + bl IncrementPlayTime bl sub_800CB20 bl sub_800485C bl CopySpritesToOam @@ -2748,7 +2748,7 @@ sub_803E668: str r0, [r1] ldr r0, _0803E6FC ldr r0, [r0] - bl sub_8094FB4 + bl IncrementPlayTime bl sub_800CB20 bl sub_800485C bl CopySpritesToOam diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index ee13c00..a2513ac 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -26632,7 +26632,7 @@ _0805FA62: add r2, sp, 0x8 add r3, sp, 0xC add r1, sp, 0x4 - bl sub_8095014 + bl DeconstructPlayTime movs r1, 0x9E lsls r1, 1 adds r0, r7, r1 diff --git a/asm/code_8098468.s b/asm/code_8098468.s index a45dba8..4a9a111 100644 --- a/asm/code_8098468.s +++ b/asm/code_8098468.s @@ -510,7 +510,7 @@ _080988F8: bl sub_8011860 ldr r0, _08098978 ldr r0, [r0] - bl sub_8094FB4 + bl IncrementPlayTime bl sub_800CB20 bl sub_800485C bl nullsub_120 diff --git a/asm/code_80A26CC.s b/asm/code_80A26CC.s index 76736c8..8a533e5 100644 --- a/asm/code_80A26CC.s +++ b/asm/code_80A26CC.s @@ -5,202 +5,6 @@ .text - thumb_func_start sub_80A26CC -sub_80A26CC: - lsls r0, 16 - movs r1, 0xDC - lsls r1, 14 - adds r0, r1 - asrs r0, 16 - bx lr - thumb_func_end sub_80A26CC - - thumb_func_start sub_80A26D8 -sub_80A26D8: - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 -_080A26E0: - lsls r0, r5, 16 - asrs r4, r0, 16 - adds r0, r4, 0 - bl sub_80A2608 - adds r1, r0, 0 - ldrb r0, [r1, 0x11] - cmp r0, 0 - beq _080A26FC - ldrb r0, [r1, 0xC] - cmp r0, r6 - bne _080A26FC - adds r0, r4, 0 - b _080A2706 -_080A26FC: - adds r5, 0x1 - cmp r5, 0x52 - ble _080A26E0 - movs r0, 0x1 - negs r0, r0 -_080A2706: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80A26D8 - - thumb_func_start sub_80A270C -sub_80A270C: - push {lr} - lsls r0, 16 - ldr r1, _080A2724 - asrs r0, 15 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_80A2608 - ldrb r0, [r0, 0xC] - pop {r1} - bx r1 - .align 2, 0 -_080A2724: .4byte gUnknown_8116F9A - thumb_func_end sub_80A270C - - thumb_func_start sub_80A2728 -sub_80A2728: - push {lr} - lsls r0, 16 - movs r1, 0xDC - lsls r1, 14 - adds r0, r1 - asrs r0, 16 - bl sub_80A2608 - ldrb r0, [r0, 0xC] - pop {r1} - bx r1 - thumb_func_end sub_80A2728 - - thumb_func_start sub_80A2740 -sub_80A2740: - push {lr} - lsls r0, 16 - asrs r0, 16 - bl sub_80A2608 - ldrb r0, [r0, 0xC] - pop {r1} - bx r1 - thumb_func_end sub_80A2740 - - thumb_func_start sub_80A2750 -sub_80A2750: - push {r4,lr} - lsls r0, 16 - asrs r1, r0, 16 - adds r2, r1, 0 - cmp r1, 0x50 - bne _080A2760 - movs r0, 0x3 - b _080A27C4 -_080A2760: - cmp r1, 0x51 - beq _080A27BE - cmp r1, 0x52 - beq _080A2780 - adds r0, r1, 0 - subs r0, 0x28 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xE - bls _080A27BE - adds r0, r1, 0 - subs r0, 0x37 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x18 - bhi _080A2784 -_080A2780: - movs r0, 0x4 - b _080A27C4 -_080A2784: - adds r0, r2, 0 - bl sub_80A2608 - adds r4, r0, 0 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080A27C2 - movs r0, 0x5 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _080A27C2 - movs r1, 0xE - ldrsh r0, [r4, r1] - bl sub_80973F4 - lsls r0, 24 - cmp r0, 0 - beq _080A27C2 - movs r0, 0x1 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _080A27C2 -_080A27BE: - movs r0, 0x2 - b _080A27C4 -_080A27C2: - movs r0, 0x1 -_080A27C4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80A2750 - - thumb_func_start sub_80A27CC -sub_80A27CC: - push {r4,r5,lr} - lsls r0, 16 - asrs r4, r0, 16 - adds r5, r4, 0 - adds r0, r4, 0 - bl sub_80A2620 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080A281A - movs r0, 0x5 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _080A281A - adds r0, r4, 0 - bl sub_8097384 - lsls r0, 24 - cmp r0, 0 - bne _080A2816 - movs r0, 0x1 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _080A281A - adds r0, r5, 0 - bl sub_80973F4 - lsls r0, 24 - cmp r0, 0 - beq _080A281A -_080A2816: - movs r0, 0x1 - b _080A281C -_080A281A: - movs r0, 0 -_080A281C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80A27CC - thumb_func_start sub_80A2824 sub_80A2824: push {r4-r6,lr} diff --git a/include/time.h b/include/time.h index b052ea1..9aeb28d 100644 --- a/include/time.h +++ b/include/time.h @@ -3,15 +3,16 @@ struct PlayTimeStruct { - s16 unk0; - u8 hours; + s16 hours; u8 minutes; u8 seconds; + u8 frames; }; -void sub_8094FB4(struct PlayTimeStruct *Time); +void IncrementPlayTime(struct PlayTimeStruct *Time); void ResetPlayTime(struct PlayTimeStruct *Time); struct PlayTimeStruct *sub_8094FA0(void); +void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinutes, u32 *outSeconds); void sub_8094F88(void); diff --git a/src/code_8040094.c b/src/code_8040094.c index c384b51..547569c 100644 --- a/src/code_8040094.c +++ b/src/code_8040094.c @@ -1,11 +1,11 @@ #include "global.h" +#include "time.h" extern u8 *gUnknown_203B418; -extern u32 gUnknown_203B47C; +extern struct PlayTimeStruct *gUnknown_203B47C; extern void sub_803F7BC(void); extern void sub_80060EC(void); -extern void sub_8094FB4(u32); extern void sub_800CB20(void); extern void sub_800485C(void); extern void xxx_call_update_bg_sound_input(void); @@ -17,7 +17,7 @@ void sub_8040094(u8 r0) gUnknown_203B418[0x18217] = r0; sub_803F7BC(); sub_80060EC(); - sub_8094FB4(gUnknown_203B47C); + IncrementPlayTime(gUnknown_203B47C); sub_800CB20(); sub_800485C(); xxx_call_update_bg_sound_input(); diff --git a/src/code_8094F88.c b/src/code_8094F88.c index dea2561..95854d3 100644 --- a/src/code_8094F88.c +++ b/src/code_8094F88.c @@ -35,16 +35,21 @@ struct PlayTimeStruct *sub_8094FA0(void) void ResetPlayTime(struct PlayTimeStruct *Time) { + Time->frames = 0; Time->seconds = 0; Time->minutes = 0; Time->hours = 0; - Time->unk0 = 0; } -void sub_8094FB4(struct PlayTimeStruct *Time) +void IncrementPlayTime(struct PlayTimeStruct *Time) { u16 temp_store16; + Time->frames++; + if(Time->frames <= 59) + return; + Time->frames = 0; + Time->seconds++; if(Time->seconds <= 59) return; @@ -55,42 +60,35 @@ void sub_8094FB4(struct PlayTimeStruct *Time) return; Time->minutes = 0; - Time->hours++; - if(Time->hours <= 59) - return; - Time->hours = 0; - - // ??? - temp_store16 = Time->unk0; - if(Time->unk0 <= 9998) + // Casting here for unsigned comparison + temp_store16 = Time->hours; + if(Time->hours <= 9998) { temp_store16++; - Time->unk0 = temp_store16; + Time->hours = temp_store16; } else { + Time->seconds = 59; Time->minutes = 59; - Time->hours = 59; - Time->unk0 = 9999; + Time->hours= 9999; } } -void sub_8095014(struct PlayTimeStruct *r0, u32 *r1, u32 *r2, u32 *r3) +void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinutes, u32 *outSeconds) { - u32 temp; - if(r0->unk0 <= 9999) + if(r0->hours <= 9999) { - *r1 = r0->unk0; - *r2 = r0->hours; - temp = r0->minutes; + *outHours = r0->hours; + *outMinutes = r0->minutes; + *outSeconds = r0->seconds; } else { - *r1 = 9999; - *r2 = 59; - temp = 59; + *outHours = 9999; + *outMinutes = 59; + *outSeconds = 59; } - *r3 = temp; } void sub_8095044(u32 r0) diff --git a/src/code_8098BDC.c b/src/code_8098BDC.c index e35500a..b47d39c 100644 --- a/src/code_8098BDC.c +++ b/src/code_8098BDC.c @@ -1,6 +1,7 @@ #include "global.h" +#include "time.h" -extern u32 gUnknown_203B47C; +extern struct PlayTimeStruct *gUnknown_203B47C; extern u32 gUnknown_20398A8; extern u32 gUnknown_8115F5C; extern u32 gUnknown_20398AC; @@ -21,7 +22,7 @@ extern void sub_80A6E80(); extern void sub_8099BE4(); extern void sub_8099744(); extern void sub_8011860(); -extern void sub_8094FB4(u32 r0); +extern void IncrementPlayTime(struct PlayTimeStruct *Time); extern void sub_800CB20(); extern void sub_800485C(); extern void nullsub_120(); @@ -69,7 +70,7 @@ void sub_8098BDC(void) sub_8099BE4(); sub_8099744(); sub_8011860(); - sub_8094FB4(gUnknown_203B47C); + IncrementPlayTime(gUnknown_203B47C); sub_800CB20(); sub_800485C(); nullsub_120(); |