From e6d37e8ca83586433f46464c89611945a4f3a363 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Tue, 26 Jul 2022 16:19:03 +0300 Subject: [PATCH] Match sub_0802E7E4 --- asm/non_matching/gleerok/sub_0802E7E4.inc | 246 ---------------------- src/enemy/gleerok.c | 45 +++- 2 files changed, 44 insertions(+), 247 deletions(-) delete mode 100644 asm/non_matching/gleerok/sub_0802E7E4.inc diff --git a/asm/non_matching/gleerok/sub_0802E7E4.inc b/asm/non_matching/gleerok/sub_0802E7E4.inc deleted file mode 100644 index 93394c16..00000000 --- a/asm/non_matching/gleerok/sub_0802E7E4.inc +++ /dev/null @@ -1,246 +0,0 @@ - .syntax unified - - .text - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - mov ip, r0 - ldr r0, [r0, #0x50] - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _0802E8D0 - movs r6, #0 - movs r5, #0 - mov r7, ip - adds r7, #0x3c - movs r0, #0x30 - add r0, ip - mov r8, r0 - movs r1, #8 - rsbs r1, r1, #0 - mov sl, r1 - movs r2, #4 - rsbs r2, r2, #0 - mov sb, r2 -_0802E818: - lsls r0, r5, #2 - adds r4, r7, r0 - ldr r3, [r4] - adds r3, #0x29 - movs r1, #7 - ands r1, r6 - ldrb r2, [r3] - mov r0, sl - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r6, #1 - mov r1, r8 - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, #0 - bne _0802E852 - ldr r3, [r4] - ldrb r2, [r3, #0x18] - lsls r1, r2, #0x1e - lsrs r1, r1, #0x1e - movs r0, #2 - rsbs r0, r0, #0 - ands r1, r0 - mov r0, sb - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x18] - b _0802E860 -_0802E852: - ldr r2, [r4] - ldrb r1, [r2, #0x18] - mov r0, sb - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] -_0802E860: - adds r5, #1 - cmp r5, #5 - bls _0802E818 - movs r5, #0 - movs r2, #7 - mov sb, r2 - movs r0, #8 - rsbs r0, r0, #0 - mov r8, r0 -_0802E872: - lsls r1, r5, #2 - mov r2, ip - adds r0, r2, r1 - ldrb r0, [r0, #1] - subs r0, #8 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - adds r5, #1 - cmp r0, #0x10 - bhi _0802E8BA - adds r0, r7, r1 - ldr r3, [r0] - adds r3, #0x29 - ldrb r4, [r3] - lsls r0, r4, #0x1d - lsrs r6, r0, #0x1d - lsls r2, r5, #2 - adds r2, r7, r2 - ldr r0, [r2] - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - lsrs r1, r1, #0x1d - mov r0, r8 - ands r0, r4 - orrs r0, r1 - strb r0, [r3] - ldr r1, [r2] - adds r1, #0x29 - mov r0, sb - ands r6, r0 - ldrb r2, [r1] - mov r0, r8 - ands r0, r2 - orrs r0, r6 - strb r0, [r1] -_0802E8BA: - cmp r5, #4 - bls _0802E872 - mov r1, ip - ldr r0, [r1, #0x38] - adds r0, #0x29 - ldrb r2, [r0] - movs r1, #8 - rsbs r1, r1, #0 - ands r1, r2 - strb r1, [r0] - b _0802E9A4 -_0802E8D0: - movs r6, #5 - movs r5, #0 - mov r7, ip - adds r7, #0x3c - movs r2, #0x30 - add r2, ip - mov r8, r2 - movs r0, #8 - rsbs r0, r0, #0 - mov sl, r0 - movs r1, #4 - rsbs r1, r1, #0 - mov sb, r1 -_0802E8EA: - lsls r0, r5, #2 - adds r4, r7, r0 - ldr r3, [r4] - adds r3, #0x29 - movs r1, #7 - ands r1, r6 - ldrb r2, [r3] - mov r0, sl - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - subs r6, #1 - mov r2, r8 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, #0 - bne _0802E924 - ldr r3, [r4] - ldrb r2, [r3, #0x18] - lsls r1, r2, #0x1e - lsrs r1, r1, #0x1e - movs r0, #2 - rsbs r0, r0, #0 - ands r1, r0 - mov r0, sb - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x18] - b _0802E932 -_0802E924: - ldr r2, [r4] - ldrb r1, [r2, #0x18] - mov r0, sb - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] -_0802E932: - adds r5, #1 - cmp r5, #5 - bls _0802E8EA - movs r5, #0 - movs r0, #7 - mov sb, r0 - movs r1, #8 - rsbs r1, r1, #0 - mov r8, r1 -_0802E944: - lsls r1, r5, #2 - mov r2, ip - adds r0, r2, r1 - ldrb r0, [r0, #1] - subs r0, #8 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - adds r5, #1 - cmp r0, #0x10 - bls _0802E98C - adds r0, r7, r1 - ldr r3, [r0] - adds r3, #0x29 - ldrb r4, [r3] - lsls r0, r4, #0x1d - lsrs r6, r0, #0x1d - lsls r2, r5, #2 - adds r2, r7, r2 - ldr r0, [r2] - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - lsrs r1, r1, #0x1d - mov r0, r8 - ands r0, r4 - orrs r0, r1 - strb r0, [r3] - ldr r1, [r2] - adds r1, #0x29 - mov r0, sb - ands r6, r0 - ldrb r2, [r1] - mov r0, r8 - ands r0, r2 - orrs r0, r6 - strb r0, [r1] -_0802E98C: - cmp r5, #4 - bls _0802E944 - mov r1, ip - ldr r2, [r1, #0x38] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r2] -_0802E9A4: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/src/enemy/gleerok.c b/src/enemy/gleerok.c index 44aa1ac6..13061a2e 100644 --- a/src/enemy/gleerok.c +++ b/src/enemy/gleerok.c @@ -1302,7 +1302,50 @@ u32 sub_0802E7CC(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 para return param_1->entities[(u8)param_2]->animationState; } -ASM_FUNC("asm/non_matching/gleerok/sub_0802E7E4.inc", void sub_0802E7E4(Gleerok_HeapStruct* this)); +void sub_0802E7E4(Gleerok_HeapStruct* this) { + u32 i; + u32 bVar6; + + if ((this->ent2->frame & 0x40) != 0) { + bVar6 = 0; + for (i = 0; i < 6; i++) { + this->entities[i]->spritePriority.b0 = bVar6++; + if (this->unk_30[i] == 0) { + this->entities[i]->spriteSettings.draw &= ~1; + } else { + this->entities[i]->spriteSettings.draw = 1; + } + } + for (i = 0; i < 5; i++) { + if ((u8)(this->filler[i].unk0.HALF.HI - 8) < 0x11) { + bVar6 = this->entities[i]->spritePriority.b0; + this->entities[i]->spritePriority.b0 = this->entities[i + 1]->spritePriority.b0; + this->entities[i + 1]->spritePriority.b0 = bVar6; + } + } + this->ent->spritePriority.b0 = 0; + } else { + bVar6 = 5; + + for (i = 0; i < 6; i++) { + this->entities[i]->spritePriority.b0 = bVar6--; + if (this->unk_30[i] == 0) { + this->entities[i]->spriteSettings.draw &= ~1; + } else { + this->entities[i]->spriteSettings.draw = 1; + } + } + + for (i = 0; i < 5; i++) { + if (0x10 < (u8)(this->filler[i].unk0.HALF.HI - 8)) { + bVar6 = this->entities[i]->spritePriority.b0; + this->entities[i]->spritePriority.b0 = this->entities[i + 1]->spritePriority.b0; + this->entities[i + 1]->spritePriority.b0 = bVar6; + } + } + this->ent->spritePriority.b0 = 6; + } +} void sub_0802E9B0(GleerokEntity* this) { u32 uVar1;