From 204bc4e9a472b656f5d2900cc9f747c7692f7958 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Jul 2022 06:12:14 +0300 Subject: [PATCH] Match sub_08026E1C --- asm/enemy/chuchuBoss.s | 142 ----------------------------------------- src/enemy/chuchuBoss.c | 48 +++++++++++++- 2 files changed, 47 insertions(+), 143 deletions(-) diff --git a/asm/enemy/chuchuBoss.s b/asm/enemy/chuchuBoss.s index 70db6c1a..ef8a3936 100644 --- a/asm/enemy/chuchuBoss.s +++ b/asm/enemy/chuchuBoss.s @@ -9,148 +9,6 @@ - - - - - - - - - - - - - thumb_func_start sub_08026E1C -sub_08026E1C: @ 0x08026E1C - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x7c - ldrb r0, [r1] - adds r6, r0, #0 - cmp r6, #0 - bne _08026EE0 - ldr r0, [r4, #0x54] - ldrb r0, [r0, #0xf] - ldr r1, [r4, #0x50] - ldrb r1, [r1, #0xf] - ldr r2, [r4, #0x68] - adds r0, r0, r1 - ldrb r2, [r2, #0xf] - adds r0, r0, r2 - cmp r0, #0xa - ble _08026EF2 - ldrb r0, [r4, #0x10] - movs r1, #0x80 - mov r8, r1 - movs r7, #0 - mov r1, r8 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - bl sub_08027C54 - adds r5, r4, #0 - adds r5, #0x84 - cmp r0, #0 - beq _08026E72 - ldr r1, [r5] - ldrb r0, [r1, #4] - adds r0, #1 - strb r0, [r1, #4] - ldr r0, [r4, #0x54] - adds r0, #0x45 - movs r1, #0xff - strb r1, [r0] -_08026E72: - ldr r1, [r5] - ldrb r0, [r1, #4] - cmp r0, #3 - bne _08026EA0 - adds r0, r4, #0 - adds r0, #0x45 - strb r6, [r0] - ldrb r0, [r4, #0x10] - movs r1, #0x7f - ands r1, r0 - strb r1, [r4, #0x10] - ldr r3, [r4, #0x54] - ldr r2, [r4, #0x50] - ldr r0, [r4, #0x68] - strb r1, [r0, #0x10] - ldrb r0, [r4, #0x10] - strb r0, [r2, #0x10] - strb r0, [r3, #0x10] - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0xc4 - strb r0, [r1] - b _08026F14 -_08026EA0: - movs r0, #4 - strb r0, [r1] - ldr r1, [r5] - movs r0, #0x81 - strb r0, [r1, #1] - ldrb r0, [r4, #0x10] - mov r1, r8 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x7d - strb r0, [r1] - movs r0, #0xb - strb r0, [r4, #0xd] - ldr r0, [r5] - strb r6, [r0, #3] - ldr r0, [r4, #0x54] - movs r1, #0 - bl InitAnimationForceUpdate - str r6, [sp] - adds r0, r4, #0 - movs r1, #0x80 - movs r2, #0x80 - movs r3, #0x80 - bl sub_08027B98 - ldr r1, [r5] - movs r0, #0x21 - strb r0, [r1, #1] - b _08026EF2 -_08026EE0: - subs r0, #1 - movs r2, #0 - strb r0, [r1] - adds r1, r4, #0 - adds r1, #0x84 - ldr r0, [r1] - str r2, [r0, #8] - ldr r0, [r1] - strb r2, [r0, #6] -_08026EF2: - adds r0, r4, #0 - bl sub_08027C54 - cmp r0, #0 - beq _08026F14 - adds r0, r4, #0 - adds r0, #0x84 - ldr r0, [r0] - ldrb r0, [r0, #4] - cmp r0, #2 - bne _08026F14 - adds r0, r4, #0 - movs r1, #0x3f - bl sub_08027C7C - bl sub_08078B48 -_08026F14: - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - thumb_func_start sub_08026F1C sub_08026F1C: @ 0x08026F1C push {r4, r5, lr} diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c index 5908e50a..8b739c98 100644 --- a/src/enemy/chuchuBoss.c +++ b/src/enemy/chuchuBoss.c @@ -123,7 +123,7 @@ void sub_08027A60(); bool32 sub_08027AA4(ChuchuBossEntity*); void sub_08027B98(); void sub_08027BBC(); -void sub_08027C54(); +bool32 sub_08027C54(); void sub_08027C7C(ChuchuBossEntity*, u32); void sub_08027C9C(); void sub_08027D20(); @@ -1070,3 +1070,49 @@ void sub_08026C40(ChuchuBossEntity* this) { } sub_08027870(super); } + +void sub_08026E1C(ChuchuBossEntity* this) { + u32 uVar2; + Entity* pEVar5; + Entity* pEVar6; + + if (this->unk_7c == 0) { + if (10 < super->child->subtimer + super->parent->subtimer + this->unk_68->base.subtimer) { + COLLISION_ON(super); + if (sub_08027C54(this)) { + this->unk_84->unk_04++; + ; + super->child->health = 0xff; + } + if (this->unk_84->unk_04 == 3) { + super->health = 0; + COLLISION_OFF(super); + pEVar6 = super->child; + pEVar5 = super->parent; + this->unk_68->base.flags = super->flags; + uVar2 = super->flags; + pEVar5->flags = uVar2; + pEVar6->flags = uVar2; + super->iframes = -0x3c; + return; + } + this->unk_84->unk_00 = 4; + this->unk_84->unk_01 = 0x81; + COLLISION_ON(super); + super->hitType = 0x7d; + super->subAction = 11; + this->unk_84->unk_03 = 0; + InitAnimationForceUpdate(super->child, 0); + sub_08027B98(this, 0x80, 0x80, 0x80, 0); + this->unk_84->unk_01 = 0x21; + } + } else { + this->unk_7c--; + this->unk_84->unk_08 = 0; + this->unk_84->unk_06 = 0; + } + if ((sub_08027C54(this)) && this->unk_84->unk_04 == 2) { + sub_08027C7C(this, 0x3f); + sub_08078B48(); + } +}