From e59664435ef5808d6dedebf3d143ef24c6e00802 Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Thu, 3 Feb 2022 21:23:20 +0100 Subject: [PATCH 1/2] Decompile Enemy64 --- asm/enemy/enemy64.s | 1461 ------------------------------------ assets/assets.json | 5 - data/const/enemy/enemy64.s | 44 -- include/enemy.h | 2 +- linker.ld | 6 +- src/enemy/enemy64.c | 523 +++++++++++++ 6 files changed, 527 insertions(+), 1514 deletions(-) delete mode 100644 asm/enemy/enemy64.s delete mode 100644 data/const/enemy/enemy64.s create mode 100644 src/enemy/enemy64.c diff --git a/asm/enemy/enemy64.s b/asm/enemy/enemy64.s deleted file mode 100644 index 5646660e..00000000 --- a/asm/enemy/enemy64.s +++ /dev/null @@ -1,1461 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Enemy64 -Enemy64: @ 0x0804905C - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xc] - cmp r0, #0 - beq _0804907C - adds r0, r5, #0 - adds r0, #0x7d - ldrb r1, [r0] - movs r0, #3 - ands r1, r0 - ldrb r2, [r5, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, #0x18] -_0804907C: - adds r1, r5, #0 - adds r1, #0x45 - ldrb r0, [r1] - adds r2, r0, #0 - cmp r2, #0 - bne _08049092 - movs r0, #0xff - strb r0, [r1] - movs r0, #4 - strb r0, [r5, #0xc] - strb r2, [r5, #0xd] -_08049092: - ldr r1, _080490F8 @ =gUnk_080D2974 - ldrb r0, [r5, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - adds r4, r5, #0 - adds r4, #0x78 - ldrh r3, [r4] - adds r0, r5, #0 - movs r1, #0xaa - movs r2, #0xaa - bl sub_0805EC9C - ldrh r0, [r4] - lsrs r0, r0, #8 - rsbs r0, r0, #0 - strb r0, [r5, #0x14] - adds r0, r5, #0 - bl sub_080499F0 - ldrb r0, [r5, #0x18] - lsls r0, r0, #0x1e - lsrs r0, r0, #0x1e - adds r1, r5, #0 - adds r1, #0x7d - strb r0, [r1] - ldrb r2, [r5, #0x18] - lsls r0, r2, #0x1e - lsrs r0, r0, #0x1e - cmp r0, #1 - bne _080490F4 - movs r1, #0x32 - ldrsh r0, [r5, r1] - ldr r1, _080490FC @ =gRoomControls - movs r3, #0xc - ldrsh r1, [r1, r3] - subs r0, r0, r1 - adds r0, #0x30 - movs r1, #0x80 - lsls r1, r1, #1 - cmp r0, r1 - bls _080490F4 - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r2 - strb r0, [r5, #0x18] -_080490F4: - pop {r4, r5, pc} - .align 2, 0 -_080490F8: .4byte gUnk_080D2974 -_080490FC: .4byte gRoomControls - - thumb_func_start sub_08049100 -sub_08049100: @ 0x08049100 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0x7c - bl CheckFlags - cmp r0, #0 - beq _08049144 - ldr r4, _08049140 @ =0x00004081 - adds r0, r4, #0 - movs r1, #0xa - movs r2, #2 - bl SetTile - adds r0, r4, #0 - movs r1, #0x4a - movs r2, #2 - bl SetTile - adds r0, r4, #0 - movs r1, #0x8a - movs r2, #2 - bl SetTile - adds r0, r4, #0 - movs r1, #0xca - movs r2, #2 - bl SetTile - bl DeleteThisEntity - b _0804916E - .align 2, 0 -_08049140: .4byte 0x00004081 -_08049144: - ldr r4, _080491E8 @ =0x00000323 - adds r0, r4, #0 - movs r1, #0xa - movs r2, #1 - bl sub_0807B7D8 - adds r0, r4, #0 - movs r1, #0x4a - movs r2, #1 - bl sub_0807B7D8 - adds r0, r4, #0 - movs r1, #0x8a - movs r2, #1 - bl sub_0807B7D8 - adds r0, r4, #0 - movs r1, #0xca - movs r2, #1 - bl sub_0807B7D8 -_0804916E: - movs r0, #0x22 - bl CreateProjectile - adds r2, r0, #0 - cmp r2, #0 - beq _080491E4 - movs r1, #0 - movs r3, #1 - movs r0, #1 - strb r0, [r2, #0xa] - str r5, [r2, #0x50] - str r2, [r5, #0x54] - strb r0, [r5, #0xc] - strb r1, [r5, #0xd] - movs r0, #0x3c - strb r0, [r5, #0xe] - movs r0, #0xc0 - strb r0, [r5, #0x15] - strb r0, [r5, #0x14] - movs r4, #0 - movs r0, #0xc0 - lsls r0, r0, #2 - strh r0, [r5, #0x24] - ldrb r1, [r5, #0x19] - movs r0, #3 - orrs r1, r0 - ldrb r2, [r5, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r3 - strb r0, [r5, #0x18] - ldrb r2, [r5, #0x1b] - movs r3, #0x3f - adds r0, r3, #0 - ands r0, r2 - movs r2, #0x80 - orrs r0, r2 - strb r0, [r5, #0x1b] - ands r1, r3 - orrs r1, r2 - strb r1, [r5, #0x19] - adds r1, r5, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x7c - strb r4, [r0] - subs r0, #4 - movs r1, #0x80 - lsls r1, r1, #7 - strh r1, [r0] - adds r0, #2 - strh r1, [r0] - adds r0, r5, #0 - movs r1, #0 - bl InitAnimationForceUpdate -_080491E4: - pop {r4, r5, pc} - .align 2, 0 -_080491E8: .4byte 0x00000323 - - thumb_func_start sub_080491EC -sub_080491EC: @ 0x080491EC - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08049208 @ =gUnk_080D2988 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - .align 2, 0 -_08049208: .4byte gUnk_080D2988 - - thumb_func_start sub_0804920C -sub_0804920C: @ 0x0804920C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0804921C - subs r0, #1 - strb r0, [r4, #0xe] - b _08049268 -_0804921C: - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - ldr r2, _0804926C @ =gRoomControls - ldrh r0, [r2, #6] - ldr r1, _08049270 @ =0xFFFFFF00 - adds r0, r0, r1 - movs r3, #0x2e - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _08049268 - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x80 - strb r0, [r4, #0x15] - strb r0, [r4, #0x14] - movs r0, #0xc0 - strh r0, [r4, #0x24] - ldrh r0, [r2, #6] - adds r0, #0xa8 - strh r0, [r4, #0x2e] - ldrh r0, [r2, #8] - subs r0, #0x40 - strh r0, [r4, #0x32] - adds r0, r4, #0 - adds r0, #0x78 - movs r1, #0x80 - lsls r1, r1, #8 - strh r1, [r0] - adds r0, #2 - strh r1, [r0] -_08049268: - pop {r4, pc} - .align 2, 0 -_0804926C: .4byte gRoomControls -_08049270: .4byte 0xFFFFFF00 - - thumb_func_start sub_08049274 -sub_08049274: @ 0x08049274 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - ldr r0, _080492A4 @ =gRoomControls - ldrh r0, [r0, #8] - adds r0, #0x40 - movs r2, #0x32 - ldrsh r1, [r4, r2] - cmp r0, r1 - bge _080492A2 - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] -_080492A2: - pop {r4, pc} - .align 2, 0 -_080492A4: .4byte gRoomControls - - thumb_func_start sub_080492A8 -sub_080492A8: @ 0x080492A8 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080492C4 @ =gUnk_080D2990 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - .align 2, 0 -_080492C4: .4byte gUnk_080D2990 - - thumb_func_start sub_080492C8 -sub_080492C8: @ 0x080492C8 - push {r4, r5, lr} - adds r3, r0, #0 - movs r0, #1 - strb r0, [r3, #0xd] - movs r1, #0 - movs r0, #0x90 - lsls r0, r0, #1 - strh r0, [r3, #0x24] - adds r0, r3, #0 - adds r0, #0x6e - strb r1, [r0] - movs r0, #0x2e - ldrsh r1, [r3, r0] - ldr r2, _08049300 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - adds r5, r2, #0 - cmp r1, #0xa7 - bgt _08049304 - adds r2, r3, #0 - adds r2, #0x80 - movs r0, #0xd8 - strh r0, [r2] - adds r1, r3, #0 - adds r1, #0x74 - adds r0, #0x28 - b _08049314 - .align 2, 0 -_08049300: .4byte gRoomControls -_08049304: - adds r2, r3, #0 - adds r2, #0x80 - movs r0, #0x78 - strh r0, [r2] - adds r1, r3, #0 - adds r1, #0x74 - movs r0, #0xff - lsls r0, r0, #8 -_08049314: - strh r0, [r1] - adds r4, r1, #0 - ldrh r0, [r5, #6] - ldrh r1, [r2] - adds r0, r0, r1 - strh r0, [r2] - movs r2, #0x32 - ldrsh r0, [r3, r2] - ldrh r1, [r5, #8] - subs r0, r0, r1 - cmp r0, #0x7f - bgt _08049336 - adds r1, r3, #0 - adds r1, #0x82 - movs r0, #0xb0 - strh r0, [r1] - b _08049346 -_08049336: - adds r1, r3, #0 - adds r1, #0x82 - movs r0, #0x50 - strh r0, [r1] - movs r2, #0 - ldrsh r0, [r4, r2] - rsbs r0, r0, #0 - strh r0, [r4] -_08049346: - ldrh r0, [r5, #8] - ldrh r2, [r1] - adds r0, r0, r2 - strh r0, [r1] - adds r0, r3, #0 - bl sub_08049358 - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08049358 -sub_08049358: @ 0x08049358 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x80 - ldrh r0, [r0] - movs r2, #0x2e - ldrsh r1, [r4, r2] - subs r0, r0, r1 - adds r1, r4, #0 - adds r1, #0x82 - ldrh r1, [r1] - movs r3, #0x32 - ldrsh r2, [r4, r3] - subs r1, r1, r2 - bl sub_080045DA - adds r3, r0, #0 - ldrb r2, [r4, #0x15] - subs r0, r2, r3 - adds r0, #2 - movs r1, #0xff - ands r0, r1 - cmp r0, #4 - bls _08049398 - subs r0, r3, r2 - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08049394 - subs r0, r2, #1 - b _08049396 -_08049394: - adds r0, r2, #1 -_08049396: - strb r0, [r4, #0x15] -_08049398: - ldrb r1, [r4, #0x15] - movs r5, #0x80 - lsls r5, r5, #1 - subs r1, r5, r1 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - adds r0, r4, #0 - adds r0, #0x80 - ldrh r1, [r0] - adds r0, #2 - ldrh r2, [r0] - movs r0, #0x24 - ldrsh r3, [r4, r0] - asrs r3, r3, #0x10 - adds r3, #0x10 - adds r0, r4, #0 - bl EntityWithinDistance - cmp r0, #0 - beq _080493E0 - movs r0, #2 - strb r0, [r4, #0xd] - movs r0, #0xc0 - strh r0, [r4, #0x24] - adds r0, r4, #0 - adds r0, #0x7e - strh r5, [r0] - ldrb r0, [r4, #0x15] - lsls r0, r0, #8 - adds r1, r4, #0 - adds r1, #0x76 - strh r0, [r1] -_080493E0: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080493E4 -sub_080493E4: @ 0x080493E4 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x76 - adds r0, #0x74 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r0, r2 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x18 - strb r0, [r4, #0x15] - movs r1, #0x1f - ands r0, r1 - cmp r0, #0 - bne _0804943A - movs r1, #0x2e - ldrsh r0, [r4, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - ldr r3, _08049458 @ =gRoomControls - ldrh r2, [r3, #6] - adds r2, #0xa8 - ldrh r3, [r3, #8] - adds r3, #0x80 - bl CalculateDirectionTo - adds r0, #2 - movs r1, #0x1c - ands r0, r1 - ldrb r1, [r4, #0x15] - lsrs r1, r1, #3 - subs r0, r0, r1 - movs r1, #0xf - ands r0, r1 - cmp r0, #8 - bne _0804943A - movs r0, #4 - strb r0, [r4, #0xd] - movs r0, #0x3c - strb r0, [r4, #0xe] - movs r0, #7 - strb r0, [r4, #0xf] -_0804943A: - adds r0, r4, #0 - bl sub_08049944 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08047EA4 - pop {r4, pc} - .align 2, 0 -_08049458: .4byte gRoomControls - - thumb_func_start sub_0804945C -sub_0804945C: @ 0x0804945C - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x76 - adds r0, #0x74 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r0, r2 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r1, r0, #0x18 - strb r1, [r4, #0x15] - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _0804948C - movs r0, #0x1f - ands r1, r0 - cmp r1, #0 - bne _080494B2 - movs r0, #4 - strb r0, [r4, #0xd] - movs r0, #0x5a - strb r0, [r4, #0xe] - b _080494B2 -_0804948C: - adds r0, r4, #0 - bl sub_08049A8C - cmp r0, #0 - beq _080494B2 - movs r0, #0x23 - bl CreateProjectile - adds r2, r0, #0 - cmp r2, #0 - beq _080494B2 - adds r1, r2, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - str r4, [r2, #0x50] - adds r0, r2, #0 - bl UpdateSpriteForCollisionLayer -_080494B2: - adds r0, r4, #0 - bl sub_08049944 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08047EA4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080494D0 -sub_080494D0: @ 0x080494D0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - ldrb r0, [r4, #0xe] - subs r1, r0, #1 - strb r1, [r4, #0xe] - movs r2, #0xff - lsls r0, r1, #0x18 - cmp r0, #0 - bne _08049518 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r2 - cmp r0, #0 - bne _0804950E - movs r0, #5 - strb r0, [r4, #0xd] - ldrh r0, [r4, #0x24] - adds r0, #0x40 - strh r0, [r4, #0x24] - b _08049534 -_0804950E: - movs r0, #3 - strb r0, [r4, #0xd] - movs r0, #0xa - strb r0, [r4, #0xe] - b _08049534 -_08049518: - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x50 - bne _08049534 - bl Random - movs r1, #3 - ands r1, r0 - movs r0, #0x62 - bl CreateEnemy - cmp r0, #0 - beq _08049534 - str r4, [r0, #0x50] -_08049534: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08049538 -sub_08049538: @ 0x08049538 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - ldr r0, _08049570 @ =gRoomControls - ldrh r1, [r0, #6] - adds r1, #0xa8 - ldrh r2, [r0, #8] - adds r2, #0x80 - adds r0, r4, #0 - movs r3, #0x70 - bl EntityWithinDistance - adds r1, r0, #0 - cmp r1, #0 - bne _0804956E - movs r0, #3 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] -_0804956E: - pop {r4, pc} - .align 2, 0 -_08049570: .4byte gRoomControls - - thumb_func_start sub_08049574 -sub_08049574: @ 0x08049574 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08049590 @ =gUnk_080D29A8 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - .align 2, 0 -_08049590: .4byte gUnk_080D29A8 - - thumb_func_start sub_08049594 -sub_08049594: @ 0x08049594 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _080495C8 @ =gRoomControls - ldrh r0, [r2, #6] - movs r3, #0x2e - ldrsh r1, [r4, r3] - subs r1, #0xa8 - subs r0, r0, r1 - ldrh r1, [r2, #8] - movs r3, #0x32 - ldrsh r2, [r4, r3] - subs r2, #0x80 - subs r1, r1, r2 - bl sub_080045DA - ldrb r2, [r4, #0x15] - cmp r0, r2 - beq _080495D2 - subs r0, r0, r2 - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080495CC - subs r0, r2, #1 - strb r0, [r4, #0x15] - b _080495DC - .align 2, 0 -_080495C8: .4byte gRoomControls -_080495CC: - adds r0, r2, #1 - strb r0, [r4, #0x15] - b _080495DC -_080495D2: - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] -_080495DC: - adds r0, r4, #0 - bl sub_08049944 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08047EA4 - pop {r4, pc} - - thumb_func_start sub_080495F8 -sub_080495F8: @ 0x080495F8 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _08049654 @ =gRoomControls - ldrh r1, [r0, #6] - adds r1, #0xa8 - ldrh r2, [r0, #8] - adds r2, #0x80 - adds r0, r4, #0 - movs r3, #0x28 - bl EntityWithinDistance - cmp r0, #0 - beq _0804963C - movs r0, #2 - strb r0, [r4, #0xd] - movs r0, #0x2d - strb r0, [r4, #0xe] - bl Random - ldr r2, _08049658 @ =gUnk_080D29B8 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r0, r4, #0 - adds r0, #0x74 - strh r1, [r0] - ldrb r0, [r4, #0x15] - lsls r0, r0, #8 - adds r1, r4, #0 - adds r1, #0x76 - strh r0, [r1] -_0804963C: - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - pop {r4, pc} - .align 2, 0 -_08049654: .4byte gRoomControls -_08049658: .4byte gUnk_080D29B8 - - thumb_func_start sub_0804965C -sub_0804965C: @ 0x0804965C - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x76 - adds r0, #0x74 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r0, r2 - strh r0, [r1] - lsrs r0, r0, #8 - strb r0, [r4, #0x15] - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0804969A - movs r0, #3 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] -_0804969A: - pop {r4, pc} - - thumb_func_start sub_0804969C -sub_0804969C: @ 0x0804969C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _080496C8 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] -_080496C8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080496CC -sub_080496CC: @ 0x080496CC - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080496E8 @ =gUnk_080D29C0 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - .align 2, 0 -_080496E8: .4byte gUnk_080D29C0 - - thumb_func_start sub_080496EC -sub_080496EC: @ 0x080496EC - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x94 - lsls r0, r0, #1 - bl SoundReq - bl sub_08079F8C - cmp r0, #0 - beq _08049720 - ldr r0, _0804971C @ =gPlayerEntity - movs r1, #0x36 - ldrsh r0, [r0, r1] - cmp r0, #0 - bne _08049720 - movs r0, #2 - bl SetPlayerControl - movs r0, #2 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - b _08049724 - .align 2, 0 -_0804971C: .4byte gPlayerEntity -_08049720: - movs r0, #1 - strb r0, [r4, #0xd] -_08049724: - adds r0, r4, #0 - bl sub_08049944 - pop {r4, pc} - - thumb_func_start sub_0804972C -sub_0804972C: @ 0x0804972C - push {r4, lr} - adds r4, r0, #0 - bl sub_08079F8C - cmp r0, #0 - beq _08049750 - ldr r0, _08049758 @ =gPlayerEntity - movs r1, #0x36 - ldrsh r0, [r0, r1] - cmp r0, #0 - bne _08049750 - movs r0, #2 - bl SetPlayerControl - movs r0, #2 - strb r0, [r4, #0xd] - movs r0, #1 - strb r0, [r4, #0xe] -_08049750: - adds r0, r4, #0 - bl sub_08049944 - pop {r4, pc} - .align 2, 0 -_08049758: .4byte gPlayerEntity - - thumb_func_start sub_0804975C -sub_0804975C: @ 0x0804975C - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0804977E - movs r0, #3 - strb r0, [r1, #0xd] - movs r0, #0xb4 - strb r0, [r1, #0xe] - adds r0, #0x4c - strh r0, [r1, #0x24] - ldrb r0, [r1, #0x15] - subs r0, #0x40 - strb r0, [r1, #0x15] -_0804977E: - adds r0, r1, #0 - bl sub_08049944 - pop {pc} - .align 2, 0 - - thumb_func_start sub_08049788 -sub_08049788: @ 0x08049788 - push {r4, lr} - adds r4, r0, #0 - bl sub_08049AB0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080497B8 - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r0, #4 - strb r0, [r4, #0xd] - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r4, #0x24] - ldrb r0, [r4, #0x14] - strb r0, [r4, #0x15] - movs r0, #0x94 - lsls r0, r0, #1 - bl SoundReq - b _080497C6 -_080497B8: - ldrb r0, [r4, #0x15] - movs r1, #0x80 - eors r0, r1 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_08049B20 -_080497C6: - adds r0, r4, #0 - bl sub_08049944 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080497D0 -sub_080497D0: @ 0x080497D0 - push {r4, lr} - adds r4, r0, #0 - bl sub_08049AB0 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - lsls r1, r1, #1 - subs r1, r1, r0 - movs r0, #0xff - ands r1, r0 - lsls r1, r1, #8 - adds r0, r4, #0 - bl sub_08049998 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08049802 - movs r0, #5 - strb r0, [r4, #0xd] - movs r1, #0x10 - bl SetFade -_08049802: - pop {r4, pc} - - thumb_func_start sub_08049804 -sub_08049804: @ 0x08049804 - push {r4, lr} - adds r4, r0, #0 - bl sub_08049944 - ldr r0, _0804987C @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _08049878 - movs r0, #6 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x18] - movs r3, #4 - rsbs r3, r3, #0 - adds r0, r3, #0 - ands r0, r1 - strb r0, [r4, #0x18] - ldr r4, [r4, #0x54] - ldrb r2, [r4, #0x10] - movs r1, #0x7f - adds r0, r1, #0 - ands r0, r2 - strb r0, [r4, #0x10] - ldrb r2, [r4, #0x18] - adds r0, r3, #0 - ands r0, r2 - strb r0, [r4, #0x18] - ldr r4, [r4, #0x54] - ldrb r2, [r4, #0x10] - adds r0, r1, #0 - ands r0, r2 - strb r0, [r4, #0x10] - ldrb r2, [r4, #0x18] - adds r0, r3, #0 - ands r0, r2 - strb r0, [r4, #0x18] - ldr r4, [r4, #0x54] - ldrb r0, [r4, #0x10] - ands r1, r0 - strb r1, [r4, #0x10] - ldrb r0, [r4, #0x18] - ands r3, r0 - strb r3, [r4, #0x18] - ldr r4, _08049880 @ =gPlayerEntity - ldr r1, _08049884 @ =gRoomControls - ldrh r0, [r1, #6] - adds r0, #0xa8 - movs r2, #0 - strh r0, [r4, #0x2e] - ldrh r0, [r1, #8] - adds r0, #0x80 - strh r0, [r4, #0x32] - strb r2, [r4, #0x14] - bl sub_080809D4 - movs r0, #4 - movs r1, #4 - bl SetFade -_08049878: - pop {r4, pc} - .align 2, 0 -_0804987C: .4byte gFadeControl -_08049880: .4byte gPlayerEntity -_08049884: .4byte gRoomControls - - thumb_func_start sub_08049888 -sub_08049888: @ 0x08049888 - push {lr} - adds r1, r0, #0 - ldr r0, _080498B0 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080498AE - movs r0, #7 - strb r0, [r1, #0xd] - movs r0, #0xa0 - strb r0, [r1, #0xe] - movs r0, #0x72 - bl SoundReq - movs r0, #0x7c - bl SetFlag - movs r0, #1 - bl SetPlayerControl -_080498AE: - pop {pc} - .align 2, 0 -_080498B0: .4byte gFadeControl - - thumb_func_start sub_080498B4 -sub_080498B4: @ 0x080498B4 - push {lr} - ldrb r1, [r0, #0xe] - subs r1, #1 - strb r1, [r0, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _080498C8 - bl DeleteThisEntity - b _0804993E -_080498C8: - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x10 - bne _080498E4 - movs r0, #0x36 - movs r1, #0xca - movs r2, #1 - bl sub_0807B7D8 - ldr r0, _080498E0 @ =0x00004081 - movs r1, #0xca - b _0804990E - .align 2, 0 -_080498E0: .4byte 0x00004081 -_080498E4: - cmp r0, #0x18 - bne _080498FC - movs r0, #0x36 - movs r1, #0x8a - movs r2, #1 - bl sub_0807B7D8 - ldr r0, _080498F8 @ =0x00004081 - movs r1, #0x8a - b _0804990E - .align 2, 0 -_080498F8: .4byte 0x00004081 -_080498FC: - cmp r0, #0x20 - bne _08049920 - movs r0, #0x36 - movs r1, #0x4a - movs r2, #1 - bl sub_0807B7D8 - ldr r0, _0804991C @ =0x00004081 - movs r1, #0x4a -_0804990E: - movs r2, #2 - bl SetTile - movs r0, #0x71 - bl SoundReq - b _0804993E - .align 2, 0 -_0804991C: .4byte 0x00004081 -_08049920: - cmp r0, #0x28 - bne _0804993E - movs r0, #0x36 - movs r1, #0xa - movs r2, #1 - bl sub_0807B7D8 - ldr r0, _08049940 @ =0x00004081 - movs r1, #0xa - movs r2, #2 - bl SetTile - movs r0, #0x71 - bl SoundReq -_0804993E: - pop {pc} - .align 2, 0 -_08049940: .4byte 0x00004081 - - thumb_func_start sub_08049944 -sub_08049944: @ 0x08049944 - push {r4, r5, lr} - adds r4, r0, #0 - adds r4, #0x7c - ldrb r3, [r4] - lsls r2, r3, #1 - movs r1, #0x7f - ands r2, r1 - movs r1, #0x80 - ands r1, r3 - orrs r2, r1 - strb r2, [r4] - ldr r5, _08049990 @ =gPlayerEntity - movs r2, #0x2e - ldrsh r1, [r5, r2] - movs r3, #0x32 - ldrsh r2, [r5, r3] - movs r3, #0x20 - bl EntityWithinDistance - cmp r0, #0 - beq _0804998C - ldr r2, _08049994 @ =gPlayerState - movs r0, #1 - strb r0, [r2, #0x14] - movs r1, #0x36 - ldrsh r0, [r5, r1] - cmp r0, #0 - bne _0804998C - ldr r0, [r2, #0x30] - movs r1, #2 - orrs r0, r1 - str r0, [r2, #0x30] - ldrb r0, [r4] - movs r1, #1 - orrs r0, r1 - strb r0, [r4] -_0804998C: - pop {r4, r5, pc} - .align 2, 0 -_08049990: .4byte gPlayerEntity -_08049994: .4byte gPlayerState - - thumb_func_start sub_08049998 -sub_08049998: @ 0x08049998 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r1, #0 - bl sub_08049944 - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_08047EA4 - movs r0, #0x2e - ldrsh r4, [r5, r0] - movs r2, #0x32 - ldrsh r6, [r5, r2] - movs r0, #0x24 - ldrsh r1, [r5, r0] - ldrb r2, [r5, #0x15] - adds r0, r5, #0 - bl LinearMoveAngle - adds r0, r5, #0 - adds r0, #0x7c - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080499EA - bl sub_08079F8C - cmp r0, #0 - beq _080499EA - ldr r0, _080499EC @ =gPlayerEntity - ldrh r1, [r5, #0x2e] - subs r1, r1, r4 - ldrh r2, [r0, #0x2e] - adds r1, r1, r2 - strh r1, [r0, #0x2e] - ldrh r1, [r5, #0x32] - subs r1, r1, r6 - ldrh r2, [r0, #0x32] - adds r1, r1, r2 - strh r1, [r0, #0x32] -_080499EA: - pop {r4, r5, r6, pc} - .align 2, 0 -_080499EC: .4byte gPlayerEntity - - thumb_func_start sub_080499F0 -sub_080499F0: @ 0x080499F0 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - beq _08049A82 - ldr r5, _08049A84 @ =gPlayerEntity - movs r1, #0x36 - ldrsh r0, [r5, r1] - cmp r0, #0 - bne _08049A82 - bl sub_08079F8C - cmp r0, #0 - beq _08049A82 - adds r2, r4, #0 - adds r2, #0x7c - ldrb r1, [r2] - movs r0, #1 - ands r0, r1 - adds r6, r2, #0 - cmp r0, #0 - bne _08049A82 - movs r2, #0x2e - ldrsh r1, [r4, r2] - movs r3, #0x32 - ldrsh r2, [r4, r3] - adds r0, r5, #0 - movs r3, #0x24 - bl EntityWithinDistance - cmp r0, #0 - beq _08049A7E - ldrb r1, [r6] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _08049A7E - movs r1, #0x2e - ldrsh r0, [r5, r1] - movs r2, #0x2e - ldrsh r1, [r4, r2] - subs r0, r0, r1 - movs r3, #0x32 - ldrsh r1, [r5, r3] - movs r3, #0x32 - ldrsh r2, [r4, r3] - subs r1, r1, r2 - bl sub_080045DA - ldr r3, _08049A88 @ =gSineTable - lsls r1, r0, #1 - adds r1, r1, r3 - movs r2, #0 - ldrsh r1, [r1, r2] - lsls r2, r1, #3 - adds r2, r2, r1 - lsls r2, r2, #0xa - ldr r1, [r4, #0x2c] - adds r1, r1, r2 - str r1, [r5, #0x2c] - adds r0, #0x40 - lsls r0, r0, #1 - adds r0, r0, r3 - movs r3, #0 - ldrsh r0, [r0, r3] - lsls r1, r0, #3 - adds r1, r1, r0 - lsls r1, r1, #0xa - ldr r0, [r4, #0x30] - subs r0, r0, r1 - str r0, [r5, #0x30] -_08049A7E: - movs r0, #0 - strb r0, [r6] -_08049A82: - pop {r4, r5, r6, pc} - .align 2, 0 -_08049A84: .4byte gPlayerEntity -_08049A88: .4byte gSineTable - - thumb_func_start sub_08049A8C -sub_08049A8C: @ 0x08049A8C - push {lr} - ldrb r1, [r0, #0xe] - subs r1, #1 - strb r1, [r0, #0xe] - lsls r1, r1, #0x18 - cmp r1, #0 - bne _08049AAA - bl Random - movs r1, #0xf - ands r1, r0 - cmp r1, #0 - beq _08049AAA - movs r0, #1 - b _08049AAC -_08049AAA: - movs r0, #0 -_08049AAC: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08049AB0 -sub_08049AB0: @ 0x08049AB0 - push {r4, r5, lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xf] - adds r0, #1 - strb r0, [r2, #0xf] - movs r1, #0xff - ands r0, r1 - movs r1, #0xf - ands r0, r1 - cmp r0, #0 - bne _08049B18 - adds r0, r2, #0 - movs r1, #0x48 - movs r2, #0 - bl CreateFx - adds r4, r0, #0 - cmp r4, #0 - beq _08049B18 - bl Random - movs r3, #0x30 - adds r1, r0, #0 - ands r1, r3 - ldr r5, _08049B1C @ =0x0000FFE8 - adds r2, r5, #0 - adds r1, r2, r1 - ldrh r5, [r4, #0x2e] - adds r1, r1, r5 - strh r1, [r4, #0x2e] - lsrs r0, r0, #8 - ands r0, r3 - adds r2, r2, r0 - ldrh r0, [r4, #0x32] - adds r2, r2, r0 - strh r2, [r4, #0x32] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r2] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer -_08049B18: - pop {r4, r5, pc} - .align 2, 0 -_08049B1C: .4byte 0x0000FFE8 - - thumb_func_start sub_08049B20 -sub_08049B20: @ 0x08049B20 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_08049944 - movs r0, #0x2e - ldrsh r5, [r4, r0] - movs r2, #0x32 - ldrsh r6, [r4, r2] - movs r0, #0x24 - ldrsh r1, [r4, r0] - ldrb r2, [r4, #0x15] - adds r0, r4, #0 - bl LinearMoveAngle - adds r0, r4, #0 - adds r0, #0x7c - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08049B68 - bl sub_08079F8C - cmp r0, #0 - beq _08049B68 - ldr r0, _08049B6C @ =gPlayerEntity - ldrh r1, [r4, #0x2e] - subs r1, r1, r5 - ldrh r2, [r0, #0x2e] - adds r1, r1, r2 - strh r1, [r0, #0x2e] - ldrh r1, [r4, #0x32] - subs r1, r1, r6 - ldrh r2, [r0, #0x32] - adds r1, r1, r2 - strh r1, [r0, #0x32] -_08049B68: - pop {r4, r5, r6, pc} - .align 2, 0 -_08049B6C: .4byte gPlayerEntity diff --git a/assets/assets.json b/assets/assets.json index 84d3d877..b1e30e55 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -29130,11 +29130,6 @@ "size": 17, "type": "animation" }, - { - "path": "enemy64/gUnk_080D29B8.bin", - "start": 862648, - "size": 8 - }, { "path": "data_080D3D94/gUnk_080D3D94.bin", "start": 867732, diff --git a/data/const/enemy/enemy64.s b/data/const/enemy/enemy64.s deleted file mode 100644 index 87d0e668..00000000 --- a/data/const/enemy/enemy64.s +++ /dev/null @@ -1,44 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - - -gUnk_080D2974:: @ 080D2974 - .4byte sub_08049100 - .4byte sub_080491EC - .4byte sub_080492A8 - .4byte sub_08049574 - .4byte sub_080496CC - -gUnk_080D2988:: @ 080D2988 - .4byte sub_0804920C - .4byte sub_08049274 - -gUnk_080D2990:: @ 080D2990 - .4byte sub_080492C8 - .4byte sub_08049358 - .4byte sub_080493E4 - .4byte sub_0804945C - .4byte sub_080494D0 - .4byte sub_08049538 - -gUnk_080D29A8:: @ 080D29A8 - .4byte sub_08049594 - .4byte sub_080495F8 - .4byte sub_0804965C - .4byte sub_0804969C - -gUnk_080D29B8:: @ 080D29B8 - .incbin "enemy64/gUnk_080D29B8.bin" - -gUnk_080D29C0:: @ 080D29C0 - .4byte sub_080496EC - .4byte sub_0804972C - .4byte sub_0804975C - .4byte sub_08049788 - .4byte sub_080497D0 - .4byte sub_08049804 - .4byte sub_08049888 - .4byte sub_080498B4 diff --git a/include/enemy.h b/include/enemy.h index 4bbecfec..07bd48cc 100644 --- a/include/enemy.h +++ b/include/enemy.h @@ -232,7 +232,7 @@ void GyorgChild(); void GyorgFemaleEye(); void Enemy62(Entity*); void GyorgFemaleMouth(); -void Enemy64(Entity*); +void Enemy64(); void TreeItem(Entity*); void Enemy66(Entity*); diff --git a/linker.ld b/linker.ld index e2071a6c..b97afccf 100644 --- a/linker.ld +++ b/linker.ld @@ -422,9 +422,9 @@ SECTIONS { src/enemy/vaatiWrathEye.o(.text); src/enemy/gyorgChild.o(.text); src/enemy/gyorgFemaleEye.o(.text); - asm/enemy/enemy62.o(.text); + asm/enemy/enemy62.o(.text); /* TODO gyorgMaleEye? */ src/enemy/gyorgFemaleMouth.o(.text); - asm/enemy/enemy64.o(.text); + src/enemy/enemy64.o(.text); src/enemy/treeItem.o(.text); src/enemy/enemy66.o(.text); /* END enemies */ @@ -1115,7 +1115,7 @@ SECTIONS { data/animations/enemy/enemy62.o(.rodata); src/enemy/gyorgFemaleMouth.o(.rodata); data/animations/enemy/gyorgFemaleMouth.o(.rodata); - data/const/enemy/enemy64.o(.rodata); + src/enemy/enemy64.o(.rodata); src/enemy/treeItem.o(.rodata); src/enemy/enemy66.o(.rodata); src/enemy.o(.rodata); diff --git a/src/enemy/enemy64.c b/src/enemy/enemy64.c new file mode 100644 index 00000000..8fde9fbc --- /dev/null +++ b/src/enemy/enemy64.c @@ -0,0 +1,523 @@ +/** + * @file enemy64.c + * @ingroup Enemies + * + * @brief Enemy64 enemy + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "enemy.h" +#include "functions.h" +#include "fade.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x6]; + /*0x6e*/ u8 unk_6e; + /*0x6f*/ u8 unk_6f[0x5]; + /*0x74*/ s16 unk_74; + /*0x76*/ u16 unk_76; + /*0x78*/ u16 unk_78; + /*0x7a*/ u16 unk_7a; + /*0x7c*/ u8 unk_7c; + /*0x7d*/ u8 unk_7d; + /*0x7e*/ u16 unk_7e; + /*0x80*/ u16 unk_80; + /*0x82*/ u16 unk_82; +} Enemy64Entity; + +extern void sub_08047EA4(Entity*, u32); // gyorgMale + +extern void (*const Enemy64_Actions[])(Enemy64Entity*); +extern void (*const Enemy64_Action1_SubActions[])(Enemy64Entity*); +extern void (*const Enemy64_Action2_SubActions[])(Enemy64Entity*); +extern void (*const Enemy64_Action3_SubActions[])(Enemy64Entity*); +extern const u8 gUnk_080D29B8[]; +extern void (*const Enemy64_Action4_SubActions[])(Enemy64Entity*); + +void sub_080499F0(Enemy64Entity*); +void sub_08049998(Enemy64Entity*, u32); +void Enemy64_Action2_SubAction1(Enemy64Entity*); +void sub_08049944(Enemy64Entity*); +bool32 sub_08049A8C(Enemy64Entity*); +void sub_08049AB0(Enemy64Entity*); +void sub_08049B20(Enemy64Entity*); + +void Enemy64(Enemy64Entity* this) { + if (super->action != 0) { + super->spriteSettings.draw = this->unk_7d; + } + if (super->health == 0) { + super->health = 0xff; + super->action = 4; + super->subAction = 0; + } + Enemy64_Actions[super->action](this); + sub_0805EC9C(super, 0xaa, 0xaa, this->unk_78); + super->animationState = -(this->unk_78 >> 8); + sub_080499F0(this); + this->unk_7d = super->spriteSettings.draw; + if (((super->spriteSettings.draw == 1) && (0x100 < (super->y.HALF.HI - gRoomControls.scroll_y) + 0x30U))) { + super->spriteSettings.draw = 0; + } +} + +void Enemy64_Init(Enemy64Entity* this) { + Entity* tail; + + if (CheckFlags(0x7c)) { + SetTile(0x4081, 10, 2); + SetTile(0x4081, 0x4a, 2); + SetTile(0x4081, 0x8a, 2); + SetTile(0x4081, 0xca, 2); + DeleteThisEntity(); + } else { + sub_0807B7D8(0x323, 10, 1); + sub_0807B7D8(0x323, 0x4a, 1); + sub_0807B7D8(0x323, 0x8a, 1); + sub_0807B7D8(0x323, 0xca, 1); + } + tail = CreateProjectile(GYORG_TAIL); + if (tail != NULL) { + tail->type = 1; + tail->parent = super; + super->child = tail; + super->action = 1; + super->subAction = 0; + super->actionDelay = 0x3c; + super->direction = 0xc0; + super->animationState = 0xc0; + super->speed = 0x300; + super->spriteRendering.b0 = 3; + super->spriteSettings.draw = 1; + super->spriteOrientation.flipY = 2; + super->spriteRendering.b3 = 2; + super->collisionLayer = 2; + this->unk_7c = 0; + this->unk_78 = 0x4000; + this->unk_7a = 0x4000; + InitAnimationForceUpdate(super, 0); + } +} + +void Enemy64_Action1(Enemy64Entity* this) { + Enemy64_Action1_SubActions[super->subAction](this); + UpdateAnimationSingleFrame(super); +} + +void Enemy64_Action1_SubAction0(Enemy64Entity* this) { + if (super->actionDelay != 0) { + super->actionDelay--; + } else { + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); + if ((gRoomControls.origin_x - 0x100) > super->x.HALF.HI) { + super->subAction = 1; + super->direction = 0x80; + super->animationState = 0x80; + super->speed = 0xc0; + super->x.HALF.HI = gRoomControls.origin_x + 0xa8; + super->y.HALF.HI = gRoomControls.origin_y - 0x40; + this->unk_78 = 0x8000; + this->unk_7a = 0x8000; + } + } +} + +void Enemy64_Action1_SubAction1(Enemy64Entity* this) { + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); + if ((gRoomControls.origin_y + 0x40) < super->y.HALF.HI) { + super->action = 2; + super->subAction = 0; + } +} + +void Enemy64_Action2(Enemy64Entity* this) { + Enemy64_Action2_SubActions[super->subAction](this); + UpdateAnimationSingleFrame(super); +} + +void Enemy64_Action2_SubAction0(Enemy64Entity* this) { + u16 uVar1; + u16* puVar2; + + super->subAction = 1; + super->speed = 0x120; + this->unk_6e = 0; + if ((s32)(super->x.HALF.HI - (u32)gRoomControls.origin_x) < 0xa8) { + this->unk_80 = 0xd8; + this->unk_74 = 0x100; + } else { + this->unk_80 = 0x78; + this->unk_74 = 0xff00; + } + this->unk_80 += gRoomControls.origin_x; + if ((s32)(super->y.HALF.HI - (u32)gRoomControls.origin_y) < 0x80) { + this->unk_82 = 0xb0; + } else { + this->unk_82 = 0x50; + this->unk_74 *= -1; + } + this->unk_82 += gRoomControls.origin_y; + Enemy64_Action2_SubAction1(this); +} + +void Enemy64_Action2_SubAction1(Enemy64Entity* this) { + u32 tmp = sub_080045DA(this->unk_80 - super->x.HALF.HI, this->unk_82 - super->y.HALF.HI); + if (4 < (((super->direction - tmp) + 2) & 0xff)) { + if (((tmp - super->direction) & 0x80) != 0) { + super->direction--; + } else { + super->direction++; + } + } + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); + if (EntityWithinDistance(super, this->unk_80, this->unk_82, (super->speed >> 0x10) + 0x10)) { + super->subAction = 2; + super->speed = 0xc0; + this->unk_7e = 0x100; + this->unk_76 = (u16)super->direction << 8; + } +} + +void Enemy64_Action2_SubAction2(Enemy64Entity* this) { + u32 iVar1; + u32 uVar2; + u32 uVar3; + + iVar1 = this->unk_76 += this->unk_74; + uVar2 = iVar1 * 0x10000; + super->direction = (u8)(uVar2 >> 0x18); + if (((uVar2 >> 0x18 & 0x1f) == 0) && + (uVar3 = CalculateDirectionTo(super->x.HALF.HI, super->y.HALF.HI, gRoomControls.origin_x + 0xa8, + gRoomControls.origin_y + 0x80), + ((((uVar3 + 2) & 0x1c) - (super->direction >> 3)) & 0xf) == 8)) { + super->subAction = 4; + super->actionDelay = 0x3c; + super->field_0xf = 7; + } + sub_08049944(this); + sub_08047EA4(super, ((0x100 - super->direction) & 0xff) << 8); +} + +void Enemy64_Action2_SubAction3(Enemy64Entity* this) { + s32 iVar1; + u32 uVar2; + + iVar1 = this->unk_76 += this->unk_74; + uVar2 = iVar1 * 0x10000; + super->direction = (uVar2 >> 0x18); + if (super->actionDelay == 0) { + if ((uVar2 >> 0x18 & 0x1f) == 0) { + super->subAction = 4; + super->actionDelay = 0x5a; + } + } else { + if (sub_08049A8C(this)) { + Entity* projectile = CreateProjectile(GYORG_MALE_ENERGY_PROJECTILE); + if (projectile != NULL) { + projectile->collisionLayer = 2; + projectile->parent = super; + UpdateSpriteForCollisionLayer(projectile); + } + } + } + sub_08049944(this); + sub_08047EA4(super, ((0x100 - super->direction) & 0xff) << 8); +} + +void Enemy64_Action2_SubAction4(Enemy64Entity* this) { + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); + if (--super->actionDelay == 0) { + if (--super->field_0xf == 0) { + super->subAction = 5; + super->speed += 0x40; + } else { + super->subAction = 3; + super->actionDelay = 0xa; + } + } else if (super->actionDelay == 0x50) { + Entity* enemy = CreateEnemy(GYORG_MALE_EYE, Random() & 3); + if (enemy != NULL) { + enemy->parent = super; + } + } +} + +void Enemy64_Action2_SubAction5(Enemy64Entity* this) { + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); + if (EntityWithinDistance(super, gRoomControls.origin_x + 0xa8, gRoomControls.origin_y + 0x80, 0x70) == FALSE) { + super->action = 3; + super->subAction = 0; + } +} + +void Enemy64_Action3(Enemy64Entity* this) { + Enemy64_Action3_SubActions[super->subAction](this); + UpdateAnimationSingleFrame(super); +} + +void Enemy64_Action3_SubAction0(Enemy64Entity* this) { + u32 tmp = sub_080045DA(gRoomControls.origin_x + 0xa8 - super->x.HALF.HI, + gRoomControls.origin_y + 0x80 - super->y.HALF.HI); + if (tmp != super->direction) { + if (((tmp - super->direction) & 0x80) != 0) { + super->direction--; + } else { + super->direction++; + } + } else { + super->subAction = 1; + super->speed = 0x180; + } + sub_08049944(this); + sub_08047EA4(super, ((0x100 - super->direction) & 0xff) << 8); +} + +void Enemy64_Action3_SubAction1(Enemy64Entity* this) { + if (EntityWithinDistance(super, gRoomControls.origin_x + 0xa8, gRoomControls.origin_y + 0x80, 0x28)) { + super->subAction = 2; + super->actionDelay = 0x2d; + this->unk_74 = gUnk_080D29B8[Random() & 7] << 0x18 >> 0x18; + this->unk_76 = super->direction << 8; + } + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); +} + +void Enemy64_Action3_SubAction2(Enemy64Entity* this) { + this->unk_76 += this->unk_74; + super->direction = this->unk_76 >> 8; + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); + if (--super->actionDelay == 0) { + super->subAction = 3; + super->actionDelay = 0x1e; + } +} + +void Enemy64_Action3_SubAction3(Enemy64Entity* this) { + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); + if (--super->actionDelay == 0) { + super->action = 2; + super->subAction = 0; + } +} + +void Enemy64_Action4(Enemy64Entity* this) { + Enemy64_Action4_SubActions[super->subAction](this); + UpdateAnimationSingleFrame(super); +} + +void Enemy64_Action4_SubAction0(Enemy64Entity* this) { + SoundReq(SFX_BOSS_DIE); + if (sub_08079F8C() && gPlayerEntity.z.HALF.HI == 0) { + SetPlayerControl(CONTROL_2); + super->subAction = 2; + super->actionDelay = 0x1e; + } else { + super->subAction = 1; + } + sub_08049944(this); +} + +void Enemy64_Action4_SubAction1(Enemy64Entity* this) { + if (sub_08079F8C() && gPlayerEntity.z.HALF.HI == 0) { + SetPlayerControl(CONTROL_2); + super->subAction = 2; + super->actionDelay = 1; + } + sub_08049944(this); +} + +void Enemy64_Action4_SubAction2(Enemy64Entity* this) { + if (--super->actionDelay == 0) { + super->subAction = 3; + super->actionDelay = 0xb4; + super->speed = 0x100; + super->direction -= 0x40; + } + sub_08049944(this); +} + +void Enemy64_Action4_SubAction3(Enemy64Entity* this) { + sub_08049AB0(this); + if (--super->actionDelay == 0) { + super->actionDelay = 0x1e; + super->subAction = 4; + super->speed = 0x400; + super->direction = super->animationState; + SoundReq(SFX_BOSS_DIE); + } else { + super->direction ^= 0x80; + sub_08049B20(this); + } + sub_08049944(this); +} + +void Enemy64_Action4_SubAction4(Enemy64Entity* this) { + sub_08049AB0(this); + sub_08049998(this, ((0x100 - super->direction) & 0xff) << 8); + if (--super->actionDelay == 0) { + super->subAction = 5; + SetFade(5, 0x10); + } +} + +void Enemy64_Action4_SubAction5(Enemy64Entity* this) { + Entity* entity; + sub_08049944(this); + if (gFadeControl.active == 0) { + super->subAction = 6; + super->spriteSettings.draw = 0; + entity = super->child; + entity->flags &= 0x7f; + entity->spriteSettings.draw = 0; + entity = entity->child; + entity->flags &= 0x7f; + entity->spriteSettings.draw = 0; + entity = entity->child; + entity->flags &= 0x7f; + entity->spriteSettings.draw = 0; + entity = &gPlayerEntity; + entity->x.HALF.HI = gRoomControls.origin_x + 0xa8; + entity->y.HALF.HI = gRoomControls.origin_y + 0x80; + entity->animationState = 0; + sub_080809D4(); + SetFade(4, 4); + } +} + +void Enemy64_Action4_SubAction6(Enemy64Entity* this) { + if (gFadeControl.active == 0) { + super->subAction = 7; + super->actionDelay = 0xa0; + SoundReq(SFX_SECRET); + SetFlag(0x7c); + SetPlayerControl(CONTROL_1); + } +} + +void Enemy64_Action4_SubAction7(Enemy64Entity* this) { + if (--super->actionDelay == 0) { + DeleteThisEntity(); + } else if (super->actionDelay == 0x10) { + sub_0807B7D8(0x36, 0xca, 1); + SetTile(0x4081, 0xca, 2); + SoundReq(SFX_HEART_GET); + } else if (super->actionDelay == 0x18) { + sub_0807B7D8(0x36, 0x8a, 1); + SetTile(0x4081, 0x8a, 2); + SoundReq(SFX_HEART_GET); + } else if (super->actionDelay == 0x20) { + sub_0807B7D8(0x36, 0x4a, 1); + SetTile(0x4081, 0x4a, 2); + SoundReq(SFX_HEART_GET); + } else if (super->actionDelay == 0x28) { + sub_0807B7D8(0x36, 10, 1); + SetTile(0x4081, 10, 2); + SoundReq(SFX_HEART_GET); + } +} + +void sub_08049944(Enemy64Entity* this) { + this->unk_7c = (this->unk_7c << 1 & 0x7f) | (this->unk_7c & 0x80); + if (EntityWithinDistance(super, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x20)) { + gPlayerState.field_0x14 = 1; + if (gPlayerEntity.z.HALF.HI == 0) { + gPlayerState.flags |= 2; + this->unk_7c |= 1; + } + } +} + +void sub_08049998(Enemy64Entity* this, u32 param_2) { + s32 tmpX; + s32 tmpY; + + sub_08049944(this); + sub_08047EA4(super, param_2); + tmpX = super->x.HALF.HI; + tmpY = super->y.HALF.HI; + LinearMoveAngle(super, super->speed, super->direction); + if (((this->unk_7c & 1) != 0) && sub_08079F8C()) { + gPlayerEntity.x.HALF.HI = (super->x.HALF.HI - tmpX) + gPlayerEntity.x.HALF.HI; + gPlayerEntity.y.HALF.HI = (super->y.HALF.HI - tmpY) + gPlayerEntity.y.HALF.HI; + } +} + +void sub_080499F0(Enemy64Entity* this) { + u32 tmp; + + if ((((super->action != 0) && (gPlayerEntity.z.HALF.HI == 0)) && (sub_08079F8C())) && ((this->unk_7c & 1) == 0)) { + if (EntityWithinDistance(&gPlayerEntity, super->x.HALF.HI, super->y.HALF.HI, 0x24) && + ((this->unk_7c & 2) == 0)) { + tmp = sub_080045DA((s32)gPlayerEntity.x.HALF.HI - super->x.HALF.HI, + (s32)gPlayerEntity.y.HALF.HI - super->y.HALF.HI); + gPlayerEntity.x.WORD = super->x.WORD + gSineTable[tmp] * 0x2400; + gPlayerEntity.y.WORD = super->y.WORD + gSineTable[tmp + 0x40] * -0x2400; + } + this->unk_7c = 0; + } +} + +bool32 sub_08049A8C(Enemy64Entity* this) { + if (--super->actionDelay == 0 && (Random() & 0xf) != 0) { + return TRUE; + } else { + return FALSE; + } +} + +void sub_08049AB0(Enemy64Entity* this) { + u32 rand; + + if ((++super->field_0xf & 0xf) == 0) { + Entity* effect = CreateFx(super, FX_GIANT_EXPLOSION3, 0); + if (effect != NULL) { + rand = Random(); + effect->x.HALF.HI += ((rand & 0x30) - 0x18); + effect->y.HALF.HI += (((rand >> 8) & 0x30) - 0x18); + effect->spritePriority.b0 = 3; + effect->collisionLayer = 2; + UpdateSpriteForCollisionLayer(effect); + } + } +} + +void sub_08049B20(Enemy64Entity* this) { + s32 tmpX; + s32 tmpY; + + sub_08049944(this); + tmpX = super->x.HALF.HI; + tmpY = super->y.HALF.HI; + LinearMoveAngle(super, super->speed, super->direction); + if (((this->unk_7c & 1) != 0) && sub_08079F8C()) { + gPlayerEntity.x.HALF.HI = (super->x.HALF.HI - tmpX) + gPlayerEntity.x.HALF.HI; + gPlayerEntity.y.HALF.HI = (super->y.HALF.HI - tmpY) + gPlayerEntity.y.HALF.HI; + } +} + +void (*const Enemy64_Actions[])(Enemy64Entity*) = { + Enemy64_Init, Enemy64_Action1, Enemy64_Action2, Enemy64_Action3, Enemy64_Action4, +}; +void (*const Enemy64_Action1_SubActions[])(Enemy64Entity*) = { + Enemy64_Action1_SubAction0, + Enemy64_Action1_SubAction1, +}; +void (*const Enemy64_Action2_SubActions[])(Enemy64Entity*) = { + Enemy64_Action2_SubAction0, Enemy64_Action2_SubAction1, Enemy64_Action2_SubAction2, + Enemy64_Action2_SubAction3, Enemy64_Action2_SubAction4, Enemy64_Action2_SubAction5, +}; +void (*const Enemy64_Action3_SubActions[])(Enemy64Entity*) = { + Enemy64_Action3_SubAction0, + Enemy64_Action3_SubAction1, + Enemy64_Action3_SubAction2, + Enemy64_Action3_SubAction3, +}; +const u8 gUnk_080D29B8[] = { + 144, 112, 56, 200, 0, 0, 0, 0, +}; +void (*const Enemy64_Action4_SubActions[])(Enemy64Entity*) = { + Enemy64_Action4_SubAction0, Enemy64_Action4_SubAction1, Enemy64_Action4_SubAction2, Enemy64_Action4_SubAction3, + Enemy64_Action4_SubAction4, Enemy64_Action4_SubAction5, Enemy64_Action4_SubAction6, Enemy64_Action4_SubAction7, +}; From 192419c7addfe4f91aefb8fdcfd39a03e5ac87bb Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Sat, 5 Feb 2022 13:07:26 +0100 Subject: [PATCH 2/2] Decompile Enemy62 --- asm/enemy/enemy62.s | 272 --------------------------- assets/assets.json | 138 +++++++------- data/animations/enemy/enemy62.s | 264 -------------------------- data/animations/enemy/gyorgMaleEye.s | 264 ++++++++++++++++++++++++++ data/const/enemy/enemy62.s | 25 --- data/gfx/sprite_ptrs.s | 2 +- include/enemy.h | 4 +- linker.ld | 6 +- src/enemy.c | 2 +- src/enemy/gyorgMale.c | 6 +- src/enemy/gyorgMaleEye.c | 137 ++++++++++++++ 11 files changed, 475 insertions(+), 645 deletions(-) delete mode 100644 asm/enemy/enemy62.s delete mode 100644 data/animations/enemy/enemy62.s create mode 100644 data/animations/enemy/gyorgMaleEye.s delete mode 100644 data/const/enemy/enemy62.s create mode 100644 src/enemy/gyorgMaleEye.c diff --git a/asm/enemy/enemy62.s b/asm/enemy/enemy62.s deleted file mode 100644 index 17c90185..00000000 --- a/asm/enemy/enemy62.s +++ /dev/null @@ -1,272 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Enemy62 -Enemy62: @ 0x08048D98 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldr r6, [r5, #0x50] - ldr r0, [r6, #4] - cmp r0, #0 - bne _08048DA8 - bl DeleteThisEntity -_08048DA8: - ldr r4, _08048E00 @ =gUnk_080D22D8 - adds r0, r5, #0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - ldrb r2, [r6, #0x1b] - lsrs r2, r2, #6 - lsls r2, r2, #6 - ldrb r3, [r5, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r5, #0x1b] - ldrb r0, [r6, #0x19] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r2, [r5, #0x19] - ands r1, r2 - orrs r1, r0 - strb r1, [r5, #0x19] - adds r0, r6, #0 - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - lsrs r1, r1, #0x1d - subs r1, #1 - adds r3, r5, #0 - adds r3, #0x29 - movs r0, #7 - ands r1, r0 - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - pop {r4, r5, r6, pc} - .align 2, 0 -_08048E00: .4byte gUnk_080D22D8 - - thumb_func_start sub_08048E04 -sub_08048E04: @ 0x08048E04 - push {lr} - ldr r2, _08048E18 @ =gUnk_080D22F0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08048E18: .4byte gUnk_080D22F0 - - thumb_func_start sub_08048E1C -sub_08048E1C: @ 0x08048E1C - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x45 - ldrb r1, [r0] - movs r0, #0xff - subs r0, r0, r1 - cmp r0, #0 - beq _08048E96 - ldr r4, [r5, #0x50] - adds r1, r4, #0 - adds r1, #0x45 - ldrb r2, [r1] - cmp r2, r0 - bls _08048E48 - subs r0, r2, r0 - strb r0, [r1] - ldr r0, _08048E44 @ =0x00000127 - bl SoundReq - b _08048E5C - .align 2, 0 -_08048E44: .4byte 0x00000127 -_08048E48: - movs r0, #0 - strb r0, [r1] - movs r0, #0x94 - lsls r0, r0, #1 - bl SoundReq - movs r0, #0x28 - movs r1, #0 - bl InitScreenShake -_08048E5C: - adds r2, r5, #0 - adds r2, #0x3d - ldrb r1, [r2] - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - ble _08048E8E - adds r0, r4, #0 - adds r0, #0x3d - strb r1, [r0] - ldr r4, [r4, #0x54] - ldrb r0, [r2] - adds r1, r4, #0 - adds r1, #0x3d - strb r0, [r1] - ldr r4, [r4, #0x54] - ldrb r0, [r2] - adds r1, r4, #0 - adds r1, #0x3d - strb r0, [r1] - ldr r4, [r4, #0x54] - ldrb r1, [r2] - adds r0, r4, #0 - adds r0, #0x3d - strb r1, [r0] -_08048E8E: - adds r1, r5, #0 - adds r1, #0x45 - movs r0, #0xff - strb r0, [r1] -_08048E96: - ldr r1, _08048EA0 @ =gUnk_080D22D8 - adds r0, r5, #0 - bl sub_0804AA30 - pop {r4, r5, pc} - .align 2, 0 -_08048EA0: .4byte gUnk_080D22D8 - - thumb_func_start sub_08048EA4 -sub_08048EA4: @ 0x08048EA4 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r0, [r4, #0x50] - ldrb r1, [r0, #0x14] - movs r0, #0xe0 - ands r0, r1 - lsrs r0, r0, #3 - ldrb r1, [r4, #0xa] - adds r0, r0, r1 - adds r1, r4, #0 - adds r1, #0x78 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08048F50 - adds r0, r4, #0 - bl sub_08048F74 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08048ED0 -sub_08048ED0: @ 0x08048ED0 - push {r4, lr} - adds r4, r0, #0 - bl sub_08048F50 - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08048EFC - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - movs r0, #0x2d - strb r0, [r4, #0xe] -_08048EFC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08048F00 -sub_08048F00: @ 0x08048F00 - push {r4, lr} - adds r4, r0, #0 - bl sub_08048F50 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08048F2E - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation -_08048F2E: - pop {r4, pc} - - thumb_func_start sub_08048F30 -sub_08048F30: @ 0x08048F30 - push {r4, lr} - adds r4, r0, #0 - bl sub_08048F50 - adds r0, r4, #0 - bl GetNextFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08048F4E - bl DeleteThisEntity -_08048F4E: - pop {r4, pc} - - thumb_func_start sub_08048F50 -sub_08048F50: @ 0x08048F50 - push {lr} - adds r1, r0, #0 - adds r0, #0x78 - ldrb r3, [r0] - lsls r3, r3, #1 - ldr r0, _08048F70 @ =gUnk_080D2300 - adds r3, r3, r0 - ldr r0, [r1, #0x50] - movs r2, #0 - ldrsb r2, [r3, r2] - ldrb r3, [r3, #1] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - bl sub_0806FA90 - pop {pc} - .align 2, 0 -_08048F70: .4byte gUnk_080D2300 - - thumb_func_start sub_08048F74 -sub_08048F74: @ 0x08048F74 - push {lr} - ldr r2, _08048F88 @ =gUnk_080D2348 - adds r1, r0, #0 - adds r1, #0x78 - ldrb r1, [r1] - adds r1, r1, r2 - ldrb r1, [r1] - bl InitializeAnimation - pop {pc} - .align 2, 0 -_08048F88: .4byte gUnk_080D2348 diff --git a/assets/assets.json b/assets/assets.json index b1e30e55..76f05644 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -28713,399 +28713,389 @@ "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_0.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_0.bin", "start": 861032, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_1.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_1.bin", "start": 861049, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_2.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_2.bin", "start": 861066, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_3.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_3.bin", "start": 861083, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_4.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_4.bin", "start": 861100, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_5.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_5.bin", "start": 861117, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_6.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_6.bin", "start": 861134, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_7.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_7.bin", "start": 861151, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_8.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_8.bin", "start": 861168, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_9.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_9.bin", "start": 861185, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_10.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_10.bin", "start": 861202, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_11.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_11.bin", "start": 861219, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_12.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_12.bin", "start": 861236, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_13.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_13.bin", "start": 861253, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_14.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_14.bin", "start": 861270, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_15.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_15.bin", "start": 861287, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_16.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_16.bin", "start": 861304, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_17.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_17.bin", "start": 861321, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_18.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_18.bin", "start": 861338, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_19.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_19.bin", "start": 861355, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_20.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_20.bin", "start": 861372, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_21.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_21.bin", "start": 861389, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_22.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_22.bin", "start": 861406, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_23.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_23.bin", "start": 861423, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_24.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_24.bin", "start": 861440, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_25.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_25.bin", "start": 861457, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_26.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_26.bin", "start": 861474, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_27.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_27.bin", "start": 861491, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_28.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_28.bin", "start": 861508, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_29.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_29.bin", "start": 861525, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_30.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_30.bin", "start": 861542, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_31.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_31.bin", "start": 861559, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_32.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_32.bin", "start": 861576, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_33.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_33.bin", "start": 861593, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_34.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_34.bin", "start": 861610, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_35.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_35.bin", "start": 861627, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_36.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_36.bin", "start": 861644, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_37.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_37.bin", "start": 861661, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_38.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_38.bin", "start": 861678, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_39.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_39.bin", "start": 861695, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_40.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_40.bin", "start": 861712, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_41.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_41.bin", "start": 861729, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_42.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_42.bin", "start": 861746, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_43.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_43.bin", "start": 861763, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_44.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_44.bin", "start": 861780, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_45.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_45.bin", "start": 861797, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_46.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_46.bin", "start": 861814, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_47.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_47.bin", "start": 861831, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_48.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_48.bin", "start": 861848, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_49.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_49.bin", "start": 861865, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_50.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_50.bin", "start": 861882, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_51.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_51.bin", "start": 861899, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_52.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_52.bin", "start": 861916, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_53.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_53.bin", "start": 861933, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_54.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_54.bin", "start": 861950, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_55.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_55.bin", "start": 861967, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_56.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_56.bin", "start": 861984, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_57.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_57.bin", "start": 862001, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_58.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_58.bin", "start": 862018, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_59.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_59.bin", "start": 862035, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_60.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_60.bin", "start": 862052, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_61.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_61.bin", "start": 862069, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_62.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_62.bin", "start": 862086, "size": 17, "type": "animation" }, { - "path": "animations/gSpriteAnimations_Enemy62_63.bin", + "path": "animations/gSpriteAnimations_GyorgMaleEye_63.bin", "start": 862103, "size": 17, "type": "animation" }, - { - "path": "enemy62/gUnk_080D2300.bin", - "start": 860928, - "size": 72 - }, - { - "path": "enemy62/gUnk_080D2348.bin", - "start": 861000, - "size": 32 - }, { "path": "animations/gSpriteAnimations_GyorgFemaleMouth_0.bin", "start": 862492, diff --git a/data/animations/enemy/enemy62.s b/data/animations/enemy/enemy62.s deleted file mode 100644 index 729d7ac0..00000000 --- a/data/animations/enemy/enemy62.s +++ /dev/null @@ -1,264 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gSpriteAnimations_Enemy62_0:: @ 080D2368 - .include "animations/gSpriteAnimations_Enemy62_0.s" - -gSpriteAnimations_Enemy62_1:: @ 080D2379 - .include "animations/gSpriteAnimations_Enemy62_1.s" - -gSpriteAnimations_Enemy62_2:: @ 080D238A - .include "animations/gSpriteAnimations_Enemy62_2.s" - -gSpriteAnimations_Enemy62_3:: @ 080D239B - .include "animations/gSpriteAnimations_Enemy62_3.s" - -gSpriteAnimations_Enemy62_4:: @ 080D23AC - .include "animations/gSpriteAnimations_Enemy62_4.s" - -gSpriteAnimations_Enemy62_5:: @ 080D23BD - .include "animations/gSpriteAnimations_Enemy62_5.s" - -gSpriteAnimations_Enemy62_6:: @ 080D23CE - .include "animations/gSpriteAnimations_Enemy62_6.s" - -gSpriteAnimations_Enemy62_7:: @ 080D23DF - .include "animations/gSpriteAnimations_Enemy62_7.s" - -gSpriteAnimations_Enemy62_8:: @ 080D23F0 - .include "animations/gSpriteAnimations_Enemy62_8.s" - -gSpriteAnimations_Enemy62_9:: @ 080D2401 - .include "animations/gSpriteAnimations_Enemy62_9.s" - -gSpriteAnimations_Enemy62_10:: @ 080D2412 - .include "animations/gSpriteAnimations_Enemy62_10.s" - -gSpriteAnimations_Enemy62_11:: @ 080D2423 - .include "animations/gSpriteAnimations_Enemy62_11.s" - -gSpriteAnimations_Enemy62_12:: @ 080D2434 - .include "animations/gSpriteAnimations_Enemy62_12.s" - -gSpriteAnimations_Enemy62_13:: @ 080D2445 - .include "animations/gSpriteAnimations_Enemy62_13.s" - -gSpriteAnimations_Enemy62_14:: @ 080D2456 - .include "animations/gSpriteAnimations_Enemy62_14.s" - -gSpriteAnimations_Enemy62_15:: @ 080D2467 - .include "animations/gSpriteAnimations_Enemy62_15.s" - -gSpriteAnimations_Enemy62_16:: @ 080D2478 - .include "animations/gSpriteAnimations_Enemy62_16.s" - -gSpriteAnimations_Enemy62_17:: @ 080D2489 - .include "animations/gSpriteAnimations_Enemy62_17.s" - -gSpriteAnimations_Enemy62_18:: @ 080D249A - .include "animations/gSpriteAnimations_Enemy62_18.s" - -gSpriteAnimations_Enemy62_19:: @ 080D24AB - .include "animations/gSpriteAnimations_Enemy62_19.s" - -gSpriteAnimations_Enemy62_20:: @ 080D24BC - .include "animations/gSpriteAnimations_Enemy62_20.s" - -gSpriteAnimations_Enemy62_21:: @ 080D24CD - .include "animations/gSpriteAnimations_Enemy62_21.s" - -gSpriteAnimations_Enemy62_22:: @ 080D24DE - .include "animations/gSpriteAnimations_Enemy62_22.s" - -gSpriteAnimations_Enemy62_23:: @ 080D24EF - .include "animations/gSpriteAnimations_Enemy62_23.s" - -gSpriteAnimations_Enemy62_24:: @ 080D2500 - .include "animations/gSpriteAnimations_Enemy62_24.s" - -gSpriteAnimations_Enemy62_25:: @ 080D2511 - .include "animations/gSpriteAnimations_Enemy62_25.s" - -gSpriteAnimations_Enemy62_26:: @ 080D2522 - .include "animations/gSpriteAnimations_Enemy62_26.s" - -gSpriteAnimations_Enemy62_27:: @ 080D2533 - .include "animations/gSpriteAnimations_Enemy62_27.s" - -gSpriteAnimations_Enemy62_28:: @ 080D2544 - .include "animations/gSpriteAnimations_Enemy62_28.s" - -gSpriteAnimations_Enemy62_29:: @ 080D2555 - .include "animations/gSpriteAnimations_Enemy62_29.s" - -gSpriteAnimations_Enemy62_30:: @ 080D2566 - .include "animations/gSpriteAnimations_Enemy62_30.s" - -gSpriteAnimations_Enemy62_31:: @ 080D2577 - .include "animations/gSpriteAnimations_Enemy62_31.s" - -gSpriteAnimations_Enemy62_32:: @ 080D2588 - .include "animations/gSpriteAnimations_Enemy62_32.s" - -gSpriteAnimations_Enemy62_33:: @ 080D2599 - .include "animations/gSpriteAnimations_Enemy62_33.s" - -gSpriteAnimations_Enemy62_34:: @ 080D25AA - .include "animations/gSpriteAnimations_Enemy62_34.s" - -gSpriteAnimations_Enemy62_35:: @ 080D25BB - .include "animations/gSpriteAnimations_Enemy62_35.s" - -gSpriteAnimations_Enemy62_36:: @ 080D25CC - .include "animations/gSpriteAnimations_Enemy62_36.s" - -gSpriteAnimations_Enemy62_37:: @ 080D25DD - .include "animations/gSpriteAnimations_Enemy62_37.s" - -gSpriteAnimations_Enemy62_38:: @ 080D25EE - .include "animations/gSpriteAnimations_Enemy62_38.s" - -gSpriteAnimations_Enemy62_39:: @ 080D25FF - .include "animations/gSpriteAnimations_Enemy62_39.s" - -gSpriteAnimations_Enemy62_40:: @ 080D2610 - .include "animations/gSpriteAnimations_Enemy62_40.s" - -gSpriteAnimations_Enemy62_41:: @ 080D2621 - .include "animations/gSpriteAnimations_Enemy62_41.s" - -gSpriteAnimations_Enemy62_42:: @ 080D2632 - .include "animations/gSpriteAnimations_Enemy62_42.s" - -gSpriteAnimations_Enemy62_43:: @ 080D2643 - .include "animations/gSpriteAnimations_Enemy62_43.s" - -gSpriteAnimations_Enemy62_44:: @ 080D2654 - .include "animations/gSpriteAnimations_Enemy62_44.s" - -gSpriteAnimations_Enemy62_45:: @ 080D2665 - .include "animations/gSpriteAnimations_Enemy62_45.s" - -gSpriteAnimations_Enemy62_46:: @ 080D2676 - .include "animations/gSpriteAnimations_Enemy62_46.s" - -gSpriteAnimations_Enemy62_47:: @ 080D2687 - .include "animations/gSpriteAnimations_Enemy62_47.s" - -gSpriteAnimations_Enemy62_48:: @ 080D2698 - .include "animations/gSpriteAnimations_Enemy62_48.s" - -gSpriteAnimations_Enemy62_49:: @ 080D26A9 - .include "animations/gSpriteAnimations_Enemy62_49.s" - -gSpriteAnimations_Enemy62_50:: @ 080D26BA - .include "animations/gSpriteAnimations_Enemy62_50.s" - -gSpriteAnimations_Enemy62_51:: @ 080D26CB - .include "animations/gSpriteAnimations_Enemy62_51.s" - -gSpriteAnimations_Enemy62_52:: @ 080D26DC - .include "animations/gSpriteAnimations_Enemy62_52.s" - -gSpriteAnimations_Enemy62_53:: @ 080D26ED - .include "animations/gSpriteAnimations_Enemy62_53.s" - -gSpriteAnimations_Enemy62_54:: @ 080D26FE - .include "animations/gSpriteAnimations_Enemy62_54.s" - -gSpriteAnimations_Enemy62_55:: @ 080D270F - .include "animations/gSpriteAnimations_Enemy62_55.s" - -gSpriteAnimations_Enemy62_56:: @ 080D2720 - .include "animations/gSpriteAnimations_Enemy62_56.s" - -gSpriteAnimations_Enemy62_57:: @ 080D2731 - .include "animations/gSpriteAnimations_Enemy62_57.s" - -gSpriteAnimations_Enemy62_58:: @ 080D2742 - .include "animations/gSpriteAnimations_Enemy62_58.s" - -gSpriteAnimations_Enemy62_59:: @ 080D2753 - .include "animations/gSpriteAnimations_Enemy62_59.s" - -gSpriteAnimations_Enemy62_60:: @ 080D2764 - .include "animations/gSpriteAnimations_Enemy62_60.s" - -gSpriteAnimations_Enemy62_61:: @ 080D2775 - .include "animations/gSpriteAnimations_Enemy62_61.s" - -gSpriteAnimations_Enemy62_62:: @ 080D2786 - .include "animations/gSpriteAnimations_Enemy62_62.s" - -gSpriteAnimations_Enemy62_63:: @ 080D2797 - .include "animations/gSpriteAnimations_Enemy62_63.s" - -gSpriteAnimations_Enemy62:: @ 080D27A8 - .4byte gSpriteAnimations_Enemy62_0 - .4byte gSpriteAnimations_Enemy62_1 - .4byte gSpriteAnimations_Enemy62_2 - .4byte gSpriteAnimations_Enemy62_3 - .4byte gSpriteAnimations_Enemy62_4 - .4byte gSpriteAnimations_Enemy62_5 - .4byte gSpriteAnimations_Enemy62_6 - .4byte gSpriteAnimations_Enemy62_7 - .4byte gSpriteAnimations_Enemy62_8 - .4byte gSpriteAnimations_Enemy62_9 - .4byte gSpriteAnimations_Enemy62_10 - .4byte gSpriteAnimations_Enemy62_11 - .4byte gSpriteAnimations_Enemy62_12 - .4byte gSpriteAnimations_Enemy62_13 - .4byte gSpriteAnimations_Enemy62_14 - .4byte gSpriteAnimations_Enemy62_15 - .4byte gSpriteAnimations_Enemy62_16 - .4byte gSpriteAnimations_Enemy62_17 - .4byte gSpriteAnimations_Enemy62_18 - .4byte gSpriteAnimations_Enemy62_19 - .4byte gSpriteAnimations_Enemy62_20 - .4byte gSpriteAnimations_Enemy62_21 - .4byte gSpriteAnimations_Enemy62_22 - .4byte gSpriteAnimations_Enemy62_23 - .4byte gSpriteAnimations_Enemy62_24 - .4byte gSpriteAnimations_Enemy62_25 - .4byte gSpriteAnimations_Enemy62_26 - .4byte gSpriteAnimations_Enemy62_27 - .4byte gSpriteAnimations_Enemy62_28 - .4byte gSpriteAnimations_Enemy62_29 - .4byte gSpriteAnimations_Enemy62_30 - .4byte gSpriteAnimations_Enemy62_31 - .4byte gSpriteAnimations_Enemy62_32 - .4byte gSpriteAnimations_Enemy62_33 - .4byte gSpriteAnimations_Enemy62_34 - .4byte gSpriteAnimations_Enemy62_35 - .4byte gSpriteAnimations_Enemy62_36 - .4byte gSpriteAnimations_Enemy62_37 - .4byte gSpriteAnimations_Enemy62_38 - .4byte gSpriteAnimations_Enemy62_39 - .4byte gSpriteAnimations_Enemy62_40 - .4byte gSpriteAnimations_Enemy62_41 - .4byte gSpriteAnimations_Enemy62_42 - .4byte gSpriteAnimations_Enemy62_43 - .4byte gSpriteAnimations_Enemy62_44 - .4byte gSpriteAnimations_Enemy62_45 - .4byte gSpriteAnimations_Enemy62_46 - .4byte gSpriteAnimations_Enemy62_47 - .4byte gSpriteAnimations_Enemy62_48 - .4byte gSpriteAnimations_Enemy62_49 - .4byte gSpriteAnimations_Enemy62_50 - .4byte gSpriteAnimations_Enemy62_51 - .4byte gSpriteAnimations_Enemy62_52 - .4byte gSpriteAnimations_Enemy62_53 - .4byte gSpriteAnimations_Enemy62_54 - .4byte gSpriteAnimations_Enemy62_55 - .4byte gSpriteAnimations_Enemy62_56 - .4byte gSpriteAnimations_Enemy62_57 - .4byte gSpriteAnimations_Enemy62_58 - .4byte gSpriteAnimations_Enemy62_59 - .4byte gSpriteAnimations_Enemy62_60 - .4byte gSpriteAnimations_Enemy62_61 - .4byte gSpriteAnimations_Enemy62_62 - .4byte gSpriteAnimations_Enemy62_63 - .4byte 00000000 diff --git a/data/animations/enemy/gyorgMaleEye.s b/data/animations/enemy/gyorgMaleEye.s new file mode 100644 index 00000000..b344a923 --- /dev/null +++ b/data/animations/enemy/gyorgMaleEye.s @@ -0,0 +1,264 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 + +gSpriteAnimations_GyorgMaleEye_0:: @ 080D2368 + .include "animations/gSpriteAnimations_GyorgMaleEye_0.s" + +gSpriteAnimations_GyorgMaleEye_1:: @ 080D2379 + .include "animations/gSpriteAnimations_GyorgMaleEye_1.s" + +gSpriteAnimations_GyorgMaleEye_2:: @ 080D238A + .include "animations/gSpriteAnimations_GyorgMaleEye_2.s" + +gSpriteAnimations_GyorgMaleEye_3:: @ 080D239B + .include "animations/gSpriteAnimations_GyorgMaleEye_3.s" + +gSpriteAnimations_GyorgMaleEye_4:: @ 080D23AC + .include "animations/gSpriteAnimations_GyorgMaleEye_4.s" + +gSpriteAnimations_GyorgMaleEye_5:: @ 080D23BD + .include "animations/gSpriteAnimations_GyorgMaleEye_5.s" + +gSpriteAnimations_GyorgMaleEye_6:: @ 080D23CE + .include "animations/gSpriteAnimations_GyorgMaleEye_6.s" + +gSpriteAnimations_GyorgMaleEye_7:: @ 080D23DF + .include "animations/gSpriteAnimations_GyorgMaleEye_7.s" + +gSpriteAnimations_GyorgMaleEye_8:: @ 080D23F0 + .include "animations/gSpriteAnimations_GyorgMaleEye_8.s" + +gSpriteAnimations_GyorgMaleEye_9:: @ 080D2401 + .include "animations/gSpriteAnimations_GyorgMaleEye_9.s" + +gSpriteAnimations_GyorgMaleEye_10:: @ 080D2412 + .include "animations/gSpriteAnimations_GyorgMaleEye_10.s" + +gSpriteAnimations_GyorgMaleEye_11:: @ 080D2423 + .include "animations/gSpriteAnimations_GyorgMaleEye_11.s" + +gSpriteAnimations_GyorgMaleEye_12:: @ 080D2434 + .include "animations/gSpriteAnimations_GyorgMaleEye_12.s" + +gSpriteAnimations_GyorgMaleEye_13:: @ 080D2445 + .include "animations/gSpriteAnimations_GyorgMaleEye_13.s" + +gSpriteAnimations_GyorgMaleEye_14:: @ 080D2456 + .include "animations/gSpriteAnimations_GyorgMaleEye_14.s" + +gSpriteAnimations_GyorgMaleEye_15:: @ 080D2467 + .include "animations/gSpriteAnimations_GyorgMaleEye_15.s" + +gSpriteAnimations_GyorgMaleEye_16:: @ 080D2478 + .include "animations/gSpriteAnimations_GyorgMaleEye_16.s" + +gSpriteAnimations_GyorgMaleEye_17:: @ 080D2489 + .include "animations/gSpriteAnimations_GyorgMaleEye_17.s" + +gSpriteAnimations_GyorgMaleEye_18:: @ 080D249A + .include "animations/gSpriteAnimations_GyorgMaleEye_18.s" + +gSpriteAnimations_GyorgMaleEye_19:: @ 080D24AB + .include "animations/gSpriteAnimations_GyorgMaleEye_19.s" + +gSpriteAnimations_GyorgMaleEye_20:: @ 080D24BC + .include "animations/gSpriteAnimations_GyorgMaleEye_20.s" + +gSpriteAnimations_GyorgMaleEye_21:: @ 080D24CD + .include "animations/gSpriteAnimations_GyorgMaleEye_21.s" + +gSpriteAnimations_GyorgMaleEye_22:: @ 080D24DE + .include "animations/gSpriteAnimations_GyorgMaleEye_22.s" + +gSpriteAnimations_GyorgMaleEye_23:: @ 080D24EF + .include "animations/gSpriteAnimations_GyorgMaleEye_23.s" + +gSpriteAnimations_GyorgMaleEye_24:: @ 080D2500 + .include "animations/gSpriteAnimations_GyorgMaleEye_24.s" + +gSpriteAnimations_GyorgMaleEye_25:: @ 080D2511 + .include "animations/gSpriteAnimations_GyorgMaleEye_25.s" + +gSpriteAnimations_GyorgMaleEye_26:: @ 080D2522 + .include "animations/gSpriteAnimations_GyorgMaleEye_26.s" + +gSpriteAnimations_GyorgMaleEye_27:: @ 080D2533 + .include "animations/gSpriteAnimations_GyorgMaleEye_27.s" + +gSpriteAnimations_GyorgMaleEye_28:: @ 080D2544 + .include "animations/gSpriteAnimations_GyorgMaleEye_28.s" + +gSpriteAnimations_GyorgMaleEye_29:: @ 080D2555 + .include "animations/gSpriteAnimations_GyorgMaleEye_29.s" + +gSpriteAnimations_GyorgMaleEye_30:: @ 080D2566 + .include "animations/gSpriteAnimations_GyorgMaleEye_30.s" + +gSpriteAnimations_GyorgMaleEye_31:: @ 080D2577 + .include "animations/gSpriteAnimations_GyorgMaleEye_31.s" + +gSpriteAnimations_GyorgMaleEye_32:: @ 080D2588 + .include "animations/gSpriteAnimations_GyorgMaleEye_32.s" + +gSpriteAnimations_GyorgMaleEye_33:: @ 080D2599 + .include "animations/gSpriteAnimations_GyorgMaleEye_33.s" + +gSpriteAnimations_GyorgMaleEye_34:: @ 080D25AA + .include "animations/gSpriteAnimations_GyorgMaleEye_34.s" + +gSpriteAnimations_GyorgMaleEye_35:: @ 080D25BB + .include "animations/gSpriteAnimations_GyorgMaleEye_35.s" + +gSpriteAnimations_GyorgMaleEye_36:: @ 080D25CC + .include "animations/gSpriteAnimations_GyorgMaleEye_36.s" + +gSpriteAnimations_GyorgMaleEye_37:: @ 080D25DD + .include "animations/gSpriteAnimations_GyorgMaleEye_37.s" + +gSpriteAnimations_GyorgMaleEye_38:: @ 080D25EE + .include "animations/gSpriteAnimations_GyorgMaleEye_38.s" + +gSpriteAnimations_GyorgMaleEye_39:: @ 080D25FF + .include "animations/gSpriteAnimations_GyorgMaleEye_39.s" + +gSpriteAnimations_GyorgMaleEye_40:: @ 080D2610 + .include "animations/gSpriteAnimations_GyorgMaleEye_40.s" + +gSpriteAnimations_GyorgMaleEye_41:: @ 080D2621 + .include "animations/gSpriteAnimations_GyorgMaleEye_41.s" + +gSpriteAnimations_GyorgMaleEye_42:: @ 080D2632 + .include "animations/gSpriteAnimations_GyorgMaleEye_42.s" + +gSpriteAnimations_GyorgMaleEye_43:: @ 080D2643 + .include "animations/gSpriteAnimations_GyorgMaleEye_43.s" + +gSpriteAnimations_GyorgMaleEye_44:: @ 080D2654 + .include "animations/gSpriteAnimations_GyorgMaleEye_44.s" + +gSpriteAnimations_GyorgMaleEye_45:: @ 080D2665 + .include "animations/gSpriteAnimations_GyorgMaleEye_45.s" + +gSpriteAnimations_GyorgMaleEye_46:: @ 080D2676 + .include "animations/gSpriteAnimations_GyorgMaleEye_46.s" + +gSpriteAnimations_GyorgMaleEye_47:: @ 080D2687 + .include "animations/gSpriteAnimations_GyorgMaleEye_47.s" + +gSpriteAnimations_GyorgMaleEye_48:: @ 080D2698 + .include "animations/gSpriteAnimations_GyorgMaleEye_48.s" + +gSpriteAnimations_GyorgMaleEye_49:: @ 080D26A9 + .include "animations/gSpriteAnimations_GyorgMaleEye_49.s" + +gSpriteAnimations_GyorgMaleEye_50:: @ 080D26BA + .include "animations/gSpriteAnimations_GyorgMaleEye_50.s" + +gSpriteAnimations_GyorgMaleEye_51:: @ 080D26CB + .include "animations/gSpriteAnimations_GyorgMaleEye_51.s" + +gSpriteAnimations_GyorgMaleEye_52:: @ 080D26DC + .include "animations/gSpriteAnimations_GyorgMaleEye_52.s" + +gSpriteAnimations_GyorgMaleEye_53:: @ 080D26ED + .include "animations/gSpriteAnimations_GyorgMaleEye_53.s" + +gSpriteAnimations_GyorgMaleEye_54:: @ 080D26FE + .include "animations/gSpriteAnimations_GyorgMaleEye_54.s" + +gSpriteAnimations_GyorgMaleEye_55:: @ 080D270F + .include "animations/gSpriteAnimations_GyorgMaleEye_55.s" + +gSpriteAnimations_GyorgMaleEye_56:: @ 080D2720 + .include "animations/gSpriteAnimations_GyorgMaleEye_56.s" + +gSpriteAnimations_GyorgMaleEye_57:: @ 080D2731 + .include "animations/gSpriteAnimations_GyorgMaleEye_57.s" + +gSpriteAnimations_GyorgMaleEye_58:: @ 080D2742 + .include "animations/gSpriteAnimations_GyorgMaleEye_58.s" + +gSpriteAnimations_GyorgMaleEye_59:: @ 080D2753 + .include "animations/gSpriteAnimations_GyorgMaleEye_59.s" + +gSpriteAnimations_GyorgMaleEye_60:: @ 080D2764 + .include "animations/gSpriteAnimations_GyorgMaleEye_60.s" + +gSpriteAnimations_GyorgMaleEye_61:: @ 080D2775 + .include "animations/gSpriteAnimations_GyorgMaleEye_61.s" + +gSpriteAnimations_GyorgMaleEye_62:: @ 080D2786 + .include "animations/gSpriteAnimations_GyorgMaleEye_62.s" + +gSpriteAnimations_GyorgMaleEye_63:: @ 080D2797 + .include "animations/gSpriteAnimations_GyorgMaleEye_63.s" + +gSpriteAnimations_GyorgMaleEye:: @ 080D27A8 + .4byte gSpriteAnimations_GyorgMaleEye_0 + .4byte gSpriteAnimations_GyorgMaleEye_1 + .4byte gSpriteAnimations_GyorgMaleEye_2 + .4byte gSpriteAnimations_GyorgMaleEye_3 + .4byte gSpriteAnimations_GyorgMaleEye_4 + .4byte gSpriteAnimations_GyorgMaleEye_5 + .4byte gSpriteAnimations_GyorgMaleEye_6 + .4byte gSpriteAnimations_GyorgMaleEye_7 + .4byte gSpriteAnimations_GyorgMaleEye_8 + .4byte gSpriteAnimations_GyorgMaleEye_9 + .4byte gSpriteAnimations_GyorgMaleEye_10 + .4byte gSpriteAnimations_GyorgMaleEye_11 + .4byte gSpriteAnimations_GyorgMaleEye_12 + .4byte gSpriteAnimations_GyorgMaleEye_13 + .4byte gSpriteAnimations_GyorgMaleEye_14 + .4byte gSpriteAnimations_GyorgMaleEye_15 + .4byte gSpriteAnimations_GyorgMaleEye_16 + .4byte gSpriteAnimations_GyorgMaleEye_17 + .4byte gSpriteAnimations_GyorgMaleEye_18 + .4byte gSpriteAnimations_GyorgMaleEye_19 + .4byte gSpriteAnimations_GyorgMaleEye_20 + .4byte gSpriteAnimations_GyorgMaleEye_21 + .4byte gSpriteAnimations_GyorgMaleEye_22 + .4byte gSpriteAnimations_GyorgMaleEye_23 + .4byte gSpriteAnimations_GyorgMaleEye_24 + .4byte gSpriteAnimations_GyorgMaleEye_25 + .4byte gSpriteAnimations_GyorgMaleEye_26 + .4byte gSpriteAnimations_GyorgMaleEye_27 + .4byte gSpriteAnimations_GyorgMaleEye_28 + .4byte gSpriteAnimations_GyorgMaleEye_29 + .4byte gSpriteAnimations_GyorgMaleEye_30 + .4byte gSpriteAnimations_GyorgMaleEye_31 + .4byte gSpriteAnimations_GyorgMaleEye_32 + .4byte gSpriteAnimations_GyorgMaleEye_33 + .4byte gSpriteAnimations_GyorgMaleEye_34 + .4byte gSpriteAnimations_GyorgMaleEye_35 + .4byte gSpriteAnimations_GyorgMaleEye_36 + .4byte gSpriteAnimations_GyorgMaleEye_37 + .4byte gSpriteAnimations_GyorgMaleEye_38 + .4byte gSpriteAnimations_GyorgMaleEye_39 + .4byte gSpriteAnimations_GyorgMaleEye_40 + .4byte gSpriteAnimations_GyorgMaleEye_41 + .4byte gSpriteAnimations_GyorgMaleEye_42 + .4byte gSpriteAnimations_GyorgMaleEye_43 + .4byte gSpriteAnimations_GyorgMaleEye_44 + .4byte gSpriteAnimations_GyorgMaleEye_45 + .4byte gSpriteAnimations_GyorgMaleEye_46 + .4byte gSpriteAnimations_GyorgMaleEye_47 + .4byte gSpriteAnimations_GyorgMaleEye_48 + .4byte gSpriteAnimations_GyorgMaleEye_49 + .4byte gSpriteAnimations_GyorgMaleEye_50 + .4byte gSpriteAnimations_GyorgMaleEye_51 + .4byte gSpriteAnimations_GyorgMaleEye_52 + .4byte gSpriteAnimations_GyorgMaleEye_53 + .4byte gSpriteAnimations_GyorgMaleEye_54 + .4byte gSpriteAnimations_GyorgMaleEye_55 + .4byte gSpriteAnimations_GyorgMaleEye_56 + .4byte gSpriteAnimations_GyorgMaleEye_57 + .4byte gSpriteAnimations_GyorgMaleEye_58 + .4byte gSpriteAnimations_GyorgMaleEye_59 + .4byte gSpriteAnimations_GyorgMaleEye_60 + .4byte gSpriteAnimations_GyorgMaleEye_61 + .4byte gSpriteAnimations_GyorgMaleEye_62 + .4byte gSpriteAnimations_GyorgMaleEye_63 + .4byte 00000000 diff --git a/data/const/enemy/enemy62.s b/data/const/enemy/enemy62.s deleted file mode 100644 index 11fb4874..00000000 --- a/data/const/enemy/enemy62.s +++ /dev/null @@ -1,25 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080D22D8:: @ 080D22D8 - .4byte sub_08048E04 - .4byte sub_08048E1C - .4byte sub_08001324 - .4byte sub_0804A7D4 - .4byte sub_08001242 - .4byte sub_08048E04 - -gUnk_080D22F0:: @ 080D22F0 - .4byte sub_08048EA4 - .4byte sub_08048ED0 - .4byte sub_08048F00 - .4byte sub_08048F30 - -gUnk_080D2300:: @ 080D2300 - .incbin "enemy62/gUnk_080D2300.bin" - -gUnk_080D2348:: @ 080D2348 - .incbin "enemy62/gUnk_080D2348.bin" diff --git a/data/gfx/sprite_ptrs.s b/data/gfx/sprite_ptrs.s index 8cae8cca..6e9209c7 100644 --- a/data/gfx/sprite_ptrs.s +++ b/data/gfx/sprite_ptrs.s @@ -1562,7 +1562,7 @@ gSpritePtrs:: @ 080029B4 .4byte 00000000 .4byte 00000000 - .4byte gSpriteAnimations_Enemy62 + .4byte gSpriteAnimations_GyorgMaleEye .4byte 00000000 .4byte 00000000 .4byte 00000000 diff --git a/include/enemy.h b/include/enemy.h index 07bd48cc..3f8525bf 100644 --- a/include/enemy.h +++ b/include/enemy.h @@ -126,7 +126,7 @@ typedef enum { /*0x5f*/ VAATI_WRATH_EYE, /*0x60*/ GYORG_CHILD, /*0x61*/ GYORG_FEMALE_EYE, - /*0x62*/ ENEMY_62, + /*0x62*/ GYORG_MALE_EYE, /*0x63*/ GYORG_FEMALE_MOUTH, /*0x64*/ ENEMY_64, /*0x65*/ TREE_ITEM, @@ -230,7 +230,7 @@ void Curtain(Entity*); void VaatiWrathEye(Entity*); void GyorgChild(); void GyorgFemaleEye(); -void Enemy62(Entity*); +void GyorgMaleEye(); void GyorgFemaleMouth(); void Enemy64(); void TreeItem(Entity*); diff --git a/linker.ld b/linker.ld index b97afccf..fe2f9561 100644 --- a/linker.ld +++ b/linker.ld @@ -422,7 +422,7 @@ SECTIONS { src/enemy/vaatiWrathEye.o(.text); src/enemy/gyorgChild.o(.text); src/enemy/gyorgFemaleEye.o(.text); - asm/enemy/enemy62.o(.text); /* TODO gyorgMaleEye? */ + src/enemy/gyorgMaleEye.o(.text); src/enemy/gyorgFemaleMouth.o(.text); src/enemy/enemy64.o(.text); src/enemy/treeItem.o(.text); @@ -1111,8 +1111,8 @@ SECTIONS { data/animations/enemy/gyorgChild.o(.rodata); src/enemy/gyorgFemaleEye.o(.rodata); data/animations/enemy/gyorgFemaleEye.o(.rodata); - data/const/enemy/enemy62.o(.rodata); - data/animations/enemy/enemy62.o(.rodata); + src/enemy/gyorgMaleEye.o(.rodata); + data/animations/enemy/gyorgMaleEye.o(.rodata); src/enemy/gyorgFemaleMouth.o(.rodata); data/animations/enemy/gyorgFemaleMouth.o(.rodata); src/enemy/enemy64.o(.rodata); diff --git a/src/enemy.c b/src/enemy.c index faf5d59f..60a0653c 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -530,7 +530,7 @@ void (*const gEnemyFunctions[])(Entity* ent) = { [VAATI_WRATH_EYE] = VaatiWrathEye, [GYORG_CHILD] = GyorgChild, [GYORG_FEMALE_EYE] = GyorgFemaleEye, - [ENEMY_62] = Enemy62, + [GYORG_MALE_EYE] = GyorgMaleEye, [GYORG_FEMALE_MOUTH] = GyorgFemaleMouth, [ENEMY_64] = Enemy64, [TREE_ITEM] = TreeItem, diff --git a/src/enemy/gyorgMale.c b/src/enemy/gyorgMale.c index d50d44ab..667fa934 100644 --- a/src/enemy/gyorgMale.c +++ b/src/enemy/gyorgMale.c @@ -693,7 +693,7 @@ void sub_08047508(GyorgMaleEntity* this) { this->unk_76 = super->direction << 8; } if (--this->unk_7e == 0) { - Entity* tmp = CreateEnemy(ENEMY_62, Random() & 3); + Entity* tmp = CreateEnemy(GYORG_MALE_EYE, Random() & 3); if (tmp) { tmp->parent = super; } @@ -748,7 +748,7 @@ void sub_0804763C(GyorgMaleEntity* this) { this->unk_76 = super->direction << 8; } if (--this->unk_7e == 0) { - Entity* tmp = CreateEnemy(ENEMY_62, Random() & 3); + Entity* tmp = CreateEnemy(GYORG_MALE_EYE, Random() & 3); if (tmp) { tmp->parent = super; } @@ -856,7 +856,7 @@ void sub_08047978(GyorgMaleEntity* this) { if (--this->unk_7e == 0) { Entity* tmp; this->unk_7e = 0xF0; - tmp = CreateEnemy(ENEMY_62, Random() & 3); + tmp = CreateEnemy(GYORG_MALE_EYE, Random() & 3); if (tmp) { tmp->parent = super; } diff --git a/src/enemy/gyorgMaleEye.c b/src/enemy/gyorgMaleEye.c new file mode 100644 index 00000000..6f87fe4c --- /dev/null +++ b/src/enemy/gyorgMaleEye.c @@ -0,0 +1,137 @@ +/** + * @file gyorgMaleEye.c + * @ingroup Enemies + * + * @brief GyorgMaleEye enemy + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "enemy.h" +#include "functions.h" +#include "fade.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x10]; + /*0x78*/ u8 unk_78; +} GyorgMaleEyeEntity; + +extern void (*const GyorgMaleEye_Functions[])(GyorgMaleEyeEntity*); +extern void (*const GyorgMaleEye_Actions[])(GyorgMaleEyeEntity*); +extern const u8 gUnk_080D2300[]; +extern const u8 gUnk_080D2348[]; + +void sub_08048F50(GyorgMaleEyeEntity*); +void sub_08048F74(GyorgMaleEyeEntity*); + +void GyorgMaleEye(GyorgMaleEyeEntity* this) { + Entity* parent = super->parent; + if (parent->next == NULL) { + DeleteThisEntity(); + } + GyorgMaleEye_Functions[GetNextFunction(super)](this); + super->spriteOrientation.flipY = parent->spriteOrientation.flipY; + super->spriteRendering.b3 = parent->spriteRendering.b3; + super->spritePriority.b0 = parent->spritePriority.b0 - 1; +} + +void GyorgMaleEye_OnTick(GyorgMaleEyeEntity* this) { + GyorgMaleEye_Actions[super->action](this); +} + +void sub_08048E1C(GyorgMaleEyeEntity* this) { + u32 tmp; + Entity* entity; + + tmp = 0xff - super->health; + if (tmp != 0) { + entity = super->parent; + if (entity->health > tmp) { + entity->health -= tmp; + SoundReq(SFX_BOSS_HIT); + } else { + entity->health = 0; + SoundReq(SFX_BOSS_DIE); + InitScreenShake(0x28, 0); + } + if (super->iframes > 0) { + entity->iframes = super->iframes; + entity = entity->child; + entity->iframes = super->iframes; + entity = entity->child; + entity->iframes = super->iframes; + entity = entity->child; + entity->iframes = super->iframes; + } + super->health = 0xff; + } + sub_0804AA30(super, GyorgMaleEye_Functions); +} + +void GyorgMaleEye_Init(GyorgMaleEyeEntity* this) { + super->action = 1; + this->unk_78 = (((super->parent)->animationState & 0xe0) >> 3) + super->type; + sub_08048F50(this); + sub_08048F74(this); +} + +void GyorgMaleEye_Action1(GyorgMaleEyeEntity* this) { + sub_08048F50(this); + GetNextFrame(super); + if ((super->frame & 0x80) != 0) { + super->action = 2; + super->flags |= 0x80; + super->actionDelay = 0x2d; + } +} + +void GyorgMaleEye_Action2(GyorgMaleEyeEntity* this) { + sub_08048F50(this); + if (--super->actionDelay == 0) { + super->action = 3; + super->flags &= 0x7f; + InitializeAnimation(super, super->animIndex + 4); + } +} + +void GyorgMaleEye_Action3(GyorgMaleEyeEntity* this) { + sub_08048F50(this); + GetNextFrame(super); + if ((super->frame & 0x80) != 0) { + DeleteThisEntity(); + } +} + +void sub_08048F50(GyorgMaleEyeEntity* this) { + const s8* ptr = &gUnk_080D2300[this->unk_78 * 2]; + sub_0806FA90(super->parent, super, ptr[0], ptr[1]); +} + +void sub_08048F74(GyorgMaleEyeEntity* this) { + InitializeAnimation(super, gUnk_080D2348[this->unk_78]); +} + +void (*const GyorgMaleEye_Functions[])(GyorgMaleEyeEntity*) = { + GyorgMaleEye_OnTick, + sub_08048E1C, + (void (*)(GyorgMaleEyeEntity*))sub_08001324, + (void (*)(GyorgMaleEyeEntity*))sub_0804A7D4, + (void (*)(GyorgMaleEyeEntity*))sub_08001242, + GyorgMaleEye_OnTick, +}; +void (*const GyorgMaleEye_Actions[])(GyorgMaleEyeEntity*) = { + GyorgMaleEye_Init, + GyorgMaleEye_Action1, + GyorgMaleEye_Action2, + GyorgMaleEye_Action3, +}; +const u8 gUnk_080D2300[] = { + 240, 240, 17, 240, 17, 16, 240, 16, 0, 232, 24, 0, 0, 24, 232, 0, 16, 240, 16, 17, 240, 17, 240, 240, 24, + 0, 0, 24, 232, 0, 0, 232, 16, 16, 239, 16, 239, 240, 16, 240, 0, 24, 232, 0, 0, 232, 24, 0, 240, 16, + 240, 239, 16, 239, 16, 16, 232, 0, 0, 232, 24, 0, 0, 24, 240, 240, 17, 240, 17, 16, 240, 16, +}; +const u8 gUnk_080D2348[] = { + 0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27, + 32, 33, 34, 35, 40, 41, 42, 43, 48, 49, 50, 51, 56, 57, 58, 59, +};