From 15e3cb5a780a27687dbb4bc163e37e460d74336e Mon Sep 17 00:00:00 2001 From: sozud <122322823+sozud@users.noreply.github.com> Date: Sun, 15 Sep 2024 22:52:05 -0700 Subject: [PATCH] EntityClockHands (#1613) Thanks to sonicdcer --- config/symbols.us.bomar.txt | 1 + src/boss/mar/17FEC.c | 32 +++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/config/symbols.us.bomar.txt b/config/symbols.us.bomar.txt index e6f4b1acc..5f411bba5 100644 --- a/config/symbols.us.bomar.txt +++ b/config/symbols.us.bomar.txt @@ -88,6 +88,7 @@ EntityEnemyBlood = 0x80197720; EntityRoomForeground = 0x80197BD0; BottomCornerText = 0x80197CBC; EntityClockRoomController = 0x80197FEC; +EntityClockHands = 0x80198574; UnkPolyFunc2 = 0x80199868; PrimDecreaseBrightness = 0x801998E8; EntityLifeUpSpawn = 0x8019994C; diff --git a/src/boss/mar/17FEC.c b/src/boss/mar/17FEC.c index 31cdd8a2a..654f6a1c8 100644 --- a/src/boss/mar/17FEC.c +++ b/src/boss/mar/17FEC.c @@ -175,7 +175,37 @@ void EntityClockRoomController(Entity* self) { } } -INCLUDE_ASM("boss/mar/nonmatchings/17FEC", func_us_80198574); +// Entity ID 0x17 +void EntityClockHands(Entity* self) { + Entity* handShadow = &self[5]; + u16 params = self->params; + + if (self->step == 0) { + InitializeEntity(g_eInitGeneric2); + self->animSet = ANIMSET_OVL(1); + self->animCurFrame = params + 25; + self->zPriority = 0x3F - params; + self->drawFlags = FLAG_DRAW_ROTZ; + + // Create hand shadows + CreateEntityFromCurrentEntity(E_DUMMY_1D, handShadow); + handShadow->drawFlags = FLAG_DRAW_UNK8 | FLAG_DRAW_ROTZ; + handShadow->blendMode = 0x10; + handShadow->animSet = ANIMSET_OVL(1); + handShadow->animCurFrame = params + 25; + handShadow->zPriority = 0x3F - params; + handShadow->flags = FLAG_DESTROY_IF_OUT_OF_CAMERA | + FLAG_POS_CAMERA_LOCKED | FLAG_KEEP_ALIVE_OFFCAMERA; + handShadow->posY.i.hi += 4; + } + + self->rotZ = (self->ext.clockRoom.hand * 0x1000) / 3600; + if (params != 0) { + self->rotZ += 0x400; + } + + handShadow->rotZ = self->rotZ &= 0xFFF; +} INCLUDE_ASM("boss/mar/nonmatchings/17FEC", func_us_80198688);