From 9992830ee980d698c5901193902f96663dc9c65b Mon Sep 17 00:00:00 2001 From: gamestabled Date: Tue, 16 Mar 2021 03:28:57 -0400 Subject: [PATCH] minishSizedEntrance OK --- asm/minishSizedEntrance.s | 62 -------------------------------- linker.ld | 1 - src/object/minishSizedEntrance.c | 22 ++++++++++-- 3 files changed, 19 insertions(+), 66 deletions(-) delete mode 100644 asm/minishSizedEntrance.s diff --git a/asm/minishSizedEntrance.s b/asm/minishSizedEntrance.s deleted file mode 100644 index aa4edc0d..00000000 --- a/asm/minishSizedEntrance.s +++ /dev/null @@ -1,62 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_08090F00 -sub_08090F00: @ 0x08090F00 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xa] - cmp r1, #1 - bne _08090F1C - ldr r0, [r4, #0x50] - ldrb r2, [r4, #0xf] - lsls r1, r2 - ldr r0, [r0, #0x20] - ands r0, r1 - cmp r0, #0 - bne _08090F1C - bl DeleteThisEntity -_08090F1C: - ldr r6, _08090F64 @ =gPlayerState - ldr r0, [r6, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08090F62 - ldr r5, _08090F68 @ =gPlayerEntity - adds r0, r4, #0 - adds r1, r5, #0 - movs r2, #4 - movs r3, #4 - bl sub_080041A0 - cmp r0, #0 - beq _08090F62 - movs r1, #0x36 - ldrsh r0, [r5, r1] - cmp r0, #0 - bne _08090F62 - adds r2, r6, #0 - adds r2, #0x90 - ldr r1, _08090F6C @ =gUnk_0812225C - ldrb r0, [r4, #0xb] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r2] - ldrh r0, [r0] - ands r0, r1 - cmp r0, #0 - beq _08090F62 - ldrb r0, [r4, #0xe] - bl GetCurrentRoomProperty - bl DoExitTransition -_08090F62: - pop {r4, r5, r6, pc} - .align 2, 0 -_08090F64: .4byte gPlayerState -_08090F68: .4byte gPlayerEntity -_08090F6C: .4byte gUnk_0812225C diff --git a/linker.ld b/linker.ld index 4a55674c..674845e0 100644 --- a/linker.ld +++ b/linker.ld @@ -765,7 +765,6 @@ SECTIONS { asm/pushableFurniture.o(.text); asm/furniture.o(.text); src/object/minishSizedEntrance.o(.text); - asm/minishSizedEntrance.o(.text); src/object/archway.o(.text); asm/giantRock.o(.text); asm/object51.o(.text); diff --git a/src/object/minishSizedEntrance.c b/src/object/minishSizedEntrance.c index 78410c6c..e1011fee 100644 --- a/src/object/minishSizedEntrance.c +++ b/src/object/minishSizedEntrance.c @@ -1,11 +1,12 @@ #include "global.h" #include "entity.h" +#include "player.h" +#include "functions.h" -extern bool32 CheckIsDungeon(); -extern void sub_080AE068(Entity*); -extern void LoadFixedGFX(Entity*, u32); +extern void DoExitTransition(void*); extern void (*const gUnk_08122254[])(Entity*); +extern u16 gUnk_0812225C[]; void MinishSizedEntrance(Entity* this) { gUnk_08122254[this->action](this); @@ -22,3 +23,18 @@ void sub_08090EC0(Entity* this) { LoadFixedGFX(this, 0x184); } } + +void sub_08090F00(Entity* this) { + if (this->type == 1) { + Entity* parent = this->parent; + u32 mask = 1 << this->field_0xf; + if (!(parent->field_0x20 & mask)) { + DeleteThisEntity(); + } + } + if ((((gPlayerState.flags.all & 0x80) && sub_080041A0(this, &gPlayerEntity, 4, 4)) && + (gPlayerEntity.height.HALF.HI == 0)) && + (((u16)gPlayerState.field_0x90.HALF.LO) & gUnk_0812225C[this->type2])) { + DoExitTransition((Entity*)GetCurrentRoomProperty(this->actionDelay)); + } +}