summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_800D090.s4
-rw-r--r--asm/code_8027C84.s2
-rw-r--r--asm/code_803D110.s4
-rw-r--r--asm/code_80521D0.s2
-rw-r--r--asm/code_8098468.s2
-rw-r--r--asm/code_80A26CC.s196
-rw-r--r--include/time.h7
-rw-r--r--src/code_8040094.c6
-rw-r--r--src/code_8094F88.c44
-rw-r--r--src/code_8098BDC.c7
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();