diff --git a/asm/likeLike.s b/asm/likeLike.s deleted file mode 100644 index 438361dd..00000000 --- a/asm/likeLike.s +++ /dev/null @@ -1,652 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start LikeLike -LikeLike: @ 0x08027D6C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08027D88 @ =gUnk_080CC6FC - bl EnemyFunctionHandler - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - pop {r4, pc} - .align 2, 0 -_08027D88: .4byte gUnk_080CC6FC - - thumb_func_start sub_08027D8C -sub_08027D8C: @ 0x08027D8C - push {lr} - ldr r2, _08027DA0 @ =gUnk_080CC714 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08027DA0: .4byte gUnk_080CC714 - - thumb_func_start sub_08027DA4 -sub_08027DA4: @ 0x08027DA4 - push {r4, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x3f - ldrb r0, [r2] - cmp r0, #1 - bne _08027DC4 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r0, #0x8c - strb r0, [r2] - b _08027E0E -_08027DC4: - ldrb r0, [r4, #0xc] - cmp r0, #7 - bne _08027DD2 - adds r0, r4, #0 - bl sub_0802810C - b _08027E0E -_08027DD2: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r2, [r0] - movs r0, #0x80 - ands r0, r2 - cmp r0, #0 - beq _08027E0E - movs r1, #0x7f - ands r1, r2 - cmp r1, #0 - bne _08027E0E - movs r0, #7 - strb r0, [r4, #0xc] - movs r0, #0x5f - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - adds r2, r4, #0 - adds r2, #0x3b - ldrb r1, [r2] - movs r0, #0xfc - ands r0, r1 - strb r0, [r2] - ldr r0, _08027E38 @ =gPlayerEntity - adds r0, #0x29 - ldrb r0, [r0] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x1d - adds r1, r4, #0 - adds r1, #0x83 - strb r0, [r1] -_08027E0E: - adds r0, r4, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _08027E1C - movs r0, #0x20 - strb r0, [r4, #0xe] -_08027E1C: - adds r0, r4, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _08027E2E - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_08027E2E: - ldr r1, _08027E3C @ =gUnk_080CC6FC - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, pc} - .align 2, 0 -_08027E38: .4byte gPlayerEntity -_08027E3C: .4byte gUnk_080CC6FC - - thumb_func_start sub_08027E40 -sub_08027E40: @ 0x08027E40 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #2 - bne _08027E62 - adds r5, r4, #0 - adds r5, #0x80 - ldrb r0, [r5] - cmp r0, #0xff - beq _08027E62 - adds r0, r4, #0 - movs r1, #3 - bl sub_0805E3A0 - ldrb r0, [r5] - bl sub_08028224 -_08027E62: - adds r0, r4, #0 - bl sub_0804A7D4 - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start nullsub_139 -nullsub_139: @ 0x08027E6C - bx lr - .align 2, 0 - - thumb_func_start sub_08027E70 -sub_08027E70: @ 0x08027E70 - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - ldrb r3, [r4, #0xa] - cmp r3, #1 - beq _08027EA6 - cmp r3, #1 - bgt _08027E88 - cmp r3, #0 - beq _08027E8E - b _08027EE4 -_08027E88: - cmp r3, #2 - beq _08027EC4 - b _08027EE4 -_08027E8E: - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #7 - ands r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - strb r3, [r4, #0xe] - b _08027EE4 -_08027EA6: - movs r2, #1 - strb r3, [r4, #0xc] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - movs r0, #8 - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation - b _08027EE4 -_08027EC4: - movs r3, #0 - movs r2, #1 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - strb r3, [r4, #0xe] - adds r0, r4, #0 - adds r0, #0x3f - strb r2, [r0] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_08027EE4: - movs r0, #0 - strb r0, [r4, #0x15] - adds r1, r4, #0 - adds r1, #0x82 - strb r0, [r1] - strb r0, [r4, #0x14] - adds r1, #1 - strb r0, [r1] - subs r1, #3 - movs r0, #0xff - strb r0, [r1] - pop {r4, pc} - - thumb_func_start sub_08027EFC -sub_08027EFC: @ 0x08027EFC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #1 - beq _08027F7C - adds r0, r4, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _08027F68 - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _08027F32 - bl Random - movs r1, #0x30 - ands r1, r0 - cmp r1, #0 - beq _08027F32 - adds r0, r4, #0 - bl sub_08049EE4 - b _08027F38 -_08027F32: - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] -_08027F38: - strb r0, [r4, #0x15] - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08027F5A - adds r0, r4, #0 - movs r1, #1 - bl sub_08049F84 - strb r0, [r4, #0x15] - adds r1, r4, #0 - adds r1, #0x82 - strb r0, [r1] - movs r0, #8 - strb r0, [r4, #0xe] -_08027F5A: - adds r0, r4, #0 - bl ProcessMovement - adds r0, r4, #0 - bl GetNextFrame - b _08027F7C -_08027F68: - movs r0, #6 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation -_08027F7C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start nullsub_12 -nullsub_12: @ 0x08027F80 - bx lr - .align 2, 0 - - thumb_func_start sub_08027F84 -sub_08027F84: @ 0x08027F84 - push {r4, lr} - adds r4, r0, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _08027FB0 - movs r0, #5 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #9 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl CreateDust -_08027FB0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08027FB4 -sub_08027FB4: @ 0x08027FB4 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08027FD6 - movs r1, #1 - movs r0, #1 - strb r0, [r2, #0xc] - strb r0, [r2, #0xe] - adds r3, r2, #0 - adds r3, #0x3b - ldrb r0, [r3] - orrs r0, r1 - strb r0, [r3] -_08027FD6: - adds r0, r2, #0 - bl GetNextFrame - pop {pc} - .align 2, 0 - - thumb_func_start sub_08027FE0 -sub_08027FE0: @ 0x08027FE0 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r2, #1 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _08028028 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #1 - bl sub_08049F84 - strb r0, [r4, #0x15] - movs r2, #8 - movs r0, #8 - strb r0, [r4, #0xe] - adds r3, r4, #0 - adds r3, #0x29 - ldrb r1, [r3] - subs r0, #0x41 - ands r0, r1 - orrs r0, r2 - strb r0, [r3] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_08028028: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802802C -sub_0802802C: @ 0x0802802C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0802805A - movs r2, #0 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #7 - ands r0, r1 - strb r0, [r4, #0x18] - strb r2, [r4, #0x15] - strb r2, [r4, #0xe] - adds r0, r4, #0 - bl CreateDust -_0802805A: - pop {r4, pc} - - thumb_func_start sub_0802805C -sub_0802805C: @ 0x0802805C - push {r4, r5, lr} - adds r5, r0, #0 - movs r1, #2 - bl UpdateAnimationVariableFrames - bl sub_0807953C - cmp r0, #0 - beq _0802807E - bl Random - ldrb r2, [r5, #0xf] - adds r2, #1 - movs r1, #1 - ands r1, r0 - adds r2, r2, r1 - strb r2, [r5, #0xf] -_0802807E: - ldrb r0, [r5, #0xf] - cmp r0, #0x18 - bhi _0802808E - ldr r0, _08028098 @ =gUnk_02002A40 - adds r0, #0xaa - ldrb r0, [r0] - cmp r0, #0 - bne _0802809C -_0802808E: - adds r0, r5, #0 - bl sub_0802810C - b _08028102 - .align 2, 0 -_08028098: .4byte gUnk_02002A40 -_0802809C: - bl ResetPlayer - ldr r2, _08028104 @ =gPlayerState - ldrb r1, [r2, #0x1a] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x1a] - ldr r4, _08028108 @ =gPlayerEntity - movs r3, #0x80 - lsls r3, r3, #9 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0 - bl PositionRelative - ldrh r0, [r5, #0x12] - ldrb r1, [r5, #0x1e] - bl GetSpriteSubEntryOffsetDataPointer - ldrb r1, [r0] - adds r2, r4, #0 - adds r2, #0x62 - strb r1, [r2] - ldrb r0, [r0, #1] - adds r1, r4, #0 - adds r1, #0x63 - strb r0, [r1] - adds r4, #0x29 - ldrb r1, [r4] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4] - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080280F0 - adds r0, r5, #0 - bl sub_080281A0 -_080280F0: - ldrb r1, [r5, #0xe] - movs r0, #3 - ands r0, r1 - cmp r0, #0 - bne _08028102 - movs r0, #0x82 - lsls r0, r0, #1 - bl EnqueueSFX -_08028102: - pop {r4, r5, pc} - .align 2, 0 -_08028104: .4byte gPlayerState -_08028108: .4byte gPlayerEntity - - thumb_func_start sub_0802810C -sub_0802810C: @ 0x0802810C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r2, _08028198 @ =gPlayerState - movs r1, #0 - movs r0, #0x41 - strb r0, [r2, #2] - strb r1, [r2, #0xa] - ldr r0, [r2, #0x30] - subs r1, #0x11 - ands r0, r1 - str r0, [r2, #0x30] - ldr r0, _0802819C @ =gPlayerEntity - mov ip, r0 - ldrb r0, [r0, #0x10] - movs r1, #0x80 - orrs r0, r1 - mov r1, ip - strb r0, [r1, #0x10] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r1, #0x20] - adds r1, #0x3d - movs r0, #0xc4 - strb r0, [r1] - movs r3, #0 - mov r2, ip - ldrb r0, [r2, #0x14] - lsls r0, r0, #2 - strb r0, [r2, #0x15] - adds r0, r4, #0 - adds r0, #0x83 - ldrb r0, [r0] - mov r5, ip - adds r5, #0x29 - movs r1, #7 - ands r1, r0 - lsls r1, r1, #3 - ldrb r2, [r5] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - mov r1, ip - adds r1, #0x63 - movs r0, #0 - ldrsb r0, [r1, r0] - mov r2, ip - strh r0, [r2, #0x36] - strb r3, [r1] - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x50 - strb r0, [r4, #0xe] - strb r3, [r4, #0xf] - adds r2, r4, #0 - adds r2, #0x3b - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - bne _08028196 - movs r0, #0xee - strb r0, [r1] -_08028196: - pop {r4, r5, pc} - .align 2, 0 -_08028198: .4byte gPlayerState -_0802819C: .4byte gPlayerEntity - - thumb_func_start sub_080281A0 -sub_080281A0: @ 0x080281A0 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x19 - strb r0, [r4, #0xf] - movs r0, #0xe - bl sub_080281E0 - cmp r0, #0 - beq _080281BA - adds r0, r4, #0 - adds r0, #0x80 - movs r1, #0xe - b _080281CA -_080281BA: - movs r0, #0xd - bl sub_080281E0 - cmp r0, #0 - beq _080281D6 - adds r0, r4, #0 - adds r0, #0x80 - movs r1, #0xd -_080281CA: - strb r1, [r0] - movs r0, #0xaf - lsls r0, r0, #3 - bl TextboxNoOverlapFollow - b _080281DE -_080281D6: - movs r0, #1 - rsbs r0, r0, #0 - bl ModHealth -_080281DE: - pop {r4, pc} - - thumb_func_start sub_080281E0 -sub_080281E0: @ 0x080281E0 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - movs r4, #0 - bl GetInventoryValue - cmp r0, #1 - bne _0802821A - ldr r6, _08028220 @ =gUnk_02002A40 - adds r5, r6, #0 - adds r5, #0xb4 - ldrb r0, [r5] - bl sub_080544B4 - cmp r0, #0 - beq _08028200 - strb r4, [r5] -_08028200: - adds r5, r6, #0 - adds r5, #0xb5 - ldrb r0, [r5] - bl sub_080544B4 - cmp r0, #0 - beq _08028210 - strb r4, [r5] -_08028210: - adds r0, r7, #0 - movs r1, #0 - bl sub_0807CAA0 - movs r4, #1 -_0802821A: - adds r0, r4, #0 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08028220: .4byte gUnk_02002A40 - - thumb_func_start sub_08028224 -sub_08028224: @ 0x08028224 - push {lr} - movs r1, #0 - movs r2, #1 - bl sub_080A7C18 - ldr r0, _08028238 @ =0x00000579 - bl TextboxNoOverlapFollow - pop {pc} - .align 2, 0 -_08028238: .4byte 0x00000579 diff --git a/asm/non_matching/likeLike/sub_0802810C.inc b/asm/non_matching/likeLike/sub_0802810C.inc new file mode 100644 index 00000000..9e04fd00 --- /dev/null +++ b/asm/non_matching/likeLike/sub_0802810C.inc @@ -0,0 +1,81 @@ + + .syntax unified + + .text + + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _08028198 @ =gPlayerState + movs r1, #0 + movs r0, #0x41 + strb r0, [r2, #2] + strb r1, [r2, #0xa] + ldr r0, [r2, #0x30] + subs r1, #0x11 + ands r0, r1 + str r0, [r2, #0x30] + ldr r0, _0802819C @ =gPlayerEntity + mov ip, r0 + ldrb r0, [r0, #0x10] + movs r1, #0x80 + orrs r0, r1 + mov r1, ip + strb r0, [r1, #0x10] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r1, #0x20] + adds r1, #0x3d + movs r0, #0xc4 + strb r0, [r1] + movs r3, #0 + mov r2, ip + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + strb r0, [r2, #0x15] + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + mov r5, ip + adds r5, #0x29 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r5] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + mov r1, ip + adds r1, #0x63 + movs r0, #0 + ldrsb r0, [r1, r0] + mov r2, ip + strh r0, [r2, #0x36] + strb r3, [r1] + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x50 + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _08028196 + movs r0, #0xee + strb r0, [r1] +_08028196: + pop {r4, r5, pc} + .align 2, 0 +_08028198: .4byte gPlayerState +_0802819C: .4byte gPlayerEntity + + .syntax divided diff --git a/asm/non_matching/puffstool/sub_080258C4.inc b/asm/non_matching/puffstool/sub_080258C4.inc deleted file mode 100644 index 861958cc..00000000 --- a/asm/non_matching/puffstool/sub_080258C4.inc +++ /dev/null @@ -1,77 +0,0 @@ - - .syntax unified - - .text - - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r2, r0, #0 - cmp r2, #0 - beq _08025922 - movs r0, #0x2e - ldrsh r1, [r2, r0] - movs r3, #0x2e - ldrsh r0, [r4, r3] - subs r3, r1, r0 - adds r0, r3, #0 - muls r0, r3, r0 - adds r3, r0, #0 - movs r1, #0x32 - ldrsh r0, [r2, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - subs r0, r0, r1 - adds r1, r0, #0 - muls r1, r0, r1 - adds r0, r1, #0 - adds r3, r3, r0 - adds r0, r4, #0 - adds r0, #0x84 - ldrh r0, [r0] - cmp r0, #0 - bne _0802591A - adds r0, r4, #0 - adds r0, #0x81 - ldrb r1, [r0] - cmp r1, #0 - bne _0802591A - movs r0, #0x80 - lsls r0, r0, #3 - cmp r3, r0 - bgt _0802591A - movs r0, #9 - strb r0, [r4, #0xc] - strb r1, [r4, #0xe] - b _08025942 -_0802591A: - movs r0, #0x90 - lsls r0, r0, #4 - cmp r3, r0 - ble _08025926 -_08025922: - movs r0, #0 - b _08025944 -_08025926: - movs r0, #0xb - strb r0, [r4, #0xc] - movs r0, #1 - strb r0, [r4, #0xe] - bl Random - ldr r2, _08025948 @ =gUnk_080CC050 - movs r1, #0xf - ands r1, r0 - adds r1, r1, r2 - ldrb r1, [r1] - adds r0, r4, #0 - adds r0, #0x78 - strh r1, [r0] -_08025942: - movs r0, #1 -_08025944: - pop {r4, pc} - .align 2, 0 -_08025948: .4byte gUnk_080CC050 - - .syntax divided diff --git a/asm/non_matching/spearMoblin/sub_08028604.inc b/asm/non_matching/spearMoblin/sub_08028604.inc new file mode 100644 index 00000000..61faa58b --- /dev/null +++ b/asm/non_matching/spearMoblin/sub_08028604.inc @@ -0,0 +1,104 @@ + + .syntax unified + + .text + + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #0 + strb r1, [r4, #0xf] + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #1 + bne _080286B0 + bl Random + ldr r2, _08028650 @ =gUnk_080CC7BC + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _08028658 + bl Random + ldr r2, _08028654 @ =gUnk_080CC7D0 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r0, #0x18 + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + b _080286B8 + .align 2, 0 +_08028650: .4byte gUnk_080CC7BC +_08028654: .4byte gUnk_080CC7D0 +_08028658: + adds r0, r4, #0 + bl sub_08049EE4 + adds r5, r0, #0 + adds r6, r4, #0 + adds r6, #0x83 + ldrb r0, [r6] + cmp r0, #0 + bne _08028684 + bl Random + ldr r2, _08028680 @ =gUnk_080CC7C0 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r5, r5, r0 + b _080286A2 + .align 2, 0 +_08028680: .4byte gUnk_080CC7C0 +_08028684: + bl Random + ldr r2, _080286AC @ =gUnk_080CC7C0 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r5, r5, r0 + ldrb r0, [r4, #0xe] + adds r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r6] + subs r0, #1 + strb r0, [r6] +_080286A2: + adds r0, r5, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + b _080286B8 + .align 2, 0 +_080286AC: .4byte gUnk_080CC7C0 +_080286B0: + movs r0, #0xc + strb r0, [r4, #0xe] + strh r1, [r4, #0x24] + ldrb r0, [r4, #0x15] +_080286B8: + lsrs r5, r0, #2 + ldrb r0, [r4, #0x14] + cmp r5, r0 + beq _080286C8 + strb r5, [r4, #0x14] + adds r0, r4, #0 + bl sub_080287E0 +_080286C8: + pop {r4, r5, r6, pc} + .align 2, 0 + + .syntax divided diff --git a/asm/spearMoblin.s b/asm/spearMoblin.s deleted file mode 100644 index 6d6ba820..00000000 --- a/asm/spearMoblin.s +++ /dev/null @@ -1,921 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start SpearMoblin -SpearMoblin: @ 0x0802823C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08028268 @ =gUnk_080CC790 - bl EnemyFunctionHandler - movs r3, #0x20 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _08028266 - ldr r0, [r1, #4] - cmp r0, #0 - beq _08028266 - adds r0, r4, #0 - bl CopyPosition -_08028266: - pop {r4, pc} - .align 2, 0 -_08028268: .4byte gUnk_080CC790 - - thumb_func_start sub_0802826C -sub_0802826C: @ 0x0802826C - push {lr} - ldr r2, _08028280 @ =gUnk_080CC7A8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08028280: .4byte gUnk_080CC7A8 - - thumb_func_start sub_08028284 -sub_08028284: @ 0x08028284 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _08028298 - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_08028298: - ldr r1, _080282BC @ =gUnk_080CC790 - adds r0, r4, #0 - bl sub_0804AA30 - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080282DE - ldrb r0, [r4, #0xc] - cmp r0, #4 - beq _080282C0 - adds r0, r4, #0 - bl sub_08028754 - b _080282DE - .align 2, 0 -_080282BC: .4byte gUnk_080CC790 -_080282C0: - movs r0, #0x3f - ands r0, r1 - cmp r0, #0 - bne _080282DE - adds r1, r4, #0 - adds r1, #0x7a - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - adds r1, #7 - movs r0, #0x16 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08028784 -_080282DE: - ldr r0, [r4, #0x54] - adds r1, r4, #0 - adds r1, #0x3d - ldrb r1, [r1] - adds r0, #0x3d - strb r1, [r0] - adds r0, r4, #0 - adds r0, #0x45 - ldrb r5, [r0] - cmp r5, #0 - bne _0802830C - movs r0, #0 - strh r5, [r4, #0x24] - adds r1, r4, #0 - adds r1, #0x82 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080287E0 - ldr r0, [r4, #0x54] - bl DeleteEntity - str r5, [r4, #0x54] -_0802830C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start nullsub_13 -nullsub_13: @ 0x08028310 - bx lr - .align 2, 0 - - thumb_func_start sub_08028314 -sub_08028314: @ 0x08028314 - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r1, #0 - movs r2, #1 - strb r2, [r4, #0xc] - strb r1, [r4, #0x14] - adds r0, r4, #0 - adds r0, #0x7b - strb r1, [r0] - adds r0, #5 - strb r1, [r0] - adds r0, #3 - strb r1, [r0] - subs r0, #2 - strb r1, [r0] - subs r0, #7 - strb r1, [r0] - adds r0, #8 - strb r2, [r0] - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802835E - ldrb r1, [r4, #0xb] - lsls r0, r1, #1 - strb r0, [r4, #0x14] - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r0, #0x80 - strh r0, [r4, #0x24] - lsls r1, r1, #3 - strb r1, [r4, #0x15] - adds r0, r4, #0 - bl sub_080287E0 - b _08028368 -_0802835E: - movs r0, #0x10 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_08028604 -_08028368: - movs r0, #3 - bl sub_080A7EE0 - cmp r0, #0 - beq _08028376 - str r4, [r0, #0x50] - str r0, [r4, #0x54] -_08028376: - pop {r4, pc} - - thumb_func_start sub_08028378 -sub_08028378: @ 0x08028378 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x81 - ldrb r0, [r1] - cmp r0, #0 - beq _0802838A - subs r0, #1 - strb r0, [r1] -_0802838A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r2, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080283B8 - adds r1, r4, #0 - adds r1, #0x80 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ands r0, r2 - cmp r0, #0xf - bls _080283B0 - adds r0, r4, #0 - bl sub_08028728 - b _080283FC -_080283B0: - adds r0, r4, #0 - bl sub_08028604 - b _080283FC -_080283B8: - adds r0, r4, #0 - bl sub_080286CC - cmp r0, #0 - beq _080283CE - adds r2, r4, #0 - adds r2, #0x7b - ldrb r0, [r2] - movs r1, #1 - orrs r0, r1 - strb r0, [r2] -_080283CE: - adds r0, r4, #0 - bl sub_080288A4 - cmp r0, #0 - beq _080283FC - ldrh r1, [r4, #0x2a] - adds r0, r4, #0 - bl sub_0800417E - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r1, r4, #0 - adds r1, #0x83 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080287E0 -_080283FC: - ldrb r0, [r4, #0xf] - cmp r0, #0xb - bls _08028414 - adds r0, r4, #0 - adds r0, #0x7b - ldrb r0, [r0] - cmp r0, #0 - beq _08028418 - adds r0, r4, #0 - bl sub_08028754 - b _08028418 -_08028414: - adds r0, #1 - strb r0, [r4, #0xf] -_08028418: - adds r0, r4, #0 - bl sub_08028858 - pop {r4, pc} - - thumb_func_start sub_08028420 -sub_08028420: @ 0x08028420 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0802844C - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x82 - strb r1, [r0] - subs r0, #2 - strb r1, [r0] - movs r0, #0x10 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_08028604 - b _08028462 -_0802844C: - adds r0, r4, #0 - bl sub_080286CC - cmp r0, #0 - beq _08028462 - adds r2, r4, #0 - adds r2, #0x7b - ldrb r0, [r2] - movs r1, #1 - orrs r0, r1 - strb r0, [r2] -_08028462: - ldrb r0, [r4, #0xf] - cmp r0, #0xb - bls _0802847A - adds r0, r4, #0 - adds r0, #0x7b - ldrb r0, [r0] - cmp r0, #0 - beq _0802847E - adds r0, r4, #0 - bl sub_08028754 - b _0802847E -_0802847A: - adds r0, #1 - strb r0, [r4, #0xf] -_0802847E: - adds r0, r4, #0 - bl sub_08028858 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08028488 -sub_08028488: @ 0x08028488 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - bne _08028520 - adds r0, r4, #0 - adds r0, #0x82 - ldrb r1, [r0] - adds r3, r0, #0 - cmp r1, #2 - beq _080284D2 - cmp r1, #2 - ble _080284F0 - cmp r1, #3 - beq _080284B4 - cmp r1, #4 - beq _080284E6 - b _080284F0 -_080284B4: - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #1 - bl sub_08049F84 - strb r0, [r4, #0x15] - movs r0, #0x8f - lsls r0, r0, #1 - bl EnqueueSFX - b _0802850A -_080284D2: - strb r1, [r4, #0xc] - strh r2, [r4, #0x24] - bl Random - movs r1, #7 - ands r0, r1 - lsls r1, r0, #1 - adds r1, r1, r0 - adds r1, #0x40 - b _08028508 -_080284E6: - ldrb r0, [r4, #0x15] - adds r0, #0x10 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] -_080284F0: - movs r0, #1 - strb r0, [r4, #0xc] - strb r0, [r3] - movs r0, #0x80 - strh r0, [r4, #0x24] - bl Random - movs r1, #7 - ands r0, r1 - lsls r1, r0, #1 - adds r1, r1, r0 - adds r1, #0x22 -_08028508: - strb r1, [r4, #0xe] -_0802850A: - movs r0, #0 - strb r0, [r4, #0xf] - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_080287E0 -_08028520: - adds r0, r4, #0 - bl sub_08028858 - pop {r4, pc} - - thumb_func_start sub_08028528 -sub_08028528: @ 0x08028528 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r5, r0, #0 - cmp r5, #0 - bne _08028542 - strb r5, [r4, #0xf] - adds r0, r4, #0 - bl sub_08028728 - b _08028600 -_08028542: - adds r0, r4, #0 - bl sub_080288C0 - ldr r1, _08028590 @ =gUnk_080CC944 - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r2, [r0] - ldr r1, [r4, #0x48] - ldrb r0, [r2] - strb r0, [r1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #1] - strb r0, [r1, #1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #6] - strb r0, [r1, #6] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #7] - strb r0, [r1, #7] - adds r0, r4, #0 - adds r0, #0x7a - ldrb r1, [r0] - adds r6, r0, #0 - cmp r1, #0 - beq _08028594 - movs r0, #0 - strb r0, [r6] - adds r1, r4, #0 - adds r1, #0x81 - movs r0, #0x16 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08028784 - adds r1, r4, #0 - adds r1, #0x7b - b _080285EE - .align 2, 0 -_08028590: .4byte gUnk_080CC944 -_08028594: - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x20 - bne _080285BC - strb r1, [r4, #0xe] - adds r0, r4, #0 - adds r1, r5, #0 - bl GetFacingDirection - adds r5, r0, #0 - ldrb r0, [r4, #0x15] - adds r1, r5, #0 - bl sub_08028828 - cmp r0, #0 - beq _080285BC - strb r5, [r4, #0x15] -_080285BC: - ldrb r1, [r4, #0xe] - movs r0, #7 - ands r0, r1 - cmp r0, #0 - bne _080285D6 - movs r0, #0xf0 - bl EnqueueSFX - adds r0, r4, #0 - movs r1, #2 - movs r2, #0x40 - bl CreateFx -_080285D6: - adds r1, r4, #0 - adds r1, #0x7b - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x80 - bne _080285EE - ldrb r0, [r6] - adds r0, #1 - strb r0, [r6] -_080285EE: - ldrb r0, [r1] - cmp r0, #0x20 - bls _080285FA - adds r0, r4, #0 - bl ProcessMovement -_080285FA: - adds r0, r4, #0 - bl GetNextFrame -_08028600: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_08028604 -sub_08028604: @ 0x08028604 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r1, #0 - strb r1, [r4, #0xf] - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #1 - bne _080286B0 - bl Random - ldr r2, _08028650 @ =gUnk_080CC7BC - movs r1, #3 - ands r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4, #0xe] - movs r0, #0x80 - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - beq _08028658 - bl Random - ldr r2, _08028654 @ =gUnk_080CC7D0 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r0, #0x18 - ldrb r1, [r4, #0x15] - adds r0, r0, r1 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - b _080286B8 - .align 2, 0 -_08028650: .4byte gUnk_080CC7BC -_08028654: .4byte gUnk_080CC7D0 -_08028658: - adds r0, r4, #0 - bl sub_08049EE4 - adds r5, r0, #0 - adds r6, r4, #0 - adds r6, #0x83 - ldrb r0, [r6] - cmp r0, #0 - bne _08028684 - bl Random - ldr r2, _08028680 @ =gUnk_080CC7C0 - movs r1, #0xf - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r5, r5, r0 - b _080286A2 - .align 2, 0 -_08028680: .4byte gUnk_080CC7C0 -_08028684: - bl Random - ldr r2, _080286AC @ =gUnk_080CC7C0 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r5, r5, r0 - ldrb r0, [r4, #0xe] - adds r0, #0x10 - strb r0, [r4, #0xe] - ldrb r0, [r6] - subs r0, #1 - strb r0, [r6] -_080286A2: - adds r0, r5, #4 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - b _080286B8 - .align 2, 0 -_080286AC: .4byte gUnk_080CC7C0 -_080286B0: - movs r0, #0xc - strb r0, [r4, #0xe] - strh r1, [r4, #0x24] - ldrb r0, [r4, #0x15] -_080286B8: - lsrs r5, r0, #2 - ldrb r0, [r4, #0x14] - cmp r5, r0 - beq _080286C8 - strb r5, [r4, #0x14] - adds r0, r4, #0 - bl sub_080287E0 -_080286C8: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_080286CC -sub_080286CC: @ 0x080286CC - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - bne _08028724 - movs r0, #1 - bl sub_08049DF4 - adds r4, r0, #0 - cmp r4, #0 - beq _08028724 - adds r0, r5, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #2 - bne _080286FC - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0x30 - bl sub_0806FC80 - cmp r0, #0 - bne _08028720 -_080286FC: - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0x40 - bl sub_0806FC80 - cmp r0, #0 - beq _08028724 - adds r0, r5, #0 - adds r1, r4, #0 - bl GetFacingDirection - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - lsrs r0, r0, #2 - ldrb r5, [r5, #0x14] - cmp r0, r5 - bne _08028724 -_08028720: - movs r0, #1 - b _08028726 -_08028724: - movs r0, #0 -_08028726: - pop {r4, r5, pc} - - thumb_func_start sub_08028728 -sub_08028728: @ 0x08028728 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] - adds r1, r4, #0 - adds r1, #0x83 - ldrb r0, [r1] - lsrs r0, r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080287B4 - adds r4, #0x82 - movs r0, #2 - strb r0, [r4] - pop {r4, pc} - - thumb_func_start sub_08028754 -sub_08028754: @ 0x08028754 - push {r4, lr} - adds r4, r0, #0 - movs r1, #1 - bl sub_08049F84 - movs r2, #0 - strb r0, [r4, #0x15] - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r0, r4, #0 - adds r0, #0x83 - strb r2, [r0] - adds r0, r4, #0 - bl sub_080287B4 - adds r4, #0x82 - movs r0, #3 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08028784 -sub_08028784: @ 0x08028784 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - movs r1, #0 - strb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] - adds r0, r4, #0 - adds r0, #0x83 - strb r1, [r0] - adds r0, r4, #0 - bl sub_080287B4 - ldrb r0, [r4, #0xe] - lsls r0, r0, #1 - strb r0, [r4, #0xe] - adds r4, #0x82 - movs r0, #4 - strb r0, [r4] - pop {r4, pc} - - thumb_func_start sub_080287B4 -sub_080287B4: @ 0x080287B4 - push {lr} - adds r2, r0, #0 - movs r1, #0 - movs r0, #3 - strb r0, [r2, #0xc] - movs r0, #0x20 - strb r0, [r2, #0xe] - strb r1, [r2, #0xf] - adds r0, r2, #0 - adds r0, #0x80 - strb r1, [r0] - subs r0, #5 - strb r1, [r0] - movs r0, #0 - strh r1, [r2, #0x24] - adds r1, r2, #0 - adds r1, #0x82 - strb r0, [r1] - adds r0, r2, #0 - bl sub_080287E0 - pop {pc} - - thumb_func_start sub_080287E0 -sub_080287E0: @ 0x080287E0 - push {lr} - adds r3, r0, #0 - ldrb r0, [r3, #0x14] - lsrs r2, r0, #1 - adds r0, r3, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #4 - bhi _0802881E - lsls r0, r0, #2 - ldr r1, _080287FC @ =_08028800 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080287FC: .4byte _08028800 -_08028800: @ jump table - .4byte _0802881E @ case 0 - .4byte _08028814 @ case 1 - .4byte _0802881C @ case 2 - .4byte _08028818 @ case 3 - .4byte _08028814 @ case 4 -_08028814: - adds r2, #4 - b _0802881E -_08028818: - adds r2, #8 - b _0802881E -_0802881C: - adds r2, #0xc -_0802881E: - adds r0, r3, #0 - adds r1, r2, #0 - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_08028828 -sub_08028828: @ 0x08028828 - push {r4, lr} - adds r4, r0, #0 - adds r3, r1, #0 - adds r0, r3, #4 - movs r2, #0x18 - ands r0, r2 - adds r1, r4, #4 - ands r1, r2 - cmp r0, r1 - bne _08028852 - adds r0, r3, #5 - movs r1, #7 - ands r0, r1 - adds r2, r4, #5 - ands r2, r1 - cmp r0, #2 - bhi _08028852 - cmp r2, #2 - bhi _08028852 - movs r0, #1 - b _08028854 -_08028852: - movs r0, #0 -_08028854: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08028858 -sub_08028858: @ 0x08028858 - push {r4, lr} - adds r4, r0, #0 - bl sub_080288C0 - ldr r1, _080288A0 @ =gUnk_080CC944 - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r2, [r0] - ldr r1, [r4, #0x48] - ldrb r0, [r2] - strb r0, [r1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #1] - strb r0, [r1, #1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #6] - strb r0, [r1, #6] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #7] - strb r0, [r1, #7] - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - bne _08028890 - strh r0, [r4, #0x24] -_08028890: - adds r0, r4, #0 - bl ProcessMovement - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 -_080288A0: .4byte gUnk_080CC944 - - thumb_func_start sub_080288A4 -sub_080288A4: @ 0x080288A4 - ldr r2, _080288BC @ =gUnk_080CC7D8 - ldrb r1, [r0, #0x14] - lsrs r1, r1, #1 - lsls r1, r1, #1 - adds r1, r1, r2 - ldrh r0, [r0, #0x2a] - ldrh r1, [r1] - ands r1, r0 - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r0, r0, #0x1f - bx lr - .align 2, 0 -_080288BC: .4byte gUnk_080CC7D8 - - thumb_func_start sub_080288C0 -sub_080288C0: @ 0x080288C0 - push {lr} - mov ip, r0 - ldr r2, [r0, #0x54] - cmp r2, #0 - beq _08028908 - adds r0, r2, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08028908 - adds r0, r2, #0 - adds r0, #0x3e - ldrb r0, [r0] - mov r1, ip - adds r1, #0x3e - strb r0, [r1] - adds r0, r2, #0 - adds r0, #0x3d - ldrb r0, [r0] - rsbs r0, r0, #0 - subs r1, #1 - strb r0, [r1] - adds r0, r2, #0 - adds r0, #0x46 - ldrh r0, [r0] - adds r1, #9 - movs r3, #0 - strh r0, [r1] - adds r2, #0x42 - ldrb r1, [r2] - mov r0, ip - adds r0, #0x42 - strb r1, [r0] - strb r3, [r2] -_08028908: - pop {pc} - .align 2, 0 diff --git a/data/animations/chuchuBoss.s b/data/animations/chuchuBoss.s new file mode 100644 index 00000000..4557faa0 --- /dev/null +++ b/data/animations/chuchuBoss.s @@ -0,0 +1,97 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CC2DF:: @ 080CC2DF + .incbin "baserom.gba", 0x0CC2DF, 0x0000004 + +gUnk_080CC2E3:: @ 080CC2E3 + .incbin "baserom.gba", 0x0CC2E3, 0x0000004 + +gUnk_080CC2E7:: @ 080CC2E7 + .incbin "baserom.gba", 0x0CC2E7, 0x0000004 + +gUnk_080CC2EB:: @ 080CC2EB + .incbin "baserom.gba", 0x0CC2EB, 0x0000004 + +gUnk_080CC2EF:: @ 080CC2EF + .incbin "baserom.gba", 0x0CC2EF, 0x0000005 + +gUnk_080CC2F4:: @ 080CC2F4 + .incbin "baserom.gba", 0x0CC2F4, 0x0000011 + +gUnk_080CC305:: @ 080CC305 + .incbin "baserom.gba", 0x0CC305, 0x0000019 + +gUnk_080CC31E:: @ 080CC31E + .incbin "baserom.gba", 0x0CC31E, 0x000000D + +gUnk_080CC32B:: @ 080CC32B + .incbin "baserom.gba", 0x0CC32B, 0x000000D + +gUnk_080CC338:: @ 080CC338 + .incbin "baserom.gba", 0x0CC338, 0x0000005 + +gUnk_080CC33D:: @ 080CC33D + .incbin "baserom.gba", 0x0CC33D, 0x0000009 + +gUnk_080CC346:: @ 080CC346 + .incbin "baserom.gba", 0x0CC346, 0x000000D + +gUnk_080CC353:: @ 080CC353 + .incbin "baserom.gba", 0x0CC353, 0x0000009 + +gUnk_080CC35C:: @ 080CC35C + .incbin "baserom.gba", 0x0CC35C, 0x000000D + +gUnk_080CC369:: @ 080CC369 + .incbin "baserom.gba", 0x0CC369, 0x0000009 + +gUnk_080CC372:: @ 080CC372 + .incbin "baserom.gba", 0x0CC372, 0x0000009 + +gUnk_080CC37B:: @ 080CC37B + .incbin "baserom.gba", 0x0CC37B, 0x0000021 + +gUnk_080CC39C:: @ 080CC39C + .incbin "baserom.gba", 0x0CC39C, 0x0000038 + +gUnk_080CC3D4:: @ 080CC3D4 + .incbin "baserom.gba", 0x0CC3D4, 0x0000038 + +gUnk_080CC40C:: @ 080CC40C + .incbin "baserom.gba", 0x0CC40C, 0x0000034 + +gUnk_080CC440:: @ 080CC440 + .incbin "baserom.gba", 0x0CC440, 0x0000038 + +gUnk_080CC478:: @ 080CC478 + .incbin "baserom.gba", 0x0CC478, 0x0000038 + +gUnk_080CC4B0:: @ 080CC4B0 + .incbin "baserom.gba", 0x0CC4B0, 0x0000065 + +gUnk_080CC515:: @ 080CC515 + .incbin "baserom.gba", 0x0CC515, 0x000006D + +gUnk_080CC582:: @ 080CC582 + .incbin "baserom.gba", 0x0CC582, 0x000006D + +gUnk_080CC5EF:: @ 080CC5EF + .incbin "baserom.gba", 0x0CC5EF, 0x000006D + +gUnk_080CC65C:: @ 080CC65C + .incbin "baserom.gba", 0x0CC65C, 0x0000021 + +gUnk_080CC67D:: @ 080CC67D + .incbin "baserom.gba", 0x0CC67D, 0x0000007 + +gUnk_080CC684:: @ 080CC684 + .incbin "baserom.gba", 0x0CC684, 0x0000018 + +gUnk_080CC69C:: @ 080CC69C + .incbin "baserom.gba", 0x0CC69C, 0x0000038 + +gUnk_080CC6D4:: @ 080CC6D4 + .incbin "baserom.gba", 0x0CC6D4, 0x0000028 diff --git a/data/animations/likeLike.s b/data/animations/likeLike.s new file mode 100644 index 00000000..6cb16fdd --- /dev/null +++ b/data/animations/likeLike.s @@ -0,0 +1,16 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CC734:: @ 080CC734 + .incbin "baserom.gba", 0x0CC734, 0x0000025 + +gUnk_080CC759:: @ 080CC759 + .incbin "baserom.gba", 0x0CC759, 0x0000015 + +gUnk_080CC76E:: @ 080CC76E + .incbin "baserom.gba", 0x0CC76E, 0x0000012 + +gUnk_080CC780:: @ 080CC780 + .incbin "baserom.gba", 0x0CC780, 0x0000010 diff --git a/data/data_080CC19C.s b/data/data_080CC6FC.s similarity index 96% rename from data/data_080CC19C.s rename to data/data_080CC6FC.s index d00c10c8..f79fbcee 100644 --- a/data/data_080CC19C.s +++ b/data/data_080CC6FC.s @@ -3,183 +3,6 @@ .section .rodata -gUnk_080CC19C:: @ 080CC19C - .incbin "baserom.gba", 0x0CC19C, 0x0000014 - -gUnk_080CC1B0:: @ 080CC1B0 - .incbin "baserom.gba", 0x0CC1B0, 0x0000008 - -gUnk_080CC1B8:: @ 080CC1B8 - .incbin "baserom.gba", 0x0CC1B8, 0x0000010 - -gUnk_080CC1C8:: @ 080CC1C8 - .incbin "baserom.gba", 0x0CC1C8, 0x0000014 - -gUnk_080CC1DC:: @ 080CC1DC - .incbin "baserom.gba", 0x0CC1DC, 0x0000030 - -gUnk_080CC20C:: @ 080CC20C - .incbin "baserom.gba", 0x0CC20C, 0x0000028 - -gUnk_080CC234:: @ 080CC234 - .incbin "baserom.gba", 0x0CC234, 0x000001B - -gUnk_080CC24F:: @ 080CC24F - .incbin "baserom.gba", 0x0CC24F, 0x0000009 - -gUnk_080CC258:: @ 080CC258 - .incbin "baserom.gba", 0x0CC258, 0x000000C - -gUnk_080CC264:: @ 080CC264 - .incbin "baserom.gba", 0x0CC264, 0x0000008 - -gUnk_080CC26C:: @ 080CC26C - .incbin "baserom.gba", 0x0CC26C, 0x000000C - -gUnk_080CC278:: @ 080CC278 - .incbin "baserom.gba", 0x0CC278, 0x0000004 - -gUnk_080CC27C:: @ 080CC27C - .incbin "baserom.gba", 0x0CC27C, 0x0000020 - -gUnk_080CC29C:: @ 080CC29C - .incbin "baserom.gba", 0x0CC29C, 0x0000020 - -gUnk_080CC2BC:: @ 080CC2BC - .incbin "baserom.gba", 0x0CC2BC, 0x0000020 - -gUnk_080CC2DC:: @ 080CC2DC - .incbin "baserom.gba", 0x0CC2DC, 0x0000003 - -gUnk_080CC2DF:: @ 080CC2DF - .incbin "baserom.gba", 0x0CC2DF, 0x0000004 - -gUnk_080CC2E3:: @ 080CC2E3 - .incbin "baserom.gba", 0x0CC2E3, 0x0000004 - -gUnk_080CC2E7:: @ 080CC2E7 - .incbin "baserom.gba", 0x0CC2E7, 0x0000004 - -gUnk_080CC2EB:: @ 080CC2EB - .incbin "baserom.gba", 0x0CC2EB, 0x0000004 - -gUnk_080CC2EF:: @ 080CC2EF - .incbin "baserom.gba", 0x0CC2EF, 0x0000005 - -gUnk_080CC2F4:: @ 080CC2F4 - .incbin "baserom.gba", 0x0CC2F4, 0x0000011 - -gUnk_080CC305:: @ 080CC305 - .incbin "baserom.gba", 0x0CC305, 0x0000019 - -gUnk_080CC31E:: @ 080CC31E - .incbin "baserom.gba", 0x0CC31E, 0x000000D - -gUnk_080CC32B:: @ 080CC32B - .incbin "baserom.gba", 0x0CC32B, 0x000000D - -gUnk_080CC338:: @ 080CC338 - .incbin "baserom.gba", 0x0CC338, 0x0000005 - -gUnk_080CC33D:: @ 080CC33D - .incbin "baserom.gba", 0x0CC33D, 0x0000009 - -gUnk_080CC346:: @ 080CC346 - .incbin "baserom.gba", 0x0CC346, 0x000000D - -gUnk_080CC353:: @ 080CC353 - .incbin "baserom.gba", 0x0CC353, 0x0000009 - -gUnk_080CC35C:: @ 080CC35C - .incbin "baserom.gba", 0x0CC35C, 0x000000D - -gUnk_080CC369:: @ 080CC369 - .incbin "baserom.gba", 0x0CC369, 0x0000009 - -gUnk_080CC372:: @ 080CC372 - .incbin "baserom.gba", 0x0CC372, 0x0000009 - -gUnk_080CC37B:: @ 080CC37B - .incbin "baserom.gba", 0x0CC37B, 0x0000021 - -gUnk_080CC39C:: @ 080CC39C - .incbin "baserom.gba", 0x0CC39C, 0x0000038 - -gUnk_080CC3D4:: @ 080CC3D4 - .incbin "baserom.gba", 0x0CC3D4, 0x0000038 - -gUnk_080CC40C:: @ 080CC40C - .incbin "baserom.gba", 0x0CC40C, 0x0000034 - -gUnk_080CC440:: @ 080CC440 - .incbin "baserom.gba", 0x0CC440, 0x0000038 - -gUnk_080CC478:: @ 080CC478 - .incbin "baserom.gba", 0x0CC478, 0x0000038 - -gUnk_080CC4B0:: @ 080CC4B0 - .incbin "baserom.gba", 0x0CC4B0, 0x0000065 - -gUnk_080CC515:: @ 080CC515 - .incbin "baserom.gba", 0x0CC515, 0x000006D - -gUnk_080CC582:: @ 080CC582 - .incbin "baserom.gba", 0x0CC582, 0x000006D - -gUnk_080CC5EF:: @ 080CC5EF - .incbin "baserom.gba", 0x0CC5EF, 0x000006D - -gUnk_080CC65C:: @ 080CC65C - .incbin "baserom.gba", 0x0CC65C, 0x0000021 - -gUnk_080CC67D:: @ 080CC67D - .incbin "baserom.gba", 0x0CC67D, 0x0000007 - -gUnk_080CC684:: @ 080CC684 - .incbin "baserom.gba", 0x0CC684, 0x0000018 - -gUnk_080CC69C:: @ 080CC69C - .incbin "baserom.gba", 0x0CC69C, 0x0000038 - -gUnk_080CC6D4:: @ 080CC6D4 - .incbin "baserom.gba", 0x0CC6D4, 0x0000028 - -gUnk_080CC6FC:: @ 080CC6FC - .incbin "baserom.gba", 0x0CC6FC, 0x0000018 - -gUnk_080CC714:: @ 080CC714 - .incbin "baserom.gba", 0x0CC714, 0x0000020 - -gUnk_080CC734:: @ 080CC734 - .incbin "baserom.gba", 0x0CC734, 0x0000025 - -gUnk_080CC759:: @ 080CC759 - .incbin "baserom.gba", 0x0CC759, 0x0000015 - -gUnk_080CC76E:: @ 080CC76E - .incbin "baserom.gba", 0x0CC76E, 0x0000012 - -gUnk_080CC780:: @ 080CC780 - .incbin "baserom.gba", 0x0CC780, 0x0000010 - -gUnk_080CC790:: @ 080CC790 - .incbin "baserom.gba", 0x0CC790, 0x0000018 - -gUnk_080CC7A8:: @ 080CC7A8 - .incbin "baserom.gba", 0x0CC7A8, 0x0000014 - -gUnk_080CC7BC:: @ 080CC7BC - .incbin "baserom.gba", 0x0CC7BC, 0x0000004 - -gUnk_080CC7C0:: @ 080CC7C0 - .incbin "baserom.gba", 0x0CC7C0, 0x0000010 - -gUnk_080CC7D0:: @ 080CC7D0 - .incbin "baserom.gba", 0x0CC7D0, 0x0000008 - -gUnk_080CC7D8:: @ 080CC7D8 - .incbin "baserom.gba", 0x0CC7D8, 0x0000008 - gUnk_080CC7E0:: @ 080CC7E0 .incbin "baserom.gba", 0x0CC7E0, 0x0000009 diff --git a/include/greatFairy.h b/include/greatFairy.h index 317bbf49..1d40304f 100644 --- a/include/greatFairy.h +++ b/include/greatFairy.h @@ -15,13 +15,9 @@ extern void sub_0805EC9C(); extern void sub_0805EC60(); extern void sub_080873D0(); extern void DeleteEntity(); -extern u32 sub_080045D4(); extern void sub_0806F69C(); -extern u32 Random(); -extern void sub_0805E3A0(Entity*, u32); extern Entity* FindEntityInListBySubtype(u32, u32, u32); extern void sub_080791D0(); -extern u32 FindEntityInListByForm(u32, u32, u32, u32, u32); extern void (*const GreatFairy_Main[])(Entity*); extern void (*const GreatFairy_Behaviors[])(Entity*); extern void (*const GreatFairy_WingsBehaviors[])(Entity*); diff --git a/linker.ld b/linker.ld index b6301795..399e48ac 100644 --- a/linker.ld +++ b/linker.ld @@ -345,8 +345,8 @@ SECTIONS { src/enemy/pesto.o(.text); src/enemy/puffstool.o(.text); asm/chuchuBoss.o(.text); - asm/likeLike.o(.text); - asm/spearMoblin.o(.text); + src/enemy/likeLike.o(.text); + src/enemy/spearMoblin.o(.text); asm/businessScrub.o(.text); src/enemy/rupeeLike.o(.text); asm/madderpillar.o(.text); @@ -941,7 +941,12 @@ SECTIONS { data/animations/pesto.o(.rodata); src/enemy/puffstool.o(.rodata); data/animations/puffstool.o(.rodata); - data/data_080CC19C.o(.rodata); + src/enemy/chuchuBoss.o(.rodata); + data/animations/chuchuBoss.o(.rodata); + src/enemy/likeLike.o(.rodata); + data/animations/likeLike.o(.rodata); + src/enemy/spearMoblin.o(.rodata); + data/data_080CC6FC.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); data/areaPropertyLists.o(.rodata); diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index d25b4d9a..d3b958dc 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -16,7 +16,6 @@ extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*)); extern u32 sub_0806FCB8(Entity*, u32, u32, u32); extern u32 GetNextFunction(Entity*); extern void SetChildOffset(Entity*, s32, s32, s32); -extern u32 Random(void); extern Entity* gUnk_020000B0; extern u8 gEntCount; diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c new file mode 100644 index 00000000..c9916ab1 --- /dev/null +++ b/src/enemy/chuchuBoss.c @@ -0,0 +1,190 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern void sub_08078B48(void); + +void sub_08027870(Entity*); + +extern void (*const gUnk_080CC19C[])(Entity*); +extern void (*const gUnk_080CC1B0[])(Entity*); +extern const u8 gUnk_080CC1B8[]; +extern void (*const gUnk_080CC1C8[])(Entity*); +extern void (*const gUnk_080CC1DC[])(Entity*); +extern void (*const gUnk_080CC20C[])(Entity*); +extern const u8 gUnk_080CC234[]; +extern const u8 gUnk_080CC24F[]; +extern void (*const gUnk_080CC258[])(Entity*); +extern void (*const gUnk_080CC264[])(Entity*); +extern void (*const gUnk_080CC26C[])(Entity*); +extern const u8 gUnk_080CC278[]; +extern const u16 gUnk_080CC27C[]; +extern const u16 gUnk_080CC29C[]; +extern const u16 gUnk_080CC2BC[]; +extern const s8 gUnk_080CC2DC[]; + +void sub_08025DC0(Entity*); +void sub_08025CBC(Entity*); +void sub_08025CD4(Entity*); +void sub_08001242(Entity*); +void sub_08025DD8(Entity*); +void sub_08026060(Entity*); +void sub_08026110(Entity*); +void sub_080272D4(Entity*); +void sub_0802720C(Entity*); +void sub_0802720C(Entity*); +void sub_08026090(Entity*); +void sub_0802626C(Entity*); +void sub_08026580(Entity*); +void sub_08026634(Entity*); +void sub_08026750(Entity*); +void sub_0802686C(Entity*); +void sub_080268C8(Entity*); +void sub_0802694C(Entity*); +void sub_08026C40(Entity*); +void sub_08026E1C(Entity*); +void sub_08026FA4(Entity*); +void sub_08027064(Entity*); +void sub_08026F1C(Entity*); +void sub_080262A8(Entity*); +void sub_08026328(Entity*); +void sub_08026358(Entity*); +void sub_080263B4(Entity*); +void sub_08026414(Entity*); +void sub_0802647C(Entity*); +void sub_080264AC(Entity*); +void sub_080264D4(Entity*); +void sub_0802650C(Entity*); +void sub_0802653C(Entity*); +void sub_08026774(Entity*); +void sub_080267D0(Entity*); +void sub_08026808(Entity*); +void sub_080268EC(Entity*); +void sub_08026914(Entity*); +void sub_08026968(Entity*); +void sub_080269CC(Entity*); +void sub_08026BE8(Entity*); + +// clang-format off +void (*const gUnk_080CC19C[])(Entity*) = { + sub_08025DC0, + sub_08025DC0, + sub_08025CBC, + sub_08025CD4, + sub_08001242, +}; + +void (*const gUnk_080CC1B0[])(Entity*) = { + sub_08025DD8, + sub_08026060, +}; + +const u8 gUnk_080CC1B8[] = { + 0, 4, + 0, 0, + 0, 4, + 0, 0, + 1, 4, + 0, 0, + 2, 4, + 0, 0, +}; + +void (*const gUnk_080CC1C8[])(Entity*) = { + sub_08026110, + sub_080272D4, + sub_0802720C, + sub_0802720C, + sub_08026090, +}; + +void (*const gUnk_080CC1DC[])(Entity*) = { + sub_0802626C, + sub_08026580, + sub_08026634, + sub_08026750, + sub_0802686C, + sub_080268C8, + sub_0802694C, + sub_08026C40, + sub_08026E1C, + sub_08026FA4, + sub_08027064, + sub_08026F1C, +}; + +void (*const gUnk_080CC20C[])(Entity*) = { + sub_080262A8, + sub_08026328, + sub_08026358, + sub_080263B4, + sub_08026414, + sub_0802647C, + sub_080264AC, + sub_080264D4, + sub_0802650C, + sub_0802653C, +}; + +const u8 gUnk_080CC234[] = { + 0x3C, 0x1E, 0x1E, 0x1E, + 0x1E, 0x0F, 0x0F, 0x0F, + 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x0A, 0x0A, + 0x0A, 0x0F, 0x0F, 0x0F, + 0x1E, 0x1E, 0x2D, 0x0A, + 0x5A, 0x1E, 0xFF, +}; + +const u8 gUnk_080CC24F[] = { + 2, 2, 4, 4, + 4, 6, 6, 8, +}; + +void (*const gUnk_080CC258[])(Entity*) = { + sub_08026774, + sub_080267D0, + sub_08026808, +}; + +void (*const gUnk_080CC264[])(Entity*) = { + sub_080268EC, + sub_08026914, +}; + +void (*const gUnk_080CC26C[])(Entity*) = { + sub_08026968, + sub_080269CC, + sub_08026BE8, +}; + +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 u16 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 s8 gUnk_080CC2DC[] = { + -7, -9, -7, +}; +// clang-format on diff --git a/src/enemy/likeLike.c b/src/enemy/likeLike.c new file mode 100644 index 00000000..ca50374f --- /dev/null +++ b/src/enemy/likeLike.c @@ -0,0 +1,287 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" +#include "textbox.h" + +extern bool32 sub_080544B4(u32); +extern void sub_0807CAA0(u32, u32); + +void sub_0802810C(Entity*); +void sub_080281A0(Entity*); +bool32 sub_080281E0(u32); +void sub_08028224(u32); + +extern void (*const gUnk_080CC6FC[])(Entity*); +extern void (*const gUnk_080CC714[])(Entity*); + +void LikeLike(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CC6FC); + SetChildOffset(this, 0, 1, -0x10); +} + +void sub_08027D8C(Entity* this) { + gUnk_080CC714[this->action](this); +} + +void sub_08027DA4(Entity* this) { + if (this->damageType == 1) { + this->action = 3; + this->flags &= ~0x80; + this->damageType = 0x8c; + } else { + if (this->action == 7) { + sub_0802810C(this); + } else if (this->bitfield & 0x80) { + u8 tmp = this->bitfield & ~0x80; + if (!tmp) { + this->action = 7; + this->actionDelay = 0x5f; + this->field_0xf = tmp; + this->flags2 &= 0xfc; + this->field_0x82.HALF.HI = gPlayerEntity.spritePriority.b1; + } + } + } + + if (this->currentHealth == 0) { + this->actionDelay = 0x20; + } + + if (this->field_0x43) { + sub_0804A9FC(this, 0x1c); + } + + sub_0804AA30(this, gUnk_080CC6FC); +} + +void sub_08027E40(Entity* this) { + if (this->actionDelay == 2 && this->field_0x80.HALF.LO != 0xff) { + sub_0805E3A0(this, 3); + sub_08028224(this->field_0x80.HALF.LO); + } + sub_0804A7D4(this); +} + +void nullsub_139(Entity* this) { + /* ... */ +} + +void sub_08027E70(Entity* this) { + sub_0804A720(this); + + switch (this->entityType.form) { + case 0: + this->action = 3; + this->spriteSettings.b.draw = 0; + this->flags = this->flags & 0x7f; + this->actionDelay = 0; + break; + case 1: + this->action = 1; + this->spriteSettings.b.draw = 1; + this->actionDelay = 8; + InitializeAnimation(this, 1); + break; + case 2: + this->action = 1; + this->spriteSettings.b.draw = 0; + this->actionDelay = 0; + this->damageType = 1; + InitializeAnimation(this, 0); + break; + } + + this->direction = 0; + this->field_0x82.HALF.LO = 0; + this->animationState = 0; + this->field_0x82.HALF.HI = 0; + this->field_0x80.HALF.LO = 0xff; +} + +void sub_08027EFC(Entity* this) { + if (this->damageType == 1) + return; + + if (sub_08049FDC(this, 1)) { + if (!sub_08049FA0(this) && (Random() & 0x30)) { + this->direction = sub_08049EE4(this); + } else { + this->direction = this->field_0x82.HALF.LO; + } + + if (--this->actionDelay == 0) { + this->direction = sub_08049F84(this, 1); + this->field_0x82.HALF.LO = this->direction; + this->actionDelay = 8; + } + ProcessMovement(this); + GetNextFrame(this); + } else { + this->action = 6; + this->flags &= ~0x80; + InitializeAnimation(this, 2); + } +} + +void nullsub_12(Entity* this) { + /* ... */ +} + +void sub_08027F84(Entity* this) { + if (sub_08049FDC(this, 1)) { + this->action = 5; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 0); + CreateDust(this); + } +} + +void sub_08027FB4(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 1; + this->actionDelay = 1; + this->flags2 |= 1; + } + GetNextFrame(this); +} + +void sub_08027FE0(Entity* this) { + GetNextFrame(this); + if (this->frames.all & 1) { + this->action = 1; + this->flags |= 0x80; + this->direction = sub_08049F84(this, 1); + this->actionDelay = 8; + this->spritePriority.b1 = 1; + InitializeAnimation(this, 1); + } +} + +void sub_0802802C(Entity* this) { + GetNextFrame(this); + if (this->frames.all & 1) { + this->action = 3; + this->spriteSettings.b.draw = 0; + this->direction = 0; + this->actionDelay = 0; + CreateDust(this); + } +} + +void sub_0802805C(Entity* this) { + u8* tmp; + + UpdateAnimationVariableFrames(this, 2); + + if (sub_0807953C()) { + u32 tmp2 = Random(); + u32 tmp3 = this->field_0xf + 1; + tmp3 += (tmp2 & 1); + this->field_0xf = tmp3; + } + + if (this->field_0xf >= 0x19 || gUnk_02002A40.stats.health == 0) { + sub_0802810C(this); + } else { + ResetPlayer(); + gPlayerState.field_0x1a[0] |= 0x80; + PositionRelative(this, &gPlayerEntity, 0, 0x10000); + + tmp = GetSpriteSubEntryOffsetDataPointer((u16)this->spriteIndex, this->frameIndex); + gPlayerEntity.spriteOffsetX = tmp[0]; + gPlayerEntity.spriteOffsetY = tmp[1]; + gPlayerEntity.spritePriority.b1 = 0; + + if (--this->actionDelay == 0) { + sub_080281A0(this); + } + + if ((this->actionDelay & 3) == 0) { + EnqueueSFX(0x104); + } + } +} + +#if NON_MATCHING +void sub_0802810C(Entity* this) { + gPlayerState.jumpStatus = 0x41; + gPlayerState.field_0xa = 0; + gPlayerState.flags.all &= 0xffffffef; + gPlayerEntity.flags |= 0x80; + gPlayerEntity.field_0x20 = 0x18000; + gPlayerEntity.hurtBlinkTime = -60; + gPlayerEntity.direction = gPlayerEntity.animationState << 2; + gPlayerEntity.spritePriority.b1 = this->field_0x82.HALF.HI; + gPlayerEntity.height.HALF.HI = gPlayerEntity.spriteOffsetY; + gPlayerEntity.spriteOffsetY = 0; + this->action = 4; + this->actionDelay = 0x50; + this->field_0xf = 0; + this->flags2 |= 2; + if (this->hurtBlinkTime == 0) { + this->hurtBlinkTime = -18; + } +} +#else +NAKED +void sub_0802810C(Entity* this) { + asm(".include \"asm/non_matching/likeLike/sub_0802810C.inc\""); +} +#endif + +void sub_080281A0(Entity* this) { + this->field_0xf = 0x19; + if (sub_080281E0(0xe)) { + this->field_0x80.HALF.LO = 0xe; + TextboxNoOverlapFollow(0x578); + } else if (sub_080281E0(0xd)) { + this->field_0x80.HALF.LO = 0xd; + TextboxNoOverlapFollow(0x578); + } else { + ModHealth(-1); + } +} + +bool32 sub_080281E0(u32 param_1) { + bool32 ret = FALSE; + if (GetInventoryValue(param_1) == 1) { + if (sub_080544B4(gUnk_02002A40.stats.itemOnA)) { + gUnk_02002A40.stats.itemOnA = 0; + } + + if (sub_080544B4(gUnk_02002A40.stats.itemOnB)) { + gUnk_02002A40.stats.itemOnB = 0; + } + + sub_0807CAA0(param_1, 0); + ret = TRUE; + } + + return ret; +} + +void sub_08028224(u32 param_1) { + sub_080A7C18(param_1, 0, 1); + TextboxNoOverlapFollow(0x579); +} + + +void (*const gUnk_080CC6FC[])(Entity *) = { + sub_08027D8C, + sub_08027DA4, + sub_08001324, + sub_08027E40, + sub_08001242, + nullsub_139, +}; + +void (*const gUnk_080CC714[])(Entity *) = { + sub_08027E70, + sub_08027EFC, + nullsub_12, + sub_08027F84, + sub_08027FB4, + sub_08027FE0, + sub_0802802C, + sub_0802805C, +}; diff --git a/src/enemy/octorok.c b/src/enemy/octorok.c index e4b25fa9..7e563ab0 100644 --- a/src/enemy/octorok.c +++ b/src/enemy/octorok.c @@ -10,7 +10,6 @@ extern u32 sub_0806F520(); extern void sub_0806F4E8(); extern void UpdateAnimationVariableFrames(); extern void sub_0804A720(); -extern u32 Random(); extern Entity* sub_08049DF4(u32); void Octorok_Pause(); @@ -233,7 +232,10 @@ const u8 gOctorokSpitChanceModifier[] = { }; const u8 gOctorokNutOffset[] = { - 0, -3, 4, 0, 0, 2, -4, 0, + 0, -3, + 4, 0, + 0, 2, + -4, 0, }; const s8 gUnk_080CA17E[] = { diff --git a/src/enemy/spearMoblin.c b/src/enemy/spearMoblin.c new file mode 100644 index 00000000..ad669ed9 --- /dev/null +++ b/src/enemy/spearMoblin.c @@ -0,0 +1,439 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern bool32 sub_0806FC80(Entity*, Entity*, u32); +extern Entity* sub_080A7EE0(u32); +extern Entity* sub_08049DF4(u32); + +void sub_08028604(Entity*); +void sub_08028754(Entity*); +void sub_08028784(Entity*); +void sub_080287E0(Entity*); +void sub_08028728(Entity*); +bool32 sub_080286CC(Entity*); +bool32 sub_080288A4(Entity*); +void sub_08028858(Entity*); +void sub_080288C0(Entity*); +bool32 sub_08028828(u32, u32); +void sub_080287B4(Entity*); + +extern void (*const gUnk_080CC790[])(Entity*); +extern void (*const gUnk_080CC7A8[])(Entity*); +extern const u8 gUnk_080CC7BC[]; +extern const s8 gUnk_080CC7C0[]; +extern const u8 gUnk_080CC7D0[]; +extern const u16 gUnk_080CC7D8[]; + +extern const BoundingBox* const gUnk_080CC944[]; + +void SpearMoblin(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CC790); + SetChildOffset(this, 0, 1, -0x20); + if (this->attachedEntity && this->attachedEntity->next) { + CopyPosition(this, this->attachedEntity); + } +} + +void sub_0802826C(Entity* this) { + gUnk_080CC7A8[this->action](this); +} + +void sub_08028284(Entity* this) { + if (this->field_0x43 != 0) + sub_0804A9FC(this, 0x1c); + + sub_0804AA30(this, gUnk_080CC790); + if (this->bitfield & 0x80) { + if (this->action != 4) { + sub_08028754(this); + } else { + if ((this->bitfield & 0x3f) == 0) { + this->field_0x7a.HALF.LO++; + this->field_0x80.HALF.HI = 0x16; + sub_08028784(this); + } + } + } + + this->attachedEntity->hurtBlinkTime = this->hurtBlinkTime; + if (this->currentHealth == 0) { + this->nonPlanarMovement = 0; + this->field_0x82.HALF.LO = 0; + sub_080287E0(this); + DeleteEntity(this->attachedEntity); + this->attachedEntity = NULL; + } +} + +void nullsub_13(Entity* this) { + /* ... */ +} + +void sub_08028314(Entity* this) { + Entity* pEVar2; + + sub_0804A720(this); + this->action = 1; + this->animationState = 0; + this->field_0x7a.HALF.HI = 0; + this->field_0x80.HALF.LO = 0; + this->field_0x82.HALF.HI = 0; + this->field_0x80.HALF.HI = 0; + this->field_0x7a.HALF.LO = 0; + this->field_0x82.HALF.LO = 1; + + if (this->actionDelay) { + this->animationState = this->entityType.parameter << 1; + this->actionDelay = 0x1e; + this->nonPlanarMovement = 0x80; + this->direction = this->animationState << 2; + sub_080287E0(this); + } else { + this->animationState = 0x10; + sub_08028604(this); + } + + pEVar2 = sub_080A7EE0(3); + if (pEVar2 != NULL) { + pEVar2->parent = this; + this->attachedEntity = pEVar2; + } +} + +void sub_08028378(Entity* this) { + if (this->field_0x80.HALF.HI != 0) { + this->field_0x80.HALF.HI--; + } + + if (--this->actionDelay == 0) { + if (++this->field_0x80.HALF.LO >= 0x10) { + sub_08028728(this); + } else { + sub_08028604(this); + } + } else { + if (sub_080286CC(this)) { + this->field_0x7a.HALF.HI |= 1; + } + if (sub_080288A4(this)) { + sub_0800417E(this, this->collisions); + this->animationState = DirectionRoundUp(this->direction) >> 2; + this->field_0x82.HALF.HI++; + sub_080287E0(this); + } + } + + if (this->field_0xf >= 0xc) { + if (this->field_0x7a.HALF.HI != 0) { + sub_08028754(this); + } + } else { + this->field_0xf++; + } + + sub_08028858(this); +} + +void sub_08028420(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 3; + this->field_0x82.HALF.LO = 0; + this->field_0x80.HALF.LO = 0; + this->animationState = 0x10; + sub_08028604(this); + } else { + if (sub_080286CC(this)) { + this->field_0x7a.HALF.HI |= 1; + } + } + + if (this->field_0xf >= 0xc) { + if (this->field_0x7a.HALF.HI != 0) { + sub_08028754(this); + } + } else { + this->field_0xf++; + } + + sub_08028858(this); +} + +void sub_08028488(Entity* this) { + if (--this->actionDelay == 0) { + switch (this->field_0x82.HALF.LO) { + case 3: + this->action = 4; + this->nonPlanarMovement = 0x180; + this->direction = sub_08049F84(this, 1); + EnqueueSFX(0x11e); + break; + case 2: + this->action = 2; + this->nonPlanarMovement = 0; + this->actionDelay = (Random() & 7) * 3 + 0x40; + break; + case 4: + this->direction = (this->direction + 0x10) & 0x18; + /* fallthrough */ + case 1: + default: + this->action = 1; + this->field_0x82.HALF.LO = 1; + this->nonPlanarMovement = 0x80; + this->actionDelay = (Random() & 7) * 3 + 0x22; + break; + } + + this->field_0xf = 0; + this->animationState = DirectionRoundUp(this->direction) >> 2; + sub_080287E0(this); + } + + sub_08028858(this); +} + +void sub_08028528(Entity* this) { + Entity* ent = sub_08049DF4(1); + const BoundingBox* box; + + if (ent == NULL) { + this->field_0xf = 0; + sub_08028728(this); + } else { + sub_080288C0(this); + box = gUnk_080CC944[this->animationState >> 1]; + this->boundingBox->unknown[0] = box->unknown[0]; + this->boundingBox->unknown[1] = box->unknown[1]; + this->boundingBox->unknown[6] = box->unknown[6]; + this->boundingBox->unknown[7] = box->unknown[7]; + + if (this->field_0x7a.HALF.LO != 0) { + this->field_0x7a.HALF.LO = 0; + this->field_0x80.HALF.HI = 0x16; + sub_08028784(this); + } else { + if (++this->actionDelay == 0x20) { + u32 direction; + this->actionDelay = 0; + direction = GetFacingDirection(this, ent); + if (sub_08028828(this->direction, direction)) { + this->direction = direction; + } + } + + if ((this->actionDelay & 7) == 0) { + EnqueueSFX(0xf0); + CreateFx(this, 2, 0x40); + } + + if (++this->field_0x7a.HALF.HI == 0x80) { + this->field_0x7a.HALF.LO++; + } + } + + if (0x20 < this->field_0x7a.HALF.HI) { + ProcessMovement(this); + } + + GetNextFrame(this); + } +} + +#if NON_MATCHING +void sub_08028604(Entity* this) { + this->field_0xf = 0; + if (this->field_0x82.HALF.LO == 1) { + this->actionDelay = gUnk_080CC7BC[Random() & 3]; + this->nonPlanarMovement = 0x80; + if (sub_08049FA0(this) != 0) { + this->direction = gUnk_080CC7D0[Random() & 7] + 0x18 + this->direction & 0x18; + } else { + u32 iVar3 = sub_08049EE4(this); + u32 uVar1; + if (this->field_0x82.HALF.HI == '\0') { + uVar1 = gUnk_080CC7C0[Random() & 0xf]; + } else { + uVar1 = gUnk_080CC7C0[Random() & 7]; + this->actionDelay = this->actionDelay + 0x10; + this->field_0x82.HALF.HI--; + } + this->direction = iVar3 + uVar1 + 4U & 0x18; + } + } else { + this->actionDelay = 0xc; + this->nonPlanarMovement = 0; + } + + if (this->direction >> 2 != this->animationState) { + this->animationState = this->direction >> 2; + sub_080287E0(this); + } +} +#else +NAKED +void sub_08028604(Entity* this) { + asm(".include \"asm/non_matching/spearMoblin/sub_08028604.inc\""); +} +#endif + +bool32 sub_080286CC(Entity* this) { + if (this->field_0x80.HALF.HI == 0) { + Entity* ent = sub_08049DF4(1); + if (ent != NULL) { + if (this->field_0x82.HALF.LO == 2 && sub_0806FC80(this, ent, 0x30)) + return TRUE; + + if (sub_0806FC80(this, ent, 0x40) && + DirectionRoundUp(GetFacingDirection(this, ent)) >> 2 == this->animationState) + return TRUE; + } + } + + return FALSE; +} + +void sub_08028728(Entity* this) { + this->animationState = DirectionRoundUp(this->direction) >> 2; + this->direction = this->animationState << 2; + this->field_0x82.HALF.HI >>= 1; + sub_080287B4(this); + this->field_0x82.HALF.LO = 2; +} + +void sub_08028754(Entity* this) { + this->direction = sub_08049F84(this, 1); + this->animationState = DirectionRoundUp(this->direction) >> 2; + this->field_0x82.HALF.HI = 0; + sub_080287B4(this); + this->field_0x82.HALF.LO = 3; +} + +void sub_08028784(Entity* this) { + this->animationState = DirectionRoundUp(this->direction) >> 2; + this->direction = this->animationState << 2; + this->field_0x82.HALF.HI = 0; + sub_080287B4(this); + this->actionDelay <<= 1; + this->field_0x82.HALF.LO = 4; +} + +void sub_080287B4(Entity* this) { + this->action = 3; + this->actionDelay = 0x20; + this->field_0xf = 0; + this->field_0x80.HALF.LO = 0; + this->field_0x7a.HALF.HI = 0; + this->nonPlanarMovement = 0; + this->field_0x82.HALF.LO = 0; + sub_080287E0(this); +} + +void sub_080287E0(Entity* this) { + u32 sprite = this->animationState >> 1; + switch (this->field_0x82.HALF.LO) { + case 0: + /* ... */ + break; + case 1: + case 4: + sprite += 4; + break; + case 3: + sprite += 8; + break; + case 2: + sprite += 0xc; + break; + } + InitializeAnimation(this, sprite); +} + +bool32 sub_08028828(u32 arg0, u32 arg1) { + if (DirectionRoundUp(arg1) == DirectionRoundUp(arg0)) { + u32 angle1 = (arg1 + 5) & 7; + u32 angle0 = (arg0 + 5) & 7; + if (angle1 < 3 && angle0 < 3) + return TRUE; + } + + return FALSE; +} + +void sub_08028858(Entity* this) { + const BoundingBox* box; + + sub_080288C0(this); + box = gUnk_080CC944[this->animationState >> 1]; + this->boundingBox->unknown[0] = box->unknown[0]; + this->boundingBox->unknown[1] = box->unknown[1]; + this->boundingBox->unknown[6] = box->unknown[6]; + this->boundingBox->unknown[7] = box->unknown[7]; + + if (this->field_0x82.HALF.LO == 0) { + this->nonPlanarMovement = 0; + } + + ProcessMovement(this); + GetNextFrame(this); +} + +bool32 sub_080288A4(Entity* this) { + return (this->collisions & gUnk_080CC7D8[this->animationState >> 1]) != 0; +} + +void sub_080288C0(Entity* this) { + Entity* ent = this->attachedEntity; + if (ent && (ent->bitfield & 0x80)) { + this->field_0x3e = ent->field_0x3e; + this->hurtBlinkTime = -ent->hurtBlinkTime; + this->field_0x46 = ent->field_0x46; + this->field_0x42 = ent->field_0x42; + ent->field_0x42 = 0; + } +} + +// clang-format off +void (*const gUnk_080CC790[])(Entity*) = { + sub_0802826C, + sub_08028284, + sub_08001324, + sub_0804A7D4, + sub_08001242, + nullsub_13, +}; + +void (*const gUnk_080CC7A8[])(Entity*) = { + sub_08028314, + sub_08028378, + sub_08028420, + sub_08028488, + sub_08028528, +}; + +const u8 gUnk_080CC7BC[] = { + 0x30, 0x60, 0x6C, 0x91, +}; + +const s8 gUnk_080CC7C0[] = { + 0xF8, 0x0C, + 0xF4, 0x08, + 0x04, 0xFA, + 0x06, 0xFC, + 0x00, 0xFD, + 0x01, 0x03, + 0xFF, 0x02, + 0x00, 0xFE, +}; + +const u8 gUnk_080CC7D0[] = { + 0x08, 0x10, + 0x08, 0x00, + 0x10, 0x08, + 0x10, 0x00, +}; + +const u16 gUnk_080CC7D8[] = { + 0xE, 0xE000, 0xE0, 0xE00, +}; +// clang-format on diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 694ec6f7..bb28c9f0 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -2,16 +2,15 @@ #include "entity.h" #include "player.h" #include "structures.h" +#include "functions.h" extern void (*gUnk_081140D4[])(Entity*); extern u16 gUnk_081140CC[]; -extern void sub_0805E3A0(Entity*, u32); extern void sub_0806D0B0(Entity*); extern void sub_0807DD64(Entity*); extern void sub_0807DDAC(Entity*, u32); extern void sub_0807DDE4(Entity*); -extern u32 Random(void); extern void PlaySFX(u32); extern void sub_0806D02C(Entity*); extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32); diff --git a/src/npc/cow.c b/src/npc/cow.c index 24fc90d8..edd4a9d3 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -15,7 +15,6 @@ extern void (*gUnk_08111914[])(Entity*); extern void (*gUnk_08111928[])(Entity*); extern Dialog gUnk_08111938[]; extern void PlaySFX(u32); -extern u32 Random(); extern u32 UpdateFuseInteraction(Entity*); extern PlayerState gPlayerState; diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index 5b3e8f7d..b4326823 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -21,7 +21,6 @@ extern void sub_08060158(Entity*); extern u32 CheckKinstoneFused(u32); extern Entity* FindEntityInListBySubtype(u32, u32, u32); extern void DeleteEntity(Entity*); -extern u32 Random(void); extern void ModBombs(s32); extern SpriteLoadData gUnk_0810A348; diff --git a/src/npc/melari.c b/src/npc/melari.c index 2262d14e..ed324001 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -6,7 +6,6 @@ extern void sub_08068780(Entity*); extern void sub_08078778(Entity*); -extern u32 Random(void); extern void sub_0807DD50(Entity*); extern void sub_0806F118(Entity*); extern void sub_0807DDAC(Entity*, u32); diff --git a/src/npc/smith.c b/src/npc/smith.c index 0060e521..115d1539 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -8,7 +8,6 @@ extern u32 sub_0806F5A4(u32); extern void sub_0806F118(Entity*); extern Entity* CreateFx(Entity*, u32, u32); extern void PlaySFX(u32); -extern u32 Random(void); extern void sub_0807000C(Entity*); extern u32 sub_0801E99C(Entity*); extern void sub_0807DD50(Entity*); diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index d1951553..784ff48c 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -35,7 +35,6 @@ extern void sub_08062048(Entity*); extern void sub_08078784(Entity*, u32); extern void sub_08078778(Entity*); extern u32 sub_0806F5B0(u32); -extern u32 Random(void); extern void ResolveEntityOnTop(Entity*, Entity*); extern void sub_08078850(Entity*, u32, u8, u32*); diff --git a/src/object/cloud.c b/src/object/cloud.c index fce592f1..8a133c2e 100644 --- a/src/object/cloud.c +++ b/src/object/cloud.c @@ -3,6 +3,7 @@ #include "room.h" #include "player.h" #include "flags.h" +#include "functions.h" extern void sub_0809F7BC(Entity*); extern void PlaySFX(u32); @@ -13,7 +14,6 @@ extern void DeleteThisEntity(); extern u32 CheckRoomFlag(u32); extern void sub_08078A90(u32); extern void sub_08078B48(void); -extern u32 Random(void); extern void sub_0806F69C(Entity*); extern void (*gUnk_08124798[])(Entity*); extern void (*gUnk_081247A0[])(Entity*); @@ -23,7 +23,6 @@ extern void PositionEntityOnTop(Entity*, Entity*); extern void sub_0807BB68(u32*, u32, u32); extern u8 gUnk_02034490; -extern u32 gScreenTransition; extern void* gUnk_080DD750; extern Entity gPlayerEntity; extern PlayerState gPlayerState; @@ -62,7 +61,7 @@ void sub_0809F548(Entity* this) { sub_0809F814((((this->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 63) | (((this->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 63) << 6); } else { - if ((gScreenTransition & 7) == 0) { + if ((gScreenTransition.frameCount & 7) == 0) { sub_0809F7BC(this); } sub_0809F7F4(this); @@ -110,7 +109,7 @@ void sub_0809F61C(Entity* this) { sub_0809F814((((this->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 63) | (((this->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 63) << 6); } else { - if ((gScreenTransition & 7) == 0) { + if ((gScreenTransition.frameCount & 7) == 0) { sub_0809F7BC(this); } sub_0809F7F4(this); @@ -145,7 +144,7 @@ void sub_0809F700(Entity* this) { this->actionDelay = (Random() & 30) + 8; this->flags = this->flags | 12; } - if ((gScreenTransition & 3) == 0) { + if ((gScreenTransition.frameCount & 3) == 0) { uVar2 = Random(); this->spriteOffsetX = gUnk_081247C0[uVar2 & 7]; this->spriteOffsetY = gUnk_081247C0[uVar2 >> 4 & 7]; diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index 9174ab63..16664216 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -4,6 +4,7 @@ #include "screen.h" #include "greatFairy.h" #include "structures.h" +#include "functions.h" enum { BEHAVIORS, @@ -550,14 +551,14 @@ void sub_08087424(Entity* arg0, struct_08087424* arg1) { void sub_0808747C(u32 arg0, u32 arg1) { u32 iVar1; - iVar1 = FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0); + iVar1 = (u32)FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0); if (iVar1 != 0) { iVar1 = 1; } *(u32*)(arg1 + 0x14) = iVar1; } -//clang-format off +// clang-format off void (*const GreatFairy_Main[])(Entity*) = { GreatFairy_CallBehavior, GreatFairy_WingsCallBehavior, @@ -647,5 +648,4 @@ void (*const GreatFairy_Form2Behaviors[])(Entity*) = { sub_08087264, sub_0808727C }; - -//clang-format on +// clang-format on diff --git a/src/object/minishSizedEntrance.c b/src/object/minishSizedEntrance.c index ca261d35..55160cb7 100644 --- a/src/object/minishSizedEntrance.c +++ b/src/object/minishSizedEntrance.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" -extern u32 Random(); extern bool32 CheckIsDungeon(); extern void sub_080AE068(Entity*); extern void LoadFixedGFX(Entity*, u32); diff --git a/src/object/object1A.c b/src/object/object1A.c index 5f43ec2f..a8924998 100644 --- a/src/object/object1A.c +++ b/src/object/object1A.c @@ -1,10 +1,8 @@ #include "global.h" #include "entity.h" +#include "functions.h" extern void sub_08086A6C(); -extern s32 sub_080044EC(); -extern void ProcessMovement(); -extern u32 Random(void); extern void (*gUnk_081206C4[99])(Entity*); @@ -33,12 +31,10 @@ void sub_080869DC(Entity* ent) { } void sub_08086A28(Entity* ent) { - s32 iVar1; - if (ent->attachedEntity->next == NULL) { ent->action = 2; } else { - iVar1 = sub_080044EC(ent, 10240); + u32 iVar1 = sub_080044EC(ent, 10240); if (iVar1 == 0) { ent->action = 2; } diff --git a/src/object/smoke.c b/src/object/smoke.c index 98aa2e6b..0f1f8bff 100644 --- a/src/object/smoke.c +++ b/src/object/smoke.c @@ -1,7 +1,7 @@ #include "global.h" #include "entity.h" +#include "functions.h" -extern u32 Random(void); extern void sub_0806F69C(Entity*); extern void (*const gUnk_08121060[])(Entity*);