diff --git a/asm/tingleSiblings.s b/asm/tingleSiblings.s index d4cb0bc2..e8d3f96c 100644 --- a/asm/tingleSiblings.s +++ b/asm/tingleSiblings.s @@ -6,85 +6,6 @@ .text - - thumb_func_start TingleSiblings -TingleSiblings: @ 0x08064D58 - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08064D6E - adds r0, r2, #0 - bl sub_08064DE4 - b _08064D74 -_08064D6E: - adds r0, r2, #0 - bl sub_08064D78 -_08064D74: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08064D78 -sub_08064D78: @ 0x08064D78 - push {lr} - ldr r2, _08064D8C @ =gUnk_0810FBFC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08064D8C: .4byte gUnk_0810FBFC - - thumb_func_start sub_08064D90 -sub_08064D90: @ 0x08064D90 - push {r4, lr} - adds r4, r0, #0 - movs r1, #2 - bl InitAnimationForceUpdate - movs r0, #1 - strb r0, [r4, #0xf] - pop {r4, pc} - - thumb_func_start sub_08064DA0 -sub_08064DA0: @ 0x08064DA0 - push {r4, lr} - adds r4, r0, #0 - bl sub_08064EE8 - adds r0, r4, #0 - adds r0, #0x39 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08064DC8 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #6 - bl InitAnimationForceUpdate - movs r0, #0 - bl TextboxNoOverlapFollow -_08064DC8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08064DCC -sub_08064DCC: @ 0x08064DCC - push {r4, lr} - adds r4, r0, #0 - bl sub_08064EE8 - adds r0, r4, #0 - movs r1, #2 - bl InitAnimationForceUpdate - movs r0, #1 - strb r0, [r4, #0xc] - pop {r4, pc} - .align 2, 0 - thumb_func_start sub_08064DE4 sub_08064DE4: @ 0x08064DE4 push {r4, r5, lr} diff --git a/linker.ld b/linker.ld index 3dd658a6..c7f40ab1 100644 --- a/linker.ld +++ b/linker.ld @@ -559,6 +559,7 @@ SECTIONS { asm/nayru.o(.text); asm/farore.o(.text); asm/sturgeon.o(.text); + src/npc/tingleSiblings.o(.text); asm/tingleSiblings.o(.text); asm/stockwell.o(.text); src/npc/talon.o(.text); diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c new file mode 100644 index 00000000..ab50c63c --- /dev/null +++ b/src/npc/tingleSiblings.c @@ -0,0 +1,43 @@ +#include "global.h" +#include "entity.h" +#include "npc.h" +#include "textbox.h" + +extern void sub_08064DE4(Entity*); +extern void sub_08064D78(Entity*); +extern void sub_08064EE8(Entity*); + +extern void (*const gUnk_0810FBFC[])(Entity*); + +void TingleSiblings(Entity* this) { + if ((this->flags & 2) != 0) { + sub_08064DE4(this); + } + else { + sub_08064D78(this); + } +} + +void sub_08064D78(Entity* this) { + gUnk_0810FBFC[this->action](this); +} + +void sub_08064D90(Entity* this) { + InitAnimationForceUpdate(this, 2); + this->field_0xf = 1; +} + +void sub_08064DA0(Entity* this) { + sub_08064EE8(this); + if (this->interactType != 0) { + this->action = 2; + InitAnimationForceUpdate(this, 6); + TextboxNoOverlapFollow(0); + } +} + +void sub_08064DCC(Entity* this) { + sub_08064EE8(this); + InitAnimationForceUpdate(this, 2); + this->action = 1; +} \ No newline at end of file