summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/wallclock.s76
-rw-r--r--src/wallclock.c36
2 files changed, 35 insertions, 77 deletions
diff --git a/asm/wallclock.s b/asm/wallclock.s
index 7ed41b39c..31f57120f 100644
--- a/asm/wallclock.s
+++ b/asm/wallclock.s
@@ -5,82 +5,6 @@
.text
- thumb_func_start sub_8134FD4
-sub_8134FD4: @ 8134FD4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x3C
- bls _08134FE4
- movs r0, 0x6
- b _08134FF6
-_08134FE4:
- cmp r0, 0x1E
- bls _08134FEC
- movs r0, 0x3
- b _08134FF6
-_08134FEC:
- cmp r1, 0xA
- bhi _08134FF4
- movs r0, 0x1
- b _08134FF6
-_08134FF4:
- movs r0, 0x2
-_08134FF6:
- pop {r1}
- bx r1
- thumb_func_end sub_8134FD4
-
- thumb_func_start sub_8134FFC
-sub_8134FFC: @ 8134FFC
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r2, 24
- adds r0, r2, 0
- bl sub_8134FD4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r5, 0x1
- beq _0813501E
- cmp r5, 0x2
- beq _08135030
- b _08135044
-_0813501E:
- cmp r4, 0
- beq _08135026
- subs r0, r4, r1
- b _0813503C
-_08135026:
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- b _0813503C
-_08135030:
- movs r0, 0xB4
- lsls r0, 1
- subs r0, r1
- cmp r4, r0
- bge _08135042
- adds r0, r4, r1
-_0813503C:
- lsls r0, 16
- lsrs r4, r0, 16
- b _08135044
-_08135042:
- movs r4, 0
-_08135044:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8134FFC
-
thumb_func_start sub_813504C
sub_813504C: @ 813504C
push {r4-r6,lr}
diff --git a/src/wallclock.c b/src/wallclock.c
index af343d1fc..51f6c530d 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -34,7 +34,7 @@ static void sub_8134F10(u8 taskId);
static void sub_8134F40(u8 taskId);
static void sub_8134F78(u8 taskId);
static void sub_8134FB0(u8 taskId);
-u16 sub_8134FFC(u16 a0, u8 a1, u8 a2);
+static u16 sub_8134FFC(u16 a0, u8 a1, u8 a2);
void sub_813504C(u8 taskId, u8 a1);
void sub_8135130(u8 taskId);
void sub_81351AC(struct Sprite *sprite);
@@ -798,3 +798,37 @@ static void sub_8134FB0(u8 taskId)
SetMainCallback2(gMain.savedCallback);
}
}
+
+static u8 sub_8134FD4(u16 a0)
+{
+ if (a0 > 60)
+ {
+ return 6;
+ }
+ if (a0 > 30)
+ {
+ return 3;
+ }
+ if (a0 > 10)
+ {
+ return 2;
+ }
+ return 1;
+}
+
+static u16 sub_8134FFC(u16 a0, u8 a1, u8 a2)
+{
+ u8 r1 = sub_8134FD4(a2);
+ switch (a1)
+ {
+ case 1:
+ if (a0) a0 -= r1;
+ else a0 = 360 - r1;
+ break;
+ case 2:
+ if (a0 < 360 - r1) a0 += r1;
+ else a0 = 0;
+ break;
+ }
+ return a0;
+}