diff options
Diffstat (limited to 'src/code_8094F88.c')
-rw-r--r-- | src/code_8094F88.c | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/src/code_8094F88.c b/src/code_8094F88.c new file mode 100644 index 0000000..95854d3 --- /dev/null +++ b/src/code_8094F88.c @@ -0,0 +1,138 @@ +#include "global.h" +#include "time.h" + +extern struct PlayTimeStruct *gUnknown_203B47C; +extern struct PlayTimeStruct gPlayTime; + +extern u8 gUnknown_2038C88; +extern u8 gUnknown_2039288; +extern u32 gUnknown_20392E8; +extern u32 gUnknown_20393C0; +extern u8 *gUnknown_203B480; +extern u8 *gUnknown_203B484; +extern u32 *gUnknown_203B488; +extern u32 *gUnknown_203B48C; + + +extern void sub_809488C(u32, u32, u32); +extern void sub_8094924(u32, u32, u32); + + +// Forward Declaration +void ResetPlayTime(struct PlayTimeStruct *Time); + + +void sub_8094F88(void) +{ + gUnknown_203B47C = &gPlayTime; + ResetPlayTime(&gPlayTime); +} + +struct PlayTimeStruct *sub_8094FA0(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(u32 r0) +{ + sub_809488C(r0, (u32)(gUnknown_203B47C) + 4, 0x6); + sub_809488C(r0, (u32)(gUnknown_203B47C) + 3, 0x6); + sub_809488C(r0, (u32)(gUnknown_203B47C) + 2, 0x6); + sub_809488C(r0, (u32)(gUnknown_203B47C), 0xE); +} + +void sub_8095080(u32 r0) +{ + sub_8094924(r0, (u32)(gUnknown_203B47C) + 4, 0x6); + sub_8094924(r0, (u32)(gUnknown_203B47C) + 3, 0x6); + sub_8094924(r0, (u32)(gUnknown_203B47C) + 2, 0x6); + sub_8094924(r0, (u32)(gUnknown_203B47C), 0xE); +} + +void sub_80950BC(void) +{ + gUnknown_203B480 = &gUnknown_2038C88; + gUnknown_203B484 = &gUnknown_2039288; + gUnknown_203B488 = &gUnknown_20392E8; + gUnknown_203B48C = &gUnknown_20393C0; +} + +u8 *sub_80950F8(void) +{ + return &gUnknown_2038C88; +} + +u8 *sub_8095100(void) +{ + return &gUnknown_2039288; +} + +u32 *sub_8095108(void) +{ + return &gUnknown_20392E8; +} + +u32 *sub_8095110(void) +{ + return &gUnknown_20393C0; +} + + |