diff --git a/asm/non_matching/cuccoChick/sub_0806E7B0.inc b/asm/non_matching/cuccoChick/sub_0806E7B0.inc deleted file mode 100644 index 5044ade9..00000000 --- a/asm/non_matching/cuccoChick/sub_0806E7B0.inc +++ /dev/null @@ -1,60 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _0806E7F2 - adds r0, #1 - strb r0, [r4, #0xd] - bl Random - movs r5, #1 - ands r0, r5 - cmp r0, #0 - beq _0806E7DE - ldrb r0, [r4, #0x18] - lsls r1, r0, #0x19 - lsrs r1, r1, #0x1f - eors r1, r5 - lsls r1, r1, #6 - movs r2, #0x41 - rsbs r2, r2, #0 - ands r2, r0 - orrs r2, r1 - strb r2, [r4, #0x18] -_0806E7DE: - bl Random - movs r1, #3 - ands r0, r1 - adds r0, #1 - strb r0, [r4, #0xe] - movs r0, #0x80 - lsls r0, r0, #9 - str r0, [r4, #0x20] - strb r5, [r4, #0x1e] -_0806E7F2: - movs r1, #0xc0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl GravityUpdate - cmp r0, #0 - bne _0806E81C - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0806E816 - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - b _0806E81C -_0806E816: - movs r0, #0x80 - lsls r0, r0, #9 - str r0, [r4, #0x20] -_0806E81C: - adds r0, r4, #0 - bl sub_0806E838 - pop {r4, r5, pc} - .syntax divided diff --git a/asm/non_matching/playerItem12/sub_080701F8.inc b/asm/non_matching/playerItem12/sub_080701F8.inc deleted file mode 100644 index 80f1a9ff..00000000 --- a/asm/non_matching/playerItem12/sub_080701F8.inc +++ /dev/null @@ -1,185 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - ldr r0, _08070244 @ =gUnk_0811B9C8 - ldrb r1, [r5, #0x14] - adds r2, r1, r0 - movs r6, #0 - ldrsb r6, [r2, r6] - adds r1, #1 - adds r1, r1, r0 - movs r7, #0 - ldrsb r7, [r1, r7] - adds r0, r5, #0 - movs r1, #0xa - adds r2, r6, #0 - adds r3, r7, #0 - bl sub_08008782 - adds r4, r0, #0 - cmp r4, #0 - beq _08070248 - ldrb r1, [r4, #5] - ldrb r2, [r4, #2] - movs r0, #0x53 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _08070260 - ldrb r0, [r4, #3] - strb r0, [r1, #0xe] - ldrh r0, [r5, #0x2e] - adds r0, r0, r6 - strh r0, [r1, #0x2e] - ldrh r0, [r5, #0x32] - adds r0, r0, r7 - strh r0, [r1, #0x32] - b _08070260 - .align 2, 0 -_08070244: .4byte gUnk_0811B9C8 -_08070248: - ldr r0, [r5, #0x74] - subs r0, #1 - str r0, [r5, #0x74] - movs r1, #1 - rsbs r1, r1, #0 - cmp r0, r1 - beq _08070260 - ldr r0, [r5, #0x78] - subs r0, #1 - str r0, [r5, #0x78] - cmp r0, r1 - bne _08070268 -_08070260: - adds r0, r5, #0 - bl sub_08070458 - b _0807037A -_08070268: - adds r0, r5, #0 - bl GetNextFrame - adds r0, r5, #0 - bl LinearMoveUpdate - ldrb r0, [r5, #0xa] - cmp r0, #0 - bne _08070280 - adds r0, r5, #0 - bl sub_0800451C -_08070280: - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r7, _08070354 @ =gRoomControls - ldrh r1, [r7, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r6, #0x3f - ands r0, r6 - movs r2, #0x32 - ldrsh r1, [r5, r2] - ldrh r2, [r7, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r6 - lsls r1, r1, #6 - orrs r0, r1 - ldr r1, _08070358 @ =gPlayerEntity - adds r1, #0x38 - ldrb r1, [r1] - movs r2, #0x80 - bl sub_080002F0 - cmp r0, #0 - bne _0807036A - ldr r1, _0807035C @ =gUnk_08003E44 - movs r3, #0x2e - ldrsh r2, [r5, r3] - movs r0, #0x32 - ldrsh r3, [r5, r0] - adds r0, r5, #0 - bl sub_080040D8 - cmp r0, #0 - bne _08070364 - adds r0, r5, #0 - bl sub_080002B8 - cmp r0, #0x19 - bne _0807036A - movs r0, #4 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r5, #0x10] - ldrh r2, [r5, #0x2e] - movs r1, #0x10 - rsbs r1, r1, #0 - adds r0, r1, #0 - ands r0, r2 - movs r2, #8 - orrs r0, r2 - strh r0, [r5, #0x2e] - ldrh r0, [r5, #0x32] - ands r1, r0 - orrs r1, r2 - strh r1, [r5, #0x32] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldrh r1, [r7, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r6 - movs r2, #0x32 - ldrsh r1, [r5, r2] - ldrh r2, [r7, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r6 - lsls r1, r1, #6 - orrs r0, r1 - adds r4, r5, #0 - adds r4, #0x38 - ldrb r1, [r4] - bl GetTileIndex - str r0, [r5, #0x7c] - adds r0, r5, #0 - movs r1, #0x14 - bl InitializeAnimation - ldr r0, _08070360 @ =0x00004020 - movs r3, #0x2e - ldrsh r1, [r5, r3] - ldrh r2, [r7, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r6 - movs r3, #0x32 - ldrsh r2, [r5, r3] - ldrh r3, [r7, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r6 - lsls r2, r2, #6 - orrs r1, r2 - ldrb r2, [r4] - bl SetTile - b _0807037A - .align 2, 0 -_08070354: .4byte gRoomControls -_08070358: .4byte gPlayerEntity -_0807035C: .4byte gUnk_08003E44 -_08070360: .4byte 0x00004020 -_08070364: - adds r0, r5, #0 - bl sub_08070458 -_0807036A: - adds r0, r5, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0 - beq _0807037A - adds r0, r5, #0 - bl sub_08070458 -_0807037A: - pop {r4, r5, r6, r7, pc} - .syntax divided diff --git a/asm/object/objectOnPillar.s b/asm/object/objectOnPillar.s deleted file mode 100644 index 72b706fa..00000000 --- a/asm/object/objectOnPillar.s +++ /dev/null @@ -1,720 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ObjectOnPillar -ObjectOnPillar: @ 0x08096E10 - push {lr} - ldr r2, _08096E24 @ =gUnk_08123250 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08096E24: .4byte gUnk_08123250 - - thumb_func_start sub_08096E28 -sub_08096E28: @ 0x08096E28 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - adds r5, r0, #0 - cmp r5, #0 - bne _08096EBC - movs r2, #1 - movs r3, #1 - strb r3, [r4, #0xc] - movs r0, #0x80 - strh r0, [r4, #0x24] - ldrb r1, [r4, #0x11] - subs r0, #0x90 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r4, #0x18] - movs r0, #0x31 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #0x10 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #4 - strb r0, [r1] - ldr r0, _08096EB4 @ =gUnk_080FD1F4 - str r0, [r4, #0x48] - strb r3, [r4, #0x16] - adds r0, r4, #0 - adds r0, #0x72 - strh r5, [r0] - adds r0, #0xb - ldrb r0, [r0] - lsrs r0, r0, #4 - subs r1, #0x2b - strb r0, [r1] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - adds r0, r4, #0 - bl sub_080970F4 - ldr r1, _08096EB8 @ =gUnk_08123264 - ldrb r0, [r4, #0xa] - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r4, #0x1e] - b _08096F04 - .align 2, 0 -_08096EB4: .4byte gUnk_080FD1F4 -_08096EB8: .4byte gUnk_08123264 -_08096EBC: - adds r0, r4, #0 - adds r0, #0x7c - ldrb r2, [r0] - adds r0, #1 - ldrb r3, [r0] - movs r1, #0xf - adds r0, r1, #0 - ands r0, r3 - lsls r0, r0, #8 - ldr r3, _08096F08 @ =gRoomControls - orrs r2, r0 - ldrh r0, [r3, #6] - adds r2, r2, r0 - strh r2, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x7e - ldrb r0, [r0] - movs r2, #0x7f - adds r2, r2, r4 - mov ip, r2 - ldrb r2, [r2] - ands r1, r2 - lsls r1, r1, #8 - orrs r0, r1 - ldrh r3, [r3, #8] - adds r0, r0, r3 - strh r0, [r4, #0x32] - mov r5, ip - ldrb r0, [r5] - lsrs r0, r0, #4 - adds r1, r4, #0 - adds r1, #0x38 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080971E0 -_08096F04: - pop {r4, r5, pc} - .align 2, 0 -_08096F08: .4byte gRoomControls - - thumb_func_start sub_08096F0C -sub_08096F0C: @ 0x08096F0C - push {r4, lr} - adds r4, r0, #0 - bl sub_08097194 - cmp r0, #0 - bne _08096F2E - adds r0, r4, #0 - bl sub_08097008 - cmp r0, #0 - beq _08096F28 - movs r0, #3 - strb r0, [r4, #0xc] - b _08096F2E -_08096F28: - adds r0, r4, #0 - bl sub_08078930 -_08096F2E: - pop {r4, pc} - - thumb_func_start sub_08096F30 -sub_08096F30: @ 0x08096F30 - push {lr} - adds r2, r0, #0 - adds r0, #0x76 - ldrh r0, [r0] - cmp r0, #0 - beq _08096F44 - adds r0, r2, #0 - bl sub_08097144 - b _08096F62 -_08096F44: - ldr r0, _08096F64 @ =gPlayerState - ldrb r0, [r0, #5] - cmp r0, #0 - bne _08096F50 - movs r0, #6 - strb r0, [r2, #0xd] -_08096F50: - ldr r0, _08096F68 @ =gUnk_0812326C - ldrb r1, [r2, #0xd] - subs r1, #5 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 -_08096F62: - pop {pc} - .align 2, 0 -_08096F64: .4byte gPlayerState -_08096F68: .4byte gUnk_0812326C - - thumb_func_start sub_08096F6C -sub_08096F6C: @ 0x08096F6C - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x72 - ldrh r0, [r1] - cmp r0, #0 - bne _08096F98 - movs r0, #1 - strh r0, [r1] - ldr r1, _08096FD8 @ =gPlayerEntity - ldrb r0, [r1, #0x14] - ldr r2, _08096FDC @ =gUnk_08123274 - adds r0, r0, r2 - movs r2, #0 - ldrsb r2, [r0, r2] - lsls r2, r2, #0x10 - movs r3, #1 - ldrsb r3, [r0, r3] - lsls r3, r3, #0x10 - adds r0, r4, #0 - bl PositionRelative -_08096F98: - adds r0, r4, #0 - bl sub_08097008 - bl sub_080896B0 - cmp r0, #0 - beq _08096FD4 - ldr r2, _08096FE0 @ =gPlayerState - movs r3, #0 - movs r0, #0x10 - strb r0, [r2, #0xc] - adds r1, r2, #0 - adds r1, #0x38 - movs r0, #0x20 - strb r0, [r1] - ldr r0, [r2, #0x30] - movs r1, #1 - orrs r0, r1 - str r0, [r2, #0x30] - ldr r0, _08096FD8 @ =gPlayerEntity - strh r3, [r0, #0x2c] - strh r3, [r0, #0x30] - ldrb r0, [r0, #0x14] - movs r1, #4 - eors r0, r1 - lsls r0, r0, #2 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_08097098 -_08096FD4: - pop {r4, pc} - .align 2, 0 -_08096FD8: .4byte gPlayerEntity -_08096FDC: .4byte gUnk_08123274 -_08096FE0: .4byte gPlayerState - - thumb_func_start sub_08096FE4 -sub_08096FE4: @ 0x08096FE4 - movs r2, #0 - movs r1, #1 - strb r1, [r0, #0xc] - adds r0, #0x72 - strh r2, [r0] - bx lr - - thumb_func_start sub_08096FF0 -sub_08096FF0: @ 0x08096FF0 - push {r4, lr} - adds r4, r0, #0 - bl sub_08097144 - cmp r0, #0 - beq _08097000 - movs r0, #1 - strb r0, [r4, #0xc] -_08097000: - pop {r4, pc} - .align 2, 0 - - thumb_func_start nullsub_122 -nullsub_122: @ 0x08097004 - bx lr - .align 2, 0 - - thumb_func_start sub_08097008 -sub_08097008: @ 0x08097008 - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x74 - ldrh r0, [r0] - adds r1, r5, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - adds r4, r0, #0 - ldr r0, _08097048 @ =0x00004036 - cmp r4, r0 - beq _08097070 - adds r0, r4, #0 - bl sub_08097074 - cmp r0, #1 - beq _0809704C - cmp r0, #2 - beq _08097062 - movs r0, #0xf - movs r1, #4 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _0809706A - adds r0, r5, #0 - bl CopyPosition - b _0809706A - .align 2, 0 -_08097048: .4byte 0x00004036 -_0809704C: - adds r0, r4, #0 - subs r0, #0x37 - movs r1, #3 - ands r0, r1 - lsls r0, r0, #3 - strb r0, [r5, #0x15] - adds r0, r5, #0 - bl sub_08097098 - movs r0, #1 - b _08097072 -_08097062: - adds r0, r5, #0 - adds r0, #0x70 - strh r4, [r0] - b _08097070 -_0809706A: - adds r0, r5, #0 - bl DeleteEntity -_08097070: - movs r0, #0 -_08097072: - pop {r4, r5, pc} - - thumb_func_start sub_08097074 -sub_08097074: @ 0x08097074 - push {lr} - adds r2, r0, #0 - ldr r1, _0809707C @ =gUnk_0812327C - b _0809708C - .align 2, 0 -_0809707C: .4byte gUnk_0812327C -_08097080: - ldrh r0, [r1] - cmp r0, r2 - bne _0809708A - ldrh r0, [r1, #2] - b _08097094 -_0809708A: - adds r1, #4 -_0809708C: - ldrh r0, [r1] - cmp r0, #0 - bne _08097080 - movs r0, #0 -_08097094: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08097098 -sub_08097098: @ 0x08097098 - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r1, r6, #0 - adds r1, #0x76 - movs r0, #0x20 - strh r0, [r1] - adds r0, #0xef - bl EnqueueSFX - adds r0, r6, #0 - adds r0, #0x70 - ldrh r0, [r0] - adds r5, r6, #0 - adds r5, #0x74 - ldrh r1, [r5] - adds r4, r6, #0 - adds r4, #0x38 - ldrb r2, [r4] - bl SetTile - ldr r1, _080970F0 @ =gUnk_080B4488 - ldrb r0, [r6, #0x15] - lsrs r0, r0, #3 - lsls r0, r0, #1 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - ldrh r5, [r5] - adds r0, r0, r5 - ldrb r1, [r4] - bl GetTileType - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x79 - beq _080970E4 - cmp r0, #0x77 - bne _080970EC -_080970E4: - adds r1, r6, #0 - adds r1, #0x63 - movs r0, #2 - strb r0, [r1] -_080970EC: - pop {r4, r5, r6, pc} - .align 2, 0 -_080970F0: .4byte gUnk_080B4488 - - thumb_func_start sub_080970F4 -sub_080970F4: @ 0x080970F4 - push {r4, r5, r6, lr} - adds r6, r0, #0 - movs r0, #0x2e - ldrsh r1, [r6, r0] - ldr r2, _0809713C @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r4, #0x32 - ldrsh r0, [r6, r4] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r4, r6, #0 - adds r4, #0x74 - strh r1, [r4] - ldrh r0, [r4] - adds r5, r6, #0 - adds r5, #0x38 - ldrb r1, [r5] - bl GetTileIndex - adds r1, r6, #0 - adds r1, #0x70 - strh r0, [r1] - ldr r0, _08097140 @ =0x00004036 - ldrh r1, [r4] - ldrb r2, [r5] - bl SetTile - pop {r4, r5, r6, pc} - .align 2, 0 -_0809713C: .4byte gRoomControls -_08097140: .4byte 0x00004036 - - thumb_func_start sub_08097144 -sub_08097144: @ 0x08097144 - push {r4, lr} - adds r4, r0, #0 - bl LinearMoveUpdate - adds r0, r4, #0 - bl sub_0800445C - adds r0, r4, #0 - bl sub_080002B8 - cmp r0, #0x19 - bne _08097164 - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #2 - strb r0, [r1] -_08097164: - adds r1, r4, #0 - adds r1, #0x76 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _08097190 - adds r0, r4, #0 - bl sub_08097194 - cmp r0, #0 - bne _08097190 - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #4 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080970F4 - movs r0, #1 - b _08097192 -_08097190: - movs r0, #0 -_08097192: - pop {r4, pc} - - thumb_func_start sub_08097194 -sub_08097194: @ 0x08097194 - push {r4, lr} - adds r4, r0, #0 - bl sub_0800442E - cmp r0, #0 - beq _080971A4 - movs r0, #1 - b _080971DE -_080971A4: - adds r0, r4, #0 - bl GetTileTypeByEntity - adds r1, r0, #0 - subs r0, #0x71 - cmp r0, #1 - bls _080971B8 - ldr r0, _080971D4 @ =0x00004020 - cmp r1, r0 - bne _080971DC -_080971B8: - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl SetFlag - ldr r0, _080971D8 @ =0x0000010B - bl EnqueueSFX - adds r0, r4, #0 - bl sub_080971E0 - movs r0, #1 - b _080971DE - .align 2, 0 -_080971D4: .4byte 0x00004020 -_080971D8: .4byte 0x0000010B -_080971DC: - movs r0, #0 -_080971DE: - pop {r4, pc} - - thumb_func_start sub_080971E0 -sub_080971E0: @ 0x080971E0 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0xf - movs r1, #0x11 - movs r2, #0x40 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _08097202 - ldr r2, _0809727C @ =0xFFF80000 - movs r3, #0x80 - lsls r3, r3, #0xa - adds r0, r5, #0 - adds r1, r4, #0 - bl PositionRelative -_08097202: - movs r0, #0xf - movs r1, #0x11 - movs r2, #0x40 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _08097222 - movs r2, #0x80 - lsls r2, r2, #0xc - movs r3, #0x80 - lsls r3, r3, #0xa - adds r0, r5, #0 - adds r1, r4, #0 - bl PositionRelative -_08097222: - ldrb r0, [r5, #0xa] - cmp r0, #1 - beq _08097284 - cmp r0, #1 - ble _08097234 - cmp r0, #2 - beq _080972C4 - cmp r0, #3 - beq _08097304 -_08097234: - movs r0, #4 - strb r0, [r5, #0xc] - movs r0, #1 - strb r0, [r5, #0x1e] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - movs r0, #0x2e - ldrsh r1, [r5, r0] - ldr r2, _08097280 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r4, #0x32 - ldrsh r0, [r5, r4] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r5, #0 - adds r0, #0x38 - ldrb r2, [r0] - movs r0, #0 - bl SetTile -_08097274: - bl DeleteThisEntity - b _08097346 - .align 2, 0 -_0809727C: .4byte 0xFFF80000 -_08097280: .4byte gRoomControls -_08097284: - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r3, _080972C0 @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - asrs r4, r0, #4 - movs r2, #0x3f - ands r4, r2 - movs r1, #0x32 - ldrsh r0, [r5, r1] - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r4, r0 - adds r0, r4, #0 - bl sub_08097348 - cmp r0, #0 - bne _08097274 - adds r0, r5, #0 - adds r0, #0x38 - ldrb r2, [r0] - movs r0, #0x73 - adds r1, r4, #0 - bl SetTileType - b _08097274 - .align 2, 0 -_080972C0: .4byte gRoomControls -_080972C4: - movs r0, #0x2f - movs r1, #0 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _08097274 - ldrh r2, [r5, #0x2e] - movs r1, #0x10 - rsbs r1, r1, #0 - adds r0, r1, #0 - ands r0, r2 - adds r0, #8 - strh r0, [r4, #0x2e] - ldrh r0, [r5, #0x32] - ands r1, r0 - adds r1, #8 - strh r1, [r4, #0x32] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] - adds r0, r5, #0 - adds r0, #0x84 - ldrh r1, [r0] - adds r0, r4, #0 - adds r0, #0x86 - strh r1, [r0] - b _08097274 -_08097304: - movs r0, #0x2f - movs r1, #1 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _08097342 - ldrh r2, [r5, #0x2e] - movs r1, #0x10 - rsbs r1, r1, #0 - adds r0, r1, #0 - ands r0, r2 - adds r0, #8 - strh r0, [r4, #0x2e] - ldrh r0, [r5, #0x32] - ands r1, r0 - adds r1, #8 - strh r1, [r4, #0x32] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] - adds r0, r5, #0 - adds r0, #0x84 - ldrh r1, [r0] - adds r0, r4, #0 - adds r0, #0x86 - strh r1, [r0] -_08097342: - bl DeleteThisEntity -_08097346: - pop {r4, r5, pc} - - thumb_func_start sub_08097348 -sub_08097348: @ 0x08097348 - push {lr} - adds r3, r0, #0 - ldr r1, _08097360 @ =gSmallChests - movs r2, #0 -_08097350: - ldrh r0, [r1, #4] - cmp r0, r3 - bne _08097364 - ldrb r0, [r1, #1] - bl CheckLocalFlag - b _0809736E - .align 2, 0 -_08097360: .4byte gSmallChests -_08097364: - adds r2, #1 - adds r1, #8 - cmp r2, #7 - bls _08097350 - movs r0, #0 -_0809736E: - pop {pc} diff --git a/assets/assets.json b/assets/assets.json index 9e7c26d2..b94cde6d 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -44913,21 +44913,6 @@ "start": 1192372, "size": 6 }, - { - "path": "objectOnPillar/gUnk_08123264.bin", - "start": 1192548, - "size": 8 - }, - { - "path": "objectOnPillar/gUnk_08123274.bin", - "start": 1192564, - "size": 8 - }, - { - "path": "objectOnPillar/gUnk_0812327C.bin", - "start": 1192572, - "size": 28 - }, { "path": "mineralWaterSource/MineralWaterSourceParameters.bin", "start": 1192608, diff --git a/data/const/object/objectOnPillar.s b/data/const/object/objectOnPillar.s deleted file mode 100644 index 40bc4940..00000000 --- a/data/const/object/objectOnPillar.s +++ /dev/null @@ -1,25 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08123250:: @ 08123250 - .4byte sub_08096E28 - .4byte sub_08096F0C - .4byte sub_08096F30 - .4byte sub_08096FF0 - .4byte nullsub_122 - -gUnk_08123264:: @ 08123264 - .incbin "objectOnPillar/gUnk_08123264.bin" - -gUnk_0812326C:: @ 0812326C - .4byte sub_08096F6C - .4byte sub_08096FE4 - -gUnk_08123274:: @ 08123274 - .incbin "objectOnPillar/gUnk_08123274.bin" - -gUnk_0812327C:: @ 0812327C - .incbin "objectOnPillar/gUnk_0812327C.bin" diff --git a/include/object.h b/include/object.h index 72120f5e..b728782f 100644 --- a/include/object.h +++ b/include/object.h @@ -335,7 +335,7 @@ void Object69(Entity*); void Object6A(Entity*); void CrenalBeanSprout(Entity*); void MinecartDoor(Entity*); -void ObjectOnPillar(Entity*); +void ObjectOnPillar(); void MineralWaterSource(Entity*); void MinishSizedArchway(Entity*); void Object70(Entity*); diff --git a/linker.ld b/linker.ld index 6d739c7a..55fa9325 100644 --- a/linker.ld +++ b/linker.ld @@ -757,7 +757,7 @@ SECTIONS { src/object/object6A.o(.text); asm/object/crenalBeanSprout.o(.text); asm/object/minecartDoor.o(.text); - asm/object/objectOnPillar.o(.text); + src/object/objectOnPillar.o(.text); src/object/mineralWaterSource.o(.text); src/object/minishSizedArchway.o(.text); asm/object/object70.o(.text); @@ -1504,7 +1504,7 @@ SECTIONS { data/const/object/crenalBeanSprout.o(.rodata); data/animations/object/crenalBeanSprout.o(.rodata); data/const/object/minecartDoor.o(.rodata); - data/const/object/objectOnPillar.o(.rodata); + src/object/objectOnPillar.o(.rodata); data/const/object/mineralWaterSource.o(.rodata); data/const/object/object70.o(.rodata); src/object/pushableGrave.o(.rodata); diff --git a/src/object/objectOnPillar.c b/src/object/objectOnPillar.c new file mode 100644 index 00000000..2aa53237 --- /dev/null +++ b/src/object/objectOnPillar.c @@ -0,0 +1,303 @@ +/** + * @file objectOnPillar.c + * @ingroup Objects + * + * @brief Object on Pillar object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[8]; + /*0x70*/ u16 tileIndex; + /*0x72*/ u16 unk_72; + /*0x74*/ u16 tilePosition; + /*0x76*/ u16 unk_76; + /*0x78*/ u8 unk_78[0x4]; + /*0x7c*/ u8 unk_7c; + /*0x7d*/ u8 unk_7d; + /*0x7e*/ u8 unk_7e; + /*0x7f*/ u8 unk_7f; + /*0x80*/ u8 unk_80[0x4]; + /*0x84*/ u16 hitFlag; + /*0x86*/ u16 unk_86; +} ObjectOnPillarEntity; + +extern bool32 sub_080896B0(void); // pushableStatue + +extern Hitbox gUnk_080FD1F4; +extern s16 gUnk_080B4488[]; + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[10 + 0x14]; + /*0x86*/ u16 hitFlag; +} EntityWithHitFlag; + +typedef struct { + u16 key; + u16 value; +} KeyValuePair; + +void sub_080970F4(ObjectOnPillarEntity*); +void sub_080971E0(ObjectOnPillarEntity*); +bool32 sub_08097194(ObjectOnPillarEntity*); +bool32 sub_08097008(ObjectOnPillarEntity*); +bool32 sub_08097144(ObjectOnPillarEntity*); +void sub_08097098(ObjectOnPillarEntity*); +u32 sub_08097074(u32); +bool32 sub_08097348(u32); +void ObjectOnPillar_Init(ObjectOnPillarEntity*); +void ObjectOnPillar_Action1(ObjectOnPillarEntity*); +void ObjectOnPillar_Action2(ObjectOnPillarEntity*); +void ObjectOnPillar_Action3(ObjectOnPillarEntity*); +void ObjectOnPillar_Action4(ObjectOnPillarEntity*); +void ObjectOnPillar_SubAction0(ObjectOnPillarEntity*); +void ObjectOnPillar_SubAction1(ObjectOnPillarEntity*); + +void ObjectOnPillar(ObjectOnPillarEntity* this) { + static void (*const ObjectOnPillar_Actions[])(ObjectOnPillarEntity*) = { + ObjectOnPillar_Init, ObjectOnPillar_Action1, ObjectOnPillar_Action2, + ObjectOnPillar_Action3, ObjectOnPillar_Action4, + }; + ObjectOnPillar_Actions[super->action](this); +} + +void ObjectOnPillar_Init(ObjectOnPillarEntity* this) { + static const u8 gUnk_08123264[] = { + 0, 2, 4, 3, 7, 5, 0, 0, + }; + if (CheckFlags(this->unk_86) == 0) { + super->action = 1; + super->speed = 0x80; + super->updatePriority = 3; + super->spriteSettings.draw = 1; + super->spritePriority.b1 = 1; + super->spriteSettings.shadow = 1; + super->spriteOffsetY = 4; + super->hitbox = (Hitbox*)&gUnk_080FD1F4; + super->field_0x16 = 1; + this->unk_72 = 0; + super->collisionLayer = this->unk_7d >> 4; + UpdateSpriteForCollisionLayer(super); + sub_080970F4(this); + super->frameIndex = gUnk_08123264[super->type]; + } else { + super->x.HALF.HI = (this->unk_7c | ((this->unk_7d & 0xf) << 8)) + gRoomControls.origin_x; + super->y.HALF.HI = (this->unk_7e | ((this->unk_7f & 0xf) << 8)) + gRoomControls.origin_y; + super->collisionLayer = this->unk_7f >> 4; + sub_080971E0(this); + } +} + +void ObjectOnPillar_Action1(ObjectOnPillarEntity* this) { + if (sub_08097194(this) == FALSE) { + if (sub_08097008(this)) { + super->action = 3; + } else { + sub_08078930(super); + } + } +} + +void ObjectOnPillar_Action2(ObjectOnPillarEntity* this) { + static void (*const ObjectOnPillar_SubActions[])(ObjectOnPillarEntity*) = { + ObjectOnPillar_SubAction0, + ObjectOnPillar_SubAction1, + }; + if (this->unk_76 != 0) { + sub_08097144(this); + } else { + if (gPlayerState.heldObject == 0) { + super->subAction = 6; + } + ObjectOnPillar_SubActions[super->subAction - 5](this); + } +} + +void ObjectOnPillar_SubAction0(ObjectOnPillarEntity* this) { + static const s8 gUnk_08123274[] = { 0, 14, -14, 2, 0, -14, 14, 2 }; + const s8* ptr; + if (this->unk_72 == 0) { + this->unk_72 = 1; + ptr = &gUnk_08123274[gPlayerEntity.animationState]; + PositionRelative(super, &gPlayerEntity, ptr[0] << 0x10, ptr[1] << 0x10); + } + sub_08097008(this); + if (sub_080896B0()) { + gPlayerState.queued_action = 0x10; + gPlayerState.field_0x38 = 0x20; + gPlayerState.flags |= PL_BUSY; + gPlayerEntity.x.HALF.LO = 0; + gPlayerEntity.y.HALF.LO = 0; + super->direction = ((gPlayerEntity.animationState ^ 4) << 2); + sub_08097098(this); + } +} + +void ObjectOnPillar_SubAction1(ObjectOnPillarEntity* this) { + super->action = 1; + this->unk_72 = 0; +} + +void ObjectOnPillar_Action3(ObjectOnPillarEntity* this) { + if (sub_08097144(this)) { + super->action = 1; + } +} + +void ObjectOnPillar_Action4(ObjectOnPillarEntity* this) { +} + +bool32 sub_08097008(ObjectOnPillarEntity* this) { + Entity* effect; + u32 tileType = GetTileType(this->tilePosition, super->collisionLayer); + if (tileType != 0x4036) { + switch (sub_08097074(tileType)) { + case 1: + super->direction = (((tileType - 0x37) & 3) << 3); + sub_08097098(this); + return TRUE; + case 2: + this->tileIndex = tileType; + break; + default: + effect = CreateObject(SPECIAL_FX, 4, 0); + if (effect != NULL) { + CopyPosition(super, effect); + } + DeleteEntity(super); + break; + } + } + return FALSE; +} + +u32 sub_08097074(u32 tileType) { + + static const KeyValuePair gUnk_0812327C[] = { + { 0x4037, 1 }, { 0x4038, 1 }, { 0x4039, 1 }, { 0x403a, 1 }, { 0x7a, 2 }, { 0x78, 2 }, { 0, 0 }, + }; + const KeyValuePair* entry = gUnk_0812327C; + for (; entry->key != 0; entry++) { + if (entry->key == tileType) { + return entry->value; + } + } + return 0; +} + +void sub_08097098(ObjectOnPillarEntity* this) { + u16 tileType; + this->unk_76 = 0x20; + EnqueueSFX(SFX_10F); + SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + tileType = GetTileType(gUnk_080B4488[super->direction >> 3] + this->tilePosition, super->collisionLayer); + if ((tileType == 0x79) || tileType == 0x77) { + super->spriteOffsetY = 2; + } +} + +void sub_080970F4(ObjectOnPillarEntity* this) { + this->tilePosition = COORD_TO_TILE(super); + this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer); + SetTile(0x4036, this->tilePosition, super->collisionLayer); +} + +bool32 sub_08097144(ObjectOnPillarEntity* this) { + LinearMoveUpdate(super); + sub_0800445C(super); + if (sub_080002B8(super) == 0x19) { + super->spriteOffsetY = 2; + } + if ((--this->unk_76 == 0) && sub_08097194(this) == FALSE) { + super->spriteOffsetY = 4; + sub_080970F4(this); + return TRUE; + } else { + return FALSE; + } +} + +bool32 sub_08097194(ObjectOnPillarEntity* this) { + if (sub_0800442E(super)) { + return TRUE; + } else { + u32 tileType = GetTileTypeByEntity(super); + if (tileType == 0x71 || tileType == 0x72 || (tileType == 0x4020)) { + SetFlag(this->unk_86); + EnqueueSFX(SFX_10B); + sub_080971E0(this); + return TRUE; + } else { + return FALSE; + } + } + return FALSE; +} + +void sub_080971E0(ObjectOnPillarEntity* this) { + EntityWithHitFlag* entity; + u32 tilePosition; + + entity = (EntityWithHitFlag*)CreateObject(SPECIAL_FX, 0x11, 0x40); + if (entity != NULL) { + PositionRelative(super, &entity->base, -0x80000, 0x20000); + } + entity = (EntityWithHitFlag*)CreateObject(SPECIAL_FX, 0x11, 0x40); + if (entity != NULL) { + PositionRelative(super, &entity->base, 0x80000, 0x20000); + } + switch (super->type) { + case 0: + default: + super->action = 4; + super->frameIndex = 1; + super->spritePriority.b0 = 7; + SetTile(0, COORD_TO_TILE(super), super->collisionLayer); + DeleteThisEntity(); + break; + case 1: + tilePosition = COORD_TO_TILE(super); + if (sub_08097348(tilePosition) == 0) { + SetTileType(0x73, tilePosition, super->collisionLayer); + } + DeleteThisEntity(); + break; + case 2: + entity = (EntityWithHitFlag*)CreateObject(HITTABLE_LEVER, 0, 0); + if (entity != NULL) { + (entity->base).x.HALF.HI = (super->x.HALF.HI & 0xfff0) + 8; + (entity->base).y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 8; + (entity->base).collisionLayer = super->collisionLayer; + entity->hitFlag = this->hitFlag; + } + DeleteThisEntity(); + break; + case 3: + entity = (EntityWithHitFlag*)CreateObject(HITTABLE_LEVER, 1, 0); + if (entity != NULL) { + (entity->base).x.HALF.HI = (super->x.HALF.HI & 0xfff0) + 8; + (entity->base).y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 8; + (entity->base).collisionLayer = super->collisionLayer; + entity->hitFlag = this->hitFlag; + } + DeleteThisEntity(); + break; + } +} + +bool32 sub_08097348(u32 tilePosition) { + u32 index; + TileEntity* tileEntity = gSmallChests; + for (index = 0; index < 8; index++, tileEntity++) { + if (tileEntity->_4 == tilePosition) { + return CheckLocalFlag(tileEntity->_1); + } + } + return FALSE; +}