From 62ece59d4d36e12b5807ae061e0aa4defd35ce14 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Fri, 20 May 2022 19:34:58 +0300 Subject: [PATCH] Match sub_0805ACC0 --- src/manager/delayedEntityLoadManager.c | 27 +++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/manager/delayedEntityLoadManager.c b/src/manager/delayedEntityLoadManager.c index 00a0bbde..a878d70e 100644 --- a/src/manager/delayedEntityLoadManager.c +++ b/src/manager/delayedEntityLoadManager.c @@ -5,8 +5,33 @@ * @brief Delayed entity loader. */ #include "manager/delayedEntityLoadManager.h" +#include "room.h" ASM_FUNC("asm/non_matching/delayedEntityLoadManager/DelayedEntityLoadManager_Main.inc", void DelayedEntityLoadManager_Main()) -ASM_FUNC("asm/non_matching/delayedEntityLoadManager/sub_0805ACC0.inc", u32 sub_0805ACC0(Entity* ent)) +u32 sub_0805ACC0(Entity* param_1) { + u16* ptr; + Entity* entity; + Entity* list; + s32 tmp; + + if (param_1->health == 0) { + return 0; + } + tmp = (param_1->health & 0x7f) - 1; + list = (Entity*)(gEntityLists + 6); + + for (entity = gEntityLists[6].first; entity != list; entity = entity->next) { + if ((entity->kind == 9 && entity->id == 0x16) && entity->type2 <= tmp && + (entity->type2 + *(u8*)((u32)&entity->zVelocity + 1)) > tmp) { + + ptr = (u16*)GetCurrentRoomProperty(entity->type); + if (ptr != NULL) { + ptr += (tmp - entity->type2) * 8; + return (((ptr[2] + gRoomControls.origin_x) * 0x10000) | ptr[3]) + gRoomControls.origin_y; + } + } + } + return 0; +}