summaryrefslogtreecommitdiff
path: root/src/manager/delayedEntityLoadManager.c
diff options
context:
space:
mode:
authorTal Hayon <talhayon1@gmail.com>2022-05-20 19:34:58 +0300
committerTal Hayon <talhayon1@gmail.com>2022-05-21 00:15:10 +0300
commit62ece59d4d36e12b5807ae061e0aa4defd35ce14 (patch)
tree86ba4f5de9c93382de437ac453490e2cced31c5d /src/manager/delayedEntityLoadManager.c
parenta7844b9eb124c729c73446c8d39bb6304edc75b8 (diff)
Match sub_0805ACC0
Diffstat (limited to 'src/manager/delayedEntityLoadManager.c')
-rw-r--r--src/manager/delayedEntityLoadManager.c27
1 files changed, 26 insertions, 1 deletions
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;
+}