diff --git a/README.md b/README.md index 04250606..78672c1b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # The Legend of Zelda: The Minish Cap -**Progress:** [⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜] 10% +**Progress:** [⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜] 20% ```diff - WARNING! - diff --git a/asm/bobomb.s b/asm/bobomb.s deleted file mode 100644 index c0cf57ce..00000000 --- a/asm/bobomb.s +++ /dev/null @@ -1,784 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Bobomb -Bobomb: @ 0x0802C660 - push {lr} - ldr r1, _0802C66C @ =gUnk_080CD5D4 - bl EnemyFunctionHandler - pop {pc} - .align 2, 0 -_0802C66C: .4byte gUnk_080CD5D4 - - thumb_func_start sub_0802C670 -sub_0802C670: @ 0x0802C670 - push {lr} - ldr r2, _0802C684 @ =gUnk_080CD5EC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802C684: .4byte gUnk_080CD5EC - - thumb_func_start sub_0802C688 -sub_0802C688: @ 0x0802C688 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0802C69A - b _0802C79E -_0802C69A: - movs r0, #0x7f - ands r0, r1 - cmp r0, #0x16 - bhi _0802C740 - lsls r0, r0, #2 - ldr r1, _0802C6AC @ =_0802C6B0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802C6AC: .4byte _0802C6B0 -_0802C6B0: @ jump table - .4byte _0802C70C @ case 0 - .4byte _0802C70C @ case 1 - .4byte _0802C740 @ case 2 - .4byte _0802C740 @ case 3 - .4byte _0802C740 @ case 4 - .4byte _0802C740 @ case 5 - .4byte _0802C740 @ case 6 - .4byte _0802C740 @ case 7 - .4byte _0802C740 @ case 8 - .4byte _0802C740 @ case 9 - .4byte _0802C740 @ case 10 - .4byte _0802C740 @ case 11 - .4byte _0802C740 @ case 12 - .4byte _0802C740 @ case 13 - .4byte _0802C72C @ case 14 - .4byte _0802C740 @ case 15 - .4byte _0802C740 @ case 16 - .4byte _0802C740 @ case 17 - .4byte _0802C740 @ case 18 - .4byte _0802C740 @ case 19 - .4byte _0802C72C @ case 20 - .4byte _0802C72C @ case 21 - .4byte _0802C72C @ case 22 -_0802C70C: - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - beq _0802C7A6 - adds r1, r4, #0 - adds r1, #0x42 - movs r0, #0 - strb r0, [r1] - ldr r0, _0802C728 @ =gPlayerEntity - adds r0, #0x42 - movs r1, #4 - strb r1, [r0] - b _0802C7A6 - .align 2, 0 -_0802C728: .4byte gPlayerEntity -_0802C72C: - movs r1, #0 - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x42 - strb r1, [r0] - adds r0, r4, #0 - bl sub_0802CBC4 - b _0802C7A6 -_0802C740: - adds r2, r4, #0 - adds r2, #0x82 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - adds r1, r4, #0 - adds r1, #0x80 - movs r0, #0x1c - strb r0, [r1] - ldrb r0, [r2] - cmp r0, #1 - beq _0802C75E - cmp r0, #2 - beq _0802C770 - b _0802C79E -_0802C75E: - adds r0, r4, #0 - bl sub_0802CB68 - ldr r0, _0802C76C @ =0x0000014D - bl EnqueueSFX - b _0802C79E - .align 2, 0 -_0802C76C: .4byte 0x0000014D -_0802C770: - movs r0, #3 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x6e - strb r0, [r1] - movs r1, #1 - strb r1, [r4, #0xf] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - movs r0, #0 - strh r0, [r4, #0x24] - adds r0, r4, #0 - adds r0, #0x81 - strb r1, [r0] - ldrb r1, [r4, #0x15] - lsrs r1, r1, #4 - movs r0, #6 - orrs r1, r0 - adds r0, r4, #0 - bl InitializeAnimation -_0802C79E: - ldr r1, _0802C7A8 @ =gUnk_080CD5D4 - adds r0, r4, #0 - bl sub_0804AA30 -_0802C7A6: - pop {r4, pc} - .align 2, 0 -_0802C7A8: .4byte gUnk_080CD5D4 - - thumb_func_start sub_0802C7AC -sub_0802C7AC: @ 0x0802C7AC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #2 - bhi _0802C7F6 - adds r0, r4, #0 - bl sub_0806F520 - adds r1, r0, #0 - cmp r1, #0 - bne _0802C7F6 - strb r1, [r4, #0xd] - movs r0, #1 - strb r0, [r4, #0xf] - strh r1, [r4, #0x36] - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #2 - beq _0802C7E2 - movs r1, #0x80 - cmp r0, #0 - beq _0802C7E0 - movs r0, #0x80 - lsls r0, r0, #2 - adds r1, r0, #0 -_0802C7E0: - strh r1, [r4, #0x24] -_0802C7E2: - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - adds r0, r4, #0 - adds r0, #0x83 - movs r1, #0 - strb r1, [r0] - subs r0, #2 - strb r1, [r0] - b _0802C816 -_0802C7F6: - ldr r0, _0802C818 @ =0x0000FFFF - strh r0, [r4, #0x36] - ldr r1, _0802C81C @ =gUnk_080CD600 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802C816 - adds r0, r4, #0 - bl GetNextFrame -_0802C816: - pop {r4, pc} - .align 2, 0 -_0802C818: .4byte 0x0000FFFF -_0802C81C: .4byte gUnk_080CD600 - - thumb_func_start sub_0802C820 -sub_0802C820: @ 0x0802C820 - movs r1, #1 - strb r1, [r0, #0xd] - movs r1, #0x3c - strb r1, [r0, #0x1d] - bx lr - .align 2, 0 - - thumb_func_start sub_0802C82C -sub_0802C82C: @ 0x0802C82C - push {lr} - bl sub_0806F4E8 - pop {pc} - - thumb_func_start sub_0802C834 -sub_0802C834: @ 0x0802C834 - push {lr} - bl sub_0806F3E4 - pop {pc} - - thumb_func_start sub_0802C83C -sub_0802C83C: @ 0x0802C83C - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x82 - ldrb r0, [r1] - cmp r0, #0 - beq _0802C88C - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802C884 - movs r0, #3 - strb r0, [r4, #0xc] - ldr r0, _0802C86C @ =gPlayerEntity - ldrb r0, [r0, #0x14] - movs r1, #6 - ands r1, r0 - cmp r1, #2 - beq _0802C870 - cmp r1, #6 - beq _0802C876 - b _0802C87C - .align 2, 0 -_0802C86C: .4byte gPlayerEntity -_0802C870: - ldrh r0, [r4, #0x2e] - subs r0, #6 - b _0802C87A -_0802C876: - ldrh r0, [r4, #0x2e] - adds r0, #6 -_0802C87A: - strh r0, [r4, #0x2e] -_0802C87C: - adds r0, r4, #0 - bl sub_0802CBC4 - b _0802C8B2 -_0802C884: - adds r0, r4, #0 - bl sub_0802CC18 - b _0802C8A2 -_0802C88C: - movs r0, #2 - strb r0, [r1] - movs r0, #0x78 - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x15] - lsrs r1, r1, #4 - movs r0, #6 - orrs r1, r0 - adds r0, r4, #0 - bl InitializeAnimation -_0802C8A2: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x6e - strb r0, [r1] -_0802C8B2: - pop {r4, pc} - - thumb_func_start nullsub_149 -nullsub_149: @ 0x0802C8B4 - bx lr - .align 2, 0 - - thumb_func_start sub_0802C8B8 -sub_0802C8B8: @ 0x0802C8B8 - push {lr} - movs r1, #3 - strb r1, [r0, #0xc] - bl sub_0802CBC4 - pop {pc} - - thumb_func_start sub_0802C8C4 -sub_0802C8C4: @ 0x0802C8C4 - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A7D4 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - pop {r4, pc} - - thumb_func_start sub_0802C8D8 -sub_0802C8D8: @ 0x0802C8D8 - push {r4, r5, lr} - adds r5, r0, #0 - movs r4, #0 - movs r0, #1 - strb r0, [r5, #0xc] - movs r0, #0x3c - strb r0, [r5, #0xe] - strb r4, [r5, #0xf] - bl Random - movs r1, #0x18 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r5, #0x15] - strb r4, [r5, #0x16] - movs r0, #0x12 - strb r0, [r5, #0x1c] - adds r0, r5, #0 - adds r0, #0x82 - strb r4, [r0] - adds r0, #1 - strb r4, [r0] - subs r0, #3 - strb r4, [r0] - adds r0, #1 - strb r4, [r0] - ldrb r1, [r5, #0x15] - lsrs r1, r1, #4 - adds r0, r5, #0 - bl InitializeAnimation - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0802C91C -sub_0802C91C: @ 0x0802C91C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl ProcessMovement - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - beq _0802C97A - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _0802C950 - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_0800417E - ldrb r1, [r4, #0x15] - lsrs r1, r1, #4 - movs r0, #2 - orrs r1, r0 - adds r0, r4, #0 - bl InitializeAnimation -_0802C950: - ldrb r0, [r4, #0xe] - subs r1, r0, #1 - strb r1, [r4, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _0802C964 - adds r0, r4, #0 - bl sub_0802CBC4 - b _0802C9B4 -_0802C964: - movs r0, #0xf - ands r1, r0 - cmp r1, #8 - bne _0802C972 - adds r0, r4, #0 - bl CreateDustSmall -_0802C972: - adds r0, r4, #0 - bl sub_0802CC18 - b _0802C9B4 -_0802C97A: - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _0802C992 - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_0800417E - ldrb r1, [r4, #0x15] - lsrs r1, r1, #4 - adds r0, r4, #0 - bl InitializeAnimation -_0802C992: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802C9B4 - movs r0, #0x3c - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x15] - adds r1, #8 - movs r0, #0x1c - ands r1, r0 - strb r1, [r4, #0x15] - lsrs r1, r1, #4 - adds r0, r4, #0 - bl InitializeAnimation -_0802C9B4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802C9B8 -sub_0802C9B8: @ 0x0802C9B8 - push {lr} - ldr r2, _0802C9CC @ =gUnk_080CD618 - ldrb r1, [r0, #0xd] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802C9CC: .4byte gUnk_080CD618 - - thumb_func_start sub_0802C9D0 -sub_0802C9D0: @ 0x0802C9D0 - push {r4, lr} - adds r4, r0, #0 - movs r2, #1 - strb r2, [r4, #0xd] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r3, r4, #0 - adds r3, #0x29 - ldrb r1, [r3] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r3] - adds r0, r4, #0 - adds r0, #0x83 - strb r2, [r0] - adds r0, r4, #0 - bl sub_0802CC18 - ldrb r1, [r4, #0x15] - lsrs r1, r1, #4 - movs r0, #6 - orrs r1, r0 - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_0802CA10 -sub_0802CA10: @ 0x0802CA10 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _0802CA30 @ =gPlayerState - ldrb r0, [r0, #5] - cmp r0, #5 - beq _0802CA42 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802CA34 - adds r0, r4, #0 - bl sub_0802CBC4 - b _0802CA66 - .align 2, 0 -_0802CA30: .4byte gPlayerState -_0802CA34: - adds r0, r4, #0 - bl sub_0802CC18 - adds r0, r4, #0 - bl GetNextFrame - b _0802CA66 -_0802CA42: - adds r1, r4, #0 - adds r1, #0x83 - movs r0, #2 - strb r0, [r1] - ldr r0, _0802CA68 @ =gPlayerEntity - ldrb r0, [r0, #0x14] - lsls r0, r0, #2 - movs r1, #4 - orrs r0, r1 - movs r1, #0x1c - ands r0, r1 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_0802CC18 - adds r0, r4, #0 - bl GetNextFrame -_0802CA66: - pop {r4, pc} - .align 2, 0 -_0802CA68: .4byte gPlayerEntity - - thumb_func_start sub_0802CA6C -sub_0802CA6C: @ 0x0802CA6C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802CA84 - adds r0, r4, #0 - bl sub_0802CBC4 - b _0802CA90 -_0802CA84: - adds r0, r4, #0 - bl sub_0802CC18 - adds r0, r4, #0 - bl GetNextFrame -_0802CA90: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802CA94 -sub_0802CA94: @ 0x0802CA94 - push {lr} - adds r3, r0, #0 - movs r2, #0 - movs r0, #3 - strb r0, [r3, #0xc] - ldrb r1, [r3, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r3, #0x10] - movs r0, #1 - strb r0, [r3, #0xf] - movs r0, #0x29 - adds r0, r0, r3 - mov ip, r0 - ldrb r1, [r0] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - mov r1, ip - strb r0, [r1] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r3, #0x20] - movs r0, #0 - strh r2, [r3, #0x24] - adds r1, r3, #0 - adds r1, #0x83 - strb r0, [r1] - subs r1, #2 - strb r0, [r1] - ldr r0, _0802CAF4 @ =gPlayerEntity - ldrb r1, [r0, #0x14] - lsls r1, r1, #2 - movs r0, #4 - orrs r1, r0 - movs r0, #0x1c - ands r1, r0 - strb r1, [r3, #0x15] - lsrs r1, r1, #4 - movs r0, #6 - orrs r1, r0 - adds r0, r3, #0 - bl InitializeAnimation - pop {pc} - .align 2, 0 -_0802CAF4: .4byte gPlayerEntity - - thumb_func_start sub_0802CAF8 -sub_0802CAF8: @ 0x0802CAF8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802CB10 - adds r0, r4, #0 - bl sub_0802CBC4 - b _0802CB62 -_0802CB10: - adds r0, r4, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _0802CB30 - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_080044EC - cmp r0, #1 - bne _0802CB30 - movs r0, #0x82 - lsls r0, r0, #1 - bl EnqueueSFX -_0802CB30: - adds r0, r4, #0 - bl sub_0802CC18 - adds r0, r4, #0 - bl sub_08078930 - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0802CB5C - movs r1, #0x36 - ldrsh r0, [r4, r1] - cmp r0, #0 - bne _0802CB5C - strb r0, [r4, #0xf] - ldrb r0, [r4, #0x10] - movs r1, #0x80 - orrs r1, r0 - strb r1, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x6e - strb r0, [r1] -_0802CB5C: - adds r0, r4, #0 - bl GetNextFrame -_0802CB62: - pop {r4, pc} - - thumb_func_start nullsub_150 -nullsub_150: @ 0x0802CB64 - bx lr - .align 2, 0 - - thumb_func_start sub_0802CB68 -sub_0802CB68: @ 0x0802CB68 - push {r4, r5, lr} - adds r5, r0, #0 - movs r4, #0 - movs r1, #0 - movs r0, #1 - strb r0, [r5, #0xc] - strb r1, [r5, #0xd] - bl Random - adds r2, r0, #0 - movs r0, #0x18 - ands r2, r0 - movs r0, #4 - orrs r2, r0 - orrs r2, r4 - strb r2, [r5, #0x15] - ldrb r0, [r5, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] - adds r0, r5, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - beq _0802CBB2 - movs r0, #0xc8 - strb r0, [r5, #0xe] - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r5, #0x24] - lsrs r1, r2, #4 - movs r0, #2 - orrs r1, r0 - adds r0, r5, #0 - bl InitializeAnimation - b _0802CBC2 -_0802CBB2: - movs r0, #0x3c - strb r0, [r5, #0xe] - movs r0, #0x80 - strh r0, [r5, #0x24] - lsrs r1, r2, #4 - adds r0, r5, #0 - bl InitializeAnimation -_0802CBC2: - pop {r4, r5, pc} - - thumb_func_start sub_0802CBC4 -sub_0802CBC4: @ 0x0802CBC4 - push {r4, lr} - adds r4, r0, #0 - movs r2, #0 - movs r0, #4 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #8 - ands r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - adds r0, #0x45 - strb r2, [r0] - adds r0, #0x3e - ldrb r0, [r0] - cmp r0, #0 - beq _0802CBF0 - bl sub_08079184 -_0802CBF0: - adds r0, r4, #0 - bl sub_08078954 - adds r0, r4, #0 - movs r1, #0x20 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - adds r2, r0, #0 - cmp r2, #0 - beq _0802CC14 - adds r0, r4, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r2, #0 - adds r0, #0x38 - strb r1, [r0] -_0802CC14: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802CC18 -sub_0802CC18: @ 0x0802CC18 - push {lr} - adds r1, r0, #0 - adds r1, #0x80 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802CC34 - movs r0, #0x1c - strb r0, [r1] - ldr r0, _0802CC38 @ =0x0000014D - bl EnqueueSFX -_0802CC34: - pop {pc} - .align 2, 0 -_0802CC38: .4byte 0x0000014D diff --git a/asm/bombPeahat.s b/asm/bombPeahat.s deleted file mode 100644 index cb6928ae..00000000 --- a/asm/bombPeahat.s +++ /dev/null @@ -1,1319 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0802A924 -sub_0802A924: @ 0x0802A924 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - movs r5, #0 - movs r6, #1 - movs r0, #1 - strb r0, [r7, #0xc] - strb r5, [r7, #0xd] - strb r5, [r7, #0xe] - strb r5, [r7, #0xf] - ldr r0, _0802A9A0 @ =gUnk_080CD16C - str r0, [r7, #0x48] - movs r4, #0 - ldr r0, _0802A9A4 @ =0x0000FFD0 - strh r0, [r7, #0x36] - bl Random - ands r0, r6 - adds r1, r7, #0 - adds r1, #0x80 - strb r0, [r1] - adds r0, r7, #0 - adds r0, #0x82 - strh r5, [r0] - subs r0, #7 - strb r4, [r0] - adds r0, #6 - strb r4, [r0] - subs r0, #7 - strb r4, [r0] - subs r0, #2 - strb r4, [r0] - adds r0, #1 - strb r4, [r0] - subs r1, #0x48 - movs r0, #3 - strb r0, [r1] - ldrb r2, [r7, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r7, #0x1b] - ldrb r0, [r7, #0x19] - ands r1, r0 - orrs r1, r2 - strb r1, [r7, #0x19] - adds r2, r7, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r6 - strb r0, [r2] - ldrb r1, [r7, #0xa] - adds r1, #1 - adds r0, r7, #0 - bl InitializeAnimation - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0802A9A0: .4byte gUnk_080CD16C -_0802A9A4: .4byte 0x0000FFD0 - - thumb_func_start sub_0802A9A8 -sub_0802A9A8: @ 0x0802A9A8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0802A9B8 - subs r0, #1 - strb r0, [r4, #0xf] - b _0802AA3E -_0802A9B8: - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802A9DE - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0802AA38 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - movs r0, #0x40 - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #8 - bl sub_0802ACDC - b _0802AA38 -_0802A9DE: - ldr r0, _0802AA14 @ =gRoomControls - ldrh r1, [r0] - adds r2, r0, #0 - cmp r1, #0 - bne _0802AA3E - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r1, r4, #0 - adds r1, #0x82 - movs r0, #1 - strh r0, [r1] - adds r0, r4, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #0 - beq _0802AA18 - ldrh r0, [r2, #0xa] - subs r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #8 - b _0802AA26 - .align 2, 0 -_0802AA14: .4byte gRoomControls -_0802AA18: - movs r1, #0x80 - lsls r1, r1, #1 - adds r0, r1, #0 - ldrh r1, [r2, #0xa] - adds r0, r0, r1 - strh r0, [r4, #0x2e] - movs r0, #0x18 -_0802AA26: - strb r0, [r4, #0x15] - ldrh r0, [r2, #0xc] - adds r0, #0x40 - strh r0, [r4, #0x32] - movs r0, #0x80 - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl sub_0802ADDC -_0802AA38: - adds r0, r4, #0 - bl sub_0802AC40 -_0802AA3E: - pop {r4, pc} - - thumb_func_start sub_0802AA40 -sub_0802AA40: @ 0x0802AA40 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802AC40 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802AA66 - adds r0, r4, #0 - movs r1, #8 - bl sub_0802ACDC - adds r1, r4, #0 - adds r1, #0x7b - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] -_0802AA66: - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802AA72 - subs r0, #1 - strb r0, [r4, #0xe] - b _0802AABE -_0802AA72: - ldr r2, [r4, #0x54] - cmp r2, #0 - beq _0802AABE - ldr r0, [r2, #4] - cmp r0, #0 - bne _0802AA82 - str r0, [r4, #0x54] - b _0802AABE -_0802AA82: - adds r0, r4, #0 - adds r0, #0x80 - ldrb r0, [r0] - lsls r0, r0, #4 - adds r1, r0, #0 - adds r1, #0x18 - movs r0, #0x18 - ands r1, r0 - adds r3, r4, #0 - adds r3, #0x7b - ldrb r0, [r3] - cmp r0, #0x20 - bls _0802AA9E - strb r1, [r4, #0x15] -_0802AA9E: - ldrb r0, [r4, #0x15] - cmp r0, r1 - bne _0802AABE - movs r0, #3 - strb r0, [r4, #0xc] - movs r1, #0 - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - strb r1, [r3] - adds r1, r2, #0 - adds r1, #0x80 - movs r0, #1 - strb r0, [r1] - movs r0, #0x96 - strb r0, [r2, #0xe] -_0802AABE: - pop {r4, pc} - - thumb_func_start sub_0802AAC0 -sub_0802AAC0: @ 0x0802AAC0 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_0802AC40 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - movs r6, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802AADE - adds r0, r4, #0 - movs r1, #4 - bl sub_0802AD1C -_0802AADE: - adds r2, r4, #0 - adds r2, #0x81 - ldrb r5, [r2] - cmp r5, #0 - beq _0802AB0E - ldr r1, [r4, #0x54] - cmp r1, #0 - bne _0802AAF2 - strb r1, [r2] - b _0802AB3C -_0802AAF2: - ldr r0, [r1, #4] - cmp r0, #0 - bne _0802AAFE - strb r0, [r2] - str r0, [r4, #0x54] - b _0802AB3C -_0802AAFE: - ldrb r3, [r1, #0xe] - cmp r3, #0 - bne _0802AB3C - ldrb r0, [r1, #0xf] - cmp r0, #0x50 - bhi _0802AB3C - strb r3, [r2] - b _0802AB3C -_0802AB0E: - movs r3, #4 - strb r3, [r4, #0xc] - movs r0, #0xc0 - strb r0, [r4, #0xe] - strb r3, [r4, #0xf] - adds r2, r4, #0 - adds r2, #0x80 - ldrb r0, [r2] - movs r1, #1 - eors r0, r1 - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x78 - strb r5, [r0] - adds r0, #1 - strb r3, [r0] - ldrb r0, [r4, #0x15] - orrs r0, r6 - strb r0, [r4, #0x15] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_0802AB3C: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0802AB40 -sub_0802AB40: @ 0x0802AB40 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802AC40 - adds r3, r4, #0 - adds r3, #0x78 - ldrb r0, [r3] - cmp r0, #1 - beq _0802AB94 - cmp r0, #1 - bgt _0802AB5C - cmp r0, #0 - beq _0802AB62 - b _0802AC04 -_0802AB5C: - cmp r0, #2 - beq _0802ABC2 - b _0802AC04 -_0802AB62: - movs r1, #0x36 - ldrsh r0, [r4, r1] - cmp r0, #0 - beq _0802AB86 - adds r1, r4, #0 - adds r1, #0x79 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802AC04 - movs r0, #4 - strb r0, [r1] - ldrh r0, [r4, #0x36] - adds r0, #1 - strh r0, [r4, #0x36] - b _0802AC04 -_0802AB86: - movs r0, #1 - strb r0, [r3] - adds r1, r4, #0 - adds r1, #0x79 - movs r0, #0x30 - strb r0, [r1] - b _0802ABB6 -_0802AB94: - adds r2, r4, #0 - adds r2, #0x79 - ldrb r0, [r2] - subs r1, r0, #1 - strb r1, [r2] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _0802ABAE - movs r0, #2 - strb r0, [r3] - movs r0, #4 - strb r0, [r2] - b _0802AC04 -_0802ABAE: - movs r0, #7 - ands r1, r0 - cmp r1, #0 - bne _0802AC04 -_0802ABB6: - adds r0, r4, #0 - movs r1, #0 - bl sub_08049F84 - strb r0, [r4, #0x15] - b _0802AC04 -_0802ABC2: - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #0x30 - rsbs r0, r0, #0 - cmp r1, r0 - ble _0802ABF2 - adds r1, r4, #0 - adds r1, #0x79 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802AC04 - movs r0, #4 - strb r0, [r1] - ldrh r0, [r4, #0x36] - subs r0, #1 - strh r0, [r4, #0x36] - adds r0, r4, #0 - movs r1, #4 - bl sub_0802ACDC - b _0802AC04 -_0802ABF2: - movs r1, #0 - movs r0, #5 - strb r0, [r4, #0xc] - strh r1, [r4, #0x24] - ldrb r1, [r4, #0xa] - adds r1, #1 - adds r0, r4, #0 - bl InitializeAnimation -_0802AC04: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802AC08 -sub_0802AC08: @ 0x0802AC08 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0802AC36 - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - movs r0, #0x40 - strb r0, [r4, #0xe] - movs r0, #0xc0 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #8 - bl sub_0802ACDC - adds r0, r4, #0 - bl sub_0802ADDC -_0802AC36: - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802AC40 -sub_0802AC40: @ 0x0802AC40 - push {r4, r5, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806F69C - adds r5, r4, #0 - adds r5, #0x7a - ldrb r0, [r5] - cmp r0, #0 - beq _0802ACA2 - adds r0, r4, #0 - bl sub_0802B234 - cmp r0, #0 - bne _0802AC72 - strb r0, [r5] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - b _0802ACD8 -_0802AC72: - movs r1, #0x36 - ldrsh r0, [r4, r1] - cmp r0, #0 - bne _0802AC92 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x38 - ands r0, r1 - cmp r0, #8 - beq _0802ACDA - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #8 - b _0802ACD6 -_0802AC92: - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x38 - ands r0, r1 - cmp r0, #0x18 - beq _0802ACDA - b _0802ACCE -_0802ACA2: - adds r0, r4, #0 - bl sub_0802B234 - cmp r0, #0 - beq _0802ACDA - movs r0, #1 - strb r0, [r5] - movs r1, #0x36 - ldrsh r0, [r4, r1] - cmp r0, #0 - bne _0802ACC8 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #8 - b _0802ACD6 -_0802ACC8: - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] -_0802ACCE: - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #0x18 -_0802ACD6: - orrs r0, r1 -_0802ACD8: - strb r0, [r2] -_0802ACDA: - pop {r4, r5, pc} - - thumb_func_start sub_0802ACDC -sub_0802ACDC: @ 0x0802ACDC - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #0 - beq _0802ACF8 - ldr r0, _0802ACF4 @ =gRoomControls - movs r2, #0xa - ldrsh r1, [r0, r2] - adds r1, #0x20 - b _0802AD00 - .align 2, 0 -_0802ACF4: .4byte gRoomControls -_0802ACF8: - ldr r0, _0802AD18 @ =gRoomControls - movs r2, #0xa - ldrsh r1, [r0, r2] - adds r1, #0xd0 -_0802AD00: - movs r3, #0xc - ldrsh r2, [r0, r3] - adds r2, #0x60 - adds r0, r4, #0 - bl sub_080045B4 - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 - strb r5, [r4, #0xf] - pop {r4, r5, pc} - .align 2, 0 -_0802AD18: .4byte gRoomControls - - thumb_func_start sub_0802AD1C -sub_0802AD1C: @ 0x0802AD1C - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - movs r0, #1 - bl sub_08049DF4 - cmp r0, #0 - beq _0802AD48 - movs r1, #0x32 - ldrsh r2, [r0, r1] - subs r2, #0x18 - movs r3, #0x2e - ldrsh r1, [r0, r3] - adds r0, r4, #0 - bl sub_080045B4 - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 - strb r5, [r4, #0xf] - b _0802AD50 -_0802AD48: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0802ACDC -_0802AD50: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0802AD54 -sub_0802AD54: @ 0x0802AD54 - push {r4, lr} - adds r2, r0, #0 - adds r0, #0x82 - ldrh r0, [r0] - cmp r0, #0 - beq _0802ADAE - ldr r4, _0802AD7C @ =gRoomControls - ldrh r0, [r4] - cmp r0, #0 - beq _0802AD80 - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2, #0x18] - adds r0, r2, #0 - bl DeleteEntity - b _0802ADD8 - .align 2, 0 -_0802AD7C: .4byte gRoomControls -_0802AD80: - ldrh r1, [r4, #8] - movs r0, #0x32 - ldrsh r3, [r2, r0] - cmp r1, r3 - bgt _0802AD94 - ldrh r0, [r4, #0x20] - adds r0, r1, r0 - adds r0, #0x20 - cmp r0, r3 - bge _0802ADA0 -_0802AD94: - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2, #0x18] - b _0802ADAE -_0802ADA0: - ldrb r0, [r2, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r2, #0x18] -_0802ADAE: - adds r0, r2, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _0802ADD8 - ldr r0, [r2, #0x54] - cmp r0, #0 - beq _0802ADC4 - ldr r0, [r0, #4] - cmp r0, #0 - bne _0802ADD8 -_0802ADC4: - movs r1, #4 - strb r1, [r2, #0xc] - movs r0, #0xc0 - strb r0, [r2, #0xe] - strb r1, [r2, #0xf] - adds r2, #0x80 - ldrb r0, [r2] - movs r1, #1 - eors r0, r1 - strb r0, [r2] -_0802ADD8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802ADDC -sub_0802ADDC: @ 0x0802ADDC - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xa] - adds r1, #2 - movs r0, #0x1b - bl CreateEnemy - adds r5, r0, #0 - cmp r5, #0 - beq _0802AE20 - adds r0, r4, #0 - bl sub_0802B234 - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r1, r1, #0x1f - strb r1, [r5, #0xb] - str r4, [r5, #0x50] - str r5, [r4, #0x54] - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - adds r1, r4, #0 - adds r1, #0x81 - movs r0, #1 - strb r0, [r1] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0802AE20 - subs r1, #7 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] -_0802AE20: - pop {r4, r5, pc} - .align 2, 0 - - - thumb_func_start sub_0802AE24 -sub_0802AE24: @ 0x0802AE24 - push {lr} - mov ip, r0 - movs r2, #0 - movs r3, #1 - strb r3, [r0, #0xc] - movs r0, #0xf0 - mov r1, ip - strb r0, [r1, #0xe] - movs r0, #0x80 - lsls r0, r0, #8 - str r0, [r1, #0x20] - ldr r0, _0802AE64 @ =gUnk_080CD174 - str r0, [r1, #0x48] - adds r1, #0x3c - movs r0, #3 - strb r0, [r1] - mov r0, ip - strb r2, [r0, #0x16] - movs r0, #2 - mov r1, ip - strb r0, [r1, #0x1c] - mov r0, ip - adds r0, #0x81 - strb r2, [r0] - subs r0, #6 - strb r3, [r0] - mov r0, ip - movs r1, #3 - bl InitializeAnimation - pop {pc} - .align 2, 0 -_0802AE64: .4byte gUnk_080CD174 - - thumb_func_start sub_0802AE68 -sub_0802AE68: @ 0x0802AE68 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802B250 - adds r1, r0, #0 - cmp r1, #0 - bne _0802AE8A - movs r0, #3 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x80 - movs r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl sub_0802B264 - b _0802AEBA -_0802AE8A: - adds r0, r1, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _0802AEA8 - adds r0, r1, #0 - adds r1, r4, #0 - bl CopyPosition - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - b _0802AEBA -_0802AEA8: - movs r0, #3 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x80 - movs r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl sub_0802B264 -_0802AEBA: - pop {r4, pc} - - thumb_func_start sub_0802AEBC -sub_0802AEBC: @ 0x0802AEBC - push {lr} - ldr r2, _0802AED0 @ =gUnk_080CD158 - ldrb r1, [r0, #0xd] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802AED0: .4byte gUnk_080CD158 - - thumb_func_start sub_0802AED4 -sub_0802AED4: @ 0x0802AED4 - push {r4, r5, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r5, r4, #0 - adds r5, #0x81 - ldrb r0, [r5] - cmp r0, #1 - bhi _0802AEFC - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_080044EC - cmp r0, #1 - bne _0802AF0C - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - b _0802AF0C -_0802AEFC: - adds r0, r4, #0 - bl sub_0800442E - cmp r0, #0 - bne _0802AF0C - adds r0, r4, #0 - bl sub_08078930 -_0802AF0C: - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _0802AF24 - adds r0, r4, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _0802AF24 - movs r0, #0 - strb r0, [r4, #0xe] - movs r0, #1 - strb r0, [r4, #0xf] -_0802AF24: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0802AF28 -sub_0802AF28: @ 0x0802AF28 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xd] - adds r0, r4, #0 - bl sub_08079BD8 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #0x10 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_0802AF50 -sub_0802AF50: @ 0x0802AF50 - push {lr} - bl GetNextFrame - pop {pc} - - thumb_func_start sub_0802AF58 -sub_0802AF58: @ 0x0802AF58 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r4, #0x29 - ldrb r1, [r4] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #0x18 - orrs r0, r1 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802AF74 -sub_0802AF74: @ 0x0802AF74 - push {lr} - adds r2, r0, #0 - movs r0, #0 - movs r1, #3 - strb r1, [r2, #0xc] - strb r0, [r2, #0xd] - ldrb r0, [r2, #0xe] - cmp r0, #0x3c - bls _0802AF8A - movs r0, #0x3c - strb r0, [r2, #0xe] -_0802AF8A: - adds r0, r2, #0 - bl GetNextFrame - pop {pc} - .align 2, 0 - - thumb_func_start sub_0802AF94 -sub_0802AF94: @ 0x0802AF94 - push {lr} - bl DeleteEntity - pop {pc} - - thumb_func_start sub_0802AF9C -sub_0802AF9C: @ 0x0802AF9C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802AFC6 - ldr r0, [r4, #0x50] - adds r1, r0, #0 - adds r1, #0x7a - ldrb r0, [r1] - cmp r0, #0 - beq _0802AFC0 - subs r0, #1 - strb r0, [r1] -_0802AFC0: - adds r0, r4, #0 - bl DeleteEntity -_0802AFC6: - pop {r4, pc} - - thumb_func_start sub_0802AFC8 -sub_0802AFC8: @ 0x0802AFC8 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xf] - movs r7, #8 - cmp r0, #0x28 - bhi _0802B022 - movs r7, #4 - adds r1, r4, #0 - adds r1, #0x82 - ldrh r2, [r1] - movs r0, #0x80 - lsls r0, r0, #8 - ands r0, r2 - cmp r0, #0 - beq _0802AFEC - adds r0, r2, #0 - subs r0, #0x10 - b _0802AFF0 -_0802AFEC: - adds r0, r2, #0 - adds r0, #0x10 -_0802AFF0: - strh r0, [r1] - adds r5, r1, #0 - ldrh r2, [r5] - movs r6, #0xf0 - adds r3, r6, #0 - ands r3, r2 - subs r0, r3, #1 - cmp r0, #0x7f - bls _0802B00C - movs r3, #0x80 - lsls r3, r3, #8 - adds r0, r3, #0 - eors r0, r2 - strh r0, [r5] -_0802B00C: - ldrh r0, [r1] - adds r3, r6, #0 - ands r3, r0 - movs r2, #0x98 - lsls r2, r2, #1 - subs r2, r2, r3 - adds r0, r4, #0 - adds r1, r2, #0 - movs r3, #0 - bl sub_0805EC9C -_0802B022: - ldrb r0, [r4, #0xf] - ands r0, r7 - cmp r0, #0 - beq _0802B03A - ldrb r0, [r4, #0x1a] - lsrs r2, r0, #4 - movs r1, #0x10 - rsbs r1, r1, #0 - ands r1, r0 - orrs r1, r2 - strb r1, [r4, #0x1a] - b _0802B044 -_0802B03A: - ldrb r1, [r4, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x1a] -_0802B044: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_0802B048 -sub_0802B048: @ 0x0802B048 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x7b - ldrb r0, [r0] - cmp r0, #0 - beq _0802B080 - ldr r0, _0802B074 @ =gRoomControls - ldrh r1, [r0, #8] - movs r3, #0x32 - ldrsh r2, [r4, r3] - cmp r1, r2 - bgt _0802B06A - ldrh r0, [r0, #0x20] - adds r0, r1, r0 - adds r0, #0x20 - cmp r0, r2 - bge _0802B078 -_0802B06A: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - b _0802B07E - .align 2, 0 -_0802B074: .4byte gRoomControls -_0802B078: - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 -_0802B07E: - strb r0, [r4, #0x10] -_0802B080: - ldr r5, [r4, #0x50] - cmp r5, #0 - beq _0802B0CA - ldrb r0, [r4, #0xc] - cmp r0, #1 - bne _0802B0CA - ldrb r1, [r5, #0x19] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r3, [r4, #0x19] - movs r2, #0x3f - adds r0, r2, #0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, #0x19] - adds r0, r5, #0 - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - movs r0, #0x29 - adds r0, r0, r4 - mov ip, r0 - lsrs r1, r1, #0x1d - ldrb r3, [r0] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r3 - orrs r0, r1 - mov r1, ip - strb r0, [r1] - ldrb r0, [r5, #0x1b] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r1, [r4, #0x1b] - ands r2, r1 - orrs r2, r0 - strb r2, [r4, #0x1b] -_0802B0CA: - ldrb r2, [r4, #0xc] - cmp r2, #4 - beq _0802B19E - adds r0, r4, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #0 - beq _0802B19E - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802B10E - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0802B19E - movs r0, #0x50 - strb r0, [r4, #0xf] - adds r0, r4, #0 - adds r0, #0x82 - strh r1, [r0] - ldrb r0, [r4, #0x19] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x19] - movs r2, #0x80 - lsls r2, r2, #1 - adds r0, r4, #0 - adds r1, r2, #0 - movs r3, #0 - bl sub_0805EC9C - b _0802B19E -_0802B10E: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0802B19E - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0802B198 - cmp r2, #2 - bne _0802B12E - ldrb r0, [r4, #0xd] - cmp r0, #1 - bne _0802B12E - ldr r0, _0802B188 @ =gPlayerState - strb r1, [r0, #5] -_0802B12E: - adds r0, r4, #0 - bl sub_0805EC60 - movs r5, #0 - movs r0, #4 - strb r0, [r4, #0xc] - ldr r0, _0802B18C @ =gUnk_080CD17C - str r0, [r4, #0x48] - movs r0, #0xf - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x18] - subs r0, #0x13 - ands r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - adds r0, #0x7b - strb r5, [r0] - adds r0, r4, #0 - bl sub_08078954 - ldr r1, [r4, #0x50] - ldr r0, [r1, #4] - cmp r0, #0 - beq _0802B16C - adds r0, r1, #0 - adds r0, #0x81 - strb r5, [r0] -_0802B16C: - adds r0, r4, #0 - movs r1, #0x20 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - adds r5, r0, #0 - cmp r5, #0 - beq _0802B190 - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #1 - strb r0, [r1] - b _0802B19E - .align 2, 0 -_0802B188: .4byte gPlayerState -_0802B18C: .4byte gUnk_080CD17C -_0802B190: - adds r0, r4, #0 - bl DeleteEntity - b _0802B19E -_0802B198: - adds r0, r4, #0 - bl sub_0802AFC8 -_0802B19E: - pop {r4, r5, pc} - - thumb_func_start sub_0802B1A0 -sub_0802B1A0: @ 0x0802B1A0 - push {lr} - movs r1, #0 - movs r2, #1 - strb r2, [r0, #0xc] - strb r1, [r0, #0xe] - movs r1, #0x4f - strb r1, [r0, #0xf] - adds r1, r0, #0 - adds r1, #0x81 - strb r2, [r1] - movs r1, #0 - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_0802B1BC -sub_0802B1BC: @ 0x0802B1BC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802B1CA - subs r0, #1 - strb r0, [r4, #0xe] -_0802B1CA: - adds r0, r4, #0 - bl sub_0802B250 - adds r1, r0, #0 - cmp r1, #0 - bne _0802B1E2 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0802B264 - b _0802B200 -_0802B1E2: - adds r0, r1, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _0802B1F6 - adds r0, r1, #0 - adds r1, r4, #0 - bl CopyPosition - b _0802B200 -_0802B1F6: - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0802B264 -_0802B200: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802B204 -sub_0802B204: @ 0x0802B204 - push {r4, r5, lr} - adds r5, r0, #0 - movs r1, #0xa0 - lsls r1, r1, #6 - bl sub_080044EC - cmp r0, #1 - bne _0802B232 - movs r0, #0x22 - movs r1, #1 - bl CreateEnemy - adds r4, r0, #0 - cmp r4, #0 - beq _0802B22E - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldr r0, [r5, #0x50] - str r0, [r4, #0x50] -_0802B22E: - bl DeleteThisEntity -_0802B232: - pop {r4, r5, pc} - - thumb_func_start sub_0802B234 -sub_0802B234: @ 0x0802B234 - push {r4, lr} - movs r4, #0 - bl GetTileTypeByEntity - ldr r1, _0802B24C @ =0xFFFFFE3C - adds r0, r0, r1 - cmp r0, #1 - bls _0802B246 - movs r4, #1 -_0802B246: - adds r0, r4, #0 - pop {r4, pc} - .align 2, 0 -_0802B24C: .4byte 0xFFFFFE3C - - thumb_func_start sub_0802B250 -sub_0802B250: @ 0x0802B250 - push {lr} - ldr r1, [r0, #0x50] - cmp r1, #0 - beq _0802B260 - ldr r0, [r1, #4] - cmp r0, #0 - bne _0802B260 - movs r1, #0 -_0802B260: - adds r0, r1, #0 - pop {pc} - - thumb_func_start sub_0802B264 -sub_0802B264: @ 0x0802B264 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - bl sub_0802B234 - cmp r0, #0 - beq _0802B294 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #0x39 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #0x18 - orrs r1, r0 - strb r1, [r2] - b _0802B2A2 -_0802B294: - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] -_0802B2A2: - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 \ No newline at end of file diff --git a/asm/businessScrub.s b/asm/businessScrub.s deleted file mode 100644 index ea2a740e..00000000 --- a/asm/businessScrub.s +++ /dev/null @@ -1,1281 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start BusinessScrub -BusinessScrub: @ 0x0802890C - push {lr} - ldr r1, _08028918 @ =gUnk_080CC9C8 - bl EnemyFunctionHandler - pop {pc} - .align 2, 0 -_08028918: .4byte gUnk_080CC9C8 - - thumb_func_start sub_0802891C -sub_0802891C: @ 0x0802891C - push {lr} - ldr r2, _08028930 @ =gUnk_080CC9E0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08028930: .4byte gUnk_080CC9E0 - - thumb_func_start sub_08028934 -sub_08028934: @ 0x08028934 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #1 - bne _08028988 - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r2, #0x7f - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0x42 - bne _08028988 - movs r1, #0 - movs r0, #3 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - movs r0, #0x28 - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x10] - adds r0, r2, #0 - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #4 - bl sub_080290E0 - adds r0, r4, #0 - movs r1, #3 - movs r2, #0 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _08028982 - ldrh r0, [r1, #0x36] - subs r0, #8 - strh r0, [r1, #0x36] -_08028982: - ldr r0, _0802898C @ =0x000001BB - bl EnqueueSFX -_08028988: - pop {r4, pc} - .align 2, 0 -_0802898C: .4byte 0x000001BB - - thumb_func_start nullsub_140 -nullsub_140: @ 0x08028990 - bx lr - .align 2, 0 - - thumb_func_start sub_08028994 -sub_08028994: @ 0x08028994 - push {r4, r5, lr} - adds r4, r0, #0 - movs r0, #0 - strb r0, [r4, #0xf] - ldrh r1, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x78 - movs r5, #0 - strh r1, [r0] - ldrh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x7a - strh r0, [r1] - strb r5, [r4, #0x14] - movs r0, #0x10 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_08028E9C - ldr r0, [r4, #0x7c] - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _080289D4 - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _080289FC -_080289D4: - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x78 - strb r0, [r4, #0xe] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0xb1 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, #0 - bl sub_0802925C - adds r0, r4, #0 - movs r1, #0 - bl sub_080290E0 - b _08028A42 -_080289FC: - strb r5, [r4, #0xe] - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _08028A44 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r4, #0 - adds r0, #0x76 - strh r1, [r0] - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl sub_080001DA - adds r1, r4, #0 - adds r1, #0x74 - strh r0, [r1] - subs r1, #0x34 - movs r0, #0x41 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08028FFC -_08028A42: - pop {r4, r5, pc} - .align 2, 0 -_08028A44: .4byte gRoomControls - - thumb_func_start sub_08028A48 -sub_08028A48: @ 0x08028A48 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - adds r5, r0, #0 - cmp r5, #0 - beq _08028A5A - subs r0, #1 - strb r0, [r4, #0xe] - b _08028A72 -_08028A5A: - adds r0, r4, #0 - movs r1, #0 - bl sub_08028F98 - cmp r0, #0 - beq _08028A72 - adds r0, r4, #0 - bl sub_08029078 - strb r5, [r4, #0xd] - movs r0, #1 - strb r0, [r4, #0xf] -_08028A72: - pop {r4, r5, pc} - - thumb_func_start sub_08028A74 -sub_08028A74: @ 0x08028A74 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl GetNextFrame - ldrb r0, [r4, #0xd] - cmp r0, #4 - bls _08028A84 - b _08028BA6 -_08028A84: - lsls r0, r0, #2 - ldr r1, _08028A90 @ =_08028A94 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08028A90: .4byte _08028A94 -_08028A94: @ jump table - .4byte _08028AA8 @ case 0 - .4byte _08028ACA @ case 1 - .4byte _08028B1A @ case 2 - .4byte _08028B54 @ case 3 - .4byte _08028B76 @ case 4 -_08028AA8: - movs r6, #1 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08028BA6 - strb r6, [r4, #0xd] - movs r0, #0x3c - strb r0, [r4, #0xe] - movs r0, #0x10 - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl sub_08028FDC - b _08028B6C -_08028ACA: - movs r6, #1 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r2, #0xff - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _08028AF6 - movs r0, #2 - strb r0, [r4, #0xd] - movs r0, #0x20 - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - adds r0, r4, #0 - bl sub_08028FDC - adds r0, r4, #0 - movs r1, #2 - bl sub_080290E0 - b _08028BA6 -_08028AF6: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r2 - cmp r0, #0 - bne _08028BA6 - adds r0, r4, #0 - bl sub_08028FDC - cmp r0, #0 - beq _08028B14 - adds r0, r4, #0 - movs r1, #1 - bl sub_080290E0 -_08028B14: - movs r0, #0x10 - strb r0, [r4, #0xf] - b _08028BA6 -_08028B1A: - movs r6, #1 - adds r0, r4, #0 - bl sub_080290FC - adds r5, r4, #0 - adds r5, #0x5a - ldrb r1, [r5] - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - beq _08028BA6 - adds r0, r4, #0 - movs r1, #4 - movs r2, #0 - bl sub_0804A98C - adds r1, r0, #0 - cmp r1, #0 - beq _08028BA6 - str r4, [r1, #0x50] - ldrb r0, [r4, #0x15] - strb r0, [r1, #0x15] - ldrb r1, [r5] - movs r0, #0xfe - ands r0, r1 - strb r0, [r5] - movs r0, #3 - strb r0, [r4, #0xd] - b _08028BA6 -_08028B54: - movs r6, #2 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08028BA6 - movs r0, #4 - strb r0, [r4, #0xd] - movs r0, #0x50 - strb r0, [r4, #0xe] -_08028B6C: - adds r0, r4, #0 - movs r1, #1 - bl sub_080290E0 - b _08028BA6 -_08028B76: - movs r6, #2 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08028BA6 - adds r0, r4, #0 - movs r1, #0 - bl sub_08028F98 - adds r5, r0, #0 - cmp r5, #0 - beq _08028BB4 - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x3c - strb r0, [r4, #0xe] - movs r0, #0x10 - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl sub_08028FDC - b _08028BC2 -_08028BA6: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_08028F98 - adds r5, r0, #0 - cmp r5, #0 - bne _08028BC2 -_08028BB4: - adds r0, r4, #0 - bl sub_08028FFC - strb r5, [r4, #0xd] - movs r0, #0x50 - strb r0, [r4, #0xe] - strb r5, [r4, #0xf] -_08028BC2: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08028BC4 -sub_08028BC4: @ 0x08028BC4 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - beq _08028BD4 - cmp r0, #1 - beq _08028C14 - b _08028C76 -_08028BD4: - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _08028C0E - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08028C76 - movs r0, #1 - strb r0, [r4, #0xd] - adds r0, r4, #0 - bl sub_08028FDC - adds r0, r4, #0 - movs r1, #5 - bl sub_080290E0 - 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] - b _08028C76 -_08028C0E: - subs r0, #1 - strb r0, [r4, #0xe] - b _08028C76 -_08028C14: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08028C76 - movs r1, #0 - movs r0, #4 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r0, #5 - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl sub_080290E0 - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC - adds r2, r0, #0 - cmp r2, #0 - beq _08028C66 - adds r3, r2, #0 - adds r3, #0x29 - ldrb r1, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r2, #0x36] - subs r0, #0xc - strh r0, [r2, #0x36] - adds r0, r2, #0 - movs r1, #2 - bl sub_0805E3A0 -_08028C66: - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl SetFlag - adds r0, r4, #0 - bl sub_0802925C -_08028C76: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0800445C - pop {r4, pc} - - thumb_func_start sub_08028C84 -sub_08028C84: @ 0x08028C84 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r1, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08028CD2 - movs r0, #0x30 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xf] - adds r5, r0, #0 - cmp r5, #0 - beq _08028CB4 - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r1 - cmp r0, #0 - bne _08028CD2 - adds r0, r4, #0 - bl sub_0804AA1C - b _08028CD2 -_08028CB4: - adds r0, r4, #0 - bl sub_08028FDC - adds r1, r4, #0 - adds r1, #0x80 - cmp r0, #0 - bne _08028CC8 - ldrb r0, [r1] - cmp r0, #0 - beq _08028CD2 -_08028CC8: - strb r5, [r1] - adds r0, r4, #0 - movs r1, #0 - bl sub_080290E0 -_08028CD2: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0800445C - adds r0, r4, #0 - bl sub_08028F0C - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08028CE8 -sub_08028CE8: @ 0x08028CE8 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - ldr r6, [r5, #0x7c] - ldr r0, _08028D30 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _08028DCC - adds r0, r5, #0 - bl sub_0802915C - cmp r0, #0 - beq _08028DCC - bl sub_08056338 - cmp r0, #0 - bne _08028DCC - ldr r0, _08028D34 @ =gUnk_02002A40 - adds r0, #0xc0 - ldrh r1, [r6, #2] - ldrh r0, [r0] - cmp r1, r0 - bhi _08028DC0 - adds r0, r5, #0 - bl sub_080291DC - cmp r0, #0 - beq _08028D3C - ldr r0, _08028D38 @ =0x00002904 - bl TextboxNoOverlapFollow - movs r0, #0 - bl sub_08078A90 - b _08028DCC - .align 2, 0 -_08028D30: .4byte gTextBox -_08028D34: .4byte gUnk_02002A40 -_08028D38: .4byte 0x00002904 -_08028D3C: - ldrh r0, [r6, #2] - rsbs r0, r0, #0 - bl ModRupees - ldrb r0, [r6] - lsrs r7, r0, #2 - cmp r7, #1 - beq _08028D9C - cmp r7, #1 - bgt _08028D56 - cmp r7, #0 - beq _08028D5C - b _08028DCC -_08028D56: - cmp r7, #2 - beq _08028DAA - b _08028DCC -_08028D5C: - ldrb r1, [r6, #9] - cmp r1, #0xff - bne _08028D70 - ldr r4, _08028D98 @ =gUnk_080CC9C0 - bl Random - movs r1, #7 - ands r1, r0 - adds r1, r1, r4 - ldrb r1, [r1] -_08028D70: - ldrb r0, [r6, #8] - movs r2, #0 - bl CreateItemEntity - movs r0, #6 - strb r0, [r5, #0xc] - movs r0, #4 - strb r0, [r5, #0xe] - adds r0, r5, #0 - adds r0, #0x81 - strb r7, [r0] - adds r0, r5, #0 - movs r1, #3 - bl sub_080290E0 - movs r0, #0x87 - bl SetLocalFlag - b _08028DE2 - .align 2, 0 -_08028D98: .4byte gUnk_080CC9C0 -_08028D9C: - ldrb r0, [r6, #8] - ldrb r1, [r6, #9] - movs r2, #0 - bl CreateItemEntity - movs r0, #4 - b _08028DB6 -_08028DAA: - ldrb r0, [r6, #8] - ldrb r1, [r6, #9] - movs r2, #0 - bl CreateItemEntity - movs r0, #8 -_08028DB6: - strb r0, [r5, #0xe] - adds r0, r5, #0 - bl sub_0802922C - b _08028DE2 -_08028DC0: - ldr r0, _08028DE4 @ =0x00002903 - bl TextboxNoOverlapFollow - movs r0, #0 - bl sub_08078A90 -_08028DCC: - adds r0, r5, #0 - bl sub_0800445C - movs r0, #4 - strb r0, [r5, #0xc] - movs r0, #0x30 - strb r0, [r5, #0xe] - adds r0, r5, #0 - movs r1, #0 - bl sub_080290E0 -_08028DE2: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08028DE4: .4byte 0x00002903 - - thumb_func_start sub_08028DE8 -sub_08028DE8: @ 0x08028DE8 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _08028E08 @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #8 - bne _08028E0C - adds r4, #0x81 - ldrb r0, [r4] - cmp r0, #0 - bne _08028E3A - movs r0, #1 - bl sub_08078A90 - movs r0, #1 - strb r0, [r4] - b _08028E3A - .align 2, 0 -_08028E08: .4byte gPlayerEntity -_08028E0C: - ldr r0, _08028E3C @ =0x00002902 - bl TextboxNoOverlapFollow - movs r1, #0 - movs r0, #4 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x81 - strb r1, [r0] - movs r0, #1 - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl sub_08028EDC - movs r0, #0 - bl sub_08078A90 - adds r0, r4, #0 - bl sub_0800445C - adds r0, r4, #0 - bl GetNextFrame -_08028E3A: - pop {r4, pc} - .align 2, 0 -_08028E3C: .4byte 0x00002902 - - thumb_func_start sub_08028E40 -sub_08028E40: @ 0x08028E40 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, _08028E80 @ =gTextBox - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0 - bne _08028E72 - ldr r5, [r4, #0x7c] - movs r0, #4 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - movs r0, #1 - strb r0, [r4, #0xe] - ldrh r0, [r5, #0xa] - bl CheckLocalFlag - cmp r0, #0 - bne _08028E6C - ldrh r0, [r5, #0xa] - bl SetLocalFlag -_08028E6C: - movs r0, #0 - bl sub_08078A90 -_08028E72: - adds r0, r4, #0 - bl sub_0800445C - adds r0, r4, #0 - bl GetNextFrame - pop {r4, r5, pc} - .align 2, 0 -_08028E80: .4byte gTextBox - - thumb_func_start sub_08028E84 -sub_08028E84: @ 0x08028E84 - push {r4, lr} - adds r4, r0, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08028E98 - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #1 - strb r0, [r4, #0xe] -_08028E98: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08028E9C -sub_08028E9C: @ 0x08028E9C - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xa] - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r6, _08028ED8 @ =gUnk_080CC954 - adds r4, r1, r6 - adds r0, r4, #0 - bl sub_08029198 - cmp r0, #0 - beq _08028ECA - ldrb r1, [r4] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08028ECA - ldrh r1, [r4, #0xa] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #2 - adds r4, r0, r6 -_08028ECA: - str r4, [r5, #0x7c] - adds r1, r5, #0 - adds r1, #0x80 - movs r0, #0 - strb r0, [r1] - pop {r4, r5, r6, pc} - .align 2, 0 -_08028ED8: .4byte gUnk_080CC954 - - thumb_func_start sub_08028EDC -sub_08028EDC: @ 0x08028EDC - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, [r5, #0x7c] - adds r0, r4, #0 - bl sub_08029198 - cmp r0, #0 - beq _08028F04 - ldrb r1, [r4] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08028F04 - ldrh r0, [r4, #0xa] - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _08028F08 @ =gUnk_080CC954 - adds r4, r1, r0 - str r4, [r5, #0x7c] -_08028F04: - pop {r4, r5, pc} - .align 2, 0 -_08028F08: .4byte gUnk_080CC954 - - thumb_func_start sub_08028F0C -sub_08028F0C: @ 0x08028F0C - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r2, r5, #0 - adds r2, #0x39 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #2 - bne _08028F2C - movs r1, #0 - movs r0, #8 - strb r0, [r5, #0xc] - strb r1, [r2] - adds r0, r5, #0 - bl sub_0806F118 - b _08028F90 -_08028F2C: - cmp r0, #0 - beq _08028F90 - ldr r6, [r5, #0x7c] - movs r4, #0 - strb r4, [r2] - adds r0, r5, #0 - bl sub_0804AA1C - adds r0, r5, #0 - bl GetAnimationState - lsls r0, r0, #3 - strb r0, [r5, #0x15] - adds r0, r5, #0 - movs r1, #3 - bl sub_080290E0 - adds r1, r5, #0 - adds r1, #0x80 - movs r0, #1 - strb r0, [r1] - movs r0, #0x20 - strb r0, [r5, #0xe] - strb r4, [r5, #0xf] - adds r0, r6, #0 - bl sub_08029198 - cmp r0, #0 - beq _08028F6A - ldrh r4, [r6, #6] - b _08028F84 -_08028F6A: - ldrb r1, [r6] - movs r0, #0xfc - ands r0, r1 - cmp r0, #0xc - beq _08028F78 - movs r0, #5 - b _08028F7A -_08028F78: - movs r0, #7 -_08028F7A: - strb r0, [r5, #0xc] - ldrh r4, [r6, #4] - movs r0, #1 - bl sub_08078A90 -_08028F84: - adds r0, r4, #0 - bl TextboxNoOverlapFollow - ldr r1, _08028F94 @ =gTextBox - ldrh r0, [r6, #2] - str r0, [r1, #0x10] -_08028F90: - pop {r4, r5, r6, pc} - .align 2, 0 -_08028F94: .4byte gTextBox - - thumb_func_start sub_08028F98 -sub_08028F98: @ 0x08028F98 - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r5, r1, #0 - movs r0, #1 - bl sub_08049DF4 - adds r4, r0, #0 - cmp r4, #0 - beq _08028FD4 - adds r0, r6, #0 - adds r1, r4, #0 - movs r2, #0x28 - movs r3, #0x28 - bl sub_080041A0 - cmp r0, #0 - bne _08028FD4 - cmp r5, #2 - beq _08028FD8 - movs r3, #0x50 - cmp r5, #0 - beq _08028FC6 - movs r3, #0x58 -_08028FC6: - adds r0, r6, #0 - adds r1, r4, #0 - adds r2, r3, #0 - bl sub_080041A0 - cmp r0, #0 - bne _08028FD8 -_08028FD4: - movs r0, #0 - b _08028FDA -_08028FD8: - movs r0, #1 -_08028FDA: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08028FDC -sub_08028FDC: @ 0x08028FDC - push {r4, lr} - adds r4, r0, #0 - movs r1, #1 - bl sub_08049F84 - adds r1, r0, #4 - movs r0, #0x18 - ands r1, r0 - ldrb r0, [r4, #0x15] - cmp r1, r0 - beq _08028FF8 - strb r1, [r4, #0x15] - movs r0, #1 - b _08028FFA -_08028FF8: - movs r0, #0 -_08028FFA: - pop {r4, pc} - - thumb_func_start sub_08028FFC -sub_08028FFC: @ 0x08028FFC - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, #0 - bl sub_080AE068 - adds r0, r4, #0 - bl UnloadOBJPalette - adds r1, r4, #0 - adds r1, #0x60 - movs r0, #0xe8 - strh r0, [r1] - ldrb r1, [r4, #0x1a] - subs r0, #0xf8 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - movs r1, #0xf - ands r0, r1 - movs r1, #0x20 - orrs r0, r1 - strb r0, [r4, #0x1a] - movs r0, #0xa7 - strh r0, [r4, #0x12] - adds r0, r4, #0 - adds r0, #0x78 - ldrh r0, [r0] - strh r0, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x7a - ldrh r0, [r0] - strh r0, [r4, #0x32] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - ldr r0, _08029074 @ =0x00004022 - adds r1, r4, #0 - adds r1, #0x76 - ldrh r1, [r1] - adds r2, r4, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile - pop {r4, pc} - .align 2, 0 -_08029074: .4byte 0x00004022 - - thumb_func_start sub_08029078 -sub_08029078: @ 0x08029078 - push {r4, lr} - adds r4, r0, #0 - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - 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] - adds r0, r4, #0 - movs r1, #0x72 - bl LoadFixedGFX - cmp r0, #0 - bne _080290AE - adds r0, r4, #0 - bl DeleteEntity - b _080290DE -_080290AE: - adds r0, r4, #0 - movs r1, #0x6e - bl sub_0801D040 - movs r0, #0xd0 - strh r0, [r4, #0x12] - adds r0, r4, #0 - bl sub_08028FDC - adds r0, r4, #0 - movs r1, #1 - bl sub_080290E0 - adds r0, r4, #0 - adds r0, #0x74 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x76 - ldrh r1, [r1] - adds r2, r4, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile -_080290DE: - pop {r4, pc} - - thumb_func_start sub_080290E0 -sub_080290E0: @ 0x080290E0 - push {lr} - adds r3, r1, #0 - ldrb r1, [r0, #0x15] - lsrs r1, r1, #3 - ldr r2, _080290F8 @ =gUnk_080CCA04 - adds r3, r3, r2 - ldrb r2, [r3] - orrs r1, r2 - bl InitializeAnimation - pop {pc} - .align 2, 0 -_080290F8: .4byte gUnk_080CCA04 - - thumb_func_start sub_080290FC -sub_080290FC: @ 0x080290FC - push {r4, r5, lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - cmp r0, #0 - beq _08029158 - subs r1, r0, #1 - strb r1, [r2, #0xe] - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xf - bhi _08029158 - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _08029158 - ldrb r4, [r2, #0x15] - movs r0, #0x10 - ands r0, r4 - movs r5, #1 - cmp r0, #0 - beq _08029128 - subs r5, #2 -_08029128: - movs r3, #8 - adds r0, r3, #0 - ands r0, r4 - cmp r0, #0 - beq _08029146 - movs r4, #0x2e - ldrsh r0, [r2, r4] - ands r1, r3 - cmp r1, #0 - beq _08029140 - subs r0, r0, r5 - b _08029142 -_08029140: - adds r0, r0, r5 -_08029142: - strh r0, [r2, #0x2e] - b _08029158 -_08029146: - movs r4, #0x32 - ldrsh r0, [r2, r4] - ands r1, r3 - cmp r1, #0 - bne _08029154 - subs r0, r0, r5 - b _08029156 -_08029154: - adds r0, r0, r5 -_08029156: - strh r0, [r2, #0x32] -_08029158: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0802915C -sub_0802915C: @ 0x0802915C - push {lr} - ldr r0, [r0, #0x7c] - ldrb r0, [r0, #8] - cmp r0, #0x5c - beq _08029190 - cmp r0, #0x5c - bgt _08029174 - cmp r0, #0x1c - beq _08029186 - cmp r0, #0x44 - beq _0802917E - b _08029194 -_08029174: - cmp r0, #0x6c - beq _08029190 - cmp r0, #0x6f - beq _08029190 - b _08029194 -_0802917E: - movs r0, #0x44 - bl GetInventoryValue - b _0802918C -_08029186: - movs r0, #0x5a - bl CheckGlobalFlag -_0802918C: - cmp r0, #0 - bne _08029194 -_08029190: - movs r0, #1 - b _08029196 -_08029194: - movs r0, #0 -_08029196: - pop {pc} - - thumb_func_start sub_08029198 -sub_08029198: @ 0x08029198 - push {lr} - adds r2, r0, #0 - ldrb r1, [r2] - movs r0, #0xfc - ands r0, r1 - cmp r0, #0xc - beq _080291CA - ldrb r0, [r2, #8] - cmp r0, #0x1c - beq _080291BC - cmp r0, #0x1c - bgt _080291B6 - cmp r0, #9 - beq _080291C4 - b _080291D8 -_080291B6: - cmp r0, #0x44 - beq _080291C4 - b _080291D8 -_080291BC: - movs r0, #0x5a - bl CheckGlobalFlag - b _080291D0 -_080291C4: - bl GetInventoryValue - b _080291D0 -_080291CA: - ldrh r0, [r2, #0xa] - bl CheckLocalFlag -_080291D0: - cmp r0, #0 - beq _080291D8 - movs r0, #1 - b _080291DA -_080291D8: - movs r0, #0 -_080291DA: - pop {pc} - - thumb_func_start sub_080291DC -sub_080291DC: @ 0x080291DC - push {lr} - ldr r0, [r0, #0x7c] - ldrb r0, [r0, #8] - cmp r0, #0x6c - beq _080291EC - cmp r0, #0x6f - beq _08029204 - b _08029228 -_080291EC: - ldr r2, _080291FC @ =gBombBagSizes - ldr r1, _08029200 @ =gUnk_02002A40 - adds r0, r1, #0 - adds r0, #0xae - ldrb r0, [r0] - adds r0, r0, r2 - adds r1, #0xac - b _08029212 - .align 2, 0 -_080291FC: .4byte gBombBagSizes -_08029200: .4byte gUnk_02002A40 -_08029204: - ldr r2, _08029220 @ =gQuiverSizes - ldr r1, _08029224 @ =gUnk_02002A40 - adds r0, r1, #0 - adds r0, #0xaf - ldrb r0, [r0] - adds r0, r0, r2 - adds r1, #0xad -_08029212: - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bhi _08029228 - movs r0, #1 - b _0802922A - .align 2, 0 -_08029220: .4byte gQuiverSizes -_08029224: .4byte gUnk_02002A40 -_08029228: - movs r0, #0 -_0802922A: - pop {pc} - - thumb_func_start sub_0802922C -sub_0802922C: @ 0x0802922C - push {r4, lr} - adds r4, r0, #0 - movs r0, #0 - movs r1, #6 - strb r1, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x81 - strb r0, [r1] - ldr r0, [r4, #0x7c] - ldrb r0, [r0, #8] - cmp r0, #0x6c - beq _08029252 - cmp r0, #0x6c - bgt _08029252 - cmp r0, #0x1c - bne _08029252 - movs r0, #0x5a - bl SetGlobalFlag -_08029252: - adds r0, r4, #0 - movs r1, #3 - bl sub_080290E0 - pop {r4, pc} - - thumb_func_start sub_0802925C -sub_0802925C: @ 0x0802925C - push {r4, lr} - adds r4, r0, #0 - bl sub_0801E99C - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08078784 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08029270 -sub_08029270: @ 0x08029270 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _08029296 - adds r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] - adds r0, r2, #0 - movs r1, #0xe - bl InitializeAnimation - b _0802929C -_08029296: - adds r0, r2, #0 - bl GetNextFrame -_0802929C: - pop {pc} - .align 2, 0 \ No newline at end of file diff --git a/asm/chaser.s b/asm/chaser.s deleted file mode 100644 index 7d59932c..00000000 --- a/asm/chaser.s +++ /dev/null @@ -1,159 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Chaser -Chaser: @ 0x0802B4D8 - push {r4, r5, lr} - adds r5, r0, #0 - bl sub_080012DC - adds r1, r0, #0 - cmp r1, #0 - beq _0802B4FC - ldr r0, _0802B4F8 @ =gUnk_080012C8 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r5, #0 - bl _call_via_r1 - b _0802B510 - .align 2, 0 -_0802B4F8: .4byte gUnk_080012C8 -_0802B4FC: - ldr r4, _0802B514 @ =gUnk_080CD27C - 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 -_0802B510: - pop {r4, r5, pc} - .align 2, 0 -_0802B514: .4byte gUnk_080CD27C - - thumb_func_start sub_0802B518 -sub_0802B518: @ 0x0802B518 - push {lr} - ldr r2, _0802B52C @ =gUnk_080CD298 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802B52C: .4byte gUnk_080CD298 - - thumb_func_start sub_0802B530 -sub_0802B530: @ 0x0802B530 - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - movs r1, #0 - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_0802B540 -sub_0802B540: @ 0x0802B540 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802B550 - subs r0, #1 - strb r0, [r4, #0xe] - b _0802B56A -_0802B550: - adds r0, r4, #0 - movs r1, #1 - movs r2, #0xc - bl sub_0804A024 - adds r1, r0, #0 - cmp r1, #0xff - beq _0802B56A - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0x40 - strh r0, [r4, #0x24] - strb r1, [r4, #0x15] -_0802B56A: - pop {r4, pc} - - thumb_func_start sub_0802B56C -sub_0802B56C: @ 0x0802B56C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0802B586 - movs r0, #0x40 - strh r0, [r4, #0x24] -_0802B586: - adds r0, r4, #0 - bl sub_080AF038 - cmp r0, #0 - beq _0802B5B8 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #1 - beq _0802B5A2 - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_0802B5A2: - ldrh r2, [r4, #0x24] - movs r0, #0x24 - ldrsh r1, [r4, r0] - ldr r0, _0802B5B4 @ =0x0000021F - cmp r1, r0 - bgt _0802B5C4 - adds r0, r2, #4 - strh r0, [r4, #0x24] - b _0802B5C4 - .align 2, 0 -_0802B5B4: .4byte 0x0000021F -_0802B5B8: - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation -_0802B5C4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802B5C8 -sub_0802B5C8: @ 0x0802B5C8 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0802B5EE - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_0802B5EE: - pop {r4, pc} diff --git a/asm/fallingBoulder.s b/asm/fallingBoulder.s deleted file mode 100644 index 9fbcfe62..00000000 --- a/asm/fallingBoulder.s +++ /dev/null @@ -1,579 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start FallingBoulder -FallingBoulder: @ 0x0802C228 - push {lr} - ldr r1, _0802C234 @ =gUnk_080CD540 - bl EnemyFunctionHandler - pop {pc} - .align 2, 0 -_0802C234: .4byte gUnk_080CD540 - - thumb_func_start sub_0802C238 -sub_0802C238: @ 0x0802C238 - push {lr} - ldr r2, _0802C24C @ =gUnk_080CD558 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802C24C: .4byte gUnk_080CD558 - - thumb_func_start sub_0802C250 -sub_0802C250: @ 0x0802C250 - bx lr - .align 2, 0 - - thumb_func_start sub_0802C254 -sub_0802C254: @ 0x0802C254 - bx lr - .align 2, 0 - - thumb_func_start sub_0802C258 -sub_0802C258: @ 0x0802C258 - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r0, #0x80 - lsls r0, r0, #0xa - str r0, [r4, #0x20] - movs r0, #2 - strb r0, [r4, #0xe] - bl Random - adds r2, r0, #0 - movs r0, #0x70 - ands r2, r0 - adds r3, r4, #0 - adds r3, #0x7a - movs r1, #0 - strh r2, [r3] - ldrb r0, [r4, #0xa] - cmp r0, #1 - beq _0802C288 - cmp r0, #2 - beq _0802C290 - b _0802C29C -_0802C288: - movs r0, #0x80 - lsls r0, r0, #1 - adds r1, r0, #0 - b _0802C296 -_0802C290: - movs r5, #0x80 - lsls r5, r5, #2 - adds r1, r5, #0 -_0802C296: - adds r0, r2, #0 - orrs r0, r1 - strh r0, [r3] -_0802C29C: - ldrh r1, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x80 - movs r2, #0 - strh r1, [r0] - ldrh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x82 - strh r0, [r1] - ldr r0, _0802C310 @ =0x0000FFF0 - strh r0, [r4, #0x36] - subs r1, #0x4a - movs r0, #3 - strb r0, [r1] - ldrb r1, [r4, #0x19] - movs r0, #0x3f - ands r0, r1 - movs r1, #0x40 - orrs r0, r1 - strb r0, [r4, #0x19] - adds r3, r4, #0 - adds r3, #0x29 - ldrb r1, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, #0 - adds r0, #0x7c - strh r2, [r0] - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0802C314 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r4, #0 - adds r0, #0x7e - strh r1, [r0] - adds r0, r4, #0 - bl sub_0802C62C - adds r0, r4, #0 - bl sub_0802C4B0 - pop {r4, r5, pc} - .align 2, 0 -_0802C310: .4byte 0x0000FFF0 -_0802C314: .4byte gRoomControls - - thumb_func_start sub_0802C318 -sub_0802C318: @ 0x0802C318 - push {lr} - adds r2, r0, #0 - adds r1, r2, #0 - adds r1, #0x7a - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0802C330 - movs r0, #2 - strb r0, [r2, #0xc] -_0802C330: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0802C334 -sub_0802C334: @ 0x0802C334 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r3, r4, #0 - adds r3, #0x7c - ldrh r0, [r3] - cmp r0, #0 - bne _0802C36A - ldr r0, _0802C3C4 @ =gRoomControls - ldrh r1, [r0, #8] - ldr r2, _0802C3C8 @ =gPlayerEntity - cmp r2, #0 - bne _0802C34E - b _0802C4AA -_0802C34E: - movs r5, #0x32 - ldrsh r0, [r2, r5] - subs r0, r0, r1 - cmp r0, #0x38 - bhi _0802C35A - b _0802C4AA -_0802C35A: - movs r0, #1 - strh r0, [r3] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] -_0802C36A: - adds r0, r4, #0 - bl GetNextFrame - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0802C3C4 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r4, #0 - adds r0, #0x7e - strh r1, [r0] - adds r0, #6 - ldr r1, [r0] - adds r0, r4, #0 - bl sub_080044EC - cmp r0, #1 - bne _0802C3CC - movs r0, #0xa6 - lsls r0, r0, #1 - bl EnqueueSFX - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x7a - movs r0, #0xc - strh r0, [r1] - adds r0, r4, #0 - bl sub_0802C4B0 - b _0802C48C - .align 2, 0 -_0802C3C4: .4byte gRoomControls -_0802C3C8: .4byte gPlayerEntity -_0802C3CC: - adds r0, r4, #0 - adds r0, #0x7a - ldrh r1, [r0] - adds r7, r0, #0 - cmp r1, #0 - beq _0802C442 - subs r0, r1, #1 - strh r0, [r7] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0 - beq _0802C3EA - cmp r0, #8 - beq _0802C3F4 - b _0802C442 -_0802C3EA: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - b _0802C442 -_0802C3F4: - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _0802C442 - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _0802C442 - movs r6, #0 - movs r5, #1 -_0802C408: - adds r0, r4, #0 - movs r1, #0x15 - movs r2, #0 - bl CreateFx - adds r2, r0, #0 - cmp r2, #0 - beq _0802C420 - ldrh r0, [r2, #0x2e] - adds r0, #0xc - subs r0, r0, r6 - strh r0, [r2, #0x2e] -_0802C420: - adds r6, #0x18 - subs r5, #1 - cmp r5, #0 - bge _0802C408 - adds r0, r4, #0 - bl sub_0802C62C - bl Random - movs r1, #0xff - ands r0, r1 - movs r2, #0x80 - lsls r2, r2, #1 - adds r1, r2, #0 - orrs r0, r1 - strh r0, [r7] - b _0802C4AA -_0802C442: - ldr r0, _0802C45C @ =gRoomControls - ldrh r1, [r0, #8] - ldrh r0, [r0, #0x20] - adds r1, r1, r0 - movs r5, #0x32 - ldrsh r0, [r4, r5] - subs r5, r1, r0 - cmp r5, #4 - ble _0802C460 - adds r0, r4, #0 - bl sub_080AEFB4 - b _0802C48C - .align 2, 0 -_0802C45C: .4byte gRoomControls -_0802C460: - adds r0, r4, #0 - bl sub_0806F69C - movs r1, #0x36 - ldrsh r0, [r4, r1] - subs r0, r0, r5 - cmp r0, #0x38 - ble _0802C48C - adds r0, r4, #0 - bl sub_0802C62C - bl Random - movs r1, #0x7f - ands r0, r1 - movs r1, #0x80 - orrs r0, r1 - strh r0, [r7] - ldrb r0, [r4, #0xa] - cmp r0, #3 - bne _0802C48C - strb r0, [r4, #0xc] -_0802C48C: - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #3 - strb r0, [r1] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0xb - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer -_0802C4AA: - pop {r4, r5, r6, r7, pc} - - thumb_func_start nullsub_148 -nullsub_148: @ 0x0802C4AC - bx lr - .align 2, 0 - - thumb_func_start sub_0802C4B0 -sub_0802C4B0: @ 0x0802C4B0 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r0, #0x7e - ldrh r0, [r0] - adds r1, r5, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl sub_080001DA - adds r1, r0, #0 - ldr r0, _0802C4D8 @ =0x000001AB - cmp r1, r0 - blo _0802C4E4 - adds r0, #4 - cmp r1, r0 - bls _0802C4DC - adds r0, #0x15 - cmp r1, r0 - beq _0802C4E0 - b _0802C4E4 - .align 2, 0 -_0802C4D8: .4byte 0x000001AB -_0802C4DC: - movs r6, #8 - b _0802C4E6 -_0802C4E0: - movs r6, #4 - b _0802C4E6 -_0802C4E4: - movs r6, #0 -_0802C4E6: - bl Random - adds r4, r0, #0 - movs r0, #7 - ands r4, r0 - movs r0, #4 - ands r0, r4 - cmp r0, #0 - beq _0802C518 - movs r0, #3 - ands r4, r0 - cmp r4, #0 - beq _0802C50C - ldr r0, _0802C508 @ =gUnk_080CD568 - movs r1, #2 - orrs r1, r6 - b _0802C532 - .align 2, 0 -_0802C508: .4byte gUnk_080CD568 -_0802C50C: - ldr r0, _0802C514 @ =gUnk_080CD568 - lsls r1, r6, #1 - b _0802C534 - .align 2, 0 -_0802C514: .4byte gUnk_080CD568 -_0802C518: - movs r2, #3 - ands r4, r2 - cmp r4, #0 - beq _0802C52C - ldr r0, _0802C528 @ =gUnk_080CD568 - movs r1, #1 - orrs r1, r6 - b _0802C532 - .align 2, 0 -_0802C528: .4byte gUnk_080CD568 -_0802C52C: - ldr r0, _0802C570 @ =gUnk_080CD568 - adds r1, r6, #0 - orrs r1, r2 -_0802C532: - lsls r1, r1, #1 -_0802C534: - adds r1, r1, r0 - ldrh r0, [r1] - strh r0, [r5, #0x24] - bl Random - adds r4, r0, #0 - movs r0, #7 - ands r4, r0 - movs r0, #4 - ands r0, r4 - cmp r0, #0 - beq _0802C584 - ldrb r0, [r5, #0xe] - cmp r0, #0 - beq _0802C55E - movs r0, #0 - strb r0, [r5, #0xe] - adds r0, r5, #0 - movs r1, #0 - bl InitializeAnimation -_0802C55E: - movs r0, #3 - ands r4, r0 - cmp r4, #0 - beq _0802C578 - ldr r0, _0802C574 @ =gUnk_080CD580 - movs r1, #1 - orrs r1, r6 - b _0802C5B2 - .align 2, 0 -_0802C570: .4byte gUnk_080CD568 -_0802C574: .4byte gUnk_080CD580 -_0802C578: - ldr r0, _0802C580 @ =gUnk_080CD580 - adds r0, r6, r0 - ldrb r0, [r0] - b _0802C5B6 - .align 2, 0 -_0802C580: .4byte gUnk_080CD580 -_0802C584: - ldrb r0, [r5, #0xe] - cmp r0, #1 - beq _0802C596 - movs r0, #1 - strb r0, [r5, #0xe] - adds r0, r5, #0 - movs r1, #1 - bl InitializeAnimation -_0802C596: - movs r2, #3 - ands r4, r2 - cmp r4, #0 - beq _0802C5AC - ldr r0, _0802C5A8 @ =gUnk_080CD580 - movs r1, #2 - orrs r1, r6 - b _0802C5B2 - .align 2, 0 -_0802C5A8: .4byte gUnk_080CD580 -_0802C5AC: - ldr r0, _0802C5E4 @ =gUnk_080CD580 - adds r1, r6, #0 - orrs r1, r2 -_0802C5B2: - adds r1, r1, r0 - ldrb r0, [r1] -_0802C5B6: - strb r0, [r5, #0x15] - bl Random - adds r4, r0, #0 - movs r0, #7 - ands r4, r0 - movs r0, #0x80 - lsls r0, r0, #0xa - str r0, [r5, #0x20] - movs r0, #4 - ands r0, r4 - cmp r0, #0 - beq _0802C5FC - movs r0, #3 - ands r4, r0 - cmp r4, #0 - beq _0802C5EC - adds r2, r5, #0 - adds r2, #0x84 - ldr r1, _0802C5E8 @ =gUnk_080CD58C - movs r0, #1 - orrs r6, r0 - b _0802C61A - .align 2, 0 -_0802C5E4: .4byte gUnk_080CD580 -_0802C5E8: .4byte gUnk_080CD58C -_0802C5EC: - adds r2, r5, #0 - adds r2, #0x84 - ldr r1, _0802C5F8 @ =gUnk_080CD58C - orrs r6, r0 - b _0802C61A - .align 2, 0 -_0802C5F8: .4byte gUnk_080CD58C -_0802C5FC: - movs r0, #3 - ands r4, r0 - cmp r4, #0 - beq _0802C614 - adds r2, r5, #0 - adds r2, #0x84 - ldr r1, _0802C610 @ =gUnk_080CD58C - movs r0, #2 - orrs r6, r0 - b _0802C61A - .align 2, 0 -_0802C610: .4byte gUnk_080CD58C -_0802C614: - adds r2, r5, #0 - adds r2, #0x84 - ldr r1, _0802C628 @ =gUnk_080CD58C -_0802C61A: - lsls r0, r6, #1 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - str r0, [r2] - pop {r4, r5, r6, pc} - .align 2, 0 -_0802C628: .4byte gUnk_080CD58C - - thumb_func_start sub_0802C62C -sub_0802C62C: @ 0x0802C62C - adds r3, r0, #0 - movs r2, #0 - movs r0, #1 - strb r0, [r3, #0xc] - adds r0, r3, #0 - adds r0, #0x82 - ldrh r0, [r0] - strh r0, [r3, #0x32] - adds r0, r3, #0 - adds r0, #0x80 - ldrh r0, [r0] - strh r0, [r3, #0x2e] - ldrb r1, [r3, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r3, #0x18] - ldrb r1, [r3, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r3, #0x10] - adds r0, r3, #0 - adds r0, #0x7c - strh r2, [r0] - bx lr - .align 2, 0 diff --git a/asm/helmasaur.s b/asm/helmasaur.s deleted file mode 100644 index e8a891ea..00000000 --- a/asm/helmasaur.s +++ /dev/null @@ -1,936 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Helmasaur -Helmasaur: @ 0x0802BB6C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0802BB94 - ldr r1, _0802BB90 @ =gUnk_080CD3E4 - adds r0, r4, #0 - bl EnemyFunctionHandler - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - b _0802BBA4 - .align 2, 0 -_0802BB90: .4byte gUnk_080CD3E4 -_0802BB94: - ldr r0, _0802BBA8 @ =gUnk_080CD3FC - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 -_0802BBA4: - pop {r4, pc} - .align 2, 0 -_0802BBA8: .4byte gUnk_080CD3FC - - thumb_func_start sub_0802BBAC -sub_0802BBAC: @ 0x0802BBAC - push {lr} - ldr r2, _0802BBC0 @ =gUnk_080CD408 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802BBC0: .4byte gUnk_080CD408 - - thumb_func_start sub_0802BBC4 -sub_0802BBC4: @ 0x0802BBC4 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #0x19 - beq _0802BBFE - adds r0, r4, #0 - adds r0, #0x41 - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0 - beq _0802BBEA - cmp r1, #0 - blt _0802BBFE - cmp r1, #3 - bgt _0802BBFE - cmp r1, #2 - blt _0802BBFE -_0802BBEA: - ldrb r0, [r4, #0xc] - cmp r0, #4 - bne _0802BBFE - adds r1, r4, #0 - adds r1, #0x42 - movs r0, #0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_0802C218 -_0802BBFE: - adds r0, r4, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _0802BC10 - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_0802BC10: - ldr r1, _0802BC1C @ =gUnk_080CD3E4 - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, pc} - .align 2, 0 -_0802BC1C: .4byte gUnk_080CD3E4 - - thumb_func_start sub_0802BC20 -sub_0802BC20: @ 0x0802BC20 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #0x19 - beq _0802BC4C - adds r0, r4, #0 - bl sub_0806F520 - cmp r0, #0 - beq _0802BC6C - ldr r0, _0802BC48 @ =gUnk_080CD42C - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - b _0802BC6C - .align 2, 0 -_0802BC48: .4byte gUnk_080CD42C -_0802BC4C: - ldrb r0, [r4, #0xd] - cmp r0, #2 - bhi _0802BC5C - adds r0, r4, #0 - bl sub_0806F520 - cmp r0, #0 - beq _0802BC6C -_0802BC5C: - ldr r0, _0802BC70 @ =gUnk_080CD438 - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 -_0802BC6C: - pop {r4, pc} - .align 2, 0 -_0802BC70: .4byte gUnk_080CD438 - - thumb_func_start sub_0802BC74 -sub_0802BC74: @ 0x0802BC74 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802C1C0 - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x3c - strb r0, [r4, #0x1d] - ldr r0, _0802BC9C @ =gPlayerEntity - ldrb r0, [r0, #0x14] - lsrs r0, r0, #1 - movs r1, #2 - eors r0, r1 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 -_0802BC9C: .4byte gPlayerEntity - - thumb_func_start sub_0802BCA0 -sub_0802BCA0: @ 0x0802BCA0 - push {lr} - bl sub_0806F4E8 - pop {pc} - - thumb_func_start sub_0802BCA8 -sub_0802BCA8: @ 0x0802BCA8 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x3f - ldrb r0, [r1] - cmp r0, #0x19 - beq _0802BCFA - movs r0, #7 - strb r0, [r4, #0xc] - movs r0, #0x5a - strb r0, [r4, #0xe] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - movs r0, #0x19 - strb r0, [r1] - adds r2, r4, #0 - adds r2, #0x3a - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 - strb r0, [r2] - movs r0, #0x12 - strb r0, [r4, #0x1c] - movs r0, #0x20 - movs r1, #1 - bl CreateEnemy - adds r1, r0, #0 - cmp r1, #0 - beq _0802BCF0 - ldrb r0, [r4, #0x14] - strb r0, [r1, #0x14] - adds r0, r4, #0 - bl CopyPosition -_0802BCF0: - ldrb r1, [r4, #0x14] - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation -_0802BCFA: - pop {r4, pc} - - thumb_func_start sub_0802BCFC -sub_0802BCFC: @ 0x0802BCFC - movs r1, #1 - strb r1, [r0, #0xd] - movs r1, #0x3c - strb r1, [r0, #0x1d] - bx lr - .align 2, 0 - - thumb_func_start sub_0802BD08 -sub_0802BD08: @ 0x0802BD08 - push {lr} - bl sub_0806F3E4 - pop {pc} - - thumb_func_start sub_0802BD10 -sub_0802BD10: @ 0x0802BD10 - push {lr} - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - movs r1, #2 - bl UpdateAnimationVariableFrames - pop {pc} - .align 2, 0 - - thumb_func_start nullsub_145 -nullsub_145: @ 0x0802BD24 - bx lr - .align 2, 0 - - thumb_func_start sub_0802BD28 -sub_0802BD28: @ 0x0802BD28 - push {lr} - adds r2, r0, #0 - ldrb r3, [r2, #0x10] - movs r0, #0x80 - ands r0, r3 - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - beq _0802BD4C - movs r0, #0x80 - orrs r0, r3 - strb r0, [r2, #0x10] - adds r2, #0x3a - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 - strb r0, [r2] - b _0802BD52 -_0802BD4C: - adds r0, r2, #0 - adds r0, #0x45 - strb r1, [r0] -_0802BD52: - pop {pc} - - thumb_func_start sub_0802BD54 -sub_0802BD54: @ 0x0802BD54 - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r0, #1 - strb r0, [r4, #0xc] - bl Random - adds r1, r4, #0 - adds r1, #0x78 - strb r0, [r1] - movs r0, #0x3c - strb r0, [r4, #0x1d] - adds r1, #1 - movs r0, #0xff - strb r0, [r1] - bl Random - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - lsrs r0, r0, #3 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation - pop {r4, pc} - - thumb_func_start sub_0802BD8C -sub_0802BD8C: @ 0x0802BD8C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802BD9C - subs r0, #1 - strb r0, [r4, #0xe] - b _0802BDDE -_0802BD9C: - adds r0, r4, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _0802BDCA - adds r0, r4, #0 - movs r1, #1 - movs r2, #0x10 - bl sub_0804A024 - adds r1, r0, #0 - cmp r1, #0xff - beq _0802BDCA - adds r0, r4, #0 - adds r0, #0x79 - ldrb r0, [r0] - cmp r1, r0 - beq _0802BDCA - adds r0, r4, #0 - bl sub_0802C058 - b _0802BDDE -_0802BDCA: - adds r0, r4, #0 - bl sub_0802C020 - adds r1, r0, #0 - ldrb r0, [r4, #0x15] - cmp r1, r0 - beq _0802BDDE - adds r0, r4, #0 - bl sub_0802C058 -_0802BDDE: - pop {r4, pc} - - thumb_func_start sub_0802BDE0 -sub_0802BDE0: @ 0x0802BDE0 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802C06C - cmp r0, #0 - beq _0802BDFE - movs r0, #3 - strb r0, [r4, #0xc] - movs r0, #0x3c - strb r0, [r4, #0xe] - adds r1, r4, #0 - adds r1, #0x79 - movs r0, #0xff - strb r0, [r1] - b _0802BE16 -_0802BDFE: - movs r0, #1 - strb r0, [r4, #0xc] - bl Random - movs r1, #0xf - ands r0, r1 - adds r0, #0xf - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x15] - adds r0, r4, #0 - adds r0, #0x79 - strb r1, [r0] -_0802BE16: - pop {r4, pc} - - thumb_func_start sub_0802BE18 -sub_0802BE18: @ 0x0802BE18 - push {r4, lr} - adds r4, r0, #0 - movs r1, #2 - bl UpdateAnimationVariableFrames - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802BE3E - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r0, #0xc0 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - b _0802BE44 -_0802BE3E: - adds r0, r4, #0 - bl sub_0802C18C -_0802BE44: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802BE48 -sub_0802BE48: @ 0x0802BE48 - push {r4, lr} - adds r4, r0, #0 - bl sub_080AEFE0 - cmp r0, #0 - bne _0802BE64 - adds r0, r4, #0 - bl sub_0802C218 - movs r0, #8 - movs r1, #0 - bl sub_08080964 - b _0802BE7E -_0802BE64: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0802C1CC - adds r0, r4, #0 - bl sub_0802C0E8 - cmp r0, #0 - beq _0802BE7E - movs r0, #5 - strb r0, [r4, #0xc] -_0802BE7E: - pop {r4, pc} - - thumb_func_start sub_0802BE80 -sub_0802BE80: @ 0x0802BE80 - push {r4, lr} - adds r4, r0, #0 - ldrh r0, [r4, #0x24] - subs r0, #0x20 - strh r0, [r4, #0x24] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xff - ble _0802BE98 - adds r0, r4, #0 - bl sub_0802C1CC -_0802BE98: - movs r1, #0x24 - ldrsh r0, [r4, r1] - cmp r0, #0 - ble _0802BEAE - adds r0, r4, #0 - bl sub_080AEFE0 - adds r0, r4, #0 - bl sub_0802C18C - b _0802BEBA -_0802BEAE: - adds r0, r4, #0 - bl sub_0802C1C0 - ldrb r0, [r4, #0xe] - adds r0, #0x1e - strb r0, [r4, #0xe] -_0802BEBA: - pop {r4, pc} - - thumb_func_start sub_0802BEBC -sub_0802BEBC: @ 0x0802BEBC - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0x15] - movs r4, #0x10 - eors r0, r4 - strb r0, [r5, #0x15] - adds r0, r5, #0 - bl sub_080AEFE0 - ldrb r0, [r5, #0x15] - eors r0, r4 - strb r0, [r5, #0x15] - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r5, #0 - bl sub_080044EC - cmp r0, #0 - bne _0802BEE8 - adds r0, r5, #0 - bl sub_0802C1C0 -_0802BEE8: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0802BEEC -sub_0802BEEC: @ 0x0802BEEC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802BF1E - subs r0, #1 - strb r0, [r4, #0xe] - movs r1, #0xff - ands r0, r1 - movs r1, #0x1f - ands r0, r1 - cmp r0, #0 - bne _0802BF3A - ldrb r0, [r4, #0x14] - movs r1, #2 - eors r0, r1 - strb r0, [r4, #0x14] - lsls r0, r0, #3 - strb r0, [r4, #0x15] - ldrb r1, [r4, #0x14] - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation - b _0802BF3A -_0802BF1E: - movs r1, #0xe0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _0802BF3A - movs r0, #8 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r0, #0x90 - lsls r0, r0, #1 - strh r0, [r4, #0x24] -_0802BF3A: - pop {r4, pc} - - thumb_func_start sub_0802BF3C -sub_0802BF3C: @ 0x0802BF3C - push {r4, lr} - adds r4, r0, #0 - bl ProcessMovement - adds r0, r4, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802BF76 - movs r0, #0x1e - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl sub_0802C020 - strb r0, [r4, #0x15] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1b - ldrb r1, [r4, #0x14] - cmp r0, r1 - beq _0802BF76 - strb r0, [r4, #0x14] - adds r1, r0, #4 - adds r0, r4, #0 - bl InitializeAnimation -_0802BF76: - pop {r4, pc} - - thumb_func_start sub_0802BF78 -sub_0802BF78: @ 0x0802BF78 - push {lr} - movs r2, #1 - strb r2, [r0, #0xc] - adds r3, r0, #0 - adds r3, #0x3b - movs r1, #4 - strb r1, [r3] - strb r2, [r0, #0x1c] - ldrb r1, [r0, #0x14] - lsls r1, r1, #3 - strb r1, [r0, #0x15] - ldrb r1, [r0, #0x14] - adds r1, #8 - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_0802BF98 -sub_0802BF98: @ 0x0802BF98 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F520 - cmp r0, #0 - beq _0802BFBC - ldr r0, _0802BFB8 @ =gUnk_080CD450 - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - b _0802BFCC - .align 2, 0 -_0802BFB8: .4byte gUnk_080CD450 -_0802BFBC: - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] -_0802BFCC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802BFD0 -sub_0802BFD0: @ 0x0802BFD0 - movs r1, #2 - strb r1, [r0, #0xd] - bx lr - .align 2, 0 - - thumb_func_start sub_0802BFD8 -sub_0802BFD8: @ 0x0802BFD8 - push {lr} - bl sub_0806F4E8 - pop {pc} - - thumb_func_start sub_0802BFE0 -sub_0802BFE0: @ 0x0802BFE0 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F3E4 - cmp r0, #0 - beq _0802BFF2 - adds r0, r4, #0 - bl DeleteEntity -_0802BFF2: - pop {r4, pc} - - thumb_func_start sub_0802BFF4 -sub_0802BFF4: @ 0x0802BFF4 - push {lr} - adds r3, r0, #0 - ldrb r2, [r3, #0x18] - lsls r1, r2, #0x1e - lsrs r1, r1, #0x1e - movs r0, #1 - eors r1, r0 - subs r0, #5 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x18] - ldrb r0, [r3, #0xe] - subs r0, #1 - strb r0, [r3, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802C01C - adds r0, r3, #0 - bl DeleteEntity -_0802C01C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0802C020 -sub_0802C020: @ 0x0802C020 - push {r4, r5, r6, lr} - adds r5, r0, #0 - bl Random - adds r4, r0, #0 - adds r0, r5, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _0802C03E - movs r6, #1 - adds r0, r4, #0 - ands r0, r6 - cmp r0, #0 - beq _0802C044 -_0802C03E: - movs r0, #0x18 - ands r0, r4 - b _0802C056 -_0802C044: - adds r0, r5, #0 - bl sub_08049EE4 - lsrs r1, r4, #0x10 - ands r1, r6 - lsls r1, r1, #2 - adds r0, r0, r1 - movs r1, #0x18 - ands r0, r1 -_0802C056: - pop {r4, r5, r6, pc} - - thumb_func_start sub_0802C058 -sub_0802C058: @ 0x0802C058 - push {lr} - movs r2, #2 - strb r2, [r0, #0xc] - strb r1, [r0, #0x15] - lsrs r1, r1, #3 - strb r1, [r0, #0x14] - ldrb r1, [r0, #0x14] - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_0802C06C -sub_0802C06C: @ 0x0802C06C - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - movs r1, #0x2e - ldrsh r2, [r0, r1] - ldr r3, [r0, #0x48] - movs r1, #0 - ldrsb r1, [r3, r1] - adds r6, r2, r1 - movs r1, #0x32 - ldrsh r2, [r0, r1] - movs r1, #1 - ldrsb r1, [r3, r1] - adds r5, r2, r1 - ldr r3, _0802C0CC @ =gUnk_080CD45C - ldrb r1, [r0, #0x15] - lsrs r1, r1, #2 - adds r2, r1, r3 - ldrb r2, [r2] - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - mov sb, r2 - adds r1, #1 - adds r1, r1, r3 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - mov r8, r1 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _0802C0D0 @ =gUnk_02027EB4 - cmp r0, #2 - bne _0802C0B2 - ldr r7, _0802C0D4 @ =gUnk_0200D654 -_0802C0B2: - movs r4, #0 -_0802C0B4: - add r6, sb - add r5, r8 - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r5, #0 - movs r3, #0 - bl sub_080AE4CC - cmp r0, #0 - beq _0802C0D8 - movs r0, #0 - b _0802C0E0 - .align 2, 0 -_0802C0CC: .4byte gUnk_080CD45C -_0802C0D0: .4byte gUnk_02027EB4 -_0802C0D4: .4byte gUnk_0200D654 -_0802C0D8: - adds r4, #1 - cmp r4, #7 - bls _0802C0B4 - movs r0, #1 -_0802C0E0: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0802C0E8 -sub_0802C0E8: @ 0x0802C0E8 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802C0FC - movs r0, #1 - b _0802C178 -_0802C0FC: - ldrb r3, [r5, #0x15] - lsrs r3, r3, #2 - ldr r0, _0802C17C @ =gUnk_080CD45C - adds r3, r3, r0 - movs r0, #0x2e - ldrsh r2, [r5, r0] - ldr r4, [r5, #0x48] - movs r0, #0 - ldrsb r0, [r4, r0] - adds r2, r2, r0 - movs r1, #0 - ldrsb r1, [r3, r1] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r6, r2, r0 - movs r0, #0x32 - ldrsh r2, [r5, r0] - movs r0, #1 - ldrsb r0, [r4, r0] - adds r2, r2, r0 - movs r1, #1 - ldrsb r1, [r3, r1] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r4, r2, r0 - adds r0, r5, #0 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _0802C180 @ =gUnk_02027EB4 - cmp r0, #2 - bne _0802C140 - ldr r7, _0802C184 @ =gUnk_0200D654 -_0802C140: - movs r5, #0 - ldr r1, _0802C188 @ =gRoomControls - ldrh r0, [r1, #6] - subs r0, r6, r0 - asrs r0, r0, #4 - movs r2, #0x3f - ands r0, r2 - ldrh r1, [r1, #8] - subs r1, r4, r1 - asrs r1, r1, #4 - ands r1, r2 - lsls r1, r1, #6 - orrs r0, r1 - movs r1, #9 - bl sub_0806FC24 - cmp r0, #0 - bne _0802C176 - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - movs r3, #0 - bl sub_080AE4CC - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r5, r1, #0x1f -_0802C176: - adds r0, r5, #0 -_0802C178: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0802C17C: .4byte gUnk_080CD45C -_0802C180: .4byte gUnk_02027EB4 -_0802C184: .4byte gUnk_0200D654 -_0802C188: .4byte gRoomControls - - thumb_func_start sub_0802C18C -sub_0802C18C: @ 0x0802C18C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x78 - ldrb r1, [r0] - subs r1, #1 - strb r1, [r0] - movs r0, #7 - ands r1, r0 - cmp r1, #0 - bne _0802C1BC - movs r0, #0xf - movs r1, #0x11 - movs r2, #0x40 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _0802C1BC - movs r3, #0x80 - lsls r3, r3, #9 - adds r0, r4, #0 - movs r2, #0 - bl PositionRelative -_0802C1BC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802C1C0 -sub_0802C1C0: @ 0x0802C1C0 - movs r1, #1 - strb r1, [r0, #0xc] - movs r1, #0x1e - strb r1, [r0, #0xe] - bx lr - .align 2, 0 - - thumb_func_start sub_0802C1CC -sub_0802C1CC: @ 0x0802C1CC - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r4, [r5, #0x14] - lsls r4, r4, #2 - ldr r0, _0802C214 @ =gUnk_080CD464 - adds r4, r4, r0 - movs r0, #0x2e - ldrsh r2, [r5, r0] - movs r0, #0 - ldrsb r0, [r4, r0] - adds r2, r2, r0 - movs r0, #0x32 - ldrsh r3, [r5, r0] - movs r0, #1 - ldrsb r0, [r4, r0] - adds r3, r3, r0 - adds r0, r5, #0 - movs r1, #9 - bl sub_08008796 - movs r0, #0x2e - ldrsh r2, [r5, r0] - movs r0, #2 - ldrsb r0, [r4, r0] - adds r2, r2, r0 - movs r0, #0x32 - ldrsh r3, [r5, r0] - movs r0, #3 - ldrsb r0, [r4, r0] - adds r3, r3, r0 - adds r0, r5, #0 - movs r1, #9 - bl sub_08008796 - pop {r4, r5, pc} - .align 2, 0 -_0802C214: .4byte gUnk_080CD464 - - thumb_func_start sub_0802C218 -sub_0802C218: @ 0x0802C218 - movs r1, #6 - strb r1, [r0, #0xc] - movs r1, #0xe0 - strh r1, [r0, #0x24] - movs r1, #0xc0 - lsls r1, r1, #9 - str r1, [r0, #0x20] - bx lr diff --git a/asm/likeLike.s b/asm/likeLike.s deleted file mode 100644 index 438361dd..00000000 --- a/asm/likeLike.s +++ /dev/null @@ -1,652 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start LikeLike -LikeLike: @ 0x08027D6C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08027D88 @ =gUnk_080CC6FC - bl EnemyFunctionHandler - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - pop {r4, pc} - .align 2, 0 -_08027D88: .4byte gUnk_080CC6FC - - thumb_func_start sub_08027D8C -sub_08027D8C: @ 0x08027D8C - push {lr} - ldr r2, _08027DA0 @ =gUnk_080CC714 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08027DA0: .4byte gUnk_080CC714 - - thumb_func_start sub_08027DA4 -sub_08027DA4: @ 0x08027DA4 - push {r4, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x3f - ldrb r0, [r2] - cmp r0, #1 - bne _08027DC4 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r0, #0x8c - strb r0, [r2] - b _08027E0E -_08027DC4: - ldrb r0, [r4, #0xc] - cmp r0, #7 - bne _08027DD2 - adds r0, r4, #0 - bl sub_0802810C - b _08027E0E -_08027DD2: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r2, [r0] - movs r0, #0x80 - ands r0, r2 - cmp r0, #0 - beq _08027E0E - movs r1, #0x7f - ands r1, r2 - cmp r1, #0 - bne _08027E0E - movs r0, #7 - strb r0, [r4, #0xc] - movs r0, #0x5f - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - adds r2, r4, #0 - adds r2, #0x3b - ldrb r1, [r2] - movs r0, #0xfc - ands r0, r1 - strb r0, [r2] - ldr r0, _08027E38 @ =gPlayerEntity - adds r0, #0x29 - ldrb r0, [r0] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x1d - adds r1, r4, #0 - adds r1, #0x83 - strb r0, [r1] -_08027E0E: - adds r0, r4, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _08027E1C - movs r0, #0x20 - strb r0, [r4, #0xe] -_08027E1C: - adds r0, r4, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _08027E2E - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_08027E2E: - ldr r1, _08027E3C @ =gUnk_080CC6FC - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, pc} - .align 2, 0 -_08027E38: .4byte gPlayerEntity -_08027E3C: .4byte gUnk_080CC6FC - - thumb_func_start sub_08027E40 -sub_08027E40: @ 0x08027E40 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #2 - bne _08027E62 - adds r5, r4, #0 - adds r5, #0x80 - ldrb r0, [r5] - cmp r0, #0xff - beq _08027E62 - adds r0, r4, #0 - movs r1, #3 - bl sub_0805E3A0 - ldrb r0, [r5] - bl sub_08028224 -_08027E62: - adds r0, r4, #0 - bl sub_0804A7D4 - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start nullsub_139 -nullsub_139: @ 0x08027E6C - bx lr - .align 2, 0 - - thumb_func_start sub_08027E70 -sub_08027E70: @ 0x08027E70 - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - ldrb r3, [r4, #0xa] - cmp r3, #1 - beq _08027EA6 - cmp r3, #1 - bgt _08027E88 - cmp r3, #0 - beq _08027E8E - b _08027EE4 -_08027E88: - cmp r3, #2 - beq _08027EC4 - b _08027EE4 -_08027E8E: - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #7 - ands r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - strb r3, [r4, #0xe] - b _08027EE4 -_08027EA6: - movs r2, #1 - strb r3, [r4, #0xc] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - movs r0, #8 - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation - b _08027EE4 -_08027EC4: - movs r3, #0 - movs r2, #1 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - strb r3, [r4, #0xe] - adds r0, r4, #0 - adds r0, #0x3f - strb r2, [r0] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_08027EE4: - movs r0, #0 - strb r0, [r4, #0x15] - adds r1, r4, #0 - adds r1, #0x82 - strb r0, [r1] - strb r0, [r4, #0x14] - adds r1, #1 - strb r0, [r1] - subs r1, #3 - movs r0, #0xff - strb r0, [r1] - pop {r4, pc} - - thumb_func_start sub_08027EFC -sub_08027EFC: @ 0x08027EFC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #1 - beq _08027F7C - adds r0, r4, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _08027F68 - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _08027F32 - bl Random - movs r1, #0x30 - ands r1, r0 - cmp r1, #0 - beq _08027F32 - adds r0, r4, #0 - bl sub_08049EE4 - b _08027F38 -_08027F32: - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] -_08027F38: - strb r0, [r4, #0x15] - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08027F5A - adds r0, r4, #0 - movs r1, #1 - bl sub_08049F84 - strb r0, [r4, #0x15] - adds r1, r4, #0 - adds r1, #0x82 - strb r0, [r1] - movs r0, #8 - strb r0, [r4, #0xe] -_08027F5A: - adds r0, r4, #0 - bl ProcessMovement - adds r0, r4, #0 - bl GetNextFrame - b _08027F7C -_08027F68: - movs r0, #6 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation -_08027F7C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start nullsub_12 -nullsub_12: @ 0x08027F80 - bx lr - .align 2, 0 - - thumb_func_start sub_08027F84 -sub_08027F84: @ 0x08027F84 - push {r4, lr} - adds r4, r0, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _08027FB0 - movs r0, #5 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #9 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl CreateDust -_08027FB0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08027FB4 -sub_08027FB4: @ 0x08027FB4 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08027FD6 - movs r1, #1 - movs r0, #1 - strb r0, [r2, #0xc] - strb r0, [r2, #0xe] - adds r3, r2, #0 - adds r3, #0x3b - ldrb r0, [r3] - orrs r0, r1 - strb r0, [r3] -_08027FD6: - adds r0, r2, #0 - bl GetNextFrame - pop {pc} - .align 2, 0 - - thumb_func_start sub_08027FE0 -sub_08027FE0: @ 0x08027FE0 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r2, #1 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _08028028 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #1 - bl sub_08049F84 - strb r0, [r4, #0x15] - movs r2, #8 - movs r0, #8 - strb r0, [r4, #0xe] - adds r3, r4, #0 - adds r3, #0x29 - ldrb r1, [r3] - subs r0, #0x41 - ands r0, r1 - orrs r0, r2 - strb r0, [r3] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_08028028: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802802C -sub_0802802C: @ 0x0802802C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0802805A - movs r2, #0 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #7 - ands r0, r1 - strb r0, [r4, #0x18] - strb r2, [r4, #0x15] - strb r2, [r4, #0xe] - adds r0, r4, #0 - bl CreateDust -_0802805A: - pop {r4, pc} - - thumb_func_start sub_0802805C -sub_0802805C: @ 0x0802805C - push {r4, r5, lr} - adds r5, r0, #0 - movs r1, #2 - bl UpdateAnimationVariableFrames - bl sub_0807953C - cmp r0, #0 - beq _0802807E - bl Random - ldrb r2, [r5, #0xf] - adds r2, #1 - movs r1, #1 - ands r1, r0 - adds r2, r2, r1 - strb r2, [r5, #0xf] -_0802807E: - ldrb r0, [r5, #0xf] - cmp r0, #0x18 - bhi _0802808E - ldr r0, _08028098 @ =gUnk_02002A40 - adds r0, #0xaa - ldrb r0, [r0] - cmp r0, #0 - bne _0802809C -_0802808E: - adds r0, r5, #0 - bl sub_0802810C - b _08028102 - .align 2, 0 -_08028098: .4byte gUnk_02002A40 -_0802809C: - bl ResetPlayer - ldr r2, _08028104 @ =gPlayerState - ldrb r1, [r2, #0x1a] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x1a] - ldr r4, _08028108 @ =gPlayerEntity - movs r3, #0x80 - lsls r3, r3, #9 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0 - bl PositionRelative - ldrh r0, [r5, #0x12] - ldrb r1, [r5, #0x1e] - bl GetSpriteSubEntryOffsetDataPointer - ldrb r1, [r0] - adds r2, r4, #0 - adds r2, #0x62 - strb r1, [r2] - ldrb r0, [r0, #1] - adds r1, r4, #0 - adds r1, #0x63 - strb r0, [r1] - adds r4, #0x29 - ldrb r1, [r4] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4] - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080280F0 - adds r0, r5, #0 - bl sub_080281A0 -_080280F0: - ldrb r1, [r5, #0xe] - movs r0, #3 - ands r0, r1 - cmp r0, #0 - bne _08028102 - movs r0, #0x82 - lsls r0, r0, #1 - bl EnqueueSFX -_08028102: - pop {r4, r5, pc} - .align 2, 0 -_08028104: .4byte gPlayerState -_08028108: .4byte gPlayerEntity - - thumb_func_start sub_0802810C -sub_0802810C: @ 0x0802810C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r2, _08028198 @ =gPlayerState - movs r1, #0 - movs r0, #0x41 - strb r0, [r2, #2] - strb r1, [r2, #0xa] - ldr r0, [r2, #0x30] - subs r1, #0x11 - ands r0, r1 - str r0, [r2, #0x30] - ldr r0, _0802819C @ =gPlayerEntity - mov ip, r0 - ldrb r0, [r0, #0x10] - movs r1, #0x80 - orrs r0, r1 - mov r1, ip - strb r0, [r1, #0x10] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r1, #0x20] - adds r1, #0x3d - movs r0, #0xc4 - strb r0, [r1] - movs r3, #0 - mov r2, ip - ldrb r0, [r2, #0x14] - lsls r0, r0, #2 - strb r0, [r2, #0x15] - adds r0, r4, #0 - adds r0, #0x83 - ldrb r0, [r0] - mov r5, ip - adds r5, #0x29 - movs r1, #7 - ands r1, r0 - lsls r1, r1, #3 - ldrb r2, [r5] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - mov r1, ip - adds r1, #0x63 - movs r0, #0 - ldrsb r0, [r1, r0] - mov r2, ip - strh r0, [r2, #0x36] - strb r3, [r1] - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x50 - strb r0, [r4, #0xe] - strb r3, [r4, #0xf] - adds r2, r4, #0 - adds r2, #0x3b - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - bne _08028196 - movs r0, #0xee - strb r0, [r1] -_08028196: - pop {r4, r5, pc} - .align 2, 0 -_08028198: .4byte gPlayerState -_0802819C: .4byte gPlayerEntity - - thumb_func_start sub_080281A0 -sub_080281A0: @ 0x080281A0 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x19 - strb r0, [r4, #0xf] - movs r0, #0xe - bl sub_080281E0 - cmp r0, #0 - beq _080281BA - adds r0, r4, #0 - adds r0, #0x80 - movs r1, #0xe - b _080281CA -_080281BA: - movs r0, #0xd - bl sub_080281E0 - cmp r0, #0 - beq _080281D6 - adds r0, r4, #0 - adds r0, #0x80 - movs r1, #0xd -_080281CA: - strb r1, [r0] - movs r0, #0xaf - lsls r0, r0, #3 - bl TextboxNoOverlapFollow - b _080281DE -_080281D6: - movs r0, #1 - rsbs r0, r0, #0 - bl ModHealth -_080281DE: - pop {r4, pc} - - thumb_func_start sub_080281E0 -sub_080281E0: @ 0x080281E0 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - movs r4, #0 - bl GetInventoryValue - cmp r0, #1 - bne _0802821A - ldr r6, _08028220 @ =gUnk_02002A40 - adds r5, r6, #0 - adds r5, #0xb4 - ldrb r0, [r5] - bl sub_080544B4 - cmp r0, #0 - beq _08028200 - strb r4, [r5] -_08028200: - adds r5, r6, #0 - adds r5, #0xb5 - ldrb r0, [r5] - bl sub_080544B4 - cmp r0, #0 - beq _08028210 - strb r4, [r5] -_08028210: - adds r0, r7, #0 - movs r1, #0 - bl sub_0807CAA0 - movs r4, #1 -_0802821A: - adds r0, r4, #0 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08028220: .4byte gUnk_02002A40 - - thumb_func_start sub_08028224 -sub_08028224: @ 0x08028224 - push {lr} - movs r1, #0 - movs r2, #1 - bl sub_080A7C18 - ldr r0, _08028238 @ =0x00000579 - bl TextboxNoOverlapFollow - pop {pc} - .align 2, 0 -_08028238: .4byte 0x00000579 diff --git a/asm/madderpillar.s b/asm/madderpillar.s deleted file mode 100644 index c98eafb5..00000000 --- a/asm/madderpillar.s +++ /dev/null @@ -1,1292 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Madderpillar -Madderpillar: @ 0x08029858 - push {lr} - ldr r2, _0802986C @ =gUnk_080CCD44 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802986C: .4byte gUnk_080CCD44 - - thumb_func_start sub_08029870 -sub_08029870: @ 0x08029870 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _08029888 @ =gUnk_080CCD60 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_08029888: .4byte gUnk_080CCD60 - - thumb_func_start sub_0802988C -sub_0802988C: @ 0x0802988C - push {lr} - ldr r2, _080298A0 @ =gUnk_080CCD78 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080298A0: .4byte gUnk_080CCD78 - - thumb_func_start sub_080298A4 -sub_080298A4: @ 0x080298A4 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xc] - cmp r0, #1 - bne _08029970 - adds r0, r5, #0 - adds r0, #0x41 - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0x1e - bhi _08029948 - lsls r0, r1, #2 - ldr r1, _080298C8 @ =_080298CC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080298C8: .4byte _080298CC -_080298CC: @ jump table - .4byte _08029970 @ case 0 - .4byte _08029970 @ case 1 - .4byte _08029970 @ case 2 - .4byte _08029970 @ case 3 - .4byte _08029948 @ case 4 - .4byte _08029948 @ case 5 - .4byte _08029948 @ case 6 - .4byte _08029948 @ case 7 - .4byte _08029948 @ case 8 - .4byte _08029948 @ case 9 - .4byte _08029948 @ case 10 - .4byte _08029948 @ case 11 - .4byte _08029948 @ case 12 - .4byte _08029948 @ case 13 - .4byte _08029948 @ case 14 - .4byte _08029970 @ case 15 - .4byte _08029948 @ case 16 - .4byte _08029948 @ case 17 - .4byte _08029948 @ case 18 - .4byte _08029970 @ case 19 - .4byte _08029948 @ case 20 - .4byte _08029948 @ case 21 - .4byte _08029948 @ case 22 - .4byte _08029948 @ case 23 - .4byte _08029948 @ case 24 - .4byte _08029948 @ case 25 - .4byte _08029948 @ case 26 - .4byte _08029970 @ case 27 - .4byte _08029948 @ case 28 - .4byte _08029948 @ case 29 - .4byte _08029970 @ case 30 -_08029948: - movs r1, #0 - movs r4, #2 - strb r4, [r5, #0xc] - strb r1, [r5, #0xe] - adds r2, r5, #0 - adds r2, #0x3f - movs r0, #0x6b - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x77 - strb r1, [r0] - adds r0, r5, #0 - movs r1, #0x7f - bl sub_0801D2B4 - movs r0, #0xfe - bl EnqueueSFX - ldr r0, [r5, #0x54] - strb r4, [r0, #0xc] -_08029970: - ldr r1, _0802997C @ =gUnk_080CCD60 - adds r0, r5, #0 - bl sub_0804AA30 - pop {r4, r5, pc} - .align 2, 0 -_0802997C: .4byte gUnk_080CCD60 - - thumb_func_start sub_08029980 -sub_08029980: @ 0x08029980 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xf] - cmp r0, #0 - beq _08029990 - subs r0, #1 - strb r0, [r1, #0xf] - b _08029996 -_08029990: - adds r0, r1, #0 - bl sub_0804A7D4 -_08029996: - pop {pc} - - thumb_func_start nullsub_14 -nullsub_14: @ 0x08029998 - bx lr - .align 2, 0 - - - thumb_func_start sub_0802999C -sub_0802999C: @ 0x0802999C - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - ldr r0, _08029A90 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x43 - bhi _08029A8E - movs r0, #0x18 - movs r1, #1 - bl CreateEnemy - adds r4, r0, #0 - str r7, [r4, #0x50] - adds r0, r7, #0 - adds r1, r4, #0 - movs r2, #0 - movs r3, #5 - bl PositionRelative - str r4, [r7, #0x54] - movs r0, #0x18 - movs r1, #2 - bl CreateEnemy - adds r5, r0, #0 - str r7, [r5, #0x50] - adds r0, r7, #0 - adds r1, r5, #0 - movs r2, #0 - movs r3, #4 - bl PositionRelative - str r5, [r4, #0x54] - movs r0, #0x18 - movs r1, #3 - bl CreateEnemy - adds r4, r0, #0 - str r7, [r4, #0x50] - adds r0, r7, #0 - adds r1, r4, #0 - movs r2, #0 - movs r3, #3 - bl PositionRelative - str r4, [r5, #0x54] - movs r0, #0x18 - movs r1, #4 - bl CreateEnemy - adds r5, r0, #0 - str r7, [r5, #0x50] - adds r0, r7, #0 - adds r1, r5, #0 - movs r2, #0 - movs r3, #2 - bl PositionRelative - str r5, [r4, #0x54] - movs r0, #0x18 - movs r1, #5 - bl CreateEnemy - adds r6, r0, #0 - str r7, [r6, #0x50] - adds r0, r7, #0 - adds r1, r6, #0 - movs r2, #0 - movs r3, #1 - bl PositionRelative - str r6, [r5, #0x54] - movs r0, #0x18 - movs r1, #6 - bl CreateEnemy - adds r4, r0, #0 - str r7, [r4, #0x54] - str r7, [r4, #0x50] - adds r0, r7, #0 - adds r1, r4, #0 - movs r2, #0 - movs r3, #0 - bl PositionRelative - str r4, [r6, #0x54] - movs r4, #1 - strb r4, [r7, #0xc] - ldrb r1, [r7, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r7, #0x10] - bl Random - movs r1, #0x18 - ands r0, r1 - strb r0, [r7, #0x15] - movs r2, #0 - movs r0, #0xa0 - strh r0, [r7, #0x24] - movs r0, #0xff - strb r0, [r7, #0x14] - ldr r0, [r7, #0x30] - adds r0, #6 - str r0, [r7, #0x30] - str r7, [r7, #0x50] - adds r1, r7, #0 - adds r1, #0x74 - movs r0, #1 - rsbs r0, r0, #0 - strb r0, [r1] - adds r0, r7, #0 - adds r0, #0x75 - strb r2, [r0] - adds r0, #2 - strb r4, [r0] - adds r0, r7, #0 - bl sub_08029E0C - adds r0, r7, #0 - bl sub_08029EEC -_08029A8E: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08029A90: .4byte gEntCount - - thumb_func_start sub_08029A94 -sub_08029A94: @ 0x08029A94 - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - bl sub_0802A098 - pop {r4, pc} - - thumb_func_start sub_08029AA4 -sub_08029AA4: @ 0x08029AA4 - push {lr} - adds r1, r0, #0 - adds r0, #0x77 - ldrb r0, [r0] - cmp r0, #0 - beq _08029ADA - movs r0, #3 - strb r0, [r1, #0xc] - movs r0, #0x84 - lsls r0, r0, #1 - strh r0, [r1, #0x24] - adds r2, r1, #0 - adds r2, #0x3f - movs r0, #0x6a - strb r0, [r2] - adds r2, #0x3b - adds r0, #0xfe - strh r0, [r2] - subs r2, #5 - movs r0, #4 - strb r0, [r2] - adds r0, r1, #0 - bl sub_08029EEC - ldr r0, _08029ADC @ =0x0000019D - bl EnqueueSFX -_08029ADA: - pop {pc} - .align 2, 0 -_08029ADC: .4byte 0x0000019D - - thumb_func_start sub_08029AE0 -sub_08029AE0: @ 0x08029AE0 - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - bl sub_0802A16C - adds r0, r4, #0 - bl sub_0802A098 - adds r1, r4, #0 - adds r1, #0x7a - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _08029B28 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xa0 - strh r0, [r4, #0x24] - subs r1, #5 - movs r0, #0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08029EEC - adds r0, r4, #0 - movs r1, #0x77 - bl sub_0801D2B4 - movs r0, #0xc1 - lsls r0, r0, #1 - bl EnqueueSFX -_08029B28: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08029B2C -sub_08029B2C: @ 0x08029B2C - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A14C - cmp r0, #0 - beq _08029B7A - adds r2, r4, #0 - adds r2, #0x86 - ldrb r0, [r2] - cmp r0, #0 - beq _08029B60 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08029B8A - adds r0, r4, #0 - movs r1, #0x48 - movs r2, #0 - bl CreateFx - adds r0, r4, #0 - bl DeleteEntity - b _08029B8A -_08029B60: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r0, [r4, #0xa] - lsls r1, r0, #4 - subs r1, r1, r0 - movs r0, #0x5a - subs r0, r0, r1 - strb r0, [r4, #0xe] - movs r0, #1 - strb r0, [r2] - b _08029B8A -_08029B7A: - ldr r0, _08029B8C @ =gUnk_080CCD88 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 -_08029B8A: - pop {r4, pc} - .align 2, 0 -_08029B8C: .4byte gUnk_080CCD88 - - thumb_func_start sub_08029B90 -sub_08029B90: @ 0x08029B90 - push {r4, lr} - adds r4, r0, #0 - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - adds r0, r4, #0 - bl sub_0802A058 - ldrb r0, [r4, #0xa] - cmp r0, #1 - bhi _08029BBA - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - b _08029BC2 -_08029BBA: - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation -_08029BC2: - pop {r4, pc} - - thumb_func_start sub_08029BC4 -sub_08029BC4: @ 0x08029BC4 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_0802A18C - movs r0, #0x2e - ldrsh r5, [r4, r0] - movs r0, #0x32 - ldrsh r6, [r4, r0] - adds r0, r4, #0 - bl sub_08029FE4 - cmp r0, #0 - beq _08029BF2 - ldrb r0, [r4, #0xa] - movs r2, #4 - cmp r0, #1 - bhi _08029BE8 - movs r2, #0 -_08029BE8: - ldrb r1, [r4, #0x14] - adds r1, r1, r2 - adds r0, r4, #0 - bl InitializeAnimation -_08029BF2: - movs r0, #0x2e - ldrsh r1, [r4, r0] - subs r1, r1, r5 - movs r0, #0x32 - ldrsh r2, [r4, r0] - subs r2, r2, r6 - adds r0, r4, #0 - bl sub_08029FB4 - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_08029C08 -sub_08029C08: @ 0x08029C08 - movs r1, #3 - strb r1, [r0, #0xc] - ldr r2, _08029C28 @ =gUnk_080CCDA0 - ldrb r1, [r0, #0xa] - adds r1, r1, r2 - ldrb r1, [r1] - strb r1, [r0, #0xe] - adds r2, r0, #0 - adds r2, #0x3f - movs r1, #0x6b - strb r1, [r2] - ldr r1, [r0, #0x54] - movs r0, #2 - strb r0, [r1, #0xc] - bx lr - .align 2, 0 -_08029C28: .4byte gUnk_080CCDA0 - - thumb_func_start sub_08029C2C -sub_08029C2C: @ 0x08029C2C - 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 _08029C4E - movs r0, #4 - strb r0, [r1, #0xc] - adds r0, r1, #0 - movs r1, #0x7f - bl sub_0801D2B4 - movs r0, #0x6c - bl EnqueueSFX -_08029C4E: - pop {pc} - - thumb_func_start sub_08029C50 -sub_08029C50: @ 0x08029C50 - push {lr} - adds r1, r0, #0 - ldr r0, [r1, #0x50] - adds r0, #0x77 - ldrb r0, [r0] - cmp r0, #0 - beq _08029C68 - movs r0, #5 - strb r0, [r1, #0xc] - adds r1, #0x3f - movs r0, #0x6a - strb r0, [r1] -_08029C68: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08029C6C -sub_08029C6C: @ 0x08029C6C - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A18C - adds r0, r4, #0 - bl sub_08029BC4 - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #3 - beq _08029C90 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x77 - bl sub_0801D2B4 - b _08029C96 -_08029C90: - adds r0, r4, #0 - bl sub_0802A16C -_08029C96: - pop {r4, pc} - - thumb_func_start sub_08029C98 -sub_08029C98: @ 0x08029C98 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A14C - cmp r0, #0 - beq _08029CB6 - adds r0, r4, #0 - movs r1, #0x48 - movs r2, #0 - bl CreateFx - adds r0, r4, #0 - bl DeleteEntity - b _08029CC6 -_08029CB6: - ldr r0, _08029CC8 @ =gUnk_080CCDA8 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 -_08029CC6: - pop {r4, pc} - .align 2, 0 -_08029CC8: .4byte gUnk_080CCDA8 - - thumb_func_start sub_08029CCC -sub_08029CCC: @ 0x08029CCC - push {r4, lr} - adds r4, r0, #0 - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - adds r0, r4, #0 - bl sub_0802A058 - adds r0, r4, #0 - movs r1, #8 - bl InitializeAnimation - pop {r4, pc} - - thumb_func_start sub_08029CF0 -sub_08029CF0: @ 0x08029CF0 - push {r4, lr} - adds r4, r0, #0 - bl sub_08029FE4 - cmp r0, #0 - beq _08029D06 - ldrb r1, [r4, #0x14] - adds r1, #8 - adds r0, r4, #0 - bl InitializeAnimation -_08029D06: - pop {r4, pc} - - thumb_func_start sub_08029D08 -sub_08029D08: @ 0x08029D08 - movs r1, #3 - strb r1, [r0, #0xc] - movs r1, #0x47 - strb r1, [r0, #0xe] - bx lr - .align 2, 0 - - thumb_func_start sub_08029D14 -sub_08029D14: @ 0x08029D14 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _08029D42 - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08029D70 - ldrb r1, [r4, #0x14] - adds r1, #0xc - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - movs r1, #0x7f - bl sub_0801D2B4 - movs r0, #0x6c - bl EnqueueSFX - b _08029D70 -_08029D42: - 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 _08029D70 - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x78 - strb r0, [r4, #0xe] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x6c - strb r0, [r1] - ldr r0, _08029D74 @ =gUnk_080FD298 - str r0, [r4, #0x48] - movs r0, #0x6b - bl EnqueueSFX -_08029D70: - pop {r4, pc} - .align 2, 0 -_08029D74: .4byte gUnk_080FD298 - - thumb_func_start sub_08029D78 -sub_08029D78: @ 0x08029D78 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A0F8 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08029DA6 - movs r0, #5 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x6a - strb r0, [r1] - ldr r0, _08029DA8 @ =gUnk_080FD2A0 - str r0, [r4, #0x48] - ldrb r1, [r4, #0x14] - adds r1, #0x10 - adds r0, r4, #0 - bl InitializeAnimation -_08029DA6: - pop {r4, pc} - .align 2, 0 -_08029DA8: .4byte gUnk_080FD2A0 - - thumb_func_start sub_08029DAC -sub_08029DAC: @ 0x08029DAC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08029DD8 - movs r0, #6 - strb r0, [r4, #0xc] - ldr r0, [r4, #0x50] - adds r0, #0x77 - movs r1, #1 - strb r1, [r0] - ldrb r1, [r4, #0x14] - adds r1, #8 - adds r0, r4, #0 - bl InitializeAnimation -_08029DD8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08029DDC -sub_08029DDC: @ 0x08029DDC - movs r1, #7 - strb r1, [r0, #0xc] - bx lr - .align 2, 0 - - thumb_func_start sub_08029DE4 -sub_08029DE4: @ 0x08029DE4 - push {r4, lr} - adds r4, r0, #0 - bl sub_08029CF0 - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #3 - beq _08029E02 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x77 - bl sub_0801D2B4 - b _08029E08 -_08029E02: - adds r0, r4, #0 - bl sub_0802A16C -_08029E08: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08029E0C -sub_08029E0C: @ 0x08029E0C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - adds r5, r0, #0 - ldrb r0, [r5, #0x15] - lsrs r0, r0, #3 - lsls r1, r0, #1 - adds r1, r1, r0 - ldr r0, _08029EE0 @ =gUnk_080CCDC8 - adds r1, r1, r0 - str r1, [sp] - bl Random - movs r1, #1 - ands r1, r0 - lsls r1, r1, #1 - subs r1, #1 - mov sl, r1 - bl Random - adds r1, r0, #0 - movs r0, #0xf - ands r0, r1 - movs r1, #3 - bl __modsi3 - mov sb, r0 - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r3, _08029EE4 @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - mov r8, r0 - movs r2, #0x3f - ands r0, r2 - mov r8, r0 - 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 - mov r1, r8 - orrs r1, r0 - mov r8, r1 - movs r7, #0 -_08029E72: - ldr r0, [sp] - add r0, sb - ldrb r4, [r0] - lsrs r0, r4, #3 - lsls r0, r0, #1 - ldr r1, _08029EE8 @ =gUnk_080B4488 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - add r0, r8 - adds r1, r5, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl sub_080002E0 - adds r6, r5, #0 - adds r6, #0x74 - cmp r0, #0 - bne _08029EA6 - str r4, [sp, #4] - ldrb r1, [r5, #0x15] - ldrb r0, [r6] - subs r0, r1, r0 - subs r1, r4, r1 - cmp r0, r1 - bne _08029EBA -_08029EA6: - mov r0, sb - add r0, sl - adds r0, #3 - movs r1, #3 - bl __modsi3 - mov sb, r0 - adds r7, #1 - cmp r7, #2 - bls _08029E72 -_08029EBA: - cmp r7, #3 - bne _08029EC0 - ldr r4, [sp, #4] -_08029EC0: - ldrb r1, [r5, #0x15] - ldrb r0, [r6] - cmp r0, r1 - beq _08029ECA - strb r1, [r6] -_08029ECA: - strb r4, [r5, #0x15] - adds r0, r5, #0 - bl sub_08029F0C - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08029EE0: .4byte gUnk_080CCDC8 -_08029EE4: .4byte gRoomControls -_08029EE8: .4byte gUnk_080B4488 - - thumb_func_start sub_08029EEC -sub_08029EEC: @ 0x08029EEC - push {lr} - adds r3, r0, #0 - ldrb r0, [r3, #0x15] - adds r2, r3, #0 - adds r2, #0x75 - lsrs r0, r0, #3 - ldrb r2, [r2] - adds r1, r0, r2 - ldrb r0, [r3, #0x14] - cmp r1, r0 - beq _08029F0A - strb r1, [r3, #0x14] - adds r0, r3, #0 - bl InitAnimationForceUpdate -_08029F0A: - pop {pc} - - thumb_func_start sub_08029F0C -sub_08029F0C: @ 0x08029F0C - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0x15] - lsrs r0, r0, #3 - cmp r0, #1 - beq _08029F30 - cmp r0, #1 - bgt _08029F22 - cmp r0, #0 - beq _08029F2C - b _08029F44 -_08029F22: - cmp r0, #2 - beq _08029F36 - cmp r0, #3 - beq _08029F3C - b _08029F44 -_08029F2C: - ldrh r0, [r1, #0x32] - b _08029F3E -_08029F30: - ldrh r0, [r1, #0x2e] - adds r0, #0x10 - b _08029F40 -_08029F36: - ldrh r0, [r1, #0x32] - adds r0, #0x10 - b _08029F40 -_08029F3C: - ldrh r0, [r1, #0x2e] -_08029F3E: - subs r0, #0x10 -_08029F40: - adds r1, #0x78 - strh r0, [r1] -_08029F44: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08029F48 -sub_08029F48: @ 0x08029F48 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0x15] - lsrs r0, r0, #3 - cmp r0, #1 - beq _08029F78 - cmp r0, #1 - bgt _08029F5E - cmp r0, #0 - beq _08029F68 - b _08029FB0 -_08029F5E: - cmp r0, #2 - beq _08029F88 - cmp r0, #3 - beq _08029F9C - b _08029FB0 -_08029F68: - movs r0, #0x32 - ldrsh r1, [r2, r0] - adds r0, r2, #0 - adds r0, #0x78 - ldrh r0, [r0] - cmp r1, r0 - bgt _08029FB0 - b _08029F96 -_08029F78: - movs r0, #0x2e - ldrsh r1, [r2, r0] - adds r0, r2, #0 - adds r0, #0x78 - ldrh r0, [r0] - cmp r1, r0 - blt _08029FB0 - b _08029FAA -_08029F88: - movs r0, #0x32 - ldrsh r1, [r2, r0] - adds r0, r2, #0 - adds r0, #0x78 - ldrh r0, [r0] - cmp r1, r0 - blt _08029FB0 -_08029F96: - strh r0, [r2, #0x32] - movs r0, #1 - b _08029FB2 -_08029F9C: - movs r0, #0x2e - ldrsh r1, [r2, r0] - adds r0, r2, #0 - adds r0, #0x78 - ldrh r0, [r0] - cmp r1, r0 - bgt _08029FB0 -_08029FAA: - strh r0, [r2, #0x2e] - movs r0, #1 - b _08029FB2 -_08029FB0: - movs r0, #0 -_08029FB2: - pop {pc} - - thumb_func_start sub_08029FB4 -sub_08029FB4: @ 0x08029FB4 - push {r4, r5, r6, lr} - adds r5, r1, #0 - adds r4, r2, #0 - ldr r6, [r0, #0x54] - adds r6, #0x78 - ldr r0, [r0, #0x50] - adds r0, #0x7e - ldrb r0, [r0] - movs r1, #0xe - bl __modsi3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - adds r6, r6, r0 - adds r5, #8 - movs r0, #0xf - ands r5, r0 - adds r4, #8 - ands r4, r0 - lsls r4, r4, #4 - orrs r5, r4 - strb r5, [r6] - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_08029FE4 -sub_08029FE4: @ 0x08029FE4 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r5, #0 - adds r4, #0x78 - ldr r0, [r5, #0x50] - adds r0, #0x7e - ldrb r0, [r0] - adds r0, #1 - movs r1, #0xe - bl __modsi3 - adds r4, r4, r0 - ldrb r1, [r4] - movs r0, #0xf - ands r0, r1 - subs r0, #8 - lsrs r1, r1, #4 - subs r1, #8 - lsls r1, r1, #0x18 - lsls r0, r0, #0x18 - asrs r4, r0, #0x18 - ldrh r0, [r5, #0x2e] - adds r0, r0, r4 - strh r0, [r5, #0x2e] - lsrs r6, r1, #0x18 - asrs r1, r1, #0x18 - ldrh r0, [r5, #0x32] - adds r1, r1, r0 - strh r1, [r5, #0x32] - adds r0, r5, #0 - bl GetNextFrame - movs r1, #0xff - cmp r4, #0 - beq _0802A032 - movs r1, #3 - cmp r4, #0 - ble _0802A032 - movs r1, #1 -_0802A032: - lsls r0, r6, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0802A042 - movs r1, #0 - cmp r0, #0 - ble _0802A042 - movs r1, #2 -_0802A042: - cmp r1, #0xff - beq _0802A052 - ldrb r0, [r5, #0x14] - cmp r1, r0 - beq _0802A052 - strb r1, [r5, #0x14] - movs r0, #1 - b _0802A054 -_0802A052: - movs r0, #0 -_0802A054: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0802A058 -sub_0802A058: @ 0x0802A058 - adds r2, r0, #0 - adds r0, #0x78 - movs r1, #0x88 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - bx lr - .align 2, 0 - - thumb_func_start sub_0802A098 -sub_0802A098: @ 0x0802A098 - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r5, r4, #0 - adds r5, #0x7e - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - ldrb r0, [r5] - movs r1, #0xe - bl __modsi3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - bne _0802A0B8 - strb r0, [r5] -_0802A0B8: - movs r0, #0x2e - ldrsh r5, [r4, r0] - movs r0, #0x32 - ldrsh r6, [r4, r0] - adds r0, r4, #0 - bl ProcessMovement - adds r0, r4, #0 - bl sub_08029F48 - cmp r0, #0 - beq _0802A0E4 - adds r0, r4, #0 - bl sub_08029E0C - adds r0, r4, #0 - bl sub_08029EEC - movs r0, #0x82 - lsls r0, r0, #1 - bl EnqueueSFX -_0802A0E4: - movs r0, #0x2e - ldrsh r1, [r4, r0] - subs r1, r1, r5 - movs r0, #0x32 - ldrsh r2, [r4, r0] - subs r2, r2, r6 - adds r0, r4, #0 - bl sub_08029FB4 - pop {r4, r5, r6, pc} - - thumb_func_start sub_0802A0F8 -sub_0802A0F8: @ 0x0802A0F8 - push {r4, lr} - adds r3, r0, #0 - adds r0, #0x45 - ldrb r4, [r0] - cmp r4, #0 - beq _0802A134 - subs r0, #4 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0802A14A - adds r1, r3, #0 - adds r1, #0x3d - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _0802A14A - adds r2, r3, #0 - movs r3, #0 - adds r4, r1, #0 -_0802A122: - ldr r2, [r2, #0x54] - ldrb r0, [r4] - adds r1, r2, #0 - adds r1, #0x3d - strb r0, [r1] - adds r3, #1 - cmp r3, #5 - bls _0802A122 - b _0802A14A -_0802A134: - ldr r2, [r3, #0x50] - ldrb r1, [r2, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r2, #0x10] - ldr r0, [r3, #0x50] - adds r0, #0x45 - strb r4, [r0] - ldr r1, [r3, #0x50] - movs r0, #0x69 - strb r0, [r1, #0xf] -_0802A14A: - pop {r4, pc} - - thumb_func_start sub_0802A14C -sub_0802A14C: @ 0x0802A14C - push {lr} - adds r1, r0, #0 - movs r2, #0 - ldr r0, [r1, #0x50] - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - beq _0802A166 - adds r0, r1, #0 - adds r0, #0x86 - ldrb r0, [r0] - cmp r0, #0 - beq _0802A168 -_0802A166: - movs r2, #1 -_0802A168: - adds r0, r2, #0 - pop {pc} - - thumb_func_start sub_0802A16C -sub_0802A16C: @ 0x0802A16C - push {lr} - ldr r3, _0802A188 @ =gUnk_080CCDD4 - ldr r1, [r0, #0x50] - adds r1, #0x7a - ldrh r1, [r1] - lsrs r1, r1, #2 - movs r2, #3 - ands r1, r2 - lsls r1, r1, #1 - adds r1, r1, r3 - ldrh r1, [r1] - bl sub_0801D2B4 - pop {pc} - .align 2, 0 -_0802A188: .4byte gUnk_080CCDD4 - - thumb_func_start sub_0802A18C -sub_0802A18C: @ 0x0802A18C - push {lr} - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0802A234 - movs r0, #0x7f - ands r0, r1 - cmp r0, #0x1e - bhi _0802A22C - lsls r0, r0, #2 - ldr r1, _0802A1AC @ =_0802A1B0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802A1AC: .4byte _0802A1B0 -_0802A1B0: @ jump table - .4byte _0802A234 @ case 0 - .4byte _0802A234 @ case 1 - .4byte _0802A234 @ case 2 - .4byte _0802A234 @ case 3 - .4byte _0802A22C @ case 4 - .4byte _0802A22C @ case 5 - .4byte _0802A22C @ case 6 - .4byte _0802A22C @ case 7 - .4byte _0802A22C @ case 8 - .4byte _0802A22C @ case 9 - .4byte _0802A22C @ case 10 - .4byte _0802A22C @ case 11 - .4byte _0802A22C @ case 12 - .4byte _0802A22C @ case 13 - .4byte _0802A22C @ case 14 - .4byte _0802A234 @ case 15 - .4byte _0802A22C @ case 16 - .4byte _0802A22C @ case 17 - .4byte _0802A22C @ case 18 - .4byte _0802A234 @ case 19 - .4byte _0802A22C @ case 20 - .4byte _0802A22C @ case 21 - .4byte _0802A22C @ case 22 - .4byte _0802A22C @ case 23 - .4byte _0802A22C @ case 24 - .4byte _0802A22C @ case 25 - .4byte _0802A22C @ case 26 - .4byte _0802A234 @ case 27 - .4byte _0802A22C @ case 28 - .4byte _0802A22C @ case 29 - .4byte _0802A234 @ case 30 -_0802A22C: - movs r0, #0x97 - lsls r0, r0, #1 - bl EnqueueSFX -_0802A234: - pop {pc} - .align 2, 0 diff --git a/asm/non_matching/bombPeahat/sub_0802AFC8.inc b/asm/non_matching/bombPeahat/sub_0802AFC8.inc new file mode 100644 index 00000000..89393e10 --- /dev/null +++ b/asm/non_matching/bombPeahat/sub_0802AFC8.inc @@ -0,0 +1,76 @@ + + .syntax unified + + .text + + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + movs r7, #8 + cmp r0, #0x28 + bhi _0802B022 + movs r7, #4 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r2, [r1] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0802AFEC + adds r0, r2, #0 + subs r0, #0x10 + b _0802AFF0 +_0802AFEC: + adds r0, r2, #0 + adds r0, #0x10 +_0802AFF0: + strh r0, [r1] + adds r5, r1, #0 + ldrh r2, [r5] + movs r6, #0xf0 + adds r3, r6, #0 + ands r3, r2 + subs r0, r3, #1 + cmp r0, #0x7f + bls _0802B00C + movs r3, #0x80 + lsls r3, r3, #8 + adds r0, r3, #0 + eors r0, r2 + strh r0, [r5] +_0802B00C: + ldrh r0, [r1] + adds r3, r6, #0 + ands r3, r0 + movs r2, #0x98 + lsls r2, r2, #1 + subs r2, r2, r3 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C +_0802B022: + ldrb r0, [r4, #0xf] + ands r0, r7 + cmp r0, #0 + beq _0802B03A + ldrb r0, [r4, #0x1a] + lsrs r2, r0, #4 + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1a] + b _0802B044 +_0802B03A: + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x1a] +_0802B044: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + .syntax divided diff --git a/asm/non_matching/businessScrub/sub_0802925C.inc b/asm/non_matching/businessScrub/sub_0802925C.inc new file mode 100644 index 00000000..d7598d7c --- /dev/null +++ b/asm/non_matching/businessScrub/sub_0802925C.inc @@ -0,0 +1,30 @@ + + .syntax unified + + .text + + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + movs r1, #6 + strb r1, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x81 + strb r0, [r1] + ldr r0, [r4, #0x7c] + ldrb r0, [r0, #8] + cmp r0, #0x6c + beq _08029252 + cmp r0, #0x6c + bgt _08029252 + cmp r0, #0x1c + bne _08029252 + movs r0, #0x5a + bl SetGlobalFlag +_08029252: + adds r0, r4, #0 + movs r1, #3 + bl sub_080290E0 + pop {r4, pc} + + .syntax divided diff --git a/asm/non_matching/fallingBoulder/sub_0802C334.inc b/asm/non_matching/fallingBoulder/sub_0802C334.inc new file mode 100644 index 00000000..763973d7 --- /dev/null +++ b/asm/non_matching/fallingBoulder/sub_0802C334.inc @@ -0,0 +1,193 @@ + + .syntax unified + + .text + + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x7c + ldrh r0, [r3] + cmp r0, #0 + bne _0802C36A + ldr r0, _0802C3C4 @ =gRoomControls + ldrh r1, [r0, #8] + ldr r2, _0802C3C8 @ =gPlayerEntity + cmp r2, #0 + bne _0802C34E + b _0802C4AA +_0802C34E: + movs r5, #0x32 + ldrsh r0, [r2, r5] + subs r0, r0, r1 + cmp r0, #0x38 + bhi _0802C35A + b _0802C4AA +_0802C35A: + movs r0, #1 + strh r0, [r3] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_0802C36A: + adds r0, r4, #0 + bl GetNextFrame + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0802C3C4 @ =gRoomControls + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x7e + strh r1, [r0] + adds r0, #6 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bne _0802C3CC + movs r0, #0xa6 + lsls r0, r0, #1 + bl EnqueueSFX + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0xc + strh r0, [r1] + adds r0, r4, #0 + bl sub_0802C4B0 + b _0802C48C + .align 2, 0 +_0802C3C4: .4byte gRoomControls +_0802C3C8: .4byte gPlayerEntity +_0802C3CC: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r1, [r0] + adds r7, r0, #0 + cmp r1, #0 + beq _0802C442 + subs r0, r1, #1 + strh r0, [r7] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _0802C3EA + cmp r0, #8 + beq _0802C3F4 + b _0802C442 +_0802C3EA: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + b _0802C442 +_0802C3F4: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0802C442 + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0802C442 + movs r6, #0 + movs r5, #1 +_0802C408: + adds r0, r4, #0 + movs r1, #0x15 + movs r2, #0 + bl CreateFx + adds r2, r0, #0 + cmp r2, #0 + beq _0802C420 + ldrh r0, [r2, #0x2e] + adds r0, #0xc + subs r0, r0, r6 + strh r0, [r2, #0x2e] +_0802C420: + adds r6, #0x18 + subs r5, #1 + cmp r5, #0 + bge _0802C408 + adds r0, r4, #0 + bl sub_0802C62C + bl Random + movs r1, #0xff + ands r0, r1 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r7] + b _0802C4AA +_0802C442: + ldr r0, _0802C45C @ =gRoomControls + ldrh r1, [r0, #8] + ldrh r0, [r0, #0x20] + adds r1, r1, r0 + movs r5, #0x32 + ldrsh r0, [r4, r5] + subs r5, r1, r0 + cmp r5, #4 + ble _0802C460 + adds r0, r4, #0 + bl sub_080AEFB4 + b _0802C48C + .align 2, 0 +_0802C45C: .4byte gRoomControls +_0802C460: + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x36 + ldrsh r0, [r4, r1] + subs r0, r0, r5 + cmp r0, #0x38 + ble _0802C48C + adds r0, r4, #0 + bl sub_0802C62C + bl Random + movs r1, #0x7f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strh r0, [r7] + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _0802C48C + strb r0, [r4, #0xc] +_0802C48C: + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xb + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl UpdateSpriteForCollisionLayer +_0802C4AA: + pop {r4, r5, r6, r7, pc} + + .syntax divided diff --git a/asm/non_matching/helmasaur/sub_0802BD8C.inc b/asm/non_matching/helmasaur/sub_0802BD8C.inc new file mode 100644 index 00000000..3e53e7d0 --- /dev/null +++ b/asm/non_matching/helmasaur/sub_0802BD8C.inc @@ -0,0 +1,47 @@ + + .syntax unified + + .text + + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802BD9C + subs r0, #1 + strb r0, [r4, #0xe] + b _0802BDDE +_0802BD9C: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802BDCA + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x10 + bl sub_0804A024 + adds r1, r0, #0 + cmp r1, #0xff + beq _0802BDCA + adds r0, r4, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r1, r0 + beq _0802BDCA + adds r0, r4, #0 + bl sub_0802C058 + b _0802BDDE +_0802BDCA: + adds r0, r4, #0 + bl sub_0802C020 + adds r1, r0, #0 + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _0802BDDE + adds r0, r4, #0 + bl sub_0802C058 +_0802BDDE: + pop {r4, pc} + + .syntax divided diff --git a/asm/non_matching/likeLike/sub_0802810C.inc b/asm/non_matching/likeLike/sub_0802810C.inc new file mode 100644 index 00000000..9e04fd00 --- /dev/null +++ b/asm/non_matching/likeLike/sub_0802810C.inc @@ -0,0 +1,81 @@ + + .syntax unified + + .text + + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _08028198 @ =gPlayerState + movs r1, #0 + movs r0, #0x41 + strb r0, [r2, #2] + strb r1, [r2, #0xa] + ldr r0, [r2, #0x30] + subs r1, #0x11 + ands r0, r1 + str r0, [r2, #0x30] + ldr r0, _0802819C @ =gPlayerEntity + mov ip, r0 + ldrb r0, [r0, #0x10] + movs r1, #0x80 + orrs r0, r1 + mov r1, ip + strb r0, [r1, #0x10] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r1, #0x20] + adds r1, #0x3d + movs r0, #0xc4 + strb r0, [r1] + movs r3, #0 + mov r2, ip + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + strb r0, [r2, #0x15] + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + mov r5, ip + adds r5, #0x29 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r5] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + mov r1, ip + adds r1, #0x63 + movs r0, #0 + ldrsb r0, [r1, r0] + mov r2, ip + strh r0, [r2, #0x36] + strb r3, [r1] + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x50 + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _08028196 + movs r0, #0xee + strb r0, [r1] +_08028196: + pop {r4, r5, pc} + .align 2, 0 +_08028198: .4byte gPlayerState +_0802819C: .4byte gPlayerEntity + + .syntax divided diff --git a/asm/non_matching/madderpillar/sub_08029E0C.inc b/asm/non_matching/madderpillar/sub_08029E0C.inc new file mode 100644 index 00000000..0e9abb89 --- /dev/null +++ b/asm/non_matching/madderpillar/sub_08029E0C.inc @@ -0,0 +1,115 @@ + + .syntax unified + + .text + + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r0, #0 + ldrb r0, [r5, #0x15] + lsrs r0, r0, #3 + lsls r1, r0, #1 + adds r1, r1, r0 + ldr r0, _08029EE0 @ =gUnk_080CCDC8 + adds r1, r1, r0 + str r1, [sp] + bl Random + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + subs r1, #1 + mov sl, r1 + bl Random + adds r1, r0, #0 + movs r0, #0xf + ands r0, r1 + movs r1, #3 + bl __modsi3 + mov sb, r0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r3, _08029EE4 @ =gRoomControls + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + mov r8, r0 + movs r2, #0x3f + ands r0, r2 + mov r8, r0 + 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 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + movs r7, #0 +_08029E72: + ldr r0, [sp] + add r0, sb + ldrb r4, [r0] + lsrs r0, r4, #3 + lsls r0, r0, #1 + ldr r1, _08029EE8 @ =gUnk_080B4488 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + add r0, r8 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002E0 + adds r6, r5, #0 + adds r6, #0x74 + cmp r0, #0 + bne _08029EA6 + str r4, [sp, #4] + ldrb r1, [r5, #0x15] + ldrb r0, [r6] + subs r0, r1, r0 + subs r1, r4, r1 + cmp r0, r1 + bne _08029EBA +_08029EA6: + mov r0, sb + add r0, sl + adds r0, #3 + movs r1, #3 + bl __modsi3 + mov sb, r0 + adds r7, #1 + cmp r7, #2 + bls _08029E72 +_08029EBA: + cmp r7, #3 + bne _08029EC0 + ldr r4, [sp, #4] +_08029EC0: + ldrb r1, [r5, #0x15] + ldrb r0, [r6] + cmp r0, r1 + beq _08029ECA + strb r1, [r6] +_08029ECA: + strb r4, [r5, #0x15] + adds r0, r5, #0 + bl sub_08029F0C + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08029EE0: .4byte gUnk_080CCDC8 +_08029EE4: .4byte gRoomControls +_08029EE8: .4byte gUnk_080B4488 + + .syntax divided diff --git a/asm/non_matching/puffstool/sub_080258C4.inc b/asm/non_matching/puffstool/sub_080258C4.inc deleted file mode 100644 index 861958cc..00000000 --- a/asm/non_matching/puffstool/sub_080258C4.inc +++ /dev/null @@ -1,77 +0,0 @@ - - .syntax unified - - .text - - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r2, r0, #0 - cmp r2, #0 - beq _08025922 - movs r0, #0x2e - ldrsh r1, [r2, r0] - movs r3, #0x2e - ldrsh r0, [r4, r3] - subs r3, r1, r0 - adds r0, r3, #0 - muls r0, r3, r0 - adds r3, r0, #0 - movs r1, #0x32 - ldrsh r0, [r2, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - subs r0, r0, r1 - adds r1, r0, #0 - muls r1, r0, r1 - adds r0, r1, #0 - adds r3, r3, r0 - adds r0, r4, #0 - adds r0, #0x84 - ldrh r0, [r0] - cmp r0, #0 - bne _0802591A - adds r0, r4, #0 - adds r0, #0x81 - ldrb r1, [r0] - cmp r1, #0 - bne _0802591A - movs r0, #0x80 - lsls r0, r0, #3 - cmp r3, r0 - bgt _0802591A - movs r0, #9 - strb r0, [r4, #0xc] - strb r1, [r4, #0xe] - b _08025942 -_0802591A: - movs r0, #0x90 - lsls r0, r0, #4 - cmp r3, r0 - ble _08025926 -_08025922: - movs r0, #0 - b _08025944 -_08025926: - movs r0, #0xb - strb r0, [r4, #0xc] - movs r0, #1 - strb r0, [r4, #0xe] - bl Random - ldr r2, _08025948 @ =gUnk_080CC050 - movs r1, #0xf - ands r1, r0 - adds r1, r1, r2 - ldrb r1, [r1] - adds r0, r4, #0 - adds r0, #0x78 - strh r1, [r0] -_08025942: - movs r0, #1 -_08025944: - pop {r4, pc} - .align 2, 0 -_08025948: .4byte gUnk_080CC050 - - .syntax divided diff --git a/asm/non_matching/spearMoblin/sub_08028604.inc b/asm/non_matching/spearMoblin/sub_08028604.inc new file mode 100644 index 00000000..61faa58b --- /dev/null +++ b/asm/non_matching/spearMoblin/sub_08028604.inc @@ -0,0 +1,104 @@ + + .syntax unified + + .text + + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #0 + strb r1, [r4, #0xf] + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #1 + bne _080286B0 + bl Random + ldr r2, _08028650 @ =gUnk_080CC7BC + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _08028658 + bl Random + ldr r2, _08028654 @ =gUnk_080CC7D0 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r0, #0x18 + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + b _080286B8 + .align 2, 0 +_08028650: .4byte gUnk_080CC7BC +_08028654: .4byte gUnk_080CC7D0 +_08028658: + adds r0, r4, #0 + bl sub_08049EE4 + adds r5, r0, #0 + adds r6, r4, #0 + adds r6, #0x83 + ldrb r0, [r6] + cmp r0, #0 + bne _08028684 + bl Random + ldr r2, _08028680 @ =gUnk_080CC7C0 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r5, r5, r0 + b _080286A2 + .align 2, 0 +_08028680: .4byte gUnk_080CC7C0 +_08028684: + bl Random + ldr r2, _080286AC @ =gUnk_080CC7C0 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r5, r5, r0 + ldrb r0, [r4, #0xe] + adds r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r6] + subs r0, #1 + strb r0, [r6] +_080286A2: + adds r0, r5, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + b _080286B8 + .align 2, 0 +_080286AC: .4byte gUnk_080CC7C0 +_080286B0: + movs r0, #0xc + strb r0, [r4, #0xe] + strh r1, [r4, #0x24] + ldrb r0, [r4, #0x15] +_080286B8: + lsrs r5, r0, #2 + ldrb r0, [r4, #0x14] + cmp r5, r0 + beq _080286C8 + strb r5, [r4, #0x14] + adds r0, r4, #0 + bl sub_080287E0 +_080286C8: + pop {r4, r5, r6, pc} + .align 2, 0 + + .syntax divided diff --git a/asm/sensorBladeTrap.s b/asm/sensorBladeTrap.s deleted file mode 100644 index 1351ee98..00000000 --- a/asm/sensorBladeTrap.s +++ /dev/null @@ -1,238 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start SensorBladeTrap -SensorBladeTrap: @ 0x0802B9D4 - push {lr} - ldr r2, _0802B9E8 @ =gUnk_080CD3C4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802B9E8: .4byte gUnk_080CD3C4 - - thumb_func_start sub_0802B9EC -sub_0802B9EC: @ 0x0802B9EC - adds r2, r0, #0 - movs r0, #1 - strb r0, [r2, #0xc] - ldr r1, _0802BA14 @ =gUnk_080CD3D4 - ldrb r0, [r2, #0xa] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] - adds r0, r2, #0 - adds r0, #0x78 - strh r1, [r0] - adds r0, #0xc - ldrh r1, [r0] - subs r0, #8 - strh r1, [r0] - adds r0, #0xa - ldrh r1, [r0] - subs r0, #8 - strh r1, [r0] - bx lr - .align 2, 0 -_0802BA14: .4byte gUnk_080CD3D4 - - thumb_func_start sub_0802BA18 -sub_0802BA18: @ 0x0802BA18 - push {r4, r5, lr} - adds r4, r0, #0 - movs r1, #1 - movs r2, #0xe - bl sub_0804A024 - adds r5, r0, #0 - cmp r5, #0xff - beq _0802BA88 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0802BB2C - cmp r0, #0 - bne _0802BA88 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x78 - ldrh r0, [r0] - strh r0, [r4, #0x24] - strb r5, [r4, #0x15] - lsrs r0, r5, #3 - cmp r0, #1 - beq _0802BA60 - cmp r0, #1 - blo _0802BA58 - cmp r0, #2 - beq _0802BA6C - cmp r0, #3 - beq _0802BA78 - b _0802BA88 -_0802BA58: - adds r1, r4, #0 - adds r1, #0x7e - ldrh r0, [r4, #0x32] - b _0802BA7E -_0802BA60: - adds r0, r4, #0 - adds r0, #0x7c - ldrh r0, [r0] - ldrh r1, [r4, #0x2e] - adds r0, r0, r1 - b _0802BA82 -_0802BA6C: - adds r0, r4, #0 - adds r0, #0x7e - ldrh r0, [r0] - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - b _0802BA82 -_0802BA78: - adds r1, r4, #0 - adds r1, #0x7c - ldrh r0, [r4, #0x2e] -_0802BA7E: - ldrh r1, [r1] - subs r0, r0, r1 -_0802BA82: - adds r1, r4, #0 - adds r1, #0x7a - strh r0, [r1] -_0802BA88: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0802BA8C -sub_0802BA8C: @ 0x0802BA8C - push {r4, lr} - adds r4, r0, #0 - bl sub_080AF038 - cmp r0, #0 - beq _0802BADE - ldrb r0, [r4, #0x15] - lsrs r0, r0, #3 - cmp r0, #1 - beq _0802BAC4 - cmp r0, #1 - bgt _0802BAAA - cmp r0, #0 - beq _0802BAB4 - b _0802BAFA -_0802BAAA: - cmp r0, #2 - beq _0802BAD0 - cmp r0, #3 - beq _0802BAE6 - b _0802BAFA -_0802BAB4: - adds r0, r4, #0 - adds r0, #0x7a - ldrh r1, [r0] - movs r2, #0x32 - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _0802BAFA - b _0802BADE -_0802BAC4: - adds r0, r4, #0 - adds r0, #0x7a - ldrh r1, [r0] - movs r2, #0x2e - ldrsh r0, [r4, r2] - b _0802BADA -_0802BAD0: - adds r0, r4, #0 - adds r0, #0x7a - ldrh r1, [r0] - movs r2, #0x32 - ldrsh r0, [r4, r2] -_0802BADA: - cmp r1, r0 - bgt _0802BAFA -_0802BADE: - adds r0, r4, #0 - bl sub_0802BB10 - b _0802BAFA -_0802BAE6: - adds r0, r4, #0 - adds r0, #0x7a - ldrh r1, [r0] - movs r2, #0x2e - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _0802BAFA - adds r0, r4, #0 - bl sub_0802BB10 -_0802BAFA: - pop {r4, pc} - - thumb_func_start sub_0802BAFC -sub_0802BAFC: @ 0x0802BAFC - push {r4, lr} - adds r4, r0, #0 - bl sub_080AF038 - cmp r0, #0 - bne _0802BB0C - movs r0, #1 - strb r0, [r4, #0xc] -_0802BB0C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802BB10 -sub_0802BB10: @ 0x0802BB10 - push {lr} - movs r1, #3 - strb r1, [r0, #0xc] - movs r1, #0xc0 - strh r1, [r0, #0x24] - ldrb r1, [r0, #0x15] - movs r2, #0x10 - eors r1, r2 - strb r1, [r0, #0x15] - movs r0, #0x74 - bl EnqueueSFX - pop {pc} - .align 2, 0 - - thumb_func_start sub_0802BB2C -sub_0802BB2C: @ 0x0802BB2C - push {r4, lr} - adds r2, r0, #0 - adds r0, #0x38 - ldrb r0, [r0] - ldr r4, _0802BB60 @ =gUnk_02027EB4 - cmp r0, #2 - bne _0802BB3C - ldr r4, _0802BB64 @ =gUnk_0200D654 -_0802BB3C: - lsrs r3, r1, #2 - ldr r0, _0802BB68 @ =gUnk_080CD3DC - adds r3, r3, r0 - movs r0, #0x2e - ldrsh r1, [r2, r0] - movs r0, #0 - ldrsb r0, [r3, r0] - adds r1, r1, r0 - movs r0, #0x32 - ldrsh r2, [r2, r0] - movs r0, #1 - ldrsb r0, [r3, r0] - adds r2, r2, r0 - adds r0, r4, #0 - movs r3, #0 - bl sub_080AE4CC - pop {r4, pc} - .align 2, 0 -_0802BB60: .4byte gUnk_02027EB4 -_0802BB64: .4byte gUnk_0200D654 -_0802BB68: .4byte gUnk_080CD3DC diff --git a/asm/spark.s b/asm/spark.s deleted file mode 100644 index 83bd9414..00000000 --- a/asm/spark.s +++ /dev/null @@ -1,319 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Spark -Spark: @ 0x0802B2AC - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _0802B2C4 @ =gUnk_080CD234 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_0802B2C4: .4byte gUnk_080CD234 - - thumb_func_start sub_0802B2C8 -sub_0802B2C8: @ 0x0802B2C8 - push {lr} - ldr r2, _0802B2DC @ =gUnk_080CD24C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802B2DC: .4byte gUnk_080CD24C - - thumb_func_start sub_0802B2E0 -sub_0802B2E0: @ 0x0802B2E0 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0802B334 - movs r2, #0x7f - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0x14 - bne _0802B334 - ldrb r1, [r4, #0x10] - adds r0, r2, #0 - ands r0, r1 - movs r1, #0 - strb r0, [r4, #0x10] - adds r0, r4, #0 - adds r0, #0x3d - strb r1, [r0] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _0802B334 - str r1, [r4, #0x54] - movs r0, #0xe - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl CopyPosition -_0802B334: - pop {r4, pc} - .align 2, 0 - - thumb_func_start nullsub_15 -nullsub_15: @ 0x0802B338 - bx lr - .align 2, 0 - - thumb_func_start sub_0802B33C -sub_0802B33C: @ 0x0802B33C - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xb] - strb r0, [r4, #0x15] - movs r0, #0x78 - strb r0, [r4, #0xf] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802B35C -sub_0802B35C: @ 0x0802B35C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl ProcessMovement - movs r3, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0802B374 - movs r3, #1 -_0802B374: - ldrh r0, [r4, #0x2a] - adds r2, r0, #0 - cmp r2, #0 - bne _0802B3A4 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - beq _0802B38A - b _0802B4A6 -_0802B38A: - movs r0, #0x78 - strb r0, [r4, #0xf] - ldrb r0, [r4, #0x15] - cmp r3, #0 - beq _0802B39A - adds r1, r0, #0 - adds r1, #8 - b _0802B39E -_0802B39A: - adds r1, r0, #0 - adds r1, #0x18 -_0802B39E: - movs r0, #0x18 - ands r0, r1 - b _0802B4A4 -_0802B3A4: - movs r0, #0x78 - strb r0, [r4, #0xf] - ldrb r0, [r4, #0x15] - movs r1, #0x18 - ands r1, r0 - cmp r1, #8 - beq _0802B474 - cmp r1, #8 - bgt _0802B3BC - cmp r1, #0 - beq _0802B3C6 - b _0802B4A6 -_0802B3BC: - cmp r1, #0x10 - beq _0802B404 - cmp r1, #0x18 - beq _0802B442 - b _0802B4A6 -_0802B3C6: - movs r0, #0xe - ands r0, r2 - cmp r0, #0 - beq _0802B3D8 - movs r0, #8 - cmp r3, #0 - beq _0802B4A4 - movs r0, #0x18 - b _0802B4A4 -_0802B3D8: - movs r0, #0xe0 - lsls r0, r0, #8 - ands r0, r2 - movs r1, #0x80 - lsls r1, r1, #7 - cmp r0, r1 - bne _0802B3EE - cmp r3, #0 - beq _0802B3EE - movs r0, #8 - strb r0, [r4, #0x15] -_0802B3EE: - movs r0, #0xe0 - lsls r0, r0, #4 - ands r0, r2 - movs r1, #0x80 - lsls r1, r1, #3 - cmp r0, r1 - bne _0802B4A6 - cmp r3, #0 - bne _0802B4A6 - movs r0, #0x18 - b _0802B4A4 -_0802B404: - movs r0, #0xe0 - ands r0, r2 - cmp r0, #0 - beq _0802B416 - movs r0, #0x18 - cmp r3, #0 - beq _0802B4A4 - movs r0, #8 - b _0802B4A4 -_0802B416: - movs r0, #0xe0 - lsls r0, r0, #8 - ands r0, r2 - movs r1, #0x80 - lsls r1, r1, #6 - cmp r0, r1 - bne _0802B42C - cmp r3, #0 - bne _0802B42C - movs r0, #8 - strb r0, [r4, #0x15] -_0802B42C: - movs r0, #0xe0 - lsls r0, r0, #4 - ands r0, r2 - movs r1, #0x80 - lsls r1, r1, #2 - cmp r0, r1 - bne _0802B4A6 - cmp r3, #0 - beq _0802B4A6 - movs r0, #0x18 - b _0802B4A4 -_0802B442: - movs r1, #0xe0 - lsls r1, r1, #4 - ands r1, r2 - cmp r1, #0 - beq _0802B458 - rsbs r0, r3, #0 - orrs r0, r3 - asrs r0, r0, #0x1f - movs r1, #0x10 - ands r0, r1 - b _0802B4A4 -_0802B458: - movs r0, #0xe - ands r0, r2 - cmp r0, #4 - bne _0802B466 - cmp r3, #0 - beq _0802B466 - strb r1, [r4, #0x15] -_0802B466: - movs r0, #0xe0 - ands r0, r2 - cmp r0, #0x40 - bne _0802B4A6 - cmp r3, #0 - bne _0802B4A6 - b _0802B4A2 -_0802B474: - movs r0, #0xe0 - lsls r0, r0, #8 - ands r0, r2 - cmp r0, #0 - beq _0802B488 - movs r0, #0 - cmp r3, #0 - bne _0802B4A4 - movs r0, #0x10 - b _0802B4A4 -_0802B488: - movs r0, #0xe - ands r0, r2 - cmp r0, #2 - bne _0802B496 - cmp r3, #0 - bne _0802B496 - strb r3, [r4, #0x15] -_0802B496: - movs r0, #0xe0 - ands r0, r2 - cmp r0, #0x20 - bne _0802B4A6 - cmp r3, #0 - beq _0802B4A6 -_0802B4A2: - movs r0, #0x10 -_0802B4A4: - strb r0, [r4, #0x15] -_0802B4A6: - pop {r4, pc} - - thumb_func_start sub_0802B4A8 -sub_0802B4A8: @ 0x0802B4A8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802B4D6 - adds r0, r4, #0 - movs r1, #0 - movs r2, #0x60 - movs r3, #0 - bl CreateObjectWithParent - adds r1, r0, #0 - cmp r1, #0 - beq _0802B4D0 - ldrh r0, [r1, #0x32] - subs r0, #4 - strh r0, [r1, #0x32] -_0802B4D0: - adds r0, r4, #0 - bl DeleteEntity -_0802B4D6: - pop {r4, pc} diff --git a/asm/spearMoblin.s b/asm/spearMoblin.s deleted file mode 100644 index 6d6ba820..00000000 --- a/asm/spearMoblin.s +++ /dev/null @@ -1,921 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start SpearMoblin -SpearMoblin: @ 0x0802823C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08028268 @ =gUnk_080CC790 - bl EnemyFunctionHandler - movs r3, #0x20 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _08028266 - ldr r0, [r1, #4] - cmp r0, #0 - beq _08028266 - adds r0, r4, #0 - bl CopyPosition -_08028266: - pop {r4, pc} - .align 2, 0 -_08028268: .4byte gUnk_080CC790 - - thumb_func_start sub_0802826C -sub_0802826C: @ 0x0802826C - push {lr} - ldr r2, _08028280 @ =gUnk_080CC7A8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08028280: .4byte gUnk_080CC7A8 - - thumb_func_start sub_08028284 -sub_08028284: @ 0x08028284 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _08028298 - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_08028298: - ldr r1, _080282BC @ =gUnk_080CC790 - adds r0, r4, #0 - bl sub_0804AA30 - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080282DE - ldrb r0, [r4, #0xc] - cmp r0, #4 - beq _080282C0 - adds r0, r4, #0 - bl sub_08028754 - b _080282DE - .align 2, 0 -_080282BC: .4byte gUnk_080CC790 -_080282C0: - movs r0, #0x3f - ands r0, r1 - cmp r0, #0 - bne _080282DE - adds r1, r4, #0 - adds r1, #0x7a - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - adds r1, #7 - movs r0, #0x16 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08028784 -_080282DE: - ldr r0, [r4, #0x54] - adds r1, r4, #0 - adds r1, #0x3d - ldrb r1, [r1] - adds r0, #0x3d - strb r1, [r0] - adds r0, r4, #0 - adds r0, #0x45 - ldrb r5, [r0] - cmp r5, #0 - bne _0802830C - movs r0, #0 - strh r5, [r4, #0x24] - adds r1, r4, #0 - adds r1, #0x82 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080287E0 - ldr r0, [r4, #0x54] - bl DeleteEntity - str r5, [r4, #0x54] -_0802830C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start nullsub_13 -nullsub_13: @ 0x08028310 - bx lr - .align 2, 0 - - thumb_func_start sub_08028314 -sub_08028314: @ 0x08028314 - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r1, #0 - movs r2, #1 - strb r2, [r4, #0xc] - strb r1, [r4, #0x14] - adds r0, r4, #0 - adds r0, #0x7b - strb r1, [r0] - adds r0, #5 - strb r1, [r0] - adds r0, #3 - strb r1, [r0] - subs r0, #2 - strb r1, [r0] - subs r0, #7 - strb r1, [r0] - adds r0, #8 - strb r2, [r0] - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802835E - ldrb r1, [r4, #0xb] - lsls r0, r1, #1 - strb r0, [r4, #0x14] - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r0, #0x80 - strh r0, [r4, #0x24] - lsls r1, r1, #3 - strb r1, [r4, #0x15] - adds r0, r4, #0 - bl sub_080287E0 - b _08028368 -_0802835E: - movs r0, #0x10 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_08028604 -_08028368: - movs r0, #3 - bl sub_080A7EE0 - cmp r0, #0 - beq _08028376 - str r4, [r0, #0x50] - str r0, [r4, #0x54] -_08028376: - pop {r4, pc} - - thumb_func_start sub_08028378 -sub_08028378: @ 0x08028378 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x81 - ldrb r0, [r1] - cmp r0, #0 - beq _0802838A - subs r0, #1 - strb r0, [r1] -_0802838A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r2, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080283B8 - adds r1, r4, #0 - adds r1, #0x80 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ands r0, r2 - cmp r0, #0xf - bls _080283B0 - adds r0, r4, #0 - bl sub_08028728 - b _080283FC -_080283B0: - adds r0, r4, #0 - bl sub_08028604 - b _080283FC -_080283B8: - adds r0, r4, #0 - bl sub_080286CC - cmp r0, #0 - beq _080283CE - adds r2, r4, #0 - adds r2, #0x7b - ldrb r0, [r2] - movs r1, #1 - orrs r0, r1 - strb r0, [r2] -_080283CE: - adds r0, r4, #0 - bl sub_080288A4 - cmp r0, #0 - beq _080283FC - ldrh r1, [r4, #0x2a] - adds r0, r4, #0 - bl sub_0800417E - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r1, r4, #0 - adds r1, #0x83 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080287E0 -_080283FC: - ldrb r0, [r4, #0xf] - cmp r0, #0xb - bls _08028414 - adds r0, r4, #0 - adds r0, #0x7b - ldrb r0, [r0] - cmp r0, #0 - beq _08028418 - adds r0, r4, #0 - bl sub_08028754 - b _08028418 -_08028414: - adds r0, #1 - strb r0, [r4, #0xf] -_08028418: - adds r0, r4, #0 - bl sub_08028858 - pop {r4, pc} - - thumb_func_start sub_08028420 -sub_08028420: @ 0x08028420 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0802844C - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x82 - strb r1, [r0] - subs r0, #2 - strb r1, [r0] - movs r0, #0x10 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_08028604 - b _08028462 -_0802844C: - adds r0, r4, #0 - bl sub_080286CC - cmp r0, #0 - beq _08028462 - adds r2, r4, #0 - adds r2, #0x7b - ldrb r0, [r2] - movs r1, #1 - orrs r0, r1 - strb r0, [r2] -_08028462: - ldrb r0, [r4, #0xf] - cmp r0, #0xb - bls _0802847A - adds r0, r4, #0 - adds r0, #0x7b - ldrb r0, [r0] - cmp r0, #0 - beq _0802847E - adds r0, r4, #0 - bl sub_08028754 - b _0802847E -_0802847A: - adds r0, #1 - strb r0, [r4, #0xf] -_0802847E: - adds r0, r4, #0 - bl sub_08028858 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08028488 -sub_08028488: @ 0x08028488 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - bne _08028520 - adds r0, r4, #0 - adds r0, #0x82 - ldrb r1, [r0] - adds r3, r0, #0 - cmp r1, #2 - beq _080284D2 - cmp r1, #2 - ble _080284F0 - cmp r1, #3 - beq _080284B4 - cmp r1, #4 - beq _080284E6 - b _080284F0 -_080284B4: - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #1 - bl sub_08049F84 - strb r0, [r4, #0x15] - movs r0, #0x8f - lsls r0, r0, #1 - bl EnqueueSFX - b _0802850A -_080284D2: - strb r1, [r4, #0xc] - strh r2, [r4, #0x24] - bl Random - movs r1, #7 - ands r0, r1 - lsls r1, r0, #1 - adds r1, r1, r0 - adds r1, #0x40 - b _08028508 -_080284E6: - ldrb r0, [r4, #0x15] - adds r0, #0x10 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] -_080284F0: - movs r0, #1 - strb r0, [r4, #0xc] - strb r0, [r3] - movs r0, #0x80 - strh r0, [r4, #0x24] - bl Random - movs r1, #7 - ands r0, r1 - lsls r1, r0, #1 - adds r1, r1, r0 - adds r1, #0x22 -_08028508: - strb r1, [r4, #0xe] -_0802850A: - movs r0, #0 - strb r0, [r4, #0xf] - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_080287E0 -_08028520: - adds r0, r4, #0 - bl sub_08028858 - pop {r4, pc} - - thumb_func_start sub_08028528 -sub_08028528: @ 0x08028528 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r5, r0, #0 - cmp r5, #0 - bne _08028542 - strb r5, [r4, #0xf] - adds r0, r4, #0 - bl sub_08028728 - b _08028600 -_08028542: - adds r0, r4, #0 - bl sub_080288C0 - ldr r1, _08028590 @ =gUnk_080CC944 - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r2, [r0] - ldr r1, [r4, #0x48] - ldrb r0, [r2] - strb r0, [r1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #1] - strb r0, [r1, #1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #6] - strb r0, [r1, #6] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #7] - strb r0, [r1, #7] - adds r0, r4, #0 - adds r0, #0x7a - ldrb r1, [r0] - adds r6, r0, #0 - cmp r1, #0 - beq _08028594 - movs r0, #0 - strb r0, [r6] - adds r1, r4, #0 - adds r1, #0x81 - movs r0, #0x16 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08028784 - adds r1, r4, #0 - adds r1, #0x7b - b _080285EE - .align 2, 0 -_08028590: .4byte gUnk_080CC944 -_08028594: - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x20 - bne _080285BC - strb r1, [r4, #0xe] - adds r0, r4, #0 - adds r1, r5, #0 - bl GetFacingDirection - adds r5, r0, #0 - ldrb r0, [r4, #0x15] - adds r1, r5, #0 - bl sub_08028828 - cmp r0, #0 - beq _080285BC - strb r5, [r4, #0x15] -_080285BC: - ldrb r1, [r4, #0xe] - movs r0, #7 - ands r0, r1 - cmp r0, #0 - bne _080285D6 - movs r0, #0xf0 - bl EnqueueSFX - adds r0, r4, #0 - movs r1, #2 - movs r2, #0x40 - bl CreateFx -_080285D6: - adds r1, r4, #0 - adds r1, #0x7b - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x80 - bne _080285EE - ldrb r0, [r6] - adds r0, #1 - strb r0, [r6] -_080285EE: - ldrb r0, [r1] - cmp r0, #0x20 - bls _080285FA - adds r0, r4, #0 - bl ProcessMovement -_080285FA: - adds r0, r4, #0 - bl GetNextFrame -_08028600: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_08028604 -sub_08028604: @ 0x08028604 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r1, #0 - strb r1, [r4, #0xf] - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #1 - bne _080286B0 - bl Random - ldr r2, _08028650 @ =gUnk_080CC7BC - movs r1, #3 - ands r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4, #0xe] - movs r0, #0x80 - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - beq _08028658 - bl Random - ldr r2, _08028654 @ =gUnk_080CC7D0 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r0, #0x18 - ldrb r1, [r4, #0x15] - adds r0, r0, r1 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - b _080286B8 - .align 2, 0 -_08028650: .4byte gUnk_080CC7BC -_08028654: .4byte gUnk_080CC7D0 -_08028658: - adds r0, r4, #0 - bl sub_08049EE4 - adds r5, r0, #0 - adds r6, r4, #0 - adds r6, #0x83 - ldrb r0, [r6] - cmp r0, #0 - bne _08028684 - bl Random - ldr r2, _08028680 @ =gUnk_080CC7C0 - movs r1, #0xf - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r5, r5, r0 - b _080286A2 - .align 2, 0 -_08028680: .4byte gUnk_080CC7C0 -_08028684: - bl Random - ldr r2, _080286AC @ =gUnk_080CC7C0 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r5, r5, r0 - ldrb r0, [r4, #0xe] - adds r0, #0x10 - strb r0, [r4, #0xe] - ldrb r0, [r6] - subs r0, #1 - strb r0, [r6] -_080286A2: - adds r0, r5, #4 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - b _080286B8 - .align 2, 0 -_080286AC: .4byte gUnk_080CC7C0 -_080286B0: - movs r0, #0xc - strb r0, [r4, #0xe] - strh r1, [r4, #0x24] - ldrb r0, [r4, #0x15] -_080286B8: - lsrs r5, r0, #2 - ldrb r0, [r4, #0x14] - cmp r5, r0 - beq _080286C8 - strb r5, [r4, #0x14] - adds r0, r4, #0 - bl sub_080287E0 -_080286C8: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_080286CC -sub_080286CC: @ 0x080286CC - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - bne _08028724 - movs r0, #1 - bl sub_08049DF4 - adds r4, r0, #0 - cmp r4, #0 - beq _08028724 - adds r0, r5, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #2 - bne _080286FC - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0x30 - bl sub_0806FC80 - cmp r0, #0 - bne _08028720 -_080286FC: - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0x40 - bl sub_0806FC80 - cmp r0, #0 - beq _08028724 - adds r0, r5, #0 - adds r1, r4, #0 - bl GetFacingDirection - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - lsrs r0, r0, #2 - ldrb r5, [r5, #0x14] - cmp r0, r5 - bne _08028724 -_08028720: - movs r0, #1 - b _08028726 -_08028724: - movs r0, #0 -_08028726: - pop {r4, r5, pc} - - thumb_func_start sub_08028728 -sub_08028728: @ 0x08028728 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] - adds r1, r4, #0 - adds r1, #0x83 - ldrb r0, [r1] - lsrs r0, r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080287B4 - adds r4, #0x82 - movs r0, #2 - strb r0, [r4] - pop {r4, pc} - - thumb_func_start sub_08028754 -sub_08028754: @ 0x08028754 - push {r4, lr} - adds r4, r0, #0 - movs r1, #1 - bl sub_08049F84 - movs r2, #0 - strb r0, [r4, #0x15] - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r0, r4, #0 - adds r0, #0x83 - strb r2, [r0] - adds r0, r4, #0 - bl sub_080287B4 - adds r4, #0x82 - movs r0, #3 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08028784 -sub_08028784: @ 0x08028784 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - movs r1, #0 - strb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] - adds r0, r4, #0 - adds r0, #0x83 - strb r1, [r0] - adds r0, r4, #0 - bl sub_080287B4 - ldrb r0, [r4, #0xe] - lsls r0, r0, #1 - strb r0, [r4, #0xe] - adds r4, #0x82 - movs r0, #4 - strb r0, [r4] - pop {r4, pc} - - thumb_func_start sub_080287B4 -sub_080287B4: @ 0x080287B4 - push {lr} - adds r2, r0, #0 - movs r1, #0 - movs r0, #3 - strb r0, [r2, #0xc] - movs r0, #0x20 - strb r0, [r2, #0xe] - strb r1, [r2, #0xf] - adds r0, r2, #0 - adds r0, #0x80 - strb r1, [r0] - subs r0, #5 - strb r1, [r0] - movs r0, #0 - strh r1, [r2, #0x24] - adds r1, r2, #0 - adds r1, #0x82 - strb r0, [r1] - adds r0, r2, #0 - bl sub_080287E0 - pop {pc} - - thumb_func_start sub_080287E0 -sub_080287E0: @ 0x080287E0 - push {lr} - adds r3, r0, #0 - ldrb r0, [r3, #0x14] - lsrs r2, r0, #1 - adds r0, r3, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #4 - bhi _0802881E - lsls r0, r0, #2 - ldr r1, _080287FC @ =_08028800 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080287FC: .4byte _08028800 -_08028800: @ jump table - .4byte _0802881E @ case 0 - .4byte _08028814 @ case 1 - .4byte _0802881C @ case 2 - .4byte _08028818 @ case 3 - .4byte _08028814 @ case 4 -_08028814: - adds r2, #4 - b _0802881E -_08028818: - adds r2, #8 - b _0802881E -_0802881C: - adds r2, #0xc -_0802881E: - adds r0, r3, #0 - adds r1, r2, #0 - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_08028828 -sub_08028828: @ 0x08028828 - push {r4, lr} - adds r4, r0, #0 - adds r3, r1, #0 - adds r0, r3, #4 - movs r2, #0x18 - ands r0, r2 - adds r1, r4, #4 - ands r1, r2 - cmp r0, r1 - bne _08028852 - adds r0, r3, #5 - movs r1, #7 - ands r0, r1 - adds r2, r4, #5 - ands r2, r1 - cmp r0, #2 - bhi _08028852 - cmp r2, #2 - bhi _08028852 - movs r0, #1 - b _08028854 -_08028852: - movs r0, #0 -_08028854: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08028858 -sub_08028858: @ 0x08028858 - push {r4, lr} - adds r4, r0, #0 - bl sub_080288C0 - ldr r1, _080288A0 @ =gUnk_080CC944 - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r2, [r0] - ldr r1, [r4, #0x48] - ldrb r0, [r2] - strb r0, [r1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #1] - strb r0, [r1, #1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #6] - strb r0, [r1, #6] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #7] - strb r0, [r1, #7] - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - bne _08028890 - strh r0, [r4, #0x24] -_08028890: - adds r0, r4, #0 - bl ProcessMovement - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 -_080288A0: .4byte gUnk_080CC944 - - thumb_func_start sub_080288A4 -sub_080288A4: @ 0x080288A4 - ldr r2, _080288BC @ =gUnk_080CC7D8 - ldrb r1, [r0, #0x14] - lsrs r1, r1, #1 - lsls r1, r1, #1 - adds r1, r1, r2 - ldrh r0, [r0, #0x2a] - ldrh r1, [r1] - ands r1, r0 - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r0, r0, #0x1f - bx lr - .align 2, 0 -_080288BC: .4byte gUnk_080CC7D8 - - thumb_func_start sub_080288C0 -sub_080288C0: @ 0x080288C0 - push {lr} - mov ip, r0 - ldr r2, [r0, #0x54] - cmp r2, #0 - beq _08028908 - adds r0, r2, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08028908 - adds r0, r2, #0 - adds r0, #0x3e - ldrb r0, [r0] - mov r1, ip - adds r1, #0x3e - strb r0, [r1] - adds r0, r2, #0 - adds r0, #0x3d - ldrb r0, [r0] - rsbs r0, r0, #0 - subs r1, #1 - strb r0, [r1] - adds r0, r2, #0 - adds r0, #0x46 - ldrh r0, [r0] - adds r1, #9 - movs r3, #0 - strh r0, [r1] - adds r2, #0x42 - ldrb r1, [r2] - mov r0, ip - adds r0, #0x42 - strb r1, [r0] - strb r3, [r2] -_08028908: - pop {pc} - .align 2, 0 diff --git a/asm/spikedBeetle.s b/asm/spikedBeetle.s deleted file mode 100644 index a5035592..00000000 --- a/asm/spikedBeetle.s +++ /dev/null @@ -1,500 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start SpikedBeetle -SpikedBeetle: @ 0x0802B5F0 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0802B60C @ =gUnk_080CD2D8 - bl EnemyFunctionHandler - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - pop {r4, pc} - .align 2, 0 -_0802B60C: .4byte gUnk_080CD2D8 - - thumb_func_start sub_0802B610 -sub_0802B610: @ 0x0802B610 - push {lr} - ldr r2, _0802B624 @ =gUnk_080CD2F0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802B624: .4byte gUnk_080CD2F0 - - thumb_func_start sub_0802B628 -sub_0802B628: @ 0x0802B628 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0x1d - bhi _0802B706 - lsls r0, r1, #2 - ldr r1, _0802B644 @ =_0802B648 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802B644: .4byte _0802B648 -_0802B648: @ jump table - .4byte _0802B6C0 @ case 0 - .4byte _0802B706 @ case 1 - .4byte _0802B6CC @ case 2 - .4byte _0802B6CC @ case 3 - .4byte _0802B6C0 @ case 4 - .4byte _0802B6C0 @ case 5 - .4byte _0802B6C0 @ case 6 - .4byte _0802B706 @ case 7 - .4byte _0802B6C0 @ case 8 - .4byte _0802B6C0 @ case 9 - .4byte _0802B6C0 @ case 10 - .4byte _0802B6C0 @ case 11 - .4byte _0802B6C0 @ case 12 - .4byte _0802B706 @ case 13 - .4byte _0802B706 @ case 14 - .4byte _0802B706 @ case 15 - .4byte _0802B706 @ case 16 - .4byte _0802B706 @ case 17 - .4byte _0802B706 @ case 18 - .4byte _0802B706 @ case 19 - .4byte _0802B706 @ case 20 - .4byte _0802B706 @ case 21 - .4byte _0802B6CC @ case 22 - .4byte _0802B706 @ case 23 - .4byte _0802B6CC @ case 24 - .4byte _0802B6CC @ case 25 - .4byte _0802B6CC @ case 26 - .4byte _0802B706 @ case 27 - .4byte _0802B706 @ case 28 - .4byte _0802B6CC @ case 29 -_0802B6C0: - ldrb r0, [r4, #0xc] - cmp r0, #4 - bne _0802B706 - movs r0, #1 - strb r0, [r4, #0xe] - b _0802B706 -_0802B6CC: - ldrb r0, [r4, #0xc] - cmp r0, #5 - bhi _0802B706 - movs r0, #6 - strb r0, [r4, #0xc] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - movs r1, #0 - movs r0, #0xc0 - strh r0, [r4, #0x24] - adds r0, r4, #0 - adds r0, #0x3e - ldrb r0, [r0] - strb r0, [r4, #0x15] - adds r0, r4, #0 - adds r0, #0x42 - strb r1, [r0] - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0xf8 - strb r0, [r1] - adds r1, #2 - movs r0, #0x64 - strb r0, [r1] - adds r0, r4, #0 - movs r1, #9 - bl InitializeAnimation -_0802B706: - adds r0, r4, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _0802B718 - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_0802B718: - ldr r1, _0802B724 @ =gUnk_080CD2D8 - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, pc} - .align 2, 0 -_0802B724: .4byte gUnk_080CD2D8 - - thumb_func_start nullsub_144 -nullsub_144: @ 0x0802B728 - bx lr - .align 2, 0 - - thumb_func_start sub_0802B72C -sub_0802B72C: @ 0x0802B72C - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r0, #1 - strb r0, [r4, #0xe] - movs r0, #0xff - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_0802B7A4 - pop {r4, pc} - - thumb_func_start sub_0802B744 -sub_0802B744: @ 0x0802B744 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _0802B780 - adds r0, r4, #0 - movs r1, #1 - movs r2, #0xc - bl sub_0804A024 - adds r1, r0, #0 - cmp r1, #0xff - beq _0802B780 - movs r0, #3 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r0, #0x18 - ands r1, r0 - strb r1, [r4, #0x15] - adds r0, r4, #0 - movs r1, #8 - bl InitializeAnimation - b _0802B7A2 -_0802B780: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802B794 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0x1e - b _0802B7A0 -_0802B794: - adds r0, r4, #0 - bl ProcessMovement - cmp r0, #0 - bne _0802B7A2 - movs r0, #1 -_0802B7A0: - strb r0, [r4, #0xe] -_0802B7A2: - pop {r4, pc} - - thumb_func_start sub_0802B7A4 -sub_0802B7A4: @ 0x0802B7A4 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802B7F4 - movs r0, #1 - strb r0, [r4, #0xc] - bl Random - ldr r2, _0802B7F8 @ =gUnk_080CD314 - movs r1, #3 - ands r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4, #0xe] - movs r0, #0x60 - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl sub_0802B960 - ldrb r0, [r4, #0x15] - lsls r1, r0, #0x18 - lsrs r0, r1, #0x18 - cmp r0, #0xff - beq _0802B7F4 - lsrs r2, r1, #0x1b - ldrb r0, [r4, #0x14] - cmp r2, r0 - beq _0802B7F4 - movs r1, #3 - adds r0, r2, #0 - ands r0, r1 - strb r0, [r4, #0x14] - adds r0, r4, #0 - adds r1, r2, #0 - bl InitializeAnimation -_0802B7F4: - pop {r4, pc} - .align 2, 0 -_0802B7F8: .4byte gUnk_080CD314 - - thumb_func_start sub_0802B7FC -sub_0802B7FC: @ 0x0802B7FC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802B81E - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x78 - strb r0, [r4, #0xe] - movs r0, #0xe0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] -_0802B81E: - pop {r4, pc} - - thumb_func_start sub_0802B820 -sub_0802B820: @ 0x0802B820 - push {r4, lr} - adds r4, r0, #0 - bl sub_080AEFE0 - cmp r0, #0 - bne _0802B830 - movs r0, #1 - strb r0, [r4, #0xe] -_0802B830: - adds r0, r4, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802B84A - adds r0, r4, #0 - bl sub_0802B9B4 - b _0802B87E -_0802B84A: - adds r0, r4, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _0802B878 - ldrb r1, [r4, #0xe] - movs r0, #0xf - ands r0, r1 - cmp r0, #0 - bne _0802B87E - ldr r0, _0802B874 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - bl GetFacingDirection - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 - b _0802B87E - .align 2, 0 -_0802B874: .4byte gUnk_020000B0 -_0802B878: - adds r0, r4, #0 - bl sub_0802B9B4 -_0802B87E: - pop {r4, pc} - - thumb_func_start sub_0802B880 -sub_0802B880: @ 0x0802B880 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802B8AC - movs r0, #2 - strb r0, [r2, #0xc] - movs r0, #0x3c - strb r0, [r2, #0xe] - ldrb r0, [r2, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #3 - strb r0, [r2, #0x14] - ldrb r1, [r2, #0x14] - adds r0, r2, #0 - bl InitializeAnimation -_0802B8AC: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0802B8B0 -sub_0802B8B0: @ 0x0802B8B0 - push {r4, lr} - adds r4, r0, #0 - bl sub_080AEFE0 - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_080044EC - cmp r0, #0 - beq _0802B8CC - cmp r0, #1 - beq _0802B8D4 - b _0802B8DA -_0802B8CC: - movs r0, #7 - strb r0, [r4, #0xc] - movs r0, #0x96 - strb r0, [r4, #0xe] -_0802B8D4: - ldr r0, _0802B8DC @ =0x0000012B - bl EnqueueSFX -_0802B8DA: - pop {r4, pc} - .align 2, 0 -_0802B8DC: .4byte 0x0000012B - - thumb_func_start sub_0802B8E0 -sub_0802B8E0: @ 0x0802B8E0 - push {r4, lr} - adds r3, r0, #0 - ldrb r0, [r3, #0xe] - subs r1, r0, #1 - strb r1, [r3, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - beq _0802B91C - adds r4, r0, #0 - lsrs r0, r4, #0x18 - cmp r0, #0x3b - bhi _0802B940 - movs r0, #1 - ands r1, r0 - cmp r1, #0 - beq _0802B940 - adds r3, #0x62 - ldr r2, _0802B918 @ =gUnk_080CD318 - lsrs r0, r4, #0x19 - movs r1, #3 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - ldrb r1, [r3] - adds r0, r0, r1 - strb r0, [r3] - b _0802B940 - .align 2, 0 -_0802B918: .4byte gUnk_080CD318 -_0802B91C: - movs r0, #8 - strb r0, [r3, #0xc] - movs r0, #0x80 - lsls r0, r0, #9 - str r0, [r3, #0x20] - movs r0, #0x60 - strh r0, [r3, #0x24] - adds r1, r3, #0 - adds r1, #0x3f - movs r0, #0x63 - strb r0, [r1] - ldrb r1, [r3, #0x14] - adds r0, r3, #0 - bl InitializeAnimation - ldr r0, _0802B944 @ =0x0000012B - bl EnqueueSFX -_0802B940: - pop {r4, pc} - .align 2, 0 -_0802B944: .4byte 0x0000012B - - thumb_func_start sub_0802B948 -sub_0802B948: @ 0x0802B948 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0xc0 - lsls r1, r1, #5 - bl sub_08003FC4 - cmp r0, #0 - bne _0802B95E - movs r0, #1 - strb r0, [r4, #0xc] - strb r0, [r4, #0xe] -_0802B95E: - pop {r4, pc} - - thumb_func_start sub_0802B960 -sub_0802B960: @ 0x0802B960 - push {r4, lr} - adds r4, r0, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _0802B986 - bl Random - movs r1, #7 - ands r1, r0 - cmp r1, #0 - bne _0802B9A6 - adds r0, r4, #0 - movs r1, #1 - bl sub_08049F84 - adds r0, #4 - b _0802B9AA -_0802B986: - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _0802B9A6 - bl Random - movs r1, #3 - ands r1, r0 - cmp r1, #0 - bne _0802B9A6 - adds r0, r4, #0 - bl sub_08049EE4 - adds r0, #4 - b _0802B9AA -_0802B9A6: - bl Random -_0802B9AA: - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802B9B4 -sub_0802B9B4: @ 0x0802B9B4 - push {lr} - movs r1, #5 - strb r1, [r0, #0xc] - movs r1, #0x3c - strb r1, [r0, #0xe] - ldrb r1, [r0, #0x15] - lsrs r1, r1, #3 - movs r2, #3 - ands r1, r2 - strb r1, [r0, #0x14] - ldrb r1, [r0, #0x14] - adds r1, #4 - bl InitializeAnimation - pop {pc} - .align 2, 0 diff --git a/asm/wallMaster.s b/asm/wallMaster.s deleted file mode 100644 index c2a51fea..00000000 --- a/asm/wallMaster.s +++ /dev/null @@ -1,538 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start WallMaster -WallMaster: @ 0x0802A408 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, _0802A430 @ =gUnk_080CD07C - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r5 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - pop {r4, r5, pc} - .align 2, 0 -_0802A430: .4byte gUnk_080CD07C - - thumb_func_start sub_0802A434 -sub_0802A434: @ 0x0802A434 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A78C - ldr r1, _0802A450 @ =gUnk_080CD094 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_0802A450: .4byte gUnk_080CD094 - - thumb_func_start sub_0802A454 -sub_0802A454: @ 0x0802A454 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #0x75 - beq _0802A4A8 - adds r0, r4, #0 - adds r0, #0x41 - ldrb r0, [r0] - movs r2, #0x7f - adds r1, r2, #0 - ands r1, r0 - cmp r1, #0 - beq _0802A474 - cmp r1, #0x1e - bne _0802A4A8 -_0802A474: - movs r0, #5 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - adds r0, r2, #0 - ands r0, r1 - strb r0, [r4, #0x10] - ldr r1, _0802A4D8 @ =gPlayerEntity - ldrh r0, [r1, #0x2e] - adds r2, r4, #0 - adds r2, #0x7e - strh r0, [r2] - ldrh r2, [r1, #0x32] - adds r0, r4, #0 - adds r0, #0x80 - strh r2, [r0] - ldrh r0, [r1, #0x36] - adds r1, r4, #0 - adds r1, #0x82 - strh r0, [r1] - ldrb r0, [r4, #0xc] - cmp r0, #3 - beq _0802A4A8 - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_0802A4A8: - adds r2, r4, #0 - adds r2, #0x42 - ldrb r0, [r2] - adds r1, r0, #0 - cmp r1, #0 - beq _0802A4BC - cmp r1, #4 - bls _0802A4BC - subs r0, #4 - strb r0, [r2] -_0802A4BC: - adds r0, r4, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _0802A4CE - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_0802A4CE: - ldr r1, _0802A4DC @ =gUnk_080CD07C - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, pc} - .align 2, 0 -_0802A4D8: .4byte gPlayerEntity -_0802A4DC: .4byte gUnk_080CD07C - - thumb_func_start nullsub_142 -nullsub_142: @ 0x0802A4E0 - bx lr - .align 2, 0 - - thumb_func_start sub_0802A4E4 -sub_0802A4E4: @ 0x0802A4E4 - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #3 - strb r0, [r1] - bl Random - adds r1, r4, #0 - adds r1, #0x7d - strb r0, [r1] - ldrb r1, [r4, #0xb] - lsls r0, r1, #4 - subs r0, r0, r1 - lsls r0, r0, #2 - adds r1, r4, #0 - adds r1, #0x7a - strh r0, [r1] - ldrb r1, [r4, #0xe] - adds r0, r4, #0 - adds r0, #0x7c - strb r1, [r0] - ldrb r1, [r4, #0xe] - lsls r0, r1, #4 - subs r0, r0, r1 - lsls r0, r0, #2 - adds r1, r4, #0 - adds r1, #0x78 - strh r0, [r1] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - adds r0, r4, #0 - bl sub_0802A7D0 - pop {r4, pc} - - thumb_func_start sub_0802A534 -sub_0802A534: @ 0x0802A534 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x78 - ldrh r0, [r1] - cmp r0, #0 - beq _0802A548 - subs r0, #1 - strh r0, [r1] - b _0802A5B0 -_0802A548: - adds r0, r4, #0 - adds r0, #0x7a - ldrh r0, [r0] - cmp r0, #0 - bne _0802A5B0 - movs r0, #1 - bl sub_08049DF4 - adds r2, r0, #0 - cmp r2, #0 - beq _0802A5B0 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0x5a - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldrb r0, [r4, #0x18] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrh r0, [r2, #0x2e] - strh r0, [r4, #0x2e] - ldrh r0, [r2, #0x32] - strh r0, [r4, #0x32] - ldr r0, _0802A5B4 @ =0x0000FF80 - strh r0, [r4, #0x36] - 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, #0x20 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_0802A7D0 -_0802A5B0: - pop {r4, pc} - .align 2, 0 -_0802A5B4: .4byte 0x0000FF80 - - thumb_func_start sub_0802A5B8 -sub_0802A5B8: @ 0x0802A5B8 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A7D0 - ldrb r0, [r4, #0xe] - adds r2, r0, #0 - cmp r2, #0 - beq _0802A5E8 - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802A60E - ldr r0, _0802A5E4 @ =0x0000012D - bl EnqueueSFX - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - b _0802A60E - .align 2, 0 -_0802A5E4: .4byte 0x0000012D -_0802A5E8: - ldrh r0, [r4, #0x36] - adds r0, #3 - strh r0, [r4, #0x36] - lsls r0, r0, #0x10 - cmp r0, #0 - blt _0802A60E - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #7 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - strh r2, [r4, #0x36] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_0802A60E: - pop {r4, pc} - - thumb_func_start sub_0802A610 -sub_0802A610: @ 0x0802A610 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0802A7D0 - adds r3, r4, #0 - adds r3, #0x5a - ldrb r1, [r3] - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - beq _0802A63A - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - b _0802A64C -_0802A63A: - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0802A64C - strb r2, [r3] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x75 - strb r0, [r1] -_0802A64C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802A650 -sub_0802A650: @ 0x0802A650 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A7D0 - ldrh r0, [r4, #0x36] - subs r0, #2 - strh r0, [r4, #0x36] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0xa0 - rsbs r1, r1, #0 - cmp r0, r1 - bge _0802A69A - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x74 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x7c - ldrb r1, [r0] - lsls r0, r1, #4 - subs r0, r0, r1 - lsls r0, r0, #2 - adds r1, r4, #0 - adds r1, #0x78 - strh r0, [r1] -_0802A69A: - pop {r4, pc} - - thumb_func_start sub_0802A69C -sub_0802A69C: @ 0x0802A69C - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A7D0 - ldr r2, _0802A6E4 @ =gPlayerState - ldrb r1, [r2, #0xa] - movs r0, #0x80 - orrs r1, r0 - strb r1, [r2, #0xa] - ldrb r1, [r2, #0x1a] - orrs r0, r1 - strb r0, [r2, #0x1a] - ldr r1, _0802A6E8 @ =gPlayerEntity - adds r0, r4, #0 - adds r0, #0x7e - ldrh r0, [r0] - strh r0, [r1, #0x2e] - adds r0, r4, #0 - adds r0, #0x80 - ldrh r0, [r0] - strh r0, [r1, #0x32] - adds r0, r4, #0 - adds r0, #0x82 - ldrh r0, [r0] - strh r0, [r1, #0x36] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - ldrh r2, [r4, #0x36] - movs r3, #0x36 - ldrsh r1, [r4, r3] - cmp r0, r1 - beq _0802A6F0 - cmp r0, r1 - bge _0802A6EC - subs r0, r2, #1 - b _0802A6EE - .align 2, 0 -_0802A6E4: .4byte gPlayerState -_0802A6E8: .4byte gPlayerEntity -_0802A6EC: - adds r0, r2, #1 -_0802A6EE: - strh r0, [r4, #0x36] -_0802A6F0: - adds r0, r4, #0 - bl GetNextFrame - adds r3, r4, #0 - adds r3, #0x5a - ldrb r1, [r3] - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - beq _0802A712 - movs r0, #6 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - b _0802A72E -_0802A712: - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0802A72E - strb r2, [r3] - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #3 - strb r0, [r1] - ldr r2, _0802A730 @ =gPlayerEntity - ldrb r1, [r2, #0x18] - subs r0, #7 - ands r0, r1 - strb r0, [r2, #0x18] -_0802A72E: - pop {r4, pc} - .align 2, 0 -_0802A730: .4byte gPlayerEntity - - thumb_func_start sub_0802A734 -sub_0802A734: @ 0x0802A734 - push {r4, lr} - adds r4, r0, #0 - bl sub_0802A7D0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802A768 - bl sub_0805E5A8 - ldr r1, _0802A760 @ =gUnk_0813AB1C - ldr r0, _0802A764 @ =gArea - ldrb r0, [r0, #3] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - bl DoExitTransition - b _0802A780 - .align 2, 0 -_0802A760: .4byte gUnk_0813AB1C -_0802A764: .4byte gArea -_0802A768: - ldr r0, [r4, #0x34] - ldr r1, _0802A784 @ =0xFFFE0000 - adds r0, r0, r1 - str r0, [r4, #0x34] - ldr r1, _0802A788 @ =gPlayerState - ldrb r0, [r1, #0xa] - movs r2, #0x80 - orrs r0, r2 - strb r0, [r1, #0xa] - ldrb r0, [r1, #0x1a] - orrs r0, r2 - strb r0, [r1, #0x1a] -_0802A780: - pop {r4, pc} - .align 2, 0 -_0802A784: .4byte 0xFFFE0000 -_0802A788: .4byte gPlayerState - - thumb_func_start sub_0802A78C -sub_0802A78C: @ 0x0802A78C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - beq _0802A7CC - adds r0, r4, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _0802A7BC - adds r0, r4, #0 - adds r0, #0x78 - ldrh r0, [r0] - cmp r0, #0 - bne _0802A7CC - adds r1, r4, #0 - adds r1, #0x7a - ldrh r0, [r1] - cmp r0, #0 - beq _0802A7CC - subs r0, #1 - strh r0, [r1] - b _0802A7CC -_0802A7BC: - ldrb r0, [r4, #0xb] - lsls r1, r0, #4 - subs r1, r1, r0 - lsls r1, r1, #2 - adds r1, #1 - adds r0, r4, #0 - adds r0, #0x7a - strh r1, [r0] -_0802A7CC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802A7D0 -sub_0802A7D0: @ 0x0802A7D0 - push {r4, lr} - ldr r3, _0802A800 @ =gUnk_080CD0B0 - movs r1, #0x7d - adds r1, r1, r0 - mov ip, r1 - ldrb r1, [r1] - adds r2, r1, #1 - mov r4, ip - strb r2, [r4] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x1b - movs r2, #7 - ands r1, r2 - adds r1, r1, r3 - movs r2, #0 - ldrsb r2, [r1, r2] - movs r1, #0x80 - lsls r1, r1, #1 - adds r2, r2, r1 - adds r1, r2, #0 - movs r3, #0 - bl sub_0805EC9C - pop {r4, pc} - .align 2, 0 -_0802A800: .4byte gUnk_080CD0B0 diff --git a/asm/waterDrop.s b/asm/waterDrop.s deleted file mode 100644 index 12be5881..00000000 --- a/asm/waterDrop.s +++ /dev/null @@ -1,246 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start WaterDrop -WaterDrop: @ 0x0802A238 - push {lr} - ldr r2, _0802A24C @ =gUnk_080CD030 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802A24C: .4byte gUnk_080CD030 - - thumb_func_start sub_0802A250 -sub_0802A250: @ 0x0802A250 - push {r4, r5, lr} - adds r5, r0, #0 - movs r1, #0 - movs r0, #1 - strb r0, [r5, #0xc] - strb r1, [r5, #0xe] - ldr r0, _0802A2A8 @ =0xFFFD0000 - str r0, [r5, #0x20] - bl Random - ldr r1, _0802A2AC @ =gUnk_080CD03C - movs r4, #3 - ands r0, r4 - adds r0, r0, r1 - ldrb r0, [r0] - strh r0, [r5, #0x24] - bl Random - ldr r1, _0802A2B0 @ =gUnk_080CD040 - ands r0, r4 - adds r0, r0, r1 - ldrb r0, [r0] - adds r0, #0x18 - strb r0, [r5, #0x15] - adds r1, r5, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - adds r0, r5, #0 - movs r1, #0 - bl InitializeAnimation - adds r0, r5, #0 - bl UpdateSpriteForCollisionLayer - movs r0, #0x66 - movs r1, #0 - movs r2, #0 - bl CreateObject - cmp r0, #0 - beq _0802A2A6 - str r5, [r0, #0x50] -_0802A2A6: - pop {r4, r5, pc} - .align 2, 0 -_0802A2A8: .4byte 0xFFFD0000 -_0802A2AC: .4byte gUnk_080CD03C -_0802A2B0: .4byte gUnk_080CD040 - - thumb_func_start sub_0802A2B4 -sub_0802A2B4: @ 0x0802A2B4 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0xa0 - lsls r1, r1, #6 - bl sub_08003FC4 - cmp r0, #0 - bne _0802A2DC - movs r0, #2 - strb r0, [r4, #0xc] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - movs r0, #0x84 - bl EnqueueSFX - b _0802A2E2 -_0802A2DC: - adds r0, r4, #0 - bl sub_0806F69C -_0802A2E2: - adds r0, r4, #0 - bl sub_0802A39C - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #8 - rsbs r0, r0, #0 - cmp r1, r0 - ble _0802A2FA - adds r0, r4, #0 - bl sub_0802A334 -_0802A2FA: - pop {r4, pc} - - thumb_func_start sub_0802A2FC -sub_0802A2FC: @ 0x0802A2FC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0802A31A - adds r0, r4, #0 - bl DeleteEntity - b _0802A332 -_0802A31A: - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0802A32C - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - b _0802A332 -_0802A32C: - adds r0, r4, #0 - bl sub_0802A39C -_0802A332: - pop {r4, pc} - - thumb_func_start sub_0802A334 -sub_0802A334: @ 0x0802A334 - push {r4, r5, lr} - adds r4, r0, #0 - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0802A380 @ =gRoomControls - movs r3, #0xa - ldrsh r0, [r2, r3] - ldr r3, _0802A384 @ =gScreen - subs r1, r1, r0 - ldrh r5, [r3, #0x16] - adds r1, r1, r5 - asrs r1, r1, #3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - movs r5, #0xc - ldrsh r2, [r2, r5] - subs r0, r0, r2 - ldrh r3, [r3, #0x18] - adds r0, r0, r3 - asrs r0, r0, #3 - ldr r3, _0802A388 @ =gUnk_02001A40 - movs r2, #0x1f - ands r1, r2 - ands r0, r2 - lsls r0, r0, #5 - adds r1, r1, r0 - movs r0, #0x80 - lsls r0, r0, #3 - adds r1, r1, r0 - lsls r1, r1, #1 - adds r1, r1, r3 - ldrh r0, [r1] - cmp r0, #0 - beq _0802A38C - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #2 - b _0802A392 - .align 2, 0 -_0802A380: .4byte gRoomControls -_0802A384: .4byte gScreen -_0802A388: .4byte gUnk_02001A40 -_0802A38C: - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #1 -_0802A392: - strb r0, [r1] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - pop {r4, r5, pc} - - thumb_func_start sub_0802A39C -sub_0802A39C: @ 0x0802A39C - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldr r4, _0802A3EC @ =gPlayerEntity - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0802A3F0 @ =gRoomControls - movs r3, #0xa - ldrsh r0, [r2, r3] - ldr r3, _0802A3F4 @ =gScreen - subs r1, r1, r0 - ldrh r6, [r3, #0x16] - adds r1, r1, r6 - asrs r1, r1, #3 - movs r6, #0x32 - ldrsh r0, [r4, r6] - movs r4, #0xc - ldrsh r2, [r2, r4] - subs r0, r0, r2 - ldrh r3, [r3, #0x18] - adds r0, r0, r3 - subs r0, #0xa - asrs r0, r0, #3 - ldr r3, _0802A3F8 @ =gUnk_02001A40 - movs r2, #0x1f - ands r1, r2 - ands r0, r2 - lsls r0, r0, #5 - adds r1, r1, r0 - movs r6, #0x80 - lsls r6, r6, #3 - adds r1, r1, r6 - lsls r1, r1, #1 - adds r1, r1, r3 - ldrh r0, [r1] - cmp r0, #0 - beq _0802A3FC - ldrb r1, [r5, #0x10] - movs r0, #0x7f - ands r0, r1 - b _0802A402 - .align 2, 0 -_0802A3EC: .4byte gPlayerEntity -_0802A3F0: .4byte gRoomControls -_0802A3F4: .4byte gScreen -_0802A3F8: .4byte gUnk_02001A40 -_0802A3FC: - ldrb r1, [r5, #0x10] - movs r0, #0x80 - orrs r0, r1 -_0802A402: - strb r0, [r5, #0x10] - pop {r4, r5, r6, pc} - .align 2, 0 diff --git a/data/animations/bobomb.s b/data/animations/bobomb.s new file mode 100644 index 00000000..8a2b5e54 --- /dev/null +++ b/data/animations/bobomb.s @@ -0,0 +1,37 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD628:: @ 080CD628 + .incbin "baserom.gba", 0x0CD628, 0x0000011 + +gUnk_080CD639:: @ 080CD639 + .incbin "baserom.gba", 0x0CD639, 0x0000011 + +gUnk_080CD64A:: @ 080CD64A + .incbin "baserom.gba", 0x0CD64A, 0x0000011 + +gUnk_080CD65B:: @ 080CD65B + .incbin "baserom.gba", 0x0CD65B, 0x0000011 + +gUnk_080CD66C:: @ 080CD66C + .incbin "baserom.gba", 0x0CD66C, 0x0000005 + +gUnk_080CD671:: @ 080CD671 + .incbin "baserom.gba", 0x0CD671, 0x0000005 + +gUnk_080CD676:: @ 080CD676 + .incbin "baserom.gba", 0x0CD676, 0x0000009 + +gUnk_080CD67F:: @ 080CD67F + .incbin "baserom.gba", 0x0CD67F, 0x0000009 + +gUnk_080CD688:: @ 080CD688 + .incbin "baserom.gba", 0x0CD688, 0x0000024 + +gUnk_080CD6AC:: @ 080CD6AC + .incbin "baserom.gba", 0x0CD6AC, 0x0000024 + +gUnk_080CD6D0:: @ 080CD6D0 + .incbin "baserom.gba", 0x0CD6D0, 0x000002C diff --git a/data/animations/bombPeahat.s b/data/animations/bombPeahat.s new file mode 100644 index 00000000..c2d22e24 --- /dev/null +++ b/data/animations/bombPeahat.s @@ -0,0 +1,19 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD184:: @ 080CD184 + .incbin "baserom.gba", 0x0CD184, 0x0000011 + +gUnk_080CD195:: @ 080CD195 + .incbin "baserom.gba", 0x0CD195, 0x0000041 + +gUnk_080CD1D6:: @ 080CD1D6 + .incbin "baserom.gba", 0x0CD1D6, 0x0000041 + +gUnk_080CD217:: @ 080CD217 + .incbin "baserom.gba", 0x0CD217, 0x0000009 + +gUnk_080CD220:: @ 080CD220 + .incbin "baserom.gba", 0x0CD220, 0x0000014 diff --git a/data/animations/businessScrub.s b/data/animations/businessScrub.s new file mode 100644 index 00000000..58686a0b --- /dev/null +++ b/data/animations/businessScrub.s @@ -0,0 +1,86 @@ + + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CCA0A:: @ 080CCA0A + .incbin "baserom.gba", 0x0CCA0A, 0x0000015 + +gUnk_080CCA1F:: @ 080CCA1F + .incbin "baserom.gba", 0x0CCA1F, 0x0000015 + +gUnk_080CCA34:: @ 080CCA34 + .incbin "baserom.gba", 0x0CCA34, 0x0000015 + +gUnk_080CCA49:: @ 080CCA49 + .incbin "baserom.gba", 0x0CCA49, 0x0000015 + +gUnk_080CCA5E:: @ 080CCA5E + .incbin "baserom.gba", 0x0CCA5E, 0x0000011 + +gUnk_080CCA6F:: @ 080CCA6F + .incbin "baserom.gba", 0x0CCA6F, 0x0000011 + +gUnk_080CCA80:: @ 080CCA80 + .incbin "baserom.gba", 0x0CCA80, 0x0000011 + +gUnk_080CCA91:: @ 080CCA91 + .incbin "baserom.gba", 0x0CCA91, 0x0000011 + +gUnk_080CCAA2:: @ 080CCAA2 + .incbin "baserom.gba", 0x0CCAA2, 0x0000005 + +gUnk_080CCAA7:: @ 080CCAA7 + .incbin "baserom.gba", 0x0CCAA7, 0x0000005 + +gUnk_080CCAAC:: @ 080CCAAC + .incbin "baserom.gba", 0x0CCAAC, 0x0000005 + +gUnk_080CCAB1:: @ 080CCAB1 + .incbin "baserom.gba", 0x0CCAB1, 0x0000005 + +gUnk_080CCAB6:: @ 080CCAB6 + .incbin "baserom.gba", 0x0CCAB6, 0x0000010 + +gUnk_080CCAC6:: @ 080CCAC6 + .incbin "baserom.gba", 0x0CCAC6, 0x0000010 + +gUnk_080CCAD6:: @ 080CCAD6 + .incbin "baserom.gba", 0x0CCAD6, 0x0000010 + +gUnk_080CCAE6:: @ 080CCAE6 + .incbin "baserom.gba", 0x0CCAE6, 0x0000010 + +gUnk_080CCAF6:: @ 080CCAF6 + .incbin "baserom.gba", 0x0CCAF6, 0x0000011 + +gUnk_080CCB07:: @ 080CCB07 + .incbin "baserom.gba", 0x0CCB07, 0x0000011 + +gUnk_080CCB18:: @ 080CCB18 + .incbin "baserom.gba", 0x0CCB18, 0x0000011 + +gUnk_080CCB29:: @ 080CCB29 + .incbin "baserom.gba", 0x0CCB29, 0x0000011 + +gUnk_080CCB3A:: @ 080CCB3A + .incbin "baserom.gba", 0x0CCB3A, 0x000000D + +gUnk_080CCB47:: @ 080CCB47 + .incbin "baserom.gba", 0x0CCB47, 0x000000D + +gUnk_080CCB54:: @ 080CCB54 + .incbin "baserom.gba", 0x0CCB54, 0x000000D + +gUnk_080CCB61:: @ 080CCB61 + .incbin "baserom.gba", 0x0CCB61, 0x000000D + +gUnk_080CCB6E:: @ 080CCB6E + .incbin "baserom.gba", 0x0CCB6E, 0x0000011 + +gUnk_080CCB7F:: @ 080CCB7F + .incbin "baserom.gba", 0x0CCB7F, 0x0000015 + +gUnk_080CCB94:: @ 080CCB94 + .incbin "baserom.gba", 0x0CCB94, 0x000006C diff --git a/data/animations/chaser.s b/data/animations/chaser.s new file mode 100644 index 00000000..929deab6 --- /dev/null +++ b/data/animations/chaser.s @@ -0,0 +1,16 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD2A8:: @ 080CD2A8 + .incbin "baserom.gba", 0x0CD2A8, 0x0000004 + +gUnk_080CD2AC:: @ 080CD2AC + .incbin "baserom.gba", 0x0CD2AC, 0x0000011 + +gUnk_080CD2BD:: @ 080CD2BD + .incbin "baserom.gba", 0x0CD2BD, 0x000000B + +gUnk_080CD2C8:: @ 080CD2C8 + .incbin "baserom.gba", 0x0CD2C8, 0x0000010 diff --git a/data/animations/chuchuBoss.s b/data/animations/chuchuBoss.s new file mode 100644 index 00000000..4557faa0 --- /dev/null +++ b/data/animations/chuchuBoss.s @@ -0,0 +1,97 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CC2DF:: @ 080CC2DF + .incbin "baserom.gba", 0x0CC2DF, 0x0000004 + +gUnk_080CC2E3:: @ 080CC2E3 + .incbin "baserom.gba", 0x0CC2E3, 0x0000004 + +gUnk_080CC2E7:: @ 080CC2E7 + .incbin "baserom.gba", 0x0CC2E7, 0x0000004 + +gUnk_080CC2EB:: @ 080CC2EB + .incbin "baserom.gba", 0x0CC2EB, 0x0000004 + +gUnk_080CC2EF:: @ 080CC2EF + .incbin "baserom.gba", 0x0CC2EF, 0x0000005 + +gUnk_080CC2F4:: @ 080CC2F4 + .incbin "baserom.gba", 0x0CC2F4, 0x0000011 + +gUnk_080CC305:: @ 080CC305 + .incbin "baserom.gba", 0x0CC305, 0x0000019 + +gUnk_080CC31E:: @ 080CC31E + .incbin "baserom.gba", 0x0CC31E, 0x000000D + +gUnk_080CC32B:: @ 080CC32B + .incbin "baserom.gba", 0x0CC32B, 0x000000D + +gUnk_080CC338:: @ 080CC338 + .incbin "baserom.gba", 0x0CC338, 0x0000005 + +gUnk_080CC33D:: @ 080CC33D + .incbin "baserom.gba", 0x0CC33D, 0x0000009 + +gUnk_080CC346:: @ 080CC346 + .incbin "baserom.gba", 0x0CC346, 0x000000D + +gUnk_080CC353:: @ 080CC353 + .incbin "baserom.gba", 0x0CC353, 0x0000009 + +gUnk_080CC35C:: @ 080CC35C + .incbin "baserom.gba", 0x0CC35C, 0x000000D + +gUnk_080CC369:: @ 080CC369 + .incbin "baserom.gba", 0x0CC369, 0x0000009 + +gUnk_080CC372:: @ 080CC372 + .incbin "baserom.gba", 0x0CC372, 0x0000009 + +gUnk_080CC37B:: @ 080CC37B + .incbin "baserom.gba", 0x0CC37B, 0x0000021 + +gUnk_080CC39C:: @ 080CC39C + .incbin "baserom.gba", 0x0CC39C, 0x0000038 + +gUnk_080CC3D4:: @ 080CC3D4 + .incbin "baserom.gba", 0x0CC3D4, 0x0000038 + +gUnk_080CC40C:: @ 080CC40C + .incbin "baserom.gba", 0x0CC40C, 0x0000034 + +gUnk_080CC440:: @ 080CC440 + .incbin "baserom.gba", 0x0CC440, 0x0000038 + +gUnk_080CC478:: @ 080CC478 + .incbin "baserom.gba", 0x0CC478, 0x0000038 + +gUnk_080CC4B0:: @ 080CC4B0 + .incbin "baserom.gba", 0x0CC4B0, 0x0000065 + +gUnk_080CC515:: @ 080CC515 + .incbin "baserom.gba", 0x0CC515, 0x000006D + +gUnk_080CC582:: @ 080CC582 + .incbin "baserom.gba", 0x0CC582, 0x000006D + +gUnk_080CC5EF:: @ 080CC5EF + .incbin "baserom.gba", 0x0CC5EF, 0x000006D + +gUnk_080CC65C:: @ 080CC65C + .incbin "baserom.gba", 0x0CC65C, 0x0000021 + +gUnk_080CC67D:: @ 080CC67D + .incbin "baserom.gba", 0x0CC67D, 0x0000007 + +gUnk_080CC684:: @ 080CC684 + .incbin "baserom.gba", 0x0CC684, 0x0000018 + +gUnk_080CC69C:: @ 080CC69C + .incbin "baserom.gba", 0x0CC69C, 0x0000038 + +gUnk_080CC6D4:: @ 080CC6D4 + .incbin "baserom.gba", 0x0CC6D4, 0x0000028 diff --git a/data/animations/fallingBoulder.s b/data/animations/fallingBoulder.s new file mode 100644 index 00000000..234ec77a --- /dev/null +++ b/data/animations/fallingBoulder.s @@ -0,0 +1,13 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD5A4:: @ 080CD5A4 + .incbin "baserom.gba", 0x0CD5A4, 0x0000011 + +gUnk_080CD5B5:: @ 080CD5B5 + .incbin "baserom.gba", 0x0CD5B5, 0x0000013 + +gUnk_080CD5C8:: @ 080CD5C8 + .incbin "baserom.gba", 0x0CD5C8, 0x000000C diff --git a/data/animations/helmasaur.s b/data/animations/helmasaur.s new file mode 100644 index 00000000..793c8a7a --- /dev/null +++ b/data/animations/helmasaur.s @@ -0,0 +1,43 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD474:: @ 080CD474 + .incbin "baserom.gba", 0x0CD474, 0x0000011 + +gUnk_080CD485:: @ 080CD485 + .incbin "baserom.gba", 0x0CD485, 0x0000011 + +gUnk_080CD496:: @ 080CD496 + .incbin "baserom.gba", 0x0CD496, 0x0000011 + +gUnk_080CD4A7:: @ 080CD4A7 + .incbin "baserom.gba", 0x0CD4A7, 0x0000011 + +gUnk_080CD4B8:: @ 080CD4B8 + .incbin "baserom.gba", 0x0CD4B8, 0x0000011 + +gUnk_080CD4C9:: @ 080CD4C9 + .incbin "baserom.gba", 0x0CD4C9, 0x0000011 + +gUnk_080CD4DA:: @ 080CD4DA + .incbin "baserom.gba", 0x0CD4DA, 0x0000011 + +gUnk_080CD4EB:: @ 080CD4EB + .incbin "baserom.gba", 0x0CD4EB, 0x0000011 + +gUnk_080CD4FC:: @ 080CD4FC + .incbin "baserom.gba", 0x0CD4FC, 0x0000004 + +gUnk_080CD500:: @ 080CD500 + .incbin "baserom.gba", 0x0CD500, 0x0000004 + +gUnk_080CD504:: @ 080CD504 + .incbin "baserom.gba", 0x0CD504, 0x0000004 + +gUnk_080CD508:: @ 080CD508 + .incbin "baserom.gba", 0x0CD508, 0x0000004 + +gUnk_080CD50C:: @ 080CD50C + .incbin "baserom.gba", 0x0CD50C, 0x0000034 diff --git a/data/animations/likeLike.s b/data/animations/likeLike.s new file mode 100644 index 00000000..6cb16fdd --- /dev/null +++ b/data/animations/likeLike.s @@ -0,0 +1,16 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CC734:: @ 080CC734 + .incbin "baserom.gba", 0x0CC734, 0x0000025 + +gUnk_080CC759:: @ 080CC759 + .incbin "baserom.gba", 0x0CC759, 0x0000015 + +gUnk_080CC76E:: @ 080CC76E + .incbin "baserom.gba", 0x0CC76E, 0x0000012 + +gUnk_080CC780:: @ 080CC780 + .incbin "baserom.gba", 0x0CC780, 0x0000010 diff --git a/data/animations/madderpillar.s b/data/animations/madderpillar.s new file mode 100644 index 00000000..97a1f0c4 --- /dev/null +++ b/data/animations/madderpillar.s @@ -0,0 +1,94 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CCDDC:: @ 080CCDDC + .incbin "baserom.gba", 0x0CCDDC, 0x0000011 + +gUnk_080CCDED:: @ 080CCDED + .incbin "baserom.gba", 0x0CCDED, 0x0000011 + +gUnk_080CCDFE:: @ 080CCDFE + .incbin "baserom.gba", 0x0CCDFE, 0x0000011 + +gUnk_080CCE0F:: @ 080CCE0F + .incbin "baserom.gba", 0x0CCE0F, 0x0000011 + +gUnk_080CCE20:: @ 080CCE20 + .incbin "baserom.gba", 0x0CCE20, 0x0000011 + +gUnk_080CCE31:: @ 080CCE31 + .incbin "baserom.gba", 0x0CCE31, 0x0000011 + +gUnk_080CCE42:: @ 080CCE42 + .incbin "baserom.gba", 0x0CCE42, 0x0000011 + +gUnk_080CCE53:: @ 080CCE53 + .incbin "baserom.gba", 0x0CCE53, 0x0000011 + +gUnk_080CCE64:: @ 080CCE64 + .incbin "baserom.gba", 0x0CCE64, 0x0000024 + +gUnk_080CCE88:: @ 080CCE88 + .incbin "baserom.gba", 0x0CCE88, 0x0000011 + +gUnk_080CCE99:: @ 080CCE99 + .incbin "baserom.gba", 0x0CCE99, 0x0000011 + +gUnk_080CCEAA:: @ 080CCEAA + .incbin "baserom.gba", 0x0CCEAA, 0x0000011 + +gUnk_080CCEBB:: @ 080CCEBB + .incbin "baserom.gba", 0x0CCEBB, 0x0000011 + +gUnk_080CCECC:: @ 080CCECC + .incbin "baserom.gba", 0x0CCECC, 0x0000011 + +gUnk_080CCEDD:: @ 080CCEDD + .incbin "baserom.gba", 0x0CCEDD, 0x0000011 + +gUnk_080CCEEE:: @ 080CCEEE + .incbin "baserom.gba", 0x0CCEEE, 0x0000011 + +gUnk_080CCEFF:: @ 080CCEFF + .incbin "baserom.gba", 0x0CCEFF, 0x0000011 + +gUnk_080CCF10:: @ 080CCF10 + .incbin "baserom.gba", 0x0CCF10, 0x0000005 + +gUnk_080CCF15:: @ 080CCF15 + .incbin "baserom.gba", 0x0CCF15, 0x0000005 + +gUnk_080CCF1A:: @ 080CCF1A + .incbin "baserom.gba", 0x0CCF1A, 0x0000005 + +gUnk_080CCF1F:: @ 080CCF1F + .incbin "baserom.gba", 0x0CCF1F, 0x0000005 + +gUnk_080CCF24:: @ 080CCF24 + .incbin "baserom.gba", 0x0CCF24, 0x000001D + +gUnk_080CCF41:: @ 080CCF41 + .incbin "baserom.gba", 0x0CCF41, 0x000001D + +gUnk_080CCF5E:: @ 080CCF5E + .incbin "baserom.gba", 0x0CCF5E, 0x000001D + +gUnk_080CCF7B:: @ 080CCF7B + .incbin "baserom.gba", 0x0CCF7B, 0x000001D + +gUnk_080CCF98:: @ 080CCF98 + .incbin "baserom.gba", 0x0CCF98, 0x0000011 + +gUnk_080CCFA9:: @ 080CCFA9 + .incbin "baserom.gba", 0x0CCFA9, 0x0000011 + +gUnk_080CCFBA:: @ 080CCFBA + .incbin "baserom.gba", 0x0CCFBA, 0x0000011 + +gUnk_080CCFCB:: @ 080CCFCB + .incbin "baserom.gba", 0x0CCFCB, 0x0000011 + +gUnk_080CCFDC:: @ 080CCFDC + .incbin "baserom.gba", 0x0CCFDC, 0x0000054 diff --git a/data/animations/rupeeLike.s b/data/animations/rupeeLike.s new file mode 100644 index 00000000..3523322a --- /dev/null +++ b/data/animations/rupeeLike.s @@ -0,0 +1,31 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CCC4A:: @ 080CCC4A + .incbin "baserom.gba", 0x0CCC4A, 0x0000015 + +gUnk_080CCC5F:: @ 080CCC5F + .incbin "baserom.gba", 0x0CCC5F, 0x0000015 + +gUnk_080CCC74:: @ 080CCC74 + .incbin "baserom.gba", 0x0CCC74, 0x0000028 + +gUnk_080CCC9C:: @ 080CCC9C + .incbin "baserom.gba", 0x0CCC9C, 0x0000018 + +gUnk_080CCCB4:: @ 080CCCB4 + .incbin "baserom.gba", 0x0CCCB4, 0x0000015 + +gUnk_080CCCC9:: @ 080CCCC9 + .incbin "baserom.gba", 0x0CCCC9, 0x0000015 + +gUnk_080CCCDE:: @ 080CCCDE + .incbin "baserom.gba", 0x0CCCDE, 0x0000028 + +gUnk_080CCD06:: @ 080CCD06 + .incbin "baserom.gba", 0x0CCD06, 0x000001A + +gUnk_080CCD20:: @ 080CCD20 + .incbin "baserom.gba", 0x0CCD20, 0x0000024 diff --git a/data/animations/spark.s b/data/animations/spark.s new file mode 100644 index 00000000..415be36d --- /dev/null +++ b/data/animations/spark.s @@ -0,0 +1,10 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD258:: @ 080CD258 + .incbin "baserom.gba", 0x0CD258, 0x000001C + +gUnk_080CD274:: @ 080CD274 + .incbin "baserom.gba", 0x0CD274, 0x0000008 diff --git a/data/animations/spearMoblin.s b/data/animations/spearMoblin.s new file mode 100644 index 00000000..e77931a1 --- /dev/null +++ b/data/animations/spearMoblin.s @@ -0,0 +1,71 @@ + + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CC7E0:: @ 080CC7E0 + .incbin "baserom.gba", 0x0CC7E0, 0x0000009 + +gUnk_080CC7E9:: @ 080CC7E9 + .incbin "baserom.gba", 0x0CC7E9, 0x0000009 + +gUnk_080CC7F2:: @ 080CC7F2 + .incbin "baserom.gba", 0x0CC7F2, 0x0000009 + +gUnk_080CC7FB:: @ 080CC7FB + .incbin "baserom.gba", 0x0CC7FB, 0x0000009 + +gUnk_080CC804:: @ 080CC804 + .incbin "baserom.gba", 0x0CC804, 0x0000011 + +gUnk_080CC815:: @ 080CC815 + .incbin "baserom.gba", 0x0CC815, 0x0000011 + +gUnk_080CC826:: @ 080CC826 + .incbin "baserom.gba", 0x0CC826, 0x0000011 + +gUnk_080CC837:: @ 080CC837 + .incbin "baserom.gba", 0x0CC837, 0x0000011 + +gUnk_080CC848:: @ 080CC848 + .incbin "baserom.gba", 0x0CC848, 0x0000011 + +gUnk_080CC859:: @ 080CC859 + .incbin "baserom.gba", 0x0CC859, 0x0000011 + +gUnk_080CC86A:: @ 080CC86A + .incbin "baserom.gba", 0x0CC86A, 0x0000011 + +gUnk_080CC87B:: @ 080CC87B + .incbin "baserom.gba", 0x0CC87B, 0x0000011 + +gUnk_080CC88C:: @ 080CC88C + .incbin "baserom.gba", 0x0CC88C, 0x0000015 + +gUnk_080CC8A1:: @ 080CC8A1 + .incbin "baserom.gba", 0x0CC8A1, 0x0000015 + +gUnk_080CC8B6:: @ 080CC8B6 + .incbin "baserom.gba", 0x0CC8B6, 0x0000015 + +gUnk_080CC8CB:: @ 080CC8CB + .incbin "baserom.gba", 0x0CC8CB, 0x0000015 + +gUnk_080CC8E0:: @ 080CC8E0 + .incbin "baserom.gba", 0x0CC8E0, 0x0000044 + +gUnk_080CC924:: @ 080CC924 + .incbin "baserom.gba", 0x0CC924, 0x0000008 + +gUnk_080CC92C:: @ 080CC92C + .incbin "baserom.gba", 0x0CC92C, 0x0000008 + +gUnk_080CC934:: @ 080CC934 + .incbin "baserom.gba", 0x0CC934, 0x0000008 + +gUnk_080CC93C:: @ 080CC93C + .incbin "baserom.gba", 0x0CC93C, 0x0000008 + +gUnk_080CC944:: @ 080CC944 + .incbin "baserom.gba", 0x0CC944, 0x0000010 diff --git a/data/animations/spikedBeetle.s b/data/animations/spikedBeetle.s new file mode 100644 index 00000000..0ac3f0de --- /dev/null +++ b/data/animations/spikedBeetle.s @@ -0,0 +1,37 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD31C:: @ 080CD31C + .incbin "baserom.gba", 0x0CD31C, 0x0000011 + +gUnk_080CD32D:: @ 080CD32D + .incbin "baserom.gba", 0x0CD32D, 0x0000011 + +gUnk_080CD33E:: @ 080CD33E + .incbin "baserom.gba", 0x0CD33E, 0x0000011 + +gUnk_080CD34F:: @ 080CD34F + .incbin "baserom.gba", 0x0CD34F, 0x0000011 + +gUnk_080CD360:: @ 080CD360 + .incbin "baserom.gba", 0x0CD360, 0x0000008 + +gUnk_080CD368:: @ 080CD368 + .incbin "baserom.gba", 0x0CD368, 0x0000008 + +gUnk_080CD370:: @ 080CD370 + .incbin "baserom.gba", 0x0CD370, 0x0000008 + +gUnk_080CD378:: @ 080CD378 + .incbin "baserom.gba", 0x0CD378, 0x0000008 + +gUnk_080CD380:: @ 080CD380 + .incbin "baserom.gba", 0x0CD380, 0x0000011 + +gUnk_080CD391:: @ 080CD391 + .incbin "baserom.gba", 0x0CD391, 0x0000007 + +gUnk_080CD398:: @ 080CD398 + .incbin "baserom.gba", 0x0CD398, 0x000002C diff --git a/data/animations/wallMaster.s b/data/animations/wallMaster.s new file mode 100644 index 00000000..277880d6 --- /dev/null +++ b/data/animations/wallMaster.s @@ -0,0 +1,16 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD0B8:: @ 080CD0B8 + .incbin "baserom.gba", 0x0CD0B8, 0x000000D + +gUnk_080CD0C5:: @ 080CD0C5 + .incbin "baserom.gba", 0x0CD0C5, 0x0000015 + +gUnk_080CD0DA:: @ 080CD0DA + .incbin "baserom.gba", 0x0CD0DA, 0x0000006 + +gUnk_080CD0E0:: @ 080CD0E0 + .incbin "baserom.gba", 0x0CD0E0, 0x0000010 diff --git a/data/animations/waterDrop.s b/data/animations/waterDrop.s new file mode 100644 index 00000000..ada87e34 --- /dev/null +++ b/data/animations/waterDrop.s @@ -0,0 +1,14 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CD044:: @ 080CD044 + .incbin "baserom.gba", 0x0CD044, 0x0000025 + +gUnk_080CD069:: @ 080CD069 + .incbin "baserom.gba", 0x0CD069, 0x0000007 + +gUnk_080CD070:: @ 080CD070 + .incbin "baserom.gba", 0x0CD070, 0x000000C + diff --git a/data/data_080CC19C.s b/data/data_080CC6FC.s similarity index 84% rename from data/data_080CC19C.s rename to data/data_080CC6FC.s index d00c10c8..1f09d23e 100644 --- a/data/data_080CC19C.s +++ b/data/data_080CC6FC.s @@ -3,801 +3,6 @@ .section .rodata -gUnk_080CC19C:: @ 080CC19C - .incbin "baserom.gba", 0x0CC19C, 0x0000014 - -gUnk_080CC1B0:: @ 080CC1B0 - .incbin "baserom.gba", 0x0CC1B0, 0x0000008 - -gUnk_080CC1B8:: @ 080CC1B8 - .incbin "baserom.gba", 0x0CC1B8, 0x0000010 - -gUnk_080CC1C8:: @ 080CC1C8 - .incbin "baserom.gba", 0x0CC1C8, 0x0000014 - -gUnk_080CC1DC:: @ 080CC1DC - .incbin "baserom.gba", 0x0CC1DC, 0x0000030 - -gUnk_080CC20C:: @ 080CC20C - .incbin "baserom.gba", 0x0CC20C, 0x0000028 - -gUnk_080CC234:: @ 080CC234 - .incbin "baserom.gba", 0x0CC234, 0x000001B - -gUnk_080CC24F:: @ 080CC24F - .incbin "baserom.gba", 0x0CC24F, 0x0000009 - -gUnk_080CC258:: @ 080CC258 - .incbin "baserom.gba", 0x0CC258, 0x000000C - -gUnk_080CC264:: @ 080CC264 - .incbin "baserom.gba", 0x0CC264, 0x0000008 - -gUnk_080CC26C:: @ 080CC26C - .incbin "baserom.gba", 0x0CC26C, 0x000000C - -gUnk_080CC278:: @ 080CC278 - .incbin "baserom.gba", 0x0CC278, 0x0000004 - -gUnk_080CC27C:: @ 080CC27C - .incbin "baserom.gba", 0x0CC27C, 0x0000020 - -gUnk_080CC29C:: @ 080CC29C - .incbin "baserom.gba", 0x0CC29C, 0x0000020 - -gUnk_080CC2BC:: @ 080CC2BC - .incbin "baserom.gba", 0x0CC2BC, 0x0000020 - -gUnk_080CC2DC:: @ 080CC2DC - .incbin "baserom.gba", 0x0CC2DC, 0x0000003 - -gUnk_080CC2DF:: @ 080CC2DF - .incbin "baserom.gba", 0x0CC2DF, 0x0000004 - -gUnk_080CC2E3:: @ 080CC2E3 - .incbin "baserom.gba", 0x0CC2E3, 0x0000004 - -gUnk_080CC2E7:: @ 080CC2E7 - .incbin "baserom.gba", 0x0CC2E7, 0x0000004 - -gUnk_080CC2EB:: @ 080CC2EB - .incbin "baserom.gba", 0x0CC2EB, 0x0000004 - -gUnk_080CC2EF:: @ 080CC2EF - .incbin "baserom.gba", 0x0CC2EF, 0x0000005 - -gUnk_080CC2F4:: @ 080CC2F4 - .incbin "baserom.gba", 0x0CC2F4, 0x0000011 - -gUnk_080CC305:: @ 080CC305 - .incbin "baserom.gba", 0x0CC305, 0x0000019 - -gUnk_080CC31E:: @ 080CC31E - .incbin "baserom.gba", 0x0CC31E, 0x000000D - -gUnk_080CC32B:: @ 080CC32B - .incbin "baserom.gba", 0x0CC32B, 0x000000D - -gUnk_080CC338:: @ 080CC338 - .incbin "baserom.gba", 0x0CC338, 0x0000005 - -gUnk_080CC33D:: @ 080CC33D - .incbin "baserom.gba", 0x0CC33D, 0x0000009 - -gUnk_080CC346:: @ 080CC346 - .incbin "baserom.gba", 0x0CC346, 0x000000D - -gUnk_080CC353:: @ 080CC353 - .incbin "baserom.gba", 0x0CC353, 0x0000009 - -gUnk_080CC35C:: @ 080CC35C - .incbin "baserom.gba", 0x0CC35C, 0x000000D - -gUnk_080CC369:: @ 080CC369 - .incbin "baserom.gba", 0x0CC369, 0x0000009 - -gUnk_080CC372:: @ 080CC372 - .incbin "baserom.gba", 0x0CC372, 0x0000009 - -gUnk_080CC37B:: @ 080CC37B - .incbin "baserom.gba", 0x0CC37B, 0x0000021 - -gUnk_080CC39C:: @ 080CC39C - .incbin "baserom.gba", 0x0CC39C, 0x0000038 - -gUnk_080CC3D4:: @ 080CC3D4 - .incbin "baserom.gba", 0x0CC3D4, 0x0000038 - -gUnk_080CC40C:: @ 080CC40C - .incbin "baserom.gba", 0x0CC40C, 0x0000034 - -gUnk_080CC440:: @ 080CC440 - .incbin "baserom.gba", 0x0CC440, 0x0000038 - -gUnk_080CC478:: @ 080CC478 - .incbin "baserom.gba", 0x0CC478, 0x0000038 - -gUnk_080CC4B0:: @ 080CC4B0 - .incbin "baserom.gba", 0x0CC4B0, 0x0000065 - -gUnk_080CC515:: @ 080CC515 - .incbin "baserom.gba", 0x0CC515, 0x000006D - -gUnk_080CC582:: @ 080CC582 - .incbin "baserom.gba", 0x0CC582, 0x000006D - -gUnk_080CC5EF:: @ 080CC5EF - .incbin "baserom.gba", 0x0CC5EF, 0x000006D - -gUnk_080CC65C:: @ 080CC65C - .incbin "baserom.gba", 0x0CC65C, 0x0000021 - -gUnk_080CC67D:: @ 080CC67D - .incbin "baserom.gba", 0x0CC67D, 0x0000007 - -gUnk_080CC684:: @ 080CC684 - .incbin "baserom.gba", 0x0CC684, 0x0000018 - -gUnk_080CC69C:: @ 080CC69C - .incbin "baserom.gba", 0x0CC69C, 0x0000038 - -gUnk_080CC6D4:: @ 080CC6D4 - .incbin "baserom.gba", 0x0CC6D4, 0x0000028 - -gUnk_080CC6FC:: @ 080CC6FC - .incbin "baserom.gba", 0x0CC6FC, 0x0000018 - -gUnk_080CC714:: @ 080CC714 - .incbin "baserom.gba", 0x0CC714, 0x0000020 - -gUnk_080CC734:: @ 080CC734 - .incbin "baserom.gba", 0x0CC734, 0x0000025 - -gUnk_080CC759:: @ 080CC759 - .incbin "baserom.gba", 0x0CC759, 0x0000015 - -gUnk_080CC76E:: @ 080CC76E - .incbin "baserom.gba", 0x0CC76E, 0x0000012 - -gUnk_080CC780:: @ 080CC780 - .incbin "baserom.gba", 0x0CC780, 0x0000010 - -gUnk_080CC790:: @ 080CC790 - .incbin "baserom.gba", 0x0CC790, 0x0000018 - -gUnk_080CC7A8:: @ 080CC7A8 - .incbin "baserom.gba", 0x0CC7A8, 0x0000014 - -gUnk_080CC7BC:: @ 080CC7BC - .incbin "baserom.gba", 0x0CC7BC, 0x0000004 - -gUnk_080CC7C0:: @ 080CC7C0 - .incbin "baserom.gba", 0x0CC7C0, 0x0000010 - -gUnk_080CC7D0:: @ 080CC7D0 - .incbin "baserom.gba", 0x0CC7D0, 0x0000008 - -gUnk_080CC7D8:: @ 080CC7D8 - .incbin "baserom.gba", 0x0CC7D8, 0x0000008 - -gUnk_080CC7E0:: @ 080CC7E0 - .incbin "baserom.gba", 0x0CC7E0, 0x0000009 - -gUnk_080CC7E9:: @ 080CC7E9 - .incbin "baserom.gba", 0x0CC7E9, 0x0000009 - -gUnk_080CC7F2:: @ 080CC7F2 - .incbin "baserom.gba", 0x0CC7F2, 0x0000009 - -gUnk_080CC7FB:: @ 080CC7FB - .incbin "baserom.gba", 0x0CC7FB, 0x0000009 - -gUnk_080CC804:: @ 080CC804 - .incbin "baserom.gba", 0x0CC804, 0x0000011 - -gUnk_080CC815:: @ 080CC815 - .incbin "baserom.gba", 0x0CC815, 0x0000011 - -gUnk_080CC826:: @ 080CC826 - .incbin "baserom.gba", 0x0CC826, 0x0000011 - -gUnk_080CC837:: @ 080CC837 - .incbin "baserom.gba", 0x0CC837, 0x0000011 - -gUnk_080CC848:: @ 080CC848 - .incbin "baserom.gba", 0x0CC848, 0x0000011 - -gUnk_080CC859:: @ 080CC859 - .incbin "baserom.gba", 0x0CC859, 0x0000011 - -gUnk_080CC86A:: @ 080CC86A - .incbin "baserom.gba", 0x0CC86A, 0x0000011 - -gUnk_080CC87B:: @ 080CC87B - .incbin "baserom.gba", 0x0CC87B, 0x0000011 - -gUnk_080CC88C:: @ 080CC88C - .incbin "baserom.gba", 0x0CC88C, 0x0000015 - -gUnk_080CC8A1:: @ 080CC8A1 - .incbin "baserom.gba", 0x0CC8A1, 0x0000015 - -gUnk_080CC8B6:: @ 080CC8B6 - .incbin "baserom.gba", 0x0CC8B6, 0x0000015 - -gUnk_080CC8CB:: @ 080CC8CB - .incbin "baserom.gba", 0x0CC8CB, 0x0000015 - -gUnk_080CC8E0:: @ 080CC8E0 - .incbin "baserom.gba", 0x0CC8E0, 0x0000044 - -gUnk_080CC924:: @ 080CC924 - .incbin "baserom.gba", 0x0CC924, 0x0000008 - -gUnk_080CC92C:: @ 080CC92C - .incbin "baserom.gba", 0x0CC92C, 0x0000008 - -gUnk_080CC934:: @ 080CC934 - .incbin "baserom.gba", 0x0CC934, 0x0000008 - -gUnk_080CC93C:: @ 080CC93C - .incbin "baserom.gba", 0x0CC93C, 0x0000008 - -gUnk_080CC944:: @ 080CC944 - .incbin "baserom.gba", 0x0CC944, 0x0000010 - -gUnk_080CC954:: @ 080CC954 - .incbin "baserom.gba", 0x0CC954, 0x000006C - -gUnk_080CC9C0:: @ 080CC9C0 - .incbin "baserom.gba", 0x0CC9C0, 0x0000008 - -gUnk_080CC9C8:: @ 080CC9C8 - .incbin "baserom.gba", 0x0CC9C8, 0x0000018 - -gUnk_080CC9E0:: @ 080CC9E0 - .incbin "baserom.gba", 0x0CC9E0, 0x0000024 - -gUnk_080CCA04:: @ 080CCA04 - .incbin "baserom.gba", 0x0CCA04, 0x0000006 - -gUnk_080CCA0A:: @ 080CCA0A - .incbin "baserom.gba", 0x0CCA0A, 0x0000015 - -gUnk_080CCA1F:: @ 080CCA1F - .incbin "baserom.gba", 0x0CCA1F, 0x0000015 - -gUnk_080CCA34:: @ 080CCA34 - .incbin "baserom.gba", 0x0CCA34, 0x0000015 - -gUnk_080CCA49:: @ 080CCA49 - .incbin "baserom.gba", 0x0CCA49, 0x0000015 - -gUnk_080CCA5E:: @ 080CCA5E - .incbin "baserom.gba", 0x0CCA5E, 0x0000011 - -gUnk_080CCA6F:: @ 080CCA6F - .incbin "baserom.gba", 0x0CCA6F, 0x0000011 - -gUnk_080CCA80:: @ 080CCA80 - .incbin "baserom.gba", 0x0CCA80, 0x0000011 - -gUnk_080CCA91:: @ 080CCA91 - .incbin "baserom.gba", 0x0CCA91, 0x0000011 - -gUnk_080CCAA2:: @ 080CCAA2 - .incbin "baserom.gba", 0x0CCAA2, 0x0000005 - -gUnk_080CCAA7:: @ 080CCAA7 - .incbin "baserom.gba", 0x0CCAA7, 0x0000005 - -gUnk_080CCAAC:: @ 080CCAAC - .incbin "baserom.gba", 0x0CCAAC, 0x0000005 - -gUnk_080CCAB1:: @ 080CCAB1 - .incbin "baserom.gba", 0x0CCAB1, 0x0000005 - -gUnk_080CCAB6:: @ 080CCAB6 - .incbin "baserom.gba", 0x0CCAB6, 0x0000010 - -gUnk_080CCAC6:: @ 080CCAC6 - .incbin "baserom.gba", 0x0CCAC6, 0x0000010 - -gUnk_080CCAD6:: @ 080CCAD6 - .incbin "baserom.gba", 0x0CCAD6, 0x0000010 - -gUnk_080CCAE6:: @ 080CCAE6 - .incbin "baserom.gba", 0x0CCAE6, 0x0000010 - -gUnk_080CCAF6:: @ 080CCAF6 - .incbin "baserom.gba", 0x0CCAF6, 0x0000011 - -gUnk_080CCB07:: @ 080CCB07 - .incbin "baserom.gba", 0x0CCB07, 0x0000011 - -gUnk_080CCB18:: @ 080CCB18 - .incbin "baserom.gba", 0x0CCB18, 0x0000011 - -gUnk_080CCB29:: @ 080CCB29 - .incbin "baserom.gba", 0x0CCB29, 0x0000011 - -gUnk_080CCB3A:: @ 080CCB3A - .incbin "baserom.gba", 0x0CCB3A, 0x000000D - -gUnk_080CCB47:: @ 080CCB47 - .incbin "baserom.gba", 0x0CCB47, 0x000000D - -gUnk_080CCB54:: @ 080CCB54 - .incbin "baserom.gba", 0x0CCB54, 0x000000D - -gUnk_080CCB61:: @ 080CCB61 - .incbin "baserom.gba", 0x0CCB61, 0x000000D - -gUnk_080CCB6E:: @ 080CCB6E - .incbin "baserom.gba", 0x0CCB6E, 0x0000011 - -gUnk_080CCB7F:: @ 080CCB7F - .incbin "baserom.gba", 0x0CCB7F, 0x0000015 - -gUnk_080CCB94:: @ 080CCB94 - .incbin "baserom.gba", 0x0CCB94, 0x000006C - -gUnk_080CCC00:: @ 080CCC00 - .incbin "baserom.gba", 0x0CCC00, 0x0000018 - -gUnk_080CCC18:: @ 080CCC18 - .incbin "baserom.gba", 0x0CCC18, 0x000001C - -gUnk_080CCC34:: @ 080CCC34 - .incbin "baserom.gba", 0x0CCC34, 0x0000008 - -gUnk_080CCC3C:: @ 080CCC3C - .incbin "baserom.gba", 0x0CCC3C, 0x0000008 - -gUnk_080CCC44:: @ 080CCC44 - .incbin "baserom.gba", 0x0CCC44, 0x0000003 - -gUnk_080CCC47:: @ 080CCC47 - .incbin "baserom.gba", 0x0CCC47, 0x0000003 - -gUnk_080CCC4A:: @ 080CCC4A - .incbin "baserom.gba", 0x0CCC4A, 0x0000015 - -gUnk_080CCC5F:: @ 080CCC5F - .incbin "baserom.gba", 0x0CCC5F, 0x0000015 - -gUnk_080CCC74:: @ 080CCC74 - .incbin "baserom.gba", 0x0CCC74, 0x0000028 - -gUnk_080CCC9C:: @ 080CCC9C - .incbin "baserom.gba", 0x0CCC9C, 0x0000018 - -gUnk_080CCCB4:: @ 080CCCB4 - .incbin "baserom.gba", 0x0CCCB4, 0x0000015 - -gUnk_080CCCC9:: @ 080CCCC9 - .incbin "baserom.gba", 0x0CCCC9, 0x0000015 - -gUnk_080CCCDE:: @ 080CCCDE - .incbin "baserom.gba", 0x0CCCDE, 0x0000028 - -gUnk_080CCD06:: @ 080CCD06 - .incbin "baserom.gba", 0x0CCD06, 0x000001A - -gUnk_080CCD20:: @ 080CCD20 - .incbin "baserom.gba", 0x0CCD20, 0x0000024 - -gUnk_080CCD44:: @ 080CCD44 - .incbin "baserom.gba", 0x0CCD44, 0x000001C - -gUnk_080CCD60:: @ 080CCD60 - .incbin "baserom.gba", 0x0CCD60, 0x0000018 - -gUnk_080CCD78:: @ 080CCD78 - .incbin "baserom.gba", 0x0CCD78, 0x0000010 - -gUnk_080CCD88:: @ 080CCD88 - .incbin "baserom.gba", 0x0CCD88, 0x0000018 - -gUnk_080CCDA0:: @ 080CCDA0 - .incbin "baserom.gba", 0x0CCDA0, 0x0000008 - -gUnk_080CCDA8:: @ 080CCDA8 - .incbin "baserom.gba", 0x0CCDA8, 0x0000020 - -gUnk_080CCDC8:: @ 080CCDC8 - .incbin "baserom.gba", 0x0CCDC8, 0x000000C - -gUnk_080CCDD4:: @ 080CCDD4 - .incbin "baserom.gba", 0x0CCDD4, 0x0000008 - -gUnk_080CCDDC:: @ 080CCDDC - .incbin "baserom.gba", 0x0CCDDC, 0x0000011 - -gUnk_080CCDED:: @ 080CCDED - .incbin "baserom.gba", 0x0CCDED, 0x0000011 - -gUnk_080CCDFE:: @ 080CCDFE - .incbin "baserom.gba", 0x0CCDFE, 0x0000011 - -gUnk_080CCE0F:: @ 080CCE0F - .incbin "baserom.gba", 0x0CCE0F, 0x0000011 - -gUnk_080CCE20:: @ 080CCE20 - .incbin "baserom.gba", 0x0CCE20, 0x0000011 - -gUnk_080CCE31:: @ 080CCE31 - .incbin "baserom.gba", 0x0CCE31, 0x0000011 - -gUnk_080CCE42:: @ 080CCE42 - .incbin "baserom.gba", 0x0CCE42, 0x0000011 - -gUnk_080CCE53:: @ 080CCE53 - .incbin "baserom.gba", 0x0CCE53, 0x0000011 - -gUnk_080CCE64:: @ 080CCE64 - .incbin "baserom.gba", 0x0CCE64, 0x0000024 - -gUnk_080CCE88:: @ 080CCE88 - .incbin "baserom.gba", 0x0CCE88, 0x0000011 - -gUnk_080CCE99:: @ 080CCE99 - .incbin "baserom.gba", 0x0CCE99, 0x0000011 - -gUnk_080CCEAA:: @ 080CCEAA - .incbin "baserom.gba", 0x0CCEAA, 0x0000011 - -gUnk_080CCEBB:: @ 080CCEBB - .incbin "baserom.gba", 0x0CCEBB, 0x0000011 - -gUnk_080CCECC:: @ 080CCECC - .incbin "baserom.gba", 0x0CCECC, 0x0000011 - -gUnk_080CCEDD:: @ 080CCEDD - .incbin "baserom.gba", 0x0CCEDD, 0x0000011 - -gUnk_080CCEEE:: @ 080CCEEE - .incbin "baserom.gba", 0x0CCEEE, 0x0000011 - -gUnk_080CCEFF:: @ 080CCEFF - .incbin "baserom.gba", 0x0CCEFF, 0x0000011 - -gUnk_080CCF10:: @ 080CCF10 - .incbin "baserom.gba", 0x0CCF10, 0x0000005 - -gUnk_080CCF15:: @ 080CCF15 - .incbin "baserom.gba", 0x0CCF15, 0x0000005 - -gUnk_080CCF1A:: @ 080CCF1A - .incbin "baserom.gba", 0x0CCF1A, 0x0000005 - -gUnk_080CCF1F:: @ 080CCF1F - .incbin "baserom.gba", 0x0CCF1F, 0x0000005 - -gUnk_080CCF24:: @ 080CCF24 - .incbin "baserom.gba", 0x0CCF24, 0x000001D - -gUnk_080CCF41:: @ 080CCF41 - .incbin "baserom.gba", 0x0CCF41, 0x000001D - -gUnk_080CCF5E:: @ 080CCF5E - .incbin "baserom.gba", 0x0CCF5E, 0x000001D - -gUnk_080CCF7B:: @ 080CCF7B - .incbin "baserom.gba", 0x0CCF7B, 0x000001D - -gUnk_080CCF98:: @ 080CCF98 - .incbin "baserom.gba", 0x0CCF98, 0x0000011 - -gUnk_080CCFA9:: @ 080CCFA9 - .incbin "baserom.gba", 0x0CCFA9, 0x0000011 - -gUnk_080CCFBA:: @ 080CCFBA - .incbin "baserom.gba", 0x0CCFBA, 0x0000011 - -gUnk_080CCFCB:: @ 080CCFCB - .incbin "baserom.gba", 0x0CCFCB, 0x0000011 - -gUnk_080CCFDC:: @ 080CCFDC - .incbin "baserom.gba", 0x0CCFDC, 0x0000054 - -gUnk_080CD030:: @ 080CD030 - .incbin "baserom.gba", 0x0CD030, 0x000000C - -gUnk_080CD03C:: @ 080CD03C - .incbin "baserom.gba", 0x0CD03C, 0x0000004 - -gUnk_080CD040:: @ 080CD040 - .incbin "baserom.gba", 0x0CD040, 0x0000004 - -gUnk_080CD044:: @ 080CD044 - .incbin "baserom.gba", 0x0CD044, 0x0000025 - -gUnk_080CD069:: @ 080CD069 - .incbin "baserom.gba", 0x0CD069, 0x0000007 - -gUnk_080CD070:: @ 080CD070 - .incbin "baserom.gba", 0x0CD070, 0x000000C - -gUnk_080CD07C:: @ 080CD07C - .incbin "baserom.gba", 0x0CD07C, 0x0000018 - -gUnk_080CD094:: @ 080CD094 - .incbin "baserom.gba", 0x0CD094, 0x000001C - -gUnk_080CD0B0:: @ 080CD0B0 - .incbin "baserom.gba", 0x0CD0B0, 0x0000008 - -gUnk_080CD0B8:: @ 080CD0B8 - .incbin "baserom.gba", 0x0CD0B8, 0x000000D - -gUnk_080CD0C5:: @ 080CD0C5 - .incbin "baserom.gba", 0x0CD0C5, 0x0000015 - -gUnk_080CD0DA:: @ 080CD0DA - .incbin "baserom.gba", 0x0CD0DA, 0x0000006 - -gUnk_080CD0E0:: @ 080CD0E0 - .incbin "baserom.gba", 0x0CD0E0, 0x0000010 - -gUnk_080CD0F0:: @ 080CD0F0 - .incbin "baserom.gba", 0x0CD0F0, 0x0000018 - -gUnk_080CD108:: @ 080CD108 - .incbin "baserom.gba", 0x0CD108, 0x0000018 - -gUnk_080CD120:: @ 080CD120 - .incbin "baserom.gba", 0x0CD120, 0x0000014 - -gUnk_080CD134:: @ 080CD134 - .incbin "baserom.gba", 0x0CD134, 0x000000C - -gUnk_080CD140:: @ 080CD140 - .incbin "baserom.gba", 0x0CD140, 0x0000018 - -gUnk_080CD158:: @ 080CD158 - .incbin "baserom.gba", 0x0CD158, 0x0000014 - -gUnk_080CD16C:: @ 080CD16C - .incbin "baserom.gba", 0x0CD16C, 0x0000008 - -gUnk_080CD174:: @ 080CD174 - .incbin "baserom.gba", 0x0CD174, 0x0000008 - -gUnk_080CD17C:: @ 080CD17C - .incbin "baserom.gba", 0x0CD17C, 0x0000008 - -gUnk_080CD184:: @ 080CD184 - .incbin "baserom.gba", 0x0CD184, 0x0000011 - -gUnk_080CD195:: @ 080CD195 - .incbin "baserom.gba", 0x0CD195, 0x0000041 - -gUnk_080CD1D6:: @ 080CD1D6 - .incbin "baserom.gba", 0x0CD1D6, 0x0000041 - -gUnk_080CD217:: @ 080CD217 - .incbin "baserom.gba", 0x0CD217, 0x0000009 - -gUnk_080CD220:: @ 080CD220 - .incbin "baserom.gba", 0x0CD220, 0x0000014 - -gUnk_080CD234:: @ 080CD234 - .incbin "baserom.gba", 0x0CD234, 0x0000018 - -gUnk_080CD24C:: @ 080CD24C - .incbin "baserom.gba", 0x0CD24C, 0x000000C - -gUnk_080CD258:: @ 080CD258 - .incbin "baserom.gba", 0x0CD258, 0x000001C - -gUnk_080CD274:: @ 080CD274 - .incbin "baserom.gba", 0x0CD274, 0x0000008 - -gUnk_080CD27C:: @ 080CD27C - .incbin "baserom.gba", 0x0CD27C, 0x000001C - -gUnk_080CD298:: @ 080CD298 - .incbin "baserom.gba", 0x0CD298, 0x0000010 - -gUnk_080CD2A8:: @ 080CD2A8 - .incbin "baserom.gba", 0x0CD2A8, 0x0000004 - -gUnk_080CD2AC:: @ 080CD2AC - .incbin "baserom.gba", 0x0CD2AC, 0x0000011 - -gUnk_080CD2BD:: @ 080CD2BD - .incbin "baserom.gba", 0x0CD2BD, 0x000000B - -gUnk_080CD2C8:: @ 080CD2C8 - .incbin "baserom.gba", 0x0CD2C8, 0x0000010 - -gUnk_080CD2D8:: @ 080CD2D8 - .incbin "baserom.gba", 0x0CD2D8, 0x0000018 - -gUnk_080CD2F0:: @ 080CD2F0 - .incbin "baserom.gba", 0x0CD2F0, 0x0000024 - -gUnk_080CD314:: @ 080CD314 - .incbin "baserom.gba", 0x0CD314, 0x0000004 - -gUnk_080CD318:: @ 080CD318 - .incbin "baserom.gba", 0x0CD318, 0x0000004 - -gUnk_080CD31C:: @ 080CD31C - .incbin "baserom.gba", 0x0CD31C, 0x0000011 - -gUnk_080CD32D:: @ 080CD32D - .incbin "baserom.gba", 0x0CD32D, 0x0000011 - -gUnk_080CD33E:: @ 080CD33E - .incbin "baserom.gba", 0x0CD33E, 0x0000011 - -gUnk_080CD34F:: @ 080CD34F - .incbin "baserom.gba", 0x0CD34F, 0x0000011 - -gUnk_080CD360:: @ 080CD360 - .incbin "baserom.gba", 0x0CD360, 0x0000008 - -gUnk_080CD368:: @ 080CD368 - .incbin "baserom.gba", 0x0CD368, 0x0000008 - -gUnk_080CD370:: @ 080CD370 - .incbin "baserom.gba", 0x0CD370, 0x0000008 - -gUnk_080CD378:: @ 080CD378 - .incbin "baserom.gba", 0x0CD378, 0x0000008 - -gUnk_080CD380:: @ 080CD380 - .incbin "baserom.gba", 0x0CD380, 0x0000011 - -gUnk_080CD391:: @ 080CD391 - .incbin "baserom.gba", 0x0CD391, 0x0000007 - -gUnk_080CD398:: @ 080CD398 - .incbin "baserom.gba", 0x0CD398, 0x000002C - -gUnk_080CD3C4:: @ 080CD3C4 - .incbin "baserom.gba", 0x0CD3C4, 0x0000010 - -gUnk_080CD3D4:: @ 080CD3D4 - .incbin "baserom.gba", 0x0CD3D4, 0x0000008 - -gUnk_080CD3DC:: @ 080CD3DC - .incbin "baserom.gba", 0x0CD3DC, 0x0000008 - -gUnk_080CD3E4:: @ 080CD3E4 - .incbin "baserom.gba", 0x0CD3E4, 0x0000018 - -gUnk_080CD3FC:: @ 080CD3FC - .incbin "baserom.gba", 0x0CD3FC, 0x000000C - -gUnk_080CD408:: @ 080CD408 - .incbin "baserom.gba", 0x0CD408, 0x0000024 - -gUnk_080CD42C:: @ 080CD42C - .incbin "baserom.gba", 0x0CD42C, 0x000000C - -gUnk_080CD438:: @ 080CD438 - .incbin "baserom.gba", 0x0CD438, 0x0000018 - -gUnk_080CD450:: @ 080CD450 - .incbin "baserom.gba", 0x0CD450, 0x000000C - -gUnk_080CD45C:: @ 080CD45C - .incbin "baserom.gba", 0x0CD45C, 0x0000008 - -gUnk_080CD464:: @ 080CD464 - .incbin "baserom.gba", 0x0CD464, 0x0000010 - -gUnk_080CD474:: @ 080CD474 - .incbin "baserom.gba", 0x0CD474, 0x0000011 - -gUnk_080CD485:: @ 080CD485 - .incbin "baserom.gba", 0x0CD485, 0x0000011 - -gUnk_080CD496:: @ 080CD496 - .incbin "baserom.gba", 0x0CD496, 0x0000011 - -gUnk_080CD4A7:: @ 080CD4A7 - .incbin "baserom.gba", 0x0CD4A7, 0x0000011 - -gUnk_080CD4B8:: @ 080CD4B8 - .incbin "baserom.gba", 0x0CD4B8, 0x0000011 - -gUnk_080CD4C9:: @ 080CD4C9 - .incbin "baserom.gba", 0x0CD4C9, 0x0000011 - -gUnk_080CD4DA:: @ 080CD4DA - .incbin "baserom.gba", 0x0CD4DA, 0x0000011 - -gUnk_080CD4EB:: @ 080CD4EB - .incbin "baserom.gba", 0x0CD4EB, 0x0000011 - -gUnk_080CD4FC:: @ 080CD4FC - .incbin "baserom.gba", 0x0CD4FC, 0x0000004 - -gUnk_080CD500:: @ 080CD500 - .incbin "baserom.gba", 0x0CD500, 0x0000004 - -gUnk_080CD504:: @ 080CD504 - .incbin "baserom.gba", 0x0CD504, 0x0000004 - -gUnk_080CD508:: @ 080CD508 - .incbin "baserom.gba", 0x0CD508, 0x0000004 - -gUnk_080CD50C:: @ 080CD50C - .incbin "baserom.gba", 0x0CD50C, 0x0000034 - -gUnk_080CD540:: @ 080CD540 - .incbin "baserom.gba", 0x0CD540, 0x0000018 - -gUnk_080CD558:: @ 080CD558 - .incbin "baserom.gba", 0x0CD558, 0x0000010 - -gUnk_080CD568:: @ 080CD568 - .incbin "baserom.gba", 0x0CD568, 0x0000018 - -gUnk_080CD580:: @ 080CD580 - .incbin "baserom.gba", 0x0CD580, 0x000000C - -gUnk_080CD58C:: @ 080CD58C - .incbin "baserom.gba", 0x0CD58C, 0x0000018 - -gUnk_080CD5A4:: @ 080CD5A4 - .incbin "baserom.gba", 0x0CD5A4, 0x0000011 - -gUnk_080CD5B5:: @ 080CD5B5 - .incbin "baserom.gba", 0x0CD5B5, 0x0000013 - -gUnk_080CD5C8:: @ 080CD5C8 - .incbin "baserom.gba", 0x0CD5C8, 0x000000C - -gUnk_080CD5D4:: @ 080CD5D4 - .incbin "baserom.gba", 0x0CD5D4, 0x0000018 - -gUnk_080CD5EC:: @ 080CD5EC - .incbin "baserom.gba", 0x0CD5EC, 0x0000014 - -gUnk_080CD600:: @ 080CD600 - .incbin "baserom.gba", 0x0CD600, 0x0000018 - -gUnk_080CD618:: @ 080CD618 - .incbin "baserom.gba", 0x0CD618, 0x0000010 - -gUnk_080CD628:: @ 080CD628 - .incbin "baserom.gba", 0x0CD628, 0x0000011 - -gUnk_080CD639:: @ 080CD639 - .incbin "baserom.gba", 0x0CD639, 0x0000011 - -gUnk_080CD64A:: @ 080CD64A - .incbin "baserom.gba", 0x0CD64A, 0x0000011 - -gUnk_080CD65B:: @ 080CD65B - .incbin "baserom.gba", 0x0CD65B, 0x0000011 - -gUnk_080CD66C:: @ 080CD66C - .incbin "baserom.gba", 0x0CD66C, 0x0000005 - -gUnk_080CD671:: @ 080CD671 - .incbin "baserom.gba", 0x0CD671, 0x0000005 - -gUnk_080CD676:: @ 080CD676 - .incbin "baserom.gba", 0x0CD676, 0x0000009 - -gUnk_080CD67F:: @ 080CD67F - .incbin "baserom.gba", 0x0CD67F, 0x0000009 - -gUnk_080CD688:: @ 080CD688 - .incbin "baserom.gba", 0x0CD688, 0x0000024 - -gUnk_080CD6AC:: @ 080CD6AC - .incbin "baserom.gba", 0x0CD6AC, 0x0000024 - -gUnk_080CD6D0:: @ 080CD6D0 - .incbin "baserom.gba", 0x0CD6D0, 0x000002C - gUnk_080CD6FC:: @ 080CD6FC .incbin "baserom.gba", 0x0CD6FC, 0x0000018 diff --git a/include/area.h b/include/area.h index a683cb2a..a3f27b93 100644 --- a/include/area.h +++ b/include/area.h @@ -8,6 +8,7 @@ typedef struct { u8 areaMetadata; u8 locationIndex; u8 unk; + u8 regret; u16 localFlagOffset; u8 filler[10]; u16 field_0x10; diff --git a/include/entity.h b/include/entity.h index 420a3193..fe662b65 100644 --- a/include/entity.h +++ b/include/entity.h @@ -135,16 +135,18 @@ typedef struct Entity { /*0x80*/ union SplitHWord field_0x80; /*0x82*/ union SplitHWord field_0x82; /*0x84*/ union SplitHWord cutsceneBeh; - /*0x86*/ u16 field_0x86; + /*0x86*/ union SplitHWord field_0x86; } Entity; -#define COORD_TO_TILE(entity) \ - ((((entity->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \ - (((entity->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6) +#define TILE(x, y) \ + ((((x - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \ + (((y - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6) -#define COORD_TO_TILE_OFFSET(entity, xOff, yOff) \ - ((((entity->x.HALF.HI - xOff - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \ - (((entity->y.HALF.HI - yOff - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6) +#define COORD_TO_TILE(entity) \ + TILE(entity->x.HALF.HI, entity->y.HALF.HI) + +#define COORD_TO_TILE_OFFSET(entity, xOff, yOff) \ + TILE(entity->x.HALF.HI - xOff, entity->y.HALF.HI - yOff) extern Entity* CreateEnemy(u32 subtype, u32 form); extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter); @@ -169,6 +171,13 @@ extern void CopyPosition(Entity*, Entity*); extern void DeleteEntity(Entity*); extern void PositionRelative(Entity*, Entity*, s32, s32); +enum { + DirectionNorth = 0x00, + DirectionEast = 0x08, + DirectionSouth = 0x10, + DirectionWest = 0x18, +}; + #define DirectionRound(expr) ((expr) & 0x18) #define DirectionRoundUp(expr) DirectionRound((expr) + 4) #define DirectionIsHorizontal(expr) ((expr) & 0x08) diff --git a/include/functions.h b/include/functions.h index 78b686c5..3e74a41d 100644 --- a/include/functions.h +++ b/include/functions.h @@ -195,6 +195,7 @@ extern u32 sub_080043E8(Entity*); extern void sub_08001290(Entity*, u32); extern void EnqueueSFX(u32); extern void sub_08004596(Entity*, u32); +extern u32 sub_080045B4(Entity*, u32, u32); extern u32 sub_0807953C(void); extern void ResetPlayer(void); extern void CreateDust(Entity*); diff --git a/include/greatFairy.h b/include/greatFairy.h index 317bbf49..1d40304f 100644 --- a/include/greatFairy.h +++ b/include/greatFairy.h @@ -15,13 +15,9 @@ extern void sub_0805EC9C(); extern void sub_0805EC60(); extern void sub_080873D0(); extern void DeleteEntity(); -extern u32 sub_080045D4(); extern void sub_0806F69C(); -extern u32 Random(); -extern void sub_0805E3A0(Entity*, u32); extern Entity* FindEntityInListBySubtype(u32, u32, u32); extern void sub_080791D0(); -extern u32 FindEntityInListByForm(u32, u32, u32, u32, u32); extern void (*const GreatFairy_Main[])(Entity*); extern void (*const GreatFairy_Behaviors[])(Entity*); extern void (*const GreatFairy_WingsBehaviors[])(Entity*); diff --git a/include/player.h b/include/player.h index 488ffba4..0d604dbd 100644 --- a/include/player.h +++ b/include/player.h @@ -106,6 +106,7 @@ typedef struct { } ItemBehavior; extern u8 gBombBagSizes[]; +extern u8 gQuiverSizes[]; extern PlayerState gPlayerState; extern Stats gStats; diff --git a/linker.ld b/linker.ld index b6301795..a57f11f4 100644 --- a/linker.ld +++ b/linker.ld @@ -345,22 +345,21 @@ SECTIONS { src/enemy/pesto.o(.text); src/enemy/puffstool.o(.text); asm/chuchuBoss.o(.text); - asm/likeLike.o(.text); - asm/spearMoblin.o(.text); - asm/businessScrub.o(.text); + src/enemy/likeLike.o(.text); + src/enemy/spearMoblin.o(.text); + src/enemy/businessScrub.o(.text); src/enemy/rupeeLike.o(.text); - asm/madderpillar.o(.text); - asm/waterDrop.o(.text); - asm/wallMaster.o(.text); + src/enemy/madderpillar.o(.text); + src/enemy/waterDrop.o(.text); + src/enemy/wallMaster.o(.text); src/enemy/bombPeahat.o(.text); - asm/bombPeahat.o(.text); - asm/spark.o(.text); - asm/chaser.o(.text); - asm/spikedBeetle.o(.text); - asm/sensorBladeTrap.o(.text); - asm/helmasaur.o(.text); - asm/fallingBoulder.o(.text); - asm/bobomb.o(.text); + src/enemy/spark.o(.text); + src/enemy/chaser.o(.text); + src/enemy/spikedBeetle.o(.text); + src/enemy/sensorBladeTrap.o(.text); + src/enemy/helmasaur.o(.text); + src/enemy/fallingBoulder.o(.text); + src/enemy/bobomb.o(.text); asm/wallMaster2.o(.text); asm/gleerok.o(.text); asm/vaatiEyesMacro.o(.text); @@ -941,7 +940,38 @@ SECTIONS { data/animations/pesto.o(.rodata); src/enemy/puffstool.o(.rodata); data/animations/puffstool.o(.rodata); - data/data_080CC19C.o(.rodata); + src/enemy/chuchuBoss.o(.rodata); + data/animations/chuchuBoss.o(.rodata); + src/enemy/likeLike.o(.rodata); + data/animations/likeLike.o(.rodata); + src/enemy/spearMoblin.o(.rodata); + data/animations/spearMoblin.o(.rodata); + src/enemy/businessScrub.o(.rodata); + data/animations/businessScrub.o(.rodata); + src/enemy/rupeeLike.o(.rodata); + data/animations/rupeeLike.o(.rodata); + src/enemy/madderpillar.o(.rodata); + data/animations/madderpillar.o(.rodata); + src/enemy/waterDrop.o(.rodata); + data/animations/waterDrop.o(.rodata); + src/enemy/wallMaster.o(.rodata); + data/animations/wallMaster.o(.rodata); + src/enemy/bombPeahat.o(.rodata); + data/animations/bombPeahat.o(.rodata); + src/enemy/spark.o(.rodata); + data/animations/spark.o(.rodata); + src/enemy/chaser.o(.rodata); + data/animations/chaser.o(.rodata); + src/enemy/spikedBeetle.o(.rodata); + data/animations/spikedBeetle.o(.rodata); + src/enemy/sensorBladeTrap.o(.rodata); + src/enemy/helmasaur.o(.rodata); + data/animations/helmasaur.o(.rodata); + src/enemy/fallingBoulder.o(.rodata); + data/animations/fallingBoulder.o(.rodata); + src/enemy/bobomb.o(.rodata); + data/animations/bobomb.o(.rodata); + data/data_080CC6FC.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); data/areaPropertyLists.o(.rodata); diff --git a/src/createObject.c b/src/createObject.c index 25adbe29..ad852900 100644 --- a/src/createObject.c +++ b/src/createObject.c @@ -78,7 +78,7 @@ Entity* sub_080A2A3C(Entity* parent, u32 form, u32 subtype, u32 param_4) { ent = CreateObjectWithParent(parent, 0, form, subtype); if (ent != NULL) { ent->actionDelay = 5; - ent->field_0x86 = param_4; + ent->field_0x86.HWORD = param_4; } return ent; } diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index d25b4d9a..d3b958dc 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -16,7 +16,6 @@ extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*)); extern u32 sub_0806FCB8(Entity*, u32, u32, u32); extern u32 GetNextFunction(Entity*); extern void SetChildOffset(Entity*, s32, s32, s32); -extern u32 Random(void); extern Entity* gUnk_020000B0; extern u8 gEntCount; diff --git a/src/enemy/bobomb.c b/src/enemy/bobomb.c new file mode 100644 index 00000000..bf4b4372 --- /dev/null +++ b/src/enemy/bobomb.c @@ -0,0 +1,331 @@ +#include "enemy.h" +#include "functions.h" + +extern void CreateDustSmall(Entity*); +extern void sub_08078930(Entity*); +extern void sub_08078954(Entity*); + +void sub_0802CB68(Entity*); +void sub_0802CBC4(Entity*); +void sub_0802CC18(Entity*); + +extern void (*const gUnk_080CD5D4[])(Entity*); +extern void (*const gUnk_080CD5EC[])(Entity*); +extern void (*const gUnk_080CD600[])(Entity*); +extern void (*const gUnk_080CD618[])(Entity*); + +void Bobomb(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CD5D4); +} + +void sub_0802C670(Entity* this) { + gUnk_080CD5EC[this->action](this); +} + +void sub_0802C688(Entity* this) { + if (this->bitfield & 0x80) { + switch (this->bitfield & 0x7f) { + case 0: + case 1: + if (this->field_0x82.HALF.LO) { + this->field_0x42 = 0; + gPlayerEntity.field_0x42 = 4; + } + return; + case 0xe: + case 0x14: + case 0x15: + case 0x16: + this->action = 3; + this->field_0x42 = 0; + sub_0802CBC4(this); + return; + } + this->field_0x82.HALF.LO++; + this->field_0x80.HALF.LO = 28; + switch (this->field_0x82.HALF.LO) { + case 1: + sub_0802CB68(this); + EnqueueSFX(0x14d); + break; + case 2: + this->action = 3; + this->damageType = 0x6e; + this->field_0xf = 1; + this->field_0x20 = 0x18000; + this->nonPlanarMovement = 0; + this->field_0x80.HALF.HI = 1; + InitializeAnimation(this, this->direction >> 4 | 6); + break; + } + } + sub_0804AA30(this, gUnk_080CD5D4); +} + +void sub_0802C7AC(Entity* this) { + if (this->previousActionFlag < 3 && !sub_0806F520(this)) { + this->previousActionFlag = 0; + this->field_0xf = 1; + this->height.HALF.HI = 0; + if (this->field_0x82.HALF.LO != 2) { + this->nonPlanarMovement = this->field_0x82.HALF.LO ? 0x200 : 0x80; + } + this->field_0x20 = 0x18000; + this->field_0x82.HALF.HI = 0; + this->field_0x80.HALF.HI = 0; + } else { + this->height.HALF.HI = -1; + gUnk_080CD600[this->previousActionFlag](this); + if (this->actionDelay != 0) { + GetNextFrame(this); + } + } +} + +void sub_0802C820(Entity* this) { + this->previousActionFlag = 1; + this->field_0x1d = 60; +} + +void sub_0802C82C(Entity* this) { + sub_0806F4E8(this); +} + +void sub_0802C834(Entity* this) { + sub_0806F3E4(this); +} + +void sub_0802C83C(Entity* this) { + if (this->field_0x82.HALF.LO) { + if (--this->actionDelay == 0) { + this->action = 3; + switch (gPlayerEntity.animationState & 6) { + case 2: + this->x.HALF.HI -= 6; + break; + case 6: + this->x.HALF.HI += 6; + break; + } + sub_0802CBC4(this); + } else { + sub_0802CC18(this); + this->flags &= ~0x80; + this->damageType = 0x6e; + } + } else { + this->field_0x82.HALF.LO = 2; + this->actionDelay = 120; + InitializeAnimation(this, (this->direction >> 4) | 6); + this->flags &= ~0x80; + this->damageType = 0x6e; + } +} + +void nullsub_149(Entity* this) { + /* ... */ +} + +void sub_0802C8B8(Entity* this) { + this->action = 3; + sub_0802CBC4(this); +} + +void sub_0802C8C4(Entity* this) { + sub_0804A7D4(this); + this->spriteSettings.b.draw = 0; +} + +void sub_0802C8D8(Entity* this) { + this->action = 1; + this->actionDelay = 0x3c; + this->field_0xf = 0; + this->direction = (Random() & 0x18) | 4; + this->field_0x16 = 0; + this->field_0x1c = 0x12; + this->field_0x82.HALF.LO = 0; + this->field_0x82.HALF.HI = 0; + this->field_0x80.HALF.LO = 0; + this->field_0x80.HALF.HI = 0; + InitializeAnimation(this, this->direction >> 4); +} + +void sub_0802C91C(Entity* this) { + GetNextFrame(this); + ProcessMovement(this); + if (this->field_0x82.HALF.LO) { + if (this->collisions) { + sub_0800417E(this, this->collisions); + InitializeAnimation(this, (this->direction >> 4) | 2); + } + if (--this->actionDelay == 0) { + sub_0802CBC4(this); + } else { + if ((this->actionDelay & 0xf) == 8) { + CreateDustSmall(this); + } + sub_0802CC18(this); + } + } else { + if (this->collisions) { + sub_0800417E(this, this->collisions); + InitializeAnimation(this, this->direction >> 4); + } + if (--this->actionDelay == 0) { + this->actionDelay = 60; + this->direction = (this->direction + 8) & 0x1c; + InitializeAnimation(this, this->direction >> 4); + } + } +} + +void sub_0802C9B8(Entity* this) { + gUnk_080CD618[this->previousActionFlag](this); +} + +void sub_0802C9D0(Entity* this) { + this->previousActionFlag = 1; + this->flags &= ~0x80; + this->spritePriority.b1 = 0; + this->field_0x82.HALF.HI = 1; + sub_0802CC18(this); + InitializeAnimation(this, (this->direction >> 4) | 6); + GetNextFrame(this); +} + +void sub_0802CA10(Entity* this) { + if (gPlayerState.heldObject != 5) { + if (--this->actionDelay == 0) { + sub_0802CBC4(this); + } else { + sub_0802CC18(this); + GetNextFrame(this); + } + } else { + this->field_0x82.HALF.HI = 2; + this->direction = (((gPlayerEntity.animationState) << 2) | 4) & 0x1c; + sub_0802CC18(this); + GetNextFrame(this); + } +} + +void sub_0802CA6C(Entity* this) { + if (--this->actionDelay == 0) { + sub_0802CBC4(this); + } else { + sub_0802CC18(this); + GetNextFrame(this); + } +} + +void sub_0802CA94(Entity* this) { + this->action = 3; + this->flags &= ~0x80; + this->field_0xf = 1; + this->spritePriority.b1 = 1; + this->field_0x20 = 0x18000; + this->nonPlanarMovement = 0; + this->field_0x82.HALF.HI = 0; + this->field_0x80.HALF.HI = 0; + this->direction = ((gPlayerEntity.animationState << 2) | 4) & 0x1c; + InitializeAnimation(this, (this->direction >> 4) | 6); +} + +void sub_0802CAF8(Entity* this) { + if (--this->actionDelay == 0) { + sub_0802CBC4(this); + } else { + if (this->field_0x80.HALF.HI && sub_080044EC(this, 0x2800) == 1) { + EnqueueSFX(0x104); + } + sub_0802CC18(this); + sub_08078930(this); + if (this->field_0xf && this->height.HALF.HI == 0) { + this->field_0xf = 0; + this->flags = this->flags | 0x80; + this->damageType = 0x6e; + } + GetNextFrame(this); + } +} + +void nullsub_150(Entity* this) { + /* ... */ +} + +void sub_0802CB68(Entity* this) { + this->action = 1; + this->previousActionFlag = 0; + this->direction = Random() & 0x18; + this->direction |= 4; + this->flags |= 0x80; + if (this->field_0x82.HALF.LO) { + this->actionDelay = 200; + this->nonPlanarMovement = 0x200; + InitializeAnimation(this, (this->direction >> 4) | 2); + } else { + this->actionDelay = 0x3c; + this->nonPlanarMovement = 0x80; + InitializeAnimation(this, this->direction >> 4); + } +} + +void sub_0802CBC4(Entity* this) { + Entity* ent; + + this->action = 4; + this->spriteSettings.b.draw = 0; + this->flags &= ~0x80; + this->currentHealth = 0; + if (this->field_0x82.HALF.HI) { + sub_08079184(); + } + sub_08078954(this); + + ent = CreateObjectWithParent(this, 0x20, 0, 0); + if (ent) { + ent->collisionLayer = this->collisionLayer; + } +} + +void sub_0802CC18(Entity* this) { + if (--this->field_0x80.HALF.LO == 0) { + this->field_0x80.HALF.LO = 28; + EnqueueSFX(0x14d); + } +} + +// clang-format off +void (*const gUnk_080CD5D4[])(Entity*) = { + sub_0802C670, + sub_0802C688, + sub_08001324, + sub_0802C8C4, + sub_08001242, + sub_0802C7AC, +}; + +void (*const gUnk_080CD5EC[])(Entity*) = { + sub_0802C8D8, + sub_0802C91C, + sub_0802C9B8, + sub_0802CAF8, + nullsub_150, +}; + +void (*const gUnk_080CD600[])(Entity*) = { + sub_0802C820, + sub_0802C82C, + sub_0802C834, + sub_0802C83C, + nullsub_149, + sub_0802C8B8, +}; + +void (*const gUnk_080CD618[])(Entity*) = { + sub_0802C9D0, + sub_0802CA10, + sub_0802CA6C, + sub_0802CA94, +}; +// clang-format on diff --git a/src/enemy/bombPeahat.c b/src/enemy/bombPeahat.c index 90ae7830..98f54841 100644 --- a/src/enemy/bombPeahat.c +++ b/src/enemy/bombPeahat.c @@ -3,24 +3,43 @@ #include "functions.h" #include "player.h" +extern void sub_08078954(Entity*); +extern u32 sub_0800442E(Entity*); +extern void sub_08078930(Entity*); extern s32 sub_080012DC(Entity*); extern u32 GetNextFunction(Entity*); -extern void sub_0802AD54(Entity*); -extern void sub_0802B048(Entity*); extern void sub_0806F4E8(Entity*); +extern Entity* sub_08049DF4(u32); +extern void sub_08079BD8(Entity*); +extern u32 GetTileTypeByEntity(Entity*); + +void sub_0802AD1C(Entity*, u32); +void sub_0802AD54(Entity*); +void sub_0802B048(Entity*); +void sub_0802ACDC(Entity*, u32); +void sub_0802ADDC(Entity*); +void sub_0802AC40(Entity*); +bool32 sub_0802B234(Entity*); +Entity* sub_0802B250(Entity*); +void sub_0802B264(Entity*); extern void (*const gUnk_080012C8[])(Entity*); + extern void (*const gUnk_080CD0F0[])(Entity*); +extern void (*const gUnk_080CD108[])(Entity*); extern void (*const gUnk_080CD120[])(Entity*); extern void (*const gUnk_080CD134[])(Entity*); -extern void (*const gUnk_080CD108[])(Entity*); extern void (*const gUnk_080CD140[])(Entity*); +extern void (*const gUnk_080CD158[])(Entity*); + +extern const BoundingBox gUnk_080CD16C; +extern const BoundingBox gUnk_080CD174; +extern const BoundingBox gUnk_080CD17C; void BombPeahat(Entity* this) { s32 iVar1; - u32 uVar2; - if (((this->entityType).form == 2) && (iVar1 = sub_080012DC(this), iVar1)) { + if ((this->entityType.form == 2) && (iVar1 = sub_080012DC(this), iVar1)) { gUnk_080012C8[iVar1](this); } else { gUnk_080CD0F0[GetNextFunction(this)](this); @@ -32,54 +51,618 @@ void sub_0802A84C(Entity* this) { default: gUnk_080CD108[this->action](this); sub_0802AD54(this); - return; + break; case 2: gUnk_080CD120[this->action](this); sub_0802B048(this); - return; + break; case 3: gUnk_080CD134[this->action](this); + break; } } -void sub_0802A8AC(Entity *this) { +void sub_0802A8AC(Entity* this) { this->field_0x80.HALF.HI = 0; if (this->entityType.form < 2) { InitializeAnimation(this, 0); } } -void sub_0802A8C8(Entity* this) -{ - gUnk_080CD140[this->previousActionFlag](this); +void sub_0802A8C8(Entity* this) { + gUnk_080CD140[this->previousActionFlag](this); } -void sub_0802A8E0(Entity *this) -{ - this->previousActionFlag = 1; - this->field_0x1d = 0x3c; +void sub_0802A8E0(Entity* this) { + this->previousActionFlag = 1; + this->field_0x1d = 60; } -void sub_0802A8EC(Entity *this) -{ +void sub_0802A8EC(Entity* this) { sub_0806F4E8(this); } -void sub_0802A8F4(Entity *this) -{ +void sub_0802A8F4(Entity* this) { sub_0806F3E4(this); } -void sub_0802A8FC(Entity *this) -{ - if ((gPlayerState.field_0x1c & 0xf) == 0) { - this->currentHealth = gPlayerState.field_0x1c & 0xf; - } +void sub_0802A8FC(Entity* this) { + if ((gPlayerState.field_0x1c & 0xf) == 0) { + this->currentHealth = gPlayerState.field_0x1c & 0xf; + } } -void nullsub_143(Entity* this){} - -void sub_0802A91C(Entity *this) -{ - this->currentHealth = 0; +void nullsub_143(Entity* this) { + /* ... */ } + +void sub_0802A91C(Entity* this) { + this->currentHealth = 0; +} + +void sub_0802A924(Entity* this) { + this->action = 1; + this->previousActionFlag = 0; + this->actionDelay = 0; + this->field_0xf = 0; + this->boundingBox = (BoundingBox*)&gUnk_080CD16C; + this->height.HALF.HI = -0x30; + this->field_0x80.HALF.LO = Random() & 1; + this->field_0x82.HWORD = 0; + this->field_0x7a.HALF.HI = 0; + this->field_0x80.HALF.HI = 0; + this->field_0x7a.HALF.LO = 0; + this->field_0x78.HALF.LO = 0; + this->field_0x78.HALF.HI = 0; + this->collisionLayer = 3; + this->spriteOrientation.flipY = 1; + this->spriteRendering.b3 = 1; + this->spritePriority.b0 = 1; + InitializeAnimation(this, this->entityType.form + 1); +} + +void sub_0802A9A8(Entity* this) { + if (this->field_0xf) { + this->field_0xf--; + } else { + if (this->actionDelay) { + if (--this->actionDelay == 0) { + this->action = 2; + this->previousActionFlag = 0; + this->actionDelay = 0x40; + sub_0802ACDC(this, 8); + } + } else { + if (gRoomControls.unk2 != 0) { + return; + } + this->spriteSettings.b.draw = 1; + this->field_0x82.HWORD = 1; + if (this->field_0x80.HALF.LO) { + this->x.HALF.HI = gRoomControls.roomScrollX - 0x10; + this->direction = 8; + } else { + this->x.HALF.HI = gRoomControls.roomScrollX + 0x100; + this->direction = 0x18; + } + this->y.HALF.HI = gRoomControls.roomScrollY + 0x40; + this->actionDelay = 0x80; + sub_0802ADDC(this); + } + sub_0802AC40(this); + } +} + +void sub_0802AA40(Entity* this) { + sub_0802AC40(this); + if (--this->field_0xf == 0) { + sub_0802ACDC(this, 8); + this->field_0x7a.HALF.HI++; + } + if (this->actionDelay) { + this->actionDelay--; + } else { + Entity* ent = this->attachedEntity; + if (ent) { + if (ent->next == NULL) { + this->attachedEntity = NULL; + } else { + u32 direction = DirectionRound(this->field_0x80.HALF.LO * 0x10 + 0x18); + + if (0x20 < this->field_0x7a.HALF.HI) { + this->direction = direction; + } + if (this->direction == direction) { + this->action = 3; + this->nonPlanarMovement = 0x180; + this->field_0x7a.HALF.HI = 0; + ent->field_0x80.HALF.LO = 1; + ent->actionDelay = 0x96; + } + } + } + } +} + +void sub_0802AAC0(Entity* this) { + sub_0802AC40(this); + if (--this->field_0xf == 0) { + sub_0802AD1C(this, 4); + } + + if (this->field_0x80.HALF.HI) { + Entity* ent = this->attachedEntity; + if (ent == NULL) { + this->field_0x80.HALF.HI = 0; + } else if (ent->next == NULL) { + this->field_0x80.HALF.HI = 0; + this->attachedEntity = NULL; + } else if (ent->actionDelay == 0 && ent->field_0xf < 0x51) { + this->field_0x80.HALF.HI = 0; + } + } else { + this->action = 4; + this->actionDelay = 0xc0; + this->field_0xf = 4; + this->field_0x80.HALF.LO ^= 1; + this->field_0x78.HALF.LO = 0; + this->field_0x78.HALF.HI = 4; + this->direction = 0xff; + InitializeAnimation(this, 0); + } +} + +void sub_0802AB40(Entity* this) { + sub_0802AC40(this); + switch (this->field_0x78.HALF.LO) { + case 0: + if (this->height.HALF.HI) { + if (--this->field_0x78.HALF.HI == 0) { + this->field_0x78.HALF.HI = 4; + this->height.HALF.HI++; + } + } else { + this->field_0x78.HALF.LO = 1; + this->field_0x78.HALF.HI = 0x30; + this->direction = sub_08049F84(this, 0); + } + break; + case 1: + if (--this->field_0x78.HALF.HI == 0) { + this->field_0x78.HALF.LO = 2; + this->field_0x78.HALF.HI = 4; + } else if ((this->field_0x78.HALF.HI & 7) == 0) { + this->direction = sub_08049F84(this, 0); + } + break; + case 2: + if (-0x30 < this->height.HALF.HI) { + if (--this->field_0x78.HALF.HI == 0) { + this->field_0x78.HALF.HI = 4; + this->height.HALF.HI--; + sub_0802ACDC(this, 4); + } + } else { + this->action = 5; + this->nonPlanarMovement = 0; + InitializeAnimation(this, this->entityType.form + 1); + } + break; + } +} + +void sub_0802AC08(Entity* this) { + if (this->frames.all & 0x80) { + this->action = 2; + this->previousActionFlag = 0; + this->actionDelay = 0x40; + this->nonPlanarMovement = 0xc0; + sub_0802ACDC(this, 8); + sub_0802ADDC(this); + } + GetNextFrame(this); +} + +void sub_0802AC40(Entity* this) { + GetNextFrame(this); + sub_0806F69C(this); + if (this->field_0x7a.HALF.LO) { + if (sub_0802B234(this) == 0) { + this->field_0x7a.HALF.LO = 0; + this->spritePriority.b1 = 0; + } else { + if (this->height.HALF.HI == 0) { + if (this->spritePriority.b1 != 1) { + this->spritePriority.b1 = 1; + } + } else { + if (this->spritePriority.b1 != 3) { + this->spritePriority.b1 = 3; + } + } + } + } else { + if (sub_0802B234(this)) { + this->field_0x7a.HALF.LO = 1; + if (this->height.HALF.HI == 0) { + this->spritePriority.b1 = 1; + } else { + this->spritePriority.b1 = 3; + } + } + } +} + +void sub_0802ACDC(Entity* this, u32 param_2) { + u32 x; + if (this->field_0x80.HALF.LO) { + x = sub_080045B4(this, gRoomControls.roomScrollX + 0x20, gRoomControls.roomScrollY + 0x60); + } else { + x = sub_080045B4(this, gRoomControls.roomScrollX + 0xd0, gRoomControls.roomScrollY + 0x60); + } + sub_08004596(this, x); + this->field_0xf = param_2; +} + +void sub_0802AD1C(Entity* this, u32 param_2) { + Entity* ent = sub_08049DF4(1); + if (ent) { + u32 y = ent->y.HALF.HI - 0x18; + u32 x = ent->x.HALF.HI; + sub_08004596(this, sub_080045B4(this, x, y)); + this->field_0xf = param_2; + } else { + sub_0802ACDC(this, param_2); + } +} + +void sub_0802AD54(Entity* this) { + if (this->field_0x82.HWORD != 0) { + if (gRoomControls.unk2 != 0) { + this->spriteSettings.b.draw = 0; + DeleteEntity(this); + return; + } + if (gRoomControls.roomOriginY > this->y.HALF.HI || + (gRoomControls.roomOriginY + gRoomControls.height + 0x20) < this->y.HALF.HI) { + this->spriteSettings.b.draw = 0; + } else { + this->spriteSettings.b.draw = 1; + } + } + if (this->field_0x80.HALF.HI) { + if (this->attachedEntity == NULL || this->attachedEntity->next == NULL) { + this->action = 4; + this->actionDelay = 0xc0; + this->field_0xf = 4; + this->field_0x80.HALF.LO ^= 1; + } + } +} + +void sub_0802ADDC(Entity* this) { + Entity* ent = CreateEnemy(0x1b, this->entityType.form + 2); + if (ent != NULL) { + ent->entityType.parameter = !!sub_0802B234(this); + ent->parent = this; + this->attachedEntity = ent; + CopyPosition(this, ent); + this->field_0x80.HALF.HI = 1; + if (this->entityType.form == 0) { + this->field_0x7a.HALF.LO++; + } + } +} + +void sub_0802AE24(Entity* this) { + this->action = 1; + this->actionDelay = 0xf0; + this->field_0x20 = 0x8000; + this->boundingBox = (BoundingBox*)&gUnk_080CD174; + this->field_0x3c = 3; + this->field_0x16 = 0; + this->field_0x1c = 2; + this->field_0x80.HALF.HI = 0; + this->field_0x7a.HALF.HI = 1; + InitializeAnimation(this, 3); +} + +void sub_0802AE68(Entity* this) { + Entity* ent = sub_0802B250(this); + if (ent == 0) { + this->action = 3; + this->field_0x80.HALF.LO = 1; + sub_0802B264(this); + } else { + if (ent->field_0x80.HALF.HI) { + CopyPosition(ent, this); + this->spriteSettings.b.draw = 0; + } else { + this->action = 3; + this->field_0x80.HALF.LO = 1; + sub_0802B264(this); + } + } +} + +void sub_0802AEBC(Entity* this) { + gUnk_080CD158[this->previousActionFlag](this); +} + +void sub_0802AED4(Entity* this) { + GetNextFrame(this); + if (this->field_0x80.HALF.HI < 2) { + if (sub_080044EC(this, 0x2800) == 1) { + this->field_0x80.HALF.HI++; + } + } else { + if (!sub_0800442E(this)) { + sub_08078930(this); + } + } + if (this->entityType.parameter != 0 && this->field_0x80.HALF.HI) { + this->actionDelay = 0; + this->field_0xf = 1; + } +} + +void sub_0802AF28(Entity* this) { + this->previousActionFlag = 1; + sub_08079BD8(this); + this->spritePriority.b1 = 2; + GetNextFrame(this); +} + +void sub_0802AF50(Entity* this) { + GetNextFrame(this); +} + +void sub_0802AF58(Entity* this) { + GetNextFrame(this); + this->spritePriority.b1 = 3; +} + +void sub_0802AF74(Entity* this) { + this->action = 3; + this->previousActionFlag = 0; + if (this->actionDelay > 60) { + this->actionDelay = 60; + } + GetNextFrame(this); +} + +void sub_0802AF94(Entity* this) { + DeleteEntity(this); +} + +void sub_0802AF9C(Entity* this) { + GetNextFrame(this); + if (--this->actionDelay == 0) { + if (this->parent->field_0x7a.HALF.LO) { + this->parent->field_0x7a.HALF.LO--; + } + DeleteEntity(this); + } +} + +#if NON_MATCHING +void sub_0802AFC8(Entity* this) { + u32 flag = 8; + if (this->field_0xf < 0x29) { + u32 tmp; + + flag = 4; + if (this->field_0x82.HWORD & 0x8000) { + this->field_0x82.HWORD -= 0x10; + } else { + this->field_0x82.HWORD += 0x10; + } + if (0x7f < (this->field_0x82.HWORD & 0xf0) - 1) { + this->field_0x82.HWORD ^= 0x8000; + } + + tmp = 0x130 - (this->field_0x82.HWORD & 0xf0); + sub_0805EC9C(this, tmp, tmp, 0); + } + + if (this->field_0xf & flag) { + this->palette.b.b0 = 0; + } else { + this->palette.b.b0 = this->palette.b.b4; + } +} +#else +NAKED +void sub_0802AFC8(Entity* this) { + asm(".include \"asm/non_matching/bombPeahat/sub_0802AFC8.inc\""); +} +#endif + +void sub_0802B048(Entity* this) { + Entity* ent; + u32 action; + + if (this->field_0x7a.HALF.HI) { + if (gRoomControls.roomOriginY > this->y.HALF.HI || + (gRoomControls.roomOriginY + gRoomControls.height + 0x20) < this->y.HALF.HI) { + this->flags &= ~0x80; + } else { + this->flags |= 0x80; + } + } + + ent = this->parent; + if (ent && this->action == 1) { + this->spriteRendering.b3 = ent->spriteRendering.b3; + this->spritePriority.b0 = ent->spritePriority.b0; + this->spriteOrientation.flipY = ent->spriteOrientation.flipY; + } + + action = this->action; + if (action != 4 && this->field_0x80.HALF.LO) { + if (this->actionDelay) { + if (--this->actionDelay == 0) { + this->field_0xf = 0x50; + this->field_0x82.HWORD = 0; + this->spriteRendering.b0 = 3; + sub_0805EC9C(this, 0x100, 0x100, 0); + } + } else { + if (this->field_0xf) { + if (--this->field_0xf == 0) { + if (action == 2 && this->previousActionFlag == 1) { + gPlayerState.heldObject = 0; + } + sub_0805EC60(this); + this->action = 4; + this->boundingBox = (BoundingBox*)&gUnk_080CD17C; + this->actionDelay = 0xf; + this->spriteSettings.b.draw = 0; + this->flags |= 0x80; + this->field_0x7a.HALF.HI = 0; + sub_08078954(this); + if (this->parent->next) { + this->parent->field_0x80.HALF.HI = 0; + } + ent = CreateObjectWithParent(this, 0x20, 0, 0); + if (ent != NULL) { + this->collisionLayer = 1; + } else { + DeleteEntity(this); + } + } else { + sub_0802AFC8(this); + } + } + } + } +} + +void sub_0802B1A0(Entity* this) { + this->action = 1; + this->actionDelay = 0; + this->field_0xf = 0x4f; + this->field_0x80.HALF.HI = 1; + InitializeAnimation(this, 0); +} + +void sub_0802B1BC(Entity* this) { + Entity* ent; + + if (this->actionDelay) { + this->actionDelay--; + } + + ent = sub_0802B250(this); + if (ent == 0) { + this->action = 2; + sub_0802B264(this); + } else { + if (ent->field_0x80.HALF.HI) { + CopyPosition(ent, this); + } else { + this->action = 2; + sub_0802B264(this); + } + } +} + +void sub_0802B204(Entity* this) { + if (sub_080044EC(this, 0x2800) == 1) { + Entity* ent = CreateEnemy(0x22, 1); + if (ent) { + CopyPosition(this, ent); + ent->parent = this->parent; + } + DeleteThisEntity(); + } +} + +bool32 sub_0802B234(Entity* this) { + bool32 ret = FALSE; + if (GetTileTypeByEntity(this) - 0x1c4 > 1) + ret = TRUE; + return ret; +} + +Entity* sub_0802B250(Entity* this) { + Entity* parent = this->parent; + if (parent && parent->next == NULL) { + parent = NULL; + } + return parent; +} + +void sub_0802B264(Entity* this) { + this->spriteSettings.b.draw = 1; + if (sub_0802B234(this)) { + this->spritePriority.b1 = 3; + } else { + + this->spritePriority.b1 = 0; + } + GetNextFrame(this); +} + +// clang-format off +void (*const gUnk_080CD0F0[])(Entity*) = { + sub_0802A84C, + sub_0802A8AC, + sub_08001324, + sub_0804A7D4, + sub_08001242, + sub_0802A8C8, +}; + +void (*const gUnk_080CD108[])(Entity*) = { + sub_0802A924, + sub_0802A9A8, + sub_0802AA40, + sub_0802AAC0, + sub_0802AB40, + sub_0802AC08, +}; + +void (*const gUnk_080CD120[])(Entity*) = { + sub_0802AE24, + sub_0802AE68, + sub_0802AEBC, + sub_0802AED4, + sub_0802AF9C, +}; + +void (*const gUnk_080CD134[])(Entity*) = { + sub_0802B1A0, + sub_0802B1BC, + sub_0802B204, +}; + +void (*const gUnk_080CD140[])(Entity*) = { + sub_0802A8E0, + sub_0802A8EC, + sub_0802A8F4, + sub_0802A8FC, + nullsub_143, + sub_0802A91C, +}; + +void (*const gUnk_080CD158[])(Entity*) = { + sub_0802AF28, + sub_0802AF50, + sub_0802AF58, + sub_0802AF74, + sub_0802AF94, +}; + +const BoundingBox gUnk_080CD16C = { + 0x00, 0xFB, 0x05, 0x03, 0x03, 0x05, 0x06, 0x06, +}; + +const BoundingBox gUnk_080CD174 = { + 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x04, 0x04, +}; + +const BoundingBox gUnk_080CD17C = { + 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x16, 0x16, +}; +// clang-format on \ No newline at end of file diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c new file mode 100644 index 00000000..924ace96 --- /dev/null +++ b/src/enemy/businessScrub.c @@ -0,0 +1,608 @@ +#include "enemy.h" +#include "entity.h" +#include "flags.h" +#include "functions.h" +#include "textbox.h" + +extern void sub_0801D040(Entity*, u32); +extern Entity* sub_08049DF4(u32); +extern bool32 sub_08056338(void); +extern void UnloadOBJPalette(Entity*); + +bool32 sub_0802915C(Entity*); +bool32 sub_080291DC(Entity*); +void sub_0802922C(Entity*); +void sub_08028E9C(Entity*); +u32 sub_080001DA(u32, u32); +void sub_08028FFC(Entity*); +void sub_0802925C(Entity*); +void sub_080290E0(Entity*, u32); +bool32 sub_08028F98(Entity*, u32); +void sub_08029078(Entity*); +bool32 sub_08028FDC(Entity*); +void sub_080290FC(Entity*); +void sub_08028EDC(Entity*); + +extern const struct SalesOffering gUnk_080CC954[]; +extern const u8 gUnk_080CC9C0[]; +extern void (*const gUnk_080CC9C8[])(Entity*); +extern void (*const gUnk_080CC9E0[])(Entity*); +extern const u8 gUnk_080CCA04[]; + +struct SalesOffering { + u8 field_0x0; + u8 field_0x1; + u16 price; + u16 field_0x4; + u16 field_0x6; + u8 field_0x8; + u8 field_0x9; + u16 field_0xa; +}; + +void BusinessScrub(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CC9C8); +} + +void sub_0802891C(Entity* this) { + gUnk_080CC9E0[this->action](this); +} + +void sub_08028934(Entity* this) { + Entity* pEVar1; + + if (this->damageType == 1 && (this->bitfield & 0x7f) == 0x42) { + this->action = 3; + this->previousActionFlag = 0; + this->actionDelay = 0x28; + this->flags &= ~0x80; + sub_080290E0(this, 4); + pEVar1 = CreateFx(this, 3, 0); + if (pEVar1 != NULL) { + pEVar1->height.HALF.HI -= 8; + } + EnqueueSFX(0x1bb); + } +} + +void nullsub_140(Entity* this) { + /* ... */ +} + +void sub_08028994(Entity* this) { + this->field_0xf = 0; + this->field_0x78.HWORD = this->x.HALF.HI; + this->field_0x7a.HWORD = this->y.HALF.HI; + this->animationState = 0; + this->direction = 0x10; + sub_08028E9C(this); + if ((*(u8*)this->field_0x7c.WORD & 1) || CheckFlags(this->field_0x86.HWORD)) { + this->action = 4; + this->actionDelay = 0x78; + this->spritePriority.b1 = 1; + sub_0802925C(this); + sub_080290E0(this, 0); + } else { + this->actionDelay = 0; + this->field_0x76.HWORD = COORD_TO_TILE(this); + this->field_0x74.HWORD = sub_080001DA(this->field_0x76.HWORD, this->collisionLayer); + this->field_0x40 = 0x41; + sub_08028FFC(this); + } +} + +void sub_08028A48(Entity* this) { + if (this->actionDelay) { + this->actionDelay--; + } else if (sub_08028F98(this, 0)) { + sub_08029078(this); + this->previousActionFlag = 0; + this->field_0xf = 1; + } +} + +void sub_08028A74(Entity* this) { + u32 unk; + + GetNextFrame(this); + switch (this->previousActionFlag) { + case 0: + unk = 1; + if (this->frames.all & 0x80) { + this->previousActionFlag = 1; + this->actionDelay = 0x3c; + this->field_0xf = 0x10; + sub_08028FDC(this); + sub_080290E0(this, 1); + } + break; + case 1: + unk = 1; + if (--this->actionDelay == 0) { + this->previousActionFlag = 2; + this->actionDelay = 0x20; + this->field_0xf = 0; + sub_08028FDC(this); + sub_080290E0(this, 2); + } else if (--this->field_0xf == 0) { + if (sub_08028FDC(this)) { + sub_080290E0(this, 1); + } + this->field_0xf = 0x10; + } + break; + case 2: + unk = 1; + sub_080290FC(this); + if (this->frames.all & 1) { + Entity* ent = sub_0804A98C(this, 4, 0); + if (ent != NULL) { + ent->parent = this; + ent->direction = this->direction; + this->frames.all &= ~1; + this->previousActionFlag = 3; + } + } + break; + case 3: + unk = 2; + if (this->frames.all & 0x80) { + this->previousActionFlag = 4; + this->actionDelay = 0x50; + sub_080290E0(this, 1); + } + break; + case 4: + unk = 2; + if (--this->actionDelay == 0) { + if (sub_08028F98(this, 0)) { + this->previousActionFlag = 1; + this->actionDelay = 0x3c; + this->field_0xf = 0x10; + sub_08028FDC(this); + } else { + sub_08028FFC(this); + this->previousActionFlag = 0; + this->actionDelay = 0x50; + this->field_0xf = 0; + } + return; + } + break; + } + + if (!sub_08028F98(this, unk)) { + sub_08028FFC(this); + this->previousActionFlag = 0; + this->actionDelay = 0x50; + this->field_0xf = 0; + } +} + +void sub_08028BC4(Entity* this) { + Entity* iVar1; + + switch (this->previousActionFlag) { + case 0: + if (this->actionDelay == 0) { + if (this->frames.all & 0x80) { + this->previousActionFlag = 1; + sub_08028FDC(this); + sub_080290E0(this, 5); + this->spritePriority.b1 = 1; + } + } else { + this->actionDelay--; + } + break; + case 1: + if (this->frames.all & 0x80) { + this->action = 4; + this->previousActionFlag = 0; + this->actionDelay = 0x1e; + this->field_0xf = 5; + sub_080290E0(this, 0); + iVar1 = sub_0804A9FC(this, 0x1c); + if (iVar1 != NULL) { + iVar1->spritePriority.b0 = 3; + iVar1->height.HALF.HI -= 12; + sub_0805E3A0(iVar1, 2); + } + SetFlag(this->field_0x86.HWORD); + sub_0802925C(this); + } + break; + } + + GetNextFrame(this); + sub_0800445C(this); +} + +extern void sub_0804AA1C(Entity*); +void sub_08028F0C(Entity*); + +void sub_08028C84(Entity* this) { + if (--this->actionDelay == 0) { + this->actionDelay = 0x30; + if (this->field_0xf) { + if (--this->field_0xf == 0) { + sub_0804AA1C(this); + } + } else if (sub_08028FDC(this) || this->field_0x80.HALF.LO) { + this->field_0x80.HALF.LO = 0; + sub_080290E0(this, 0); + } + } + GetNextFrame(this); + sub_0800445C(this); + sub_08028F0C(this); +} + +void sub_08028CE8(Entity* this) { + struct SalesOffering* offer = (struct SalesOffering*)this->field_0x7c.WORD; + u32 subtype; + + if ((gTextBox.doTextBox & 0x7f) == 0 && sub_0802915C(this) && !sub_08056338()) { + if (offer->price <= gUnk_02002A40.stats.rupees) { + if (sub_080291DC(this)) { + /* Bag full. */ + TextboxNoOverlapFollow(0x2904); + sub_08078A90(0); + } else { + ModRupees(-offer->price); + switch (offer->field_0x0 >> 2) { + case 0: + subtype = offer->field_0x9; + if (subtype == 0xff) { + subtype = gUnk_080CC9C0[Random() & 7]; + } + + CreateItemEntity(offer->field_0x8, subtype, 0); + + this->action = 6; + this->actionDelay = 4; + this->field_0x80.HALF.HI = 0; + sub_080290E0(this, 3); + SetLocalFlag(0x87); + return; + case 1: + CreateItemEntity(offer->field_0x8, offer->field_0x9, 0); + this->actionDelay = 4; + sub_0802922C(this); + return; + case 2: + CreateItemEntity(offer->field_0x8, offer->field_0x9, 0); + this->actionDelay = 8; + sub_0802922C(this); + return; + } + } + } else { + /* Not enough money. */ + TextboxNoOverlapFollow(0x2903); + sub_08078A90(0); + } + } + + sub_0800445C(this); + this->action = 4; + this->actionDelay = 0x30; + sub_080290E0(this, 0); +} + +void sub_08028DE8(Entity* this) { + if (gPlayerEntity.action == 8) { + if (this->field_0x80.HALF.HI == 0) { + sub_08078A90(1); + this->field_0x80.HALF.HI = 1; + } + } else { + TextboxNoOverlapFollow(0x2902); + this->action = 4; + this->field_0x80.HALF.HI = 0; + this->actionDelay = 1; + sub_08028EDC(this); + sub_08078A90(0); + sub_0800445C(this); + GetNextFrame(this); + } +} + +void sub_08028E40(Entity* this) { + if ((gTextBox.doTextBox & 0x7f) == 0) { + struct SalesOffering* offer = (struct SalesOffering*)this->field_0x7c.WORD; + + this->action = 4; + this->previousActionFlag = gTextBox.doTextBox & 0x7f; + this->actionDelay = 1; + if (CheckLocalFlag(offer->field_0xa) == 0) { + SetLocalFlag(offer->field_0xa); + } + sub_08078A90(0); + } + sub_0800445C(this); + GetNextFrame(this); +} + +void sub_08028E84(Entity* this) { + if (UpdateFuseInteraction()) { + this->action = 4; + this->actionDelay = 1; + } +} + +bool32 sub_08029198(const struct SalesOffering*); + +void sub_08028E9C(Entity* this) { + const struct SalesOffering* offer = &gUnk_080CC954[this->entityType.form]; + if (sub_08029198(offer) && (offer->field_0x0 & 2)) { + offer = &gUnk_080CC954[offer->field_0xa]; + } + this->field_0x7c.WORD = (u32)offer; + this->field_0x80.HALF.LO = 0; +} + +void sub_08028EDC(Entity* this) { + const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD; + if (sub_08029198(offer) && (offer->field_0x0 & 2)) { + offer = &gUnk_080CC954[offer->field_0xa]; + this->field_0x7c.WORD = (u32)offer; + } +} + +void sub_08028F0C(Entity* this) { + if (this->interactType == 2) { + this->action = 8; + this->interactType = 0; + sub_0806F118(this); + } else if (this->interactType != 0) { + u16 dialog; + const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD; + + this->interactType = 0; + sub_0804AA1C(this); + this->direction = (GetAnimationState(this) << 3); + sub_080290E0(this, 3); + this->field_0x80.HALF.LO = 1; + this->actionDelay = 0x20; + this->field_0xf = 0; + if (sub_08029198(offer)) { + dialog = offer->field_0x6; + } else { + if ((offer->field_0x0 & 0xfc) != 0xc) { + this->action = 5; + } else { + this->action = 7; + } + dialog = offer->field_0x4; + sub_08078A90(1); + } + TextboxNoOverlapFollow(dialog); + gTextBox.field_0x10 = offer->price; + } +} + +bool32 sub_08028F98(Entity* this, u32 param_2) { + Entity* ent = sub_08049DF4(1); + if (ent == NULL || sub_080041A0(this, ent, 0x28, 0x28)) { + return FALSE; + } + + if (param_2 != 2) { + u32 distance = param_2 ? 0x58 : 0x50; + + if (!sub_080041A0(this, ent, distance, distance)) { + return FALSE; + } + } + + return TRUE; +} + +bool32 sub_08028FDC(Entity* this) { + u32 direction = DirectionRoundUp(sub_08049F84(this, 1)); + if (direction == this->direction) { + return FALSE; + } else { + this->direction = direction; + return TRUE; + } +} + +void sub_08028FFC(Entity* this) { + this->action = 1; + this->flags &= ~0x80; + this->spritePriority.b1 = 0; + sub_080AE068(this); + UnloadOBJPalette(this); + this->spriteVramOffset = 0xe8; + this->palette.b.b0 = 2; + this->palette.b.b4 = 2; + this->spriteIndex = 0xa7; + this->x.HALF.HI = this->field_0x78.HWORD; + this->y.HALF.HI = this->field_0x7a.HWORD; + InitializeAnimation(this, 0); + SetTile(0x4022, this->field_0x76.HWORD, this->collisionLayer); +} + +void sub_08029078(Entity* this) { + this->action = 2; + this->flags = this->flags | 0x80; + this->spritePriority.b1 = 1; + if (LoadFixedGFX(this, 0x72) == 0) { + DeleteEntity(this); + } else { + sub_0801D040(this, 0x6e); + this->spriteIndex = 0xd0; + sub_08028FDC(this); + sub_080290E0(this, 1); + SetTile(this->field_0x74.HWORD, this->field_0x76.HWORD, this->collisionLayer); + } +} + +void sub_080290E0(Entity* this, u32 param_2) { + InitializeAnimation(this, this->direction >> 3 | gUnk_080CCA04[param_2]); +} + +void sub_080290FC(Entity* this) { + if (this->actionDelay != 0) { + if (--this->actionDelay < 0x10 && (this->actionDelay & 1) == 0) { + s32 sVar3 = (this->direction & 0x10) ? -1 : 1; + if ((this->direction & 8)) { + this->x.HALF.HI += (this->actionDelay & 8) ? -sVar3 : sVar3; + } else { + this->y.HALF.HI += (this->actionDelay & 8) ? sVar3 : -sVar3; + } + } + } +} + +bool32 sub_0802915C(Entity* this) { + const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD; + + switch (offer->field_0x8) { + case 0x44: + if (GetInventoryValue(0x44) == 0) + return TRUE; + break; + case 0x1c: + if (CheckGlobalFlag(0x5a) == 0) + return TRUE; + break; + case 0x5c: + case 0x6c: + case 0x6f: + return TRUE; + } + return FALSE; +} + +bool32 sub_08029198(const struct SalesOffering* offer) { + u32 tmp; + + if ((offer->field_0x0 & 0xfc) != 0xc) { + switch (offer->field_0x8) { + case 0x1c: + tmp = CheckGlobalFlag(0x5a); + break; + case 0x9: + case 0x44: + tmp = GetInventoryValue(offer->field_0x8); + break; + default: + return 0; + } + } else { + tmp = CheckLocalFlag(offer->field_0xa); + } + + if (tmp == 0) { + return FALSE; + } + + return TRUE; +} + +bool32 sub_080291DC(Entity* this) { + const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD; + + switch (offer->field_0x8) { + case 0x6c: + if (gBombBagSizes[gUnk_02002A40.stats.bombBagType] <= gUnk_02002A40.stats.bombCount) + return TRUE; + break; + case 0x6f: + if (gQuiverSizes[gUnk_02002A40.stats.quiverType] <= gUnk_02002A40.stats.arrowCount) + return TRUE; + break; + } + + return FALSE; +} + +#if NON_MATCHING +void sub_0802922C(Entity* this) { + const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD; + + this->action = 6; + this->field_0x80.HALF.HI = 0; + + switch (offer->field_0x8) { + case 0x1c: + SetGlobalFlag(0x5a); + break; + } + + sub_080290E0(this, 3); +} +#else +NAKED +void sub_0802922C(Entity* this) { + asm(".include \"asm/non_matching/businessScrub/sub_0802925C.inc\""); +} +#endif + +void sub_0802925C(Entity* this) { + sub_08078784(this, sub_0801E99C(this)); +} + +void sub_08029270(Entity* this) { + if (this->action == 0) { + this->action++; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 0xe); + } else { + GetNextFrame(this); + } +} + +// clang-format off +const struct SalesOffering gUnk_080CC954[] = { + {0x06, 0x00, 0xffff, 0x290f, 0x2902, 0x09, 0xff, 0x0001}, + {0x04, 0x00, 0x001e, 0x290e, 0x2902, 0x6f, 0xff, 0xffff}, + {0x04, 0x00, 0x001e, 0x290b, 0x2902, 0x6c, 0xff, 0xffff}, + {0x08, 0x00, 0x0028, 0x290c, 0x2911, 0x44, 0xff, 0xffff}, + {0x00, 0x00, 0x0064, 0x290d, 0x2902, 0x5c, 0xff, 0xffff}, + {0x04, 0x00, 0x0014, 0x2910, 0x2911, 0x1c, 0xff, 0xffff}, + {0x0c, 0x00, 0xffff, 0x2912, 0x2913, 0xff, 0xff, 0x0046}, + {0x04, 0x00, 0x0064, 0x2913, 0x2902, 0x5c, 0x75, 0xffff}, + {0x00, 0x00, 0x00C8, 0x290d, 0x2902, 0x5c, 0xff, 0xffff}, +}; + +const u8 gUnk_080CC9C0[] = { + 0x6e, + 0x6f, + 0x70, + 0x71, + 0x72, + 0x73, + 0x74, + 0x75, + +}; + +void (*const gUnk_080CC9C8[])(Entity*) = { + sub_0802891C, + sub_08028934, + sub_08001324, + sub_0804A7D4, + sub_08001242, + nullsub_140, +}; + +void (*const gUnk_080CC9E0[])(Entity*) = { + sub_08028994, + sub_08028A48, + sub_08028A74, + sub_08028BC4, + sub_08028C84, + sub_08028CE8, + sub_08028DE8, + sub_08028E40, + sub_08028E84, +}; + +const u8 gUnk_080CCA04[] = { + 0, 4, 8, 12, 16, 20, +}; +// clang-format on diff --git a/src/enemy/chaser.c b/src/enemy/chaser.c new file mode 100644 index 00000000..a5f1f522 --- /dev/null +++ b/src/enemy/chaser.c @@ -0,0 +1,91 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern s32 sub_080012DC(Entity*); +extern u32 sub_0804A024(Entity*, u32, u32); +extern bool32 sub_080AF038(Entity*); + +extern void (*const gUnk_080012C8[])(Entity*); + +extern void (*const gUnk_080CD27C[])(Entity*); +extern void (*const gUnk_080CD298[])(Entity*); + +void Chaser(Entity* this) { + u32 idx = sub_080012DC(this); + if (idx) { + gUnk_080012C8[idx](this); + } else { + gUnk_080CD27C[GetNextFunction(this)](this); + } +} + +void sub_0802B518(Entity* this) { + gUnk_080CD298[this->action](this); +} + +void sub_0802B530(Entity* this) { + this->action = 1; + InitializeAnimation(this, 0); +} + +void sub_0802B540(Entity* this) { + if (this->actionDelay) { + this->actionDelay--; + } else { + u32 direction = sub_0804A024(this, 1, 0xc); + if (direction != 0xff) { + this->action = 2; + this->nonPlanarMovement = 0x40; + this->direction = direction; + } + } +} + +void sub_0802B56C(Entity* this) { + GetNextFrame(this); + if (this->bitfield & 0x80) { + this->nonPlanarMovement = 0x40; + } + + if (sub_080AF038(this)) { + if (this->animIndex != 1) { + InitializeAnimation(this, 1); + } + if (this->nonPlanarMovement < 0x220) { + this->nonPlanarMovement += 4; + } + } else { + this->action = 3; + InitializeAnimation(this, 2); + } +} + +void sub_0802B5C8(Entity *this) { + GetNextFrame(this); + if (this->frames.all & 0x80) { + this->action = 1; + this->actionDelay = 30; + InitializeAnimation(this,0); + } +} + + +// clang-format off +void (*const gUnk_080CD27C[])(Entity*) = { + sub_0802B518, + sub_0802B518, + sub_08001324, + sub_0804A7D4, + sub_08001242, + sub_0802B518, + sub_0802B518, +}; + +void (*const gUnk_080CD298[])(Entity*) = { + sub_0802B530, + sub_0802B540, + sub_0802B56C, + sub_0802B5C8, +}; +// clang-format on diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c new file mode 100644 index 00000000..c9916ab1 --- /dev/null +++ b/src/enemy/chuchuBoss.c @@ -0,0 +1,190 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern void sub_08078B48(void); + +void sub_08027870(Entity*); + +extern void (*const gUnk_080CC19C[])(Entity*); +extern void (*const gUnk_080CC1B0[])(Entity*); +extern const u8 gUnk_080CC1B8[]; +extern void (*const gUnk_080CC1C8[])(Entity*); +extern void (*const gUnk_080CC1DC[])(Entity*); +extern void (*const gUnk_080CC20C[])(Entity*); +extern const u8 gUnk_080CC234[]; +extern const u8 gUnk_080CC24F[]; +extern void (*const gUnk_080CC258[])(Entity*); +extern void (*const gUnk_080CC264[])(Entity*); +extern void (*const gUnk_080CC26C[])(Entity*); +extern const u8 gUnk_080CC278[]; +extern const u16 gUnk_080CC27C[]; +extern const u16 gUnk_080CC29C[]; +extern const u16 gUnk_080CC2BC[]; +extern const s8 gUnk_080CC2DC[]; + +void sub_08025DC0(Entity*); +void sub_08025CBC(Entity*); +void sub_08025CD4(Entity*); +void sub_08001242(Entity*); +void sub_08025DD8(Entity*); +void sub_08026060(Entity*); +void sub_08026110(Entity*); +void sub_080272D4(Entity*); +void sub_0802720C(Entity*); +void sub_0802720C(Entity*); +void sub_08026090(Entity*); +void sub_0802626C(Entity*); +void sub_08026580(Entity*); +void sub_08026634(Entity*); +void sub_08026750(Entity*); +void sub_0802686C(Entity*); +void sub_080268C8(Entity*); +void sub_0802694C(Entity*); +void sub_08026C40(Entity*); +void sub_08026E1C(Entity*); +void sub_08026FA4(Entity*); +void sub_08027064(Entity*); +void sub_08026F1C(Entity*); +void sub_080262A8(Entity*); +void sub_08026328(Entity*); +void sub_08026358(Entity*); +void sub_080263B4(Entity*); +void sub_08026414(Entity*); +void sub_0802647C(Entity*); +void sub_080264AC(Entity*); +void sub_080264D4(Entity*); +void sub_0802650C(Entity*); +void sub_0802653C(Entity*); +void sub_08026774(Entity*); +void sub_080267D0(Entity*); +void sub_08026808(Entity*); +void sub_080268EC(Entity*); +void sub_08026914(Entity*); +void sub_08026968(Entity*); +void sub_080269CC(Entity*); +void sub_08026BE8(Entity*); + +// clang-format off +void (*const gUnk_080CC19C[])(Entity*) = { + sub_08025DC0, + sub_08025DC0, + sub_08025CBC, + sub_08025CD4, + sub_08001242, +}; + +void (*const gUnk_080CC1B0[])(Entity*) = { + sub_08025DD8, + sub_08026060, +}; + +const u8 gUnk_080CC1B8[] = { + 0, 4, + 0, 0, + 0, 4, + 0, 0, + 1, 4, + 0, 0, + 2, 4, + 0, 0, +}; + +void (*const gUnk_080CC1C8[])(Entity*) = { + sub_08026110, + sub_080272D4, + sub_0802720C, + sub_0802720C, + sub_08026090, +}; + +void (*const gUnk_080CC1DC[])(Entity*) = { + sub_0802626C, + sub_08026580, + sub_08026634, + sub_08026750, + sub_0802686C, + sub_080268C8, + sub_0802694C, + sub_08026C40, + sub_08026E1C, + sub_08026FA4, + sub_08027064, + sub_08026F1C, +}; + +void (*const gUnk_080CC20C[])(Entity*) = { + sub_080262A8, + sub_08026328, + sub_08026358, + sub_080263B4, + sub_08026414, + sub_0802647C, + sub_080264AC, + sub_080264D4, + sub_0802650C, + sub_0802653C, +}; + +const u8 gUnk_080CC234[] = { + 0x3C, 0x1E, 0x1E, 0x1E, + 0x1E, 0x0F, 0x0F, 0x0F, + 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x0A, 0x0A, + 0x0A, 0x0F, 0x0F, 0x0F, + 0x1E, 0x1E, 0x2D, 0x0A, + 0x5A, 0x1E, 0xFF, +}; + +const u8 gUnk_080CC24F[] = { + 2, 2, 4, 4, + 4, 6, 6, 8, +}; + +void (*const gUnk_080CC258[])(Entity*) = { + sub_08026774, + sub_080267D0, + sub_08026808, +}; + +void (*const gUnk_080CC264[])(Entity*) = { + sub_080268EC, + sub_08026914, +}; + +void (*const gUnk_080CC26C[])(Entity*) = { + sub_08026968, + sub_080269CC, + sub_08026BE8, +}; + +const u8 gUnk_080CC278[] = { + 150, 180, 210, 250, +}; + +const u16 gUnk_080CC27C[] = { + 0x80, 0x8, 0x100, 0x6, + 0x80, 0x18, 0x100, 0x8, + 0x180, 0x6, 0x100, 0x10, + 0x0, 0x0, 0xA0, 0x18, +}; + +const u16 gUnk_080CC29C[] = { + 0x80, 0x8, 0x100, 0x4, + 0x80, 0xC, 0x80, 0x6, + 0x200, 0x6, 0x100, 0xC, + 0x0, 0x0, 0xA0, 0x14, +}; + +const u16 gUnk_080CC2BC[] = { + 0x80, 0x8, 0x100, 0x0, + 0x60, 0x2, 0x80, 0x2, + 0x200, 0x6, 0x100, 0x8, + 0x0, 0x0, 0xA0, 0x10, +}; + + +const s8 gUnk_080CC2DC[] = { + -7, -9, -7, +}; +// clang-format on diff --git a/src/enemy/doorMimic.c b/src/enemy/doorMimic.c index e30dfa28..069c205b 100644 --- a/src/enemy/doorMimic.c +++ b/src/enemy/doorMimic.c @@ -15,11 +15,7 @@ typedef struct { extern void (*const gUnk_080CB734[])(Entity*); extern void (*const gUnk_080CB74C[])(Entity*); -#if NON_MATCHING -extern const PosOffset gUnk_080CB764[]; -#else extern const s8 gUnk_080CB764[]; -#endif extern const PosOffset gUnk_080CB76C[4][6]; extern const u16 gUnk_080CB79C[]; extern const BoundingBox* const* const gUnk_080CB8A4[]; @@ -46,27 +42,15 @@ void sub_08022004(Entity* this) { DeleteThisEntity(); } -#if NON_MATCHING void sub_08022034(Entity* this) { this->action = 1; this->entityType.parameter = this->entityType.form & 3; this->spritePriority.b0 = 5; - this->field_0x78.HWORD = gUnk_080CB764[this->entityType.parameter].h + this->x.HALF.HI; - this->field_0x7a.HWORD = gUnk_080CB764[this->entityType.parameter].v + this->y.HALF.HI; - InitializeAnimation(this, this->entityType.parameter); - sub_080221C0(this); -} -#else -void sub_08022034(Entity* this) { - this->action = 1; - this->entityType.parameter = this->entityType.form & 3; - this->spritePriority.b0 = 5; - this->field_0x78.HWORD = gUnk_080CB764[this->entityType.parameter * 2] + this->x.HALF.HI; + this->field_0x78.HWORD = gUnk_080CB764[this->entityType.parameter * 2 + 0] + this->x.HALF.HI; this->field_0x7a.HWORD = gUnk_080CB764[this->entityType.parameter * 2 + 1] + this->y.HALF.HI; InitializeAnimation(this, this->entityType.parameter); sub_080221C0(this); } -#endif void sub_0802209C(Entity* this) { if (this->actionDelay == 0) { @@ -151,21 +135,12 @@ void (*const gUnk_080CB74C[])(Entity*) = { sub_08022198, }; -#if NON_MATCHING -const PosOffset gUnk_080CB764[] = { - {-0x08, 0x00}, - {-0x10, -0x08}, - {-0x08, -0x10}, - { 0x00, -0x08}, -}; -#else const s8 gUnk_080CB764[] = { -0x08, 0x00, -0x10, -0x08, -0x08, -0x10, 0x00, -0x08, }; -#endif const PosOffset gUnk_080CB76C[][6] = { { diff --git a/src/enemy/fallingBoulder.c b/src/enemy/fallingBoulder.c new file mode 100644 index 00000000..435e6b21 --- /dev/null +++ b/src/enemy/fallingBoulder.c @@ -0,0 +1,254 @@ +#include "enemy.h" +#include "functions.h" + +void sub_0802C4B0(Entity*); +void sub_0802C62C(Entity*); + +extern void (*const gUnk_080CD540[])(Entity*); +extern void (*const gUnk_080CD558[])(Entity*); +extern const u16 gUnk_080CD568[]; +extern const u8 gUnk_080CD580[]; +extern const s16 gUnk_080CD58C[]; + +void FallingBoulder(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CD540); +} + +void sub_0802C238(Entity* this) { + gUnk_080CD558[this->action](this); +} + +void sub_0802C250(Entity* this) { + /* ... */ +} + +void sub_0802C254(Entity* this) { + /* ... */ +} + +void sub_0802C258(Entity* this) { + sub_0804A720(this); + this->field_0x20 = 0x20000; + this->actionDelay = 2; + this->field_0x7a.HWORD = Random() & 0x70; + switch (this->entityType.form) { + case 1: + this->field_0x7a.HWORD |= 0x100; + break; + case 2: + this->field_0x7a.HWORD |= 0x200; + break; + } + this->field_0x80.HWORD = this->x.HALF.HI; + this->field_0x82.HWORD = this->y.HALF.HI; + this->height.HALF.HI = -0x10; + this->collisionLayer = 3; + this->spriteRendering.b3 = 1; + this->spritePriority.b0 = 2; + this->field_0x7c.HALF.LO = 0; + this->field_0x7c.HALF.HI = COORD_TO_TILE(this); + sub_0802C62C(this); + sub_0802C4B0(this); +} + +void sub_0802C318(Entity* this) { + if (--this->field_0x7a.HWORD == 0) { + this->action = 2; + } +} + +#if NON_MATCHING +void sub_0802C334(Entity* this) { + if ((u16)this->field_0x7c.HALF.LO == 0) { + u32 tmp = gRoomControls.roomOriginY; + if (&gPlayerEntity == NULL) + return; + if (tmp - gPlayerEntity.y.HALF.HI <= 0x38) { + return; + } + this->field_0x7c.HALF.LO = 1; + this->spriteSettings.b.draw = 1; + } + GetNextFrame(this); + this->field_0x7c.HALF.HI = COORD_TO_TILE(this); + if (sub_080044EC(this, *(u32*)&this->cutsceneBeh) == 1) { + EnqueueSFX(0x14c); + this->flags = this->flags | 0x80; + this->field_0x7a.HWORD = 0xc; + sub_0802C4B0(this); + } else { + s32 y; + + if (this->field_0x7a.HWORD) { + u16 tmp = --this->field_0x7a.HWORD; + switch (tmp) { + case 0: + this->flags &= ~0x80; + break; + case 8: + if (this->entityType.parameter != 0 && !sub_08049FA0(this)) { + u32 diff = 0; + s32 i; + for (i = 1; i > -1; i--) { + Entity* ent = CreateFx(this, 0x15, 0); + if (ent) { + ent->x.HALF.HI += 12; + ent->x.HALF.HI -= diff; + } + diff += 0x18; + } + sub_0802C62C(this); + this->field_0x7a.HWORD = Random() & 0xff | 0x100; + return; + } + break; + } + } + + y = gRoomControls.roomOriginY + gRoomControls.height - this->y.HALF.HI; + if (y >= 5) { + sub_080AEFB4(this); + } else { + sub_0806F69C(this); + if (this->height.HALF.HI - y > 0x38) { + sub_0802C62C(this); + this->field_0x7a.HWORD = (Random() & 0x7f) | 0x80; + if (this->entityType.form == 3) { + this->action = 3; + } + } + } + } + this->collisionLayer = 3; + this->spritePriority.b0 = 1; + UpdateSpriteForCollisionLayer(this); +} +#else +NAKED +void sub_0802C334(Entity* this) { + asm(".include \"asm/non_matching/fallingBoulder/sub_0802C334.inc\""); +} +#endif + +void nullsub_148(Entity* this) { + /* ... */ +} + +extern u32 sub_080001DA(u32, u32); + +void sub_0802C4B0(Entity* this) { + u32 offset; + u32 index; + u32 rand; + + switch (sub_080001DA(this->field_0x7c.HALF_U.HI, this->collisionLayer)) { + case 0x1ab ... 0x1af: + offset = 8; + break; + case 0x1c4: + offset = 4; + break; + default: + offset = 0; + break; + } + + rand = Random() & 7; + if (rand & 4) { + if (rand & 3) { + this->nonPlanarMovement = gUnk_080CD568[offset | 2]; + } else { + this->nonPlanarMovement = gUnk_080CD568[offset | 0]; + } + } else { + if (rand & 3) { + this->nonPlanarMovement = gUnk_080CD568[offset | 1]; + } else { + this->nonPlanarMovement = gUnk_080CD568[offset | 3]; + } + } + + rand = Random() & 7; + if (rand & 4) { + if (this->actionDelay != 0) { + this->actionDelay = 0; + InitializeAnimation(this, 0); + } + if (rand & 3) { + this->direction = gUnk_080CD580[offset | 1]; + } else { + this->direction = gUnk_080CD580[offset | 0]; + } + } else { + if (this->actionDelay != 1) { + this->actionDelay = 1; + InitializeAnimation(this, 1); + } + if (rand & 3) { + this->direction = gUnk_080CD580[offset | 2]; + } else { + this->direction = gUnk_080CD580[offset | 3]; + } + } + + rand = Random() & 7; + this->field_0x20 = 0x20000; + if (rand & 4) { + if (rand & 3) { + *(u32*)&this->cutsceneBeh = gUnk_080CD58C[offset | 1]; + } else { + *(u32*)&this->cutsceneBeh = gUnk_080CD58C[offset | 3]; + } + } else { + if (rand & 3) { + *(u32*)&this->cutsceneBeh = gUnk_080CD58C[offset | 2]; + } else { + *(u32*)&this->cutsceneBeh = gUnk_080CD58C[offset | 0]; + } + } +} + +void sub_0802C62C(Entity *this) { + this->action = 1; + this->y.HALF.HI = this->field_0x82.HWORD; + this->x.HALF.HI = this->field_0x80.HWORD; + this->spriteSettings.b.draw = 0; + this->flags &= ~0x80; + this->field_0x7c.HALF.LO = 0; +} + +// clang-format off +void (*const gUnk_080CD540[])(Entity*) = { + sub_0802C238, + sub_0802C250, + sub_08001324, + sub_0804A7D4, + sub_08001242, + sub_0802C254, +}; + +void (*const gUnk_080CD558[])(Entity*) = { + sub_0802C258, + sub_0802C318, + sub_0802C334, + nullsub_148, +}; + +const u16 gUnk_080CD568[] = { + 0x80, 0x100, 0x180, 0x200, + 0x80, 0x100, 0x180, 0x200, + 0x100, 0x200, 0x300, 0x400, +}; + +const u8 gUnk_080CD580[] = { + 10, 14, 18, 22, + 10, 14, 18, 22, + 10, 14, 18, 22, +}; + +const s16 gUnk_080CD58C[] = { + 0x1800, 0x2000, 0x2800, 0x3000, + 0x1800, 0x2000, 0x2800, 0x3000, + 0x1800, 0x2000, 0x2800, 0x3000, +}; +// clang-format on diff --git a/src/enemy/helmasaur.c b/src/enemy/helmasaur.c new file mode 100644 index 00000000..645924dc --- /dev/null +++ b/src/enemy/helmasaur.c @@ -0,0 +1,436 @@ +#include "enemy.h" +#include "functions.h" + +extern void sub_08008796(Entity*, u32, u32, u32); +extern u32 sub_0804A024(Entity*, u32, u32); +extern bool32 sub_080AE4CC(Entity*, u32, u32, u32); + +extern Entity gUnk_0200D654; +extern Entity gUnk_02027EB4; + +void sub_0802C18C(Entity*); +void sub_0802C218(Entity*); +void sub_0802C1C0(Entity*); +u32 sub_0802C020(Entity*); +void sub_0802C058(Entity*, u32); +bool32 sub_0802C06C(Entity*); +void sub_08080964(u32, u32); +void sub_0802C1CC(Entity*); +bool32 sub_0802C0E8(Entity*); + +extern void (*const gUnk_080CD3E4[])(Entity*); +extern void (*const gUnk_080CD3FC[])(Entity*); +extern void (*const gUnk_080CD408[])(Entity*); +extern void (*const gUnk_080CD42C[])(Entity*); +extern void (*const gUnk_080CD438[])(Entity*); +extern void (*const gUnk_080CD450[])(Entity*); +extern const s8 gUnk_080CD45C[]; +extern const s8 gUnk_080CD464[]; + +void Helmasaur(Entity* this) { + if (this->entityType.form == 0) { + EnemyFunctionHandler(this, gUnk_080CD3E4); + SetChildOffset(this, 0, 1, -0x10); + } else { + gUnk_080CD3FC[this->action](this); + } +} + +void sub_0802BBAC(Entity* this) { + gUnk_080CD408[this->action](this); +} + +void sub_0802BBC4(Entity* this) { + if (this->damageType != 0x19) { + switch (this->bitfield & 0x7f) { + case 0: + case 2: + case 3: + if (this->action == 4) { + this->field_0x42 = 0; + sub_0802C218(this); + } + break; + } + } + if (this->field_0x43 != 0) { + sub_0804A9FC(this, 0x1c); + } + + sub_0804AA30(this, gUnk_080CD3E4); +} + +void sub_0802BC20(Entity* this) { + if (this->damageType != 0x19) { + if (sub_0806F520(this)) { + gUnk_080CD42C[this->previousActionFlag](this); + } + } else if (2 < this->previousActionFlag || sub_0806F520(this)) { + gUnk_080CD438[this->previousActionFlag](this); + } +} + +void sub_0802BC74(Entity* this) { + sub_0802C1C0(this); + this->previousActionFlag = 1; + this->field_0x1d = 60; + this->animationState = (gPlayerEntity.animationState >> 1) ^ 2; + InitializeAnimation(this, this->animationState); +} + +void sub_0802BCA0(Entity* this) { + sub_0806F4E8(this); +} + +void sub_0802BCA8(Entity* this) { + if (this->damageType != 0x19) { + Entity* ent; + + this->action = 7; + this->actionDelay = 0x5a; + this->field_0x20 = 0x18000; + this->damageType = 0x19; + this->field_0x3a = this->field_0x3a & 0xfb; + this->field_0x1c = 0x12; + ent = CreateEnemy(0x20, 1); + if (ent) { + ent->animationState = this->animationState; + CopyPosition(this, ent); + } + InitializeAnimation(this, this->animationState + 4); + } +} + +void sub_0802BCFC(Entity* this) { + this->previousActionFlag = 1; + this->field_0x1d = 60; +} + +void sub_0802BD08(Entity* this) { + sub_0806F3E4(this); +} + +void sub_0802BD10(Entity* this) { + this->flags &= ~0x80; + UpdateAnimationVariableFrames(this, 2); +} + +void nullsub_145(Entity* this) { + /* ... */ +} + +void sub_0802BD28(Entity* this) { + if (this->flags & 0x80) { + this->flags |= 0x80; + this->field_0x3a &= ~0x4; + } else { + this->currentHealth = 0; + } +} + +void sub_0802BD54(Entity* this) { + sub_0804A720(this); + this->action = 1; + this->field_0x78.HALF.LO = Random(); + this->field_0x1d = 60; + this->field_0x78.HALF.HI = 0xff; + this->direction = DirectionRound(Random()); + this->animationState = this->direction >> 3; + InitializeAnimation(this, this->animationState); +} + +void sub_0802BD8C(Entity* this) { + if (this->actionDelay) { + this->actionDelay--; + } else { + u32 direction; + + if (sub_08049FDC(this, 1)) { + direction = sub_0804A024(this, 1, 0x10); + if (direction != 0xff && direction != this->field_0x78.HALF.HI) { + sub_0802C058(this, direction); + return; + } + } + + direction = sub_0802C020(this); + if (direction != this->direction) { + sub_0802C058(this, direction); + } + } +} + +void sub_0802BDE0(Entity* this) { + if (sub_0802C06C(this)) { + this->action = 3; + this->actionDelay = 60; + this->field_0x78.HALF.HI = 0xff; + } else { + this->action = 1; + this->actionDelay = (Random() & 0xf) + 0xf; + this->field_0x78.HALF.HI = this->direction; + } +} + +void sub_0802BE18(Entity* this) { + UpdateAnimationVariableFrames(this, 2); + if (--this->actionDelay == 0) { + this->action = 4; + this->actionDelay = 0x1e; + this->nonPlanarMovement = 0x300; + } else { + sub_0802C18C(this); + } +} + +void sub_0802BE48(Entity* this) { + if (!sub_080AEFE0(this)) { + sub_0802C218(this); + sub_08080964(8, 0); + } else { + GetNextFrame(this); + sub_0802C1CC(this); + if (sub_0802C0E8(this)) { + this->action = 5; + } + } +} + +void sub_0802BE80(Entity* this) { + this->nonPlanarMovement -= 0x20; + if (0xff < this->nonPlanarMovement) { + sub_0802C1CC(this); + } + + if (this->nonPlanarMovement > 0) { + sub_080AEFE0(this); + sub_0802C18C(this); + } else { + sub_0802C1C0(this); + this->actionDelay += 30; + } +} + +void sub_0802BEBC(Entity* this) { + this->direction ^= 0x10; + sub_080AEFE0(this); + this->direction ^= 0x10; + if (!sub_080044EC(this, 0x2000)) { + sub_0802C1C0(this); + } +} + +void sub_0802BEEC(Entity* this) { + if (this->actionDelay) { + if ((--this->actionDelay & 0x1f) == 0) { + this->animationState ^= 2; + this->direction = this->animationState << 3; + InitializeAnimation(this, this->animationState + 4); + } + } else if (!sub_08003FC4(this, 0x1c00)) { + this->action = 8; + this->actionDelay = 30; + this->nonPlanarMovement = 0x120; + } +} + +void sub_0802BF3C(Entity* this) { + ProcessMovement(this); + GetNextFrame(this); + if (--this->actionDelay == 0) { + u32 sprite; + + this->actionDelay = 30; + this->direction = sub_0802C020(this); + sprite = this->direction >> 3; + if (sprite != this->animationState) { + this->animationState = sprite; + InitializeAnimation(this, sprite + 4); + } + } +} + +void sub_0802BF78(Entity* this) { + this->action = 1; + this->flags2 = 4; + this->field_0x1c = 1; + this->direction = this->animationState << 3; + InitializeAnimation(this, this->animationState + 8); +} + +void sub_0802BF98(Entity* this) { + if (sub_0806F520(this)) { + gUnk_080CD450[this->previousActionFlag](this); + } else { + this->action = 2; + this->actionDelay = 30; + this->flags &= ~0x80; + } +} + +void sub_0802BFD0(Entity* this) { + this->previousActionFlag = 2; +} + +void sub_0802BFD8(Entity* this) { + sub_0806F4E8(this); +} + +void sub_0802BFE0(Entity* this) { + if (sub_0806F3E4(this)) { + DeleteEntity(this); + } +} + +void sub_0802BFF4(Entity* this) { + this->spriteSettings.b.draw ^= 1; + if (--this->actionDelay == 0) { + DeleteEntity(this); + } +} + +u32 sub_0802C020(Entity* this) { + u32 uVar1 = Random(); + + if (sub_08049FA0(this) || (uVar1 & 1)) + return DirectionRound(uVar1); + + return (sub_08049EE4(this) + (uVar1 >> 0x10 & 1) * 4) & 0x18; +} + +void sub_0802C058(Entity* this, u32 param_2) { + this->action = 2; + this->direction = param_2; + this->animationState = param_2 >> 3; + InitializeAnimation(this, this->animationState); +} + +bool32 sub_0802C06C(Entity* this) { + u32 x = this->x.HALF.HI + (s8)this->boundingBox->unknown[0]; + u32 y = this->y.HALF.HI + (s8)this->boundingBox->unknown[1]; + u32 xdiff = gUnk_080CD45C[(this->direction >> 2) + 0]; + u32 ydiff = gUnk_080CD45C[(this->direction >> 2) + 1]; + + Entity* ent = this->collisionLayer == 2 ? &gUnk_0200D654 : &gUnk_02027EB4; + + u32 i; + for (i = 0; i < 8; i++) { + x += xdiff; + y += ydiff; + if (sub_080AE4CC(ent, x, y, 0)) + return FALSE; + } + + return TRUE; +} + +bool32 sub_0806FC24(u32, u32); + +bool32 sub_0802C0E8(Entity* this) { + if (--this->actionDelay == 0) { + return TRUE; + } else { + const s8* ptr = &gUnk_080CD45C[this->direction >> 2]; + s32 x = this->x.HALF.HI + (s8)this->boundingBox->unknown[0] + ptr[0] * 6; + s32 y = this->y.HALF.HI + (s8)this->boundingBox->unknown[1] + ptr[1] * 6; + + Entity* ent = this->collisionLayer == 2 ? &gUnk_0200D654 : &gUnk_02027EB4; + u32 ret = FALSE; + if (!sub_0806FC24(TILE(x, y), 9)) { + u32 tmp = sub_080AE4CC(ent, x, y, 0); + ret = (-tmp | tmp) >> 0x1f; + } + return ret; + } +} + +void sub_0802C18C(Entity* this) { + this->field_0x78.HALF.LO--; + if ((this->field_0x78.HALF.LO & 7) == 0) { + Entity* ent = CreateObject(0xf, 0x11, 0x40); + if (ent) { + PositionRelative(this, ent, 0, 0x10000); + } + } +} + +void sub_0802C1C0(Entity* this) { + this->action = 1; + this->actionDelay = 30; +} + +void sub_0802C1CC(Entity* this) { + const s8* ptr = &gUnk_080CD464[this->animationState << 2]; + sub_08008796(this, 9, this->x.HALF.HI + ptr[0], this->y.HALF.HI + ptr[1]); + sub_08008796(this, 9, this->x.HALF.HI + ptr[2], this->y.HALF.HI + ptr[3]); +} + +void sub_0802C218(Entity* this) { + this->action = 6; + this->nonPlanarMovement = 0xe0; + this->field_0x20 = 0x18000; +} + +// clang-format off +void (*const gUnk_080CD3E4[])(Entity*) = { + sub_0802BBAC, + sub_0802BBC4, + sub_08001324, + sub_0804A7D4, + sub_08001242, + sub_0802BC20, +}; + +void (*const gUnk_080CD3FC[])(Entity*) = { + sub_0802BF78, + sub_0802BF98, + sub_0802BFF4, +}; + +void (*const gUnk_080CD408[])(Entity*) = { + sub_0802BD54, + sub_0802BD8C, + sub_0802BDE0, + sub_0802BE18, + sub_0802BE48, + sub_0802BE80, + sub_0802BEBC, + sub_0802BEEC, + sub_0802BF3C, +}; + +void (*const gUnk_080CD42C[])(Entity*) = { + sub_0802BC74, + sub_0802BCA0, + sub_0802BCA8, +}; + +void (*const gUnk_080CD438[])(Entity*) = { + sub_0802BCFC, + sub_0802BCA0, + sub_0802BD08, + sub_0802BD10, + nullsub_145, + sub_0802BD28, +}; + +void (*const gUnk_080CD450[])(Entity*) = { + sub_0802BFD0, + sub_0802BFD8, + sub_0802BFE0, +}; + +const s8 gUnk_080CD45C[] = { + 0, -8, + 8, 0, + 0, 8, + -8, 0, +}; + +const s8 gUnk_080CD464[] = { + -3, -8, 3, -8, + 8, -3, 8, 3, + -3, 8, 3, 8, + -8, -3, -8, 3, +}; +// clang-format on diff --git a/src/enemy/likeLike.c b/src/enemy/likeLike.c new file mode 100644 index 00000000..ca50374f --- /dev/null +++ b/src/enemy/likeLike.c @@ -0,0 +1,287 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" +#include "textbox.h" + +extern bool32 sub_080544B4(u32); +extern void sub_0807CAA0(u32, u32); + +void sub_0802810C(Entity*); +void sub_080281A0(Entity*); +bool32 sub_080281E0(u32); +void sub_08028224(u32); + +extern void (*const gUnk_080CC6FC[])(Entity*); +extern void (*const gUnk_080CC714[])(Entity*); + +void LikeLike(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CC6FC); + SetChildOffset(this, 0, 1, -0x10); +} + +void sub_08027D8C(Entity* this) { + gUnk_080CC714[this->action](this); +} + +void sub_08027DA4(Entity* this) { + if (this->damageType == 1) { + this->action = 3; + this->flags &= ~0x80; + this->damageType = 0x8c; + } else { + if (this->action == 7) { + sub_0802810C(this); + } else if (this->bitfield & 0x80) { + u8 tmp = this->bitfield & ~0x80; + if (!tmp) { + this->action = 7; + this->actionDelay = 0x5f; + this->field_0xf = tmp; + this->flags2 &= 0xfc; + this->field_0x82.HALF.HI = gPlayerEntity.spritePriority.b1; + } + } + } + + if (this->currentHealth == 0) { + this->actionDelay = 0x20; + } + + if (this->field_0x43) { + sub_0804A9FC(this, 0x1c); + } + + sub_0804AA30(this, gUnk_080CC6FC); +} + +void sub_08027E40(Entity* this) { + if (this->actionDelay == 2 && this->field_0x80.HALF.LO != 0xff) { + sub_0805E3A0(this, 3); + sub_08028224(this->field_0x80.HALF.LO); + } + sub_0804A7D4(this); +} + +void nullsub_139(Entity* this) { + /* ... */ +} + +void sub_08027E70(Entity* this) { + sub_0804A720(this); + + switch (this->entityType.form) { + case 0: + this->action = 3; + this->spriteSettings.b.draw = 0; + this->flags = this->flags & 0x7f; + this->actionDelay = 0; + break; + case 1: + this->action = 1; + this->spriteSettings.b.draw = 1; + this->actionDelay = 8; + InitializeAnimation(this, 1); + break; + case 2: + this->action = 1; + this->spriteSettings.b.draw = 0; + this->actionDelay = 0; + this->damageType = 1; + InitializeAnimation(this, 0); + break; + } + + this->direction = 0; + this->field_0x82.HALF.LO = 0; + this->animationState = 0; + this->field_0x82.HALF.HI = 0; + this->field_0x80.HALF.LO = 0xff; +} + +void sub_08027EFC(Entity* this) { + if (this->damageType == 1) + return; + + if (sub_08049FDC(this, 1)) { + if (!sub_08049FA0(this) && (Random() & 0x30)) { + this->direction = sub_08049EE4(this); + } else { + this->direction = this->field_0x82.HALF.LO; + } + + if (--this->actionDelay == 0) { + this->direction = sub_08049F84(this, 1); + this->field_0x82.HALF.LO = this->direction; + this->actionDelay = 8; + } + ProcessMovement(this); + GetNextFrame(this); + } else { + this->action = 6; + this->flags &= ~0x80; + InitializeAnimation(this, 2); + } +} + +void nullsub_12(Entity* this) { + /* ... */ +} + +void sub_08027F84(Entity* this) { + if (sub_08049FDC(this, 1)) { + this->action = 5; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 0); + CreateDust(this); + } +} + +void sub_08027FB4(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 1; + this->actionDelay = 1; + this->flags2 |= 1; + } + GetNextFrame(this); +} + +void sub_08027FE0(Entity* this) { + GetNextFrame(this); + if (this->frames.all & 1) { + this->action = 1; + this->flags |= 0x80; + this->direction = sub_08049F84(this, 1); + this->actionDelay = 8; + this->spritePriority.b1 = 1; + InitializeAnimation(this, 1); + } +} + +void sub_0802802C(Entity* this) { + GetNextFrame(this); + if (this->frames.all & 1) { + this->action = 3; + this->spriteSettings.b.draw = 0; + this->direction = 0; + this->actionDelay = 0; + CreateDust(this); + } +} + +void sub_0802805C(Entity* this) { + u8* tmp; + + UpdateAnimationVariableFrames(this, 2); + + if (sub_0807953C()) { + u32 tmp2 = Random(); + u32 tmp3 = this->field_0xf + 1; + tmp3 += (tmp2 & 1); + this->field_0xf = tmp3; + } + + if (this->field_0xf >= 0x19 || gUnk_02002A40.stats.health == 0) { + sub_0802810C(this); + } else { + ResetPlayer(); + gPlayerState.field_0x1a[0] |= 0x80; + PositionRelative(this, &gPlayerEntity, 0, 0x10000); + + tmp = GetSpriteSubEntryOffsetDataPointer((u16)this->spriteIndex, this->frameIndex); + gPlayerEntity.spriteOffsetX = tmp[0]; + gPlayerEntity.spriteOffsetY = tmp[1]; + gPlayerEntity.spritePriority.b1 = 0; + + if (--this->actionDelay == 0) { + sub_080281A0(this); + } + + if ((this->actionDelay & 3) == 0) { + EnqueueSFX(0x104); + } + } +} + +#if NON_MATCHING +void sub_0802810C(Entity* this) { + gPlayerState.jumpStatus = 0x41; + gPlayerState.field_0xa = 0; + gPlayerState.flags.all &= 0xffffffef; + gPlayerEntity.flags |= 0x80; + gPlayerEntity.field_0x20 = 0x18000; + gPlayerEntity.hurtBlinkTime = -60; + gPlayerEntity.direction = gPlayerEntity.animationState << 2; + gPlayerEntity.spritePriority.b1 = this->field_0x82.HALF.HI; + gPlayerEntity.height.HALF.HI = gPlayerEntity.spriteOffsetY; + gPlayerEntity.spriteOffsetY = 0; + this->action = 4; + this->actionDelay = 0x50; + this->field_0xf = 0; + this->flags2 |= 2; + if (this->hurtBlinkTime == 0) { + this->hurtBlinkTime = -18; + } +} +#else +NAKED +void sub_0802810C(Entity* this) { + asm(".include \"asm/non_matching/likeLike/sub_0802810C.inc\""); +} +#endif + +void sub_080281A0(Entity* this) { + this->field_0xf = 0x19; + if (sub_080281E0(0xe)) { + this->field_0x80.HALF.LO = 0xe; + TextboxNoOverlapFollow(0x578); + } else if (sub_080281E0(0xd)) { + this->field_0x80.HALF.LO = 0xd; + TextboxNoOverlapFollow(0x578); + } else { + ModHealth(-1); + } +} + +bool32 sub_080281E0(u32 param_1) { + bool32 ret = FALSE; + if (GetInventoryValue(param_1) == 1) { + if (sub_080544B4(gUnk_02002A40.stats.itemOnA)) { + gUnk_02002A40.stats.itemOnA = 0; + } + + if (sub_080544B4(gUnk_02002A40.stats.itemOnB)) { + gUnk_02002A40.stats.itemOnB = 0; + } + + sub_0807CAA0(param_1, 0); + ret = TRUE; + } + + return ret; +} + +void sub_08028224(u32 param_1) { + sub_080A7C18(param_1, 0, 1); + TextboxNoOverlapFollow(0x579); +} + + +void (*const gUnk_080CC6FC[])(Entity *) = { + sub_08027D8C, + sub_08027DA4, + sub_08001324, + sub_08027E40, + sub_08001242, + nullsub_139, +}; + +void (*const gUnk_080CC714[])(Entity *) = { + sub_08027E70, + sub_08027EFC, + nullsub_12, + sub_08027F84, + sub_08027FB4, + sub_08027FE0, + sub_0802802C, + sub_0802805C, +}; diff --git a/src/enemy/madderpillar.c b/src/enemy/madderpillar.c new file mode 100644 index 00000000..69f61aee --- /dev/null +++ b/src/enemy/madderpillar.c @@ -0,0 +1,582 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern u8 gEntCount; +extern BoundingBox gUnk_080FD298; +extern BoundingBox gUnk_080FD2A0; + +void sub_08029E0C(Entity*); +void sub_08029EEC(Entity*); +void sub_0802A098(Entity*); +void sub_0802A16C(Entity*); +void sub_0802A058(Entity*); +bool32 sub_0802A14C(Entity*); +void sub_0802A18C(Entity*); +bool32 sub_08029FE4(Entity*); +void sub_08029FB4(Entity*, u32, u32); +void sub_0802A0F8(Entity*); + +extern void (*const gUnk_080CCD44[])(Entity*); +extern void (*const gUnk_080CCD60[])(Entity*); +extern void (*const gUnk_080CCD78[])(Entity*); +extern void (*const gUnk_080CCD88[])(Entity*); +extern const u8 gUnk_080CCDA0[]; +extern void (*const gUnk_080CCDA8[])(Entity*); +extern const u8 gUnk_080CCDC8[]; +extern const u16 gUnk_080CCDD4[]; + +void Madderpillar(Entity* this) { + gUnk_080CCD44[this->entityType.form](this); +} + +void sub_08029870(Entity* this) { + gUnk_080CCD60[GetNextFunction(this)](this); +} + +void sub_0802988C(Entity* this) { + gUnk_080CCD78[this->action](this); +} + +void sub_080298A4(Entity* this) { + if (this->action == 1) { + switch (this->bitfield & 0x7f) { + case 0: + case 1: + case 2: + case 3: + case 0xf: + case 0x13: + case 0x1b: + case 0x1e: + break; + default: + this->action = 2; + this->actionDelay = 0; + this->damageType = 0x6b; + this->field_0x76.HALF.HI = 0; + sub_0801D2B4(this, 0x7f); + EnqueueSFX(0xfe); + this->attachedEntity->action = 2; + break; + } + } + + sub_0804AA30(this, gUnk_080CCD60); +} + +void sub_08029980(Entity* this) { + if (this->field_0xf) { + this->field_0xf--; + } else { + sub_0804A7D4(this); + } +} + +void nullsub_14(Entity* this) { + /* ... */ +} + +void sub_0802999C(Entity* this) { + if (gEntCount < 0x44) { + Entity *ent1, *ent2, *ent3, *ent4, *ent5, *ent6; + + ent1 = CreateEnemy(0x18, 1); + ent1->parent = this; + PositionRelative(this, ent1, 0, 5); + this->attachedEntity = ent1; + + ent2 = CreateEnemy(0x18, 2); + ent2->parent = this; + PositionRelative(this, ent2, 0, 4); + ent1->attachedEntity = ent2; + + ent3 = CreateEnemy(0x18, 3); + ent3->parent = this; + PositionRelative(this, ent3, 0, 3); + ent2->attachedEntity = ent3; + + ent4 = CreateEnemy(0x18, 4); + ent4->parent = this; + PositionRelative(this, ent4, 0, 2); + ent3->attachedEntity = ent4; + + ent5 = CreateEnemy(0x18, 5); + ent5->parent = this; + PositionRelative(this, ent5, 0, 1); + ent4->attachedEntity = ent5; + + ent6 = CreateEnemy(0x18, 6); + ent6->attachedEntity = this; + ent6->parent = this; + PositionRelative(this, ent6, 0, 0); + ent5->attachedEntity = ent6; + + this->action = 1; + this->flags |= 0x80; + this->direction = DirectionRound(Random()); + this->nonPlanarMovement = 0xa0; + this->animationState = 0xff; + this->y.WORD += 6; + this->parent = this; + this->field_0x74.HALF.LO = 0xff; + this->field_0x74.HALF.HI = 0; + this->field_0x76.HALF.HI = 1; + sub_08029E0C(this); + sub_08029EEC(this); + } +} + +void sub_08029A94(Entity* this) { + UpdateAnimationSingleFrame(this); + sub_0802A098(this); +} + +void sub_08029AA4(Entity* this) { + if (this->field_0x76.HALF.HI != 0) { + this->action = 3; + this->nonPlanarMovement = 0x108; + this->damageType = 0x6a; + this->field_0x7a.HWORD = 0x168; + this->field_0x74.HALF.HI = 4; + sub_08029EEC(this); + EnqueueSFX(0x19d); + } +} + +void sub_08029AE0(Entity* this) { + UpdateAnimationSingleFrame(this); + sub_0802A16C(this); + sub_0802A098(this); + if (--this->field_0x7a.HWORD == 0) { + this->action = 1; + this->nonPlanarMovement = 0xa0; + this->field_0x74.HALF.HI = 0; + sub_08029EEC(this); + sub_0801D2B4(this, 0x77); + EnqueueSFX(0x182); + } +} + +void sub_08029B2C(Entity* this) { + if (sub_0802A14C(this)) { + if (this->field_0x86.HALF.LO) { + if (--this->actionDelay == 0) { + CreateFx(this, 0x48, 0); + DeleteEntity(this); + } + } else { + this->flags &= ~0x80; + this->actionDelay = -(this->entityType.form * 15 - 90); + this->field_0x86.HALF.LO = 1; + } + } else { + gUnk_080CCD88[this->action](this); + } +} + +void sub_08029B90(Entity* this) { + this->action = 1; + this->spriteSettings.b.draw = 1; + sub_0802A058(this); + if (this->entityType.form < 2) { + InitializeAnimation(this, 0); + } else { + InitializeAnimation(this, 4); + } +} + +void sub_08029BC4(Entity* this) { + u32 uVar1; + u32 uVar2; + + sub_0802A18C(this); + uVar1 = this->x.HALF.HI; + uVar2 = this->y.HALF.HI; + if (sub_08029FE4(this)) { + u32 index; + if (this->entityType.form < 2) { + index = 0; + } else { + index = 4; + } + InitializeAnimation(this, this->animationState + index); + } + sub_08029FB4(this, this->x.HALF.HI - uVar1, this->y.HALF.HI - uVar2); +} + +void sub_08029C08(Entity* this) { + this->action = 3; + this->actionDelay = gUnk_080CCDA0[this->entityType.form]; + this->damageType = 0x6b; + this->attachedEntity->action = 2; +} + +void sub_08029C2C(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 4; + sub_0801D2B4(this, 0x7f); + EnqueueSFX(0x6c); + } +} + +void sub_08029C50(Entity* this) { + if (this->parent->field_0x76.HALF.HI != 0) { + this->action = 5; + this->damageType = 0x6a; + } +} + +void sub_08029C6C(Entity* this) { + sub_0802A18C(this); + sub_08029BC4(this); + if (this->parent->action != 3) { + this->action = 1; + sub_0801D2B4(this, 0x77); + } else { + sub_0802A16C(this); + } +} + +void sub_08029C98(Entity* this) { + if (sub_0802A14C(this)) { + CreateFx(this, 0x48, 0); + DeleteEntity(this); + } else { + gUnk_080CCDA8[this->action](this); + } +} + +void sub_08029CCC(Entity* this) { + this->action = 1; + this->spriteSettings.b.draw = 1; + sub_0802A058(this); + InitializeAnimation(this, 8); +} + +void sub_08029CF0(Entity* this) { + if (sub_08029FE4(this)) { + InitializeAnimation(this, this->animationState + 8); + } +} + +void sub_08029D08(Entity* this) { + this->action = 3; + this->actionDelay = 0x47; +} + +void sub_08029D14(Entity* this) { + if (this->actionDelay) { + if (--this->actionDelay == 0) { + InitializeAnimation(this, this->animationState + 0xc); + sub_0801D2B4(this, 0x7f); + EnqueueSFX(0x6c); + } + } else { + GetNextFrame(this); + if (this->frames.all & 0x80) { + this->action = 4; + this->actionDelay = 0x78; + this->damageType = 0x6c; + this->boundingBox = &gUnk_080FD298; + EnqueueSFX(0x6b); + } + } +} + +void sub_08029D78(Entity* this) { + sub_0802A0F8(this); + if (--this->actionDelay == 0) { + this->action = 5; + this->damageType = 0x6a; + this->boundingBox = (BoundingBox*)&gUnk_080FD2A0; + InitializeAnimation(this, this->animationState + 0x10); + } +} + +void sub_08029DAC(Entity* this) { + GetNextFrame(this); + if (this->frames.all & 0x80) { + this->action = 6; + this->parent->field_0x76.HALF.HI = 1; + InitializeAnimation(this, this->animationState + 8); + } +} + +void sub_08029DDC(Entity* this) { + this->action = 7; +} + +void sub_08029DE4(Entity* this) { + sub_08029CF0(this); + if (this->parent->action != 3) { + this->action = 1; + sub_0801D2B4(this, 0x77); + } else { + sub_0802A16C(this); + } +} + +NAKED +void sub_08029E0C(Entity* this) { + asm(".include \"asm/non_matching/madderpillar/sub_08029E0C.inc\""); +} + +void sub_08029EEC(Entity* this) { + u32 uVar1 = (this->direction >> 3) + this->field_0x74.HALF.HI; + if (uVar1 != this->animationState) { + this->animationState = uVar1; + InitAnimationForceUpdate(this, uVar1); + } +} + +void sub_08029F0C(Entity* this) { + switch (this->direction >> 3) { + case 0: + this->field_0x78.HWORD = this->y.HALF.HI - 0x10; + break; + case 1: + this->field_0x78.HWORD = this->x.HALF.HI + 0x10; + break; + case 2: + this->field_0x78.HWORD = this->y.HALF.HI + 0x10; + break; + case 3: + this->field_0x78.HWORD = this->x.HALF.HI - 0x10; + break; + } +} + +bool32 sub_08029F48(Entity* this) { + switch (this->direction >> 3) { + case 0: + if (this->y.HALF.HI <= this->field_0x78.HWORD) { + this->y.HALF.HI = this->field_0x78.HWORD; + return TRUE; + } + break; + case 1: + if (this->x.HALF.HI >= this->field_0x78.HWORD) { + this->x.HALF.HI = this->field_0x78.HWORD; + return TRUE; + } + break; + case 2: + if (this->y.HALF.HI >= this->field_0x78.HWORD) { + this->y.HALF.HI = this->field_0x78.HWORD; + return TRUE; + } + break; + case 3: + if (this->x.HALF.HI <= this->field_0x78.HWORD) { + this->x.HALF.HI = this->field_0x78.HWORD; + return TRUE; + } + break; + } + + return FALSE; +} + +void sub_08029FB4(Entity* this, u32 x, u32 y) { + u8* dst = (u8*)&this->attachedEntity->field_0x78; + s32 unk = this->parent->field_0x7c.BYTES.byte2; + u8 idx = unk % 0xe; + dst[idx] = ((x + 8) & 0xf) | (((y + 8) & 0xf) << 4); +} + +/* The optimizer is strong within you. */ +bool32 sub_08029FE4(Entity* this) { + u8 state; + u8* dst = (u8*)&this->field_0x78; + s32 unk = this->parent->field_0x7c.BYTES.byte2 + 1; + s8 iVar6 = (dst[unk % 0xe] & 0xf) - 8; + s8 iVar5 = (dst[unk % 0xe] >> 4) - 8; + this->x.HALF.HI += iVar6; + this->y.HALF.HI += iVar5; + GetNextFrame(this); + + state = 0xff; + if (iVar6 != 0) { + if (0 < iVar6) { + state = 1; + } else { + state = 3; + } + } + + if (iVar5 != 0) { + if (0 < iVar5) { + state = 2; + } else { + state = 0; + } + } + + if (state != 0xff && state != this->animationState) { + this->animationState = state; + return TRUE; + } else { + return FALSE; + } +} + +void sub_0802A058(Entity* this) { + this->field_0x78.HALF.LO = 0x88; + this->field_0x78.HALF.HI = 0x88; + this->field_0x7a.HALF.LO = 0x88; + this->field_0x7a.HALF.HI = 0x88; + this->field_0x7c.BYTES.byte0 = 0x88; + this->field_0x7c.BYTES.byte1 = 0x88; + this->field_0x7c.BYTES.byte2 = 0x88; + this->field_0x7c.BYTES.byte3 = 0x88; + this->field_0x80.HALF.LO = 0x88; + this->field_0x80.HALF.HI = 0x88; + this->field_0x82.HALF.LO = 0x88; + this->field_0x82.HALF.HI = 0x88; + this->cutsceneBeh.HALF.LO = 0x88; + this->cutsceneBeh.HALF.HI = 0x88; +} + +void sub_0802A098(Entity* this) { + u32 uVar1; + u32 uVar2; + s32 unk = (++this->field_0x7c.BYTES.byte2, this->field_0x7c.BYTES.byte2); + u8 idx = unk % 0xe; + if (idx == 0) { + this->field_0x7c.BYTES.byte2 = 0; + } + uVar1 = this->x.HALF.HI; + uVar2 = this->y.HALF.HI; + ProcessMovement(this); + if (sub_08029F48(this)) { + sub_08029E0C(this); + sub_08029EEC(this); + EnqueueSFX(0x104); + } + + sub_08029FB4(this, this->x.HALF.HI - uVar1, this->y.HALF.HI - uVar2); +} + +void sub_0802A0F8(Entity* this) { + if (this->currentHealth != 0) { + if ((this->bitfield & 0x80) && this->hurtBlinkTime != 0) { + Entity* ent = this; + u32 i; + for (i = 0; i < 6; i++) { + ent = ent->attachedEntity; + ent->hurtBlinkTime = this->hurtBlinkTime; + } + } + } else { + this->parent->flags &= ~0x80; + this->parent->currentHealth = 0; + this->parent->field_0xf = 0x69; + } +} + +bool32 sub_0802A14C(Entity* this) { + u32 ret = FALSE; + + if (this->parent->currentHealth == 0 || this->field_0x86.HALF.LO) { + ret = TRUE; + } else { + ret = FALSE; + } + return ret; +} + +void sub_0802A16C(Entity* this) { + sub_0801D2B4(this, gUnk_080CCDD4[this->parent->field_0x7a.HWORD >> 2 & 3]); +} + +void sub_0802A18C(Entity* this) { + if (this->bitfield & 0x80) { + switch (this->bitfield & 0x7f) { + case 0: + case 1: + case 2: + case 3: + case 0xf: + case 0x13: + case 0x1b: + case 0x1e: + break; + default: + EnqueueSFX(0x12e); + break; + } + } +} + +// clang-format off +void (*const gUnk_080CCD44[])(Entity*) = { + sub_08029870, + sub_08029B2C, + sub_08029B2C, + sub_08029B2C, + sub_08029B2C, + sub_08029B2C, + sub_08029C98, +}; + +void (*const gUnk_080CCD60[])(Entity*) = { + sub_0802988C, + sub_080298A4, + sub_0802988C, + sub_08029980, + sub_08001242, + nullsub_14, +}; + +void (*const gUnk_080CCD78[])(Entity*) = { + sub_0802999C, + sub_08029A94, + sub_08029AA4, + sub_08029AE0, +}; + +void (*const gUnk_080CCD88[])(Entity*) = { + sub_08029B90, + sub_08029BC4, + sub_08029C08, + sub_08029C2C, + sub_08029C50, + sub_08029C6C, +}; + +const u8 gUnk_080CCDA0[] = { + 0x00, 0x24, + 0x30, + 0x3A, + 0x41, + 0x45, + 0x00, + 0x00, +}; + +void (*const gUnk_080CCDA8[])(Entity*) = { + sub_08029CCC, + sub_08029CF0, + sub_08029D08, + sub_08029D14, + sub_08029D78, + sub_08029DAC, + sub_08029DDC, + sub_08029DE4, +}; + +const u8 gUnk_080CCDC8[] = { + 0x08, 0x00, + 0x18, 0x00, + 0x10, 0x08, + 0x10, 0x08, + 0x18, 0x00, + 0x18, 0x10, +}; + +const u16 gUnk_080CCDD4[] = { + 0x80, 0x81, + 0x82, 0x81, +}; +// clang-format on diff --git a/src/enemy/octorok.c b/src/enemy/octorok.c index e4b25fa9..7e563ab0 100644 --- a/src/enemy/octorok.c +++ b/src/enemy/octorok.c @@ -10,7 +10,6 @@ extern u32 sub_0806F520(); extern void sub_0806F4E8(); extern void UpdateAnimationVariableFrames(); extern void sub_0804A720(); -extern u32 Random(); extern Entity* sub_08049DF4(u32); void Octorok_Pause(); @@ -233,7 +232,10 @@ const u8 gOctorokSpitChanceModifier[] = { }; const u8 gOctorokNutOffset[] = { - 0, -3, 4, 0, 0, 2, -4, 0, + 0, -3, + 4, 0, + 0, 2, + -4, 0, }; const s8 gUnk_080CA17E[] = { diff --git a/src/enemy/pesto.c b/src/enemy/pesto.c index 5849d45a..8147d832 100644 --- a/src/enemy/pesto.c +++ b/src/enemy/pesto.c @@ -49,7 +49,7 @@ void sub_08023F44(Entity* this) { void sub_08023F5C(Entity* this) { if (this->damageType != 0x6e) { if (this->bitfield == 0x80) { - *(u8*)&this->field_0x86 = 0x30; + this->field_0x86.HALF.LO = 0x30; if ((this->field_0x82.HALF.HI & 0xf) == 3 && this->action == 6) { switch (this->field_0x80.HALF.LO) { @@ -155,8 +155,8 @@ void sub_080240B8(Entity* this) { this->field_0x80.HALF.HI = Random() & 0x40; this->field_0x82.HALF.LO = 0; this->field_0x82.HALF.HI = 0x80; - *((u8*)&this->field_0x86 + 0) = 0; - *((u8*)&this->field_0x86 + 1) = 0; + this->field_0x86.HALF.LO = 0; + this->field_0x86.HALF.HI = 0; this->actionDelay = 0; this->field_0xf = 0x20; this->field_0x3c |= 0x10; @@ -727,19 +727,19 @@ void sub_08024C94(Entity* this) { bool32 sub_08024CC0(Entity* this) { bool32 uVar2; - uVar2 = 1; + uVar2 = TRUE; if (!sub_08024C48(this, 1)) { - uVar2 = 0; + uVar2 = FALSE; } else if (!sub_08049F1C(this, gUnk_020000B0, 0x50) || !sub_08049FDC(this, 3)) { - uVar2 = 0; + uVar2 = FALSE; sub_08024C7C(this); } return uVar2; } void sub_08024D00(Entity* this) { - if (*(u8*)&this->field_0x86) { - (*(u8*)&this->field_0x86)--; + if (this->field_0x86.HALF.LO) { + this->field_0x86.HALF.LO--; GetNextFrame(this); } else { sub_08024940(this); @@ -804,9 +804,9 @@ void sub_08024E4C(Entity* this) { this->cutsceneBeh.HALF.LO += 1 + (Random() & 1); } - if (gUnk_02002A40.stats.health == 0 || *((u8*)&this->field_0x86 + 1) == 4) { + if (gUnk_02002A40.stats.health == 0 || this->field_0x86.HALF.HI == 4) { this->cutsceneBeh.HALF.LO = 0x30; - *((u8*)&this->field_0x86 + 1) = 0; + this->field_0x86.HALF.HI = 0; sub_08024F50(this); this->field_0x80.HALF.LO = 0; this->nonPlanarMovement = 0x40; @@ -828,7 +828,7 @@ void sub_08024E4C(Entity* this) { player->animationState = 4; player->spritePriority.b1 = 0; if (this->field_0xf == 0) { - (*((u8*)&this->field_0x86 + 1))++; + (this->field_0x86.HALF.HI++; player->hurtBlinkTime = 8; ModHealth(-2); sub_0800449C(player, 0x7a); diff --git a/src/enemy/puffstool.c b/src/enemy/puffstool.c index 2a87dc68..881437f5 100644 --- a/src/enemy/puffstool.c +++ b/src/enemy/puffstool.c @@ -169,7 +169,7 @@ void sub_08025230(Entity* this) { if (sub_0802571C(this)) { this->action = 2; this->actionDelay = 240; - this->field_0x86 = COORD_TO_TILE(this); + this->field_0x86.HWORD = COORD_TO_TILE(this); } } else { this->field_0x78.HWORD--; @@ -186,12 +186,12 @@ void sub_080252E0(Entity* this) { GetNextFrame(this); tile = COORD_TO_TILE(this); - if (tile == this->field_0x86) { + if (tile == this->field_0x86.HWORD) { if (--this->actionDelay == 0) { sub_080256B4(this); } } else { - this->field_0x86 = tile; + this->field_0x86.HWORD = tile; this->actionDelay = 240; } diff --git a/src/enemy/rupeeLike.c b/src/enemy/rupeeLike.c index 05117e73..b7b43f8b 100644 --- a/src/enemy/rupeeLike.c +++ b/src/enemy/rupeeLike.c @@ -17,8 +17,9 @@ extern void (*const gUnk_080CCC00[])(Entity*); extern void (*const gUnk_080CCC18[])(Entity*); extern void (*const gUnk_080CCC3C[])(Entity*); -extern u8 gUnk_080CCC34[]; -extern u8 gUnk_080CCC47[]; +extern const u8 gUnk_080CCC34[]; +extern const s8 gUnk_080CCC44[]; +extern const u8 gUnk_080CCC47[]; extern BoundingBox gUnk_080FD260; void RupeeLike(Entity* this) { @@ -146,8 +147,6 @@ void sub_080294D4(Entity* this) { } } -extern s8 gUnk_080CCC44[]; - void sub_0802953C(Entity* this) { u8* pbVar3; @@ -279,4 +278,44 @@ void sub_080297F0(Entity* this) { this->palette.b.b0 = temp; this->spriteVramOffset = 9; InitializeAnimation(this, 0x54); -} \ No newline at end of file +} + +// clang-format off +void (*const gUnk_080CCC00[])(Entity*) = { + sub_08029300, + sub_08029318, + sub_08001324, + sub_080293B4, + sub_08001242, + nullsub_141, +}; + +void (*const gUnk_080CCC18[])(Entity*) = { + sub_0802940C, + sub_0802944C, + sub_08029474, + sub_080294D4, + sub_0802953C, + sub_08029610, + sub_08029630, +}; + +const u8 gUnk_080CCC34[] = { + 0x54, 0x55, + 0x56, 0x55, + 0x56, 0x57, +}; + +void (*const gUnk_080CCC3C[])(Entity*) = { + sub_08029660, + sub_08029688, +}; + +const s8 gUnk_080CCC44[] = { + -1, -5, -20, +}; + +const u8 gUnk_080CCC47[] = { + 2, 1, 0, +}; +// clang-format on diff --git a/src/enemy/sensorBladeTrap.c b/src/enemy/sensorBladeTrap.c new file mode 100644 index 00000000..a0a049c0 --- /dev/null +++ b/src/enemy/sensorBladeTrap.c @@ -0,0 +1,120 @@ +#include "enemy.h" +#include "functions.h" + +extern u32 sub_0804A024(Entity*, u32, u32); +extern bool32 sub_080AE4CC(Entity*, u32, u32, u32); +extern bool32 sub_080AF038(Entity*); + +extern Entity gUnk_02027EB4; +extern Entity gUnk_0200D654; + +void sub_0802BB10(Entity*); +bool32 sub_0802BB2C(Entity*, u32); + +extern void (*const gUnk_080CD3C4[])(Entity*); +extern const u16 gUnk_080CD3D4[]; +extern const s8 gUnk_080CD3DC[]; + +void SensorBladeTrap(Entity* this) { + gUnk_080CD3C4[this->action](this); +} + +void sub_0802B9EC(Entity* this) { + this->action = 1; + this->field_0x78.HWORD = gUnk_080CD3D4[this->entityType.form]; + this->field_0x7c.HALF.LO = this->cutsceneBeh.HWORD; + this->field_0x7c.HALF.HI = this->field_0x86.HWORD; +} + +void sub_0802BA18(Entity* this) { + u32 direction = sub_0804A024(this, 1, 0xe); + if (direction == 0xff) + return; + + if (sub_0802BB2C(this, direction)) + return; + + this->action = 2; + this->nonPlanarMovement = this->field_0x78.HWORD; + this->direction = direction; + + switch (direction >> 3) { + case 0: + this->field_0x7a.HWORD = this->y.HALF.HI - this->field_0x7c.HALF.HI; + break; + case 1: + this->field_0x7a.HWORD = this->x.HALF.HI + this->field_0x7c.HALF.LO; + break; + case 2: + this->field_0x7a.HWORD = this->y.HALF.HI + this->field_0x7c.HALF.HI; + break; + case 3: + this->field_0x7a.HWORD = this->x.HALF.HI - this->field_0x7c.HALF.LO; + break; + } +} + +void sub_0802BA8C(Entity* this) { + if (!sub_080AF038(this)) { + sub_0802BB10(this); + } else { + switch (this->direction >> 3) { + case 0: + if (this->field_0x7a.HWORD >= this->y.HALF.HI) + sub_0802BB10(this); + break; + case 1: + if (this->field_0x7a.HWORD <= this->x.HALF.HI) + sub_0802BB10(this); + break; + case 2: + if (this->field_0x7a.HWORD <= this->y.HALF.HI) + sub_0802BB10(this); + break; + case 3: + if (this->field_0x7a.HWORD >= this->x.HALF.HI) + sub_0802BB10(this); + break; + } + } +} + +void sub_0802BAFC(Entity* this) { + if (!sub_080AF038(this)) { + this->action = 1; + } +} + +void sub_0802BB10(Entity* this) { + this->action = 3; + this->nonPlanarMovement = 0xc0; + this->direction = this->direction ^ 0x10; + EnqueueSFX(0x74); +} + +bool32 sub_0802BB2C(Entity* this, u32 param_2) { + Entity* ent = this->collisionLayer == 2 ? &gUnk_0200D654 : &gUnk_02027EB4; + const s8* ptr = &gUnk_080CD3DC[param_2 >> 2]; + return sub_080AE4CC(ent, this->x.HALF.HI + ptr[0], this->y.HALF.HI + ptr[1], 0); +} + +// clang-format off +void (*const gUnk_080CD3C4[])(Entity*) = { + sub_0802B9EC, + sub_0802BA18, + sub_0802BA8C, + sub_0802BAFC, +}; + +const u16 gUnk_080CD3D4[] = { + 0x100, 0x180, + 0x200, 0x280, +}; + +const s8 gUnk_080CD3DC[] = { + 0, -12, + 12, 0, + 0, 12, + -12, 0, +}; +// clang-format on diff --git a/src/enemy/spark.c b/src/enemy/spark.c new file mode 100644 index 00000000..9299c856 --- /dev/null +++ b/src/enemy/spark.c @@ -0,0 +1,140 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern void (*const gUnk_080CD234[])(Entity*); +extern void (*const gUnk_080CD24C[])(Entity*); + +void Spark(Entity* this) { + gUnk_080CD234[GetNextFunction(this)](this); +} + +void sub_0802B2C8(Entity* this) { + gUnk_080CD24C[this->action](this); +} + +void sub_0802B2E0(Entity* this) { + Entity* ent; + + if (this->bitfield & 0x80) { + if ((this->bitfield & 0x7f) == 0x14) { + this->flags &= ~0x80; + this->hurtBlinkTime = 0; + this->spriteSettings.b.draw = 0; + this->action = 2; + ent = CreateFx(this, 2, 0); + if (ent) { + this->attachedEntity = ent; + this->actionDelay = 14; + CopyPosition(this, ent); + } + } + } +} + +void nullsub_15(Entity* this) { + /* ... */ +} + +void sub_0802B33C(Entity* this) { + sub_0804A720(this); + this->action = 1; + this->direction = (this->entityType).parameter; + this->field_0xf = 0x78; + InitializeAnimation(this, 0); +} + +void sub_0802B35C(Entity* this) { + bool32 is_head; + + GetNextFrame(this); + ProcessMovement(this); + is_head = this->entityType.form == 0; + if (this->collisions == 0) { + if (--this->field_0xf == 0) { + this->field_0xf = 0x78; + + this->direction += is_head ? 0x08 : 0x18; + this->direction = DirectionRound(this->direction); + } + } else { + this->field_0xf = 0x78; + switch (DirectionRound(this->direction)) { + case DirectionNorth: + if (this->collisions & 0xe) { + this->direction = is_head ? DirectionWest : DirectionEast; + } else { + if ((this->collisions & 0xe000) == 0x4000 && is_head) { + this->direction = DirectionEast; + } + if ((this->collisions & 0xe00) == 0x400 && !is_head) { + this->direction = DirectionWest; + } + } + break; + case DirectionSouth: + if (this->collisions & 0xe0) { + this->direction = is_head ? DirectionEast : DirectionWest; + } else { + if ((this->collisions & 0xe000) == 0x2000 && !is_head) { + this->direction = DirectionEast; + } + if ((this->collisions & 0xe00) == 0x200 && is_head) { + this->direction = DirectionWest; + } + } + break; + case DirectionWest: + if (this->collisions & 0xe00) { + this->direction = is_head ? DirectionSouth : DirectionNorth; + } else { + if ((this->collisions & 0xe) == 4 && is_head) { + this->direction = DirectionNorth; + } + if ((this->collisions & 0xe0) == 0x40 && !is_head) { + this->direction = DirectionSouth; + } + } + break; + case DirectionEast: + if (this->collisions & 0xe000) { + this->direction = is_head ? DirectionNorth : DirectionSouth; + } else { + if ((this->collisions & 0xe) == 2 && !is_head) { + this->direction = DirectionNorth; + } + if ((this->collisions & 0xe0) == 0x20 && is_head) { + this->direction = DirectionSouth; + } + } + break; + } + } +} + +void sub_0802B4A8(Entity* this) { + if (--this->actionDelay == 0) { + Entity* ent = CreateObjectWithParent(this, 0, 0x60, 0); + if (ent) { + ent->y.HALF.HI -= 4; + } + DeleteEntity(this); + } +} + +// clang-format off +void (*const gUnk_080CD234[])(Entity*) = { + sub_0802B2C8, + sub_0802B2E0, + sub_08001324, + sub_0804A7D4, + sub_08001242, + nullsub_15, +}; + +void (*const gUnk_080CD24C[])(Entity*) = { + sub_0802B33C, + sub_0802B35C, + sub_0802B4A8, +}; +// clang-format on diff --git a/src/enemy/spearMoblin.c b/src/enemy/spearMoblin.c new file mode 100644 index 00000000..ad669ed9 --- /dev/null +++ b/src/enemy/spearMoblin.c @@ -0,0 +1,439 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern bool32 sub_0806FC80(Entity*, Entity*, u32); +extern Entity* sub_080A7EE0(u32); +extern Entity* sub_08049DF4(u32); + +void sub_08028604(Entity*); +void sub_08028754(Entity*); +void sub_08028784(Entity*); +void sub_080287E0(Entity*); +void sub_08028728(Entity*); +bool32 sub_080286CC(Entity*); +bool32 sub_080288A4(Entity*); +void sub_08028858(Entity*); +void sub_080288C0(Entity*); +bool32 sub_08028828(u32, u32); +void sub_080287B4(Entity*); + +extern void (*const gUnk_080CC790[])(Entity*); +extern void (*const gUnk_080CC7A8[])(Entity*); +extern const u8 gUnk_080CC7BC[]; +extern const s8 gUnk_080CC7C0[]; +extern const u8 gUnk_080CC7D0[]; +extern const u16 gUnk_080CC7D8[]; + +extern const BoundingBox* const gUnk_080CC944[]; + +void SpearMoblin(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CC790); + SetChildOffset(this, 0, 1, -0x20); + if (this->attachedEntity && this->attachedEntity->next) { + CopyPosition(this, this->attachedEntity); + } +} + +void sub_0802826C(Entity* this) { + gUnk_080CC7A8[this->action](this); +} + +void sub_08028284(Entity* this) { + if (this->field_0x43 != 0) + sub_0804A9FC(this, 0x1c); + + sub_0804AA30(this, gUnk_080CC790); + if (this->bitfield & 0x80) { + if (this->action != 4) { + sub_08028754(this); + } else { + if ((this->bitfield & 0x3f) == 0) { + this->field_0x7a.HALF.LO++; + this->field_0x80.HALF.HI = 0x16; + sub_08028784(this); + } + } + } + + this->attachedEntity->hurtBlinkTime = this->hurtBlinkTime; + if (this->currentHealth == 0) { + this->nonPlanarMovement = 0; + this->field_0x82.HALF.LO = 0; + sub_080287E0(this); + DeleteEntity(this->attachedEntity); + this->attachedEntity = NULL; + } +} + +void nullsub_13(Entity* this) { + /* ... */ +} + +void sub_08028314(Entity* this) { + Entity* pEVar2; + + sub_0804A720(this); + this->action = 1; + this->animationState = 0; + this->field_0x7a.HALF.HI = 0; + this->field_0x80.HALF.LO = 0; + this->field_0x82.HALF.HI = 0; + this->field_0x80.HALF.HI = 0; + this->field_0x7a.HALF.LO = 0; + this->field_0x82.HALF.LO = 1; + + if (this->actionDelay) { + this->animationState = this->entityType.parameter << 1; + this->actionDelay = 0x1e; + this->nonPlanarMovement = 0x80; + this->direction = this->animationState << 2; + sub_080287E0(this); + } else { + this->animationState = 0x10; + sub_08028604(this); + } + + pEVar2 = sub_080A7EE0(3); + if (pEVar2 != NULL) { + pEVar2->parent = this; + this->attachedEntity = pEVar2; + } +} + +void sub_08028378(Entity* this) { + if (this->field_0x80.HALF.HI != 0) { + this->field_0x80.HALF.HI--; + } + + if (--this->actionDelay == 0) { + if (++this->field_0x80.HALF.LO >= 0x10) { + sub_08028728(this); + } else { + sub_08028604(this); + } + } else { + if (sub_080286CC(this)) { + this->field_0x7a.HALF.HI |= 1; + } + if (sub_080288A4(this)) { + sub_0800417E(this, this->collisions); + this->animationState = DirectionRoundUp(this->direction) >> 2; + this->field_0x82.HALF.HI++; + sub_080287E0(this); + } + } + + if (this->field_0xf >= 0xc) { + if (this->field_0x7a.HALF.HI != 0) { + sub_08028754(this); + } + } else { + this->field_0xf++; + } + + sub_08028858(this); +} + +void sub_08028420(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 3; + this->field_0x82.HALF.LO = 0; + this->field_0x80.HALF.LO = 0; + this->animationState = 0x10; + sub_08028604(this); + } else { + if (sub_080286CC(this)) { + this->field_0x7a.HALF.HI |= 1; + } + } + + if (this->field_0xf >= 0xc) { + if (this->field_0x7a.HALF.HI != 0) { + sub_08028754(this); + } + } else { + this->field_0xf++; + } + + sub_08028858(this); +} + +void sub_08028488(Entity* this) { + if (--this->actionDelay == 0) { + switch (this->field_0x82.HALF.LO) { + case 3: + this->action = 4; + this->nonPlanarMovement = 0x180; + this->direction = sub_08049F84(this, 1); + EnqueueSFX(0x11e); + break; + case 2: + this->action = 2; + this->nonPlanarMovement = 0; + this->actionDelay = (Random() & 7) * 3 + 0x40; + break; + case 4: + this->direction = (this->direction + 0x10) & 0x18; + /* fallthrough */ + case 1: + default: + this->action = 1; + this->field_0x82.HALF.LO = 1; + this->nonPlanarMovement = 0x80; + this->actionDelay = (Random() & 7) * 3 + 0x22; + break; + } + + this->field_0xf = 0; + this->animationState = DirectionRoundUp(this->direction) >> 2; + sub_080287E0(this); + } + + sub_08028858(this); +} + +void sub_08028528(Entity* this) { + Entity* ent = sub_08049DF4(1); + const BoundingBox* box; + + if (ent == NULL) { + this->field_0xf = 0; + sub_08028728(this); + } else { + sub_080288C0(this); + box = gUnk_080CC944[this->animationState >> 1]; + this->boundingBox->unknown[0] = box->unknown[0]; + this->boundingBox->unknown[1] = box->unknown[1]; + this->boundingBox->unknown[6] = box->unknown[6]; + this->boundingBox->unknown[7] = box->unknown[7]; + + if (this->field_0x7a.HALF.LO != 0) { + this->field_0x7a.HALF.LO = 0; + this->field_0x80.HALF.HI = 0x16; + sub_08028784(this); + } else { + if (++this->actionDelay == 0x20) { + u32 direction; + this->actionDelay = 0; + direction = GetFacingDirection(this, ent); + if (sub_08028828(this->direction, direction)) { + this->direction = direction; + } + } + + if ((this->actionDelay & 7) == 0) { + EnqueueSFX(0xf0); + CreateFx(this, 2, 0x40); + } + + if (++this->field_0x7a.HALF.HI == 0x80) { + this->field_0x7a.HALF.LO++; + } + } + + if (0x20 < this->field_0x7a.HALF.HI) { + ProcessMovement(this); + } + + GetNextFrame(this); + } +} + +#if NON_MATCHING +void sub_08028604(Entity* this) { + this->field_0xf = 0; + if (this->field_0x82.HALF.LO == 1) { + this->actionDelay = gUnk_080CC7BC[Random() & 3]; + this->nonPlanarMovement = 0x80; + if (sub_08049FA0(this) != 0) { + this->direction = gUnk_080CC7D0[Random() & 7] + 0x18 + this->direction & 0x18; + } else { + u32 iVar3 = sub_08049EE4(this); + u32 uVar1; + if (this->field_0x82.HALF.HI == '\0') { + uVar1 = gUnk_080CC7C0[Random() & 0xf]; + } else { + uVar1 = gUnk_080CC7C0[Random() & 7]; + this->actionDelay = this->actionDelay + 0x10; + this->field_0x82.HALF.HI--; + } + this->direction = iVar3 + uVar1 + 4U & 0x18; + } + } else { + this->actionDelay = 0xc; + this->nonPlanarMovement = 0; + } + + if (this->direction >> 2 != this->animationState) { + this->animationState = this->direction >> 2; + sub_080287E0(this); + } +} +#else +NAKED +void sub_08028604(Entity* this) { + asm(".include \"asm/non_matching/spearMoblin/sub_08028604.inc\""); +} +#endif + +bool32 sub_080286CC(Entity* this) { + if (this->field_0x80.HALF.HI == 0) { + Entity* ent = sub_08049DF4(1); + if (ent != NULL) { + if (this->field_0x82.HALF.LO == 2 && sub_0806FC80(this, ent, 0x30)) + return TRUE; + + if (sub_0806FC80(this, ent, 0x40) && + DirectionRoundUp(GetFacingDirection(this, ent)) >> 2 == this->animationState) + return TRUE; + } + } + + return FALSE; +} + +void sub_08028728(Entity* this) { + this->animationState = DirectionRoundUp(this->direction) >> 2; + this->direction = this->animationState << 2; + this->field_0x82.HALF.HI >>= 1; + sub_080287B4(this); + this->field_0x82.HALF.LO = 2; +} + +void sub_08028754(Entity* this) { + this->direction = sub_08049F84(this, 1); + this->animationState = DirectionRoundUp(this->direction) >> 2; + this->field_0x82.HALF.HI = 0; + sub_080287B4(this); + this->field_0x82.HALF.LO = 3; +} + +void sub_08028784(Entity* this) { + this->animationState = DirectionRoundUp(this->direction) >> 2; + this->direction = this->animationState << 2; + this->field_0x82.HALF.HI = 0; + sub_080287B4(this); + this->actionDelay <<= 1; + this->field_0x82.HALF.LO = 4; +} + +void sub_080287B4(Entity* this) { + this->action = 3; + this->actionDelay = 0x20; + this->field_0xf = 0; + this->field_0x80.HALF.LO = 0; + this->field_0x7a.HALF.HI = 0; + this->nonPlanarMovement = 0; + this->field_0x82.HALF.LO = 0; + sub_080287E0(this); +} + +void sub_080287E0(Entity* this) { + u32 sprite = this->animationState >> 1; + switch (this->field_0x82.HALF.LO) { + case 0: + /* ... */ + break; + case 1: + case 4: + sprite += 4; + break; + case 3: + sprite += 8; + break; + case 2: + sprite += 0xc; + break; + } + InitializeAnimation(this, sprite); +} + +bool32 sub_08028828(u32 arg0, u32 arg1) { + if (DirectionRoundUp(arg1) == DirectionRoundUp(arg0)) { + u32 angle1 = (arg1 + 5) & 7; + u32 angle0 = (arg0 + 5) & 7; + if (angle1 < 3 && angle0 < 3) + return TRUE; + } + + return FALSE; +} + +void sub_08028858(Entity* this) { + const BoundingBox* box; + + sub_080288C0(this); + box = gUnk_080CC944[this->animationState >> 1]; + this->boundingBox->unknown[0] = box->unknown[0]; + this->boundingBox->unknown[1] = box->unknown[1]; + this->boundingBox->unknown[6] = box->unknown[6]; + this->boundingBox->unknown[7] = box->unknown[7]; + + if (this->field_0x82.HALF.LO == 0) { + this->nonPlanarMovement = 0; + } + + ProcessMovement(this); + GetNextFrame(this); +} + +bool32 sub_080288A4(Entity* this) { + return (this->collisions & gUnk_080CC7D8[this->animationState >> 1]) != 0; +} + +void sub_080288C0(Entity* this) { + Entity* ent = this->attachedEntity; + if (ent && (ent->bitfield & 0x80)) { + this->field_0x3e = ent->field_0x3e; + this->hurtBlinkTime = -ent->hurtBlinkTime; + this->field_0x46 = ent->field_0x46; + this->field_0x42 = ent->field_0x42; + ent->field_0x42 = 0; + } +} + +// clang-format off +void (*const gUnk_080CC790[])(Entity*) = { + sub_0802826C, + sub_08028284, + sub_08001324, + sub_0804A7D4, + sub_08001242, + nullsub_13, +}; + +void (*const gUnk_080CC7A8[])(Entity*) = { + sub_08028314, + sub_08028378, + sub_08028420, + sub_08028488, + sub_08028528, +}; + +const u8 gUnk_080CC7BC[] = { + 0x30, 0x60, 0x6C, 0x91, +}; + +const s8 gUnk_080CC7C0[] = { + 0xF8, 0x0C, + 0xF4, 0x08, + 0x04, 0xFA, + 0x06, 0xFC, + 0x00, 0xFD, + 0x01, 0x03, + 0xFF, 0x02, + 0x00, 0xFE, +}; + +const u8 gUnk_080CC7D0[] = { + 0x08, 0x10, + 0x08, 0x00, + 0x10, 0x08, + 0x10, 0x00, +}; + +const u16 gUnk_080CC7D8[] = { + 0xE, 0xE000, 0xE0, 0xE00, +}; +// clang-format on diff --git a/src/enemy/spikedBeetle.c b/src/enemy/spikedBeetle.c new file mode 100644 index 00000000..e1c32ce0 --- /dev/null +++ b/src/enemy/spikedBeetle.c @@ -0,0 +1,238 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern u32 sub_0804A024(Entity*, u32, u32); + +extern Entity* gUnk_020000B0; + +void sub_0802B9B4(Entity*); +void sub_0802B7A4(Entity*); +void sub_0802B960(Entity*); + +extern void (*const gUnk_080CD2D8[])(Entity*); +extern void (*const gUnk_080CD2F0[])(Entity*); +extern const u8 gUnk_080CD314[]; +extern const s8 gUnk_080CD318[]; + +void SpikedBeetle(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CD2D8); + SetChildOffset(this, 0, 1, -0x10); +} + +void sub_0802B610(Entity* this) { + gUnk_080CD2F0[this->action](this); +} + +void sub_0802B628(Entity* this) { + switch (this->bitfield & 0x7f) { + case 0: + case 4: + case 5: + case 6: + case 8: + case 9: + case 10: + case 0xb: + case 0xc: + if (this->action == 4) { + this->actionDelay = 1; + } + break; + case 2: + case 3: + case 0x16: + case 0x18: + case 0x19: + case 0x1a: + case 0x1d: + if (this->action < 6) { + this->action = 6; + this->field_0x20 = 0x18000; + this->nonPlanarMovement = 0xc0; + this->direction = this->field_0x3e; + this->field_0x42 = 0; + this->hurtBlinkTime = -8; + this->damageType = 100; + InitializeAnimation(this, 9); + } + } + if (this->field_0x43) { + sub_0804A9FC(this, 0x1c); + } + sub_0804AA30(this, gUnk_080CD2D8); +} + +void nullsub_144(Entity* this) { + /* ... */ +} + +void sub_0802B72C(Entity* this) { + sub_0804A720(this); + this->actionDelay = 1; + this->animationState = 0xff; + sub_0802B7A4(this); +} + +void sub_0802B744(Entity* this) { + u32 direction; + + GetNextFrame(this); + if (sub_08049FDC(this, 1) && (direction = sub_0804A024(this, 1, 0xc), direction != 0xff)) { + this->action = 3; + this->actionDelay = 0x1e; + this->direction = DirectionRound(direction); + InitializeAnimation(this, 8); + } else { + if (--this->actionDelay == 0) { + this->action = 2; + this->actionDelay = 0x1e; + } else { + if (!ProcessMovement(this)) { + this->actionDelay = 1; + } + } + } +} + +void sub_0802B7A4(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 1; + this->actionDelay = gUnk_080CD314[Random() & 3]; + this->nonPlanarMovement = 0x60; + sub_0802B960(this); + if (this->direction != 0xff) { + u32 animation = this->direction >> 3; + if (animation != this->animationState) { + this->animationState = animation & 3; + InitializeAnimation(this, animation); + } + } + } +} + +void sub_0802B7FC(Entity* this) { + GetNextFrame(this); + if (--this->actionDelay == 0) { + this->action = 4; + this->actionDelay = 0x78; + this->nonPlanarMovement = 0x1c0; + } +} + +void sub_0802B820(Entity* this) { + if (!sub_080AEFE0(this)) { + this->actionDelay = 1; + } + GetNextFrame(this); + if (--this->actionDelay == 0) { + sub_0802B9B4(this); + } else if (sub_08049FDC(this, 1)) { + if ((this->actionDelay & 0xf) == 0) { + sub_08004596(this, GetFacingDirection(this, gUnk_020000B0)); + } + } else { + sub_0802B9B4(this); + } +} + +void sub_0802B880(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 2; + this->actionDelay = 0x3c; + this->animationState = DirectionToAnimationState(this->direction); + InitializeAnimation(this, this->animationState); + } +} + +void sub_0802B8B0(Entity* this) { + sub_080AEFE0(this); + switch (sub_080044EC(this, 0x1800)) { + case 0: + this->action = 7; + this->actionDelay = 0x96; + /* fallthrough */ + case 1: + EnqueueSFX(299); + break; + } +} + +void sub_0802B8E0(Entity* this) { + if (--this->actionDelay) { + if (this->actionDelay < 0x3c && (this->actionDelay & 1)) { + this->spriteOffsetX += gUnk_080CD318[(this->actionDelay >> 1) & 3]; + } + } else { + this->action = 8; + this->field_0x20 = 0x10000; + this->nonPlanarMovement = 0x60; + this->damageType = 99; + InitializeAnimation(this, this->animationState); + EnqueueSFX(299); + } +} + +void sub_0802B948(Entity* this) { + if (!sub_08003FC4(this, 0x1800)) { + this->action = 1; + this->actionDelay = 1; + } +} + +void sub_0802B960(Entity* this) { + if (sub_08049FDC(this, 1)) { + if ((Random() & 7) == 0) { + this->direction = DirectionRoundUp(sub_08049F84(this, 1)); + return; + } + } else if (!sub_08049FA0(this)) { + if ((Random() & 3) == 0) { + this->direction = DirectionRoundUp(sub_08049EE4(this)); + return; + } + } + + this->direction = DirectionRound(Random()); +} + +void sub_0802B9B4(Entity* this) { + this->action = 5; + this->actionDelay = 0x3c; + this->animationState = (this->direction >> 3) & 3; + InitializeAnimation(this, this->animationState + 4); +} + +// clang-format off +void (*const gUnk_080CD2D8[])(Entity*) = { + sub_0802B610, + sub_0802B628, + sub_08001324, + sub_0804A7D4, + sub_08001242, + nullsub_144, +}; + +void (*const gUnk_080CD2F0[])(Entity*) = { + sub_0802B72C, + sub_0802B744, + sub_0802B7A4, + sub_0802B7FC, + sub_0802B820, + sub_0802B880, + sub_0802B8B0, + sub_0802B8E0, + sub_0802B948, +}; + +const u8 gUnk_080CD314[] = { + 0x30, + 0x48, + 0x60, + 0x78, +}; + +const s8 gUnk_080CD318[] = { + 1, -1, -1, 1, +}; +// clang-format on diff --git a/src/enemy/wallMaster.c b/src/enemy/wallMaster.c new file mode 100644 index 00000000..8f359f31 --- /dev/null +++ b/src/enemy/wallMaster.c @@ -0,0 +1,219 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" +#include "area.h" + +extern void sub_08001328(Entity*); +extern Entity* sub_08049DF4(u32); +extern void DoExitTransition(u32*); + +extern u32* gUnk_0813AB1C[]; + +void sub_0802A78C(Entity*); +void sub_0802A7D0(Entity*); + +extern void (*const gUnk_080CD07C[])(Entity*); +extern void (*const gUnk_080CD094[])(Entity*); +extern const s8 gUnk_080CD0B0[]; + +void WallMaster(Entity* this) { + gUnk_080CD07C[GetNextFunction(this)](this); + SetChildOffset(this, 0, 1, -0x10); +} + +void sub_0802A434(Entity* this) { + sub_0802A78C(this); + gUnk_080CD094[this->action](this); +} + +void sub_0802A454(Entity* this) { + if (this->damageType != 0x75 && ((this->bitfield & 0x7f) == 0 || (this->bitfield & 0x7f) == 0x1e)) { + this->action = 5; + this->flags &= ~0x80; + this->field_0x7c.HALF.HI = gPlayerEntity.x.HALF.HI; + this->field_0x80.HWORD = gPlayerEntity.y.HALF.HI; + this->field_0x82.HWORD = gPlayerEntity.height.HALF.HI; + if (this->action != 3) { + InitializeAnimation(this, 1); + } + } + + if (this->field_0x42) + if (this->field_0x42 > 4) + this->field_0x42 -= 4; + + if (this->field_0x43 != 0) { + sub_0804A9FC(this, 0x1c); + } + + sub_0804AA30(this, gUnk_080CD07C); +} + +void nullsub_142(Entity* this) { + /* ... */ +} + +void sub_0802A4E4(Entity* this) { + sub_0804A720(this); + this->action = 1; + this->collisionLayer = 3; + this->field_0x7c.BYTES.byte1 = Random(); + this->field_0x7a.HWORD = this->entityType.parameter * 0x3c; + this->field_0x7c.BYTES.byte0 = this->actionDelay; + this->field_0x78.HWORD = this->actionDelay * 0x3c; + UpdateSpriteForCollisionLayer(this); + sub_0802A7D0(this); +} + +void sub_0802A534(Entity* this) { + if (this->field_0x78.HWORD) { + this->field_0x78.HWORD--; + } else if (this->field_0x7a.HWORD == 0) { + Entity* ent = sub_08049DF4(1); + if (ent != NULL) { + this->action = 2; + this->actionDelay = 0x5a; + this->flags |= 0x80; + this->spriteSettings.b.draw = 3; + this->x.HALF.HI = ent->x.HALF.HI; + this->y.HALF.HI = ent->y.HALF.HI; + this->height.HALF.HI = -0x80; + this->spritePriority.b1 = 1; + this->spriteSettings.b.shadow = 2; + InitializeAnimation(this, 2); + sub_0802A7D0(this); + } + } +} + +void sub_0802A5B8(Entity* this) { + sub_0802A7D0(this); + if (this->actionDelay) { + if (--this->actionDelay == 0) { + EnqueueSFX(0x12d); + InitializeAnimation(this, 0); + } + } else { + this->height.HALF.HI += 3; + if (-1 < this->height.HALF.HI) { + this->action = 3; + this->spriteSettings.b.draw = 1; + this->height.HALF.HI = 0; + InitializeAnimation(this, 1); + } + } +} + +/* Kids... don't try to optimize code like this... */ +void sub_0802A610(Entity* this) { + u32 flags; + + GetNextFrame(this); + sub_0802A7D0(this); + flags = this->frames.all & 0x80; + if (flags) { + this->action = 4; + this->actionDelay = 0x1e; + } else if (this->frames.all & 1) { + this->frames.all = flags; + this->damageType = 0x75; + } +} + +void sub_0802A650(Entity* this) { + sub_0802A7D0(this); + this->height.HALF.HI -= 2; + if (-0xa0 > this->height.HALF.HI) { + this->action = 1; + this->flags &= ~0x80; + this->spriteSettings.b.draw = 0; + this->damageType = 0x74; + this->field_0x78.HWORD = this->field_0x7c.BYTES.byte0 * 0x3c; + } +} + +void sub_0802A69C(Entity* this) { + u32 flags; + + sub_0802A7D0(this); + gPlayerState.field_0xa |= 0x80; + gPlayerState.field_0x1a[0] |= 0x80; + gPlayerEntity.x.HALF.HI = this->field_0x7c.HALF.HI; + gPlayerEntity.y.HALF.HI = this->field_0x80.HWORD; + gPlayerEntity.height.HALF.HI = this->field_0x82.HWORD; + + if (gPlayerEntity.height.HALF.HI != this->height.HALF.HI) { + if (gPlayerEntity.height.HALF.HI < this->height.HALF.HI) { + this->height.HALF.HI--; + } else { + this->height.HALF.HI++; + } + } + + /* sigh... */ + GetNextFrame(this); + flags = this->frames.all & 0x80; + if (flags) { + this->action = 6; + this->actionDelay = 0x1e; + } else if (this->frames.all & 0x1) { + this->frames.all = flags; + this->spriteOffsetY = 3; + gPlayerEntity.spriteSettings.b.draw = 0; + } +} + +void sub_0802A734(Entity* this) { + sub_0802A7D0(this); + if (--this->actionDelay == 0) { + sub_0805E5A8(); + DoExitTransition(gUnk_0813AB1C[gArea.regret]); + } else { + this->height.WORD -= 0x20000; + gPlayerState.field_0xa |= 0x80; + gPlayerState.field_0x1a[0] |= 0x80; + } +} + +void sub_0802A78C(Entity* this) { + if (this->action != 0) { + if (sub_08049FDC(this, 1)) { + if (this->field_0x78.HWORD == 0) { + if (this->field_0x7a.HWORD) { + this->field_0x7a.HWORD--; + } + } + } else { + this->field_0x7a.HWORD = this->entityType.parameter * 0x3c + 1; + } + } +} + +void sub_0802A7D0(Entity* this) { + u32 unk = gUnk_080CD0B0[(this->field_0x7c.BYTES.byte1++ >> 3) & 7] + 0x100; + sub_0805EC9C(this, unk, unk, 0); +} +// clang-format off +void (*const gUnk_080CD07C[])(Entity*) = { + sub_0802A434, + sub_0802A454, + sub_08001328, + sub_0804A7D4, + sub_08001242, + nullsub_142, +}; + +void (*const gUnk_080CD094[])(Entity*) = { + sub_0802A4E4, + sub_0802A534, + sub_0802A5B8, + sub_0802A610, + sub_0802A650, + sub_0802A69C, + sub_0802A734, +}; + +const s8 gUnk_080CD0B0[] = { + -2, -4, -2, 0, 2, 4, 2, 0, +}; +// clang-format on diff --git a/src/enemy/waterDrop.c b/src/enemy/waterDrop.c new file mode 100644 index 00000000..b95535df --- /dev/null +++ b/src/enemy/waterDrop.c @@ -0,0 +1,99 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" +#include "screen.h" + +void sub_0802A39C(Entity*); +void sub_0802A334(Entity*); + +extern u16 gUnk_02001A40[]; + +extern void (*const gUnk_080CD030[])(Entity*); +extern const u8 gUnk_080CD03C[]; +extern const s8 gUnk_080CD040[]; + +void WaterDrop(Entity* this) { + gUnk_080CD030[this->action](this); +} + +void sub_0802A250(Entity* this) { + Entity* ent; + + this->action = 1; + this->actionDelay = 0; + this->field_0x20 = -0x30000; + this->nonPlanarMovement = gUnk_080CD03C[Random() & 3]; + this->direction = gUnk_080CD040[Random() & 3] + 0x18; + this->collisionLayer = 2; + InitializeAnimation(this, 0); + UpdateSpriteForCollisionLayer(this); + + ent = CreateObject(0x66, 0, 0); + if (ent) { + ent->parent = this; + } +} + +void sub_0802A2B4(Entity* this) { + if (!sub_08003FC4(this, 0x2800)) { + this->action = 2; + this->spritePriority.b0 = 7; + EnqueueSFX(0x84); + } else { + sub_0806F69C(this); + } + + sub_0802A39C(this); + if (-8 < this->height.HALF.HI) { + sub_0802A334(this); + } +} + +void sub_0802A2FC(Entity* this) { + GetNextFrame(this); + if (this->frames.all & 0x80) { + DeleteEntity(this); + } else if (this->frames.all & 1) { + this->flags &= ~0x80; + } else { + sub_0802A39C(this); + } +} + +void sub_0802A334(Entity* this) { + u32 x = (this->x.HALF.HI - gRoomControls.roomScrollX + gScreen.bg.bg1yOffset) >> 3; + u32 y = (this->y.HALF.HI - gRoomControls.roomScrollY + gScreen.bg.bg2xOffset) >> 3; + if (gUnk_02001A40[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) { + this->collisionLayer = 2; + } else { + this->collisionLayer = 1; + } + UpdateSpriteForCollisionLayer(this); +} + +void sub_0802A39C(Entity* this) { + u32 x = (gPlayerEntity.x.HALF.HI - gRoomControls.roomScrollX + gScreen.bg.bg1yOffset) >> 3; + u32 y = (gPlayerEntity.y.HALF.HI - gRoomControls.roomScrollY + gScreen.bg.bg2xOffset - 10) >> 3; + if (gUnk_02001A40[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) { + this->flags &= ~0x80; + } else { + this->flags |= 0x80; + } +} + +// clang-format off +void (*const gUnk_080CD030[])(Entity*) = { + sub_0802A250, + sub_0802A2B4, + sub_0802A2FC, +}; + +const u8 gUnk_080CD03C[] = { + 0x60, 0x80, + 0xA0, 0xC0, +}; + +const s8 gUnk_080CD040[] = { + -2, -1, -1, -3, +}; +// clang-format on diff --git a/src/manager/manager20.c b/src/manager/manager20.c index 1f989f10..fe50967e 100644 --- a/src/manager/manager20.c +++ b/src/manager/manager20.c @@ -22,7 +22,7 @@ extern void DeleteManager(Manager20*); void sub_0805B7A0(Manager20* this) { Entity* tmp = CreateObject(this->manager.unk_0e, this->manager.unk_0a, this->manager.unk_0b); if (!tmp) return; - tmp->field_0x86 = this->unk_3e; + tmp->field_0x86.HWORD = this->unk_3e; if (CheckFlags(this->unk_3e)) { tmp->x.HALF.HI = this->unk_36 | (this->unk_37&0xF)<<8;//r1 tmp->y.HALF.HI = this->unk_3c & 0xFFF; diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 694ec6f7..bb28c9f0 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -2,16 +2,15 @@ #include "entity.h" #include "player.h" #include "structures.h" +#include "functions.h" extern void (*gUnk_081140D4[])(Entity*); extern u16 gUnk_081140CC[]; -extern void sub_0805E3A0(Entity*, u32); extern void sub_0806D0B0(Entity*); extern void sub_0807DD64(Entity*); extern void sub_0807DDAC(Entity*, u32); extern void sub_0807DDE4(Entity*); -extern u32 Random(void); extern void PlaySFX(u32); extern void sub_0806D02C(Entity*); extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32); diff --git a/src/npc/cow.c b/src/npc/cow.c index 24fc90d8..edd4a9d3 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -15,7 +15,6 @@ extern void (*gUnk_08111914[])(Entity*); extern void (*gUnk_08111928[])(Entity*); extern Dialog gUnk_08111938[]; extern void PlaySFX(u32); -extern u32 Random(); extern u32 UpdateFuseInteraction(Entity*); extern PlayerState gPlayerState; diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index 5b3e8f7d..b4326823 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -21,7 +21,6 @@ extern void sub_08060158(Entity*); extern u32 CheckKinstoneFused(u32); extern Entity* FindEntityInListBySubtype(u32, u32, u32); extern void DeleteEntity(Entity*); -extern u32 Random(void); extern void ModBombs(s32); extern SpriteLoadData gUnk_0810A348; diff --git a/src/npc/melari.c b/src/npc/melari.c index 2262d14e..ed324001 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -6,7 +6,6 @@ extern void sub_08068780(Entity*); extern void sub_08078778(Entity*); -extern u32 Random(void); extern void sub_0807DD50(Entity*); extern void sub_0806F118(Entity*); extern void sub_0807DDAC(Entity*, u32); diff --git a/src/npc/smith.c b/src/npc/smith.c index 0060e521..115d1539 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -8,7 +8,6 @@ extern u32 sub_0806F5A4(u32); extern void sub_0806F118(Entity*); extern Entity* CreateFx(Entity*, u32, u32); extern void PlaySFX(u32); -extern u32 Random(void); extern void sub_0807000C(Entity*); extern u32 sub_0801E99C(Entity*); extern void sub_0807DD50(Entity*); diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index d1951553..784ff48c 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -35,7 +35,6 @@ extern void sub_08062048(Entity*); extern void sub_08078784(Entity*, u32); extern void sub_08078778(Entity*); extern u32 sub_0806F5B0(u32); -extern u32 Random(void); extern void ResolveEntityOnTop(Entity*, Entity*); extern void sub_08078850(Entity*, u32, u8, u32*); diff --git a/src/object/bigVortex.c b/src/object/bigVortex.c index 73c6a034..8e8522c0 100644 --- a/src/object/bigVortex.c +++ b/src/object/bigVortex.c @@ -23,7 +23,7 @@ void sub_08098D1C(Entity* this) { this->action = 1; this->height.HALF.HI = -0x10; - temp = this->field_0x86; + temp = this->field_0x86.HWORD; if ((temp != 0) && !CheckFlags(temp)) { this->action = 1; @@ -39,7 +39,7 @@ void sub_08098D1C(Entity* this) { void sub_08098D6C(Entity* this) { Entity* ent; - if (CheckFlags(this->field_0x86)) { + if (CheckFlags(this->field_0x86.HWORD)) { this->action = 2; this->actionDelay = 0x2d; ent = CreateFx(this, 0x43, 0); diff --git a/src/object/button.c b/src/object/button.c index b66c7f2d..99d018b3 100644 --- a/src/object/button.c +++ b/src/object/button.c @@ -22,7 +22,7 @@ void sub_08081AE0(Entity* this) { this->field_0x74.HWORD = (((this->x.HALF.HI - gRoomControls.roomOriginX)>>4) & 0x3F) | ((((this->y.HALF.HI - gRoomControls.roomOriginY)>>4) & 0x3F) << 6); this->field_0x70.HALF.HI = GetTileType(this->field_0x74.HWORD, this->collisionLayer); - if (this->entityType.form == 0 && CheckFlags(this->field_0x86)) { + if (this->entityType.form == 0 && CheckFlags(this->field_0x86.HWORD)) { this->action = 5; SetTileType(0x7A, this->field_0x74.HWORD, this->collisionLayer); } else { @@ -92,7 +92,7 @@ void sub_08081C30(Entity* this) { } } else { this->action = 2; - ClearFlag(this->field_0x86); + ClearFlag(this->field_0x86.HWORD); SetTileType(0x77, this->field_0x74.HWORD, this->collisionLayer); PlaySFX(0x10C); } @@ -257,7 +257,7 @@ u32 sub_08081F7C(Entity* this, u32 r7) { this->attachedEntity->spriteOffsetY = 0xfc; } else { if (this->actionDelay == 6) { - SetFlag(this->field_0x86); + SetFlag(this->field_0x86.HWORD); SetTileType(r7, this->field_0x74.HWORD, this->collisionLayer); sub_08081F24(this); PlaySFX(0x10C); diff --git a/src/object/cloud.c b/src/object/cloud.c index fce592f1..8a133c2e 100644 --- a/src/object/cloud.c +++ b/src/object/cloud.c @@ -3,6 +3,7 @@ #include "room.h" #include "player.h" #include "flags.h" +#include "functions.h" extern void sub_0809F7BC(Entity*); extern void PlaySFX(u32); @@ -13,7 +14,6 @@ extern void DeleteThisEntity(); extern u32 CheckRoomFlag(u32); extern void sub_08078A90(u32); extern void sub_08078B48(void); -extern u32 Random(void); extern void sub_0806F69C(Entity*); extern void (*gUnk_08124798[])(Entity*); extern void (*gUnk_081247A0[])(Entity*); @@ -23,7 +23,6 @@ extern void PositionEntityOnTop(Entity*, Entity*); extern void sub_0807BB68(u32*, u32, u32); extern u8 gUnk_02034490; -extern u32 gScreenTransition; extern void* gUnk_080DD750; extern Entity gPlayerEntity; extern PlayerState gPlayerState; @@ -62,7 +61,7 @@ void sub_0809F548(Entity* this) { sub_0809F814((((this->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 63) | (((this->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 63) << 6); } else { - if ((gScreenTransition & 7) == 0) { + if ((gScreenTransition.frameCount & 7) == 0) { sub_0809F7BC(this); } sub_0809F7F4(this); @@ -110,7 +109,7 @@ void sub_0809F61C(Entity* this) { sub_0809F814((((this->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 63) | (((this->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 63) << 6); } else { - if ((gScreenTransition & 7) == 0) { + if ((gScreenTransition.frameCount & 7) == 0) { sub_0809F7BC(this); } sub_0809F7F4(this); @@ -145,7 +144,7 @@ void sub_0809F700(Entity* this) { this->actionDelay = (Random() & 30) + 8; this->flags = this->flags | 12; } - if ((gScreenTransition & 3) == 0) { + if ((gScreenTransition.frameCount & 3) == 0) { uVar2 = Random(); this->spriteOffsetX = gUnk_081247C0[uVar2 & 7]; this->spriteOffsetY = gUnk_081247C0[uVar2 >> 4 & 7]; diff --git a/src/object/fan.c b/src/object/fan.c index c73cec9b..564ff69c 100644 --- a/src/object/fan.c +++ b/src/object/fan.c @@ -40,8 +40,8 @@ void sub_0809ED88(Entity *this) { sub_0809F08C(); sub_0809EE44(this); - if (this->field_0x86 != 0) { - if (this->cutsceneBeh.HWORD == this->field_0x86) { + if (this->field_0x86.HWORD != 0) { + if (this->cutsceneBeh.HWORD == this->field_0x86.HWORD) { if (CheckFlags(this->cutsceneBeh.HWORD)) { return; } diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index 9174ab63..16664216 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -4,6 +4,7 @@ #include "screen.h" #include "greatFairy.h" #include "structures.h" +#include "functions.h" enum { BEHAVIORS, @@ -550,14 +551,14 @@ void sub_08087424(Entity* arg0, struct_08087424* arg1) { void sub_0808747C(u32 arg0, u32 arg1) { u32 iVar1; - iVar1 = FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0); + iVar1 = (u32)FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0); if (iVar1 != 0) { iVar1 = 1; } *(u32*)(arg1 + 0x14) = iVar1; } -//clang-format off +// clang-format off void (*const GreatFairy_Main[])(Entity*) = { GreatFairy_CallBehavior, GreatFairy_WingsCallBehavior, @@ -647,5 +648,4 @@ void (*const GreatFairy_Form2Behaviors[])(Entity*) = { sub_08087264, sub_0808727C }; - -//clang-format on +// clang-format on diff --git a/src/object/heartContainer.c b/src/object/heartContainer.c index 9222f36f..a2a35887 100644 --- a/src/object/heartContainer.c +++ b/src/object/heartContainer.c @@ -37,7 +37,7 @@ static void sub_0808E6A0(Entity* this) { } static void sub_0808E6E4(Entity* this) { - if (CheckFlags(this->field_0x86)) { + if (CheckFlags(this->field_0x86.HWORD)) { this->action = 2; this->spriteSettings.b.draw = 1; this->spriteRendering.b0 = 3; diff --git a/src/object/hiddenLadderDown.c b/src/object/hiddenLadderDown.c index f878f055..932018c8 100644 --- a/src/object/hiddenLadderDown.c +++ b/src/object/hiddenLadderDown.c @@ -20,7 +20,7 @@ void sub_08091F14(Entity* this) { this->animIndex = 0; this->field_0x70.HALF.LO = COORD_TO_TILE(this); puVar3 = &this->field_0x70.HALF.LO; - if (CheckFlags(this->field_0x86) != 0) { + if (CheckFlags(this->field_0x86.HWORD) != 0) { this->action = 2; this->spriteSettings.b.draw = TRUE; SetTileType(0x1a2, *puVar3 - 0x41, this->collisionLayer); @@ -39,6 +39,6 @@ void sub_08092000(Entity* this) { if (GetTileType(*(u16*)&this->field_0x70.HALF.LO, this->collisionLayer) == 0x1a6) { this->action = 2; this->spriteSettings.b.draw = TRUE; - SetFlag(this->field_0x86); + SetFlag(this->field_0x86.HWORD); } } \ No newline at end of file diff --git a/src/object/jailBars.c b/src/object/jailBars.c index c72713b6..4fe3cb26 100644 --- a/src/object/jailBars.c +++ b/src/object/jailBars.c @@ -18,7 +18,7 @@ void JailBars(Entity *this) void sub_080A08C4(Entity *this) { - if (CheckFlags(this->field_0x86) == 0) { + if (CheckFlags(this->field_0x86.HWORD) == 0) { this->action = 1; sub_080A0960(this, 0); } @@ -34,7 +34,7 @@ void sub_080A08C4(Entity *this) void sub_080A0910(Entity *this) { - if (CheckFlags(this->field_0x86) != 0) { + if (CheckFlags(this->field_0x86.HWORD) != 0) { this->action = 2; sub_080A0960(this, 1); PlaySFX(0x10b); diff --git a/src/object/lightableSwitch.c b/src/object/lightableSwitch.c index 047f5282..3d33dcfe 100644 --- a/src/object/lightableSwitch.c +++ b/src/object/lightableSwitch.c @@ -45,10 +45,10 @@ void sub_0809EA34(Entity* this) { void sub_0809EA80(Entity* this) { if ((this->bitfield & 0x80) != 0) { - if (CheckFlags(this->field_0x86) != 0) { - ClearFlag(this->field_0x86); + if (CheckFlags(this->field_0x86.HWORD) != 0) { + ClearFlag(this->field_0x86.HWORD); } else { - SetFlag(this->field_0x86); + SetFlag(this->field_0x86.HWORD); } EnqueueSFX(0x110); } @@ -59,7 +59,7 @@ void sub_0809EABC(Entity* this) { bool32 anySet; u32 f; - f = CheckFlags(this->field_0x86); + f = CheckFlags(this->field_0x86.HWORD); anySet = (-f | f) >> 0x1F; if (this->frameIndex != anySet) { this->frameIndex = anySet; @@ -122,7 +122,7 @@ void sub_0809EBD8(Entity* this) { this->action = 2; this->actionDelay = 0x10; this->frameIndex = 2; - SetFlag(this->field_0x86); + SetFlag(this->field_0x86.HWORD); EnqueueSFX(0x110); } } @@ -136,7 +136,7 @@ void sub_0809EC08(Entity* this) { if (--this->actionDelay == 0) { this->action = 1; this->frameIndex = 3; - ClearFlag(this->field_0x86); + ClearFlag(this->field_0x86.HWORD); EnqueueSFX(0x110); } } diff --git a/src/object/mask.c b/src/object/mask.c index a936e7e1..9fb42c68 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -31,7 +31,7 @@ void Mask(Entity *this) { void sub_080929A4(Entity *this) { if (this->entityType.parameter & 0xC0) { - if (CheckFlags(this->field_0x86)) { + if (CheckFlags(this->field_0x86.HWORD)) { s32 field_0x0a; switch (this->entityType.parameter & 0xC0) { @@ -45,7 +45,7 @@ void sub_080929A4(Entity *this) { goto switchEnd; } - ClearFlag(this->field_0x86); + ClearFlag(this->field_0x86.HWORD); break; case 0x80: DeleteThisEntity(); @@ -117,7 +117,7 @@ void sub_08092B0C(Entity *this) { case 0x80: EnqueueSFX(0x72); case 0x40: - SetFlag(this->field_0x86); + SetFlag(this->field_0x86.HWORD); break; } diff --git a/src/object/metalDoor.c b/src/object/metalDoor.c index 7aa6ec5d..ec363f4d 100644 --- a/src/object/metalDoor.c +++ b/src/object/metalDoor.c @@ -77,7 +77,7 @@ void sub_080A074C(Entity *this) void sub_080A07BC(Entity *this) { - if (CheckFlags(this->field_0x86)) { + if (CheckFlags(this->field_0x86.HWORD)) { this->action = 4; this->actionDelay = 0xc; this->direction = 0x10; diff --git a/src/object/minishSizedEntrance.c b/src/object/minishSizedEntrance.c index ca261d35..55160cb7 100644 --- a/src/object/minishSizedEntrance.c +++ b/src/object/minishSizedEntrance.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" -extern u32 Random(); extern bool32 CheckIsDungeon(); extern void sub_080AE068(Entity*); extern void LoadFixedGFX(Entity*, u32); diff --git a/src/object/object1A.c b/src/object/object1A.c index 5f43ec2f..a8924998 100644 --- a/src/object/object1A.c +++ b/src/object/object1A.c @@ -1,10 +1,8 @@ #include "global.h" #include "entity.h" +#include "functions.h" extern void sub_08086A6C(); -extern s32 sub_080044EC(); -extern void ProcessMovement(); -extern u32 Random(void); extern void (*gUnk_081206C4[99])(Entity*); @@ -33,12 +31,10 @@ void sub_080869DC(Entity* ent) { } void sub_08086A28(Entity* ent) { - s32 iVar1; - if (ent->attachedEntity->next == NULL) { ent->action = 2; } else { - iVar1 = sub_080044EC(ent, 10240); + u32 iVar1 = sub_080044EC(ent, 10240); if (iVar1 == 0) { ent->action = 2; } diff --git a/src/object/object2A.c b/src/object/object2A.c index 032db162..f98b8cd0 100644 --- a/src/object/object2A.c +++ b/src/object/object2A.c @@ -30,7 +30,7 @@ void sub_08089B18(Entity *this) CopyPosition(this->parent, this); break; case 4: - if (!CheckFlags(this->field_0x86)) { + if (!CheckFlags(this->field_0x86.HWORD)) { this->spriteSettings.b.draw = FALSE; this->previousActionFlag = 1; return; diff --git a/src/object/objectA.c b/src/object/objectA.c index 72c4e61a..60be0b74 100644 --- a/src/object/objectA.c +++ b/src/object/objectA.c @@ -20,7 +20,7 @@ void ObjectA(Entity *this) { uVar2 = 0x34; } this->field_0x70.HALF.LO = uVar2; - if (CheckFlags(this->field_0x86) != 0) { + if (CheckFlags(this->field_0x86.HWORD) != 0) { SetTileType(*(u16*)&this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); if ((gRoomControls.unk2 & 1) != 0) { gUnk_02000070 = 0; @@ -31,7 +31,7 @@ void ObjectA(Entity *this) { } } else if (this->interactType != 0) { SetTileType(*(u16*)&this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); - SetFlag(this->field_0x86); + SetFlag(this->field_0x86.HWORD); CreateDust(this); sub_080526F8(-1); DeleteThisEntity(); diff --git a/src/object/pot.c b/src/object/pot.c index b7cfc8d6..a415b3fb 100755 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -30,7 +30,7 @@ void Pot(Entity* this) { } void sub_0808222C(Entity* this) { - if (this->entityType.parameter == 1 && CheckFlags(this->field_0x86)) { + if (this->entityType.parameter == 1 && CheckFlags(this->field_0x86.HWORD)) { DeleteThisEntity(); } @@ -271,7 +271,7 @@ static void sub_08082850(Entity* this, Entity* parent) { } if (this->entityType.parameter == 1) { - SetFlag(this->field_0x86); + SetFlag(this->field_0x86.HWORD); } DeleteThisEntity(); @@ -292,7 +292,7 @@ u32 sub_0808288C(Entity* this, u32 form, u32 arg2, u32 arg3) { if (entity) { if (arg3 == 2) { entity->actionDelay = 5; - entity->field_0x86 = this->field_0x86; + entity->field_0x86.HWORD = this->field_0x86.HWORD; } else { entity->actionDelay = 0; } diff --git a/src/object/railtrack.c b/src/object/railtrack.c index ef45e554..01222738 100644 --- a/src/object/railtrack.c +++ b/src/object/railtrack.c @@ -32,7 +32,7 @@ void sub_080851AC(Entity* this) { } this->animationState = this->entityType.parameter & 2; if ((this->entityType).form == 3) { - uVar1 = CheckFlags(this->field_0x86); + uVar1 = CheckFlags(this->field_0x86.HWORD); this->field_0x7a.HWORD = uVar1; if ((u16)(uVar1 & -1) != 0) { this->animationState = (this->animationState + 2) & 3; @@ -45,11 +45,11 @@ void sub_080851AC(Entity* this) { } void sub_08085264(Entity* this) { - if (CheckFlags(this->field_0x86)) { + if (CheckFlags(this->field_0x86.HWORD)) { this->action = 2; this->field_0xf = 8; if (this->entityType.form == 1) { - ClearFlag(this->field_0x86); + ClearFlag(this->field_0x86.HWORD); } this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3; InitializeAnimation(this, this->animationState); @@ -62,7 +62,7 @@ void sub_080852B4(Entity* this) { if (--this->field_0xf == 0) { this->action = 3; this->field_0xf = this->actionDelay; - this->field_0x7a.HWORD = CheckFlags(this->field_0x86); + this->field_0x7a.HWORD = CheckFlags(this->field_0x86.HWORD); this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3; InitializeAnimation(this, this->animationState); sub_08085394(this); @@ -77,13 +77,13 @@ void sub_08085308(Entity* this) { case 1: break; case 2: - if (CheckFlags(this->field_0x86) == 0) { + if (CheckFlags(this->field_0x86.HWORD) == 0) { this->action = 1; return; } break; case 3: - if (CheckFlags(this->field_0x86) == *(u16*)&this->field_0x7a) { + if (CheckFlags(this->field_0x86.HWORD) == *(u16*)&this->field_0x7a) { this->field_0xf = 0xff; } else { this->field_0xf = 1; diff --git a/src/object/smoke.c b/src/object/smoke.c index 98aa2e6b..0f1f8bff 100644 --- a/src/object/smoke.c +++ b/src/object/smoke.c @@ -1,7 +1,7 @@ #include "global.h" #include "entity.h" +#include "functions.h" -extern u32 Random(void); extern void sub_0806F69C(Entity*); extern void (*const gUnk_08121060[])(Entity*); diff --git a/src/object/treeHidingPortal.c b/src/object/treeHidingPortal.c index ab7888c5..eb507c93 100644 --- a/src/object/treeHidingPortal.c +++ b/src/object/treeHidingPortal.c @@ -23,7 +23,7 @@ void TreeHidingPortal(Entity* this) { } void sub_0809E83C(Entity* this) { - if (CheckFlags(this->field_0x86)) { + if (CheckFlags(this->field_0x86.HWORD)) { sub_0809E96C(this); DeleteThisEntity(); } @@ -60,7 +60,7 @@ void sub_0809E8BC(Entity* this) { void sub_0809E8EC(Entity* this) { if (--this->actionDelay == 0) { - SetFlag(this->field_0x86); + SetFlag(this->field_0x86.HWORD); sub_08078A90(0); PlaySFX(0x73); DeleteThisEntity();