From 875049f3ce331ad39d4cb7749d4e09744d2060a3 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 13 Mar 2022 11:04:57 +0200 Subject: [PATCH] Decompile object52 --- asm/object/object52.s | 60 ------------------------------------------- linker.ld | 2 +- src/object/object52.c | 22 ++++++++++++++++ 3 files changed, 23 insertions(+), 61 deletions(-) delete mode 100644 asm/object/object52.s create mode 100644 src/object/object52.c diff --git a/asm/object/object52.s b/asm/object/object52.s deleted file mode 100644 index cf96ecb2..00000000 --- a/asm/object/object52.s +++ /dev/null @@ -1,60 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object52 -Object52: @ 0x080910A0 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080910C8 - ldrb r0, [r4, #0xa] - bl CheckLocalFlag - cmp r0, #0 - beq _080910B8 - bl DeleteThisEntity -_080910B8: - movs r1, #1 - strb r1, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] - adds r0, r4, #0 - bl sub_08078828 -_080910C8: - adds r0, r4, #0 - adds r0, #0x39 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08091100 - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _08091104 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r5, #0x32 - ldrsh r1, [r4, r5] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - movs r1, #2 - bl sub_080A7C8C - bl DeleteThisEntity -_08091100: - pop {r4, r5, pc} - .align 2, 0 -_08091104: .4byte gRoomControls diff --git a/linker.ld b/linker.ld index 9fc7b40d..95b13c7f 100644 --- a/linker.ld +++ b/linker.ld @@ -705,7 +705,7 @@ SECTIONS { src/object/archway.o(.text); src/object/giantRock.o(.text); src/object/giantRock2.o(.text); - asm/object/object52.o(.text); + src/object/object52.o(.text); asm/object/object53.o(.text); src/object/pullableLever.o(.text); src/object/minecart.o(.text); diff --git a/src/object/object52.c b/src/object/object52.c new file mode 100644 index 00000000..d5905484 --- /dev/null +++ b/src/object/object52.c @@ -0,0 +1,22 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "flags.h" +#include "room.h" + +extern void sub_08078828(Entity*); +extern void sub_080A7C8C(u32 pos, u32 layer); + +void Object52(Entity* this) { + if (this->action == 0) { + if (CheckLocalFlag(this->type)) { + DeleteThisEntity(); + } + this->action = 1; + this->collisionLayer = 1; + sub_08078828(this); + } + if (this->interactType != 0) { + sub_080A7C8C(COORD_TO_TILE(this), 2); + DeleteThisEntity(); + } +}