diff --git a/asm/object/enemyItem.s b/asm/object/enemyItem.s deleted file mode 100644 index 4ed584b2..00000000 --- a/asm/object/enemyItem.s +++ /dev/null @@ -1,156 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start EnemyItem -EnemyItem: @ 0x080A2448 - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _080A245E - adds r0, r5, #0 - bl sub_080A2500 -_080A245E: - ldrb r0, [r5, #0xc] - adds r1, r0, #0 - cmp r1, #0 - bne _080A24CE - adds r0, #1 - strb r0, [r5, #0xc] - ldrb r0, [r5, #0xe] - strb r0, [r5, #0xa] - str r1, [r5, #0x54] - ldr r2, _080A24B4 @ =gEntityLists + 32 - ldr r4, [r2, #4] - cmp r4, r2 - beq _080A24BE -_080A2478: - ldrb r0, [r4, #8] - cmp r0, #3 - bne _080A24B8 - ldrb r0, [r5, #0xb] - ldrb r1, [r4, #9] - cmp r0, r1 - bne _080A24B8 - movs r3, #0x2e - ldrsh r0, [r4, r3] - movs r3, #0x2e - ldrsh r1, [r5, r3] - subs r0, r0, r1 - adds r0, #0x10 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x1f - bhi _080A24B8 - movs r1, #0x32 - ldrsh r0, [r4, r1] - movs r3, #0x32 - ldrsh r1, [r5, r3] - subs r0, r0, r1 - adds r0, #0x10 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x1f - bhi _080A24B8 - str r4, [r5, #0x54] - b _080A24BE - .align 2, 0 -_080A24B4: .4byte gEntityLists + 32 -_080A24B8: - ldr r4, [r4, #4] - cmp r4, r2 - bne _080A2478 -_080A24BE: - ldr r0, [r5, #0x54] - cmp r0, #0 - bne _080A24CA - adds r0, r5, #0 - bl sub_080A2534 -_080A24CA: - bl sub_08054564 -_080A24CE: - ldr r4, [r5, #0x54] - cmp r4, #0 - beq _080A24F6 - movs r2, #0x80 - lsls r2, r2, #0xb - movs r3, #0x80 - lsls r3, r3, #9 - adds r0, r4, #0 - adds r1, r5, #0 - bl PositionRelative - ldrh r0, [r5, #0x36] - subs r0, #4 - strh r0, [r5, #0x36] - ldr r0, [r4, #4] - cmp r0, #0 - bne _080A24F6 - adds r0, r5, #0 - bl sub_080A2508 -_080A24F6: - adds r0, r5, #0 - bl sub_08080CB4 - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080A2500 -sub_080A2500: @ 0x080A2500 - push {lr} - bl DeleteThisEntity - pop {pc} - - thumb_func_start sub_080A2508 -sub_080A2508: @ 0x080A2508 - push {r4, lr} - adds r4, r0, #0 - ldrb r2, [r4, #0xa] - movs r1, #0 - movs r3, #0 - bl CreateObjectWithParent - adds r2, r0, #0 - cmp r2, #0 - beq _080A252C - movs r0, #5 - strb r0, [r2, #0xe] - adds r0, r4, #0 - adds r0, #0x86 - ldrh r1, [r0] - adds r0, r2, #0 - adds r0, #0x86 - strh r1, [r0] -_080A252C: - adds r0, r4, #0 - bl sub_080A2500 - pop {r4, pc} - - thumb_func_start sub_080A2534 -sub_080A2534: @ 0x080A2534 - push {r4, lr} - adds r4, r0, #0 - ldrb r2, [r4, #0xa] - movs r1, #0 - movs r3, #0 - bl CreateObjectWithParent - adds r2, r0, #0 - cmp r2, #0 - beq _080A2558 - movs r0, #4 - strb r0, [r2, #0xe] - adds r0, r4, #0 - adds r0, #0x86 - ldrh r1, [r0] - adds r0, r2, #0 - adds r0, #0x86 - strh r1, [r0] -_080A2558: - adds r0, r4, #0 - bl sub_080A2500 - pop {r4, pc} diff --git a/asm/object/fourElements.s b/asm/object/fourElements.s deleted file mode 100644 index 598edaa5..00000000 --- a/asm/object/fourElements.s +++ /dev/null @@ -1,370 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start FourElements -FourElements: @ 0x080A01C0 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080A01DC @ =gUnk_08124898 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_08080CB4 - pop {r4, pc} - .align 2, 0 -_080A01DC: .4byte gUnk_08124898 - - thumb_func_start sub_080A01E0 -sub_080A01E0: @ 0x080A01E0 - push {r4, lr} - adds r4, r0, #0 - movs r2, #1 - movs r3, #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] - 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] - ldrb r1, [r4, #0x19] - movs r0, #0x3f - ands r0, r1 - movs r1, #0x40 - orrs r0, r1 - strb r0, [r4, #0x19] - ldr r0, _080A027C @ =gHitbox_6 - str r0, [r4, #0x48] - ldr r0, _080A0280 @ =0x0000FF40 - strh r0, [r4, #0x36] - adds r1, r4, #0 - adds r1, #0x6a - movs r0, #0x40 - strb r0, [r1] - ldrb r0, [r4, #0xa] - cmp r0, #0x43 - bgt _080A0246 - cmp r0, #0x42 - bge _080A0246 - cmp r0, #0x40 - beq _080A0246 - cmp r0, #0x41 - bne _080A0246 - ldr r2, _080A0284 @ =gScreen - ldrh r1, [r2] - ldr r0, _080A0288 @ =0x0000FDFF - ands r0, r1 - strh r0, [r2] - adds r0, r4, #0 - adds r0, #0x38 - strb r3, [r0] -_080A0246: - ldr r0, _080A028C @ =script_PlayerGetElement - bl StartPlayerScript - ldr r1, _080A0284 @ =gScreen - adds r2, r1, #0 - adds r2, #0x66 - movs r0, #0xc8 - lsls r0, r0, #3 - strh r0, [r2] - adds r1, #0x68 - movs r0, #0x80 - lsls r0, r0, #5 - strh r0, [r1] - bl sub_0805BC4C - ldrb r2, [r4, #0xa] - subs r2, #0x40 - adds r0, r4, #0 - movs r1, #0xad - movs r3, #0 - bl CreateObjectWithParent - cmp r0, #0 - beq _080A027A - str r4, [r0, #0x50] - str r0, [r4, #0x54] -_080A027A: - pop {r4, pc} - .align 2, 0 -_080A027C: .4byte gHitbox_6 -_080A0280: .4byte 0x0000FF40 -_080A0284: .4byte gScreen -_080A0288: .4byte 0x0000FDFF -_080A028C: .4byte script_PlayerGetElement - - thumb_func_start sub_080A0290 -sub_080A0290: @ 0x080A0290 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, _080A02BC @ =gActiveScriptInfo - ldr r0, [r5] - movs r1, #4 - ands r0, r1 - cmp r0, #0 - beq _080A02CA - adds r0, r4, #0 - bl sub_080A0424 - ldrh r2, [r4, #0x36] - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #8 - rsbs r0, r0, #0 - cmp r1, r0 - bge _080A02C0 - adds r0, r2, #1 - strh r0, [r4, #0x36] - b _080A02CA - .align 2, 0 -_080A02BC: .4byte gActiveScriptInfo -_080A02C0: - movs r1, #2 - strb r1, [r4, #0xc] - ldr r0, [r5] - orrs r0, r1 - str r0, [r5] -_080A02CA: - pop {r4, r5, pc} - - thumb_func_start sub_080A02CC -sub_080A02CC: @ 0x080A02CC - push {r4, lr} - adds r4, r0, #0 - bl sub_080A0424 - adds r0, r4, #0 - bl sub_080A0444 - adds r0, r4, #0 - bl IsCollidingPlayer - cmp r0, #0 - beq _080A0342 - ldr r0, [r4, #0x54] - bl DeleteEntity - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - movs r2, #0 - movs r0, #3 - strb r0, [r4, #0xc] - movs r0, #0x2d - strb r0, [r4, #0xe] - ldr r0, _080A0344 @ =gScreen - adds r3, r0, #0 - adds r3, #0x66 - movs r1, #0xc8 - lsls r1, r1, #3 - strh r1, [r3] - adds r0, #0x68 - strh r2, [r0] - ldrb r0, [r4, #0xa] - movs r1, #0 - movs r2, #1 - bl sub_080A7C18 - adds r0, r4, #0 - movs r1, #1 - bl sub_0808C650 - movs r0, #6 - movs r1, #2 - bl SetFade - movs r0, #0xf8 - bl SoundReq - movs r0, #0xa4 - lsls r0, r0, #1 - bl SoundReq - movs r0, #5 - bl SoundReq - ldr r0, _080A0348 @ =0x80110000 - bl SoundReq -_080A0342: - pop {r4, pc} - .align 2, 0 -_080A0344: .4byte gScreen -_080A0348: .4byte 0x80110000 - - thumb_func_start sub_080A034C -sub_080A034C: @ 0x080A034C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _080A0378 - adds r0, r4, #0 - bl sub_080A0424 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A038C - ldr r0, _080A0374 @ =gPlayerEntity - movs r1, #0 - bl SetDefaultPriority - b _080A038C - .align 2, 0 -_080A0374: .4byte gPlayerEntity -_080A0378: - movs r0, #0 - movs r1, #0x3c - bl RequestPriorityDuration - bl sub_0808C67C - cmp r0, #0 - beq _080A038C - movs r0, #4 - strb r0, [r4, #0xc] -_080A038C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A0390 -sub_080A0390: @ 0x080A0390 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0 - movs r1, #0x3c - bl RequestPriorityDuration - ldr r0, _080A03B4 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080A03B2 - movs r0, #5 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x68 - movs r0, #0xd2 - lsls r0, r0, #1 - strh r0, [r1] -_080A03B2: - pop {r4, pc} - .align 2, 0 -_080A03B4: .4byte gFadeControl - - thumb_func_start sub_080A03B8 -sub_080A03B8: @ 0x080A03B8 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0 - movs r1, #0xa - bl RequestPriorityDuration - adds r1, r4, #0 - adds r1, #0x68 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _080A03E4 - movs r0, #6 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xa] - bl sub_0805429C - adds r1, r4, #0 - bl MessageNoOverlap -_080A03E4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A03E8 -sub_080A03E8: @ 0x080A03E8 - push {lr} - movs r0, #0 - movs r1, #0xa - bl RequestPriorityDuration - ldr r0, _080A041C @ =gMessage - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _080A041A - movs r0, #0x5a - bl SetPriorityTimer - ldr r0, _080A0420 @ =gPlayerState - adds r0, #0x8b - movs r1, #1 - strb r1, [r0] - bl sub_0807DF50 - movs r0, #0 - bl SetRoomFlag - bl DeleteThisEntity -_080A041A: - pop {pc} - .align 2, 0 -_080A041C: .4byte gMessage -_080A0420: .4byte gPlayerState - - thumb_func_start sub_080A0424 -sub_080A0424: @ 0x080A0424 - push {lr} - adds r1, r0, #0 - adds r1, #0x6a - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0442 - movs r0, #0x40 - strb r0, [r1] - movs r0, #0xbc - lsls r0, r0, #1 - bl SoundReq -_080A0442: - pop {pc} - - thumb_func_start sub_080A0444 -sub_080A0444: @ 0x080A0444 - ldr r3, _080A0460 @ =gUnk_081248B4 - ldrb r1, [r0, #0xf] - adds r2, r1, #1 - strb r2, [r0, #0xf] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x1b - movs r2, #7 - ands r1, r2 - adds r1, r1, r3 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - strh r1, [r0, #0x36] - bx lr - .align 2, 0 -_080A0460: .4byte gUnk_081248B4 - - thumb_func_start sub_080A0464 -sub_080A0464: @ 0x080A0464 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - movs r0, #6 - movs r1, #0xac - movs r2, #6 - bl FindEntityByID - cmp r0, #0 - beq _080A048A - movs r1, #0x2e - ldrsh r2, [r0, r1] - movs r1, #0x32 - ldrsh r3, [r0, r1] - adds r3, #0x18 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0807DEDC -_080A048A: - pop {r4, r5, pc} diff --git a/asm/object/itemForSale.s b/asm/object/itemForSale.s deleted file mode 100644 index 156e200d..00000000 --- a/asm/object/itemForSale.s +++ /dev/null @@ -1,364 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ItemForSale -ItemForSale: @ 0x08081814 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08081850 @ =gUnk_0811EE28 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl CheckOnScreen - cmp r0, #0 - beq _08081838 - adds r0, r4, #0 - bl sub_08080CB4 -_08081838: - ldrb r0, [r4, #0xe] - cmp r0, #2 - bgt _0808184E - cmp r0, #1 - blt _0808184E - ldrb r0, [r4, #0xc] - cmp r0, #1 - bne _0808184E - adds r0, r4, #0 - bl sub_0800445C -_0808184E: - pop {r4, pc} - .align 2, 0 -_08081850: .4byte gUnk_0811EE28 - - thumb_func_start sub_08081854 -sub_08081854: @ 0x08081854 - push {r4, lr} - adds r4, r0, #0 - movs r3, #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 r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] - strb r3, [r4, #0x16] -.ifdef EU - adds r0, r4, #0x0 - movs r1, #0x6 - bl SetDefaultPriority -.endif - str r4, [r4, #0x54] - adds r0, r4, #0 - bl sub_08081A5C - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0808188E - cmp r0, #1 - beq _08081898 - b _0808189C -_0808188E: - ldr r0, _08081894 @ =gUnk_080FD328 - b _0808189A - .align 2, 0 -_08081894: .4byte gUnk_080FD328 -_08081898: - ldr r0, _080818A0 @ =gHitbox_5 -_0808189A: - str r0, [r4, #0x48] -_0808189C: - pop {r4, pc} - .align 2, 0 -_080818A0: .4byte gHitbox_5 - - thumb_func_start sub_080818A4 -sub_080818A4: @ 0x080818A4 - push {r4, lr} - adds r4, r0, #0 - ldrb r2, [r4, #0xd] - cmp r2, #0 - beq _080818C0 - movs r1, #2 - strb r1, [r4, #0xc] - ldr r0, _080818BC @ =gUnk_0200AF00 - adds r0, #0x2f - strb r1, [r0] - b _08081920 - .align 2, 0 -_080818BC: .4byte gUnk_0200AF00 -_080818C0: - ldrb r0, [r4, #0xa] - cmp r0, #0x36 - bne _080818F0 - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _08081920 - strb r2, [r1] - movs r0, #3 - strb r0, [r4, #0xc] - ldr r1, _080818E8 @ =gRoomVars - movs r0, #1 - str r0, [r1, #0x68] - ldr r1, _080818EC @ =gPlayerState - movs r0, #7 - strb r0, [r1, #0xc] - b _08081920 - .align 2, 0 -_080818E8: .4byte gRoomVars -_080818EC: .4byte gPlayerState -_080818F0: - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _08081920 - strb r2, [r1] - movs r0, #1 - strb r0, [r4, #0xd] - bl sub_08078B48 - bl ResetPlayer - ldr r1, _08081924 @ =gPlayerState - movs r0, #4 - strb r0, [r1, #5] - ldr r0, _08081928 @ =gPlayerEntity - str r4, [r0, #0x74] - ldr r0, _0808192C @ =gUnk_0200AF00 - adds r0, #0x2f - movs r1, #2 - strb r1, [r0] - bl MessageClose -_08081920: - pop {r4, pc} - .align 2, 0 -_08081924: .4byte gPlayerState -_08081928: .4byte gPlayerEntity -_0808192C: .4byte gUnk_0200AF00 - - thumb_func_start sub_08081930 -sub_08081930: @ 0x08081930 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r0, _08081968 @ =gUnk_0200AF00 - adds r6, r0, #0 - adds r6, #0x2f - movs r0, #2 - strb r0, [r6] - ldr r3, _0808196C @ =gPlayerEntity - ldrb r1, [r3, #0x18] - lsls r1, r1, #0x1e - lsrs r1, r1, #0x1e - ldrb r2, [r4, #0x18] - subs r0, #6 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldr r5, _08081970 @ =gPlayerState - ldrb r0, [r5, #5] - cmp r0, #0 - beq _0808195E - ldr r0, [r3, #0x74] - cmp r4, r0 - beq _08081974 -_0808195E: - adds r0, r4, #0 - bl sub_080819B4 - b _080819AC - .align 2, 0 -_08081968: .4byte gUnk_0200AF00 -_0808196C: .4byte gPlayerEntity -_08081970: .4byte gPlayerState -_08081974: - bl sub_080784E4 - adds r1, r0, #0 - ldr r0, [r1, #8] - cmp r0, #0 - beq _08081998 - ldrb r0, [r1, #1] - cmp r0, #1 - bne _08081998 - movs r0, #7 - strb r0, [r6] - adds r0, r5, #0 - adds r0, #0x92 - ldrh r1, [r0] - movs r0, #0x88 - ands r0, r1 - cmp r0, #0 - bne _080819AC -_08081998: - ldr r0, _080819B0 @ =gPlayerState - adds r0, #0x92 - ldrh r1, [r0] - movs r0, #0x98 - ands r0, r1 - cmp r0, #0 - beq _080819AC - adds r0, r4, #0 - bl sub_080819B4 -_080819AC: - pop {r4, r5, r6, pc} - .align 2, 0 -_080819B0: .4byte gPlayerState - - thumb_func_start sub_080819B4 -sub_080819B4: @ 0x080819B4 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldr r0, _08081A48 @ =gRoomVars - ldrb r0, [r0, #6] - cmp r0, #0 - bne _080819D4 - ldr r0, [r5, #0x50] - cmp r0, #0 - beq _080819D0 - adds r0, #0x20 - ldrb r1, [r5, #0xf] - adds r0, r0, r1 - movs r1, #0xff - strb r1, [r0] -_080819D0: - bl DeleteThisEntity -_080819D4: - ldr r0, _08081A4C @ =gPlayerState - movs r2, #0 - strb r2, [r0, #5] - ldr r4, _08081A50 @ =gPlayerEntity - str r2, [r4, #0x74] - ldr r1, _08081A54 @ =gUnk_0200AF00 - ldr r3, _08081A48 @ =gRoomVars - strb r2, [r3, #6] - adds r0, r1, #0 - adds r0, #0x2c - strb r2, [r0] - adds r1, #0x2f - strb r2, [r1] - strb r2, [r3, #7] - adds r1, r5, #0 - adds r1, #0x80 - ldr r3, _08081A58 @ =gRoomControls - ldrh r0, [r3, #6] - ldrh r1, [r1] - adds r0, r0, r1 - movs r1, #0 - strh r0, [r5, #0x2e] - movs r6, #0x82 - ldrh r0, [r3, #8] - ldrh r3, [r6, r5] - adds r0, r0, r3 - strh r0, [r5, #0x32] - str r2, [r5, #0x34] - movs r3, #1 - strb r3, [r5, #0xc] - strb r1, [r5, #0xd] - ldrb r1, [r4, #0x1b] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r5, #0x1b] - movs r0, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r5, #0x1b] - adds r0, r5, #0 - adds r0, #0x38 - strb r3, [r0] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - bl UpdateSpriteForCollisionLayer - adds r0, r5, #0 - bl sub_08081A5C - pop {r4, r5, r6, pc} - .align 2, 0 -_08081A48: .4byte gRoomVars -_08081A4C: .4byte gPlayerState -_08081A50: .4byte gPlayerEntity -_08081A54: .4byte gUnk_0200AF00 -_08081A58: .4byte gRoomControls - - thumb_func_start sub_08081A5C -sub_08081A5C: @ 0x08081A5C - push {r4, lr} - adds r4, r0, #0 - bl sub_080787D8 - adds r2, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #1 - bne _08081A7A - ldr r0, _08081A7C @ =gUnk_03003DF0 - lsls r1, r2, #1 - adds r1, r1, r2 - lsls r1, r1, #2 - adds r1, r1, r0 - movs r0, #0 - strb r0, [r1, #0xa] -_08081A7A: - pop {r4, pc} - .align 2, 0 -_08081A7C: .4byte gUnk_03003DF0 - - thumb_func_start sub_08081A80 -sub_08081A80: @ 0x08081A80 - push {lr} - adds r2, r0, #0 - ldr r0, _08081A98 @ =gRoomVars - ldr r0, [r0, #0x68] - cmp r0, #0 - bne _08081A9C - bl sub_08081AB0 - bl DeleteThisEntity - b _08081AAC - .align 2, 0 -_08081A98: .4byte gRoomVars -_08081A9C: - cmp r0, #2 - bne _08081AAC - movs r1, #0 - movs r0, #1 - strb r0, [r2, #0xc] - strb r1, [r2, #0xd] - bl sub_08081AB0 -_08081AAC: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08081AB0 -sub_08081AB0: @ 0x08081AB0 - push {lr} - ldr r1, _08081AC4 @ =gRoomVars - movs r0, #0 - str r0, [r1, #0x68] - strb r0, [r1, #6] - strb r0, [r1, #7] - bl SetPlayerControl - pop {pc} - .align 2, 0 -_08081AC4: .4byte gRoomVars diff --git a/asm/object/minecartDoor.s b/asm/object/minecartDoor.s deleted file mode 100644 index 18a8853f..00000000 --- a/asm/object/minecartDoor.s +++ /dev/null @@ -1,452 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start MinecartDoor -MinecartDoor: @ 0x08096AD4 - push {lr} - ldr r2, _08096AE8 @ =gUnk_0812323C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08096AE8: .4byte gUnk_0812323C - - thumb_func_start sub_08096AEC -sub_08096AEC: @ 0x08096AEC - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_080837B0 - cmp r0, #0 - beq _08096BB6 - ldrb r1, [r4, #0xa] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _08096B12 - adds r1, r4, #0 - adds r1, #0x7e - movs r0, #1 - strb r0, [r1] - ldrb r1, [r4, #0xa] - movs r0, #3 - ands r0, r1 - strb r0, [r4, #0xa] -_08096B12: - movs r0, #0xc0 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - ldrh r1, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x70 - strh r1, [r0] - ldrh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x72 - strh r0, [r1] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #5 - orrs r0, r1 - strb r0, [r2] - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _08096B90 @ =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 r5, r4, #0 - adds r5, #0x76 - strh r1, [r5] - ldrh r0, [r5] - adds r6, r4, #0 - adds r6, #0x38 - ldrb r1, [r6] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x74 - strh r0, [r1] - ldrb r0, [r4, #0xa] - strb r0, [r4, #0x1e] - adds r0, r4, #0 - bl sub_08096CEC - cmp r0, #0 - beq _08096B9C - adds r0, r4, #0 - adds r0, #0x7e - ldrb r0, [r0] - cmp r0, #0 - beq _08096B94 - bl DeleteThisEntity - b _08096BB6 - .align 2, 0 -_08096B90: .4byte gRoomControls -_08096B94: - adds r0, r4, #0 - bl sub_08096E04 - b _08096BB6 -_08096B9C: - 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] - ldr r0, _08096BB8 @ =0x00004022 - ldrh r1, [r5] - ldrb r2, [r6] - bl SetTile -_08096BB6: - pop {r4, r5, r6, pc} - .align 2, 0 -_08096BB8: .4byte 0x00004022 - - thumb_func_start sub_08096BBC -sub_08096BBC: @ 0x08096BBC - push {r4, lr} - adds r4, r0, #0 - bl sub_08096CEC - cmp r0, #0 - beq _08096BF2 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #7 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xa] - lsls r0, r0, #3 - strb r0, [r4, #0x15] - 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 - ldr r0, _08096BF4 @ =0x0000010B - bl EnqueueSFX -_08096BF2: - pop {r4, pc} - .align 2, 0 -_08096BF4: .4byte 0x0000010B - - thumb_func_start sub_08096BF8 -sub_08096BF8: @ 0x08096BF8 - push {r4, lr} - adds r4, r0, #0 - bl LinearMoveUpdate - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08096C3A - adds r0, r4, #0 - bl sub_08096E04 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - adds r0, #0x70 - ldrh r0, [r0] - strh r0, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x72 - ldrh r0, [r0] - strh r0, [r4, #0x32] - adds r0, r4, #0 - adds r0, #0x7e - ldrb r0, [r0] - cmp r0, #0 - beq _08096C3A - bl DeleteThisEntity -_08096C3A: - pop {r4, pc} - - thumb_func_start sub_08096C3C -sub_08096C3C: @ 0x08096C3C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x7e - ldrb r0, [r0] - cmp r0, #0 - beq _08096C56 - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - bne _08096CAE -_08096C56: - ldr r0, _08096C80 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - lsls r1, r1, #5 - ands r0, r1 - cmp r0, #0 - beq _08096C92 - ldrb r2, [r4, #0xa] - lsls r1, r2, #1 - ldr r0, _08096C84 @ =gPlayerEntity - ldrb r0, [r0, #0x14] - cmp r1, r0 - bne _08096C88 - adds r0, r4, #0 - adds r1, r2, #0 - bl sub_08083734 - cmp r0, #0 - beq _08096CAE - b _08096C9C - .align 2, 0 -_08096C80: .4byte gPlayerState -_08096C84: .4byte gPlayerEntity -_08096C88: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - b _08096C98 -_08096C92: - adds r0, r4, #0 - bl sub_08096D84 -_08096C98: - cmp r0, #0 - bne _08096CAE -_08096C9C: - movs r0, #4 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0xa] - adds r0, r4, #0 - adds r0, #0x76 - ldrh r2, [r0] - adds r0, r4, #0 - bl sub_080836DC -_08096CAE: - pop {r4, pc} - - thumb_func_start sub_08096CB0 -sub_08096CB0: @ 0x08096CB0 - push {r4, lr} - adds r4, r0, #0 - bl LinearMoveUpdate - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08096CE6 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x70 - ldrh r0, [r0] - strh r0, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x72 - ldrh r0, [r0] - strh r0, [r4, #0x32] - ldrb r1, [r4, #0xa] - adds r0, r4, #0 - bl sub_08083814 - ldr r0, _08096CE8 @ =0x0000010B - bl EnqueueSFX -_08096CE6: - pop {r4, pc} - .align 2, 0 -_08096CE8: .4byte 0x0000010B - - thumb_func_start sub_08096CEC -sub_08096CEC: @ 0x08096CEC - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x7e - ldrb r0, [r0] - cmp r0, #0 - beq _08096D06 - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - bne _08096D60 -_08096D06: - ldr r0, _08096D40 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - lsls r1, r1, #5 - ands r0, r1 - cmp r0, #0 - beq _08096D64 - ldr r3, _08096D44 @ =gPlayerEntity - ldrb r2, [r4, #0xa] - lsls r0, r2, #1 - ldrb r1, [r3, #0x14] - eors r0, r1 - movs r1, #2 - ands r0, r1 - cmp r0, #0 - bne _08096D64 - movs r0, #1 - ands r2, r0 - cmp r2, #0 - beq _08096D48 - movs r1, #0x32 - ldrsh r0, [r3, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - movs r5, #0x2e - ldrsh r2, [r3, r5] - movs r5, #0x2e - ldrsh r3, [r4, r5] - b _08096D58 - .align 2, 0 -_08096D40: .4byte gPlayerState -_08096D44: .4byte gPlayerEntity -_08096D48: - movs r1, #0x2e - ldrsh r0, [r3, r1] - movs r2, #0x2e - ldrsh r1, [r4, r2] - movs r5, #0x32 - ldrsh r2, [r3, r5] - movs r5, #0x32 - ldrsh r3, [r4, r5] -_08096D58: - bl sub_08096D68 - cmp r0, #0 - beq _08096D64 -_08096D60: - movs r0, #1 - b _08096D66 -_08096D64: - movs r0, #0 -_08096D66: - pop {r4, r5, pc} - - thumb_func_start sub_08096D68 -sub_08096D68: @ 0x08096D68 - push {lr} - subs r0, r0, r1 - adds r0, #8 - cmp r0, #0x10 - bhi _08096D7E - subs r0, r2, r3 - adds r0, #0x30 - cmp r0, #0x60 - bhi _08096D7E - movs r0, #1 - b _08096D80 -_08096D7E: - movs r0, #0 -_08096D80: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08096D84 -sub_08096D84: @ 0x08096D84 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xa] - cmp r0, #1 - beq _08096DB4 - cmp r0, #1 - bgt _08096D98 - cmp r0, #0 - beq _08096DA2 - b _08096E00 -_08096D98: - cmp r0, #2 - beq _08096DC8 - cmp r0, #3 - beq _08096DE4 - b _08096E00 -_08096DA2: - movs r0, #0x32 - ldrsh r1, [r1, r0] - ldr r0, _08096DB0 @ =gPlayerEntity - movs r2, #0x32 - ldrsh r0, [r0, r2] - b _08096DEE - .align 2, 0 -_08096DB0: .4byte gPlayerEntity -_08096DB4: - ldr r0, _08096DC4 @ =gPlayerEntity - movs r2, #0x2e - ldrsh r0, [r0, r2] - adds r0, #0xa - movs r2, #0x2e - ldrsh r1, [r1, r2] - b _08096DD4 - .align 2, 0 -_08096DC4: .4byte gPlayerEntity -_08096DC8: - ldr r0, _08096DE0 @ =gPlayerEntity - movs r2, #0x32 - ldrsh r0, [r0, r2] - adds r0, #0xa - movs r2, #0x32 - ldrsh r1, [r1, r2] -_08096DD4: - subs r0, r0, r1 - cmp r0, #0x64 - bhi _08096E00 - movs r0, #1 - b _08096E02 - .align 2, 0 -_08096DE0: .4byte gPlayerEntity -_08096DE4: - movs r0, #0x2e - ldrsh r1, [r1, r0] - ldr r0, _08096DFC @ =gPlayerEntity - movs r2, #0x2e - ldrsh r0, [r0, r2] -_08096DEE: - subs r0, #0xa - subs r1, r1, r0 - cmp r1, #0x64 - bhi _08096E00 - movs r0, #1 - b _08096E02 - .align 2, 0 -_08096DFC: .4byte gPlayerEntity -_08096E00: - movs r0, #0 -_08096E02: - pop {pc} - - thumb_func_start sub_08096E04 -sub_08096E04: @ 0x08096E04 - movs r1, #3 - strb r1, [r0, #0xc] - movs r1, #8 - strb r1, [r0, #0xe] - bx lr - .align 2, 0 diff --git a/asm/object/object35.s b/asm/object/object35.s deleted file mode 100644 index 30a7fbfc..00000000 --- a/asm/object/object35.s +++ /dev/null @@ -1,373 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object35 -Object35: @ 0x0808B86C - push {lr} - ldr r2, _0808B880 @ =gUnk_081213C4 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0808B880: .4byte gUnk_081213C4 - - thumb_func_start sub_0808B884 -sub_0808B884: @ 0x0808B884 - push {lr} - ldr r2, _0808B898 @ =gUnk_081213D0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0808B898: .4byte gUnk_081213D0 - - thumb_func_start sub_0808B89C -sub_0808B89C: @ 0x0808B89C - push {r4, lr} - adds r4, r0, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r0, [r4, #0xb] - adds r1, r4, #0 - adds r1, #0x38 - strb r0, [r1] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2] - movs r0, #0xb4 - strb r0, [r4, #0xe] - ldrb r1, [r4, #0xb] - adds r0, r4, #0 - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0808B8D4 -sub_0808B8D4: @ 0x0808B8D4 - 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 _0808B904 - movs r0, #0xb4 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xb] - adds r0, #1 - strb r0, [r4, #0xb] - ldrb r0, [r4, #0xb] - movs r1, #3 - bl __modsi3 - strb r0, [r4, #0xb] - ldrb r1, [r4, #0xb] - adds r0, r4, #0 - bl InitializeAnimation -_0808B904: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0808B908 -sub_0808B908: @ 0x0808B908 - push {lr} - bl GetNextFrame - pop {pc} - - thumb_func_start sub_0808B910 -sub_0808B910: @ 0x0808B910 - push {lr} - ldr r2, _0808B92C @ =gUnk_081213DC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - ldr r2, _0808B930 @ =gPlayerState - ldrb r1, [r2, #0x1a] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x1a] - pop {pc} - .align 2, 0 -_0808B92C: .4byte gUnk_081213DC -_0808B930: .4byte gPlayerState - - thumb_func_start sub_0808B934 -sub_0808B934: @ 0x0808B934 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - movs r7, #0 - movs r0, #0xc0 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - strb r7, [r4, #0x1e] - ldrh r1, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x70 - strh r1, [r0] - ldrh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x72 - strh r0, [r1] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #5 - orrs r0, r1 - strb r0, [r2] - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0808B9B8 @ =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 r5, r4, #0 - adds r5, #0x76 - strh r1, [r5] - ldrh r0, [r5] - adds r6, r4, #0 - adds r6, #0x38 - ldrb r1, [r6] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x74 - strh r0, [r1] - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _0808B9C0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x78 - strb r0, [r4, #0xf] - ldr r0, _0808B9BC @ =0x00004022 - ldrh r1, [r5] - ldrb r2, [r6] - bl SetTile - b _0808B9D2 - .align 2, 0 -_0808B9B8: .4byte gRoomControls -_0808B9BC: .4byte 0x00004022 -_0808B9C0: - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #7 - ands r0, r1 - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #0x18] - strb r7, [r4, #0xe] -_0808B9D2: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0808B9D4 -sub_0808B9D4: @ 0x0808B9D4 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0 - bl CheckRoomFlag - cmp r0, #0 - beq _0808BA0A - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #7 - strb r0, [r4, #0xe] - strb r1, [r4, #0x15] - 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 - ldr r0, _0808BA0C @ =0x0000010B - bl EnqueueSFX -_0808BA0A: - pop {r4, pc} - .align 2, 0 -_0808BA0C: .4byte 0x0000010B - - thumb_func_start sub_0808BA10 -sub_0808BA10: @ 0x0808BA10 - push {r4, lr} - adds r4, r0, #0 - bl LinearMoveUpdate - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0808BA44 - movs r0, #5 - strb r0, [r4, #0xc] - movs r0, #8 - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x18] - subs r0, #0xc - ands r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - adds r0, #0x70 - ldrh r0, [r0] - strh r0, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x72 - ldrh r0, [r0] - strh r0, [r4, #0x32] -_0808BA44: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0808BA48 -sub_0808BA48: @ 0x0808BA48 - push {r4, lr} - adds r4, r0, #0 - movs r1, #2 - bl sub_08083734 - cmp r0, #0 - beq _0808BA68 - movs r0, #4 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x76 - ldrh r2, [r0] - adds r0, r4, #0 - movs r1, #2 - bl sub_080836DC -_0808BA68: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0808BA6C -sub_0808BA6C: @ 0x0808BA6C - push {r4, lr} - adds r4, r0, #0 - bl LinearMoveUpdate - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0808BAA4 - movs r0, #5 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl sub_08083814 - ldr r0, _0808BAA8 @ =0x0000010B - bl EnqueueSFX - ldr r0, _0808BAAC @ =0x00004022 - adds r1, r4, #0 - adds r1, #0x76 - ldrh r1, [r1] - adds r2, r4, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile -_0808BAA4: - pop {r4, pc} - .align 2, 0 -_0808BAA8: .4byte 0x0000010B -_0808BAAC: .4byte 0x00004022 - - thumb_func_start nullsub_520 -nullsub_520: @ 0x0808BAB0 - bx lr - .align 2, 0 - - thumb_func_start sub_0808BAB4 -sub_0808BAB4: @ 0x0808BAB4 - push {lr} - ldr r2, _0808BAC8 @ =gUnk_081213F4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0808BAC8: .4byte gUnk_081213F4 - - thumb_func_start sub_0808BACC -sub_0808BACC: @ 0x0808BACC - push {r4, lr} - adds r2, r0, #0 - movs r4, #1 - strb r4, [r2, #0xc] - movs r3, #0x10 - strb r3, [r2, #0xe] - ldrh r0, [r2, #0x36] - subs r0, #0x10 - strh r0, [r2, #0x36] - ldrb r0, [r2, #0xb] - cmp r0, #0 - bne _0808BAEA - movs r0, #2 - strb r0, [r2, #0x1e] - b _0808BAFC -_0808BAEA: - movs r0, #0 - strb r0, [r2, #0x1e] - ldr r0, [r2, #0x50] - ldrh r1, [r0, #0x2e] - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - beq _0808BAFC - strb r4, [r2, #0x1e] -_0808BAFC: - adds r0, r2, #0 - bl CreateDust - pop {r4, pc} - - thumb_func_start sub_0808BB04 -sub_0808BB04: @ 0x0808BB04 - push {lr} - ldrb r1, [r0, #0xe] - subs r1, #1 - strb r1, [r0, #0xe] - lsls r1, r1, #0x18 - cmp r1, #0 - bne _0808BB16 - bl DeleteThisEntity -_0808BB16: - pop {pc} diff --git a/asm/object/object43.s b/asm/object/object43.s deleted file mode 100644 index 24d96cfa..00000000 --- a/asm/object/object43.s +++ /dev/null @@ -1,499 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object43 -Object43: @ 0x0808DED0 - push {lr} - ldr r2, _0808DEE4 @ =gUnk_081217BC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0808DEE4: .4byte gUnk_081217BC - - thumb_func_start sub_0808DEE8 -sub_0808DEE8: @ 0x0808DEE8 - push {r4, r5, lr} - adds r5, r0, #0 - movs r4, #0 - movs r0, #1 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x10] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r5, #0x10] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] - ldr r3, _0808DF74 @ =gPlayerEntity - ldrb r1, [r3, #0x1b] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r5, #0x1b] - movs r0, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r5, #0x1b] - ldrb r0, [r3, #0x14] - lsrs r0, r0, #1 - strb r0, [r5, #0x14] - adds r0, #1 - movs r1, #3 - ands r0, r1 - lsls r0, r0, #3 - strb r0, [r5, #0x15] - movs r3, #6 - movs r0, #6 - strb r0, [r5, #0xf] - movs r0, #0xa0 - lsls r0, r0, #1 - strh r0, [r5, #0x24] - adds r1, r5, #0 - adds r1, #0x60 - movs r0, #0x3c - strh r0, [r1] - ldrb r1, [r5, #0x1a] - movs r2, #0x10 - rsbs r2, r2, #0 - adds r0, r2, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r5, #0x1a] - adds r0, r5, #0 - adds r0, #0x72 - strh r4, [r0] - subs r0, #6 - strh r4, [r0] - ldrb r0, [r5, #0x11] - ands r2, r0 - orrs r2, r3 - strb r2, [r5, #0x11] - adds r0, r5, #0 - movs r1, #7 - bl InitializeAnimation - ldrb r0, [r5, #0xb] - cmp r0, #0 - beq _0808DF78 - movs r0, #0x28 - strb r0, [r5, #0xe] - b _0808DFAA - .align 2, 0 -_0808DF74: .4byte gPlayerEntity -_0808DF78: - ldrb r1, [r5, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r5, #0x18] - ldr r0, _0808DF9C @ =gPlayerState - adds r0, #0xac - ldrh r1, [r0] - movs r0, #0x80 - lsls r0, r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0808DFA0 - movs r0, #0x28 - b _0808DFA2 - .align 2, 0 -_0808DF9C: .4byte gPlayerState -_0808DFA0: - movs r0, #0x50 -_0808DFA2: - strb r0, [r5, #0xe] - adds r0, r5, #0 - bl sub_0808DFAC -_0808DFAA: - pop {r4, r5, pc} - - thumb_func_start sub_0808DFAC -sub_0808DFAC: @ 0x0808DFAC - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _0808E00E - ldr r1, _0808DFF0 @ =gPlayerState - adds r0, r1, #0 - adds r0, #0x21 - ldrb r0, [r0] - cmp r0, #0 - beq _0808DFCC - ldrb r1, [r1, #4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808DFD0 -_0808DFCC: - bl DeleteThisEntity -_0808DFD0: - ldr r0, _0808DFF0 @ =gPlayerState - adds r2, r0, #0 - adds r2, #0x21 - ldrb r0, [r2] - cmp r0, #0x4f - bls _0808DFF8 - ldrb r0, [r4, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r4, #0x18] - ldrb r6, [r2] - ldr r7, _0808DFF4 @ =gUnk_081217D8 - b _0808E038 - .align 2, 0 -_0808DFF0: .4byte gPlayerState -_0808DFF4: .4byte gUnk_081217D8 -_0808DFF8: - cmp r0, #0 - beq _0808E008 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - b _0808E1BA -_0808E008: - bl DeleteThisEntity - b _0808E038 -_0808E00E: - ldr r5, _0808E02C @ =gPlayerState - ldrb r0, [r5, #4] - cmp r0, #0 - bne _0808E01A - bl DeleteThisEntity -_0808E01A: - ldrb r1, [r5, #0x1b] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0808E034 - ldrb r6, [r5, #0x1b] - ldr r7, _0808E030 @ =gUnk_081217D0 - b _0808E038 - .align 2, 0 -_0808E02C: .4byte gPlayerState -_0808E030: .4byte gUnk_081217D0 -_0808E034: - bl DeleteThisEntity -_0808E038: - cmp r6, #0 - bne _0808E03E - b _0808E1B6 -_0808E03E: - adds r0, r4, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0808E084 - subs r0, #1 - strb r0, [r4, #0xe] - movs r2, #3 - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _0808E068 - ldr r0, _0808E080 @ =gPlayerState - adds r0, #0xac - ldrh r1, [r0] - movs r0, #0x80 - lsls r0, r0, #2 - ands r0, r1 - cmp r0, #0 - bne _0808E068 - movs r2, #7 -_0808E068: - ldrb r0, [r4, #0xe] - ands r0, r2 - adds r5, r4, #0 - adds r5, #0x6c - adds r6, r4, #0 - adds r6, #0x38 - cmp r0, #0 - bne _0808E0E4 - ldrh r0, [r5] - adds r0, #1 - strh r0, [r5] - b _0808E0E4 - .align 2, 0 -_0808E080: .4byte gPlayerState -_0808E084: - adds r5, r4, #0 - adds r5, #0x72 - ldrh r0, [r5] - cmp r0, #0 - beq _0808E0BC - ldr r0, _0808E0B8 @ =gRoomTransition - ldr r1, [r0] - movs r0, #0x1f - ands r1, r0 - subs r5, #6 - adds r6, r4, #0 - adds r6, #0x38 - cmp r1, #0 - bne _0808E0E4 - adds r0, r4, #0 - movs r1, #7 - movs r2, #0 - bl CreateFx - cmp r0, #0 - beq _0808E0E4 - ldrb r1, [r6] - adds r0, #0x38 - strb r1, [r0] - b _0808E0E4 - .align 2, 0 -_0808E0B8: .4byte gRoomTransition -_0808E0BC: - ldr r0, _0808E140 @ =0x00000115 - bl EnqueueSFX - adds r0, r4, #0 - movs r1, #0x12 - movs r2, #0 - bl CreateFx - adds r6, r4, #0 - adds r6, #0x38 - cmp r0, #0 - beq _0808E0DA - ldrb r1, [r6] - adds r0, #0x38 - strb r1, [r0] -_0808E0DA: - ldrh r0, [r5] - adds r0, #1 - strh r0, [r5] - adds r5, r4, #0 - adds r5, #0x6c -_0808E0E4: - ldr r2, _0808E144 @ =gPlayerEntity - ldrb r1, [r2, #0x19] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r3, [r4, #0x19] - movs r0, #0x3f - ands r0, r3 - orrs r0, r1 - strb r0, [r4, #0x19] - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - adds r0, r7, r0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r2, #0x2e] - adds r0, r0, r1 - strh r0, [r4, #0x2e] - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - adds r0, r0, r7 - ldrb r0, [r0, #1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r2, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] - ldrh r0, [r2, #0x36] - strh r0, [r4, #0x36] - adds r2, #0x38 - ldrb r0, [r2] - strb r0, [r6] - ldrb r0, [r4, #0x14] - cmp r0, #1 - beq _0808E148 - cmp r0, #1 - ble _0808E136 - cmp r0, #2 - beq _0808E150 - cmp r0, #3 - beq _0808E15A -_0808E136: - ldrh r0, [r4, #0x32] - ldrh r1, [r5] - subs r0, r0, r1 - strh r0, [r4, #0x32] - b _0808E162 - .align 2, 0 -_0808E140: .4byte 0x00000115 -_0808E144: .4byte gPlayerEntity -_0808E148: - ldrh r0, [r5] - ldrh r1, [r4, #0x2e] - adds r0, r0, r1 - b _0808E160 -_0808E150: - ldrh r0, [r5] - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] - b _0808E162 -_0808E15A: - ldrh r0, [r4, #0x2e] - ldrh r1, [r5] - subs r0, r0, r1 -_0808E160: - strh r0, [r4, #0x2e] -_0808E162: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0808E17A - movs r0, #6 - strb r0, [r4, #0xf] - ldrb r0, [r4, #0x15] - movs r1, #0x10 - eors r0, r1 - strb r0, [r4, #0x15] -_0808E17A: - adds r0, r4, #0 - bl LinearMoveUpdate - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _0808E1BA - ldr r0, _0808E1AC @ =gPlayerState - ldrb r1, [r0, #0x1b] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _0808E1BA - ldrb r0, [r4, #0x10] - movs r1, #0xdf - ands r1, r0 - strb r1, [r4, #0x10] - movs r0, #6 - bl GetInventoryValue - cmp r0, #1 - bne _0808E1B0 - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - b _0808E1BA - .align 2, 0 -_0808E1AC: .4byte gPlayerState -_0808E1B0: - bl DeleteThisEntity - b _0808E1BA -_0808E1B6: - bl DeleteThisEntity -_0808E1BA: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0808E1BC -sub_0808E1BC: @ 0x0808E1BC - push {r4, lr} - adds r4, r0, #0 - bl sub_08079BD8 - ldrb r0, [r4, #0xc] - adds r0, #1 - movs r2, #0 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - ldr r0, _0808E204 @ =gPlayerEntity - ldrb r0, [r0, #0x14] - strb r0, [r4, #0x14] - adds r0, r4, #0 - adds r0, #0x60 - strh r2, [r0] - ldrb r1, [r4, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r4, #0x1a] - movs r0, #0xaf - strh r0, [r4, #0x12] - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - adds r0, r4, #0 - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 -_0808E204: .4byte gPlayerEntity - - thumb_func_start sub_0808E208 -sub_0808E208: @ 0x0808E208 - push {r4, lr} - adds r4, r0, #0 - bl sub_08079BD8 - adds r0, r4, #0 - bl GetNextFrame - ldr r0, _0808E240 @ =gPlayerState - ldrb r0, [r0, #0x1b] - cmp r0, #0 - beq _0808E248 - ldr r0, _0808E244 @ =gRoomTransition - ldr r0, [r0] - movs r1, #3 - ands r0, r1 - cmp r0, #0 - bne _0808E24C - ldrb r2, [r4, #0x1a] - lsls r1, r2, #0x1c - lsrs r1, r1, #0x1c - movs r0, #4 - eors r1, r0 - subs r0, #0x14 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1a] - b _0808E24C - .align 2, 0 -_0808E240: .4byte gPlayerState -_0808E244: .4byte gRoomTransition -_0808E248: - bl DeleteThisEntity -_0808E24C: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0808E260 - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] -_0808E260: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0808E264 -sub_0808E264: @ 0x0808E264 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808E27C - bl DeleteThisEntity -_0808E27C: - pop {r4, pc} - .align 2, 0 diff --git a/asm/object/object61.s b/asm/object/object61.s deleted file mode 100644 index 3a44eecf..00000000 --- a/asm/object/object61.s +++ /dev/null @@ -1,434 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object61 -Object61: @ 0x08093428 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _0809345C @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - lsls r1, r1, #0x11 - ands r0, r1 - cmp r0, #0 - bne _0809344A - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _08093446 - ldr r1, _08093460 @ =gRoomControls - ldr r0, _08093464 @ =gPlayerEntity - str r0, [r1, #0x30] -_08093446: - bl DeleteThisEntity -_0809344A: - ldr r0, _08093468 @ =gUnk_081228C8 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_0809345C: .4byte gPlayerState -_08093460: .4byte gRoomControls -_08093464: .4byte gPlayerEntity -_08093468: .4byte gUnk_081228C8 - - thumb_func_start sub_0809346C -sub_0809346C: @ 0x0809346C - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xff - strb r0, [r4, #0x1f] - ldr r0, _080934C0 @ =gPlayerEntity - ldrb r1, [r0, #0x1a] - lsls r1, r1, #0x1c - lsrs r1, r1, #0x1c - ldrb r2, [r4, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1a] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080934B8 - ldr r0, _080934C4 @ =gRoomControls - str r4, [r0, #0x30] - ldrb r0, [r4, #0x19] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x19] - adds r1, r4, #0 - adds r1, #0x6e - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r1] - adds r1, #4 - strh r0, [r1] - adds r0, r4, #0 - movs r1, #0x61 - movs r2, #1 - movs r3, #0 - bl CreateObjectWithParent -_080934B8: - adds r0, r4, #0 - bl sub_080934C8 - pop {r4, pc} - .align 2, 0 -_080934C0: .4byte gPlayerEntity -_080934C4: .4byte gRoomControls - - thumb_func_start sub_080934C8 -sub_080934C8: @ 0x080934C8 - push {lr} - ldr r2, _080934DC @ =gUnk_081228D0 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080934DC: .4byte gUnk_081228D0 - - thumb_func_start sub_080934E0 -sub_080934E0: @ 0x080934E0 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r4, r5, #0 - adds r4, #0x6e - ldrh r1, [r4] - movs r2, #0 - ldrsh r0, [r4, r2] - cmp r0, #0 - bge _080934F6 - rsbs r0, r1, #0 - strh r0, [r4] -_080934F6: - ldr r0, _08093518 @ =gPlayerEntity - ldrb r0, [r0, #0xd] - cmp r0, #2 - beq _0809351C - cmp r0, #2 - bgt _080935B0 - cmp r0, #1 - bne _080935B0 - adds r1, r5, #0 - adds r1, #0x72 - ldrh r0, [r1] - subs r0, #4 - strh r0, [r1] - adds r6, r4, #0 - adds r7, r1, #0 - b _080935BE - .align 2, 0 -_08093518: .4byte gPlayerEntity -_0809351C: - ldrb r2, [r5, #0xf] - adds r0, r2, #0 - cmp r0, #0 - bne _08093560 - adds r0, r5, #0 - adds r0, #0x72 - ldrh r1, [r0] - adds r7, r0, #0 - cmp r1, #0x80 - bls _08093538 - adds r0, r1, #0 - subs r0, #0x20 - strh r0, [r7] - b _08093544 -_08093538: - adds r0, r2, #1 - strb r0, [r5, #0xf] - movs r0, #0x92 - lsls r0, r0, #1 - bl SoundReq -_08093544: - adds r0, r5, #0 - adds r0, #0x6e - ldrh r2, [r0] - ldr r1, _0809355C @ =0x0000011F - adds r6, r0, #0 - cmp r2, r1 - bhi _080935BE - adds r0, r2, #0 - adds r0, #0x40 - strh r0, [r6] - b _080935BE - .align 2, 0 -_0809355C: .4byte 0x0000011F -_08093560: - cmp r0, #0xff - beq _080935A6 - adds r0, r5, #0 - adds r0, #0x72 - ldrh r1, [r0] - adds r7, r0, #0 - cmp r1, #0xff - bhi _08093576 - adds r0, r1, #0 - adds r0, #0x20 - b _0809357A -_08093576: - movs r0, #0x80 - lsls r0, r0, #1 -_0809357A: - strh r0, [r7] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r1, [r0] - movs r2, #0x80 - lsls r2, r2, #1 - adds r6, r0, #0 - cmp r1, r2 - bls _08093594 - adds r0, r1, #0 - subs r0, #0x20 - strh r0, [r6] - b _08093596 -_08093594: - strh r2, [r6] -_08093596: - ldrh r1, [r6] - movs r0, #0x80 - lsls r0, r0, #1 - cmp r1, r0 - bne _080935BE - movs r0, #0xff - strb r0, [r5, #0xf] - b _080935BE -_080935A6: - adds r0, r5, #0 - bl sub_080936C8 - adds r6, r4, #0 - b _080935BA -_080935B0: - adds r0, r5, #0 - bl sub_080936C8 - adds r6, r5, #0 - adds r6, #0x6e -_080935BA: - adds r7, r5, #0 - adds r7, #0x72 -_080935BE: - ldr r0, _080935E4 @ =gPlayerEntity - ldrb r1, [r0, #0x14] - movs r0, #2 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - beq _080935E8 - movs r0, #1 - strb r0, [r5, #0x1e] - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #2 - bne _080935EA - ldrh r0, [r6] - rsbs r0, r0, #0 - strh r0, [r6] - b _080935EA - .align 2, 0 -_080935E4: .4byte gPlayerEntity -_080935E8: - strb r0, [r5, #0x1e] -_080935EA: - ldrb r0, [r5, #0x1e] - ldrb r1, [r5, #0x1f] - cmp r0, r1 - beq _080935FE - strb r0, [r5, #0x1f] - ldrb r1, [r5, #0x1e] - ldrh r2, [r5, #0x12] - adds r0, r5, #0 - bl sub_080042D0 -_080935FE: - ldr r4, _0809364C @ =gPlayerEntity - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - ldrb r2, [r4, #0x1b] - lsrs r2, r2, #6 - lsls r2, r2, #6 - ldrb r3, [r5, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r5, #0x1b] - ldrb r0, [r4, #0x19] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r2, [r5, #0x19] - ands r1, r2 - orrs r1, r0 - strb r1, [r5, #0x19] - ldrh r1, [r7] - adds r0, r5, #0 - movs r2, #0xa - movs r3, #2 - bl sub_0806FCF4 - ldrh r1, [r6] - ldrh r2, [r7] - adds r0, r5, #0 - movs r3, #0 - bl sub_0805EC9C - adds r0, r4, #0 - movs r1, #1 - adds r2, r5, #0 - bl sub_0806FEBC - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0809364C: .4byte gPlayerEntity - - thumb_func_start sub_08093650 -sub_08093650: @ 0x08093650 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, _080936C4 @ =gPlayerEntity - ldrb r0, [r5, #0x15] - lsrs r1, r0, #1 - adds r0, r0, r1 - asrs r0, r0, #2 - adds r0, #2 - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x1f] - cmp r0, r1 - beq _08093674 - strb r0, [r4, #0x1f] - ldrb r1, [r4, #0x1e] - ldrh r2, [r4, #0x12] - adds r0, r4, #0 - bl sub_080042D0 -_08093674: - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldrb r2, [r5, #0x1b] - lsrs r2, r2, #6 - lsls r2, r2, #6 - ldrb r3, [r4, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, #0x1b] - ldrb r0, [r5, #0x19] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r2, [r4, #0x19] - ands r1, r2 - orrs r1, r0 - strb r1, [r4, #0x19] - ldr r0, [r4, #0x50] - adds r0, #0x72 - ldrh r1, [r0] - adds r0, r4, #0 - movs r2, #0x18 - movs r3, #0 - bl sub_0806FCF4 - adds r1, r4, #0 - adds r1, #0x63 - ldrb r0, [r1] - rsbs r0, r0, #0 - strb r0, [r1] - adds r0, r5, #0 - movs r1, #0 - adds r2, r4, #0 - bl sub_0806FEBC - pop {r4, r5, pc} - .align 2, 0 -_080936C4: .4byte gPlayerEntity - - thumb_func_start sub_080936C8 -sub_080936C8: @ 0x080936C8 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, _08093714 @ =gPlayerEntity - ldr r0, [r0, #0x7c] - lsrs r2, r0, #2 - movs r3, #0x9c - lsls r3, r3, #1 - adds r1, r3, #0 - subs r1, r1, r2 - adds r5, r4, #0 - adds r5, #0x76 - strh r1, [r5] - movs r1, #0x3c - bl __divsi3 - movs r1, #8 - subs r1, r1, r0 - adds r0, r4, #0 - adds r0, #0x74 - strh r1, [r0] - ldrb r3, [r4, #0xe] - cmp r3, #0 - bne _0809372C - adds r1, r4, #0 - adds r1, #0x6e - ldrh r2, [r1] - ldrh r0, [r5] - cmp r0, r2 - bhs _08093718 - adds r0, r2, #0 - subs r0, #8 - strh r0, [r1] - adds r1, #4 - ldrh r0, [r1] - adds r0, #8 - strh r0, [r1] - b _0809375C - .align 2, 0 -_08093714: .4byte gPlayerEntity -_08093718: - adds r0, r3, #1 - strb r0, [r4, #0xe] - ldrh r0, [r5] - strh r0, [r1] - ldrh r0, [r5] - adds r0, #0x30 - adds r1, r4, #0 - adds r1, #0x72 - strh r0, [r1] - b _0809375C -_0809372C: - ldrh r0, [r5] - adds r0, #0x30 - adds r1, r4, #0 - adds r1, #0x6e - ldrh r2, [r1] - cmp r0, r2 - ble _0809374A - adds r0, r2, #0 - adds r0, #8 - strh r0, [r1] - adds r1, #4 - ldrh r0, [r1] - subs r0, #8 - strh r0, [r1] - b _0809375C -_0809374A: - movs r0, #0 - strb r0, [r4, #0xe] - ldrh r0, [r5] - adds r0, #0x30 - strh r0, [r1] - ldrh r1, [r5] - adds r0, r4, #0 - adds r0, #0x72 - strh r1, [r0] -_0809375C: - pop {r4, r5, pc} - .align 2, 0 diff --git a/asm/object/object68.s b/asm/object/object68.s deleted file mode 100644 index 795b73d1..00000000 --- a/asm/object/object68.s +++ /dev/null @@ -1,337 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object68 -Object68: @ 0x0809475C - push {lr} - ldr r2, _08094770 @ =gUnk_08122A10 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08094770: .4byte gUnk_08122A10 - - thumb_func_start sub_08094774 -sub_08094774: @ 0x08094774 - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r0, #1 - strb r0, [r5, #0xc] - ldrb r0, [r5, #0xa] - cmp r0, #8 - bls _08094784 - b _080948C6 -_08094784: - lsls r0, r0, #2 - ldr r1, _08094790 @ =_08094794 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08094790: .4byte _08094794 -_08094794: @ jump table - .4byte _080947B8 @ case 0 - .4byte _08094824 @ case 1 - .4byte _080948B0 @ case 2 - .4byte _080948C6 @ case 3 - .4byte _080948C6 @ case 4 - .4byte _080948C6 @ case 5 - .4byte _080948C6 @ case 6 - .4byte _080948C6 @ case 7 - .4byte _080948C6 @ case 8 -_080947B8: - adds r0, r5, #0 - movs r1, #0xb - movs r2, #0 - bl CreateFx - adds r6, r0, #0 - str r6, [r5, #0x54] - cmp r6, #0 - beq _080947EE - ldr r0, _0809480C @ =gPlayerEntity - ldr r4, _08094810 @ =gUnk_08122A18 - ldrb r3, [r0, #0x14] - movs r1, #6 - ands r1, r3 - adds r1, r1, r4 - movs r2, #0 - ldrsb r2, [r1, r2] - lsls r2, r2, #0x10 - movs r1, #1 - orrs r1, r3 - adds r1, r1, r4 - movs r3, #0 - ldrsb r3, [r1, r3] - lsls r3, r3, #0x10 - adds r1, r6, #0 - bl PositionRelative -_080947EE: - ldr r0, [r5, #0x54] - adds r1, r5, #0 - bl CopyPosition - ldr r1, _08094814 @ =0x00004032 - ldr r2, _08094818 @ =0x00004033 - adds r0, r5, #0 - bl sub_08094980 - ldr r1, _0809481C @ =0x00004061 - ldr r2, _08094820 @ =0x00004022 - adds r0, r5, #0 - bl sub_08094980 - b _080948C6 - .align 2, 0 -_0809480C: .4byte gPlayerEntity -_08094810: .4byte gUnk_08122A18 -_08094814: .4byte 0x00004032 -_08094818: .4byte 0x00004033 -_0809481C: .4byte 0x00004061 -_08094820: .4byte 0x00004022 -_08094824: - adds r0, r5, #0 - movs r1, #0x2b - movs r2, #0 - bl CreateFx - adds r6, r0, #0 - str r6, [r5, #0x54] - cmp r6, #0 - beq _0809485A - ldr r0, _08094898 @ =gPlayerEntity - ldr r4, _0809489C @ =gUnk_08122A18 - ldrb r3, [r0, #0x14] - movs r1, #6 - ands r1, r3 - adds r1, r1, r4 - movs r2, #0 - ldrsb r2, [r1, r2] - lsls r2, r2, #0x10 - movs r1, #1 - orrs r1, r3 - adds r1, r1, r4 - movs r3, #0 - ldrsb r3, [r1, r3] - lsls r3, r3, #0x10 - adds r1, r6, #0 - bl PositionRelative -_0809485A: - ldrb r4, [r5, #0xb] - cmp r4, #0 - bne _080948C6 - ldr r0, [r5, #0x54] - adds r1, r5, #0 - bl CopyPosition - strb r4, [r5, #0xe] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] - ldrb r1, [r5, #0x19] - movs r0, #0x3f - ands r0, r1 - strb r0, [r5, #0x19] - ldr r1, _080948A0 @ =0x0000403B - ldr r2, _080948A4 @ =0x0000403C - adds r0, r5, #0 - bl sub_08094980 - ldr r1, _080948A8 @ =0x00004061 - ldr r2, _080948AC @ =0x00004022 - adds r0, r5, #0 - bl sub_08094980 - b _080948CA - .align 2, 0 -_08094898: .4byte gPlayerEntity -_0809489C: .4byte gUnk_08122A18 -_080948A0: .4byte 0x0000403B -_080948A4: .4byte 0x0000403C -_080948A8: .4byte 0x00004061 -_080948AC: .4byte 0x00004022 -_080948B0: - ldr r0, _080948CC @ =gPlayerEntity - movs r1, #0x60 - movs r2, #0 - bl sub_080A2A20 - adds r1, r0, #0 - str r1, [r5, #0x54] - cmp r1, #0 - beq _080948C6 - movs r0, #1 - strb r0, [r1, #0xe] -_080948C6: - bl DeleteThisEntity -_080948CA: - pop {r4, r5, r6, pc} - .align 2, 0 -_080948CC: .4byte gPlayerEntity - - thumb_func_start sub_080948D0 -sub_080948D0: @ 0x080948D0 - push {lr} - ldr r2, _080948E4 @ =gUnk_08122A20 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080948E4: .4byte gUnk_08122A20 - - thumb_func_start sub_080948E8 -sub_080948E8: @ 0x080948E8 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xe] - cmp r1, #0x3b - bhi _08094978 - ldr r0, [r4, #0x34] - ldr r2, _0809495C @ =0xFFFFC000 - adds r0, r0, r2 - str r0, [r4, #0x34] - movs r0, #3 - ands r0, r1 - cmp r0, #0 - bne _08094970 - adds r0, r4, #0 - movs r1, #0x11 - movs r2, #0x40 - bl CreateFx - adds r3, r0, #0 - str r3, [r4, #0x54] - cmp r3, #0 - beq _08094970 - ldrb r1, [r4, #0x19] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r3, #0x19] - movs r0, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x19] - ldr r2, [r4, #0x54] - adds r0, r4, #0 - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - adds r2, #0x29 - lsrs r1, r1, #0x1d - ldrb r3, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _08094960 - bl Random - ldr r2, [r4, #0x54] - movs r1, #0xf - ands r0, r1 - ldrh r1, [r2, #0x2e] - adds r0, r0, r1 - strh r0, [r2, #0x2e] - b _08094970 - .align 2, 0 -_0809495C: .4byte 0xFFFFC000 -_08094960: - bl Random - ldr r2, [r4, #0x54] - movs r1, #0xf - ands r0, r1 - ldrh r1, [r2, #0x2e] - subs r1, r1, r0 - strh r1, [r2, #0x2e] -_08094970: - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - b _0809497C -_08094978: - bl DeleteThisEntity -_0809497C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08094980 -sub_08094980: @ 0x08094980 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - adds r6, r0, #0 - str r1, [sp] - str r2, [sp, #4] - movs r0, #0 - mov r8, r0 - ldr r1, _08094A04 @ =gRoomControls - mov sl, r1 - movs r2, #0x3f - mov sb, r2 - ldr r7, _08094A08 @ =gUnk_08122A28 -_080949A0: - movs r4, #0 - ldrsb r4, [r7, r4] - movs r5, #1 - ldrsb r5, [r7, r5] - adds r0, r6, #0 - adds r1, r4, #0 - adds r2, r5, #0 - bl sub_0800029C - ldr r3, [sp] - cmp r3, r0 - bne _080949EC - movs r0, #0x2e - ldrsh r1, [r6, r0] - adds r1, r1, r4 - mov r2, sl - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - mov r3, sb - ands r1, r3 - movs r2, #0x32 - ldrsh r0, [r6, r2] - adds r0, r0, r5 - mov r3, sl - ldrh r2, [r3, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - mov r2, sb - ands r0, r2 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r6, #0 - adds r0, #0x38 - ldrb r2, [r0] - ldr r0, [sp, #4] - bl SetTile -_080949EC: - adds r7, #2 - movs r3, #2 - add r8, r3 - mov r0, r8 - cmp r0, #9 - bls _080949A0 - 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 -_08094A04: .4byte gRoomControls -_08094A08: .4byte gUnk_08122A28 diff --git a/asm/object/object69.s b/asm/object/object69.s deleted file mode 100644 index 05a953ba..00000000 --- a/asm/object/object69.s +++ /dev/null @@ -1,40 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object69 -Object69: @ 0x08094A0C - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08094A3E - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _08094A34 - movs r0, #1 - strb r0, [r2, #0xc] - ldr r0, _08094A30 @ =gHitbox_2 - str r0, [r2, #0x48] - adds r0, r2, #0 - bl sub_0807DD50 - b _08094A42 - .align 2, 0 -_08094A30: .4byte gHitbox_2 -_08094A34: - adds r0, r2, #0 - movs r1, #0 - bl sub_0807DD94 - b _08094A42 -_08094A3E: - movs r0, #1 - strb r0, [r2, #0xc] -_08094A42: - pop {pc} diff --git a/asm/object/objectBF.s b/asm/object/objectBF.s deleted file mode 100644 index 0a53e6d6..00000000 --- a/asm/object/objectBF.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ObjectBF -ObjectBF: @ 0x080A2444 - bx lr - .align 2, 0 diff --git a/asm/object/objectC1.s b/asm/object/objectC1.s deleted file mode 100644 index d66a016b..00000000 --- a/asm/object/objectC1.s +++ /dev/null @@ -1,272 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ObjectC1 -ObjectC1: @ 0x080A2560 - push {lr} - ldr r2, _080A2574 @ =gUnk_08125084 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A2574: .4byte gUnk_08125084 - - thumb_func_start sub_080A2578 -sub_080A2578: @ 0x080A2578 - push {lr} - movs r1, #8 - strb r1, [r0, #0xc] - bl sub_080A259C - pop {pc} - - thumb_func_start sub_080A2584 -sub_080A2584: @ 0x080A2584 - push {lr} - bl ResetPlayerEventPriority - ldr r1, _080A2598 @ =gUnk_02034490 - movs r0, #0 - strb r0, [r1] - bl DeleteThisEntity - pop {pc} - .align 2, 0 -_080A2598: .4byte gUnk_02034490 - - thumb_func_start sub_080A259C -sub_080A259C: @ 0x080A259C - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldr r5, _080A25DC @ =gPlayerEntity - ldrb r1, [r5, #0x10] - movs r7, #0x7f - adds r0, r7, #0 - ands r0, r1 - strb r0, [r5, #0x10] - ldrb r1, [r5, #0x18] - movs r6, #4 - rsbs r6, r6, #0 - adds r0, r6, #0 - ands r0, r1 - strb r0, [r5, #0x18] - ldrb r1, [r5, #0x1a] - lsls r1, r1, #0x1c - lsrs r1, r1, #0x1c - ldrb r2, [r4, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1a] - ldrb r0, [r4, #0xd] - cmp r0, #1 - beq _080A269C - cmp r0, #1 - bgt _080A25E0 - cmp r0, #0 - beq _080A25E6 - b _080A273C - .align 2, 0 -_080A25DC: .4byte gPlayerEntity -_080A25E0: - cmp r0, #2 - beq _080A26B4 - b _080A273C -_080A25E6: - movs r0, #1 - movs r2, #1 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x18] - adds r0, r6, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] - adds r0, r5, #0 - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - adds r3, r4, #0 - adds r3, #0x29 - lsrs r1, r1, #0x1d - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrb r2, [r5, #0x19] - lsrs r2, r2, #6 - lsls r2, r2, #6 - ldrb r3, [r4, #0x19] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, #0x19] - ldrb r0, [r5, #0x1b] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r2, [r4, #0x1b] - ands r1, r2 - orrs r1, r0 - strb r1, [r4, #0x1b] - ldrb r1, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - movs r0, #4 - strb r0, [r4, #0x14] - adds r0, r4, #0 - movs r1, #6 - bl SetDefaultPriority - ldr r0, _080A2670 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #8 - ands r0, r1 - cmp r0, #0 - beq _080A2678 - ldrb r0, [r4, #0xa] - bl sub_080542AC - ldr r1, _080A2674 @ =0x0000045B - cmp r0, #0 - beq _080A2688 - adds r1, #3 - b _080A2688 - .align 2, 0 -_080A2670: .4byte gPlayerState -_080A2674: .4byte 0x0000045B -_080A2678: - ldrb r0, [r4, #0xa] - bl sub_080542AC - ldr r1, _080A2698 @ =0x000001B9 - cmp r0, #0 - beq _080A2688 - movs r1, #0xb8 - lsls r1, r1, #2 -_080A2688: - lsrs r0, r1, #8 - strh r0, [r4, #0x12] - movs r0, #0xff - ands r1, r0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _080A273C - .align 2, 0 -_080A2698: .4byte 0x000001B9 -_080A269C: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #0 - beq _080A273C - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - b _080A273C -_080A26B4: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - ldr r0, _080A2764 @ =gMessage - ldrb r1, [r0] - adds r0, r7, #0 - ands r0, r1 - cmp r0, #0 - bne _080A2762 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A273C - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - ldrb r0, [r0] - strb r0, [r5, #0x10] - adds r0, r4, #0 - adds r0, #0x68 - ldrb r1, [r0] - movs r0, #3 - ands r1, r0 - ldrb r2, [r5, #0x18] - adds r0, r6, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, #0x18] - adds r0, r4, #0 - adds r0, #0x6a - ldrb r1, [r0] - adds r0, r5, #0 - adds r0, #0x3d - strb r1, [r0] - ldr r1, _080A2768 @ =gPlayerState - adds r0, r4, #0 - adds r0, #0x6b - ldrb r0, [r0] - strb r0, [r1, #7] - adds r0, r4, #0 - adds r0, #0x6c - ldrb r0, [r0] - strb r0, [r1, #0xb] - adds r0, r4, #0 - adds r0, #0x6d - ldrb r0, [r0] - strb r0, [r1, #0xa] - adds r0, r4, #0 - adds r0, #0x6e - ldrb r0, [r0] - adds r2, r1, #0 - adds r2, #0x27 - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x6f - ldrb r0, [r0] - strb r0, [r1, #0x1a] - ldr r0, [r4, #0x70] - str r0, [r1, #0x30] - adds r0, r4, #0 - adds r0, #0x74 - ldrb r0, [r0] - adds r1, #0x8a - strb r0, [r1] -_080A273C: - ldr r5, [r4, #0x50] - cmp r5, #0 - beq _080A2762 - adds r0, r4, #0 - adds r1, r5, #0 - bl PositionEntityOnTop - ldrh r0, [r4, #0x12] - ldrb r1, [r4, #0x1e] - bl GetSpriteSubEntryOffsetDataPointer - ldrb r1, [r0] - adds r2, r5, #0 - adds r2, #0x62 - strb r1, [r2] - ldrb r1, [r0, #1] - adds r0, r5, #0 - adds r0, #0x63 - strb r1, [r0] -_080A2762: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A2764: .4byte gMessage -_080A2768: .4byte gPlayerState diff --git a/asm/object/whirlwind.s b/asm/object/whirlwind.s deleted file mode 100644 index fe9c3966..00000000 --- a/asm/object/whirlwind.s +++ /dev/null @@ -1,282 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Whirlwind -Whirlwind: @ 0x08092CA0 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x45 - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - beq _08092CC0 - ldr r0, _08092CD4 @ =gUnk_020342F8 - subs r1, #1 - bl ReadBit - cmp r0, #0 - bne _08092CC0 - bl DeleteThisEntity -_08092CC0: - ldr r0, _08092CD8 @ =gUnk_081227F4 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_08092CD4: .4byte gUnk_020342F8 -_08092CD8: .4byte gUnk_081227F4 - - thumb_func_start sub_08092CDC -sub_08092CDC: @ 0x08092CDC - push {r4, lr} - adds r4, r0, #0 - movs r2, #1 - strb r2, [r4, #0xc] - ldr r0, _08092D48 @ =gUnk_080FD320 - str r0, [r4, #0x48] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - adds r0, #0x3f - strb r2, [r0] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #0x47 - strb r0, [r1] - adds r1, #4 - movs r0, #0x44 - strb r0, [r1] - subs r1, #5 - movs r0, #0x80 - strb r0, [r1] - ldrb r2, [r4, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x19] - ands r1, r0 - orrs r1, r2 - strb r1, [r4, #0x19] - ldrb r0, [r4, #0xa] - strb r0, [r4, #0x14] - lsls r0, r0, #3 - strb r0, [r4, #0x15] - movs r0, #0xe0 - lsls r0, r0, #3 - strh r0, [r4, #0x24] - ldrb r0, [r4, #0xb] - cmp r0, #1 - bne _08092D50 - ldr r1, _08092D4C @ =0x00000161 - adds r0, r4, #0 - bl ChangeObjPalette - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation - b _08092D5C - .align 2, 0 -_08092D48: .4byte gUnk_080FD320 -_08092D4C: .4byte 0x00000161 -_08092D50: - ldr r0, _08092D78 @ =0x0000FFE8 - strh r0, [r4, #0x36] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_08092D5C: - ldrb r1, [r4, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08092D74 - adds r0, r4, #0 - bl sub_0807DD64 - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity -_08092D74: - pop {r4, pc} - .align 2, 0 -_08092D78: .4byte 0x0000FFE8 - - thumb_func_start sub_08092D7C -sub_08092D7C: @ 0x08092D7C - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r1, [r5, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08092D92 - adds r0, r5, #0 - movs r1, #0 - bl ExecuteScriptForEntity -_08092D92: - ldrb r0, [r5, #0x18] - lsls r0, r0, #0x1e - cmp r0, #0 - beq _08092E84 - adds r0, r5, #0 - bl GetNextFrame - ldr r6, _08092E04 @ =gPlayerState - ldr r0, [r6, #0x30] - movs r3, #0x80 - ands r0, r3 - cmp r0, #0 - bne _08092E84 - adds r0, r6, #0 - adds r0, #0x3c - ldrb r0, [r0] - cmp r0, #0 - bne _08092E84 - ldr r4, _08092E08 @ =gPlayerEntity - ldrb r2, [r4, #0xc] - cmp r2, #4 - beq _08092DC8 - ldrb r1, [r4, #0x10] - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - beq _08092E84 -_08092DC8: - cmp r2, #6 - beq _08092E84 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0xc - movs r3, #0xc - bl sub_0800419C - cmp r0, #0 - beq _08092E84 - ldr r0, [r6, #0x30] - movs r1, #0x80 - lsls r1, r1, #0x11 - ands r0, r1 - cmp r0, #0 - bne _08092E0C - ldrb r0, [r4, #0xc] - cmp r0, #4 - beq _08092E0C - ldrb r0, [r5, #0xb] - cmp r0, #1 - beq _08092E16 - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #0x10 - rsbs r0, r0, #0 - cmp r1, r0 - bgt _08092E84 - b _08092E16 - .align 2, 0 -_08092E04: .4byte gPlayerState -_08092E08: .4byte gPlayerEntity -_08092E0C: - ldr r0, _08092E88 @ =gPlayerEntity - movs r1, #0x36 - ldrsh r0, [r0, r1] - cmp r0, #0 - beq _08092E84 -_08092E16: - ldr r4, _08092E88 @ =gPlayerEntity - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - adds r0, r5, #0 - bl sub_08004542 - adds r0, r4, #0 - bl sub_08004542 - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #1 - strb r0, [r1] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldr r1, _08092E8C @ =gPlayerState - movs r0, #0x1f - strb r0, [r1, #0xc] - ldrb r2, [r5, #0xb] - adds r0, r1, #0 - adds r0, #0x38 - strb r2, [r0] - adds r1, #0x39 - movs r0, #0xff - strb r0, [r1] - adds r4, #0x29 - ldrb r1, [r4] - lsls r1, r1, #0x1d - lsrs r1, r1, #0x1d - subs r1, #1 - adds r3, r5, #0 - adds r3, #0x29 - movs r0, #7 - ands r1, r0 - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrb r0, [r5, #0xc] - adds r0, #1 - strb r0, [r5, #0xc] - bl sub_08077B20 - ldr r0, _08092E90 @ =0x00000153 - bl SoundReq - movs r0, #0x79 - bl SoundReq -_08092E84: - pop {r4, r5, r6, pc} - .align 2, 0 -_08092E88: .4byte gPlayerEntity -_08092E8C: .4byte gPlayerState -_08092E90: .4byte 0x00000153 - - thumb_func_start sub_08092E94 -sub_08092E94: @ 0x08092E94 - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - ldr r1, _08092ED0 @ =gPlayerEntity - adds r0, r4, #0 - movs r2, #0xc - movs r3, #0xc - bl sub_0800419C - cmp r0, #0 - bne _08092ECE - adds r0, r4, #0 - bl ResetCollisionLayer - ldrb r2, [r4, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x19] - ands r1, r0 - orrs r1, r2 - strb r1, [r4, #0x19] - ldrb r0, [r4, #0xc] - subs r0, #1 - strb r0, [r4, #0xc] -_08092ECE: - pop {r4, pc} - .align 2, 0 -_08092ED0: .4byte gPlayerEntity diff --git a/asm/object/windTribeTeleporter.s b/asm/object/windTribeTeleporter.s deleted file mode 100644 index 4fe081a9..00000000 --- a/asm/object/windTribeTeleporter.s +++ /dev/null @@ -1,741 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start WindTribeTeleporter -WindTribeTeleporter: @ 0x080A0F24 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080A0F40 @ =gUnk_08124C10 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_080A11E0 - pop {r4, pc} - .align 2, 0 -_080A0F40: .4byte gUnk_08124C10 - - thumb_func_start sub_080A0F44 -sub_080A0F44: @ 0x080A0F44 - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r6, #1 - strb r6, [r5, #0xc] - adds r1, r5, #0 - adds r1, #0x59 - movs r0, #8 - strb r0, [r1] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080A0FA8 @ =gHitbox_22 - str r0, [r5, #0x48] - adds r0, r5, #0 - movs r1, #6 - bl SetDefaultPriority - adds r0, r5, #0 - bl sub_080A11C0 - cmp r0, #0 - beq _080A0FA4 - ldr r1, _080A0FAC @ =gPlayerEntity - ldrh r0, [r5, #0x2e] - movs r4, #0 - strh r0, [r1, #0x2e] - ldrh r0, [r5, #0x32] - strh r0, [r1, #0x32] - movs r0, #3 - bl SetPlayerControl - bl sub_08078B48 - bl SetPlayerEventPriority - movs r0, #0x89 - lsls r0, r0, #1 - bl SoundReq - movs r0, #3 - strb r0, [r5, #0xc] - strb r4, [r5, #0xd] - adds r0, r5, #0 - adds r0, #0x68 - strb r6, [r0] -_080A0FA4: - pop {r4, r5, r6, pc} - .align 2, 0 -_080A0FA8: .4byte gHitbox_22 -_080A0FAC: .4byte gPlayerEntity - - thumb_func_start sub_080A0FB0 -sub_080A0FB0: @ 0x080A0FB0 - push {r4, r5, lr} - adds r5, r0, #0 - bl sub_080A11C0 - adds r1, r0, #0 - cmp r1, #0 - beq _080A0FF8 - adds r0, r5, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #0 - bne _080A0FFE - ldr r1, _080A0FF4 @ =gPlayerEntity - ldrh r0, [r5, #0x2e] - movs r4, #0 - strh r0, [r1, #0x2e] - ldrh r0, [r5, #0x32] - strh r0, [r1, #0x32] - movs r0, #3 - bl SetPlayerControl - bl sub_08078B48 - bl SetPlayerEventPriority - movs r0, #0x89 - lsls r0, r0, #1 - bl SoundReq - movs r0, #2 - strb r0, [r5, #0xc] - strb r4, [r5, #0xd] - b _080A0FFE - .align 2, 0 -_080A0FF4: .4byte gPlayerEntity -_080A0FF8: - adds r0, r5, #0 - adds r0, #0x68 - strb r1, [r0] -_080A0FFE: - pop {r4, r5, pc} - - thumb_func_start sub_080A1000 -sub_080A1000: @ 0x080A1000 -.ifdef DEMO_JP - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xd] - cmp r1, #1 - beq _080A0B52 - cmp r1, #1 - bgt _080A0B3C - cmp r1, #0 - beq _080A0B46 - b _080A0BB0 -_080A0B3C: - cmp r1, #2 - beq _080A0B60 - cmp r1, #3 - beq _080A0B8C - b _080A0BB0 -_080A0B46: - movs r0, #0x1e - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - b _080A0BF0 -_080A0B52: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0BF0 - b _080A0B98 -_080A0B60: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0B7E - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - adds r0, #0xf5 - bl SoundReq - b _080A0BF0 -_080A0B7E: - ldr r0, _080A0B88 @ =gRoomTransition - ldr r0, [r0] - movs r1, #7 - b _080A0BDE - .align 2, 0 -_080A0B88: .4byte gRoomTransition -_080A0B8C: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0BA4 -_080A0B98: - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - b _080A0BF0 -_080A0BA4: - ldr r0, _080A0BAC @ =gRoomTransition - ldr r0, [r0] - b _080A0BDE - .align 2, 0 -_080A0BAC: .4byte gRoomTransition -_080A0BB0: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0BD8 - movs r0, #0xfc - bl SetLocalFlag - ldrb r1, [r4, #0xb] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _080A0BD4 @ =0x0813AA10 - adds r0, r0, r1 - bl DoExitTransition - b _080A0BF0 - .align 2, 0 -_080A0BD4: .4byte 0x0813AA10 -_080A0BD8: - ldr r0, _080A0BF4 @ =gRoomTransition - ldr r0, [r0] - movs r1, #1 -_080A0BDE: - ands r0, r1 - cmp r0, #0 - bne _080A0BF0 - ldr r0, _080A0BF8 @ =gPlayerEntity - ldrb r1, [r0, #0x14] - adds r1, #2 - movs r2, #6 - ands r1, r2 - strb r1, [r0, #0x14] -_080A0BF0: - pop {r4, pc} - .align 2, 0 -_080A0BF4: .4byte gRoomTransition -_080A0BF8: .4byte gPlayerEntity - - -.else -.ifdef JP - push {lr} - adds r1, r0, #0 - ldrb r2, [r1, #0xd] - cmp r2, #1 - beq _080A0DF2 - cmp r2, #1 - bgt _080A0DDC - cmp r2, #0 - beq _080A0DE6 - b _080A0E50 -_080A0DDC: - cmp r2, #2 - beq _080A0E00 - cmp r2, #3 - beq _080A0E2C - b _080A0E50 -_080A0DE6: - movs r0, #0x1e - strb r0, [r1, #0xe] - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - b _080A0E8C -_080A0DF2: - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0E8C - b _080A0E38 -_080A0E00: - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0E1E - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - movs r0, #0x1e - strb r0, [r1, #0xe] - adds r0, #0xf5 - bl SoundReq - b _080A0E8C -_080A0E1E: - ldr r0, _080A0E28 @ =0x030010A0 - ldr r0, [r0] - movs r1, #7 - b _080A0E7A - .align 2, 0 -_080A0E28: .4byte 0x030010A0 -_080A0E2C: - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0E44 -_080A0E38: - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - movs r0, #0x1e - strb r0, [r1, #0xe] - b _080A0E8C -_080A0E44: - ldr r0, _080A0E4C @ =0x030010A0 - ldr r0, [r0] - ands r0, r2 - b _080A0E7C - .align 2, 0 -_080A0E4C: .4byte 0x030010A0 -_080A0E50: - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0E74 - ldrb r1, [r1, #0xb] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _080A0E70 @ =gUnk_0813ADEC - adds r0, r0, r1 - bl DoExitTransition - b _080A0E8C - .align 2, 0 -_080A0E70: .4byte gUnk_0813ADEC -_080A0E74: - ldr r0, _080A0E90 @ =0x030010A0 - ldr r0, [r0] - movs r1, #1 -_080A0E7A: - ands r0, r1 -_080A0E7C: - cmp r0, #0 - bne _080A0E8C - ldr r0, _080A0E94 @ =0x03001160 - ldrb r1, [r0, #0x14] - adds r1, #2 - movs r2, #6 - ands r1, r2 - strb r1, [r0, #0x14] -_080A0E8C: - pop {pc} - .align 2, 0 -_080A0E90: .4byte 0x030010A0 -_080A0E94: .4byte 0x03001160 -.else -.ifdef EU - push {lr} - adds r1, r0, #0 - ldrb r2, [r1, #0xd] - cmp r2, #1 - beq _080A0876 - cmp r2, #1 - bgt _080A0860 - cmp r2, #0 - beq _080A086A - b _080A08D4 -_080A0860: - cmp r2, #2 - beq _080A0884 - cmp r2, #3 - beq _080A08B0 - b _080A08D4 -_080A086A: - movs r0, #0x1e - strb r0, [r1, #0xe] - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - b _080A0910 -_080A0876: - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0910 - b _080A08BC -_080A0884: - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A08A2 - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - movs r0, #0x1e - strb r0, [r1, #0xe] - adds r0, #0xf5 - bl SoundReq - b _080A0910 -_080A08A2: - ldr r0, _080A08AC @ =gRoomTransition - ldr r0, [r0] - movs r1, #7 - b _080A08FE - .align 2, 0 -_080A08AC: .4byte gRoomTransition -_080A08B0: - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A08C8 -_080A08BC: - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - movs r0, #0x1e - strb r0, [r1, #0xe] - b _080A0910 -_080A08C8: - ldr r0, _080A08D0 @ =gRoomTransition - ldr r0, [r0] - ands r0, r2 - b _080A0900 - .align 2, 0 -_080A08D0: .4byte gRoomTransition -_080A08D4: - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A08F8 - ldrb r1, [r1, #0xb] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _080A08F4 @ =gUnk_0813ADEC - adds r0, r0, r1 - bl DoExitTransition - b _080A0910 - .align 2, 0 -_080A08F4: .4byte gUnk_0813ADEC -_080A08F8: - ldr r0, _080A0914 @ =gRoomTransition - ldr r0, [r0] - movs r1, #1 -_080A08FE: - ands r0, r1 -_080A0900: - cmp r0, #0 - bne _080A0910 - ldr r0, _080A0918 @ =gPlayerEntity - ldrb r1, [r0, #0x14] - adds r1, #2 - movs r2, #6 - ands r1, r2 - strb r1, [r0, #0x14] -_080A0910: - pop {pc} - .align 2, 0 -_080A0914: .4byte gRoomTransition -_080A0918: .4byte gPlayerEntity - -.else - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xd] - cmp r1, #1 - beq _080A102A - cmp r1, #1 - bgt _080A1014 - cmp r1, #0 - beq _080A101E - b _080A1088 -_080A1014: - cmp r1, #2 - beq _080A1038 - cmp r1, #3 - beq _080A1064 - b _080A1088 -_080A101E: - movs r0, #0x1e - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - b _080A10D4 -_080A102A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A10D4 - b _080A1070 -_080A1038: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A1056 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - adds r0, #0xf5 - bl SoundReq - b _080A10D4 -_080A1056: - ldr r0, _080A1060 @ =gRoomTransition - ldr r0, [r0] - movs r1, #7 - b _080A10C2 - .align 2, 0 -_080A1060: .4byte gRoomTransition -_080A1064: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A107C -_080A1070: - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - b _080A10D4 -_080A107C: - ldr r0, _080A1084 @ =gRoomTransition - ldr r0, [r0] - b _080A10C2 - .align 2, 0 -_080A1084: .4byte gRoomTransition -_080A1088: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A10BC - ldr r0, _080A10B4 @ =gRoomControls - ldrb r0, [r0, #4] - cmp r0, #3 - bne _080A10A2 - movs r0, #0xf9 - bl SetLocalFlag -_080A10A2: - ldrb r1, [r4, #0xb] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _080A10B8 @ =gUnk_0813ADEC - adds r0, r0, r1 - bl DoExitTransition - b _080A10D4 - .align 2, 0 -_080A10B4: .4byte gRoomControls -_080A10B8: .4byte gUnk_0813ADEC -_080A10BC: - ldr r0, _080A10D8 @ =gRoomTransition - ldr r0, [r0] - movs r1, #1 -_080A10C2: - ands r0, r1 - cmp r0, #0 - bne _080A10D4 - ldr r0, _080A10DC @ =gPlayerEntity - ldrb r1, [r0, #0x14] - adds r1, #2 - movs r2, #6 - ands r1, r2 - strb r1, [r0, #0x14] -_080A10D4: - pop {r4, pc} - .align 2, 0 -_080A10D8: .4byte gRoomTransition -_080A10DC: .4byte gPlayerEntity -.endif -.endif -.endif - - thumb_func_start sub_080A10E0 -sub_080A10E0: @ 0x080A10E0 - push {r4, lr} - adds r2, r0, #0 - ldrb r1, [r2, #0xd] - cmp r1, #1 - beq _080A110E - cmp r1, #1 - bgt _080A10F4 - cmp r1, #0 - beq _080A10FE - b _080A1180 -_080A10F4: - cmp r1, #2 - beq _080A1124 - cmp r1, #3 - beq _080A1148 - b _080A1180 -_080A10FE: - movs r0, #1 - strb r0, [r2, #0xd] - movs r0, #0x1e - strb r0, [r2, #0xe] - adds r0, #0xf6 - bl SoundReq - b _080A11BA -_080A110E: - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - beq _080A1130 - ldr r0, _080A1120 @ =gRoomTransition - ldr r0, [r0] - b _080A1162 - .align 2, 0 -_080A1120: .4byte gRoomTransition -_080A1124: - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A113C -_080A1130: - ldrb r0, [r2, #0xd] - adds r0, #1 - strb r0, [r2, #0xd] - movs r0, #0x1e - strb r0, [r2, #0xe] - b _080A11BA -_080A113C: - ldr r0, _080A1144 @ =gRoomTransition - ldr r0, [r0] - movs r1, #3 - b _080A1162 - .align 2, 0 -_080A1144: .4byte gRoomTransition -_080A1148: - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A115C - ldrb r0, [r2, #0xd] - adds r0, #1 - strb r0, [r2, #0xd] - b _080A11BA -_080A115C: - ldr r0, _080A1178 @ =gRoomTransition - ldr r0, [r0] - movs r1, #7 -_080A1162: - ands r0, r1 - cmp r0, #0 - bne _080A11BA - ldr r0, _080A117C @ =gPlayerEntity - ldrb r1, [r0, #0x14] - adds r1, #2 - movs r2, #6 - ands r1, r2 - strb r1, [r0, #0x14] - b _080A11BA - .align 2, 0 -_080A1178: .4byte gRoomTransition -_080A117C: .4byte gPlayerEntity -_080A1180: - ldr r4, _080A11A0 @ =gPlayerEntity - ldrb r3, [r4, #0x14] - cmp r3, #4 - beq _080A11A8 - ldr r0, _080A11A4 @ =gRoomTransition - ldr r0, [r0] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _080A11BA - adds r0, r3, #2 - movs r1, #6 - ands r0, r1 - strb r0, [r4, #0x14] - b _080A11BA - .align 2, 0 -_080A11A0: .4byte gPlayerEntity -_080A11A4: .4byte gRoomTransition -_080A11A8: - movs r0, #0 - movs r1, #1 - strb r1, [r2, #0xc] - strb r0, [r2, #0xd] - ldr r0, _080A11BC @ =gPlayerState - adds r0, #0x8b - strb r1, [r0] - bl ResetPlayerEventPriority -_080A11BA: - pop {r4, pc} - .align 2, 0 -_080A11BC: .4byte gPlayerState - - thumb_func_start sub_080A11C0 -sub_080A11C0: @ 0x080A11C0 - push {lr} - adds r1, r0, #0 - ldr r0, _080A11D8 @ =gPlayerEntity - movs r2, #0x36 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _080A11DC - adds r0, r1, #0 - bl IsCollidingPlayer - b _080A11DE - .align 2, 0 -_080A11D8: .4byte gPlayerEntity -_080A11DC: - movs r0, #0 -_080A11DE: - pop {pc} - - thumb_func_start sub_080A11E0 -sub_080A11E0: @ 0x080A11E0 - push {lr} - adds r2, r0, #0 - adds r1, r2, #0 - adds r1, #0x59 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A1202 - movs r0, #8 - strb r0, [r1] - ldrb r0, [r2, #0x1e] - adds r0, #1 - movs r1, #3 - ands r0, r1 - strb r0, [r2, #0x1e] -_080A1202: - pop {pc} diff --git a/assets/assets.json b/assets/assets.json index 697e97b8..ebd35dba 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43551,16 +43551,6 @@ "size": 36, "type": "animation" }, - { - "path": "object43/gUnk_081217D0.bin", - "start": 1185744, - "size": 8 - }, - { - "path": "object43/gUnk_081217D8.bin", - "start": 1185752, - "size": 8 - }, { "path": "animations/gSpriteAnimations_Object44_0.bin", "start": 1186708, @@ -44191,21 +44181,6 @@ "start": 1190384, "size": 32 }, - { - "path": "object68/gUnk_08122A18.bin", - "start": 1190424, - "size": 8 - }, - { - "path": "object68/gUnk_08122A20.bin", - "start": 1190432, - "size": 4 - }, - { - "path": "object68/gUnk_08122A28.bin", - "start": 1190440, - "size": 12 - }, { "path": "animations/gSpriteAnimations_Object6A_10_0.bin", "start": 1190732, @@ -45255,11 +45230,6 @@ "size": 24, "type": "animation" }, - { - "path": "fourElements/gUnk_081248B4.bin", - "start": 1198260, - "size": 8 - }, { "path": "animations/gSpriteAnimations_ObjectAF_0.bin", "start": 1198288, diff --git a/data/const/object/fourElements.s b/data/const/object/fourElements.s deleted file mode 100644 index 53555f3f..00000000 --- a/data/const/object/fourElements.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124898:: @ 08124898 - .4byte sub_080A01E0 - .4byte sub_080A0290 - .4byte sub_080A02CC - .4byte sub_080A034C - .4byte sub_080A0390 - .4byte sub_080A03B8 - .4byte sub_080A03E8 - -gUnk_081248B4:: @ 081248B4 - .incbin "fourElements/gUnk_081248B4.bin" diff --git a/data/const/object/itemForSale.s b/data/const/object/itemForSale.s deleted file mode 100644 index fcd3707a..00000000 --- a/data/const/object/itemForSale.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811EE28:: @ 0811EE28 - .4byte sub_08081854 - .4byte sub_080818A4 - .4byte sub_08081930 - .4byte sub_08081A80 diff --git a/data/const/object/minecartDoor.s b/data/const/object/minecartDoor.s deleted file mode 100644 index 1e0df9d3..00000000 --- a/data/const/object/minecartDoor.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0812323C:: @ 0812323C - .4byte sub_08096AEC - .4byte sub_08096BBC - .4byte sub_08096BF8 - .4byte sub_08096C3C - .4byte sub_08096CB0 diff --git a/data/const/object/object35.s b/data/const/object/object35.s deleted file mode 100644 index 722cadfb..00000000 --- a/data/const/object/object35.s +++ /dev/null @@ -1,27 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081213C4:: @ 081213C4 - .4byte sub_0808B884 - .4byte sub_0808B910 - .4byte sub_0808BAB4 - -gUnk_081213D0:: @ 081213D0 - .4byte sub_0808B89C - .4byte sub_0808B8D4 - .4byte sub_0808B908 - -gUnk_081213DC:: @ 081213DC - .4byte sub_0808B934 - .4byte sub_0808B9D4 - .4byte sub_0808BA10 - .4byte sub_0808BA48 - .4byte sub_0808BA6C - .4byte nullsub_520 - -gUnk_081213F4:: @ 081213F4 - .4byte sub_0808BACC - .4byte sub_0808BB04 diff --git a/data/const/object/object43.s b/data/const/object/object43.s deleted file mode 100644 index 3ea091fe..00000000 --- a/data/const/object/object43.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081217BC:: @ 081217BC - .4byte sub_0808DEE8 - .4byte sub_0808DFAC - .4byte sub_0808E1BC - .4byte sub_0808E208 - .4byte sub_0808E264 - -gUnk_081217D0:: @ 081217D0 - .incbin "object43/gUnk_081217D0.bin" - -gUnk_081217D8:: @ 081217D8 - .incbin "object43/gUnk_081217D8.bin" diff --git a/data/const/object/object61.s b/data/const/object/object61.s deleted file mode 100644 index 7ad6eec4..00000000 --- a/data/const/object/object61.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081228C8:: @ 081228C8 - .4byte sub_0809346C - .4byte sub_080934C8 - -gUnk_081228D0:: @ 081228D0 - .4byte sub_080934E0 - .4byte sub_08093650 diff --git a/data/const/object/object68.s b/data/const/object/object68.s deleted file mode 100644 index a8f5be81..00000000 --- a/data/const/object/object68.s +++ /dev/null @@ -1,20 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08122A10:: @ 08122A10 - .4byte sub_08094774 - .4byte sub_080948D0 - -gUnk_08122A18:: @ 08122A18 - .incbin "object68/gUnk_08122A18.bin" - -gUnk_08122A20:: @ 08122A20 - .incbin "object68/gUnk_08122A20.bin" - .4byte sub_080948E8 - -gUnk_08122A28:: @ 08122A28 - .incbin "object68/gUnk_08122A28.bin" - diff --git a/data/const/object/objectC1.s b/data/const/object/objectC1.s deleted file mode 100644 index 9df5c976..00000000 --- a/data/const/object/objectC1.s +++ /dev/null @@ -1,39 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08125084:: @ 08125084 - .4byte sub_080A2578 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A259C - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 - .4byte sub_080A2584 diff --git a/data/const/object/whirlwind.s b/data/const/object/whirlwind.s deleted file mode 100644 index 7d09ae48..00000000 --- a/data/const/object/whirlwind.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081227F4:: @ 081227F4 - .4byte sub_08092CDC - .4byte sub_08092D7C - .4byte sub_08092E94 diff --git a/data/const/object/windTribeTeleporter.s b/data/const/object/windTribeTeleporter.s deleted file mode 100644 index 27e02207..00000000 --- a/data/const/object/windTribeTeleporter.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124C10:: @ 08124C10 - .4byte sub_080A0F44 - .4byte sub_080A0FB0 - .4byte sub_080A1000 - .4byte sub_080A10E0 diff --git a/include/color.h b/include/color.h index 610010e9..e6db795a 100644 --- a/include/color.h +++ b/include/color.h @@ -23,7 +23,7 @@ typedef struct { u16 unk_02; union SplitWord unk_04; union SplitWord unk_08; - union SplitWord unk_0C; + u32 unk_0C; } struct_gUnk_020000C0_1; typedef struct { struct_gUnk_020000C0_1 unk_00[4]; diff --git a/include/functions.h b/include/functions.h index 8f28b6de..4762afda 100644 --- a/include/functions.h +++ b/include/functions.h @@ -142,6 +142,7 @@ extern bool32 sub_0806FC80(Entity*, Entity*, s32); extern void sub_0806FCF4(Entity*, s32, s32, s32); extern void sub_0806FD3C(Entity*); extern bool32 sub_0806FDA0(Entity*); +extern void sub_0806FEBC(Entity*, u32, Entity*); extern void sub_080751E8(u32, u32, void*); extern void sub_08077BB8(ItemBehavior*); extern Entity* sub_08077C0C(ItemBehavior*, u32); @@ -197,6 +198,7 @@ extern void sub_0809EABC(Entity*); extern void sub_0809EAD8(Entity*); extern void sub_0809EB30(Entity*); extern void sub_080A1ED0(u32, u32, u32); +extern Entity* sub_080A2A20(Entity*, u32, u32); extern Entity* sub_080A2A3C(Entity*, u32, u32, u32); extern Entity* sub_080A2AD4(Entity*); extern void sub_080A2AF4(Entity*, u32, u32); diff --git a/include/hitbox.h b/include/hitbox.h index c9f7ef46..483c7e1d 100644 --- a/include/hitbox.h +++ b/include/hitbox.h @@ -31,45 +31,89 @@ extern const Hitbox gHitbox_27; extern const Hitbox gHitbox_28; extern const Hitbox gHitbox_29; extern const Hitbox gHitbox_30; +extern const Hitbox gHitbox_32; +extern const Hitbox gUnk_080FD190; +extern const Hitbox gUnk_080FD1A8; +extern const Hitbox gUnk_080FD1A8; +extern const Hitbox gUnk_080FD1A8; +extern const Hitbox gUnk_080FD1A8; extern const Hitbox gUnk_080FD1B4; -extern const Hitbox gUnk_080FD330; -extern const Hitbox gUnk_080FD258; -extern const Hitbox gUnk_080FD490; -extern const Hitbox gUnk_080FD488; -extern const Hitbox gUnk_080FD538; -extern const Hitbox gUnk_080FD530; -extern const Hitbox gUnk_080FD544; -extern const Hitbox gUnk_080FD588; -extern const Hitbox gUnk_080FD37C; +extern const Hitbox gUnk_080FD1D4; extern const Hitbox gUnk_080FD1DC; extern const Hitbox gUnk_080FD1E4; +extern const Hitbox gUnk_080FD1E4; +extern const Hitbox gUnk_080FD1EC; +extern const Hitbox gUnk_080FD1F4; +extern const Hitbox gUnk_080FD1F4; extern const Hitbox gUnk_080FD1FC; extern const Hitbox gUnk_080FD204; extern const Hitbox gUnk_080FD20C; extern const Hitbox gUnk_080FD214; extern const Hitbox gUnk_080FD21C; +extern const Hitbox gUnk_080FD224; extern const Hitbox gUnk_080FD22C; extern const Hitbox gUnk_080FD238; extern const Hitbox gUnk_080FD240; extern const Hitbox gUnk_080FD248; -extern const Hitbox gUnk_080FD1EC; +extern const Hitbox gUnk_080FD258; +extern const Hitbox gUnk_080FD260; +extern const Hitbox gUnk_080FD270; +extern const Hitbox gUnk_080FD278; +extern const Hitbox gUnk_080FD280; extern const Hitbox gUnk_080FD290; extern const Hitbox gUnk_080FD298; extern const Hitbox gUnk_080FD2A0; +extern const Hitbox gUnk_080FD2A8; +extern const Hitbox gUnk_080FD2D0; extern const Hitbox gUnk_080FD2D8; extern const Hitbox gUnk_080FD2E0; -extern const Hitbox gUnk_080FD2D0; +extern const Hitbox gUnk_080FD2F0; +extern const Hitbox gUnk_080FD308; +extern const Hitbox gUnk_080FD310; +extern const Hitbox gUnk_080FD320; +extern const Hitbox gUnk_080FD328; +extern const Hitbox gUnk_080FD330; +extern const Hitbox gUnk_080FD340; +extern const Hitbox gUnk_080FD340; +extern const Hitbox gUnk_080FD34C; extern const Hitbox gUnk_080FD354; +extern const Hitbox gUnk_080FD35C; +extern const Hitbox gUnk_080FD35C; +extern const Hitbox gUnk_080FD364; +extern const Hitbox gUnk_080FD36C; +extern const Hitbox gUnk_080FD36C; +extern const Hitbox gUnk_080FD374; +extern const Hitbox gUnk_080FD37C; +extern const Hitbox gUnk_080FD384; extern const Hitbox gUnk_080FD38C; +extern const Hitbox gUnk_080FD394; +extern const Hitbox gUnk_080FD39C; +extern const Hitbox gUnk_080FD3A4; +extern const Hitbox gUnk_080FD3AC; +extern const Hitbox gUnk_080FD3B4; +extern const Hitbox gUnk_080FD3BC; +extern const Hitbox gUnk_080FD3C4; extern const Hitbox gUnk_080FD3CC; extern const Hitbox gUnk_080FD3DC; extern const Hitbox gUnk_080FD3E4; extern const Hitbox gUnk_080FD3EC; -extern const Hitbox gUnk_080FD580; -extern const Hitbox gUnk_080FD35C; -extern const Hitbox gUnk_080FD36C; -extern const Hitbox gUnk_080FD384; -extern const Hitbox gUnk_080FD558; +extern const Hitbox gUnk_080FD3F4; +extern const Hitbox gUnk_080FD3FC; +extern const Hitbox gUnk_080FD408; +extern const Hitbox gUnk_080FD41C; +extern const Hitbox gUnk_080FD424; +extern const Hitbox gUnk_080FD42C; +extern const Hitbox gUnk_080FD434; +extern const Hitbox gUnk_080FD43C; +extern const Hitbox gUnk_080FD450; +extern const Hitbox gUnk_080FD488; +extern const Hitbox gUnk_080FD490; +extern const Hitbox gUnk_080FD4B8; +extern const Hitbox gUnk_080FD4C0; +extern const Hitbox gUnk_080FD4C8; +extern const Hitbox gUnk_080FD4D0; +extern const Hitbox gUnk_080FD4D8; +extern const Hitbox gUnk_080FD4E0; extern const Hitbox gUnk_080FD4E8; extern const Hitbox gUnk_080FD4F0; extern const Hitbox gUnk_080FD4F8; @@ -78,15 +122,16 @@ extern const Hitbox gUnk_080FD508; extern const Hitbox gUnk_080FD510; extern const Hitbox gUnk_080FD518; extern const Hitbox gUnk_080FD520; +extern const Hitbox gUnk_080FD530; +extern const Hitbox gUnk_080FD538; +extern const Hitbox gUnk_080FD538; +extern const Hitbox gUnk_080FD544; +extern const Hitbox gUnk_080FD558; extern const Hitbox gUnk_080FD560; -extern const Hitbox gUnk_080FD4B8; -extern const Hitbox gUnk_080FD4C0; -extern const Hitbox gUnk_080FD4C8; -extern const Hitbox gUnk_080FD4D0; -extern const Hitbox gUnk_080FD4D8; -extern const Hitbox gUnk_080FD4E0; -extern const Hitbox gUnk_080FD3F4; -extern const Hitbox gUnk_080FD3FC; -extern const Hitbox gUnk_080FD43C; +extern const Hitbox gUnk_080FD570; +extern const Hitbox gUnk_080FD578; +extern const Hitbox gUnk_080FD580; +extern const Hitbox gUnk_080FD588; + extern const Hitbox gPlayerHitbox; #endif diff --git a/include/kinstone.h b/include/kinstone.h index 4d04b9c6..2af4508b 100644 --- a/include/kinstone.h +++ b/include/kinstone.h @@ -8,7 +8,7 @@ extern void sub_08018C58(u32); typedef struct { u8 unk[4]; u8* unk2; - u32 unk4; + u8 unk4[4]; } Unk_struct; extern Unk_struct gUnk_03003DF0[]; diff --git a/include/new_player.h b/include/new_player.h new file mode 100644 index 00000000..fc7a47a9 --- /dev/null +++ b/include/new_player.h @@ -0,0 +1,14 @@ +#include "entity.h" + +// TODO Use new player entity struct everywhere once it is fully discovered. + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0xc]; + /*0x74*/ Entity* unk_74; + /*0x78*/ u8 unk_78[0x4]; + /*0x7c*/ u32 unk_7c; + /*0x80*/ u8 unk_80[8]; +} PlayerEntity; + +#define gNewPlayerEntity (*(PlayerEntity*)&gPlayerEntity) \ No newline at end of file diff --git a/include/object.h b/include/object.h index 302d7b5e..9969a39e 100644 --- a/include/object.h +++ b/include/object.h @@ -228,7 +228,7 @@ typedef enum { void ItemOnGround(Entity*); void DeathFx(Entity*); -void ItemForSale(Entity*); +void ItemForSale(); void Button(Entity*); void MinishEmoticon(Entity*); void Pot(Entity*); @@ -279,7 +279,7 @@ void FrozenFlower(Entity*); void PullableMushroom(); void Bollard(Entity*); void WarpPoint(Entity*); -void Object35(Entity*); +void Object35(); void Object36(Entity*); void Object37(Entity*); void JarPortal(Entity*); @@ -293,7 +293,7 @@ void GiantLeaf(Entity*); void Fairy(); void LadderUp(Entity*); void Object42(Entity*); -void Object43(Entity*); +void Object43(); void Object44(Entity*); void Object45(Entity*); void GiantBookLadder(Entity*); @@ -323,18 +323,18 @@ void HouseDoorInterior(Entity*); void Whirlwind(Entity*); void ObjectBlockingStairs(Entity*); void SwordsmanNewsletter(Entity*); -void Object61(Entity*); +void Object61(); void GiantTwig(); void Object63(Entity*); void Object64(Entity*); void LadderHoleInBookshelf(Entity*); void Object66(Entity*); void Object67(Entity*); -void Object68(Entity*); +void Object68(); void Object69(Entity*); void Object6A(Entity*); void CrenelBeanSprout(); -void MinecartDoor(Entity*); +void MinecartDoor(); void ObjectOnPillar(); void MineralWaterSource(Entity*); void MinishSizedArchway(Entity*); @@ -398,7 +398,7 @@ void ObjectA8(); void ObjectA9(Entity*); void WaterfallOpening(Entity*); void ObjectAB(Entity*); -void FourElements(Entity*); +void FourElements(); void ObjectAD(Entity*); void FloatingBlock(Entity*); void ObjectAF(Entity*); @@ -410,7 +410,7 @@ void ObjectB4(Entity*); void ObjectB5(Entity*); void ObjectB6(Entity*); void Well(Entity*); -void WindTribeTeleporter(Entity*); +void WindTribeTeleporter(); void ObjectB9(Entity*); void GyorgBossObject(Entity*); void Windcrest(Entity*); @@ -418,8 +418,8 @@ void LitArea(Entity*); void ObjectBD(Entity*); void Pinwheel(Entity*); void ObjectBF(Entity*); -void EnemyItem(Entity*); -void ObjectC1(Entity*); +void EnemyItem(); +void ObjectC1(); extern void (*const gObjectFunctions[194])(Entity*); diff --git a/linker.ld b/linker.ld index ff1b16b6..7cc27ff5 100644 --- a/linker.ld +++ b/linker.ld @@ -644,7 +644,7 @@ SECTIONS { /* objects */ src/object/itemOnGround.o(.text); src/object/deathFx.o(.text); - asm/object/itemForSale.o(.text); + src/object/itemForSale.o(.text); src/object/button.o(.text); asm/object/minishEmoticon.o(.text); src/object/pot.o(.text); @@ -695,7 +695,7 @@ SECTIONS { src/object/pullableMushroom.o(.text); src/object/bollard.o(.text); src/object/warpPoint.o(.text); - asm/object/object35.o(.text); + src/object/object35.o(.text); asm/object/object36.o(.text); asm/object/object37.o(.text); src/object/jarPortal.o(.text); @@ -712,7 +712,7 @@ SECTIONS { src/object/fairy.o(.text); src/object/ladderUp.o(.text); asm/object/object42.o(.text); - asm/object/object43.o(.text); + src/object/object43.o(.text); asm/object/object44.o(.text); asm/object/object45.o(.text); src/object/giantBookLadder.o(.text); @@ -740,21 +740,21 @@ SECTIONS { asm/object/object5B.o(.text); src/object/mask.o(.text); asm/object/houseDoorInterior.o(.text); - asm/object/whirlwind.o(.text); + src/object/whirlwind.o(.text); asm/object/objectBlockingStairs.o(.text); src/object/swordsmanNewsletter.o(.text); - asm/object/object61.o(.text); + src/object/object61.o(.text); src/object/giantTwig.o(.text); asm/object/object63.o(.text); asm/object/object64.o(.text); asm/object/ladderHoleInBookshelf.o(.text); asm/object/object66.o(.text); asm/object/object67.o(.text); - asm/object/object68.o(.text); - asm/object/object69.o(.text); + src/object/object68.o(.text); + src/object/object69.o(.text); src/object/object6A.o(.text); src/object/crenelBeanSprout.o(.text); - asm/object/minecartDoor.o(.text); + src/object/minecartDoor.o(.text); src/object/objectOnPillar.o(.text); src/object/mineralWaterSource.o(.text); src/object/minishSizedArchway.o(.text); @@ -819,7 +819,7 @@ SECTIONS { asm/object/objectA9.o(.text); asm/object/waterfallOpening.o(.text); asm/object/objectAB.o(.text); - asm/object/fourElements.o(.text); + src/object/fourElements.o(.text); asm/object/objectAD.o(.text); src/object/floatingBlock.o(.text); src/object/objectAF.o(.text); @@ -831,16 +831,16 @@ SECTIONS { src/object/objectB5.o(.text); asm/object/objectB6.o(.text); src/object/well.o(.text); - asm/object/windTribeTeleporter.o(.text); + src/object/windTribeTeleporter.o(.text); asm/object/objectB9.o(.text); src/object/gyorgBossObject.o(.text); src/object/windcrest.o(.text); asm/object/litArea.o(.text); asm/object/objectBD.o(.text); src/object/pinwheel.o(.text); - asm/object/objectBF.o(.text); - asm/object/enemyItem.o(.text); - asm/object/objectC1.o(.text); + src/object/objectBF.o(.text); + src/object/enemyItem.o(.text); + src/object/objectC1.o(.text); /* END objects */ src/objectUtils.o(.text); asm/objectUtils.o(.text); @@ -1359,7 +1359,7 @@ SECTIONS { data/const/object/itemOnGround.o(.rodata); src/object/deathFx.o(.rodata); data/animations/object/deathFx.o(.rodata); - data/const/object/itemForSale.o(.rodata); + src/object/itemForSale.o(.rodata); data/const/object/button.o(.rodata); data/const/object/minishEmoticon.o(.rodata); data/animations/object/minishEmoticon.o(.rodata); @@ -1428,7 +1428,7 @@ SECTIONS { data/animations/object/bollard.o(.rodata); src/object/warpPoint.o(.rodata); data/animations/object/warpPoint.o(.rodata); - data/const/object/object35.o(.rodata); + src/object/object35.o(.rodata); data/animations/object/object35.o(.rodata); data/const/object/object36.o(.rodata); data/const/object/object37.o(.rodata); @@ -1446,7 +1446,7 @@ SECTIONS { data/const/object/giantLeaf.o(.rodata); src/object/fairy.o(.rodata); data/const/object/object42.o(.rodata); - data/const/object/object43.o(.rodata); + src/object/object43.o(.rodata); data/animations/object/object43.o(.rodata); data/const/object/object44.o(.rodata); data/animations/object/object44.o(.rodata); @@ -1483,24 +1483,24 @@ SECTIONS { data/const/object/object5B.o(.rodata); data/const/object/mask.o(.rodata); data/const/object/houseDoorInterior.o(.rodata); - data/const/object/whirlwind.o(.rodata); + src/object/whirlwind.o(.rodata); data/animations/object/whirlwind.o(.rodata); data/const/object/objectBlockingStairs.o(.rodata); data/const/object/swordsmanNewsletter.o(.rodata); - data/const/object/object61.o(.rodata); + src/object/object61.o(.rodata); src/object/giantTwig.o(.rodata); data/const/object/object63.o(.rodata); data/const/object/object64.o(.rodata); data/animations/object/object64.o(.rodata); data/const/object/ladderHoleInBookshelf.o(.rodata); data/const/object/object67.o(.rodata); - data/const/object/object68.o(.rodata); + src/object/object68.o(.rodata); src/object/object6A.o(.rodata); data/const/object/object6A.o(.rodata); data/animations/object/object6A.o(.rodata); src/object/crenelBeanSprout.o(.rodata); data/animations/object/crenelBeanSprout.o(.rodata); - data/const/object/minecartDoor.o(.rodata); + src/object/minecartDoor.o(.rodata); src/object/objectOnPillar.o(.rodata); data/const/object/mineralWaterSource.o(.rodata); data/const/object/object70.o(.rodata); @@ -1574,7 +1574,7 @@ SECTIONS { data/const/object/waterfallOpening.o(.rodata); data/const/object/objectAB.o(.rodata); data/animations/object/objectAB.o(.rodata); - data/const/object/fourElements.o(.rodata); + src/object/fourElements.o(.rodata); data/const/object/objectAD.o(.rodata); data/const/object/objectAF.o(.rodata); data/animations/object/objectAF.o(.rodata); @@ -1587,14 +1587,14 @@ SECTIONS { data/const/object/objectB4.o(.rodata); data/animations/object/objectB4.o(.rodata); data/const/object/well.o(.rodata); - data/const/object/windTribeTeleporter.o(.rodata); + src/object/windTribeTeleporter.o(.rodata); data/const/object/objectB9.o(.rodata); src/object/gyorgBossObject.o(.rodata); data/const/object/windcrest.o(.rodata); data/const/object/objectBD.o(.rodata); data/const/object/pinwheel.o(.rodata); data/animations/object/pinwheel.o(.rodata); - data/const/object/objectC1.o(.rodata); + src/object/objectC1.o(.rodata); src/objectDefinitions.o(.rodata); src/playerItemDefinitions.o(.rodata); data/data_08125104.o(.rodata); diff --git a/src/code_08078778.c b/src/code_08078778.c index 4f0f85db..6e282c0b 100644 --- a/src/code_08078778.c +++ b/src/code_08078778.c @@ -72,6 +72,6 @@ void sub_08078850(Entity* arg0, u32 arg1, u32 arg2, void* arg3) { if (iVar1 >= 0) { gUnk_03003DF0[iVar1].unk[8] = arg1; gUnk_03003DF0[iVar1].unk[10] = arg2; - *(&gUnk_03003DF0[iVar1].unk4 + 1) = (u32)arg3; + *((u32*)&gUnk_03003DF0[iVar1].unk4 + 1) = (u32)arg3; } } diff --git a/src/coord.c b/src/coord.c index 8ebbdfcf..0bce952b 100644 --- a/src/coord.c +++ b/src/coord.c @@ -556,12 +556,12 @@ void sub_0806FE84(Entity* ent) { } } -void sub_0806FEBC(Entity* ent, u32 param_2, u32 param_3) { +void sub_0806FEBC(Entity* ent, u32 param_2, Entity* param_3) { struct_gUnk_020000C0_1* ptr = &gUnk_020000C0[ent->spriteAnimation[2]].unk_00[param_2]; *((u32*)ptr) = 0; ptr->unk_04.WORD = 0; ptr->unk_08.WORD = 0; - ptr->unk_0C.WORD = param_3; + ptr->unk_0C = (u32)param_3; ptr->unk_00.unk0 = 1; ptr->unk_00.unk1 = 1; } @@ -669,7 +669,7 @@ bool32 sub_0807007C(struct_gUnk_020000C0* this, u32 param_2) { ptr3 = &ptr2[ptr1->unk_01 * 4]; ptr1->unk_08.BYTES.byte1 = *ptr3; - ptr1->unk_0C.WORD = spritePtr[2] + ((*(u16*)&ptr3[2]) << 5); + ptr1->unk_0C = spritePtr[2] + ((*(u16*)&ptr3[2]) << 5); return 1; } diff --git a/src/enemy/armos.c b/src/enemy/armos.c index df7a0705..d07bc9f0 100644 --- a/src/enemy/armos.c +++ b/src/enemy/armos.c @@ -9,6 +9,7 @@ #include "global.h" #include "enemy.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -23,8 +24,6 @@ typedef struct { /*0x84*/ u32 unk_84; } ArmosEntity; -extern Hitbox gUnk_080FD2F0; -extern Hitbox gHitbox_15; extern Entity* gUnk_020000B0; extern Entity gUnk_02027EB4; extern Entity gUnk_0200D654; diff --git a/src/enemy/enemy4D.c b/src/enemy/enemy4D.c index 8c5da470..e8165957 100644 --- a/src/enemy/enemy4D.c +++ b/src/enemy/enemy4D.c @@ -297,7 +297,7 @@ bool32 sub_0803EF20(Enemy4DEntity* this) { sub_0803EF70, sub_0803EFAC, sub_0803EFAC, sub_0803EFAC, sub_0803EF70, sub_0803EF70, sub_0803EFAC, }; Entity* it; - LinkedList* list = ((LinkedList*)&gEntityLists + 2); + LinkedList* list = &gEntityLists[2]; for (it = list->first; it != (Entity*)list; it = it->next) { if ((it->kind == 8) && gUnk_080D08C8[it->id](super, it)) { diff --git a/src/enemy/eyegore.c b/src/enemy/eyegore.c index 1f8131be..26b22f65 100644 --- a/src/enemy/eyegore.c +++ b/src/enemy/eyegore.c @@ -11,6 +11,7 @@ #include "functions.h" #include "fade.h" #include "object.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -35,7 +36,6 @@ typedef struct { extern Entity* sub_08017A90(Entity*, Entity*); extern Entity* gUnk_020000B0; -extern Hitbox gUnk_080FD308; extern const u8 gUnk_080B3E80[]; void sub_08031344(EyegoreEntity*); diff --git a/src/enemy/flyingSkull.c b/src/enemy/flyingSkull.c index 0a76c266..261efa49 100644 --- a/src/enemy/flyingSkull.c +++ b/src/enemy/flyingSkull.c @@ -2,6 +2,7 @@ #include "entity.h" #include "enemy.h" #include "functions.h" +#include "hitbox.h" typedef struct { Entity base; @@ -11,8 +12,6 @@ typedef struct { } FlyingSkullEntity; extern void (*const gUnk_080012C8[])(Entity*); -extern Hitbox gUnk_080FD340; // TODO should be const -extern Hitbox gUnk_080FD34C; void (*const FlyingSkull_Functions[])(Entity*); void (*const gUnk_080CFB9C[])(FlyingSkullEntity*); @@ -161,7 +160,7 @@ void sub_08039EE4(FlyingSkullEntity* this) { super->subAction = 1; COLLISION_OFF(super); super->collisions = 0; - super->hitbox = &gUnk_080FD340; + super->hitbox = (Hitbox*)&gUnk_080FD340; gPlayerEntity.animationState; this->unk_0x76 = gPlayerEntity.animationState; SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); @@ -196,7 +195,7 @@ void sub_08039FAC(FlyingSkullEntity* this) { super->spriteOffsetX = 0; super->hitType = 0xa0; super->flags2 = 0xf; - super->hitbox = &gUnk_080FD34C; + super->hitbox = (Hitbox*)&gUnk_080FD34C; SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); } } diff --git a/src/enemy/madderpillar.c b/src/enemy/madderpillar.c index 37708cc4..cdad77e6 100644 --- a/src/enemy/madderpillar.c +++ b/src/enemy/madderpillar.c @@ -7,9 +7,7 @@ #include "enemy.h" #include "functions.h" - -extern Hitbox gUnk_080FD298; -extern Hitbox gUnk_080FD2A0; +#include "hitbox.h" void sub_08029E0C(Entity*); void sub_08029EEC(Entity*); @@ -283,7 +281,7 @@ void sub_08029D14(Entity* this) { this->action = 4; this->actionDelay = 0x78; this->hitType = 0x6c; - this->hitbox = &gUnk_080FD298; + this->hitbox = (Hitbox*)&gUnk_080FD298; EnqueueSFX(SFX_6B); } } diff --git a/src/enemy/mazaalBracelet.c b/src/enemy/mazaalBracelet.c index 8f9a317d..5d3a04b8 100644 --- a/src/enemy/mazaalBracelet.c +++ b/src/enemy/mazaalBracelet.c @@ -8,6 +8,7 @@ #include "enemy.h" #include "object.h" #include "functions.h" +#include "hitbox.h" void sub_0803B538(Entity*); u32 sub_0803B4E4(Entity*); @@ -92,12 +93,6 @@ void sub_0803B978(Entity*); void sub_0803BA6C(Entity*); void sub_0803BA80(Entity*); -// these are not with the rest of this files constant data -extern Hitbox gUnk_080FD35C; -extern Hitbox gUnk_080FD364; -extern Hitbox gUnk_080FD36C; -extern Hitbox gUnk_080FD374; - void (*const MazaalBracelet_Functions[])(Entity*) = { MazaalBracelet_OnTick, MazaalBracelet_OnCollision, GenericKnockback, GenericDeath, GenericConfused, MazaalBracelet_OnGrabbed }; @@ -920,9 +915,9 @@ void sub_0803B100(Entity* this) { this->action = 0x29; this->zVelocity = Q_16_16(1.25); if (this->type == 0) { - this->hitbox = &gUnk_080FD364; + this->hitbox = (Hitbox*)&gUnk_080FD364; } else { - this->hitbox = &gUnk_080FD374; + this->hitbox = (Hitbox*)&gUnk_080FD374; } temp = *(Entity**)&this->field_0x74; temp->action = 3; @@ -1074,7 +1069,7 @@ void sub_0803B3F4(Entity* this) { if (this->type == 0) { this->hitbox = (Hitbox*)&gUnk_080FD35C; } else { - this->hitbox = &gUnk_080FD36C; + this->hitbox = (Hitbox*)&gUnk_080FD36C; } temp = this->parent; value = (this->type == 0) ? 1 : 2; diff --git a/src/enemy/mazaalHand.c b/src/enemy/mazaalHand.c index b8f0eaf3..df14d4bd 100644 --- a/src/enemy/mazaalHand.c +++ b/src/enemy/mazaalHand.c @@ -6,17 +6,10 @@ */ #include "entity.h" +#include "hitbox.h" void sub_08035194(Entity*); -extern const Hitbox gUnk_080FD394; -extern const Hitbox gUnk_080FD39C; -extern const Hitbox gUnk_080FD3A4; -extern const Hitbox gUnk_080FD3AC; -extern const Hitbox gUnk_080FD3B4; -extern const Hitbox gUnk_080FD3BC; -extern const Hitbox gUnk_080FD3C4; - const Hitbox* const gUnk_080CEF34[] = { &gUnk_080FD394, &gUnk_080FD394, &gUnk_080FD394, &gUnk_080FD39C, &gUnk_080FD3A4, &gUnk_080FD3AC, &gUnk_080FD3AC, &gUnk_080FD3AC, &gUnk_080FD3AC, diff --git a/src/enemy/rupeeLike.c b/src/enemy/rupeeLike.c index 2ae953e7..1a12801c 100644 --- a/src/enemy/rupeeLike.c +++ b/src/enemy/rupeeLike.c @@ -13,6 +13,7 @@ #include "object.h" #include "functions.h" #include "save.h" +#include "hitbox.h" extern void sub_080293DC(Entity*); extern void sub_080296D8(Entity*); @@ -28,7 +29,6 @@ extern void (*const gUnk_080CCC3C[])(Entity*); extern const u8 gUnk_080CCC34[]; extern const s8 gUnk_080CCC44[]; extern const u8 gUnk_080CCC47[]; -extern Hitbox gUnk_080FD260; void RupeeLike(Entity* this) { u32 uVar1; @@ -265,7 +265,7 @@ void sub_08029770(Entity* this) { temp = this->field_0x82.HALF.LO; this->palette.b.b0 = temp; this->hitType = 0x8d; - this->hitbox = &gUnk_080FD260; + this->hitbox = (Hitbox*)&gUnk_080FD260; InitializeAnimation(this, 2); this->child->spriteSettings.draw = TRUE; InitializeAnimation(this->child, 6); diff --git a/src/enemy/spinyChuchu.c b/src/enemy/spinyChuchu.c index 5fad3258..784d1a2e 100644 --- a/src/enemy/spinyChuchu.c +++ b/src/enemy/spinyChuchu.c @@ -7,6 +7,7 @@ #include "enemy.h" #include "functions.h" +#include "hitbox.h" extern void sub_08001318(Entity*); extern u32 PlayerInRange(Entity*, u32, u32); @@ -21,9 +22,6 @@ extern void (*const gUnk_080CBA40[])(Entity*); extern const u8 gUnk_080CBA60[]; -extern Hitbox gHitbox_23; -extern Hitbox gHitbox_32; - extern Entity* gUnk_020000B0; void SpinyChuchu(Entity* this) { @@ -44,7 +42,7 @@ void SpinyChuchu_OnCollision(Entity* this) { this->action = 2; this->field_0xf = 0x3c; this->hitType = 0x5c; - this->hitbox = &gHitbox_23; + this->hitbox = (Hitbox*)&gHitbox_23; InitializeAnimation(this, 0); break; case 8: @@ -193,9 +191,9 @@ void sub_08022780(Entity* this) { void sub_080227AC(Entity* this) { GetNextFrame(this); if (this->frame & 1) { - this->hitbox = &gHitbox_32; + this->hitbox = (Hitbox*)&gHitbox_32; } else { - this->hitbox = &gHitbox_23; + this->hitbox = (Hitbox*)&gHitbox_23; } if (this->frame & 2) { diff --git a/src/enemy/vaatiArm.c b/src/enemy/vaatiArm.c index d58da091..e4b6e5e4 100644 --- a/src/enemy/vaatiArm.c +++ b/src/enemy/vaatiArm.c @@ -8,6 +8,7 @@ #include "enemy.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct VaatiArm_HeapStruct1 { union SplitHWord unk00; @@ -170,9 +171,6 @@ const u16 gUnk_080D140E[] = { -0x6000, -0x5000, -0x4000 }; const u8 gUnk_080D1414[] = { 0, 0xc, 0xe, 0x10, 0x1c }; const u8 gUnk_080D1419[] = { 0, 0xa, 0xa, 0xa, 0x1c }; -extern const Hitbox gUnk_080FD450; -extern const Hitbox gUnk_080FD538; - void VaatiArm(Entity* this) { VaatiArm_Functions[GetNextFunction(this)](this); } diff --git a/src/entity.c b/src/entity.c index 7d6b0344..864b9482 100644 --- a/src/entity.c +++ b/src/entity.c @@ -16,7 +16,6 @@ void ClearAllDeletedEntities(void); void DeleteAllEntities(void); void sub_0805E98C(void); extern void sub_0806FE84(Entity*); -extern void sub_08078954(Entity*); extern void sub_08017744(Entity*); extern void UnloadHitbox(Entity*); extern void sub_0804AA1C(Entity*); diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 182b71f1..2f515dba 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -1,6 +1,7 @@ #include "npc.h" #include "functions.h" #include "screen.h" +#include "hitbox.h" extern void (*gUnk_081140D4[])(Entity*); @@ -28,7 +29,6 @@ extern void InitBiggoronTimer(void); void sub_0806D110(void); void sub_0806D164(Entity* this); -extern Hitbox gHitbox_3; Entity* sub_0806D00C(Entity* this); void sub_0806D4C0(Entity*, u32); @@ -241,7 +241,7 @@ void sub_0806D3C0(Entity* this) { DeleteThisEntity(); } this->action = 1; - this->hitbox = &gHitbox_3; + this->hitbox = (Hitbox*)&gHitbox_3; SetDefaultPriority(this, PRIO_MESSAGE); sub_0807DD64(this); } else { diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 8e60e1db..3ace0253 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -7,8 +7,8 @@ #include "object.h" #include "npc.h" #include "game.h" +#include "hitbox.h" -extern Hitbox gHitbox_2; typedef struct { u32 unk_00; s8 unk_04; @@ -33,7 +33,7 @@ void NPC4E(Entity* this) { if (this->action == 0) { this->action = 1; this->spriteSettings.draw = 4; - this->hitbox = &gHitbox_2; + this->hitbox = (Hitbox*)&gHitbox_2; sub_0807DD50(this); } else { sub_0807DD94(this, 0); diff --git a/src/npc/npc5.c b/src/npc/npc5.c index accc2716..2921b2bc 100644 --- a/src/npc/npc5.c +++ b/src/npc/npc5.c @@ -1,6 +1,7 @@ #include "functions.h" #include "message.h" #include "npc.h" +#include "hitbox.h" typedef struct { u8 unk_0; // u8 @@ -15,8 +16,6 @@ typedef struct { u16 unk_8; // u16 } UnkHeap; -extern Hitbox gHitbox_0; - void sub_08060E70(Entity*, u32); u32 sub_08061230(Entity*); @@ -152,7 +151,7 @@ void sub_08060AE0(Entity* this) { this->hurtType = 0x48; this->hitType = 0x49; this->flags2 = 3; - this->hitbox = &gHitbox_0; + this->hitbox = (Hitbox*)&gHitbox_0; this->field_0x17 &= 0xfe; this->field_0x6c.HALF.LO = 0xff; sub_08060E70(this, this->animationState); diff --git a/src/npc/picolyteBottle.c b/src/npc/picolyteBottle.c index 9ce4d1e7..6dbf5010 100644 --- a/src/npc/picolyteBottle.c +++ b/src/npc/picolyteBottle.c @@ -6,6 +6,7 @@ #include "message.h" #include "object.h" #include "npc.h" +#include "hitbox.h" typedef struct { Entity base; @@ -27,8 +28,6 @@ void nullsub_111(PicolyteBottleEntity* this); extern void sub_08078828(Entity*); -extern Hitbox gHitbox_0; - void PicolyteBottle(Entity* this) { static void (*const PicolyteBottle_Actions[])(PicolyteBottleEntity*) = { PicolyteBottle_Init, @@ -63,7 +62,7 @@ void PicolyteBottle_Init(PicolyteBottleEntity* this) { sub_0806E014(this); sub_0807DD50(super); } else { - super->hitbox = &gHitbox_0; + super->hitbox = (Hitbox*)&gHitbox_0; super->collisionLayer = 1; sub_0806E0DC(this); } diff --git a/src/object/bigIceBlock.c b/src/object/bigIceBlock.c index 78efddb7..916f83fa 100644 --- a/src/object/bigIceBlock.c +++ b/src/object/bigIceBlock.c @@ -9,6 +9,7 @@ #include "global.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -19,8 +20,6 @@ typedef struct { /*0x86*/ u16 unk_86; } BigIceBlockEntity; -extern const Hitbox gUnk_080FD190; - extern void (*const BigIceBlock_Actions[])(BigIceBlockEntity*); extern const u16 gUnk_081237B0[]; diff --git a/src/object/bossDoor.c b/src/object/bossDoor.c index aebe6edc..5b1bd36d 100644 --- a/src/object/bossDoor.c +++ b/src/object/bossDoor.c @@ -9,6 +9,7 @@ #include "global.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -25,7 +26,6 @@ typedef struct { /*0x86*/ u16 unk_86; } BossDoorEntity; -extern Hitbox gHitbox_3; extern bool32 gUnk_02036BB8; extern const u8 gUnk_0811F740[]; diff --git a/src/object/crenelBeanSprout.c b/src/object/crenelBeanSprout.c index 5fa2ec7a..7fb66a06 100644 --- a/src/object/crenelBeanSprout.c +++ b/src/object/crenelBeanSprout.c @@ -9,6 +9,7 @@ #include "global.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -19,8 +20,6 @@ typedef struct { extern u32 sub_080002BC(s32, s32, u32); -extern Hitbox gUnk_080FD2A8; - void sub_080969A4(CrenelBeanSproutEntity*); void sub_08096A78(CrenelBeanSproutEntity*); void CrenelBeanSprout_Init(CrenelBeanSproutEntity*); diff --git a/src/object/enemyItem.c b/src/object/enemyItem.c new file mode 100644 index 00000000..29f360c6 --- /dev/null +++ b/src/object/enemyItem.c @@ -0,0 +1,83 @@ +/** + * @file enemyItem.c + * @ingroup Objects + * + * @brief Enemy Item object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x1e]; + /*0x86*/ u16 unk_86; +} EnemyItemEntity; + +void sub_080A2500(EnemyItemEntity*); +void sub_080A2534(EnemyItemEntity*); +void sub_080A2508(EnemyItemEntity*); + +void EnemyItem(EnemyItemEntity* this) { + Entity* entity; + LinkedList* list; + + if (CheckFlags(this->unk_86)) { + sub_080A2500(this); + } + if (super->action == 0) { + super->action++; + super->type = super->actionDelay; + super->child = NULL; + list = &gEntityLists[4]; + for (entity = list->first; entity != (Entity*)list; entity = entity->next) { + if ((((entity->kind == 3) && (super->type2 == entity->id)) && + (((entity->x.HALF.HI - super->x.HALF.HI) + 0x10U) << 0x10 >> 0x10 < 0x20)) && + (((entity->y.HALF.HI - super->y.HALF.HI) + 0x10U) << 0x10 >> 0x10 < 0x20)) { + super->child = entity; + break; + } + } + if (super->child == NULL) { + sub_080A2534(this); + } + sub_08054564(); + } + entity = super->child; + if (entity != NULL) { + PositionRelative(entity, super, 0x40000, 0x10000); + super->z.HALF.HI -= 4; + if (entity->next == NULL) { + sub_080A2508(this); + } + } + sub_08080CB4(super); +} + +void sub_080A2500(EnemyItemEntity* this) { + DeleteThisEntity(); +} + +void sub_080A2508(EnemyItemEntity* this) { + EnemyItemEntity* entity; + + entity = (EnemyItemEntity*)CreateObjectWithParent(super, GROUND_ITEM, super->type, 0); + if (entity != NULL) { + (entity->base).actionDelay = 5; + entity->unk_86 = this->unk_86; + } + sub_080A2500(this); +} + +void sub_080A2534(EnemyItemEntity* this) { + EnemyItemEntity* entity; + + entity = (EnemyItemEntity*)CreateObjectWithParent(super, GROUND_ITEM, super->type, 0); + if (entity != NULL) { + (entity->base).actionDelay = 4; + entity->unk_86 = this->unk_86; + } + sub_080A2500(this); +} diff --git a/src/object/fairy.c b/src/object/fairy.c index 0b363cc6..3289562c 100644 --- a/src/object/fairy.c +++ b/src/object/fairy.c @@ -10,6 +10,7 @@ #include "object.h" #include "functions.h" #include "item.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -21,8 +22,6 @@ typedef struct { /*0x87*/ u8 unk_87; } FairyEntity; -extern Hitbox gUnk_080FD1A8; - void sub_0808D76C(FairyEntity*); void sub_0808DAD0(FairyEntity*); void sub_0808DB2C(FairyEntity*); diff --git a/src/object/fourElements.c b/src/object/fourElements.c new file mode 100644 index 00000000..daecece1 --- /dev/null +++ b/src/object/fourElements.c @@ -0,0 +1,170 @@ +/** + * @file fourElements.c + * @ingroup Objects + * + * @brief Four Elements object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" +#include "hitbox.h" +#include "screen.h" +#include "message.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u16 unk_68; + /*0x6a*/ u8 unk_6a; +} FourElementsEntity; + +extern u32 sub_0805429C(u32); +extern void sub_0807DF50(void); + +extern u16 script_PlayerGetElement[]; + +void FourElements_Init(FourElementsEntity*); +void FourElements_Action1(FourElementsEntity*); +void FourElements_Action2(FourElementsEntity*); +void FourElements_Action3(FourElementsEntity*); +void FourElements_Action4(FourElementsEntity*); +void FourElements_Action5(FourElementsEntity*); +void FourElements_Action6(FourElementsEntity*); +void sub_080A0424(FourElementsEntity*); +void sub_080A0444(FourElementsEntity*); + +void FourElements(FourElementsEntity* this) { + static void (*const FourElements_Actions[])(FourElementsEntity*) = { + FourElements_Init, FourElements_Action1, FourElements_Action2, FourElements_Action3, + FourElements_Action4, FourElements_Action5, FourElements_Action6, + }; + FourElements_Actions[super->action](this); + sub_08080CB4(super); +} + +void FourElements_Init(FourElementsEntity* this) { + Entity* objectAD; + super->action = 1; + super->spriteSettings.draw = 1; + super->spritePriority.b1 = 2; + super->spriteRendering.b3 = 1; + super->hitbox = (Hitbox*)&gHitbox_6; + super->z.HALF.HI = 0xff40; + this->unk_6a = 0x40; + switch (super->type) { + case 0x41: + gScreen.lcd.displayControl &= 0xfdff; + super->collisionLayer = 1; + break; + case 0x40: + case 0x42: + case 0x43: + break; + } + StartPlayerScript(script_PlayerGetElement); + gScreen.controls.layerFXControl = 0x640; + gScreen.controls.alphaBlend = 0x1000; + sub_0805BC4C(); + objectAD = CreateObjectWithParent(super, OBJECT_AD, super->type - 0x40, 0); + if (objectAD != NULL) { + objectAD->parent = super; + super->child = objectAD; + } +} + +void FourElements_Action1(FourElementsEntity* this) { + if ((gActiveScriptInfo.syncFlags & 4) != 0) { + sub_080A0424(this); + if (super->z.HALF.HI < -8) { + super->z.HALF.HI++; + } else { + super->action = 2; + gActiveScriptInfo.syncFlags |= 2; + } + } +} + +void FourElements_Action2(FourElementsEntity* this) { + sub_080A0424(this); + sub_080A0444(this); + if (IsCollidingPlayer(super)) { + DeleteEntity(super->child); + super->spriteSettings.draw = 0; + super->action = 3; + super->actionDelay = 0x2d; + gScreen.controls.layerFXControl = 0x640; + gScreen.controls.alphaBlend = 0; + sub_080A7C18(super->type, 0, 1); + sub_0808C650(super, 1); + SetFade(6, 2); + SoundReq(SFX_F8); + SoundReq(SFX_148); + SoundReq(BGM_ELEMENT_GET); + SoundReq(SONG_BGM_0); + } +} + +void FourElements_Action3(FourElementsEntity* this) { + if (super->actionDelay != 0) { + sub_080A0424(this); + if (--super->actionDelay == 0) { + SetDefaultPriority(&gPlayerEntity, 0); + } + } else { + RequestPriorityDuration(NULL, 0x3c); + if (sub_0808C67C()) { + super->action = 4; + } + } +} + +void FourElements_Action4(FourElementsEntity* this) { + RequestPriorityDuration(NULL, 0x3c); + if (gFadeControl.active == 0) { + super->action = 5; + this->unk_68 = 0x1a4; + } +} + +void FourElements_Action5(FourElementsEntity* this) { + u32 index; + RequestPriorityDuration(NULL, 10); + if (--this->unk_68 == 0) { + super->action = 6; + index = sub_0805429C(super->type); + MessageNoOverlap(index, super); + } +} + +void FourElements_Action6(FourElementsEntity* this) { + RequestPriorityDuration(NULL, 10); + if ((gMessage.doTextBox & 0x7f) == 0) { + SetPriorityTimer(0x5a); + gPlayerState.controlMode = 1; + sub_0807DF50(); + SetRoomFlag(0); + DeleteThisEntity(); + } +} + +void sub_080A0424(FourElementsEntity* this) { + if (--this->unk_6a == 0) { + this->unk_6a = 0x40; + SoundReq(SFX_178); + } +} + +void sub_080A0444(FourElementsEntity* this) { + static const u8 gUnk_081248B4[] = { + 249, 248, 247, 246, 245, 246, 247, 248, + }; + super->z.HALF.HI = gUnk_081248B4[(super->field_0xf++ >> 3) & 7] << 0x18 >> 0x18; +} + +void sub_080A0464(FourElementsEntity* this, ScriptExecutionContext* context) { + Entity* element = FindEntityByID(6, FOUR_ELEMENTS, 6); + if (element != NULL) { + sub_0807DEDC(super, context, element->x.HALF.HI, element->y.HALF.HI + 0x18); + } +} diff --git a/src/object/itemForSale.c b/src/object/itemForSale.c new file mode 100644 index 00000000..a6db8323 --- /dev/null +++ b/src/object/itemForSale.c @@ -0,0 +1,182 @@ +/** + * @file itemForSale.c + * @ingroup Objects + * + * @brief Item for Sale object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" +#include "hitbox.h" +#include "new_player.h" +#include "message.h" +#include "kinstone.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x18]; + /*0x80*/ u16 unk_80; + /*0x82*/ u16 unk_82; +} ItemForSaleEntity; + +typedef struct { + u8 before[0x20]; + u8 unk_20[0x4]; // TODO for Entity this is zVelocity which is not an array. spriteAnimation[super->field_0xf-6] does + // not match. +} ModifiedParentEntity; + +extern u32 sub_080787D8(Entity*); +extern void* sub_080784E4(void); + +void ItemForSale_Init(ItemForSaleEntity*); +void ItemForSale_Action1(ItemForSaleEntity*); +void ItemForSale_Action2(ItemForSaleEntity*); +void ItemForSale_Action3(ItemForSaleEntity*); +void sub_08081A5C(ItemForSaleEntity*); +void sub_080819B4(ItemForSaleEntity*); +void sub_08081AB0(void); + +void ItemForSale(ItemForSaleEntity* this) { + static void (*const ItemForSale_Actions[])(ItemForSaleEntity*) = { + ItemForSale_Init, + ItemForSale_Action1, + ItemForSale_Action2, + ItemForSale_Action3, + }; + ItemForSale_Actions[super->action](this); + if (CheckOnScreen(super)) { + sub_08080CB4(super); + } + switch (super->actionDelay) { + case 1: + case 2: + if (super->action == 1) { + sub_0800445C(super); + } + break; + case 0: + case 3: + break; + } +} + +void ItemForSale_Init(ItemForSaleEntity* this) { + super->action = 1; + super->spriteSettings.draw = 1; + super->spritePriority.b1 = 0; + super->field_0x16 = 0; +#ifdef EU + SetDefaultPriority(super, 6); +#endif + super->child = super; + sub_08081A5C(this); + switch (super->actionDelay) { + case 0: + super->hitbox = (Hitbox*)&gUnk_080FD328; + break; + case 1: + super->hitbox = (Hitbox*)&gHitbox_5; + break; + } +} + +void ItemForSale_Action1(ItemForSaleEntity* this) { + if (super->subAction != 0) { + super->action = 2; + gUnk_0200AF00.filler25[10] = 2; + } else { + if (super->type == 0x36) { + if (super->interactType != 0) { + super->interactType = 0; + super->action = 3; + gRoomVars.animFlags = 1; + gPlayerState.queued_action = 7; + } + } else { + if (super->interactType != 0) { + super->interactType = 0; + super->subAction = 1; + sub_08078B48(); + ResetPlayer(); + gPlayerState.heldObject = 4; + gNewPlayerEntity.unk_74 = super; + gUnk_0200AF00.filler25[10] = 2; + MessageClose(); + } + } + } +} + +void ItemForSale_Action2(ItemForSaleEntity* this) { + void* ptr; + + gUnk_0200AF00.filler25[10] = 2; + super->spriteSettings.draw = gPlayerEntity.spriteSettings.draw; + if ((gPlayerState.heldObject == 0) || (super != gNewPlayerEntity.unk_74)) { + sub_080819B4(this); + } else { + ptr = sub_080784E4(); + if (((*(int*)(ptr + 8) == 0) || + ((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.filler25[10] = 7, (gPlayerState.field_0x92 & 0x88) == 0)))) && + ((gPlayerState.field_0x92 & 0x98) != 0)) { + sub_080819B4(this); + } + } +} + +void sub_080819B4(ItemForSaleEntity* this) { + Entity* parent; + u8* puVar2; + struct_0200AF00* ptr; + + if (gRoomVars.shopItemType == 0) { + if (super->parent != NULL) { + ((ModifiedParentEntity*)super->parent)->unk_20[super->field_0xf] = 0xff; + } + DeleteThisEntity(); + } + gPlayerState.heldObject = 0; + gNewPlayerEntity.unk_74 = 0; + ptr = &gUnk_0200AF00; + gRoomVars.shopItemType = 0; + ptr->filler25[7] = 0; + ptr->filler25[10] = 0; + gRoomVars.shopItemType2 = 0; + super->x.HALF.HI = this->unk_80 + gRoomControls.origin_x; + super->y.HALF.HI = this->unk_82 + gRoomControls.origin_y; + super->z.WORD = 0; + super->action = 1; + super->subAction = 0; + super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY; + super->collisionLayer = 1; + super->spritePriority.b0 = 4; + UpdateSpriteForCollisionLayer(super); + sub_08081A5C(this); +} + +void sub_08081A5C(ItemForSaleEntity* this) { + u32 tmp = sub_080787D8(super); + if (super->actionDelay == 1) { + gUnk_03003DF0[tmp].unk4[2] = 0; + } +} + +void ItemForSale_Action3(ItemForSaleEntity* this) { + if (gRoomVars.animFlags == 0) { + sub_08081AB0(); + DeleteThisEntity(); + } else if (gRoomVars.animFlags == 2) { + super->action = 1; + super->subAction = 0; + sub_08081AB0(); + } +} + +void sub_08081AB0(void) { + gRoomVars.animFlags = 0; + gRoomVars.shopItemType = 0; + gRoomVars.shopItemType2 = 0; + SetPlayerControl(CONTROL_ENABLED); +} diff --git a/src/object/itemOnGround.c b/src/object/itemOnGround.c index fd09e1e8..59b5feab 100644 --- a/src/object/itemOnGround.c +++ b/src/object/itemOnGround.c @@ -7,6 +7,7 @@ #include "item.h" #include "itemMetaData.h" #include "functions.h" +#include "hitbox.h" void sub_08081150(Entity*); u8 sub_0808147C(u32); @@ -23,7 +24,6 @@ extern void (*const gUnk_0811E7D4[])(Entity*); extern void (*const gUnk_0811E7E8[])(Entity*); extern void (*const gUnk_0811E814[])(Entity*); extern void (*const gUnk_0811E840[])(Entity*); -extern Hitbox gUnk_080FD1A8; typedef struct { u8 unk0[2]; @@ -86,7 +86,7 @@ void sub_08080F20(Entity* this) { this->field_0x3c = 0x47; this->hurtType = 0x44; this->health = 0xFF; - this->hitbox = &gUnk_080FD1A8; + this->hitbox = (Hitbox*)&gUnk_080FD1A8; switch (this->type) { case ITEM_SHELLS: case ITEM_RUPEE1: diff --git a/src/object/lavaPlatform.c b/src/object/lavaPlatform.c index dbe5856e..61811673 100644 --- a/src/object/lavaPlatform.c +++ b/src/object/lavaPlatform.c @@ -9,6 +9,7 @@ #include "global.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -32,7 +33,6 @@ typedef struct { } LavaPlatformEntry; extern void sub_080A2CC0(Entity*, Entity**, u16*); -extern Hitbox gUnk_080FD280; void sub_08092278(LavaPlatformEntity*); void sub_08092344(LavaPlatformEntity*); diff --git a/src/object/lightableSwitch.c b/src/object/lightableSwitch.c index aac89cb2..ca63ad85 100644 --- a/src/object/lightableSwitch.c +++ b/src/object/lightableSwitch.c @@ -5,13 +5,12 @@ #include "room.h" #include "flags.h" #include "functions.h" +#include "hitbox.h" extern void (*const gUnk_081243B4[])(Entity*); extern void (*const gUnk_081243BC[])(Entity*); extern void (*const gUnk_081243C4[])(Entity*); -extern Hitbox gHitbox_0; - void LightableSwitch(Entity* this) { gUnk_081243B4[this->type](this); sub_0809EB30(this); @@ -29,7 +28,7 @@ void sub_0809EA34(Entity* this) { this->hurtType = 0x48; this->hitType = 0x28; this->flags2 = 10; - this->hitbox = &gHitbox_0; + this->hitbox = (Hitbox*)&gHitbox_0; sub_0809EAD8(this); UpdateSpriteForCollisionLayer(this); sub_0809EABC(this); @@ -101,7 +100,7 @@ void sub_0809EB80(Entity* this) { this->hurtType = 0x48; this->hitType = 0x28; this->flags2 = 10; - this->hitbox = &gHitbox_0; + this->hitbox = (Hitbox*)&gHitbox_0; sub_0809EAD8(this); UpdateSpriteForCollisionLayer(this); if (CheckFlags(this->cutsceneBeh.HWORD) != 0) { diff --git a/src/object/lockedDoor.c b/src/object/lockedDoor.c index 918ba9cf..ebe88f20 100644 --- a/src/object/lockedDoor.c +++ b/src/object/lockedDoor.c @@ -7,6 +7,7 @@ #include "effects.h" #include "game.h" #include "common.h" +#include "hitbox.h" void sub_08083338(Entity*); void sub_080834B4(Entity*); @@ -35,8 +36,6 @@ void LockedDoor(Entity* this) { gUnk_0811F65C[this->action](this); } -extern Hitbox gHitbox_2; - typedef struct PACKED { s8 x; s8 y; @@ -95,7 +94,7 @@ void sub_08083338(Entity* this) { this->field_0x70.HALF.LO = this->x.HALF.HI; this->field_0x70.HALF.HI = this->y.HALF.HI; this->field_0x7c.BYTES.byte2 = this->type & 3; - this->hitbox = &gHitbox_2; + this->hitbox = (Hitbox*)&gHitbox_2; this->spritePriority.b0 = 5; this->frame = this->type & 0xF; this->field_0x76.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI); diff --git a/src/object/metalDoor.c b/src/object/metalDoor.c index 2146a801..383949b5 100644 --- a/src/object/metalDoor.c +++ b/src/object/metalDoor.c @@ -6,6 +6,7 @@ #include "sound.h" #include "functions.h" #include "effects.h" +#include "hitbox.h" extern u32 sub_08083734(Entity*, u32); extern void sub_080A080C(Entity*); @@ -13,8 +14,6 @@ extern void sub_080A0870(Entity*); extern void (*const gUnk_0812493C[])(Entity*); -extern Hitbox gHitbox_3; - void MetalDoor(Entity* this) { gUnk_0812493C[this->action](this); } @@ -28,7 +27,7 @@ void sub_080A0684(Entity* this) { this->spriteSettings.draw = 0; this->frameIndex = 0; this->spriteSettings.flipY = 1; - this->hitbox = &gHitbox_3; + this->hitbox = (Hitbox*)&gHitbox_3; this->spritePriority.b0 = 5; this->field_0x70.HALF.LO = this->x.HALF.HI; this->field_0x70.HALF.HI = this->y.HALF.HI; diff --git a/src/object/minecart.c b/src/object/minecart.c index 0de7e4c3..7c7305b6 100644 --- a/src/object/minecart.c +++ b/src/object/minecart.c @@ -1,5 +1,6 @@ #include "object.h" #include "functions.h" +#include "hitbox.h" extern u32 sub_08091DDC(Entity*); extern u32 sub_08007DD6(u32, u32); @@ -8,8 +9,6 @@ extern void sub_08091C0C(Entity*); extern void (*const gUnk_081223A8[])(Entity*); -extern Hitbox gUnk_080FD310; - extern const s8 gUnk_081223C8[]; extern const u32 gUnk_081223D8[]; @@ -30,7 +29,7 @@ void sub_080916EC(Entity* this) { this->animationState = unk->field_0x5; this->type2 = unk->field_0x6; this->action = 1; - this->hitbox = &gUnk_080FD310; + this->hitbox = (Hitbox*)&gUnk_080FD310; COLLISION_ON(this); this->hitType = 1; this->field_0x3c = 0x47; diff --git a/src/object/minecartDoor.c b/src/object/minecartDoor.c new file mode 100644 index 00000000..32f427bc --- /dev/null +++ b/src/object/minecartDoor.c @@ -0,0 +1,194 @@ +/** + * @file minecartDoor.c + * @ingroup Objects + * + * @brief Minecart Door object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[8]; + /*0x70*/ u16 unk_70; + /*0x72*/ u16 unk_72; + /*0x74*/ u16 unk_74; + /*0x76*/ u16 unk_76; + /*0x78*/ u8 unk_78[0x6]; + /*0x7e*/ u8 unk_7e; + /*0x7f*/ u8 unk_7f[0x7]; + /*0x86*/ u16 unk_86; +} MinecartDoorEntity; + +extern bool32 sub_080837B0(Entity*); // lockedDoor +extern void sub_080836DC(Entity*, u32, u32); // lockedDoor +extern void sub_08083814(Entity*, u32); // lockedDoor + +bool32 sub_08096CEC(MinecartDoorEntity*); +void sub_08096E04(MinecartDoorEntity*); +bool32 sub_08096D84(MinecartDoorEntity*); +bool32 sub_08096D68(s32, s32, s32, s32); +void MinecartDoor_Init(MinecartDoorEntity*); +void MinecartDoor_Action1(MinecartDoorEntity*); +void MinecartDoor_Action2(MinecartDoorEntity*); +void MinecartDoor_Action3(MinecartDoorEntity*); +void MinecartDoor_Action4(MinecartDoorEntity*); + +void MinecartDoor(MinecartDoorEntity* this) { + static void (*const MinecartDoor_Actions[])(MinecartDoorEntity*) = { MinecartDoor_Init, MinecartDoor_Action1, + MinecartDoor_Action2, MinecartDoor_Action3, + MinecartDoor_Action4 }; + MinecartDoor_Actions[super->action](this); +} + +void MinecartDoor_Init(MinecartDoorEntity* this) { + if (sub_080837B0(super)) { + if ((super->type & 4) != 0) { + this->unk_7e = 1; + super->type &= 3; + } + super->speed = 0x300; + this->unk_70 = super->x.HALF.HI; + this->unk_72 = super->y.HALF.HI; + super->spritePriority.b0 = 5; + this->unk_76 = COORD_TO_TILE(super); + this->unk_74 = GetTileIndex(this->unk_76, super->collisionLayer); + super->frameIndex = super->type; + if (sub_08096CEC(this)) { + if (this->unk_7e != 0) { + DeleteThisEntity(); + } else { + sub_08096E04(this); + } + } else { + super->action = 1; + super->spriteSettings.draw = 1; + SetTile(0x4022, this->unk_76, super->collisionLayer); + } + } +} + +void MinecartDoor_Action1(MinecartDoorEntity* this) { + if (sub_08096CEC(this)) { + super->action = 2; + super->actionDelay = 7; + super->direction = super->type << 3; + SetTile(this->unk_74, this->unk_76, super->collisionLayer); + EnqueueSFX(SFX_10B); + } +} + +void MinecartDoor_Action2(MinecartDoorEntity* this) { + LinearMoveUpdate(super); + if (--super->actionDelay == 0) { + sub_08096E04(this); + super->spriteSettings.draw = 0; + super->x.HALF.HI = this->unk_70; + super->y.HALF.HI = this->unk_72; + if (this->unk_7e != 0) { + DeleteThisEntity(); + } + } +} + +void MinecartDoor_Action3(MinecartDoorEntity* this) { + bool32 bVar3; + + if ((this->unk_7e != 0) && (CheckFlags(this->unk_86))) { + return; + } + if ((gPlayerState.flags & PL_IN_MINECART) != 0) { + if (super->type * 2 - (u32)gPlayerEntity.animationState == 0) { + if (sub_08083734(super, super->type) == 0) { + return; + } + goto label; + } else { + bVar3 = --super->actionDelay * 0x1000000; + } + } else { + bVar3 = sub_08096D84(this); + } + if (bVar3 == FALSE) { + label: + super->action = 4; + sub_080836DC(super, super->type, this->unk_76); + } +} + +void MinecartDoor_Action4(MinecartDoorEntity* this) { + LinearMoveUpdate(super); + if (--super->actionDelay == 0) { + super->action = 1; + super->x.HALF.HI = this->unk_70; + super->y.HALF.HI = this->unk_72; + sub_08083814(super, super->type); + EnqueueSFX(SFX_10B); + } +} + +bool32 sub_08096CEC(MinecartDoorEntity* this) { + if (this->unk_7e != 0 && CheckFlags(this->unk_86)) { + return TRUE; + } else { + if ((gPlayerState.flags & PL_IN_MINECART) != 0) { + Entity* player = &gPlayerEntity; + if ((((super->type << 1) ^ player->animationState) & 2) == 0) { + if ((super->type & 1) != 0) { + if (sub_08096D68(gPlayerEntity.y.HALF.HI, super->y.HALF.HI, gPlayerEntity.x.HALF.HI, + super->x.HALF.HI)) { + return TRUE; + } + } else { + if (sub_08096D68(gPlayerEntity.x.HALF.HI, super->x.HALF.HI, gPlayerEntity.y.HALF.HI, + super->y.HALF.HI)) { + return TRUE; + } + } + } + } + } + return FALSE; +} + +bool32 sub_08096D68(s32 param_1, s32 param_2, s32 param_3, s32 param_4) { + if (((param_1 - param_2) + 8U < 0x11) && ((param_3 - param_4) + 0x30U < 0x61)) { + return TRUE; + } else { + return FALSE; + } +} + +bool32 sub_08096D84(MinecartDoorEntity* this) { + switch (super->type) { + case 0: + if (((super->y.HALF.HI + 10) - (gPlayerEntity.y.HALF.HI)) < 0x65U) { + return TRUE; + } + break; + case 1: + if (((gPlayerEntity.x.HALF.HI) - (super->x.HALF.HI - 10)) < 0x65U) { + return TRUE; + } + break; + case 2: + if (((gPlayerEntity.y.HALF.HI) - (super->y.HALF.HI - 10)) < 0x65U) { + return TRUE; + } + break; + case 3: + if (((super->x.HALF.HI + 10) - (gPlayerEntity.x.HALF.HI)) < 0x65U) { + return TRUE; + } + break; + } + return FALSE; +} + +void sub_08096E04(MinecartDoorEntity* this) { + super->action = 3; + super->actionDelay = 8; +} diff --git a/src/object/object35.c b/src/object/object35.c new file mode 100644 index 00000000..5a7f0a83 --- /dev/null +++ b/src/object/object35.c @@ -0,0 +1,180 @@ +/** + * @file object35.c + * @ingroup Objects + * + * @brief Object35 object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[8]; + /*0x70*/ u16 unk_70; + /*0x72*/ u16 unk_72; + /*0x74*/ u16 unk_74; + /*0x76*/ u16 unk_76; +} Object35Entity; + +extern void sub_080836DC(Entity*, u32, u32); // lockedDoor +extern void sub_08083814(Entity*, u32); // lockedDoor +void Object35_Type0(Object35Entity*); +void Object35_Type1(Object35Entity*); +void Object35_Type2(Object35Entity*); +void Object35_Type0Init(Object35Entity*); +void Object35_Type0Action1(Object35Entity*); +void Object35_Type0Action2(Object35Entity*); +void Object35_Type1Init(Object35Entity*); +void Object35_Type1Action1(Object35Entity*); +void Object35_Type1Action2(Object35Entity*); +void Object35_Type1Action3(Object35Entity*); +void Object35_Type1Action4(Object35Entity*); +void Object35_Type1Action5(Object35Entity*); +void Object35_Type2Init(Object35Entity*); +void Object35_Type2Action1(Object35Entity*); + +void Object35(Object35Entity* this) { + static void (*const Object35_Types[])(Object35Entity*) = { + Object35_Type0, + Object35_Type1, + Object35_Type2, + }; + Object35_Types[super->type](this); +} + +void Object35_Type0(Object35Entity* this) { + static void (*const Object35_Type0Actions[])(Object35Entity*) = { + Object35_Type0Init, + Object35_Type0Action1, + Object35_Type0Action2, + }; + Object35_Type0Actions[super->action](this); +} + +void Object35_Type0Init(Object35Entity* this) { + super->action = 2; + super->type2 = 2; + super->collisionLayer = 2; + UpdateSpriteForCollisionLayer(super); + super->spritePriority.b0 = 1; + super->actionDelay = -0x4c; + InitializeAnimation(super, super->type2); +} + +void Object35_Type0Action1(Object35Entity* this) { + s8 tmp; + GetNextFrame(super); + if (--super->actionDelay == 0) { + super->actionDelay = -0x4c; + super->type2++; + tmp = 3; + super->type2 = super->type2 % tmp; + InitializeAnimation(super, super->type2); + } +} + +void Object35_Type0Action2(Object35Entity* this) { + GetNextFrame(super); +} + +void Object35_Type1(Object35Entity* this) { + static void (*const Object35_Type1Actions[])(Object35Entity*) = { + Object35_Type1Init, Object35_Type1Action1, Object35_Type1Action2, + Object35_Type1Action3, Object35_Type1Action4, Object35_Type1Action5, + }; + Object35_Type1Actions[super->action](this); + gPlayerState.mobility |= 0x80; +} + +void Object35_Type1Init(Object35Entity* this) { + super->speed = 0x300; + super->frameIndex = 0; + this->unk_70 = super->x.HALF.HI; + this->unk_72 = super->y.HALF.HI; + super->spritePriority.b0 = 5; + this->unk_76 = COORD_TO_TILE(super); + this->unk_74 = GetTileIndex(this->unk_76, super->collisionLayer); + if (super->actionDelay == 0) { + super->action = 1; + super->field_0xf = 0x78; + SetTile(0x4022, this->unk_76, super->collisionLayer); + } else { + super->action = 3; + super->spriteSettings.draw = 0; + super->spriteSettings.flipY = 1; + super->actionDelay = 0; + } +} + +void Object35_Type1Action1(Object35Entity* this) { + if (CheckRoomFlag(0)) { + super->action = 2; + super->actionDelay = 7; + super->direction = 0; + SetTile(this->unk_74, this->unk_76, super->collisionLayer); + EnqueueSFX(SFX_10B); + } +} + +void Object35_Type1Action2(Object35Entity* this) { + LinearMoveUpdate(super); + if (--super->actionDelay == 0) { + super->action = 5; + super->actionDelay = 8; + super->spriteSettings.draw = 0; + super->x.HALF.HI = this->unk_70; + super->y.HALF.HI = this->unk_72; + } +} + +void Object35_Type1Action3(Object35Entity* this) { + if (sub_08083734(super, 2)) { + super->action = 4; + sub_080836DC(super, 2, this->unk_76); + } +} + +void Object35_Type1Action4(Object35Entity* this) { + LinearMoveUpdate(super); + if (--super->actionDelay == 0) { + super->action = 5; + sub_08083814(super, 2); + EnqueueSFX(SFX_10B); + SetTile(0x4022, this->unk_76, super->collisionLayer); + } +} + +void Object35_Type1Action5(Object35Entity* this) { +} + +void Object35_Type2(Object35Entity* this) { + static void (*const Object35_Type2Actions[])(Object35Entity*) = { + Object35_Type2Init, + Object35_Type2Action1, + }; + Object35_Type2Actions[super->action](this); +} + +void Object35_Type2Init(Object35Entity* this) { + super->action = 1; + super->actionDelay = 0x10; + super->z.HALF.HI -= 0x10; + if (super->type2 == 0) { + super->frameIndex = 2; + } else { + super->frameIndex = 0; + if (((super->parent)->x.HALF.HI & 0x10) != 0) { + super->frameIndex = 1; + } + } + CreateDust(super); +} + +void Object35_Type2Action1(Object35Entity* this) { + if (--super->actionDelay == 0) { + DeleteThisEntity(); + } +} diff --git a/src/object/object43.c b/src/object/object43.c new file mode 100644 index 00000000..f123d0bc --- /dev/null +++ b/src/object/object43.c @@ -0,0 +1,203 @@ +/** + * @file object43.c + * @ingroup Objects + * + * @brief Object43 object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" +#include "item.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[4]; + /*0x6c*/ u16 unk_6c; + /*0x6e*/ u8 unk_7e[4]; + /*0x72*/ u16 unk_72; +} Object43Entity; + +void Object43_Init(Object43Entity*); +void Object43_Action1(Object43Entity*); +void Object43_Action2(Object43Entity*); +void Object43_Action3(Object43Entity*); +void Object43_Action4(Object43Entity*); + +void Object43(Object43Entity* this) { + static void (*const Object43_Actions[])(Object43Entity*) = { + Object43_Init, Object43_Action1, Object43_Action2, Object43_Action3, Object43_Action4, + }; + Object43_Actions[super->action](this); +} + +void Object43_Init(Object43Entity* this) { + super->action = 1; + super->flags |= ENT_PERSIST; + super->spritePriority.b0 = 0; + super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY; + super->animationState = gPlayerEntity.animationState >> 1; + super->direction = (((super->animationState + 1) & 3) << 3); + super->field_0xf = 6; + super->speed = 0x140; + super->spriteVramOffset = 0x3c; + super->palette.b.b0 = 4; + this->unk_72 = 0; + this->unk_6c = 0; + super->updatePriority = 6; + InitializeAnimation(super, 7); + if (super->type2 != 0) { + super->actionDelay = 0x28; + } else { + super->spriteSettings.draw = 1; + if ((gPlayerState.field_0xac & 0x200) != 0) { + super->actionDelay = 0x28; + } else { + super->actionDelay = 0x50; + } + + Object43_Action1(this); + } +} + +void Object43_Action1(Object43Entity* this) { + static const s8 gUnk_081217D0[] = { -1, -14, 8, -4, 4, 4, -8, -4 }; + static const s8 gUnk_081217D8[] = { -1, -14, 4, -4, 4, -1, -4, -4 }; + Entity* effect; + const s8* ptr; + const s8* ptr2; + u32 tmp1; + u32 tmp2; + + if (super->type2 != 0) { + if ((gPlayerState.field_0x1f[2] == 0) || ((gPlayerState.field_0x3[1] & 0x80) != 0)) { + DeleteThisEntity(); + } + if (gPlayerState.field_0x1f[2] >= 0x50) { + super->spriteSettings.draw = 1; + tmp1 = gPlayerState.field_0x1f[2]; + ptr = gUnk_081217D8; + } else { + if (gPlayerState.field_0x1f[2] != 0) { + super->spriteSettings.draw = 0; + return; + } + DeleteThisEntity(); + } + } else { + if (gPlayerState.field_0x3[1] == 0) { + DeleteThisEntity(); + } + if ((gPlayerState.sword_state & 1) != 0) { + tmp1 = gPlayerState.sword_state; + ptr = gUnk_081217D0; + } else { + DeleteThisEntity(); + } + } + if (tmp1 != 0) { + + GetNextFrame(super); + if (super->actionDelay != 0) { + super->actionDelay--; + tmp2 = 3; + if ((super->type2 == 0) && ((gPlayerState.field_0xac & 0x200) == 0)) { + tmp2 = 7; + } + if ((super->actionDelay & tmp2) == 0) { + this->unk_6c++; + } + } else { + if (this->unk_72 != 0) { + if (((gRoomTransition.frameCount & 0x1fU) == 0) && + (effect = CreateFx(super, FX_SPARKLE, 0), effect != NULL)) { + effect->collisionLayer = super->collisionLayer; + } + } else { + EnqueueSFX(SFX_115); + effect = CreateFx(super, FX_BLUE_SPARKLE, 0); + if (effect != NULL) { + effect->collisionLayer = super->collisionLayer; + } + this->unk_72++; + } + } + + super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3; + ptr2 = &ptr[super->animationState * 2]; + super->x.HALF.HI = ptr2[0] + gPlayerEntity.x.HALF.HI; + super->y.HALF.HI = ptr[super->animationState * 2 + 1] + gPlayerEntity.y.HALF.HI; + super->z.HALF.HI = gPlayerEntity.z.HALF.HI; + super->collisionLayer = gPlayerEntity.collisionLayer; + switch (super->animationState) { + default: + super->y.HALF.HI -= this->unk_6c; + break; + case 0: + super->y.HALF.HI -= this->unk_6c; + break; + case 1: + super->x.HALF.HI += this->unk_6c; + break; + case 2: + super->y.HALF.HI += this->unk_6c; + break; + case 3: + super->x.HALF.HI -= this->unk_6c; + break; + } + + if (--super->field_0xf == 0) { + super->field_0xf = 6; + super->direction ^= 0x10; + } + LinearMoveUpdate(super); + if ((super->type2 == 0) && ((gPlayerState.sword_state & 0x40) != 0)) { + super->flags &= ~ENT_PERSIST; + if (GetInventoryValue(ITEM_FOURSWORD) == 1) { + super->action++; + } else { + DeleteThisEntity(); + } + } + } else { + DeleteThisEntity(); + return; + } +} + +void Object43_Action2(Object43Entity* this) { + sub_08079BD8(super); + super->action += 1; + super->spriteSettings.draw = 1; + super->animationState = gPlayerEntity.animationState; + super->spriteVramOffset = 0; + super->palette.b.b0 = 4; + super->spriteIndex = 0xaf; + InitializeAnimation(super, super->animationState >> 1); +} + +void Object43_Action3(Object43Entity* this) { + sub_08079BD8(super); + GetNextFrame(super); + if (gPlayerState.sword_state != 0) { + if ((gRoomTransition.frameCount & 3U) == 0) { + u32 tmp = super->palette.b.b0; + tmp ^= 4; + super->palette.b.b0 = tmp; + } + } else { + DeleteThisEntity(); + } + if ((super->frame & 1) != 0) { + super->action++; + } +} + +void Object43_Action4(Object43Entity* this) { + GetNextFrame(super); + if ((super->frame & 0x80) != 0) { + DeleteThisEntity(); + } +} diff --git a/src/object/object61.c b/src/object/object61.c new file mode 100644 index 00000000..4c72c0d9 --- /dev/null +++ b/src/object/object61.c @@ -0,0 +1,168 @@ +/** + * @file object61.c + * @ingroup Objects + * + * @brief Object61 object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" +#include "new_player.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[6]; + /*0x6e*/ u16 unk_6e; + /*0x70*/ u8 unk_70[2]; + /*0x72*/ u16 unk_72; + /*0x74*/ u16 unk_74; + /*0x76*/ u16 unk_76; +} Object61Entity; + +void Object61_Init(Object61Entity*); +void Object61_Action1(Object61Entity*); +void Object61_Action1Type0(Object61Entity*); +void Object61_Action1Type1(Object61Entity*); +void sub_080936C8(Object61Entity*); + +void Object61(Object61Entity* this) { + static void (*const Object61_Actions[])(Object61Entity*) = { + Object61_Init, + Object61_Action1, + }; + if ((gPlayerState.flags & PL_PARACHUTE) == 0) { + if (super->type == 0) { + gRoomControls.camera_target = &gPlayerEntity; + } + DeleteThisEntity(); + } + Object61_Actions[super->action](this); +} + +void Object61_Init(Object61Entity* this) { + super->action = 1; + super->lastFrameIndex = 0xff; + super->palette.b.b0 = gPlayerEntity.palette.b.b0; + if (super->type == 0) { + gRoomControls.camera_target = super; + super->spriteRendering.b0 = 3; + this->unk_6e = 0x180; + this->unk_72 = 0x180; + CreateObjectWithParent(super, OBJECT_61, 1, 0); + } + Object61_Action1(this); +} + +void Object61_Action1(Object61Entity* this) { + static void (*const Object61_Action1Types[])(Object61Entity*) = { + Object61_Action1Type0, + Object61_Action1Type1, + }; + Object61_Action1Types[super->type](this); +} + +void Object61_Action1Type0(Object61Entity* this) { + u32 tmp; + if ((s16)this->unk_6e < 0) { + this->unk_6e = -this->unk_6e; + } + switch (gPlayerEntity.subAction) { + case 1: + this->unk_72 -= 4; + break; + case 2: + if (super->field_0xf == 0) { + if (this->unk_72 > 0x80) { + this->unk_72 -= 0x20; + } else { + super->field_0xf += 1; + SoundReq(SFX_124); + } + if (this->unk_6e < 0x120) { + this->unk_6e += 0x40; + } + } else if (super->field_0xf != 0xff) { + if (this->unk_72 < 0x100) { + this->unk_72 += 0x20; + } else { + this->unk_72 = 0x100; + } + if (this->unk_6e > 0x100) { + this->unk_6e -= 0x20; + } else { + this->unk_6e = 0x100; + } + if (this->unk_6e == 0x100) { + super->field_0xf = 0xff; + } + } else { + sub_080936C8(this); + } + break; + case 3: + default: + sub_080936C8(this); + break; + } + tmp = gPlayerEntity.animationState & 2; + if (tmp != 0) { + super->frameIndex = 1; + if (gPlayerEntity.animationState == 2) { + this->unk_6e = -this->unk_6e; + } + } else { + super->frameIndex = tmp; + } + if (super->frameIndex != super->lastFrameIndex) { + super->lastFrameIndex = super->frameIndex; + sub_080042D0(super, super->frameIndex, super->spriteIndex); + } + CopyPosition(&gPlayerEntity, super); + + super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY; + super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3; + sub_0806FCF4(super, this->unk_72, 10, 2); + sub_0805EC9C(super, this->unk_6e, this->unk_72, 0); + sub_0806FEBC(&gPlayerEntity, 1, super); +} + +void Object61_Action1Type1(Object61Entity* this) { + super->frameIndex = ((gPlayerEntity.direction + (gPlayerEntity.direction >> 1)) >> 2) + 2; + if (super->frameIndex != super->lastFrameIndex) { + super->lastFrameIndex = super->frameIndex; + sub_080042D0(super, super->frameIndex, super->spriteIndex); + } + CopyPosition(&gPlayerEntity, super); + super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY; + super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3; + sub_0806FCF4(super, ((Object61Entity*)super->parent)->unk_72, 0x18, 0); + super->spriteOffsetY = -super->spriteOffsetY; + sub_0806FEBC(&gPlayerEntity, 0, super); +} + +void sub_080936C8(Object61Entity* this) { + s32 tmp = gNewPlayerEntity.unk_7c; + this->unk_76 = 0x138 - (gNewPlayerEntity.unk_7c >> 2); + this->unk_74 = 8 - (tmp / 0x3c); + if (super->actionDelay == 0) { + if (this->unk_76 < this->unk_6e) { + this->unk_6e -= 8; + this->unk_72 += 8; + } else { + super->actionDelay++; + this->unk_6e = this->unk_76; + this->unk_72 = this->unk_76 + 0x30; + } + } else { + if (this->unk_76 + 0x30 > this->unk_6e) { + this->unk_6e += 8; + this->unk_72 -= 8; + } else { + super->actionDelay = 0; + this->unk_6e = this->unk_76 + 0x30; + this->unk_72 = this->unk_76; + } + } +} diff --git a/src/object/object68.c b/src/object/object68.c new file mode 100644 index 00000000..b178b6ba --- /dev/null +++ b/src/object/object68.c @@ -0,0 +1,126 @@ +/** + * @file object68.c + * @ingroup Objects + * + * @brief Object68 object + * Handles effects of using water, mineral water or a fairy in a bottle in PlayerItemBottle_UseOther. + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68; +} Object68Entity; + +extern u32 sub_0800029C(Entity*, s32, s32); + +void sub_08094774(Object68Entity*); +void sub_080948D0(Object68Entity*); +void sub_080948E8(Object68Entity*); +void sub_08094980(Object68Entity*, u32, u32); + +void Object68(Object68Entity* this) { + static void (*const gUnk_08122A10[])(Object68Entity*) = { + sub_08094774, + sub_080948D0, + }; + gUnk_08122A10[super->action](this); +} + +void sub_08094774(Object68Entity* this) { + static const s8 gUnk_08122A18[] = { 0, -8, 8, 1, 2, 8, -8, 1 }; + Entity* effect; + Entity* child; + super->action = 1; + switch (super->type) { + case 0: + effect = CreateFx(super, FX_WATER_SPLASH, 0); + super->child = effect; + if (effect != NULL) { + PositionRelative(&gPlayerEntity, effect, gUnk_08122A18[gPlayerEntity.animationState & 6] << 0x10, + gUnk_08122A18[gPlayerEntity.animationState | 1] << 0x10); + } + CopyPosition(super->child, super); + sub_08094980(this, 0x4032, 0x4033); + sub_08094980(this, 0x4061, 0x4022); + break; + case 1: + effect = CreateFx(super, FX_GREEN_SPLASH2, 0); + super->child = effect; + if (effect != NULL) { + PositionRelative(&gPlayerEntity, effect, gUnk_08122A18[gPlayerEntity.animationState & 6] << 0x10, + gUnk_08122A18[gPlayerEntity.animationState | 1] << 0x10); + } + if (super->type2 == 0) { + CopyPosition(super->child, super); + super->actionDelay = 0; + super->spritePriority.b0 = 0; + super->spriteRendering.b3 = 0; + sub_08094980(this, 0x403b, 0x403c); + sub_08094980(this, 0x4061, 0x4022); + return; + } + break; + case 2: + child = sub_080A2A20(&gPlayerEntity, 0x60, 0); + super->child = child; + if (child != NULL) { + child->actionDelay = 1; + } + break; + case 3 ... 8: + break; + } + DeleteThisEntity(); +} + +void sub_080948D0(Object68Entity* this) { + static void (*const gUnk_08122A20[])(Object68Entity*) = { + NULL, + sub_080948E8, + }; + gUnk_08122A20[super->type](this); +} + +void sub_080948E8(Object68Entity* this) { + if (super->actionDelay < 0x3c) { + super->z.WORD -= 0x4000; + if ((super->actionDelay & 3) == 0) { + super->child = CreateFx(super, FX_DASH, 0x40); + if (super->child != NULL) { + super->child->spriteRendering.b3 = super->spriteRendering.b3; + super->child->spritePriority.b0 = super->spritePriority.b0; + if ((Random() & 1) != 0) { + super->child->x.HALF.HI += (Random() & 0xf); + } else { + super->child->x.HALF.HI -= (Random() & 0xf); + } + } + } + super->actionDelay++; + } else { + DeleteThisEntity(); + } +} + +void sub_08094980(Object68Entity* this, u32 searchTileIndex, u32 replaceTileIndex) { + static const s8 gUnk_08122A28[] = { + 0, 0, -8, 0, 8, 0, 0, 8, 0, -8, 0, 0, + }; + s32 xOffset; + s32 yOffset; + u32 index = 0; + while (index < 10) { + xOffset = gUnk_08122A28[index]; + yOffset = gUnk_08122A28[index + 1]; + if (searchTileIndex == sub_0800029C(super, xOffset, yOffset)) { + SetTile(replaceTileIndex, TILE(super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset), + super->collisionLayer); + } + index += 2; + } +} diff --git a/src/object/object69.c b/src/object/object69.c new file mode 100644 index 00000000..b02c964c --- /dev/null +++ b/src/object/object69.c @@ -0,0 +1,23 @@ +/** + * @file object69.c + * @ingroup Objects + * + * @brief Object69 object + */ +#include "entity.h" +#include "hitbox.h" +#include "functions.h" + +void Object69(Entity* this) { + if ((this->flags & ENT_SCRIPTED) != 0) { + if (this->action == 0) { + this->action = 1; + this->hitbox = (Hitbox*)&gHitbox_2; + sub_0807DD50(this); + } else { + sub_0807DD94(this, NULL); + } + } else { + this->action = 1; + } +} diff --git a/src/object/objectA.c b/src/object/objectA.c index 37132e10..5ec992a9 100644 --- a/src/object/objectA.c +++ b/src/object/objectA.c @@ -5,8 +5,7 @@ #include "object.h" #include "functions.h" #include "game.h" - -extern Hitbox gHitbox_2; +#include "hitbox.h" extern u8 gUpdateVisibleTiles; @@ -15,7 +14,7 @@ void ObjectA(Entity* this) { if (this->action == 0) { this->action = 1; - this->hitbox = &gHitbox_2; + this->hitbox = (Hitbox*)&gHitbox_2; if (this->collisionLayer == 1) { uVar2 = 0x26; } else { diff --git a/src/object/objectA8.c b/src/object/objectA8.c index 66385cb9..008a8d10 100644 --- a/src/object/objectA8.c +++ b/src/object/objectA8.c @@ -10,6 +10,7 @@ #include "object.h" #include "functions.h" #include "item.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -20,8 +21,6 @@ typedef struct { /*0x87*/ u8 unk_87; } ObjectA8Entity; -extern Hitbox gUnk_080FD1A8; - void sub_0809FECC(ObjectA8Entity*); bool32 sub_0809FE9C(ObjectA8Entity*); void ObjectA8_Init(ObjectA8Entity*); diff --git a/src/object/objectBF.c b/src/object/objectBF.c new file mode 100644 index 00000000..38cd26e6 --- /dev/null +++ b/src/object/objectBF.c @@ -0,0 +1,4 @@ +#include "entity.h" + +void ObjectBF(Entity* this) { +} diff --git a/src/object/objectC1.c b/src/object/objectC1.c new file mode 100644 index 00000000..780c1c78 --- /dev/null +++ b/src/object/objectC1.c @@ -0,0 +1,127 @@ +/** + * @file objectC1.c + * @ingroup Objects + * + * @brief ObjectC1 object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" +#include "message.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68; + /*0x69*/ u8 unk_69; + /*0x6a*/ u8 unk_6a; + /*0x6b*/ u8 unk_6b; + /*0x6c*/ u8 unk_6c; + /*0x6d*/ u8 unk_6d; + /*0x6e*/ u8 unk_6e; + /*0x6f*/ u8 unk_6f; + /*0x70*/ u32 unk_70; + /*0x74*/ u8 unk_74; +} ObjectC1Entity; + +void ObjectC1_Init(ObjectC1Entity*); +void ObjectC1_Action1(ObjectC1Entity*); +void ObjectC1_Action8(ObjectC1Entity*); + +void ObjectC1(ObjectC1Entity* this) { + static void (*const ObjectC1_Actions[])(ObjectC1Entity*) = { + ObjectC1_Init, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, + ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action8, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, + ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, + ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, + ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, + ObjectC1_Action1, ObjectC1_Action1, + }; + ObjectC1_Actions[super->action](this); +} + +void ObjectC1_Init(ObjectC1Entity* this) { + super->action = 8; + ObjectC1_Action8(this); +} + +void ObjectC1_Action1(ObjectC1Entity* this) { + ResetPlayerEventPriority(); + gUnk_02034490.unk0 = 0; + DeleteThisEntity(); +} + +void ObjectC1_Action8(ObjectC1Entity* this) { + u32 one; + u32 tmp; + Entity* parent; + u8* ptr; + + gPlayerEntity.flags &= ~ENT_COLLIDE; + gPlayerEntity.spriteSettings.draw = 0; + super->palette.b.b0 = gPlayerEntity.palette.b.b0; + switch (super->subAction) { + case 0: + one = 1; + super->subAction = one; + super->spriteSettings.draw = one; + super->collisionLayer = gPlayerEntity.collisionLayer; + super->spritePriority.b0 = gPlayerEntity.spritePriority.b0; + + super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3; + super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY; + super->spriteSettings.flipX = 0; + super->animationState = 4; + SetDefaultPriority(super, 6); + if ((gPlayerState.flags & PL_NO_CAP) != 0) { + if (sub_080542AC(super->type)) { + tmp = 0x45e; + } else { + tmp = 0x45b; + } + } else { + if (sub_080542AC(super->type)) { + tmp = 0x2e0; + } else { + tmp = 0x1b9; + } + } + super->spriteIndex = (tmp >> 8); + InitAnimationForceUpdate(super, tmp & 0xff); + break; + case 1: + UpdateAnimationSingleFrame(super); + if (super->frame != 0) { + super->subAction++; + } + break; + case 2: + UpdateAnimationSingleFrame(super); + if ((gMessage.doTextBox & 0x7f) != 0) { + return; + } + if ((super->frame & 0x80) != 0) { + super->action = 1; + gPlayerEntity.flags = this->unk_69; + gPlayerEntity.spriteSettings.draw = this->unk_68; + gPlayerEntity.iframes = this->unk_6a; + gPlayerState.field_0x7 = this->unk_6b; + gPlayerState.keepFacing = this->unk_6c; + gPlayerState.field_0xa = this->unk_6d; + gPlayerState.field_0x27[0] = this->unk_6e; + gPlayerState.mobility = this->unk_6f; + gPlayerState.flags = this->unk_70; + gPlayerState.field_0x82[8] = this->unk_74; + } + break; + } + + parent = super->parent; + if (parent != NULL) { + PositionEntityOnTop(super, parent); + ptr = GetSpriteSubEntryOffsetDataPointer((u16)super->spriteIndex, super->frameIndex); + parent->spriteOffsetX = *ptr; + parent->spriteOffsetY = ptr[1]; + } +} diff --git a/src/object/objectOnPillar.c b/src/object/objectOnPillar.c index 2aa53237..26173613 100644 --- a/src/object/objectOnPillar.c +++ b/src/object/objectOnPillar.c @@ -9,6 +9,7 @@ #include "global.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -29,7 +30,6 @@ typedef struct { extern bool32 sub_080896B0(void); // pushableStatue -extern Hitbox gUnk_080FD1F4; extern s16 gUnk_080B4488[]; typedef struct { diff --git a/src/object/pot.c b/src/object/pot.c index 4e47144f..c67721a9 100644 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -6,6 +6,7 @@ #include "room.h" #include "object.h" #include "functions.h" +#include "hitbox.h" void sub_08082824(Entity*); static void sub_08082850(Entity*, Entity*); @@ -15,9 +16,6 @@ extern void (*const gUnk_0811F090[])(Entity*); extern void (*const gUnk_0811F0A8[])(Entity*); extern void (*const gUnk_0811F0C4[])(Entity*); -extern Hitbox gHitbox_18; // TODO: should be const -extern Hitbox gUnk_080FD340; // TODO: should be const - extern void sub_08078930(Entity*); extern void sub_08016A6C(Entity*); @@ -32,7 +30,7 @@ void sub_0808222C(Entity* this) { } this->action = 1; - this->hitbox = &gHitbox_18; + this->hitbox = (Hitbox*)&gHitbox_18; this->speed = 0x80; this->y.HALF.HI += 3; this->field_0x16 = 0; @@ -118,7 +116,7 @@ void sub_080824F8(Entity* this) { void sub_08082510(Entity* this) { COLLISION_ON(this); - this->hitbox = &gUnk_080FD340; + this->hitbox = (Hitbox*)&gUnk_080FD340; this->field_0x3c = 7; this->hitType = 1; this->flags2 = gPlayerEntity.flags2; diff --git a/src/object/pressurePlate.c b/src/object/pressurePlate.c index cc81a97c..556a0344 100644 --- a/src/object/pressurePlate.c +++ b/src/object/pressurePlate.c @@ -1,8 +1,7 @@ #define NENT_DEPRECATED #include "object.h" #include "functions.h" - -u32 IsColliding(Entity*, Entity*); +#include "hitbox.h" typedef struct { Entity base; @@ -22,8 +21,6 @@ PressurePlateAction sub_08088840; PressurePlateAction sub_0808886C; PressurePlateAction sub_080888F4; -extern Hitbox gUnk_080FD1D4; - static u32 sub_08088938(PressurePlateEntity*); static u32 get_standing_count(PressurePlateEntity*); @@ -50,7 +47,7 @@ void sub_08088840(PressurePlateEntity* this) { super->action = 1; super->spriteSettings.draw = 1; super->spritePriority.b0 = 7; - super->hitbox = &gUnk_080FD1D4; + super->hitbox = (Hitbox*)&gUnk_080FD1D4; this->dir = super->animationState; } diff --git a/src/object/pullableLever.c b/src/object/pullableLever.c index 56acc72d..4b100533 100644 --- a/src/object/pullableLever.c +++ b/src/object/pullableLever.c @@ -10,6 +10,7 @@ #include "object.h" #include "functions.h" #include "sound.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -31,8 +32,6 @@ typedef struct { enum PullableLeverPart { HANDLE, MIDDLE, SOCKET }; extern u16 gUnk_02021F00[]; -extern Hitbox gUnk_080FD270; -extern Hitbox gUnk_080FD278; extern void (*const PullableLever_HandleActions[])(PullableLeverEntity*); extern void (*const PullableLever_MiddleActions[])(PullableLeverEntity*); @@ -76,9 +75,9 @@ void PullableLever_HandleInit(PullableLeverEntity* this) { super->spriteSettings.draw = 1; super->speed = 0x60; if ((super->type2 & 1)) { - super->hitbox = &gUnk_080FD278; + super->hitbox = (Hitbox*)&gUnk_080FD278; } else { - super->hitbox = &gUnk_080FD270; + super->hitbox = (Hitbox*)&gUnk_080FD270; } super->field_0x16 = 1; super->x.HALF.HI += PullableLever_InitialOffsets[super->type2 * 2]; diff --git a/src/object/pullableMushroom.c b/src/object/pullableMushroom.c index 0a136c3e..ff7bff42 100644 --- a/src/object/pullableMushroom.c +++ b/src/object/pullableMushroom.c @@ -10,6 +10,7 @@ #include "object.h" #include "functions.h" #include "game.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -20,7 +21,6 @@ typedef struct { /*0x7c*/ u32 unk_7c; } PullableMushroomEntity; -extern const Hitbox gUnk_080FD224; extern const u8 gUnk_08126EE4[]; void PullableMushroom_Init(PullableMushroomEntity*); diff --git a/src/object/pushableGrave.c b/src/object/pushableGrave.c index 8d9d4a92..989f817e 100644 --- a/src/object/pushableGrave.c +++ b/src/object/pushableGrave.c @@ -9,6 +9,7 @@ #include "global.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -26,9 +27,6 @@ typedef struct { /*0x86*/ u16 pushedFlag; } PushableGraveEntity; -extern const Hitbox gUnk_080FD578; -extern const Hitbox gUnk_080FD570; - extern void (*const gUnk_081232AC[])(PushableGraveEntity*); extern const u8 gUnk_081232C0[]; extern const u16 PushableGrave_Tiles[]; diff --git a/src/object/pushableStatue.c b/src/object/pushableStatue.c index 70377802..824450fc 100644 --- a/src/object/pushableStatue.c +++ b/src/object/pushableStatue.c @@ -9,6 +9,7 @@ #include "global.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -20,7 +21,6 @@ typedef struct { /*0x86*/ u16 unk_86; } PushableStatueEntity; -extern const Hitbox gUnk_080FD1F4; extern const s16 gUnk_080B4488[]; extern const s16 gUnk_080B4468[]; diff --git a/src/object/rupee.c b/src/object/rupee.c index 583cf0f07..5bf774e2 100644 --- a/src/object/rupee.c +++ b/src/object/rupee.c @@ -1,12 +1,11 @@ #include "object.h" #include "functions.h" +#include "hitbox.h" void sub_08086A6C(Entity*); void (*const gUnk_081206C4[])(Entity*); -extern Hitbox gUnk_080FD1A8; - // Main void Rupee(Entity* ent) { gUnk_081206C4[ent->action](ent); @@ -17,7 +16,7 @@ void sub_080869DC(Entity* ent) { ent->action = 1; ent->spriteSettings.draw = 0; - ent->hitbox = &gUnk_080FD1A8; + ent->hitbox = (Hitbox*)&gUnk_080FD1A8; ent->field_0x3c |= 16; itemEntity = CreateObject(GROUND_ITEM, ent->type, 0); if (itemEntity != NULL) { diff --git a/src/object/smallIceBlock.c b/src/object/smallIceBlock.c index c491a16b..e5c467cc 100644 --- a/src/object/smallIceBlock.c +++ b/src/object/smallIceBlock.c @@ -9,6 +9,7 @@ #include "global.h" #include "object.h" #include "functions.h" +#include "hitbox.h" typedef struct { /*0x00*/ Entity base; @@ -20,7 +21,6 @@ typedef struct { /*0x86*/ u16 unk_86; } SmallIceBlockEntity; -extern const Hitbox gUnk_080FD408; extern const s16 gUnk_080B4488[]; void sub_080996AC(SmallIceBlockEntity*); diff --git a/src/object/treeThorns.c b/src/object/treeThorns.c index 8cd2a06f..d6516f80 100644 --- a/src/object/treeThorns.c +++ b/src/object/treeThorns.c @@ -3,8 +3,7 @@ #include "coord.h" #include "room.h" #include "object.h" - -extern Hitbox gHitbox_1; +#include "hitbox.h" void TreeThorns(Entity* this) { Entity* ent; @@ -23,7 +22,7 @@ void TreeThorns(Entity* this) { this->hurtType = 0x48; this->hitType = 0x7a; this->flags2 = 1; - this->hitbox = &gHitbox_1; + this->hitbox = (Hitbox*)&gHitbox_1; tilePos = COORD_TO_TILE(this); SetTile(0x4066, tilePos - 1, *layer); SetTile(0x4065, tilePos, *layer); diff --git a/src/object/warpPoint.c b/src/object/warpPoint.c index 1098d131..9f35a442 100644 --- a/src/object/warpPoint.c +++ b/src/object/warpPoint.c @@ -2,8 +2,7 @@ #include "object.h" #include "game.h" #include "functions.h" - -extern Hitbox gHitbox_1; +#include "hitbox.h" extern void sub_0807CAC8(u32); extern u32 sub_0807CAEC(u32); @@ -39,7 +38,7 @@ void sub_0808B474(Entity* this) { tmp = gUnk_08121380[this->type]; this->palette.b.b0 = tmp; this->spritePriority.b0 = 6; - this->hitbox = &gHitbox_1; + this->hitbox = (Hitbox*)&gHitbox_1; this->updatePriority = PRIO_NO_BLOCK; InitializeAnimation(this, 0); if (CheckFlags(this->field_0x86.HWORD)) { diff --git a/src/object/whirlwind.c b/src/object/whirlwind.c new file mode 100644 index 00000000..2315052e --- /dev/null +++ b/src/object/whirlwind.c @@ -0,0 +1,99 @@ +/** + * @file whirlwind.c + * @ingroup Objects + * + * @brief Whirlwind object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" +#include "area.h" +#include "hitbox.h" + +void Whirlwind_Init(Entity*); +void Whirlwind_Action1(Entity*); +void Whirlwind_Action2(Entity*); + +void Whirlwind(Entity* this) { + static void (*const Whirlwind_Actions[])(Entity*) = { + Whirlwind_Init, + Whirlwind_Action1, + Whirlwind_Action2, + }; + u32 tmp = this->health; + if (((tmp & 0x7f) != 0) && (ReadBit(gArea.filler5, tmp - 1) == 0)) { + DeleteThisEntity(); + } + Whirlwind_Actions[this->action](this); +} + +void Whirlwind_Init(Entity* this) { + this->action = 1; + this->hitbox = (Hitbox*)&gUnk_080FD320; + this->flags |= ENT_COLLIDE; + this->hitType = 1; + this->field_0x3c = 0x47; + this->hurtType = 0x44; + this->flags2 = 0x80; + this->spriteOrientation.flipY = 1; + this->spriteRendering.b3 = 1; + this->animationState = this->type; + this->direction = this->type << 3; + this->speed = 0x700; + if (this->type2 == 1) { + ChangeObjPalette(this, 0x161); + InitializeAnimation(this, 1); + } else { + this->z.HALF.HI = 0xffe8; + InitializeAnimation(this, 1); + } + if ((this->flags & ENT_SCRIPTED) != 0) { + sub_0807DD64(this); + ExecuteScriptForEntity(this, NULL); + } +} + +void Whirlwind_Action1(Entity* this) { + if ((this->flags & ENT_SCRIPTED) != 0) { + ExecuteScriptForEntity(this, NULL); + } + if (this->spriteSettings.draw != 0) { + GetNextFrame(this); + if ((((((gPlayerState.flags & PL_MINISH) == 0)) && (gPlayerState.field_0x3c[0] == 0)) && + ((gPlayerEntity.action == 4 || ((gPlayerEntity.flags & ENT_COLLIDE) != 0)))) && + ((gPlayerEntity.action != 6 && (sub_0800419C(this, &gPlayerEntity, 0xc, 0xc) != 0)))) { + if (((gPlayerState.flags & PL_PARACHUTE) == 0) && (gPlayerEntity.action != 4)) { + if ((this->type2 != 1) && (-0x10 < gPlayerEntity.z.HALF.HI)) { + return; + } + } else if (gPlayerEntity.z.HALF.HI == 0) { + return; + } + CopyPosition(this, &gPlayerEntity); + sub_08004542(this); + sub_08004542(&gPlayerEntity); + gPlayerEntity.collisionLayer = 1; + gPlayerEntity.flags |= ENT_COLLIDE; + gPlayerState.queued_action = 0x1f; + gPlayerState.field_0x38 = this->type2; + gPlayerState.field_0x39 = 0xff; + this->spritePriority.b0 = gPlayerEntity.spritePriority.b0 - 1; + this->action++; + sub_08077B20(); + SoundReq(SFX_153); + SoundReq(SFX_PLY_VO5); + } + } +} + +void Whirlwind_Action2(Entity* this) { + UpdateAnimationSingleFrame(this); + if (sub_0800419C(this, &gPlayerEntity, 0xc, 0xc) == 0) { + ResetCollisionLayer(this); + this->spriteOrientation.flipY = 1; + this->spriteRendering.b3 = 1; + this->action--; + } +} diff --git a/src/object/windTribeTeleporter.c b/src/object/windTribeTeleporter.c new file mode 100644 index 00000000..7dd0e600 --- /dev/null +++ b/src/object/windTribeTeleporter.c @@ -0,0 +1,195 @@ +/** + * @file windTribeTeleporter.c + * @ingroup Objects + * + * @brief WindTribeTeleporter object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" +#include "hitbox.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68; +} WindTribeTeleporterEntity; + +extern ScreenTransitionData gUnk_0813ADEC[]; + +void WindTribeTeleporter_Init(WindTribeTeleporterEntity*); +void WindTribeTeleporter_Action1(WindTribeTeleporterEntity*); +void WindTribeTeleporter_Action2(WindTribeTeleporterEntity*); +void WindTribeTeleporter_Action3(WindTribeTeleporterEntity*); +void sub_080A11E0(WindTribeTeleporterEntity*); +bool32 sub_080A11C0(WindTribeTeleporterEntity*); + +void WindTribeTeleporter(WindTribeTeleporterEntity* this) { + static void (*const WindTribeTeleporter_Actions[])(WindTribeTeleporterEntity*) = { + WindTribeTeleporter_Init, + WindTribeTeleporter_Action1, + WindTribeTeleporter_Action2, + WindTribeTeleporter_Action3, + }; + WindTribeTeleporter_Actions[super->action](this); + sub_080A11E0(this); +} + +void WindTribeTeleporter_Init(WindTribeTeleporterEntity* this) { + super->action = 1; + super->frameDuration = 8; + super->spritePriority.b0 = 7; + super->hitbox = (Hitbox*)&gHitbox_22; + SetDefaultPriority(super, 6); + if (sub_080A11C0(this)) { + gPlayerEntity.x.HALF.HI = super->x.HALF.HI; + gPlayerEntity.y.HALF.HI = super->y.HALF.HI; + SetPlayerControl(CONTROL_DISABLED); + sub_08078B48(); + SetPlayerEventPriority(); + SoundReq(SFX_112); + super->action = 3; + super->subAction = 0; + this->unk_68 = 1; + } +} + +void WindTribeTeleporter_Action1(WindTribeTeleporterEntity* this) { + if (sub_080A11C0(this)) { + if (this->unk_68 == 0) { + gPlayerEntity.x.HALF.HI = super->x.HALF.HI; + gPlayerEntity.y.HALF.HI = super->y.HALF.HI; + SetPlayerControl(CONTROL_DISABLED); + sub_08078B48(); + SetPlayerEventPriority(); + SoundReq(SFX_112); + super->action = 2; + super->subAction = 0; + } + } else { + this->unk_68 = 0; + } +} + +void WindTribeTeleporter_Action2(WindTribeTeleporterEntity* this) { + switch (super->subAction) { + case 0: + super->actionDelay = 0x1e; + super->subAction++; + break; + case 1: + if (--super->actionDelay == 0) { + super->subAction++; + super->actionDelay = 0x1e; + } + break; + case 2: + if (--super->actionDelay == 0) { + super->subAction++; + super->actionDelay = 0x1e; + SoundReq(SFX_113); + } else { + if ((gRoomTransition.frameCount & 7) == 0) { + gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6; + } + } + break; + case 3: + if (--super->actionDelay == 0) { + super->subAction++; + super->actionDelay = 0x1e; + } else { + if ((gRoomTransition.frameCount & 3) == 0) { + gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6; + } + } + break; + default: + if (--super->actionDelay == 0) { +#if defined(DEMO_JP) || defined(JP) || defined(EU) +#ifdef DEMO_JP + SetLocalFlag(0xfc); +#endif + DoExitTransition(&gUnk_0813ADEC[super->type2]); +#else + if (gRoomControls.area == 3) { + SetLocalFlag(0xf9); + } + DoExitTransition(&gUnk_0813ADEC[super->type2]); +#endif + } else { + if ((gRoomTransition.frameCount & 1) == 0) { + gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6; + } + } + break; + } +} + +void WindTribeTeleporter_Action3(WindTribeTeleporterEntity* this) { + switch (super->subAction) { + case 0: + super->subAction = 1; + super->actionDelay = 0x1e; + SoundReq(SFX_114); + break; + case 1: + if (--super->actionDelay != 0) { + if ((gRoomTransition.frameCount & 1) == 0) { + gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6; + } + } else { + super->subAction++; + super->actionDelay = 0x1e; + } + break; + case 2: + if (--super->actionDelay == 0) { + super->subAction++; + super->actionDelay = 0x1e; + } else { + if ((gRoomTransition.frameCount & 3) == 0) { + gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6; + } + } + break; + case 3: + if (--super->actionDelay == 0) { + super->subAction++; + } else { + if ((gRoomTransition.frameCount & 7) == 0) { + gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6; + } + } + break; + default: + if (gPlayerEntity.animationState != 4) { + if ((gRoomTransition.frameCount & 7U) != 0) { + return; + } + gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6; + } else { + super->action = 1; + super->subAction = 0; + gPlayerState.controlMode = 1; + ResetPlayerEventPriority(); + } + break; + } +} + +bool32 sub_080A11C0(WindTribeTeleporterEntity* this) { + if (gPlayerEntity.z.HALF.HI != 0) { + return FALSE; + } else { + return IsCollidingPlayer(super); + } +} + +void sub_080A11E0(WindTribeTeleporterEntity* this) { + if (--super->frameDuration == 0) { + super->frameDuration = 8; + super->frameIndex = (super->frameIndex + 1) & 3; + } +} diff --git a/src/player.c b/src/player.c index d09ae85b..36a82e9f 100644 --- a/src/player.c +++ b/src/player.c @@ -3133,8 +3133,6 @@ static void PlayerMinish(Entity* this) { sPlayerMinishStates[this->subAction](this); } -extern Hitbox gUnk_0811BC80; - static void sub_08073C80(Entity* this) { static const Hitbox sMinishHitbox = { 0, -1, { 3, 2, 2, 3 }, 2, 2 }; diff --git a/src/playerItem/playerItemBomb.c b/src/playerItem/playerItemBomb.c index 785793de..c7bdd7cb 100644 --- a/src/playerItem/playerItemBomb.c +++ b/src/playerItem/playerItemBomb.c @@ -3,14 +3,11 @@ #include "functions.h" extern void (*const gUnk_080B77C8[])(Entity*); -extern void sub_08078954(Entity*); void sub_0801B418(Entity*); void sub_0801B3A4(Entity*); extern void (*const gUnk_080B77D8[])(Entity*); -extern void sub_08079BD8(Entity*); - void PlayerItemBomb(Entity* this) { u8 uVar1, uVar2; diff --git a/src/playerItem/playerItemC.c b/src/playerItem/playerItemC.c index f376fdd2..d1e857ff 100644 --- a/src/playerItem/playerItemC.c +++ b/src/playerItem/playerItemC.c @@ -3,7 +3,6 @@ #include "player.h" #include "functions.h" -extern void sub_08079BD8(Entity*); extern Entity* sub_08008782(Entity*, u32, s32, s32); void sub_0801B8FC(Entity*); diff --git a/src/projectile/dirtBallProjectile.c b/src/projectile/dirtBallProjectile.c index bda5e1a2..81970ad1 100644 --- a/src/projectile/dirtBallProjectile.c +++ b/src/projectile/dirtBallProjectile.c @@ -5,8 +5,6 @@ #include "coord.h" #include "functions.h" -extern void sub_08078954(Entity*); - extern void (*const DirtBallProjectile_Functions[])(Entity*); extern void (*const DirtBallProjectile_Actions[])(Entity*); extern const Hitbox3D gUnk_08129764; diff --git a/src/projectile/guardLineOfSight.c b/src/projectile/guardLineOfSight.c index 1dcdcaaf..128052fb 100644 --- a/src/projectile/guardLineOfSight.c +++ b/src/projectile/guardLineOfSight.c @@ -3,10 +3,10 @@ #include "coord.h" #include "functions.h" #include "projectile.h" +#include "hitbox.h" extern u32 sub_080644C8(Entity*); extern u8 gUnk_02027EB4[]; -extern const Hitbox gUnk_080FD1E4; extern const u8 gUnk_081299C8[]; diff --git a/src/projectile/gyorgTail.c b/src/projectile/gyorgTail.c index 947788ca..c9dc6a8b 100644 --- a/src/projectile/gyorgTail.c +++ b/src/projectile/gyorgTail.c @@ -4,11 +4,9 @@ #include "sound.h" #include "functions.h" #include "projectile.h" +#include "hitbox.h" extern u8 gEntCount; -extern Hitbox gHitbox_21; -extern Hitbox gHitbox_1; -extern Hitbox gHitbox_20; extern void (*const gUnk_0812A994[])(Entity*); extern void (*const GyorgTail_Actions[])(Entity*); @@ -96,7 +94,7 @@ void sub_080AC510(Entity* this) { this->spriteSettings.draw = 1; this->collisionLayer = 2; if (*(u16*)&this->type == 0x300) { - this->hitbox = &gHitbox_21; + this->hitbox = (Hitbox*)&gHitbox_21; } } } @@ -113,9 +111,9 @@ void sub_080AC560(Entity* this) { this->action = 1; this->collisionLayer = 2; if (this->type == 0) { - this->hitbox = &gHitbox_1; + this->hitbox = (Hitbox*)&gHitbox_1; } else { - this->hitbox = &gHitbox_20; + this->hitbox = (Hitbox*)&gHitbox_20; } this->frameIndex = 0xff; this->spriteSettings.draw = 1; diff --git a/src/projectile/mandiblesProjectile.c b/src/projectile/mandiblesProjectile.c index 1c765e49..f828070b 100644 --- a/src/projectile/mandiblesProjectile.c +++ b/src/projectile/mandiblesProjectile.c @@ -3,8 +3,7 @@ #include "coord.h" #include "functions.h" #include "game.h" - -extern Hitbox gHitbox_0; +#include "hitbox.h" extern void (*const MandiblesProjectile_Functions[])(Entity*); extern void (*const MandiblesProjectile_Actions[])(Entity*); @@ -141,9 +140,9 @@ void MandiblesProjectile_Action3(Entity* this) { this->animationState = uVar1 << 0x1a >> 0x1a; #ifdef EU this->spriteOrientation.flipY = 1; - this->hitbox = &gHitbox_0; + this->hitbox = (Hitbox*)&gHitbox_0; #else - this->hitbox = &gHitbox_0; + this->hitbox = (Hitbox*)&gHitbox_0; if (AreaIsDungeon() != 0) { this->spriteOrientation.flipY = 1; } diff --git a/src/projectile/spiderWeb.c b/src/projectile/spiderWeb.c index c6176fa7..f0af7e0c 100644 --- a/src/projectile/spiderWeb.c +++ b/src/projectile/spiderWeb.c @@ -2,6 +2,7 @@ #include "enemy.h" #include "functions.h" #include "object.h" +#include "hitbox.h" typedef struct { u8 b0; @@ -234,10 +235,7 @@ void (*const SpiderWeb_Actions[])(Entity*) = { const u8 gUnk_0812A03C[] = { 248, 252, 6, 1, 4, 245, 253, 3, 249, 253, 6, 4, 252, 245, 3, 3, }; -extern const Hitbox gUnk_080FD41C; -extern const Hitbox gUnk_080FD424; -extern const Hitbox gUnk_080FD42C; -extern const Hitbox gUnk_080FD434; + const Hitbox* const gUnk_0812A04C[] = { &gUnk_080FD41C, &gUnk_080FD424,