summaryrefslogtreecommitdiff
path: root/src/code_8094F88.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2020-12-17 13:17:58 -0600
committerGitHub <noreply@github.com>2020-12-17 13:17:58 -0600
commit096de8d9b2ffd90c52e790296bfd7c5436d45ca3 (patch)
tree9c5af2e04dea05221c71946a5dfc06471f77801d /src/code_8094F88.c
parentbc504264f1e54b3c1e482710c592e5549828bfe1 (diff)
parentf90f3affeb9b0a66aa7df68f5fdecd692033faf9 (diff)
Merge pull request #12 from SethBarberee/master
Merge work from SethBarberee/pmd-red into pret.
Diffstat (limited to 'src/code_8094F88.c')
-rw-r--r--src/code_8094F88.c138
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;
+}
+
+