1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
#include "global.h"
#include "play_time.h"
extern struct PlayTimeStruct *gPlayTimeRef;
extern struct PlayTimeStruct gPlayTime;
extern void sub_809488C(u8 *r0, u8 *r1, u32);
extern void sub_8094924(u8 *r0, u8 *r1, u32);
void InitializePlayTime(void)
{
gPlayTimeRef = &gPlayTime;
ResetPlayTime(&gPlayTime);
}
struct PlayTimeStruct *GetPlayTime(void)
{
return &gPlayTime;
}
void ResetPlayTime(struct PlayTimeStruct *Time)
{
Time->frames = 0;
Time->seconds = 0;
Time->minutes = 0;
Time->hours = 0;
}
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;
Time->seconds = 0;
Time->minutes++;
if(Time->minutes <= 59)
return;
Time->minutes = 0;
// Casting here for unsigned comparison
temp_store16 = Time->hours;
if(Time->hours <= 9998)
{
temp_store16++;
Time->hours = temp_store16;
}
else
{
Time->seconds = 59;
Time->minutes = 59;
Time->hours= 9999;
}
}
void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinutes, u32 *outSeconds)
{
if(r0->hours <= 9999)
{
*outHours = r0->hours;
*outMinutes = r0->minutes;
*outSeconds = r0->seconds;
}
else
{
*outHours = 9999;
*outMinutes = 59;
*outSeconds = 59;
}
}
void sub_8095044(u8 *r0)
{
sub_809488C(r0, (&(gPlayTimeRef->frames)), 6);
sub_809488C(r0, (&(gPlayTimeRef->seconds)), 6);
sub_809488C(r0, (&(gPlayTimeRef->minutes)), 6);
sub_809488C(r0, (u8 *)(&(gPlayTimeRef->hours)), 14);
}
void sub_8095080(u8 *r0)
{
sub_8094924(r0, (&(gPlayTimeRef->frames)), 6);
sub_8094924(r0, (&(gPlayTimeRef->seconds)), 6);
sub_8094924(r0, (&(gPlayTimeRef->minutes)), 6);
sub_8094924(r0, (u8 *)(&(gPlayTimeRef->hours)), 14);
}
|