diff --git a/asm/enemy/chuchuBoss.s b/asm/enemy/chuchuBoss.s index cbe2102c..05e9fc10 100644 --- a/asm/enemy/chuchuBoss.s +++ b/asm/enemy/chuchuBoss.s @@ -7,100 +7,6 @@ .text - thumb_func_start sub_0802720C -sub_0802720C: @ 0x0802720C - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xd] - strb r0, [r4, #0xd] - ldrb r0, [r4, #0xd] - cmp r0, #0xc - bhi _080272CA - lsls r0, r0, #2 - ldr r1, _08027228 @ =_0802722C - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08027228: .4byte _0802722C -_0802722C: @ jump table - .4byte _080272C4 @ case 0 - .4byte _08027260 @ case 1 - .4byte _08027260 @ case 2 - .4byte _0802726E @ case 3 - .4byte _080272AA @ case 4 - .4byte _0802726E @ case 5 - .4byte _080272CA @ case 6 - .4byte _080272CA @ case 7 - .4byte _08027282 @ case 8 - .4byte _080272CA @ case 9 - .4byte _080272A0 @ case 10 - .4byte _080272CA @ case 11 - .4byte _08027260 @ case 12 -_08027260: - adds r1, r4, #0 - adds r1, #0x7a - movs r0, #0xa0 - strh r0, [r1] - subs r1, #4 - strh r0, [r1] - b _080272AA -_0802726E: - adds r0, r4, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r0, #0 - beq _080272CA - adds r1, r4, #0 - adds r1, #0x7d - movs r0, #0 - strb r0, [r1] - b _080272AA -_08027282: - ldrb r0, [r4, #0xf] - cmp r0, #3 - bhi _080272CA - adds r0, r4, #0 - bl sub_0802757C - adds r0, r4, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r0, #0 - bne _080272CA - ldrb r0, [r4, #0xf] - adds r0, #1 - strb r0, [r4, #0xf] - b _080272CA -_080272A0: - adds r2, r4, #0 - adds r2, #0x7d - ldrb r0, [r2] - cmp r0, #0 - bne _080272B2 -_080272AA: - adds r0, r4, #0 - bl sub_0802757C - b _080272CA -_080272B2: - adds r1, r4, #0 - adds r1, #0x84 - ldrb r0, [r1] - cmp r0, #0 - beq _080272CA - movs r0, #0 - strb r0, [r2] - strb r0, [r1] - b _080272CA -_080272C4: - adds r0, r4, #0 - bl sub_0802757C -_080272CA: - ldr r0, [r4, #0x50] - ldr r0, [r0, #0x34] - str r0, [r4, #0x34] - pop {r4, pc} - .align 2, 0 thumb_func_start sub_080272D4 sub_080272D4: @ 0x080272D4 diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c index fe228005..1f043ae8 100644 --- a/src/enemy/chuchuBoss.c +++ b/src/enemy/chuchuBoss.c @@ -1260,3 +1260,49 @@ void sub_08027064(ChuchuBossEntity* this) { } sub_08027870(super); } + +void sub_0802720C(ChuchuBossEntity* this) { + super->subAction = super->parent->subAction; + switch (super->subAction) { + case 1: + case 2: + case 12: + this->unk_78.HALF.HI = 0xa0; + this->unk_74.HALF.HI = 0xa0; + sub_0802757C(this); + break; + case 3: + case 5: + if (this->unk_82.HALF.HI == 0) + break; + this->unk_7d = 0; + sub_0802757C(this); + break; + default: + break; + case 8: + if (super->subtimer < 4) { + sub_0802757C(this); + if (this->unk_82.HALF.HI == 0) { + super->subtimer++; + } + } + break; + case 10: + if (this->unk_7d == 0) { + case 4: + sub_0802757C(this); + break; + } else { + if (*(char*)&this->unk_84 != 0) { + this->unk_7d = 0; + *(char*)&this->unk_84 = 0; + } + break; + } + case 0: + sub_0802757C(this); + break; + } + super->z.WORD = super->parent->z.WORD; +}