From 4b4065ba77d062a38f6cbc42f7abaee895ba69f8 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Jul 2022 18:15:30 +0300 Subject: [PATCH] Match sub_08026968 --- asm/enemy/chuchuBoss.s | 55 ------------------------------------------ src/enemy/chuchuBoss.c | 39 ++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 63 deletions(-) diff --git a/asm/enemy/chuchuBoss.s b/asm/enemy/chuchuBoss.s index b0db57d7..b81ae5c7 100644 --- a/asm/enemy/chuchuBoss.s +++ b/asm/enemy/chuchuBoss.s @@ -18,61 +18,6 @@ - thumb_func_start sub_08026968 -sub_08026968: @ 0x08026968 - push {r4, r5, r6, lr} - adds r2, r0, #0 - adds r1, r2, #0 - adds r1, #0x7d - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - bne _0802698C - adds r0, r2, #0 - adds r0, #0x84 - ldr r1, [r0] - ldrb r0, [r1, #3] - adds r0, #1 - strb r0, [r1, #3] - b _080269C0 -_0802698C: - ldr r6, [r2, #0x54] - ldr r4, [r2, #0x68] - ldr r5, [r2, #0x50] - ldrb r1, [r2, #0x15] - movs r0, #0x10 - ands r0, r1 - ldr r3, _080269C8 @ =0xFFFFFF00 - cmp r0, #0 - beq _080269A2 - movs r3, #0x80 - lsls r3, r3, #1 -_080269A2: - adds r1, r4, #0 - adds r1, #0x82 - ldrh r0, [r1] - adds r0, r0, r3 - strh r0, [r1] - adds r1, r5, #0 - adds r1, #0x82 - ldrh r0, [r1] - adds r0, r0, r3 - strh r0, [r1] - adds r1, r6, #0 - adds r1, #0x82 - ldrh r0, [r1] - adds r0, r0, r3 - strh r0, [r1] -_080269C0: - adds r0, r2, #0 - bl sub_08027870 - pop {r4, r5, r6, pc} - .align 2, 0 -_080269C8: .4byte 0xFFFFFF00 - thumb_func_start sub_080269CC sub_080269CC: @ 0x080269CC .ifdef EU diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c index 286c7adc..632ddf0c 100644 --- a/src/enemy/chuchuBoss.c +++ b/src/enemy/chuchuBoss.c @@ -43,8 +43,7 @@ typedef struct _ChuchuBossEntity { u16 unk_7e; u8 unk_80; u8 unk_81; - u8 unk_82; - u8 unk_83; + union SplitHWord unk_82; Helper* unk_84; } ChuchuBossEntity; @@ -479,18 +478,18 @@ void sub_08026110(ChuchuBossEntity* this) { this->unk_74.WORD -= this->unk_80 * 0x1000; this->unk_78.WORD -= this->unk_80 * 0x1000; uVar3 = this->unk_74.HALF_U.HI; - uVar2 = this->unk_82 + (u8)this->unk_84->unk_05; + uVar2 = this->unk_82.HALF.LO + (u8)this->unk_84->unk_05; if (uVar3 <= uVar2) { this->unk_74.HALF.HI = uVar2; } uVar3 = this->unk_78.HALF_U.HI; - uVar2 = this->unk_82; + uVar2 = this->unk_82.HALF.LO; uVar2 += (u8)this->unk_84->unk_05; if (uVar3 <= uVar2) { this->unk_78.HALF.HI = uVar2; } uVar3 = this->unk_74.HALF_U.HI; - uVar2 = this->unk_82; + uVar2 = this->unk_82.HALF.LO; uVar2 += (u8)this->unk_84->unk_05; if ((uVar3 <= uVar2) && (this->unk_78.HALF_U.HI <= uVar2)) { super->timer ^= 1; @@ -534,7 +533,7 @@ void sub_0802626C(ChuchuBossEntity* this) { } void sub_080262A8(ChuchuBossEntity* this) { - this->unk_82 = 0x90; + this->unk_82.HALF.LO = 0x90; this->unk_81 = 0xb0; this->unk_80 = 8; super->timer = 1; @@ -746,8 +745,8 @@ void sub_08026750(ChuchuBossEntity* this) { } void sub_08026774(ChuchuBossEntity* this) { - if ((((ChuchuBossEntity*)super->child)->unk_83 | ((ChuchuBossEntity*)super->parent)->unk_83 | - this->unk_68->unk_83) == 0) { + if ((((ChuchuBossEntity*)super->child)->unk_82.HALF.HI | ((ChuchuBossEntity*)super->parent)->unk_82.HALF.HI | + this->unk_68->unk_82.HALF.HI) == 0) { if (this->unk_7d-- != 0) { return; } @@ -832,3 +831,27 @@ void sub_08026914(ChuchuBossEntity* this) { void sub_0802694C(ChuchuBossEntity* this) { gUnk_080CC26C[this->unk_84->unk_03](this); } + +void sub_08026968(ChuchuBossEntity* this) { + s32 sVar5; + ChuchuBossEntity* pEVar6; + ChuchuBossEntity* pEVar7; + ChuchuBossEntity* pEVar8; + + if (this->unk_7d-- == 0) { + this->unk_84->unk_03++; + } else { + pEVar7 = (ChuchuBossEntity*)super->child; + pEVar8 = this->unk_68; + pEVar6 = (ChuchuBossEntity*)super->parent; + if ((super->direction & 0x10) != 0) { + sVar5 = 0x100; + } else { + sVar5 = -0x100; + } + pEVar8->unk_82.HWORD += sVar5; + pEVar6->unk_82.HWORD += sVar5; + pEVar7->unk_82.HWORD += sVar5; + } + sub_08027870(super); +}