diff --git a/asm/minishLight.s b/asm/minishLight.s deleted file mode 100644 index f824b8a3..00000000 --- a/asm/minishLight.s +++ /dev/null @@ -1,81 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start MinishLight -MinishLight: @ 0x0809F828 - push {lr} - ldr r2, _0809F83C @ =gUnk_081247F8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0809F83C: .4byte gUnk_081247F8 - - thumb_func_start sub_0809F840 -sub_0809F840: @ 0x0809F840 - push {lr} - adds r2, r0, #0 - movs r1, #0 - movs r0, #1 - strb r0, [r2, #0xc] - strb r1, [r2, #0x1e] - movs r0, #0x20 - strb r0, [r2, #0xe] - strb r1, [r2, #0xf] - ldrb r0, [r2, #0xb] - cmp r0, #0 - beq _0809F860 - ldrb r0, [r2, #0x18] - movs r1, #0x40 - orrs r0, r1 - strb r0, [r2, #0x18] -_0809F860: - adds r0, r2, #0 - bl UpdateSpriteForCollisionLayer - pop {pc} - - thumb_func_start sub_0809F868 -sub_0809F868: @ 0x0809F868 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - movs r2, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0809F8A2 - ldrb r0, [r1, #0xf] - cmp r0, #0 - bne _0809F890 - ldrb r0, [r1, #0x1e] - adds r0, #1 - strb r0, [r1, #0x1e] - ands r0, r2 - cmp r0, #3 - bne _0809F89E - movs r0, #1 - b _0809F89C -_0809F890: - ldrb r0, [r1, #0x1e] - subs r0, #1 - strb r0, [r1, #0x1e] - ands r0, r2 - cmp r0, #0 - bne _0809F89E -_0809F89C: - strb r0, [r1, #0xf] -_0809F89E: - movs r0, #0x20 - strb r0, [r1, #0xe] -_0809F8A2: - pop {pc} diff --git a/linker.ld b/linker.ld index 8720510b..864d4c11 100644 --- a/linker.ld +++ b/linker.ld @@ -839,7 +839,7 @@ SECTIONS { src/object/palaceArchway.o(.text); asm/objectA2.o(.text); src/object/cloud.o(.text); - asm/minishLight.o(.text); + src/object/minishLight.o(.text); asm/objectA5.o(.text); asm/objectA6.o(.text); asm/objectA7.o(.text); diff --git a/src/object/minishLight.c b/src/object/minishLight.c new file mode 100644 index 00000000..8982a49a --- /dev/null +++ b/src/object/minishLight.c @@ -0,0 +1,40 @@ +#include "global.h" +#include "entity.h" + +extern void (* const gUnk_081247F8[])(Entity*); + +void MinishLight(Entity* this) +{ + gUnk_081247F8[this->action](this); +} + +void sub_0809F840(Entity* this) +{ + this->action = 1; + this->frameIndex = 0; + this->actionDelay = 0x20; + this->field_0xf = 0; + + if (this->entityType.parameter != 0) + { + this->spriteSettings.b.flipX = 1; + } + + UpdateSpriteForCollisionLayer(this); +} + +void sub_0809F868(Entity* this) +{ + if (--this->actionDelay == 0) { + if (this->field_0xf == 0) { + if (++this->frameIndex == 3) { + this->field_0xf = 1; + } + } else { + if (--this->frameIndex == 0) { + this->field_0xf = 0; + } + } + this->actionDelay = 32; + } +}