summaryrefslogtreecommitdiff
path: root/src/wallclock.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wallclock.c')
-rw-r--r--src/wallclock.c54
1 files changed, 52 insertions, 2 deletions
diff --git a/src/wallclock.c b/src/wallclock.c
index c54fd269e..6c78d72a1 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -48,8 +48,8 @@ static bool32 MoveClockHand(u8 taskId, u8 command);
static void _12HourClockFixAMPM(u8 taskId, u8 command);
static void sub_8135130(u8 taskId);
static void sub_81351AC(struct Sprite *sprite);
-void sub_8135244(struct Sprite *sprite);
-void sub_81352DC(struct Sprite *sprite);
+static void sub_8135244(struct Sprite *sprite);
+static void sub_81352DC(struct Sprite *sprite);
void sub_8135380(struct Sprite *sprite);
// rodata
@@ -957,3 +957,53 @@ static void sub_81351AC(struct Sprite *sprite)
sprite->pos2.x = xhat;
sprite->pos2.y = yhat;
}
+
+static void sub_8135244(struct Sprite *sprite)
+{
+ u16 angle = gTasks[sprite->data0].data[WALL_CLOCK_TASK_HOUR_HAND_ANGLE];
+ s16 sin = Sin2(angle) / 16;
+ s16 cos = Cos2(angle) / 16;
+ u16 xhat;
+ u16 yhat;
+ SetOamMatrix(1, cos, sin, -sin, cos);
+ xhat = gUnknown_085B22D0[angle][0];
+ yhat = gUnknown_085B22D0[angle][1];
+ if (xhat > 0x80)
+ {
+ xhat |= 0xff00;
+ }
+ if (yhat > 0x80)
+ {
+ yhat |= 0xff00;
+ }
+ sprite->pos2.x = xhat;
+ sprite->pos2.y = yhat;
+}
+
+static void sub_81352DC(struct Sprite *sprite)
+{
+ if (gTasks[sprite->data0].data[WALL_CLOCK_TASK_12HRCLOCK_AM_PM])
+ {
+ if ((u16)(sprite->data1 - 60) < 30)
+ {
+ sprite->data1 += 5;
+ }
+ if (sprite->data1 < 60)
+ {
+ sprite->data1++;
+ }
+ }
+ else
+ {
+ if ((u16)(sprite->data1 - 46) < 30)
+ {
+ sprite->data1 -= 5;
+ }
+ if (sprite->data1 > 75)
+ {
+ sprite->data1--;
+ }
+ }
+ sprite->pos2.x = Cos2(sprite->data1) * 30 / 0x1000;
+ sprite->pos2.y = Sin2(sprite->data1) * 30 / 0x1000;
+}