From 4c4188671b199002558d595f63368efbb637a264 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Tue, 19 Jul 2022 05:10:00 +0300 Subject: [PATCH] Match sub_08027C9C --- asm/enemy/chuchuBoss.s | 63 ------------------------------------------ src/enemy/chuchuBoss.c | 15 ++++++++++ 2 files changed, 15 insertions(+), 63 deletions(-) diff --git a/asm/enemy/chuchuBoss.s b/asm/enemy/chuchuBoss.s index b1f371d4..8ec28073 100644 --- a/asm/enemy/chuchuBoss.s +++ b/asm/enemy/chuchuBoss.s @@ -18,69 +18,6 @@ - thumb_func_start sub_08027C9C -sub_08027C9C: @ 0x08027C9C - push {r4, r5, lr} - adds r5, r0, #0 - adds r4, r1, #0 - bl Random - ands r0, r4 - cmp r0, #0 - bne _08027D1E - adds r0, r5, #0 - movs r1, #0x48 - movs r2, #0 - bl CreateFx - adds r4, r0, #0 - cmp r4, #0 - beq _08027D1E - adds r0, r5, #0 - adds r0, #0x62 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldr r1, [r5, #0x48] - ldrb r1, [r1, #6] - subs r0, r0, r1 - ldrh r1, [r4, #0x2e] - adds r0, r0, r1 - strh r0, [r4, #0x2e] - bl Random - ldr r1, [r5, #0x48] - ldrb r1, [r1, #6] - lsls r1, r1, #1 - bl __modsi3 - ldrh r1, [r4, #0x2e] - adds r1, r1, r0 - strh r1, [r4, #0x2e] - adds r0, r5, #0 - adds r0, #0x63 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldr r1, [r5, #0x48] - ldrb r1, [r1, #7] - subs r0, r0, r1 - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] - bl Random - ldr r1, [r5, #0x48] - ldrb r1, [r1, #7] - lsls r1, r1, #1 - bl __modsi3 - ldrh r1, [r4, #0x32] - adds r1, r1, r0 - strh r1, [r4, #0x32] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] -_08027D1E: - pop {r4, r5, pc} thumb_func_start sub_08027D20 sub_08027D20: @ 0x08027D20 diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c index 1fef8093..769fe86e 100644 --- a/src/enemy/chuchuBoss.c +++ b/src/enemy/chuchuBoss.c @@ -1806,3 +1806,18 @@ void sub_08027C7C(ChuchuBossEntity* this, u32 param_2) { sub_08027C9C(this->unk_68, param_2); sub_08027C9C(super->parent, param_2); } + +void sub_08027C9C(ChuchuBossEntity* this, u32 param_2) { + Entity* fxEnt; + + if ((Random() & param_2) == 0) { + fxEnt = CreateFx(super, FX_GIANT_EXPLOSION3, 0); + if (fxEnt != NULL) { + fxEnt->x.HALF.HI = ((s8)super->spriteOffsetX - super->hitbox->width) + fxEnt->x.HALF.HI; + fxEnt->x.HALF.HI += ((s32)Random()) % (super->hitbox->width << 1); + fxEnt->y.HALF.HI += ((short)super->spriteOffsetY - super->hitbox->height); + fxEnt->y.HALF.HI += ((s32)Random()) % (super->hitbox->height << 1); + fxEnt->spritePriority.b0 = 0; + } + } +}