From 0d44caf0fd5d92dd3585e03e35ab5796b2113241 Mon Sep 17 00:00:00 2001 From: HookedBehemoth Date: Wed, 9 Mar 2022 02:00:04 +0100 Subject: [PATCH] decompile Object2B --- asm/object/object2B.s | 47 ------------------------------------------- linker.ld | 2 +- src/object/object2B.c | 22 ++++++++++++++++++++ 3 files changed, 23 insertions(+), 48 deletions(-) delete mode 100644 asm/object/object2B.s create mode 100644 src/object/object2B.c diff --git a/asm/object/object2B.s b/asm/object/object2B.s deleted file mode 100644 index 08ab376b..00000000 --- a/asm/object/object2B.s +++ /dev/null @@ -1,47 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object2B -Object2B: @ 0x08089CBC - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xc] - cmp r1, #0 - bne _08089CDC - movs r0, #1 - strb r0, [r4, #0xc] - str r1, [r4, #0x34] - ldrb r0, [r4, #0x19] - movs r1, #0xc0 - orrs r0, r1 - strb r0, [r4, #0x19] - adds r0, r4, #0 - movs r1, #9 - bl InitializeAnimation -_08089CDC: - ldr r1, [r4, #0x50] - ldr r0, [r1, #0x34] - cmp r0, #0 - bne _08089CEA - bl DeleteThisEntity - b _08089D02 -_08089CEA: - movs r2, #0x36 - ldrsh r0, [r1, r2] - movs r2, #0x90 - lsls r2, r2, #1 - subs r2, r2, r0 - adds r0, r1, #0 - adds r0, #0x7e - ldrh r3, [r0] - adds r0, r4, #0 - adds r1, r2, #0 - bl sub_0805EC9C -_08089D02: - pop {r4, pc} diff --git a/linker.ld b/linker.ld index abf6b7af..e84167fb 100644 --- a/linker.ld +++ b/linker.ld @@ -663,7 +663,7 @@ SECTIONS { asm/object/object28.o(.text); src/object/ambientClouds.o(.text); src/object/object2A.o(.text); - asm/object/object2B.o(.text); + src/object/object2B.o(.text); src/object/beanstalk.o(.text); src/object/smoke.o(.text); src/object/pushableRock.o(.text); diff --git a/src/object/object2B.c b/src/object/object2B.c new file mode 100644 index 00000000..747bf241 --- /dev/null +++ b/src/object/object2B.c @@ -0,0 +1,22 @@ +#include "global.h" +#include "entity.h" +#include "functions.h" + +void Object2B(Entity* object) { + Entity* parent; + + if (object->action == 0) { + object->action = 1; + object->z.WORD = 0; + object->spriteRendering.b3 = 3; + InitializeAnimation(object, 9); + } + + parent = object->parent; + if (parent->z.WORD == 0) { + DeleteThisEntity(); + } else { + int position = 0x120 - parent->z.HALF.HI; + sub_0805EC9C(object, position, position, parent->field_0x7c.HALF_U.HI); + } +}