From c0014dbcf62a7d0ffd282e8747bc2ab495378443 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 25 Jul 2022 19:38:22 +0300 Subject: [PATCH] Match sub_0802D33C --- asm/non_matching/gleerok/sub_0802D33C.inc | 45 ----------------------- src/enemy/gleerok.c | 29 ++++++--------- 2 files changed, 11 insertions(+), 63 deletions(-) delete mode 100644 asm/non_matching/gleerok/sub_0802D33C.inc diff --git a/asm/non_matching/gleerok/sub_0802D33C.inc b/asm/non_matching/gleerok/sub_0802D33C.inc deleted file mode 100644 index 9d5969e8..00000000 --- a/asm/non_matching/gleerok/sub_0802D33C.inc +++ /dev/null @@ -1,45 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r0, #0x84 - ldr r6, [r0] - movs r4, #0 - adds r7, r6, #0 - adds r7, #0x3c - adds r5, r7, #0 -_0802D34A: - ldm r5!, {r0} - bl DeleteEntity - adds r4, #1 - cmp r4, #3 - bls _0802D34A - lsls r1, r4, #2 - adds r1, r7, r1 - ldr r0, [r1] - adds r0, #0x45 - movs r3, #0 - strb r3, [r0] - ldr r1, [r1] - adds r1, #0x6d - ldrb r2, [r1] - movs r0, #1 - orrs r0, r2 - strb r0, [r1] - ldr r0, [r6, #0x50] - adds r0, #0x45 - strb r3, [r0] - ldr r0, [r6, #0x50] - strb r3, [r0, #0xb] - ldr r3, [r6, #0x50] - ldrb r2, [r3, #0x18] - lsls r1, r2, #0x1e - lsrs r1, r1, #0x1e - movs r0, #2 - rsbs r0, r0, #0 - ands r1, r0 - subs r0, #2 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x18] - bl DeleteThisEntity - pop {r4, r5, r6, r7, pc} - .syntax divided diff --git a/src/enemy/gleerok.c b/src/enemy/gleerok.c index 1cc2aaa0..7f34d511 100644 --- a/src/enemy/gleerok.c +++ b/src/enemy/gleerok.c @@ -223,28 +223,21 @@ void sub_0802D258(GleerokEntity* this) { sub_0802E768(this->unk_84); } -NONMATCH("asm/non_matching/gleerok/sub_0802D33C.inc", void sub_0802D33C(GleerokEntity* this)) { - u8* unk_84 = (u8*)this->unk_84; - u8* ptr = unk_84; - u8* ptr2; - u32 i = 0; - ptr += 0x3c; - ptr2 = ptr; +void sub_0802D33C(GleerokEntity* this) { + Gleerok_HeapStruct* unk_84 = this->unk_84; + u32 i; - do { - DeleteEntity(*(Entity**)ptr); - ptr += 4; - } while (i < 4); + for (i = 0; i < 4; i++) { + DeleteEntity(unk_84->entities[i]); + } - ptr2 += (i << 2); - *(u32*)((*(u8**)ptr2) + 0x45) = 0; - *((*(u8**)ptr2) + 0x6d) |= 1; - ((Entity*)(*(u8**)(unk_84 + 0x50)))->health = 0; - ((Entity*)(*(u8**)(unk_84 + 0x50)))->type2 = 0; - ((Entity*)(*(u8**)(unk_84 + 0x50)))->spriteSettings.draw &= ~1; + unk_84->entities[i]->health = 0; + ((GenericEntity*)unk_84->entities[i])->field_0x6c.HALF.HI |= 1; + unk_84->ent2->health = 0; + unk_84->ent2->type2 = 0; + unk_84->ent2->spriteSettings.draw &= ~1; DeleteThisEntity(); } -END_NONMATCH void Gleerok_OnTick(GleerokEntity* this) { gUnk_080CD7B8[super->action](this);