diff --git a/asm/enemy/chuchuBoss.s b/asm/enemy/chuchuBoss.s deleted file mode 100644 index cbe2102c..00000000 --- a/asm/enemy/chuchuBoss.s +++ /dev/null @@ -1,1553 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .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 - push {r4, r5, r6, lr} - adds r6, r0, #0 - ldr r0, [r6, #0x50] - ldrb r0, [r0, #0xd] - cmp r0, #0xc - bls _080272E2 - b _08027532 -_080272E2: - lsls r0, r0, #2 - ldr r1, _080272EC @ =_080272F0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080272EC: .4byte _080272F0 -_080272F0: @ jump table - .4byte _08027508 @ case 0 - .4byte _08027324 @ case 1 - .4byte _08027324 @ case 2 - .4byte _08027332 @ case 3 - .4byte _0802733E @ case 4 - .4byte _08027332 @ case 5 - .4byte _08027368 @ case 6 - .4byte _08027532 @ case 7 - .4byte _08027346 @ case 8 - .4byte _08027454 @ case 9 - .4byte _0802748C @ case 10 - .4byte _08027532 @ case 11 - .4byte _08027324 @ case 12 -_08027324: - adds r1, r6, #0 - adds r1, #0x7a - movs r0, #0xa0 - strh r0, [r1] - subs r1, #4 - strh r0, [r1] - b _0802733E -_08027332: - adds r0, r6, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r0, #0 - bne _0802733E - b _08027532 -_0802733E: - adds r0, r6, #0 - bl sub_0802757C - b _08027532 -_08027346: - ldrb r0, [r6, #0xf] - cmp r0, #2 - bls _0802734E - b _08027532 -_0802734E: - adds r0, r6, #0 - bl sub_0802757C - adds r0, r6, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r0, #0 - beq _08027360 - b _08027532 -_08027360: - ldrb r0, [r6, #0xf] - adds r0, #1 - strb r0, [r6, #0xf] - b _08027532 -_08027368: - ldr r5, [r6, #0x48] - adds r0, r6, #0 - adds r0, #0x7a - ldrh r1, [r0] - movs r4, #0x80 - lsls r4, r4, #9 - adds r0, r4, #0 - bl __divsi3 - lsls r1, r0, #3 - adds r1, r1, r0 - lsrs r1, r1, #7 - strb r1, [r5, #6] - ldr r5, [r6, #0x48] - adds r0, r6, #0 - adds r0, #0x76 - ldrh r1, [r0] - adds r0, r4, #0 - bl __divsi3 - lsls r1, r0, #2 - adds r1, r1, r0 - lsrs r1, r1, #6 - strb r1, [r5, #7] - adds r0, r6, #0 - adds r0, #0x84 - ldrb r0, [r0] - cmp r0, #0 - bne _080273A4 - b _08027532 -_080273A4: - adds r0, r6, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08027444 - adds r2, r6, #0 - adds r2, #0x3d - ldrb r1, [r2] - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _08027444 - ldr r0, [r6, #0x54] - ldr r0, [r0, #0x68] - adds r0, #0x3d - strb r1, [r0] - ldr r0, [r6, #0x54] - ldr r0, [r0, #0x50] - ldrb r1, [r2] - adds r0, #0x3d - strb r1, [r0] - ldr r0, [r6, #0x54] - ldrb r1, [r2] - adds r0, #0x3d - strb r1, [r0] - ldr r0, [r6, #0x54] - bl sub_08027D20 - adds r2, r0, #0 - cmp r2, #0 - beq _08027406 - ldrh r0, [r6, #0x2e] - adds r0, #1 - strh r0, [r2, #0x2e] - adds r0, r6, #0 - adds r0, #0x63 - ldrb r0, [r0] - adds r0, #0x20 - adds r1, r2, #0 - adds r1, #0x63 - strb r0, [r1] - adds r0, r6, #0 - adds r0, #0x62 - ldrb r1, [r0] - adds r0, r2, #0 - adds r0, #0x62 - strb r1, [r0] -_08027406: - ldr r0, [r6, #0x54] - bl sub_08027C54 - cmp r0, #0 - beq _0802741C - ldr r0, [r6, #0x54] - adds r0, #0x84 - ldr r0, [r0] - ldrb r0, [r0, #4] - cmp r0, #2 - beq _08027428 -_0802741C: - ldr r0, _08027424 @ =0x00000127 - bl SoundReq - b _08027444 - .align 2, 0 -_08027424: .4byte 0x00000127 -_08027428: - bl sub_08078B48 - ldr r0, _0802744C @ =gRoomControls - ldr r2, [r6, #0x54] - str r2, [r0, #0x30] - ldr r1, _08027450 @ =gPauseMenuOptions - movs r0, #1 - strb r0, [r1] - movs r0, #9 - strb r0, [r2, #0xd] - movs r0, #0x94 - lsls r0, r0, #1 - bl SoundReq -_08027444: - adds r0, r6, #0 - bl sub_08027A60 - b _08027484 - .align 2, 0 -_0802744C: .4byte gRoomControls -_08027450: .4byte gPauseMenuOptions -_08027454: - ldr r5, [r6, #0x48] - adds r0, r6, #0 - adds r0, #0x7a - ldrh r1, [r0] - movs r4, #0x80 - lsls r4, r4, #9 - adds r0, r4, #0 - bl __divsi3 - lsls r1, r0, #3 - adds r1, r1, r0 - lsrs r1, r1, #7 - strb r1, [r5, #6] - ldr r5, [r6, #0x48] - adds r0, r6, #0 - adds r0, #0x76 - ldrh r1, [r0] - adds r0, r4, #0 - bl __divsi3 - lsls r1, r0, #2 - adds r1, r1, r0 - lsrs r1, r1, #6 - strb r1, [r5, #7] -_08027484: - adds r0, r6, #0 - bl sub_0800445C - b _08027532 -_0802748C: - adds r2, r6, #0 - adds r2, #0x7d - ldrb r0, [r2] - cmp r0, #0 - bne _0802749E - adds r0, r6, #0 - bl sub_0802757C - b _080274AE -_0802749E: - adds r1, r6, #0 - adds r1, #0x84 - ldrb r0, [r1] - cmp r0, #0 - beq _080274AE - movs r0, #0 - strb r0, [r2] - strb r0, [r1] -_080274AE: - adds r2, r6, #0 - adds r2, #0x83 - adds r0, r6, #0 - adds r0, #0x81 - ldrb r1, [r0] - lsrs r0, r1, #1 - ldrb r2, [r2] - adds r0, r2, r0 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, r1 - bls _080274F4 - lsls r0, r2, #0x18 - cmp r0, #0 - ble _080274E0 - adds r0, r6, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0xc - beq _08027532 - adds r0, r6, #0 - movs r1, #0xc - bl InitAnimationForceUpdate - b _08027532 -_080274E0: - adds r0, r6, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0xb - beq _08027532 - adds r0, r6, #0 - movs r1, #0xb - bl InitAnimationForceUpdate - b _08027532 -_080274F4: - adds r0, r6, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0xa - beq _08027532 - adds r0, r6, #0 - movs r1, #0xa - bl InitAnimationForceUpdate - b _08027532 -_08027508: - ldr r0, [r6, #0x54] - adds r0, #0x84 - ldr r0, [r0] - ldrb r0, [r0, #3] - cmp r0, #8 - bne _08027532 - adds r0, r6, #0 - bl sub_0802757C - adds r0, r6, #0 - adds r0, #0x7d - ldrb r0, [r0] - cmp r0, #1 - bne _08027532 - adds r1, r6, #0 - adds r1, #0x81 - ldrb r0, [r1] - cmp r0, #0 - beq _08027532 - subs r0, #4 - strb r0, [r1] -_08027532: - ldr r0, [r6, #0x50] - ldr r0, [r0, #0x34] - str r0, [r6, #0x34] - adds r1, r6, #0 - adds r1, #0x41 - movs r0, #0 - strb r0, [r1] - adds r0, r6, #0 - bl UpdateAnimationSingleFrame - pop {r4, r5, r6, pc} - - thumb_func_start sub_08027548 -sub_08027548: @ 0x08027548 - push {r4, r5, r6, lr} - sub sp, #4 - adds r4, r0, #0 - adds r6, r1, #0 - movs r5, #0 - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #0xff - str r0, [sp] - adds r0, r4, #0 - movs r1, #0x90 - movs r2, #0xb0 - movs r3, #8 - bl sub_08027B98 - adds r0, r4, #0 - adds r0, #0x7d - strb r5, [r0] - adds r0, r4, #0 - movs r1, #0 - adds r2, r6, #0 - bl sub_080276F4 - add sp, #4 - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0802757C -sub_0802757C: @ 0x0802757C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r5, r0, #0 - adds r6, r5, #0 - adds r6, #0x7d - ldrb r1, [r6] - cmp r1, #0 - beq _080275BA - ldrb r0, [r5, #0xa] - cmp r0, #1 - beq _080275AE - ldr r0, [r5, #0x54] - adds r0, #0x7d - ldrb r0, [r0] - movs r1, #0x83 - adds r1, r1, r5 - mov sl, r1 - cmp r0, #0 - beq _08027676 - movs r0, #0 - strb r0, [r6] - b _08027676 -_080275AE: - subs r0, r1, #1 - strb r0, [r6] - movs r2, #0x83 - adds r2, r2, r5 - mov sl, r2 - b _08027676 -_080275BA: - movs r0, #0x85 - adds r0, r0, r5 - mov ip, r0 - ldrb r1, [r0] - mov sb, r1 - cmp r1, #1 - bne _0802761E - adds r1, r5, #0 - adds r1, #0x82 - adds r0, r5, #0 - adds r0, #0x86 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r0, r2 - strh r0, [r1] - adds r0, r5, #0 - adds r0, #0x83 - adds r2, r5, #0 - adds r2, #0x81 - movs r4, #0 - ldrsb r4, [r0, r4] - movs r3, #0 - ldrsb r3, [r2, r3] - mov r8, r1 - mov sl, r0 - adds r7, r2, #0 - cmp r4, r3 - blt _08027676 - movs r0, #0 - mov r1, ip - strb r0, [r1] - ldrb r0, [r5, #0xa] - cmp r0, #1 - bne _08027616 - ldr r1, [r5, #0x50] - adds r0, r1, #0 - adds r0, #0x81 - ldrb r0, [r0] - lsls r0, r0, #8 - adds r1, #0x86 - ldrh r1, [r1] - bl __divsi3 - adds r0, #1 - strb r0, [r6] - b _0802761A -_08027616: - mov r2, sb - strb r2, [r6] -_0802761A: - ldrb r0, [r7] - b _08027670 -_0802761E: - adds r2, r5, #0 - adds r2, #0x82 - adds r1, r5, #0 - adds r1, #0x86 - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r2] - adds r1, r5, #0 - adds r1, #0x83 - movs r4, #0 - ldrsb r4, [r1, r4] - adds r0, r5, #0 - adds r0, #0x81 - ldrb r3, [r0] - mov r8, r2 - mov sl, r1 - adds r7, r0, #0 - cmn r4, r3 - bgt _08027676 - movs r1, #1 - mov r2, ip - strb r1, [r2] - ldrb r0, [r5, #0xa] - cmp r0, #1 - bne _0802766A - ldr r1, [r5, #0x50] - adds r0, r1, #0 - adds r0, #0x81 - ldrb r0, [r0] - lsls r0, r0, #8 - adds r1, #0x86 - ldrh r1, [r1] - bl __divsi3 - adds r0, #1 - strb r0, [r6] - b _0802766C -_0802766A: - strb r1, [r6] -_0802766C: - ldrb r0, [r7] - rsbs r0, r0, #0 -_08027670: - lsls r0, r0, #8 - mov r1, r8 - strh r0, [r1] -_08027676: - ldr r2, [r5, #0x50] - adds r0, r2, #0 - adds r0, #0x63 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r1, r1, #0x10 - ldr r0, [r2, #0x30] - adds r0, r0, r1 - str r0, [r5, #0x30] - adds r0, r2, #0 - adds r0, #0x62 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r1, r1, #0x10 - ldr r0, [r2, #0x2c] - adds r0, r0, r1 - str r0, [r5, #0x2c] - ldrb r1, [r5, #0xe] - lsls r1, r1, #8 - mov r0, sl - ldrb r2, [r0] - adds r0, r5, #0 - bl LinearMoveAngle - ldrb r0, [r5, #0xa] - cmp r0, #1 - beq _080276D2 - ldr r1, [r5, #0x54] - ldr r0, [r5, #0x30] - str r0, [r1, #0x30] - ldr r1, [r5, #0x54] - ldr r0, [r5, #0x2c] - str r0, [r1, #0x2c] - ldr r0, [r5, #0x54] - ldrb r1, [r0, #0xe] - lsls r1, r1, #8 - adds r2, r0, #0 - adds r2, #0x83 - ldrb r2, [r2] - bl LinearMoveAngle - ldr r0, [r5, #0x68] - ldr r1, [r5, #0x54] - ldrb r2, [r1, #0xa] - bl sub_080279AC -_080276D2: - ldr r0, [r5, #0x68] - ldrb r2, [r5, #0xa] - adds r1, r5, #0 - bl sub_080279AC - mov r1, sl - ldrb r0, [r1] - rsbs r0, r0, #0 - adds r1, r5, #0 - adds r1, #0x7f - strb r0, [r1] - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_080276F4 -sub_080276F4: @ 0x080276F4 - push {r4, r5, r6, r7, lr} - adds r6, r2, #0 - ldr r5, [r0, #0x54] - ldr r4, [r0, #0x68] - ldr r0, [r0, #0x50] - mov ip, r0 - adds r0, #0x84 - movs r2, #0 - strb r2, [r0] - adds r0, r4, #0 - adds r0, #0x84 - strb r2, [r0] - adds r0, r5, #0 - adds r0, #0x84 - strb r2, [r0] - mov r0, ip - adds r0, #0x7e - movs r7, #0 - strh r2, [r0] - adds r0, r4, #0 - adds r0, #0x7e - strh r2, [r0] - adds r0, r5, #0 - adds r0, #0x7e - strh r2, [r0] - mov r0, ip - adds r0, #0x7d - strb r7, [r0] - adds r0, r4, #0 - adds r0, #0x7d - strb r7, [r0] - ldr r0, _080277AC @ =gUnk_080CC27C - lsls r1, r1, #2 - adds r0, r1, r0 - ldrh r2, [r0] - adds r3, r5, #0 - adds r3, #0x86 - strh r2, [r3] - ldrb r0, [r0, #2] - adds r2, r5, #0 - adds r2, #0x81 - strb r0, [r2] - ldr r0, _080277B0 @ =gUnk_080CC2BC - adds r0, r1, r0 - ldrh r2, [r0] - adds r3, r4, #0 - adds r3, #0x86 - strh r2, [r3] - ldrb r0, [r0, #2] - adds r2, r4, #0 - adds r2, #0x81 - strb r0, [r2] - ldr r0, _080277B4 @ =gUnk_080CC29C - adds r1, r1, r0 - ldrh r0, [r1] - mov r2, ip - adds r2, #0x86 - strh r0, [r2] - ldrb r0, [r1, #2] - mov r1, ip - adds r1, #0x81 - strb r0, [r1] - cmp r6, #0 - bne _080277AA - mov r0, ip - adds r0, #0x85 - strb r7, [r0] - adds r0, r4, #0 - adds r0, #0x85 - strb r7, [r0] - adds r0, r5, #0 - adds r0, #0x85 - strb r7, [r0] - mov r0, ip - adds r0, #0x82 - strh r6, [r0] - adds r0, r4, #0 - adds r0, #0x82 - strh r6, [r0] - adds r0, r5, #0 - adds r0, #0x82 - strh r6, [r0] - ldrb r0, [r1] - lsls r0, r0, #7 - ldrh r1, [r2] - bl __divsi3 - adds r0, #1 - adds r1, r5, #0 - adds r1, #0x7d - strb r0, [r1] -_080277AA: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080277AC: .4byte gUnk_080CC27C -_080277B0: .4byte gUnk_080CC2BC -_080277B4: .4byte gUnk_080CC29C - - thumb_func_start sub_080277B8 -sub_080277B8: @ 0x080277B8 - push {r4, r5, lr} - adds r5, r0, #0 - adds r4, r1, #0 - ldr r1, [r5, #0x54] - adds r3, r1, #0 - adds r3, #0x7a - ldrh r0, [r3] - cmp r4, r0 - bls _080277DC - adds r0, r0, r2 - strh r0, [r3] - ldr r0, [r1, #0x74] - ldr r2, _080277D8 @ =0xFFFE8000 - adds r0, r0, r2 - str r0, [r1, #0x74] - b _080277F0 - .align 2, 0 -_080277D8: .4byte 0xFFFE8000 -_080277DC: - strh r4, [r3] - adds r1, #0x7c - movs r0, #8 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x84 - ldr r1, [r0] - ldrb r0, [r1, #3] - adds r0, #1 - strb r0, [r1, #3] -_080277F0: - adds r0, r5, #0 - bl sub_080277F8 - pop {r4, r5, pc} - - thumb_func_start sub_080277F8 -sub_080277F8: @ 0x080277F8 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - ldr r3, [r6, #0x54] - ldr r5, [r6, #0x68] - ldr r4, [r6, #0x50] - ldrh r2, [r6, #0x2e] - strh r2, [r5, #0x2e] - movs r7, #0xe - strb r7, [r5, #0xe] - ldrh r0, [r6, #0x32] - subs r0, #0xe - strh r0, [r5, #0x32] - strh r2, [r4, #0x2e] - movs r0, #0x7a - adds r0, r0, r3 - mov ip, r0 - ldrh r1, [r0] - subs r1, #0xa0 - asrs r1, r1, #4 - movs r0, #0x12 - subs r0, r0, r1 - strb r0, [r4, #0xe] - ldrb r1, [r4, #0xe] - ldrh r0, [r5, #0x32] - subs r0, r0, r1 - strh r0, [r4, #0x32] - strh r2, [r3, #0x2e] - mov r1, ip - ldrh r0, [r1] - cmp r0, #0xa0 - bls _0802784E - subs r0, #0xa0 - asrs r0, r0, #2 - movs r1, #0xe - subs r1, r1, r0 - strb r1, [r3, #0xe] - movs r0, #0x80 - ands r1, r0 - cmp r1, #0 - beq _08027850 - movs r0, #0 - strb r0, [r3, #0xe] - b _08027850 -_0802784E: - strb r7, [r3, #0xe] -_08027850: - ldrb r1, [r3, #0xe] - ldrh r0, [r4, #0x32] - subs r0, r0, r1 - strh r0, [r3, #0x32] - ldr r0, [r3, #0x74] - str r0, [r4, #0x74] - ldr r0, [r3, #0x78] - str r0, [r4, #0x78] - ldr r0, [r3, #0x74] - str r0, [r5, #0x74] - ldr r0, [r3, #0x78] - str r0, [r5, #0x78] - adds r0, r6, #0 - bl sub_08027984 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08027870 -sub_08027870: @ 0x08027870 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - ldr r4, [r7, #0x54] - ldr r5, [r7, #0x68] - ldr r6, [r7, #0x50] - ldr r0, [r4, #0x74] - str r0, [r6, #0x74] - ldr r0, [r4, #0x78] - str r0, [r6, #0x78] - ldr r0, [r4, #0x74] - str r0, [r5, #0x74] - ldr r0, [r4, #0x78] - str r0, [r5, #0x78] - adds r0, r4, #0 - adds r0, #0x83 - ldrb r0, [r0] - rsbs r0, r0, #0 - adds r1, r4, #0 - adds r1, #0x7f - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x83 - ldrb r0, [r0] - rsbs r0, r0, #0 - adds r1, r5, #0 - adds r1, #0x7f - strb r0, [r1] - adds r0, r6, #0 - adds r0, #0x83 - ldrb r0, [r0] - rsbs r0, r0, #0 - adds r1, r6, #0 - adds r1, #0x7f - strb r0, [r1] - adds r1, r5, #0 - adds r1, #0x7a - ldrh r0, [r1] - cmp r0, #0xa0 - bls _080278C2 - movs r0, #0xe - b _080278CC -_080278C2: - ldrh r1, [r1] - movs r0, #0xa0 - subs r0, r0, r1 - asrs r0, r0, #3 - adds r0, #0xe -_080278CC: - strb r0, [r5, #0xe] - adds r1, r6, #0 - adds r1, #0x7a - ldrh r0, [r1] - cmp r0, #0xa0 - bls _080278EA - adds r2, r4, #0 - adds r2, #0x7a - ldrh r1, [r2] - subs r1, #0xa0 - asrs r1, r1, #4 - movs r0, #0x12 - subs r0, r0, r1 - strb r0, [r6, #0xe] - b _080278FA -_080278EA: - ldrh r1, [r1] - movs r0, #0xa0 - subs r0, r0, r1 - asrs r0, r0, #2 - adds r0, #0x12 - strb r0, [r6, #0xe] - adds r2, r4, #0 - adds r2, #0x7a -_080278FA: - adds r0, r2, #0 - ldrh r1, [r0] - cmp r1, #0xa0 - bls _0802791A - adds r0, r1, #0 - subs r0, #0xa0 - asrs r0, r0, #2 - movs r1, #0xe - subs r1, r1, r0 - strb r1, [r4, #0xe] - movs r0, #0x80 - ands r1, r0 - cmp r1, #0 - beq _08027934 - movs r0, #0 - b _08027932 -_0802791A: - cmp r1, #0x7f - bhi _08027928 - ldrh r1, [r0] - movs r0, #0xa0 - subs r0, r0, r1 - asrs r0, r0, #2 - b _08027930 -_08027928: - ldrh r1, [r2] - movs r0, #0xa0 - subs r0, r0, r1 - asrs r0, r0, #1 -_08027930: - adds r0, #0xe -_08027932: - strb r0, [r4, #0xe] -_08027934: - ldr r0, [r7, #0x2c] - str r0, [r5, #0x2c] - ldr r0, [r7, #0x30] - str r0, [r5, #0x30] - ldrb r1, [r5, #0xe] - lsls r1, r1, #8 - adds r0, r5, #0 - adds r0, #0x83 - ldrb r2, [r0] - adds r0, r5, #0 - bl LinearMoveAngle - ldr r0, [r5, #0x2c] - str r0, [r6, #0x2c] - ldr r0, [r5, #0x30] - str r0, [r6, #0x30] - ldrb r1, [r6, #0xe] - lsls r1, r1, #8 - adds r0, r6, #0 - adds r0, #0x83 - ldrb r2, [r0] - adds r0, r6, #0 - bl LinearMoveAngle - ldr r0, [r6, #0x2c] - str r0, [r4, #0x2c] - ldr r0, [r6, #0x30] - str r0, [r4, #0x30] - ldrb r1, [r4, #0xe] - lsls r1, r1, #8 - adds r0, r4, #0 - adds r0, #0x83 - ldrb r2, [r0] - adds r0, r4, #0 - bl LinearMoveAngle - adds r0, r7, #0 - bl sub_08027984 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08027984 -sub_08027984: @ 0x08027984 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r1, [r4, #0x54] - ldr r5, [r4, #0x68] - ldr r6, [r4, #0x50] - ldrb r2, [r1, #0xa] - bl sub_080279AC - ldrb r2, [r5, #0xa] - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_080279AC - ldrb r2, [r6, #0xa] - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080279AC - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_080279AC -sub_080279AC: @ 0x080279AC - push {r4, r5, r6, lr} - mov ip, r1 - movs r3, #4 - subs r3, r3, r2 - ldrh r1, [r1, #0x2e] - ldrh r4, [r0, #0x2e] - subs r1, r1, r4 - mov r6, ip - adds r6, #0x62 - strb r1, [r6] - mov r2, ip - ldrh r1, [r2, #0x32] - ldrh r2, [r0, #0x32] - adds r0, r2, r3 - subs r1, r1, r0 - mov r5, ip - adds r5, #0x63 - strb r1, [r5] - mov r0, ip - strh r4, [r0, #0x2e] - adds r2, r2, r3 - strh r2, [r0, #0x32] - ldr r1, [r0, #0x48] - ldrb r0, [r6] - strb r0, [r1] - mov r2, ip - ldr r1, [r2, #0x48] - ldrb r0, [r5] - strb r0, [r1, #1] - pop {r4, r5, r6, pc} - - thumb_func_start sub_080279E8 -sub_080279E8: @ 0x080279E8 - push {r4, lr} - sub sp, #4 - adds r2, r0, #0 - ldr r4, [r2, #0x54] - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0x80 - bne _08027A20 - adds r0, r2, #0 - adds r0, #0x76 - ldrh r1, [r0] - adds r0, #0xe - ldr r0, [r0] - ldrb r0, [r0, #5] - subs r1, r1, r0 - cmp r1, #0x80 - bne _08027A58 - adds r0, r2, #0 - adds r0, #0x82 - ldrb r1, [r0] - movs r0, #1 - str r0, [sp] - adds r0, r2, #0 - movs r2, #0xa0 - movs r3, #0x20 - bl sub_08027B98 - b _08027A58 -_08027A20: - adds r0, r4, #0 - adds r0, #0x76 - ldrh r1, [r0] - adds r3, r0, #0 - cmp r1, #0xa0 - bls _08027A30 - subs r0, r1, #4 - b _08027A32 -_08027A30: - movs r0, #0xa0 -_08027A32: - strh r0, [r3] - adds r0, r4, #0 - adds r0, #0x7a - ldrh r2, [r0] - adds r1, r0, #0 - cmp r2, #0xa0 - bls _08027A44 - subs r0, r2, #4 - b _08027A46 -_08027A44: - movs r0, #0xa0 -_08027A46: - strh r0, [r1] - ldrh r0, [r3] - cmp r0, #0xa0 - bne _08027A58 - ldrh r0, [r1] - cmp r0, #0xa0 - bne _08027A58 - movs r0, #1 - b _08027A5A -_08027A58: - movs r0, #0 -_08027A5A: - add sp, #4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08027A60 -sub_08027A60: @ 0x08027A60 - push {lr} - adds r2, r0, #0 - adds r0, #0x7c - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08027A78 - ldr r0, [r2, #0x74] - movs r1, #0x80 - lsls r1, r1, #7 - b _08027A7C -_08027A78: - ldr r0, [r2, #0x74] - ldr r1, _08027AA0 @ =0xFFFFC000 -_08027A7C: - adds r0, r0, r1 - str r0, [r2, #0x74] - adds r3, r2, #0 - adds r3, #0x7c - ldrb r0, [r3] - adds r2, r0, #1 - strb r2, [r3] - movs r0, #0x7f - ands r0, r2 - cmp r0, #0x28 - bne _08027A9C - movs r1, #0x80 - movs r0, #0x80 - ands r2, r0 - eors r2, r1 - strb r2, [r3] -_08027A9C: - pop {pc} - .align 2, 0 -_08027AA0: .4byte 0xFFFFC000 - - thumb_func_start sub_08027AA4 -sub_08027AA4: @ 0x08027AA4 - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08027B94 - movs r0, #0x7f - ands r0, r1 - cmp r0, #0x13 - beq _08027AC2 - cmp r0, #0x1b - beq _08027B44 - b _08027B94 -_08027AC2: - movs r0, #0x84 - bl SoundReq - ldrb r3, [r5, #0xb] - adds r0, r5, #0 - movs r1, #0x49 - movs r2, #9 - bl CreateObjectWithParent - ldr r0, _08027B3C @ =0x00000155 - bl SoundReq - adds r0, r5, #0 - adds r0, #0x84 - ldr r4, [r0] - adds r1, r5, #0 - adds r1, #0x3d - movs r0, #3 - strb r0, [r1] - ldrb r0, [r4, #6] - adds r0, #1 - strb r0, [r4, #6] - ldrb r0, [r4, #6] - movs r1, #3 - bl __divsi3 - adds r1, r0, #0 - lsls r0, r1, #0x18 - lsrs r0, r0, #0x15 - ldrb r2, [r4, #5] - cmp r0, r2 - beq _08027B06 - lsls r0, r1, #3 - strb r0, [r4, #5] -_08027B06: - movs r0, #0xb4 - str r0, [r4, #8] - movs r0, #5 - ldrsb r0, [r4, r0] - cmp r0, #0 - bge _08027B94 - movs r0, #0x40 - strb r0, [r4, #1] - adds r1, r5, #0 - adds r1, #0x3f - movs r0, #0 - strb r0, [r1] - ldrb r0, [r5, #0xd] - cmp r0, #2 - bne _08027B2A - adds r0, r5, #0 - bl sub_08027BBC -_08027B2A: - adds r0, r5, #0 - bl sub_08027D20 - ldr r0, _08027B40 @ =0x00000127 - bl SoundReq -_08027B36: - movs r0, #1 - b _08027B96 - .align 2, 0 -_08027B3C: .4byte 0x00000155 -_08027B40: .4byte 0x00000127 -_08027B44: - adds r1, r5, #0 - adds r1, #0x3d - movs r0, #0xe2 - strb r0, [r1] - ldr r0, [r5, #0x4c] - ldrb r0, [r0, #0xa] - adds r0, #1 - cmp r0, #2 - beq _08027B74 - cmp r0, #2 - bgt _08027B60 - cmp r0, #1 - beq _08027B84 - b _08027B36 -_08027B60: - cmp r0, #3 - bne _08027B36 - adds r1, r5, #0 - adds r1, #0x42 - movs r0, #0x1a - strb r0, [r1] - adds r1, #4 - movs r0, #0xe0 - lsls r0, r0, #1 - b _08027B90 -_08027B74: - adds r1, r5, #0 - adds r1, #0x42 - movs r0, #0x14 - strb r0, [r1] - adds r1, #4 - movs r0, #0xc0 - lsls r0, r0, #1 - b _08027B90 -_08027B84: - adds r1, r5, #0 - adds r1, #0x42 - movs r0, #0x10 - strb r0, [r1] - adds r1, #4 - adds r0, #0xf0 -_08027B90: - strh r0, [r1] - b _08027B36 -_08027B94: - movs r0, #0 -_08027B96: - pop {r4, r5, pc} - - thumb_func_start sub_08027B98 -sub_08027B98: @ 0x08027B98 - push {r4, lr} - mov ip, r0 - ldr r4, [sp, #8] - adds r0, #0x82 - strb r1, [r0] - subs r0, #1 - strb r2, [r0] - subs r0, #1 - strb r3, [r0] - cmp r4, #0xff - beq _08027BB4 - mov r0, ip - strb r4, [r0, #0xe] - b _08027BBA -_08027BB4: - movs r0, #1 - mov r1, ip - strb r0, [r1, #0xe] -_08027BBA: - pop {r4, pc} - - thumb_func_start sub_08027BBC -sub_08027BBC: @ 0x08027BBC - push {r4, r5, r6, lr} - adds r6, r0, #0 - movs r4, #0 - movs r0, #0xa - strb r0, [r6, #0xd] - adds r5, r6, #0 - adds r5, #0x84 - ldr r0, [r5] - strb r4, [r0, #1] - adds r0, r6, #0 - movs r1, #7 - movs r2, #1 - bl sub_080276F4 - ldr r0, [r6, #0x54] - adds r0, #0x7d - strb r4, [r0] - movs r3, #0 - strh r4, [r6, #0x24] - ldr r0, [r5] - strb r3, [r0, #3] - movs r0, #0x2e - ldrsh r1, [r6, r0] - ldr r0, [r5] - ldrh r0, [r0, #0xe] - cmp r1, r0 - ble _08027C0A - movs r0, #0x18 - strb r0, [r6, #0x15] - ldr r2, [r6, #0x54] - ldr r1, [r6, #0x50] - ldr r0, [r6, #0x68] - adds r0, #0x85 - strb r3, [r0] - adds r1, #0x85 - strb r3, [r1] - adds r2, #0x85 - strb r3, [r2] - b _08027C22 -_08027C0A: - movs r0, #8 - strb r0, [r6, #0x15] - ldr r3, [r6, #0x54] - ldr r2, [r6, #0x50] - ldr r0, [r6, #0x68] - adds r0, #0x85 - movs r1, #1 - strb r1, [r0] - adds r2, #0x85 - strb r1, [r2] - adds r3, #0x85 - strb r1, [r3] -_08027C22: - ldrb r0, [r6, #0x15] - lsrs r0, r0, #2 - strb r0, [r6, #0x14] - ldr r0, _08027C44 @ =gPlayerEntity - movs r2, #0x32 - ldrsh r1, [r6, r2] - movs r2, #0x32 - ldrsh r0, [r0, r2] - cmp r1, r0 - beq _08027C52 - cmp r1, r0 - ble _08027C48 - adds r0, r6, #0 - adds r0, #0x84 - ldr r1, [r0] - movs r0, #0 - b _08027C50 - .align 2, 0 -_08027C44: .4byte gPlayerEntity -_08027C48: - adds r0, r6, #0 - adds r0, #0x84 - ldr r1, [r0] - movs r0, #0x10 -_08027C50: - strb r0, [r1, #0xc] -_08027C52: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08027C54 -sub_08027C54: @ 0x08027C54 - push {lr} - ldr r2, _08027C74 @ =gUnk_080CC2DC - adds r1, r0, #0 - adds r1, #0x84 - ldr r1, [r1] - ldrb r1, [r1, #4] - adds r1, r1, r2 - ldr r0, [r0, #0x54] - adds r0, #0x45 - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bhi _08027C78 - movs r0, #0 - b _08027C7A - .align 2, 0 -_08027C74: .4byte gUnk_080CC2DC -_08027C78: - movs r0, #1 -_08027C7A: - pop {pc} - - thumb_func_start sub_08027C7C -sub_08027C7C: @ 0x08027C7C - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldr r0, [r4, #0x54] - bl sub_08027C9C - ldr r0, [r4, #0x68] - adds r1, r5, #0 - bl sub_08027C9C - ldr r0, [r4, #0x50] - adds r1, r5, #0 - bl sub_08027C9C - pop {r4, r5, pc} - .align 2, 0 - - 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 -.ifdef EU - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x15 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - adds r3, r0, #0 - cmp r3, #0 - beq _08027D44 - movs r0, #0xc9 - strh r0, [r3, #0x12] - adds r0, r4, #0 - adds r0, #0x60 - ldrh r1, [r0] - adds r0, r3, #0 - adds r0, #0x60 - strh r1, [r0] - ldrb r1, [r4, #0x1a] - lsls r1, r1, #0x1c - lsrs r1, r1, #0x1c - ldrb r2, [r3, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x1a] - ldrh r0, [r3, #0x32] - adds r0, #1 - strh r0, [r3, #0x32] - adds r1, r3, #0 - adds r1, #0x63 - movs r0, #8 - strb r0, [r1] -_08027D44: - adds r0, r3, #0 - pop {r4, pc} -.else - push {r4, r5, lr} - adds r5, r0, #0 - movs r1, #0x15 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - adds r4, r0, #0 - cmp r4, #0 - beq _08027D66 - movs r0, #0xc9 - strh r0, [r4, #0x12] - ldrh r0, [r4, #0x32] - adds r0, #1 - strh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #8 - strb r0, [r1] - adds r0, r4, #0 - movs r1, #0x3e - bl LoadFixedGFX - ldrb r0, [r5, #0xb] - cmp r0, #0 - bne _08027D5E - adds r0, r4, #0 - movs r1, #0x2b - bl LoadObjPalette - b _08027D66 -_08027D5E: - adds r0, r4, #0 - movs r1, #0x2c - bl LoadObjPalette -_08027D66: - adds r0, r4, #0 - pop {r4, r5, pc} - .align 2, 0 -.endif diff --git a/include/functions.h b/include/functions.h index 18cc67e7..11de5285 100644 --- a/include/functions.h +++ b/include/functions.h @@ -78,7 +78,6 @@ extern u32 sub_0801766C(Entity*); extern void sub_0801AFE4(void); extern void UpdateUIElements(void); extern void sub_0801E104(void); -extern void sub_08027870(Entity*); extern void sub_08030118(u32); extern void sub_0803C0AC(Entity*); extern void sub_08049CF4(Entity*); diff --git a/linker.ld b/linker.ld index 4c15fd31..1cc04d01 100644 --- a/linker.ld +++ b/linker.ld @@ -317,7 +317,6 @@ SECTIONS { src/enemy/pesto.o(.text); src/enemy/puffstool.o(.text); src/enemy/chuchuBoss.o(.text); - asm/enemy/chuchuBoss.o(.text); src/enemy/likeLike.o(.text); src/enemy/spearMoblin.o(.text); src/enemy/businessScrub.o(.text); diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c index fe228005..62e5e0ff 100644 --- a/src/enemy/chuchuBoss.c +++ b/src/enemy/chuchuBoss.c @@ -41,7 +41,7 @@ typedef struct _ChuchuBossEntity { union SplitWord unk_78; u8 unk_7c; u8 unk_7d; - u16 unk_7e; + union SplitHWord unk_7e; u8 unk_80; u8 unk_81; union SplitHWord unk_82; @@ -63,9 +63,15 @@ extern void (*const gUnk_080CC258[])(ChuchuBossEntity*); extern void (*const gUnk_080CC264[])(ChuchuBossEntity*); extern void (*const gUnk_080CC26C[])(ChuchuBossEntity*); extern const u8 gUnk_080CC278[]; -extern const u16 gUnk_080CC27C[]; -extern const u16 gUnk_080CC29C[]; -extern const u16 gUnk_080CC2BC[]; + +typedef struct { + u16 unk0; + u8 unk2; +} ChuchuStruct; + +extern const ChuchuStruct gUnk_080CC27C[]; +extern const ChuchuStruct gUnk_080CC29C[]; +extern const ChuchuStruct gUnk_080CC2BC[]; extern const s8 gUnk_080CC2DC[]; extern Hitbox gUnk_080FD238; @@ -116,7 +122,7 @@ void sub_0802757C(); void sub_080276F4(); void sub_080277B8(); void sub_080277F8(); -void sub_08027870(); +void sub_08027870(ChuchuBossEntity*); void sub_08027984(); void sub_080279AC(); bool32 sub_080279E8(ChuchuBossEntity*); @@ -127,7 +133,7 @@ void sub_08027BBC(); bool32 sub_08027C54(); void sub_08027C7C(ChuchuBossEntity*, u32); void sub_08027C9C(); -void sub_08027D20(); +Entity* sub_08027D20(ChuchuBossEntity*); // clang-format off void (*const ChuchuBoss_Functions[])(ChuchuBossEntity*) = { @@ -222,25 +228,25 @@ const u8 gUnk_080CC278[] = { 150, 180, 210, 250, }; -const u16 gUnk_080CC27C[] = { - 0x80, 0x8, 0x100, 0x6, - 0x80, 0x18, 0x100, 0x8, - 0x180, 0x6, 0x100, 0x10, - 0x0, 0x0, 0xA0, 0x18, +const ChuchuStruct gUnk_080CC27C[] = { + {0x80, 0x8}, {0x100, 0x6}, + {0x80, 0x18}, {0x100, 0x8}, + {0x180, 0x6}, {0x100, 0x10}, + {0x0, 0x0}, {0xA0, 0x18}, }; -const u16 gUnk_080CC29C[] = { - 0x80, 0x8, 0x100, 0x4, - 0x80, 0xC, 0x80, 0x6, - 0x200, 0x6, 0x100, 0xC, - 0x0, 0x0, 0xA0, 0x14, +const ChuchuStruct gUnk_080CC29C[] = { + {0x80, 0x8}, {0x100, 0x4}, + {0x80, 0xC}, { 0x80, 0x6}, + {0x200, 0x6}, {0x100, 0xC}, + {0x0, 0x0}, {0xA0, 0x14}, }; -const u16 gUnk_080CC2BC[] = { - 0x80, 0x8, 0x100, 0x0, - 0x60, 0x2, 0x80, 0x2, - 0x200, 0x6, 0x100, 0x8, - 0x0, 0x0, 0xA0, 0x10, +const ChuchuStruct gUnk_080CC2BC[] = { + {0x80, 0x8}, {0x100, 0x0}, + {0x60, 0x2}, { 0x80, 0x2}, + {0x200, 0x6}, {0x100, 0x8}, + {0x0, 0x0}, {0xA0, 0x10}, }; @@ -256,7 +262,7 @@ void ChuchuBoss(Entity* this) { void ChuchuBoss_OnKnockback(ChuchuBossEntity* this) { GenericKnockback(super); if (super->type == 0) { - sub_08027870(super); + sub_08027870(this); } } @@ -308,7 +314,7 @@ void ChuchuBoss_OnDeath(ChuchuBossEntity* this) { break; } } - sub_08027870(super); + sub_08027870(this); } else { if (this->unk_6d.unk1) { this->unk_6d.unk1 = 1; @@ -330,7 +336,7 @@ NONMATCH("asm/non_matching/chuchuBoss/sub_08025DD8.inc", void sub_08025DD8(Chuch super->spritePriority.b0 = gUnk_080CC1B8[super->type & 3].unk_01; this->unk_74.HALF.HI = 0xa0; this->unk_78.HALF.HI = 0xa0; - this->unk_7e = 0; + this->unk_7e.HWORD = 0; super->spriteRendering.b0 = 3; if ((super->type & 3) == 1) { InitAnimationForceUpdate(super, 0); @@ -435,7 +441,7 @@ END_NONMATCH void sub_08026060(ChuchuBossEntity* this) { gUnk_080CC1C8[super->type](this); - SetAffineInfo(super, this->unk_74.HALF_U.HI, this->unk_78.HALF_U.HI, this->unk_7e); + SetAffineInfo(super, this->unk_74.HALF_U.HI, this->unk_78.HALF_U.HI, this->unk_7e.HWORD); } void sub_08026090(ChuchuBossEntity* this) { @@ -650,7 +656,7 @@ void sub_0802650C(ChuchuBossEntity* this) { this->unk_84->unk_03++; gRoomControls.camera_target = &gPlayerEntity; } - sub_08027870(super); + sub_08027870(this); } void sub_0802653C(ChuchuBossEntity* this) { @@ -691,7 +697,7 @@ void sub_08026580(ChuchuBossEntity* this) { } } } - sub_08027870(super); + sub_08027870(this); } } @@ -741,7 +747,7 @@ void sub_08026634(ChuchuBossEntity* this) { this->unk_7d--; } } - sub_08027870(super); + sub_08027870(this); } void sub_08026750(ChuchuBossEntity* this) { @@ -805,7 +811,7 @@ void sub_0802686C(ChuchuBossEntity* this) { super->subAction = 5; this->unk_84->unk_03 = 0; sub_08027B98(this, 0x80, 0x80, 0x80, 0); - sub_08027870(super); + sub_08027870(this); InitAnimationForceUpdate(super->child, 3); SoundReq(SFX_1A1); } @@ -858,7 +864,7 @@ void sub_08026968(ChuchuBossEntity* this) { pEVar6->unk_82.HWORD += sVar5; pEVar7->unk_82.HWORD += sVar5; } - sub_08027870(super); + sub_08027870(this); } void sub_080269CC(ChuchuBossEntity* this) { @@ -964,7 +970,7 @@ void sub_080269CC(ChuchuBossEntity* this) { pEVar7->unk_74.WORD += 0x40000; pEVar7->unk_78.WORD -= 0x8000; } - sub_08027870(super); + sub_08027870(this); } void sub_08026BE8(ChuchuBossEntity* this) { @@ -982,7 +988,7 @@ void sub_08026BE8(ChuchuBossEntity* this) { } else { this->unk_7c--; } - sub_08027870(super); + sub_08027870(this); } void sub_08026C40(ChuchuBossEntity* this) { @@ -1073,7 +1079,7 @@ void sub_08026C40(ChuchuBossEntity* this) { pEVar6->base.subtimer = 0; sub_08027B98(this, 0x90, 0xb0, 0x10, 0); } - sub_08027870(super); + sub_08027870(this); } void sub_08026E1C(ChuchuBossEntity* this) { @@ -1177,7 +1183,7 @@ void sub_08026FA4(ChuchuBossEntity* this) { } } } - sub_08027870(super); + sub_08027870(this); } void sub_08027064(ChuchuBossEntity* this) { @@ -1258,5 +1264,582 @@ void sub_08027064(ChuchuBossEntity* this) { this->unk_7c = 0x3c; } } - sub_08027870(super); + sub_08027870(this); +} + +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; +} + +void sub_080272D4(ChuchuBossEntity* this) { + Entity* pEVar3; + u8 temp; + + switch (super->parent->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; + case 4: + sub_0802757C(this); + break; + case 8: + if (super->subtimer < 3) { + sub_0802757C(this); + if (this->unk_82.HALF.HI == 0) { + super->subtimer++; + } + } + break; + case 6: + super->hitbox->width = (u32)((0x10000 / this->unk_78.HALF_U.HI) * 9) >> 7; + super->hitbox->height = (u32)((0x10000 / this->unk_74.HALF_U.HI) * 5) >> 6; + if (*(char*)&this->unk_84 == 0) + break; + if ((super->contactFlags & 0x80) != 0) { + if (super->iframes != 0) { + ((ChuchuBossEntity*)super->child)->unk_68->base.iframes = super->iframes; + super->child->parent->iframes = super->iframes; + super->child->iframes = super->iframes; + pEVar3 = sub_08027D20((ChuchuBossEntity*)super->child); + if (pEVar3 != NULL) { + pEVar3->x.HALF.HI = super->x.HALF.HI + 1; + pEVar3->spriteOffsetY = super->spriteOffsetY + 0x20; + pEVar3->spriteOffsetX = super->spriteOffsetX; + } + if (sub_08027C54(super->child) == 0 || ((ChuchuBossEntity*)super->child)->unk_84->unk_04 != 2) { + SoundReq(SFX_BOSS_HIT); + } else { + sub_08078B48(); + gRoomControls.camera_target = super->child; + gPauseMenuOptions.disabled = 1; + gRoomControls.camera_target->subAction = 9; + SoundReq(SFX_BOSS_DIE); + } + } + } + sub_08027A60(this); + sub_0800445C(super); + break; + + case 9: + super->hitbox->width = (u32)((0x10000 / this->unk_78.HALF_U.HI) * 9) >> 7; + super->hitbox->height = (u32)((0x10000 / this->unk_74.HALF_U.HI) * 5) >> 6; + sub_0800445C(super); + break; + case 10: + if (this->unk_7d == 0) { + sub_0802757C(this); + } else if (*(char*)&this->unk_84 != 0) { + this->unk_7d = 0; + *(char*)&this->unk_84 = 0; + } + temp = this->unk_82.HALF.HI + (this->unk_81 / 2); + if ((temp) > (u32)this->unk_81) { + if ((s8)this->unk_82.HALF.HI > 0) { + if (super->animIndex != 12) { + InitAnimationForceUpdate(super, 12); + } + } else if (super->animIndex != 11) { + InitAnimationForceUpdate(super, 11); + } + } else if (super->animIndex != 10) { + InitAnimationForceUpdate(super, 10); + } + break; + case 0: + if (((ChuchuBossEntity*)super->child)->unk_84->unk_03 == 8) { + sub_0802757C(this); + if (this->unk_7d == 1) { + if (this->unk_81 != 0) { + this->unk_81 -= 4; + } + } + } + break; + } + super->z.WORD = super->parent->z.WORD; + super->contactFlags = 0; + UpdateAnimationSingleFrame(super); +} + +void sub_08027548(ChuchuBossEntity* this, u32 param_2) { + super->subAction = 1; + sub_08027B98(this, 0x90, 0xb0, 8, 0xff); + this->unk_7d = 0; + sub_080276F4(this, 0, param_2); +} + +void sub_0802757C(ChuchuBossEntity* this) { + u32 cVar2; + + if (this->unk_7d != 0) { + if (super->type != 1) { + if (((ChuchuBossEntity*)super->child)->unk_7d != 0) { + this->unk_7d = 0; + } + } else { + this->unk_7d--; + } + } else { + if (*(u8*)((int)this + 0x85) == 1) { + this->unk_82.HWORD += *(u16*)((int)this + 0x86); + if ((s8)this->unk_82.HALF.HI >= (s8)this->unk_81) { + *(u8*)((int)this + 0x85) = 0; + if (super->type == 1) { + this->unk_7d = + (((ChuchuBossEntity*)super->parent)->unk_81 << 8) / *(u16*)((int)super->parent + 0x86) + 1; + } else { + this->unk_7d = 1; + } + this->unk_82.HWORD = this->unk_81 << 8; + } + } else { + this->unk_82.HWORD -= *(u16*)((int)this + 0x86); + if ((s8)this->unk_82.HALF.HI <= -this->unk_81) { + cVar2 = 1; + *(u8*)((int)this + 0x85) = cVar2; + if (super->type == 1) { + this->unk_7d = + (((ChuchuBossEntity*)super->parent)->unk_81 << 8) / *(u16*)((int)super->parent + 0x86) + 1; + } else { + this->unk_7d = 1; + } + this->unk_82.HWORD = (-this->unk_81) << 8; + } + } + } + super->y.WORD = super->parent->y.WORD + super->parent->spriteOffsetY * 0x10000; + super->x.WORD = super->parent->x.WORD + (s8)super->parent->spriteOffsetX * 0x10000; + LinearMoveAngle(super, super->timer << 8, this->unk_82.HALF.HI); + if (super->type != 1) { + super->child->y.WORD = super->y.WORD; + super->child->x.WORD = super->x.WORD; + LinearMoveAngle(super->child, super->child->timer << 8, ((ChuchuBossEntity*)super->child)->unk_82.HALF.HI); + sub_080279AC(this->unk_68, super->child, super->child->type); + } + sub_080279AC(this->unk_68, this, super->type); + this->unk_7e.HALF.HI = -this->unk_82.HALF.HI; +} + +void sub_080276F4(ChuchuBossEntity* this, u32 param_2, u32 param_3) { + u32 tempzero; + ChuchuBossEntity* pEVar2; + ChuchuBossEntity* pEVar5; + ChuchuBossEntity* pEVar6; + int iVar3; + int iVar4; + int iVar5; + const ChuchuStruct* ptr; + const ChuchuStruct* ptr2; + const ChuchuStruct* ptr3; + + pEVar6 = (ChuchuBossEntity*)super->child; + pEVar5 = this->unk_68; + pEVar2 = (ChuchuBossEntity*)super->parent; + *(u8*)((int)pEVar2 + 0x84) = tempzero = 0; + *(u8*)((int)pEVar5 + 0x84) = 0; + *(u8*)((int)pEVar6 + 0x84) = 0; + pEVar2->unk_7e.HWORD = tempzero; + pEVar5->unk_7e.HWORD = 0; + pEVar6->unk_7e.HWORD = 0; + pEVar2->unk_7d = 0; + pEVar5->unk_7d = 0; + ptr = gUnk_080CC27C; + ptr += param_2; + iVar3 = ptr->unk0; + *(u16*)((int)pEVar6 + 0x86) = iVar3; + pEVar6->unk_81 = ptr->unk2; + ptr2 = gUnk_080CC2BC; + ptr2 += param_2; + iVar4 = ptr2->unk0; + *(u16*)((int)pEVar5 + 0x86) = iVar4; + pEVar5->unk_81 = ptr2->unk2; + ptr3 = (ChuchuStruct*)gUnk_080CC29C; + iVar5 = ptr3[param_2].unk0; + *(u16*)((int)pEVar2 + 0x86) = iVar5; + pEVar2->unk_81 = ptr3[param_2].unk2; + if (param_3 == 0) { + *(u8*)((int)pEVar2 + 0x85) = 0; + *(u8*)((int)pEVar5 + 0x85) = 0; + *(u8*)((int)pEVar6 + 0x85) = 0; + pEVar2->unk_82.HWORD = 0; + pEVar5->unk_82.HWORD = 0; + pEVar6->unk_82.HWORD = 0; + pEVar6->unk_7d = (pEVar2->unk_81 << 7) / (*(u16*)((int)pEVar2 + 0x86)) + 1; + } +} + +void sub_080277B8(ChuchuBossEntity* this, u32 param_2, s32 param_3) { + ChuchuBossEntity* pEVar1; + + pEVar1 = (ChuchuBossEntity*)super->child; + if (param_2 > pEVar1->unk_78.HALF_U.HI) { + pEVar1->unk_78.HALF.HI += param_3; + pEVar1->unk_74.WORD -= Q_16_16(1.5); + } else { + pEVar1->unk_78.HALF.HI = param_2; + pEVar1->unk_7c = 8; + this->unk_84->unk_03++; + } + sub_080277F8(this); +} + +void sub_080277F8(ChuchuBossEntity* this) { + u32 uVar1; + ChuchuBossEntity* pEVar3; + ChuchuBossEntity* pEVar4; + ChuchuBossEntity* pEVar5; + + pEVar3 = (ChuchuBossEntity*)super->child; + pEVar5 = this->unk_68; + pEVar4 = (ChuchuBossEntity*)super->parent; + uVar1 = super->x.HALF_U.HI; + pEVar5->base.x.HALF.HI = uVar1; + pEVar5->base.timer = 14; + pEVar5->base.y.HALF.HI = super->y.HALF.HI - 14; + pEVar4->base.x.HALF.HI = uVar1; + pEVar4->base.timer = 18 - ((pEVar3->unk_78.HALF_U.HI - 0xa0) >> 4); + pEVar4->base.y.HALF.HI = pEVar5->base.y.HALF.HI - pEVar4->base.timer; + pEVar3->base.x.HALF.HI = uVar1; + if (pEVar3->unk_78.HALF_U.HI >= 0xa1) { + pEVar3->base.timer = 14 - ((pEVar3->unk_78.HALF_U.HI - 0xa0) >> 2); + if ((pEVar3->base.timer & 0x80) != 0) { + pEVar3->base.timer = 0; + } + } else { + pEVar3->base.timer = 14; + } + pEVar3->base.y.HALF.HI = pEVar4->base.y.HALF.HI - pEVar3->base.timer; + pEVar4->unk_74.WORD = pEVar3->unk_74.WORD; + pEVar4->unk_78.WORD = pEVar3->unk_78.WORD; + pEVar5->unk_74.WORD = pEVar3->unk_74.WORD; + pEVar5->unk_78.WORD = pEVar3->unk_78.WORD; + sub_08027984(this); +} + +void sub_08027870(ChuchuBossEntity* this) { + u32 cVar1; + u32 uVar2; + u32 uVar3; + ChuchuBossEntity* pEVar5; + ChuchuBossEntity* pEVar7; + ChuchuBossEntity* pEVar6; + + pEVar5 = (ChuchuBossEntity*)super->child; + pEVar7 = this->unk_68; + pEVar6 = (ChuchuBossEntity*)super->parent; + pEVar6->unk_74.WORD = pEVar5->unk_74.WORD; + pEVar6->unk_78.WORD = pEVar5->unk_78.WORD; + pEVar7->unk_74.WORD = pEVar5->unk_74.WORD; + pEVar7->unk_78.WORD = pEVar5->unk_78.WORD; + pEVar5->unk_7e.HALF.HI = -pEVar5->unk_82.HALF.HI; + pEVar7->unk_7e.HALF.HI = -pEVar7->unk_82.HALF.HI; + pEVar6->unk_7e.HALF.HI = -pEVar6->unk_82.HALF.HI; + if (pEVar7->unk_78.HALF_U.HI >= 0xa1) { + uVar2 = 14; + } else { + uVar2 = ((0xa0 - pEVar7->unk_78.HALF_U.HI) >> 3) + 14; + } + pEVar7->base.timer = uVar2; + if (pEVar6->unk_78.HALF_U.HI >= 0xa1) { + pEVar6->base.timer = 18 - ((pEVar5->unk_78.HALF_U.HI - 0xa0) >> 4); + } else { + pEVar6->base.timer = ((0xa0 - pEVar6->unk_78.HALF_U.HI) >> 2) + 18; + } + if (pEVar5->unk_78.HALF_U.HI >= 0xa1) { + uVar3 = 0xe - ((pEVar5->unk_78.HALF_U.HI - 0xa0) >> 2); + pEVar5->base.timer = uVar3; + if ((uVar3 & 0x80) != 0) { + pEVar5->base.timer = 0; + } + } else { + if (pEVar5->unk_78.HALF_U.HI < 0x80) { + cVar1 = ((0xa0 - pEVar5->unk_78.HALF_U.HI) >> 2); + } else { + cVar1 = ((0xa0 - pEVar5->unk_78.HALF_U.HI) >> 1); + } + pEVar5->base.timer = cVar1 + 14; + } + pEVar7->base.x.WORD = super->x.WORD; + pEVar7->base.y.WORD = super->y.WORD; + LinearMoveAngle(&pEVar7->base, pEVar7->base.timer << 8, pEVar7->unk_82.HALF.HI); + pEVar6->base.x.WORD = pEVar7->base.x.WORD; + pEVar6->base.y.WORD = pEVar7->base.y.WORD; + LinearMoveAngle(&pEVar6->base, pEVar6->base.timer << 8, pEVar6->unk_82.HALF.HI); + pEVar5->base.x.WORD = pEVar6->base.x.WORD; + pEVar5->base.y.WORD = pEVar6->base.y.WORD; + LinearMoveAngle(&pEVar5->base, pEVar5->base.timer << 8, pEVar5->unk_82.HALF.HI); + sub_08027984(this); +} + +void sub_08027984(ChuchuBossEntity* this) { + ChuchuBossEntity* child; + ChuchuBossEntity* pEVar1; + ChuchuBossEntity* pEVar2; + + child = (ChuchuBossEntity*)super->child; + pEVar1 = this->unk_68; + pEVar2 = (ChuchuBossEntity*)super->parent; + sub_080279AC(this, child, child->base.type); + sub_080279AC(this, pEVar1, pEVar1->base.type); + sub_080279AC(this, pEVar2, pEVar2->base.type); +} + +void sub_080279AC(ChuchuBossEntity* this, Entity* param_2, s32 param_3) { + s32 temp; + + temp = 4 - param_3; + param_2->spriteOffsetX = param_2->x.HALF_U.HI - super->x.HALF_U.HI; + param_2->spriteOffsetY = param_2->y.HALF.HI - (super->y.HALF.HI + temp); + param_2->x.HALF.HI = super->x.HALF_U.HI; + param_2->y.HALF.HI = super->y.HALF.HI + temp; + param_2->hitbox->offset_x = param_2->spriteOffsetX; + param_2->hitbox->offset_y = param_2->spriteOffsetY; +} + +bool32 sub_080279E8(ChuchuBossEntity* this) { + u32 sVar1; + u32 sVar2; + ChuchuBossEntity* pEVar4; + + pEVar4 = (ChuchuBossEntity*)super->child; + if (this->unk_81 == 0x80) { + if (this->unk_74.HALF_U.HI - (u8)this->unk_84->unk_05 == 0x80) { + sub_08027B98(this, this->unk_82.HALF.LO, 0xa0, 0x20, 1); + } + } else { + if (pEVar4->unk_74.HALF_U.HI >= 0xa1) { + pEVar4->unk_74.HALF_U.HI = pEVar4->unk_74.HALF_U.HI - 4; + } else { + pEVar4->unk_74.HALF_U.HI = 0xa0; + } + if (pEVar4->unk_78.HALF_U.HI >= 0xa1) { + pEVar4->unk_78.HALF_U.HI = pEVar4->unk_78.HALF_U.HI - 4; + } else { + pEVar4->unk_78.HALF_U.HI = 0xa0; + } + if ((pEVar4->unk_74.HALF_U.HI == 0xa0) && (pEVar4->unk_78.HALF_U.HI == 0xa0)) { + return TRUE; + } + } + return FALSE; +} + +void sub_08027A60(ChuchuBossEntity* this) { + int iVar1; + int iVar2; + u32 bVar3; + + if ((this->unk_7c & 0x80) != 0) { + this->unk_74.WORD += Q_16_16(0.25); + } else { + this->unk_74.WORD -= Q_16_16(0.25); + } + this->unk_7c++; + if ((this->unk_7c & 0x7f) == 0x28) { + this->unk_7c = (this->unk_7c & 0x80) ^ 0x80; + } +} + +bool32 sub_08027AA4(ChuchuBossEntity* this) { + u32 uVar3; + s32 iVar4; + Helper* pHelper; + + if ((super->contactFlags & 0x80) == 0) { + return FALSE; + } + switch (super->contactFlags & 0x7f) { + case 19: + SoundReq(SFX_WATER_SPLASH); + CreateObjectWithParent(super, OBJECT_49, 9, super->type2); + SoundReq(SFX_155); + pHelper = this->unk_84; + super->iframes = 3; + pHelper->unk_06++; + iVar4 = pHelper->unk_06; + uVar3 = (iVar4 / 3); + if (((u8)uVar3 << 3) != (u8)pHelper->unk_05) { + pHelper->unk_05 = (uVar3 << 3); + } + pHelper->unk_08 = 0xb4; + if (-1 < pHelper->unk_05) { + break; + } + pHelper->unk_01 = 0x40; + super->hitType = 0; + if (super->subAction == 2) { + sub_08027BBC(this); + } + sub_08027D20(this); + SoundReq(SFX_BOSS_HIT); + return TRUE; + case 27: + super->iframes = -30; + switch (super->contactedEntity->type + 1) { + case 3: + super->knockbackDuration = 26; + super->knockbackSpeed = Q_8_8(1.75); + break; + case 2: + super->knockbackDuration = 20; + super->knockbackSpeed = Q_8_8(1.5); + break; + case 1: + super->knockbackDuration = 16; + super->knockbackSpeed = Q_8_8(1); + break; + } + return TRUE; + } + return FALSE; +} + +void sub_08027B98(ChuchuBossEntity* this, u32 unk1, u32 unk2, u32 unk3, u32 unk4) { + this->unk_82.HALF.LO = unk1; + this->unk_81 = unk2; + this->unk_80 = unk3; + if (unk4 != 0xff) { + super->timer = unk4; + } else { + super->timer = 1; + } +} + +void sub_08027BBC(ChuchuBossEntity* this) { + ChuchuBossEntity* pEVar3; + ChuchuBossEntity* pEVar5; + ChuchuBossEntity* pEVar6; + ChuchuBossEntity* pEVar7; + + super->subAction = 10; + this->unk_84->unk_01 = 0; + sub_080276F4(this, 7, 1); + ((ChuchuBossEntity*)super->child)->unk_7d = 0; + super->speed = 0; + this->unk_84->unk_03 = 0; + if (super->x.HALF.HI > this->unk_84->unk_0e) { + super->direction = 0x18; + pEVar5 = (ChuchuBossEntity*)super->child; + pEVar3 = (ChuchuBossEntity*)super->parent; + *(u8*)((int)this->unk_68 + 0x85) = 0; + *(u8*)((int)pEVar3 + 0x85) = 0; + *(u8*)((int)pEVar5 + 0x85) = 0; + } else { + super->direction = 8; + pEVar6 = (ChuchuBossEntity*)super->child; + pEVar7 = (ChuchuBossEntity*)super->parent; + *(u8*)((int)this->unk_68 + 0x85) = 1; + *(u8*)((int)pEVar7 + 0x85) = 1; + *(u8*)((int)pEVar6 + 0x85) = 1; + } + super->animationState = super->direction >> 2; + if (super->y.HALF.HI != gPlayerEntity.y.HALF.HI) { + if (super->y.HALF.HI > gPlayerEntity.y.HALF.HI) { + this->unk_84->unk_0c = 0; + } else { + this->unk_84->unk_0c = 0x10; + } + } +} + +bool32 sub_08027C54(ChuchuBossEntity* this) { + if ((u8)gUnk_080CC2DC[this->unk_84->unk_04] > super->child->health) { + return TRUE; + } else { + return FALSE; + } +} + +void sub_08027C7C(ChuchuBossEntity* this, u32 param_2) { + sub_08027C9C(super->child, 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; + } + } +} + +Entity* sub_08027D20(ChuchuBossEntity* this) { + Entity* r4 = CreateObjectWithParent(super, OBJECT_15, 0, 0); + if (r4 != NULL) { + r4->spriteIndex = 0xc9; +#ifdef EU + r4->spriteVramOffset = super->spriteVramOffset; + r4->palette.b.b0 = super->palette.b.b0; +#endif + r4->y.HALF.HI += 1; + r4->spriteOffsetY = 8; +#ifndef EU + LoadFixedGFX(r4, 0x3e); + if (super->type2 == 0) { + LoadObjPalette(r4, 0x2b); + } else { + LoadObjPalette(r4, 0x2c); + } +#endif + } + return r4; }