diff --git a/asm/code_0806EC20.s b/asm/code_0806EC20.s deleted file mode 100644 index a0ea06ff..00000000 --- a/asm/code_0806EC20.s +++ /dev/null @@ -1,36 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0806EC20 -sub_0806EC20: @ 0x0806EC20 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x58 - movs r1, #0 - movs r2, #0 - bl CreateNPC - cmp r0, #0 - beq _0806EC34 - str r4, [r0, #0x50] -_0806EC34: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806EC38 -sub_0806EC38: @ 0x0806EC38 - push {lr} - movs r0, #7 - movs r1, #0x58 - movs r2, #7 - bl FindEntityByID - cmp r0, #0 - beq _0806EC4C - bl DeleteEntity -_0806EC4C: - pop {pc} - .align 2, 0 diff --git a/asm/code_0806ED78.s b/asm/code_0806ED78.s deleted file mode 100644 index 74ca8730..00000000 --- a/asm/code_0806ED78.s +++ /dev/null @@ -1,1749 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0806ED78 -sub_0806ED78: @ 0x0806ED78 - push {r4, lr} - bl sub_0800445C - adds r4, r0, #0 - cmp r4, #0 - beq _0806ED94 - ldr r0, _0806ED98 @ =gPlayerState - ldrb r1, [r0, #0x1e] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _0806ED94 - bl sub_08077B20 -_0806ED94: - adds r0, r4, #0 - pop {r4, pc} - .align 2, 0 -_0806ED98: .4byte gPlayerState - - thumb_func_start sub_0806ED9C -sub_0806ED9C: @ 0x0806ED9C - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r1, #0 - adds r3, r2, #0 - movs r6, #1 - rsbs r6, r6, #0 - ldr r1, _0806EDC0 @ =gPlayerEntity - adds r2, r4, #0 - bl EntityInRectRadius - cmp r0, #0 - beq _0806EDBC - adds r0, r5, #0 - bl GetAnimationState - adds r6, r0, #0 -_0806EDBC: - adds r0, r6, #0 - pop {r4, r5, r6, pc} - .align 2, 0 -_0806EDC0: .4byte gPlayerEntity - - thumb_func_start GetAnimationState -GetAnimationState: @ 0x0806EDC4 - push {lr} - ldr r1, _0806EDD4 @ =gPlayerEntity - bl GetFacingDirection - bl sub_0806F5A4 - pop {pc} - .align 2, 0 -_0806EDD4: .4byte gPlayerEntity - - thumb_func_start sub_0806EDD8 -sub_0806EDD8: @ 0x0806EDD8 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r4, r1, #0 - adds r3, r2, #0 - movs r7, #1 - rsbs r7, r7, #0 - ldr r6, _0806EE00 @ =gPlayerEntity - adds r1, r6, #0 - adds r2, r4, #0 - bl EntityInRectRadius - cmp r0, #0 - beq _0806EDFC - adds r0, r5, #0 - adds r1, r6, #0 - bl GetFacingDirection - adds r7, r0, #0 -_0806EDFC: - adds r0, r7, #0 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0806EE00: .4byte gPlayerEntity - - thumb_func_start sub_0806EE04 -sub_0806EE04: @ 0x0806EE04 - adds r3, r0, #0 - str r1, [r3, #0x54] - adds r0, #0x3c - movs r1, #0 - strb r2, [r0] - adds r0, #3 - strb r1, [r0] - adds r2, r3, #0 - adds r2, #0x46 - movs r0, #0 - strh r1, [r2] - strb r0, [r3, #0x16] - bx lr - .align 2, 0 - - thumb_func_start sub_0806EE20 -sub_0806EE20: @ 0x0806EE20 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x39 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0806EE4C - ldr r0, [r4, #0x54] - cmp r0, #0 - beq _0806EE66 - ldr r1, _0806EE48 @ =gUnk_08114EFC - ldrb r0, [r4, #0x16] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - b _0806EE68 - .align 2, 0 -_0806EE48: .4byte gUnk_08114EFC -_0806EE4C: - adds r1, r4, #0 - adds r1, #0x46 - movs r0, #8 - strh r0, [r1] - ldr r1, _0806EE6C @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r4, #0 - adds r1, #0x3e - strb r0, [r1] -_0806EE66: - movs r0, #0 -_0806EE68: - pop {r4, pc} - .align 2, 0 -_0806EE6C: .4byte gPlayerEntity - - thumb_func_start sub_0806EE70 -sub_0806EE70: @ 0x0806EE70 - push {r4, lr} - sub sp, #4 - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x46 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #8 - bls _0806EE92 - movs r0, #0 - strh r0, [r1] - adds r0, r4, #0 - bl sub_0806EF14 -_0806EE92: - adds r0, r4, #0 - bl sub_0806F69C - adds r0, r4, #0 - mov r1, sp - bl sub_0806EF4C - mov r0, sp - ldrh r1, [r0] - ldrh r2, [r0, #2] - adds r0, r4, #0 - bl sub_080041DC - adds r1, r0, #0 - movs r2, #0x24 - ldrsh r0, [r4, r2] - cmp r0, #0 - bge _0806EEB8 - rsbs r0, r0, #0 -_0806EEB8: - lsrs r0, r0, #3 - cmp r0, r1 - bhi _0806EEC2 - movs r0, #0 - b _0806EECA -_0806EEC2: - adds r0, r4, #0 - movs r1, #3 - bl sub_0806EF74 -_0806EECA: - add sp, #4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806EED0 -sub_0806EED0: @ 0x0806EED0 - push {lr} - adds r2, r0, #0 - adds r1, r2, #0 - adds r1, #0x46 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - beq _0806EEE8 - movs r0, #0 - b _0806EEF0 -_0806EEE8: - adds r0, r2, #0 - movs r1, #2 - bl sub_0806EF74 -_0806EEF0: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806EEF4 -sub_0806EEF4: @ 0x0806EEF4 - push {lr} - adds r2, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0806EF08 - movs r0, #0 - b _0806EF10 -_0806EF08: - adds r0, r2, #0 - movs r1, #1 - bl sub_0806EF74 -_0806EF10: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806EF14 -sub_0806EF14: @ 0x0806EF14 - push {r4, lr} - sub sp, #4 - adds r4, r0, #0 - mov r1, sp - bl sub_0806EF4C - mov r0, sp - ldrh r1, [r0] - ldrh r2, [r0, #2] - adds r0, r4, #0 - bl sub_080045B4 - strb r0, [r4, #0x15] - adds r0, r4, #0 - adds r0, #0x3c - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _0806EF48 - ldrb r0, [r4, #0x15] - bl sub_0806F5A4 - adds r1, r4, #0 - adds r1, #0x3e - strb r0, [r1] -_0806EF48: - add sp, #4 - pop {r4, pc} - - thumb_func_start sub_0806EF4C -sub_0806EF4C: @ 0x0806EF4C - push {r4, lr} - adds r2, r0, #0 - adds r2, #0x3f - ldrb r2, [r2] - lsls r2, r2, #1 - ldr r3, [r0, #0x54] - adds r3, r3, r2 - ldr r2, _0806EF70 @ =gRoomControls - ldrh r0, [r3, #2] - ldrh r4, [r2, #6] - adds r0, r0, r4 - strh r0, [r1] - ldrh r0, [r3, #4] - ldrh r2, [r2, #8] - adds r0, r0, r2 - strh r0, [r1, #2] - pop {r4, pc} - .align 2, 0 -_0806EF70: .4byte gRoomControls - - thumb_func_start sub_0806EF74 -sub_0806EF74: @ 0x0806EF74 - push {lr} - adds r3, r0, #0 - adds r3, #0x3f - ldrb r2, [r3] - adds r2, r2, r1 - strb r2, [r3] - bl sub_0806EF88 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806EF88 -sub_0806EF88: @ 0x0806EF88 - push {lr} - adds r1, r0, #0 - adds r1, #0x3f - ldrb r2, [r1] - lsls r2, r2, #1 - ldr r1, [r0, #0x54] - adds r1, r1, r2 - ldr r3, _0806EFA8 @ =gUnk_08114F0C - ldrb r2, [r1] - lsls r2, r2, #2 - adds r2, r2, r3 - ldr r2, [r2] - bl _call_via_r2 - pop {pc} - .align 2, 0 -_0806EFA8: .4byte gUnk_08114F0C - - thumb_func_start sub_0806EFAC -sub_0806EFAC: @ 0x0806EFAC - push {lr} - adds r2, r0, #0 - adds r2, #0x3f - movs r1, #0 - strb r1, [r2] - bl sub_0806EF88 - pop {pc} - - thumb_func_start sub_0806EFBC -sub_0806EFBC: @ 0x0806EFBC - movs r1, #1 - strb r1, [r0, #0x16] - adds r0, #0x46 - movs r1, #8 - strh r1, [r0] - movs r0, #0 - bx lr - .align 2, 0 - - thumb_func_start sub_0806EFCC -sub_0806EFCC: @ 0x0806EFCC - movs r2, #2 - strb r2, [r0, #0x16] - ldrh r1, [r1, #2] - adds r0, #0x46 - strh r1, [r0] - movs r0, #0 - bx lr - .align 2, 0 - - thumb_func_start sub_0806EFDC -sub_0806EFDC: @ 0x0806EFDC - push {lr} - adds r3, r0, #0 - ldrh r0, [r1] - lsrs r0, r0, #8 - cmp r0, #0 - beq _0806EFF4 - adds r2, r3, #0 - adds r2, #0x3c - ldrb r1, [r2] - movs r0, #0xfe - ands r0, r1 - b _0806EFFE -_0806EFF4: - adds r2, r3, #0 - adds r2, #0x3c - ldrb r1, [r2] - movs r0, #1 - orrs r0, r1 -_0806EFFE: - strb r0, [r2] - adds r1, r3, #0 - adds r1, #0x3f - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - adds r0, r3, #0 - bl sub_0806EF88 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806F014 -sub_0806F014: @ 0x0806F014 - push {lr} - ldrh r1, [r1, #2] - strh r1, [r0, #0x24] - adds r2, r0, #0 - adds r2, #0x3f - ldrb r1, [r2] - adds r1, #2 - strb r1, [r2] - bl sub_0806EF88 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806F02C -sub_0806F02C: @ 0x0806F02C - push {lr} - ldrh r1, [r1] - lsrs r1, r1, #8 - adds r2, r0, #0 - adds r2, #0x3e - strb r1, [r2] - adds r2, #1 - ldrb r1, [r2] - adds r1, #1 - strb r1, [r2] - bl sub_0806EF88 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806F048 -sub_0806F048: @ 0x0806F048 - movs r1, #3 - strb r1, [r0, #0x16] - movs r0, #0 - bx lr - - thumb_func_start sub_0806F050 -sub_0806F050: @ 0x0806F050 - push {lr} - adds r1, #2 - str r1, [r0, #0x54] - adds r2, r0, #0 - adds r2, #0x3f - movs r1, #0 - strb r1, [r2] - bl sub_0806EF88 - pop {pc} - - thumb_func_start sub_0806F064 -sub_0806F064: @ 0x0806F064 - movs r2, #0 - strb r2, [r0, #0x16] - adds r0, #0x3f - ldrb r2, [r0] - adds r2, #1 - strb r2, [r0] - ldrh r0, [r1] - lsrs r0, r0, #8 - bx lr - .align 2, 0 - - thumb_func_start sub_0806F078 -sub_0806F078: @ 0x0806F078 - push {lr} - adds r2, r0, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r1, r0 - beq _0806F0A0 - adds r0, r2, #0 - adds r0, #0x26 - ldrb r0, [r0] - cmp r0, #0 - beq _0806F096 - adds r0, r2, #0 - bl InitAnimationForceUpdate - b _0806F09C -_0806F096: - adds r0, r2, #0 - bl InitializeAnimation -_0806F09C: - movs r0, #1 - b _0806F0A2 -_0806F0A0: - movs r0, #0 -_0806F0A2: - pop {pc} - - thumb_func_start sub_0806F0A4 -sub_0806F0A4: @ 0x0806F0A4 - push {r4, r5, r6, r7, lr} - sub sp, #4 - ldr r7, _0806F114 @ =gUnk_03003DA8 - ldr r5, [r7, #4] - movs r0, #0 - cmp r5, r7 - beq _0806F0BA -_0806F0B2: - adds r0, #1 - ldr r5, [r5, #4] - cmp r5, r7 - bne _0806F0B2 -_0806F0BA: - cmp r0, #1 - bls _0806F10E - ldr r5, [r7, #4] - cmp r5, r7 - beq _0806F10E - movs r2, #1 -_0806F0C6: - ldrb r1, [r5, #0x10] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _0806F108 - ldrb r1, [r5, #0x17] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _0806F108 - ldr r4, [r5, #4] - cmp r4, r7 - beq _0806F108 - movs r6, #1 -_0806F0E2: - ldrb r1, [r4, #0x10] - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - beq _0806F102 - ldrb r1, [r4, #0x17] - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - beq _0806F102 - adds r0, r5, #0 - adds r1, r4, #0 - str r2, [sp] - bl sub_08004484 - ldr r2, [sp] -_0806F102: - ldr r4, [r4, #4] - cmp r4, r7 - bne _0806F0E2 -_0806F108: - ldr r5, [r5, #4] - cmp r5, r7 - bne _0806F0C6 -_0806F10E: - add sp, #4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0806F114: .4byte gUnk_03003DA8 - - thumb_func_start sub_0806F118 -sub_0806F118: @ 0x0806F118 - push {r4, lr} - adds r4, r0, #0 - bl sub_08002632 - ldr r1, _0806F140 @ =gUnk_08001A7C - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - ldrh r1, [r0] - ldrh r2, [r0, #2] - ldrh r3, [r0, #4] - adds r0, r4, #0 - bl sub_0801DFB4 - ldr r0, _0806F144 @ =gPlayerState - adds r0, #0x8b - movs r1, #3 - strb r1, [r0] - pop {r4, pc} - .align 2, 0 -_0806F140: .4byte gUnk_08001A7C -_0806F144: .4byte gPlayerState - - thumb_func_start UpdateFuseInteraction -UpdateFuseInteraction: @ 0x0806F148 - push {r4, lr} - bl sub_0801E00C - movs r4, #1 - rsbs r4, r4, #0 - ldr r0, _0806F164 @ =gUnk_02022740 - ldrb r0, [r0] - cmp r0, #1 - beq _0806F172 - cmp r0, #2 - beq _0806F168 - movs r4, #0 - b _0806F17E - .align 2, 0 -_0806F164: .4byte gUnk_02022740 -_0806F168: - ldr r0, _0806F184 @ =gPlayerState - adds r0, #0x8b - movs r1, #3 - strb r1, [r0] - movs r4, #1 -_0806F172: - bl sub_0807919C - ldr r0, _0806F184 @ =gPlayerState - adds r0, #0x8b - movs r1, #1 - strb r1, [r0] -_0806F17E: - adds r0, r4, #0 - pop {r4, pc} - .align 2, 0 -_0806F184: .4byte gPlayerState - - thumb_func_start sub_0806F188 -sub_0806F188: @ 0x0806F188 - push {lr} - bl sub_08002632 - adds r1, r0, #0 - cmp r1, #0 - beq _0806F1A0 - ldr r0, _0806F1A4 @ =gSave - ldr r2, _0806F1A8 @ =0x000001C1 - adds r0, r0, r2 - adds r0, r1, r0 - movs r1, #0xf3 - strb r1, [r0] -_0806F1A0: - pop {pc} - .align 2, 0 -_0806F1A4: .4byte gSave -_0806F1A8: .4byte 0x000001C1 - - thumb_func_start ShowNPCDialogue -ShowNPCDialogue: @ 0x0806F1AC - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r6, r1, #0 - ldrh r1, [r6, #2] - asrs r7, r1, #4 - movs r0, #1 - ands r7, r0 - movs r0, #0xf - ands r1, r0 - cmp r1, #6 - bls _0806F1C8 - b _0806F332 -_0806F1C8: - lsls r0, r1, #2 - ldr r1, _0806F1D4 @ =_0806F1D8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806F1D4: .4byte _0806F1D8 -_0806F1D8: @ jump table - .4byte _0806F332 @ case 0 - .4byte _0806F342 @ case 1 - .4byte _0806F1F4 @ case 2 - .4byte _0806F24E @ case 3 - .4byte _0806F2BA @ case 4 - .4byte _0806F324 @ case 5 - .4byte _0806F336 @ case 6 -_0806F1F4: - ldr r4, [r6] - asrs r1, r4, #0xc - movs r0, #0xf - ands r1, r0 - ldr r0, _0806F210 @ =0x00000FFF - ands r4, r0 - movs r5, #0 - cmp r1, #1 - beq _0806F22A - cmp r1, #1 - bgt _0806F214 - cmp r1, #0 - beq _0806F21A - b _0806F248 - .align 2, 0 -_0806F210: .4byte 0x00000FFF -_0806F214: - cmp r1, #2 - beq _0806F23A - b _0806F248 -_0806F21A: - adds r0, r4, #0 - bl CheckRoomFlag - adds r5, r0, #0 -_0806F222: - adds r0, r4, #0 - bl SetRoomFlag - b _0806F248 -_0806F22A: - adds r0, r4, #0 - bl CheckLocalFlag - adds r5, r0, #0 -_0806F232: - adds r0, r4, #0 - bl SetLocalFlag - b _0806F248 -_0806F23A: - adds r0, r4, #0 - bl CheckGlobalFlag - adds r5, r0, #0 - adds r0, r4, #0 - bl SetGlobalFlag -_0806F248: - cmp r5, #0 - beq _0806F342 - b _0806F34C -_0806F24E: - ldr r4, [r6] - asrs r1, r4, #0xc - movs r0, #0xf - ands r1, r0 - ldr r0, _0806F26C @ =0x00000FFF - ands r4, r0 - movs r5, #0 - cmp r1, #1 - beq _0806F28A - cmp r1, #1 - bgt _0806F270 - cmp r1, #0 - beq _0806F276 - b _0806F248 - .align 2, 0 -_0806F26C: .4byte 0x00000FFF -_0806F270: - cmp r1, #2 - beq _0806F29E - b _0806F248 -_0806F276: - adds r0, r4, #0 - bl CheckRoomFlag - adds r5, r0, #0 - cmp r5, #0 - beq _0806F222 - adds r0, r4, #0 - bl ClearRoomFlag - b _0806F248 -_0806F28A: - adds r0, r4, #0 - bl CheckLocalFlag - adds r5, r0, #0 - cmp r5, #0 - beq _0806F232 - adds r0, r4, #0 - bl ClearLocalFlag - b _0806F248 -_0806F29E: - adds r0, r4, #0 - bl CheckGlobalFlag - adds r5, r0, #0 - cmp r5, #0 - bne _0806F2B2 - adds r0, r4, #0 - bl SetGlobalFlag - b _0806F248 -_0806F2B2: - adds r0, r4, #0 - bl ClearGlobalFlag - b _0806F248 -_0806F2BA: - ldr r4, [r6] - asrs r1, r4, #0xc - movs r0, #0xf - ands r1, r0 - ldr r0, _0806F2D8 @ =0x00000FFF - ands r4, r0 - movs r5, #0 - cmp r1, #4 - bhi _0806F248 - lsls r0, r1, #2 - ldr r1, _0806F2DC @ =_0806F2E0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806F2D8: .4byte 0x00000FFF -_0806F2DC: .4byte _0806F2E0 -_0806F2E0: @ jump table - .4byte _0806F2F4 @ case 0 - .4byte _0806F2FC @ case 1 - .4byte _0806F304 @ case 2 - .4byte _0806F30C @ case 3 - .4byte _0806F314 @ case 4 -_0806F2F4: - adds r0, r4, #0 - bl CheckRoomFlag - b _0806F320 -_0806F2FC: - adds r0, r4, #0 - bl CheckLocalFlag - b _0806F320 -_0806F304: - adds r0, r4, #0 - bl CheckGlobalFlag - b _0806F320 -_0806F30C: - adds r0, r4, #0 - bl CheckKinstoneFused - b _0806F320 -_0806F314: - adds r0, r4, #0 - bl GetInventoryValue - cmp r0, #0 - beq _0806F320 - movs r0, #1 -_0806F320: - adds r5, r0, #0 - b _0806F248 -_0806F324: - ldr r1, [r6, #4] - cmp r1, #0 - beq _0806F332 - mov r0, r8 - bl _call_via_r1 - b _0806F35E -_0806F332: - movs r0, #0 - b _0806F34E -_0806F336: - ldr r0, _0806F348 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806F34C -_0806F342: - ldrh r0, [r6, #6] - b _0806F34E - .align 2, 0 -_0806F348: .4byte gPlayerState -_0806F34C: - ldrh r0, [r6, #4] -_0806F34E: - cmp r7, #0 - beq _0806F35A - mov r1, r8 - bl MessageNoOverlap - b _0806F35E -_0806F35A: - bl MessageFromTarget -_0806F35E: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0806F364 -sub_0806F364: @ 0x0806F364 - push {lr} - ldr r2, _0806F384 @ =gArea - ldrb r0, [r2, #8] - movs r1, #0x80 - eors r0, r1 - strb r0, [r2, #8] - ldrb r1, [r2, #8] - adds r0, r1, #7 - asrs r0, r0, #3 - ldr r3, _0806F388 @ =0x00000868 - adds r1, r2, r3 - adds r0, r0, r1 - movs r1, #0x10 - bl MemClear - pop {pc} - .align 2, 0 -_0806F384: .4byte gArea -_0806F388: .4byte 0x00000868 - - thumb_func_start sub_0806F38C -sub_0806F38C: @ 0x0806F38C - ldr r0, _0806F398 @ =gArea - ldrb r1, [r0, #8] - movs r2, #0x80 - eors r1, r2 - strb r1, [r0, #8] - bx lr - .align 2, 0 -_0806F398: .4byte gArea - - thumb_func_start sub_0806F39C -sub_0806F39C: @ 0x0806F39C - push {r4, lr} - adds r3, r0, #0 - ldr r2, _0806F3B8 @ =gPlayerEntity - ldrb r1, [r2, #0x14] - movs r0, #2 - ands r0, r1 - adds r4, r2, #0 - cmp r0, #0 - beq _0806F3BC - movs r0, #0x2e - ldrsh r1, [r3, r0] - movs r2, #0x2e - ldrsh r0, [r4, r2] - b _0806F3C4 - .align 2, 0 -_0806F3B8: .4byte gPlayerEntity -_0806F3BC: - movs r0, #0x32 - ldrsh r1, [r3, r0] - movs r2, #0x32 - ldrsh r0, [r4, r2] -_0806F3C4: - subs r1, r1, r0 - cmp r1, #0 - bge _0806F3CC - rsbs r1, r1, #0 -_0806F3CC: - cmp r1, #0x40 - bgt _0806F3D4 - movs r0, #0 - b _0806F3E2 -_0806F3D4: - movs r0, #0x24 - ldrsh r1, [r3, r0] - ldrb r2, [r3, #0x15] - adds r0, r4, #0 - bl sub_080027EA - movs r0, #1 -_0806F3E2: - pop {r4, pc} - - thumb_func_start sub_0806F3E4 -sub_0806F3E4: @ 0x0806F3E4 - push {r4, r5, r6, lr} - sub sp, #0x88 - adds r5, r0, #0 - ldr r2, _0806F408 @ =gPlayerState - ldrb r1, [r2, #0x1c] - movs r0, #0x7f - ands r0, r1 - cmp r0, #1 - bne _0806F4E0 - ldrb r0, [r2, #0x1d] - cmp r0, #2 - beq _0806F420 - cmp r0, #2 - bgt _0806F40C - cmp r0, #1 - beq _0806F416 - b _0806F410 - .align 2, 0 -_0806F408: .4byte gPlayerState -_0806F40C: - cmp r0, #3 - beq _0806F42A -_0806F410: - adds r3, r5, #0 - adds r3, #0x46 - b _0806F436 -_0806F416: - adds r1, r5, #0 - adds r1, #0x46 - ldrh r0, [r1] - adds r0, #0x40 - b _0806F432 -_0806F420: - adds r1, r5, #0 - adds r1, #0x46 - ldrh r0, [r1] - adds r0, #0x80 - b _0806F432 -_0806F42A: - adds r1, r5, #0 - adds r1, #0x46 - ldrh r0, [r1] - adds r0, #0xc0 -_0806F432: - strh r0, [r1] - adds r3, r1, #0 -_0806F436: - adds r2, r3, #0 - ldrh r0, [r2] - movs r1, #0xa0 - lsls r1, r1, #3 - cmp r0, r1 - bls _0806F444 - strh r1, [r2] -_0806F444: - ldr r6, _0806F4BC @ =gPlayerEntity - ldrb r0, [r6, #0x14] - movs r1, #0xe - ands r1, r0 - ldr r0, _0806F4C0 @ =gUnk_08126EE4 - adds r1, r1, r0 - mov r2, sp - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r4, [r6, #0x2e] - adds r0, r0, r4 - strh r0, [r2, #0x2e] - movs r0, #1 - ldrsb r0, [r1, r0] - ldrh r1, [r6, #0x32] - adds r0, r0, r1 - strh r0, [r2, #0x32] - ldrh r4, [r3] - adds r0, r5, #0 - mov r1, sp - bl GetFacingDirection - adds r2, r0, #0 - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_0806F5BC - mov r0, sp - adds r1, r5, #0 - movs r2, #4 - movs r3, #4 - bl sub_0800419C - cmp r0, #0 - beq _0806F4E0 - ldrb r0, [r5, #0x1c] - movs r1, #0xf - ands r1, r0 - cmp r1, #2 - bne _0806F4C8 - movs r0, #3 - strb r0, [r5, #0xd] - str r5, [r6, #0x70] - ldr r1, _0806F4C4 @ =gPlayerState - movs r0, #7 - strb r0, [r1, #0x1c] - movs r0, #0x11 - movs r1, #0 - movs r2, #0 - movs r3, #0 - bl CreatePlayerItem - cmp r0, #0 - beq _0806F4B4 - str r5, [r0, #0x54] - str r0, [r5, #0x50] -_0806F4B4: - movs r0, #0xed - bl SoundReq - b _0806F4D8 - .align 2, 0 -_0806F4BC: .4byte gPlayerEntity -_0806F4C0: .4byte gUnk_08126EE4 -_0806F4C4: .4byte gPlayerState -_0806F4C8: - cmp r1, #1 - bne _0806F4D8 - ldr r0, _0806F4DC @ =gPlayerState - ldr r0, [r0, #0x2c] - strb r1, [r0, #0xa] - movs r0, #0xef - bl SoundReq -_0806F4D8: - movs r0, #1 - b _0806F4E2 - .align 2, 0 -_0806F4DC: .4byte gPlayerState -_0806F4E0: - movs r0, #0 -_0806F4E2: - add sp, #0x88 - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0806F4E8 -sub_0806F4E8: @ 0x0806F4E8 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0x1d] - movs r2, #3 - ands r2, r0 - cmp r2, #1 - beq _0806F516 - cmp r2, #1 - bgt _0806F500 - cmp r2, #0 - beq _0806F510 - b _0806F51C -_0806F500: - cmp r2, #2 - beq _0806F50A - cmp r2, #3 - beq _0806F516 - b _0806F51C -_0806F50A: - adds r1, #0x62 - movs r0, #0xfe - b _0806F51A -_0806F510: - adds r1, #0x62 - movs r0, #2 - b _0806F51A -_0806F516: - adds r1, #0x62 - movs r0, #0 -_0806F51A: - strb r0, [r1] -_0806F51C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806F520 -sub_0806F520: @ 0x0806F520 - push {lr} - adds r2, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x93 - beq _0806F544 - adds r3, r2, #0 - adds r3, #0x3a - ldrb r1, [r3] - movs r0, #0xfb - ands r0, r1 - movs r1, #0 - strb r0, [r3] - adds r0, r2, #0 - adds r0, #0x63 - strb r1, [r0] - movs r0, #0 - b _0806F546 -_0806F544: - movs r0, #1 -_0806F546: - pop {pc} - - thumb_func_start sub_0806F548 -sub_0806F548: @ 0x0806F548 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - bl EntityInRectRadius - cmp r0, #0 - bne _0806F55A - movs r0, #0 - b _0806F562 -_0806F55A: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0806F58C -_0806F562: - pop {r4, r5, pc} - - thumb_func_start sub_0806F564 -sub_0806F564: @ 0x0806F564 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r3, r2, #0 - movs r1, #0x2e - ldrsh r0, [r4, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - adds r2, r5, #0 - bl sub_080045D4 - bl sub_0806F5A4 - movs r2, #0 - ldrb r1, [r4, #0x14] - cmp r1, r0 - bne _0806F588 - movs r2, #1 -_0806F588: - adds r0, r2, #0 - pop {r4, r5, pc} - - thumb_func_start sub_0806F58C -sub_0806F58C: @ 0x0806F58C - push {r4, lr} - adds r4, r0, #0 - bl sub_0806FCA0 - movs r2, #0 - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - cmp r1, r0 - bne _0806F5A0 - movs r2, #1 -_0806F5A0: - adds r0, r2, #0 - pop {r4, pc} - - thumb_func_start sub_0806F5A4 -sub_0806F5A4: @ 0x0806F5A4 - ldr r1, _0806F5AC @ =gUnk_08114F38 - adds r0, r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806F5AC: .4byte gUnk_08114F38 - - thumb_func_start sub_0806F5B0 -sub_0806F5B0: @ 0x0806F5B0 - ldr r1, _0806F5B8 @ =gUnk_08114F58 - adds r0, r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806F5B8: .4byte gUnk_08114F58 - - thumb_func_start sub_0806F5BC -sub_0806F5BC: @ 0x0806F5BC - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r7, r0, #0 - movs r0, #0x80 - ands r0, r2 - cmp r0, #0 - bne _0806F620 - ldr r0, _0806F628 @ =gSineTable - mov r8, r0 - lsls r4, r2, #3 - lsls r0, r2, #4 - add r0, r8 - movs r2, #0 - ldrsh r0, [r0, r2] - lsls r5, r1, #0x10 - asrs r5, r5, #0x10 - adds r1, r5, #0 - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r6, #0x80 - lsls r6, r6, #1 - adds r1, r6, #0 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #8 - ldr r1, [r7, #0x2c] - adds r1, r1, r0 - str r1, [r7, #0x2c] - adds r4, #0x40 - lsls r4, r4, #1 - add r4, r8 - movs r1, #0 - ldrsh r0, [r4, r1] - adds r1, r5, #0 - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - adds r1, r6, #0 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #8 - ldr r1, [r7, #0x30] - subs r1, r1, r0 - str r1, [r7, #0x30] -_0806F620: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0806F628: .4byte gSineTable - - thumb_func_start sub_0806F62C -sub_0806F62C: @ 0x0806F62C - push {r4, r5, r6, lr} - mov r6, sb - mov r5, r8 - push {r5, r6} - adds r6, r0, #0 - adds r5, r1, #0 - adds r4, r2, #0 - ldr r0, _0806F698 @ =gSineTable - mov sb, r0 - lsls r4, r4, #0x18 - lsrs r4, r4, #0x18 - lsls r0, r4, #1 - add r0, sb - movs r1, #0 - ldrsh r0, [r0, r1] - lsls r5, r5, #0x10 - asrs r5, r5, #0x10 - adds r1, r5, #0 - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x80 - lsls r1, r1, #1 - mov r8, r1 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #8 - ldr r1, [r6, #0x2c] - adds r1, r1, r0 - str r1, [r6, #0x2c] - adds r4, #0x40 - lsls r4, r4, #1 - add r4, sb - movs r1, #0 - ldrsh r0, [r4, r1] - adds r1, r5, #0 - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov r1, r8 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #8 - ldr r1, [r6, #0x30] - subs r1, r1, r0 - str r1, [r6, #0x30] - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, pc} - .align 2, 0 -_0806F698: .4byte gSineTable - - thumb_func_start sub_0806F69C -sub_0806F69C: @ 0x0806F69C - push {r4, r5, r6, lr} - adds r6, r0, #0 - ldrb r1, [r6, #0x15] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0806F6FE - ldr r5, _0806F700 @ =gSineTable - ldrb r0, [r6, #0x15] - lsls r0, r0, #4 - adds r0, r0, r5 - movs r1, #0 - ldrsh r0, [r0, r1] - movs r2, #0x24 - ldrsh r1, [r6, r2] - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r4, #0x80 - lsls r4, r4, #1 - adds r1, r4, #0 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #8 - ldr r1, [r6, #0x2c] - adds r1, r1, r0 - str r1, [r6, #0x2c] - ldrb r0, [r6, #0x15] - lsls r0, r0, #4 - adds r0, #0x80 - adds r0, r0, r5 - movs r1, #0 - ldrsh r0, [r0, r1] - movs r2, #0x24 - ldrsh r1, [r6, r2] - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - adds r1, r4, #0 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #8 - ldr r1, [r6, #0x30] - subs r1, r1, r0 - str r1, [r6, #0x30] -_0806F6FE: - pop {r4, r5, r6, pc} - .align 2, 0 -_0806F700: .4byte gSineTable - - thumb_func_start sub_0806F704 -sub_0806F704: @ 0x0806F704 - push {r4, r5, r6, lr} - lsls r3, r1, #4 - movs r2, #0xfc - lsls r2, r2, #2 - adds r6, r2, #0 - ands r3, r6 - movs r5, #8 - orrs r3, r5 - ldr r4, _0806F72C @ =gRoomControls - ldrh r2, [r4, #6] - adds r2, r2, r3 - strh r2, [r0, #0x2e] - lsrs r1, r1, #2 - ands r1, r6 - orrs r1, r5 - ldrh r2, [r4, #8] - adds r2, r2, r1 - strh r2, [r0, #0x32] - pop {r4, r5, r6, pc} - .align 2, 0 -_0806F72C: .4byte gRoomControls - - thumb_func_start sub_0806F730 -sub_0806F730: @ 0x0806F730 - push {r4, r5, r6, lr} - movs r6, #0x3f - movs r1, #0x2e - ldrsh r2, [r0, r1] - ldr r4, [r0, #0x48] - movs r1, #0 - ldrsb r1, [r4, r1] - adds r2, r2, r1 - ldr r3, _0806F764 @ =gRoomControls - ldrh r1, [r3, #6] - subs r5, r2, r1 - movs r2, #0x32 - ldrsh r1, [r0, r2] - movs r2, #1 - ldrsb r2, [r4, r2] - adds r1, r1, r2 - ldrh r2, [r3, #8] - subs r1, r1, r2 - ldrb r0, [r0, #0x14] - cmp r0, #2 - beq _0806F77E - cmp r0, #2 - bgt _0806F768 - cmp r0, #0 - beq _0806F772 - b _0806F788 - .align 2, 0 -_0806F764: .4byte gRoomControls -_0806F768: - cmp r0, #4 - beq _0806F778 - cmp r0, #6 - beq _0806F784 - b _0806F788 -_0806F772: - ldrb r0, [r4, #5] - subs r1, r1, r0 - b _0806F788 -_0806F778: - ldrb r0, [r4, #5] - adds r1, r1, r0 - b _0806F788 -_0806F77E: - ldrb r0, [r4, #2] - adds r5, r5, r0 - b _0806F788 -_0806F784: - ldrb r0, [r4, #2] - subs r5, r5, r0 -_0806F788: - lsrs r0, r5, #4 - ands r0, r6 - lsrs r1, r1, #4 - ands r1, r6 - lsls r1, r1, #6 - adds r0, r0, r1 - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0806F798 -sub_0806F798: @ 0x0806F798 - push {r4, r5, lr} - adds r2, r0, #0 - movs r1, #0x2e - ldrsh r0, [r2, r1] - ldr r4, [r2, #0x48] - movs r1, #0 - ldrsb r1, [r4, r1] - adds r0, r0, r1 - ldr r3, _0806F7CC @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - movs r5, #0x32 - ldrsh r1, [r2, r5] - movs r2, #1 - ldrsb r2, [r4, r2] - adds r1, r1, r2 - ldrh r2, [r3, #8] - subs r1, r1, r2 - movs r2, #0x3f - lsrs r0, r0, #4 - ands r0, r2 - lsrs r1, r1, #4 - ands r1, r2 - lsls r1, r1, #6 - adds r0, r0, r1 - pop {r4, r5, pc} - .align 2, 0 -_0806F7CC: .4byte gRoomControls - - thumb_func_start sub_0806F7D0 -sub_0806F7D0: @ 0x0806F7D0 - push {r4, lr} - ldr r4, _0806F7E4 @ =gUnk_02025EB0 - bl sub_0806F730 - ldr r1, _0806F7E8 @ =0x00002004 - adds r4, r4, r1 - adds r0, r0, r4 - ldrb r0, [r0] - pop {r4, pc} - .align 2, 0 -_0806F7E4: .4byte gUnk_02025EB0 -_0806F7E8: .4byte 0x00002004 - - thumb_func_start sub_0806F7EC -sub_0806F7EC: @ 0x0806F7EC - push {r4, lr} - ldr r4, _0806F800 @ =gUnk_02025EB0 - bl sub_0806F730 - lsls r0, r0, #1 - adds r4, #4 - adds r0, r0, r4 - ldrh r0, [r0] - pop {r4, pc} - .align 2, 0 -_0806F800: .4byte gUnk_02025EB0 - - thumb_func_start sub_0806F804 -sub_0806F804: @ 0x0806F804 - lsrs r0, r0, #4 - movs r2, #0x3f - ands r0, r2 - movs r2, #0xfc - lsls r2, r2, #2 - ands r2, r1 - lsls r2, r2, #2 - adds r0, r0, r2 - ldr r1, _0806F820 @ =gUnk_02025EB0 - lsls r0, r0, #1 - adds r1, #4 - adds r0, r0, r1 - ldrh r0, [r0] - bx lr - .align 2, 0 -_0806F820: .4byte gUnk_02025EB0 - - thumb_func_start sub_0806F824 -sub_0806F824: @ 0x0806F824 - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - adds r4, r2, #0 - adds r5, r3, #0 - movs r2, #0x2e - ldrsh r6, [r0, r2] - movs r2, #0x32 - ldrsh r3, [r0, r2] - mov r8, r3 - movs r3, #0x2e - ldrsh r2, [r1, r3] - adds r2, r2, r4 - movs r0, #0x32 - ldrsh r3, [r1, r0] - adds r3, r3, r5 - adds r0, r6, #0 - mov r1, r8 - bl sub_080045D4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0806F854 -sub_0806F854: @ 0x0806F854 - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r3, r1, #0 - adds r6, r2, #0 - ldr r0, [r4, #0x34] - cmp r0, #0 - beq _0806F8D6 - adds r0, r4, #0 - adds r0, #0x38 - ldrb r1, [r0] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _0806F8D6 - movs r1, #0x2e - ldrsh r0, [r4, r1] - adds r0, r0, r3 - ldr r2, _0806F8BC @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r5, #0x3f - ands r0, r5 - movs r3, #0x32 - ldrsh r1, [r4, r3] - adds r1, r1, r6 - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r5 - lsls r1, r1, #6 - orrs r0, r1 - movs r1, #2 - movs r2, #8 - bl sub_080002F0 - cmp r0, #0 - beq _0806F8C0 - ldrb r1, [r4, #0x19] - adds r0, r5, #0 - ands r0, r1 - movs r2, #0x80 - orrs r0, r2 - strb r0, [r4, #0x19] - ldrb r1, [r4, #0x1b] - adds r0, r5, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x1b] - movs r0, #1 - b _0806F8D8 - .align 2, 0 -_0806F8BC: .4byte gRoomControls -_0806F8C0: - ldrb r1, [r4, #0x19] - adds r0, r5, #0 - ands r0, r1 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r4, #0x19] - ldrb r1, [r4, #0x1b] - adds r0, r5, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x1b] -_0806F8D6: - movs r0, #0 -_0806F8D8: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0806F8DC -sub_0806F8DC: @ 0x0806F8DC - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r4, #0 - adds r5, #0x38 - ldrb r1, [r5] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _0806F942 - movs r1, #0x2e - ldrsh r0, [r4, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - subs r1, #4 - movs r2, #2 - bl GetTileTypeByPos - cmp r0, #0 - beq _0806F91C - ldrb r2, [r4, #0x19] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r2, #0x80 - orrs r0, r2 - strb r0, [r4, #0x19] - ldrb r0, [r4, #0x1b] - ands r1, r0 - orrs r1, r2 - strb r1, [r4, #0x1b] - movs r0, #1 - b _0806F944 -_0806F91C: - movs r1, #0x2e - ldrsh r0, [r4, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - subs r1, #4 - ldrb r2, [r5] - bl GetTileTypeByPos - ldrb r2, [r4, #0x19] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r4, #0x19] - ldrb r0, [r4, #0x1b] - ands r1, r0 - orrs r1, r2 - strb r1, [r4, #0x1b] -_0806F942: - movs r0, #0 -_0806F944: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806F948 -sub_0806F948: @ 0x0806F948 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0806F974 @ =gPlayerState - ldrb r0, [r1, #0xd] - cmp r0, #0xff - beq _0806F994 - ldrb r0, [r1, #0xd] - lsrs r3, r0, #2 - movs r0, #1 - ands r0, r3 - cmp r0, #0 - beq _0806F978 - ldrb r2, [r4, #0x14] - subs r0, r2, #1 - subs r0, r3, r0 - movs r1, #4 - ands r0, r1 - cmp r0, #0 - bne _0806F978 - adds r0, r2, #0 - b _0806F996 - .align 2, 0 -_0806F974: .4byte gPlayerState -_0806F978: - movs r2, #0 - cmp r3, #4 - bls _0806F980 - movs r2, #1 -_0806F980: - lsls r2, r2, #6 - ldrb r1, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - movs r0, #6 - ands r3, r0 - strb r3, [r4, #0x14] -_0806F994: - ldrb r0, [r4, #0x14] -_0806F996: - pop {r4, pc} - - thumb_func_start sub_0806F998 -sub_0806F998: @ 0x0806F998 - push {r4, lr} - adds r2, r0, #0 - ldrb r4, [r2, #0x14] - ldrb r1, [r2, #0x15] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0806F9E6 - movs r0, #0x1c - ands r0, r1 - lsrs r3, r0, #2 - movs r1, #1 - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - beq _0806F9C4 - subs r0, r3, r4 - adds r0, #1 - movs r1, #4 - ands r0, r1 - cmp r0, #0 - beq _0806F9E6 -_0806F9C4: - ldrb r0, [r2, #0x15] - lsrs r0, r0, #2 - movs r1, #0x7e - ands r0, r1 - strb r0, [r2, #0x14] - adds r4, r0, #0 - cmp r4, #4 - bhi _0806F9DE - ldrb r1, [r2, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r1 - b _0806F9E4 -_0806F9DE: - ldrb r0, [r2, #0x18] - movs r1, #0x40 - orrs r0, r1 -_0806F9E4: - strb r0, [r2, #0x18] -_0806F9E6: - adds r0, r4, #0 - pop {r4, pc} - .align 2, 0 diff --git a/asm/code_080A7C00.s b/asm/code_080A7C00.s deleted file mode 100644 index 988666cd..00000000 --- a/asm/code_080A7C00.s +++ /dev/null @@ -1,197 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start CreateItemEntity -CreateItemEntity: @ 0x080A7C00 - push {r4, lr} - bl GiveItemWithCutscene - adds r4, r0, #0 - cmp r4, #0 - beq _080A7C16 - ldrb r1, [r4, #0xa] - movs r2, #0 - bl sub_080A276C - str r0, [r4, #0x50] -_080A7C16: - pop {r4, pc} - - thumb_func_start sub_080A7C18 -sub_080A7C18: @ 0x080A7C18 - push {lr} - bl GiveItemWithCutscene - adds r2, r0, #0 - cmp r2, #0 - beq _080A7C32 - ldr r0, _080A7C34 @ =gPlayerEntity - str r0, [r2, #0x50] - ldrb r1, [r2, #0xa] - adds r0, r2, #0 - movs r2, #0 - bl sub_08078AF0 -_080A7C32: - pop {pc} - .align 2, 0 -_080A7C34: .4byte gPlayerEntity - - thumb_func_start GiveItemWithCutscene -GiveItemWithCutscene: @ 0x080A7C38 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r6, r1, #0 - adds r7, r2, #0 - cmp r5, #0x3f - bne _080A7C52 - ldr r0, _080A7C78 @ =gSave - adds r0, #0xbb - ldrb r0, [r0] - cmp r0, #0 - beq _080A7C52 - movs r5, #0x57 - movs r6, #0 -_080A7C52: - bl sub_0805E744 - adds r4, r0, #0 - cmp r4, #0 - beq _080A7C72 - strb r5, [r4, #0xa] - strb r6, [r4, #0xb] - strb r7, [r4, #0xe] - movs r0, #0xb - strb r0, [r4, #9] - movs r0, #6 - strb r0, [r4, #8] - adds r0, r4, #0 - movs r1, #6 - bl AppendEntityToList -_080A7C72: - adds r0, r4, #0 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A7C78: .4byte gSave - - thumb_func_start sub_080A7C7C -sub_080A7C7C: @ 0x080A7C7C - push {lr} - ldr r0, _080A7C88 @ =gUnk_02017660 - movs r1, #0x40 - bl MemClear - pop {pc} - .align 2, 0 -_080A7C88: .4byte gUnk_02017660 - - thumb_func_start sub_080A7C8C -sub_080A7C8C: @ 0x080A7C8C - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - ldr r4, _080A7C9C @ =gUnk_02017660 - movs r2, #0 - movs r1, #0 - b _080A7CA8 - .align 2, 0 -_080A7C9C: .4byte gUnk_02017660 -_080A7CA0: - adds r1, #1 - adds r4, #8 - cmp r1, #7 - bhi _080A7CB0 -_080A7CA8: - ldrh r0, [r4, #4] - cmp r0, r5 - bne _080A7CA0 - movs r2, #1 -_080A7CB0: - lsrs r1, r6, #1 - ldrb r0, [r4, #6] - lsls r0, r0, #0x1f - lsrs r0, r0, #0x1f - cmp r1, r0 - bne _080A7CF4 - cmp r2, #0 - beq _080A7CD2 - ldrb r0, [r4, #1] - bl SetLocalFlag - ldrb r0, [r4, #2] - ldrb r1, [r4, #3] - movs r2, #0 - bl CreateItemEntity - b _080A7CDC -_080A7CD2: - movs r0, #0x60 - movs r1, #0 - movs r2, #0 - bl CreateItemEntity -_080A7CDC: - movs r0, #0x74 - adds r1, r5, #0 - adds r2, r6, #0 - bl sub_0807B7D8 - movs r0, #0 - movs r1, #0x78 - bl RequestPriorityDuration - ldr r0, _080A7CF8 @ =0x0000011B - bl SoundReq -_080A7CF4: - pop {r4, r5, r6, pc} - .align 2, 0 -_080A7CF8: .4byte 0x0000011B - - thumb_func_start sub_080A7CFC -sub_080A7CFC: @ 0x080A7CFC - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r4, #0xc0 - lsls r4, r4, #3 - movs r6, #0 - movs r0, #3 - bl GetCurrentRoomProperty - adds r1, r0, #0 - cmp r1, #0 - beq _080A7D38 -_080A7D12: - ldrh r0, [r1, #4] - cmp r0, r5 - bne _080A7D30 - ldrb r0, [r1] - cmp r0, #5 - beq _080A7D24 - cmp r0, #6 - beq _080A7D2A - b _080A7D38 -_080A7D24: - movs r6, #0 - ldrh r4, [r1, #6] - b _080A7D38 -_080A7D2A: - movs r6, #1 - ldrh r4, [r1, #6] - b _080A7D38 -_080A7D30: - adds r1, #8 - ldrh r0, [r1, #4] - cmp r0, #0 - bne _080A7D12 -_080A7D38: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080A7D44 - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_080A7D44 -sub_080A7D44: @ 0x080A7D44 - push {lr} - cmp r1, #0 - beq _080A7D52 - movs r1, #0 - bl sub_08078AA8 - b _080A7D56 -_080A7D52: - bl MessageFromTarget -_080A7D56: - pop {pc} diff --git a/asm/non_matching/showNPCDialogue.inc b/asm/non_matching/showNPCDialogue.inc new file mode 100644 index 00000000..6db4a7c9 --- /dev/null +++ b/asm/non_matching/showNPCDialogue.inc @@ -0,0 +1,216 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r6, r1, #0 + ldrh r1, [r6, #2] + asrs r7, r1, #4 + movs r0, #1 + ands r7, r0 + movs r0, #0xf + ands r1, r0 + cmp r1, #6 + bls _0806F1C8 + b _0806F332 +_0806F1C8: + lsls r0, r1, #2 + ldr r1, _0806F1D4 @ =_0806F1D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806F1D4: .4byte _0806F1D8 +_0806F1D8: @ jump table + .4byte _0806F332 @ case 0 + .4byte _0806F342 @ case 1 + .4byte _0806F1F4 @ case 2 + .4byte _0806F24E @ case 3 + .4byte _0806F2BA @ case 4 + .4byte _0806F324 @ case 5 + .4byte _0806F336 @ case 6 +_0806F1F4: + ldr r4, [r6] + asrs r1, r4, #0xc + movs r0, #0xf + ands r1, r0 + ldr r0, _0806F210 @ =0x00000FFF + ands r4, r0 + movs r5, #0 + cmp r1, #1 + beq _0806F22A + cmp r1, #1 + bgt _0806F214 + cmp r1, #0 + beq _0806F21A + b _0806F248 + .align 2, 0 +_0806F210: .4byte 0x00000FFF +_0806F214: + cmp r1, #2 + beq _0806F23A + b _0806F248 +_0806F21A: + adds r0, r4, #0 + bl CheckRoomFlag + adds r5, r0, #0 +_0806F222: + adds r0, r4, #0 + bl SetRoomFlag + b _0806F248 +_0806F22A: + adds r0, r4, #0 + bl CheckLocalFlag + adds r5, r0, #0 +_0806F232: + adds r0, r4, #0 + bl SetLocalFlag + b _0806F248 +_0806F23A: + adds r0, r4, #0 + bl CheckGlobalFlag + adds r5, r0, #0 + adds r0, r4, #0 + bl SetGlobalFlag +_0806F248: + cmp r5, #0 + beq _0806F342 + b _0806F34C +_0806F24E: + ldr r4, [r6] + asrs r1, r4, #0xc + movs r0, #0xf + ands r1, r0 + ldr r0, _0806F26C @ =0x00000FFF + ands r4, r0 + movs r5, #0 + cmp r1, #1 + beq _0806F28A + cmp r1, #1 + bgt _0806F270 + cmp r1, #0 + beq _0806F276 + b _0806F248 + .align 2, 0 +_0806F26C: .4byte 0x00000FFF +_0806F270: + cmp r1, #2 + beq _0806F29E + b _0806F248 +_0806F276: + adds r0, r4, #0 + bl CheckRoomFlag + adds r5, r0, #0 + cmp r5, #0 + beq _0806F222 + adds r0, r4, #0 + bl ClearRoomFlag + b _0806F248 +_0806F28A: + adds r0, r4, #0 + bl CheckLocalFlag + adds r5, r0, #0 + cmp r5, #0 + beq _0806F232 + adds r0, r4, #0 + bl ClearLocalFlag + b _0806F248 +_0806F29E: + adds r0, r4, #0 + bl CheckGlobalFlag + adds r5, r0, #0 + cmp r5, #0 + bne _0806F2B2 + adds r0, r4, #0 + bl SetGlobalFlag + b _0806F248 +_0806F2B2: + adds r0, r4, #0 + bl ClearGlobalFlag + b _0806F248 +_0806F2BA: + ldr r4, [r6] + asrs r1, r4, #0xc + movs r0, #0xf + ands r1, r0 + ldr r0, _0806F2D8 @ =0x00000FFF + ands r4, r0 + movs r5, #0 + cmp r1, #4 + bhi _0806F248 + lsls r0, r1, #2 + ldr r1, _0806F2DC @ =_0806F2E0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806F2D8: .4byte 0x00000FFF +_0806F2DC: .4byte _0806F2E0 +_0806F2E0: @ jump table + .4byte _0806F2F4 @ case 0 + .4byte _0806F2FC @ case 1 + .4byte _0806F304 @ case 2 + .4byte _0806F30C @ case 3 + .4byte _0806F314 @ case 4 +_0806F2F4: + adds r0, r4, #0 + bl CheckRoomFlag + b _0806F320 +_0806F2FC: + adds r0, r4, #0 + bl CheckLocalFlag + b _0806F320 +_0806F304: + adds r0, r4, #0 + bl CheckGlobalFlag + b _0806F320 +_0806F30C: + adds r0, r4, #0 + bl CheckKinstoneFused + b _0806F320 +_0806F314: + adds r0, r4, #0 + bl GetInventoryValue + cmp r0, #0 + beq _0806F320 + movs r0, #1 +_0806F320: + adds r5, r0, #0 + b _0806F248 +_0806F324: + ldr r1, [r6, #4] + cmp r1, #0 + beq _0806F332 + mov r0, r8 + bl _call_via_r1 + b _0806F35E +_0806F332: + movs r0, #0 + b _0806F34E +_0806F336: + ldr r0, _0806F348 @ =gPlayerState + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806F34C +_0806F342: + ldrh r0, [r6, #6] + b _0806F34E + .align 2, 0 +_0806F348: .4byte gPlayerState +_0806F34C: + ldrh r0, [r6, #4] +_0806F34E: + cmp r7, #0 + beq _0806F35A + mov r1, r8 + bl MessageNoOverlap + b _0806F35E +_0806F35A: + bl MessageFromTarget +_0806F35E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/sub_0806F798.inc b/asm/non_matching/sub_0806F798.inc new file mode 100644 index 00000000..1ea837b0 --- /dev/null +++ b/asm/non_matching/sub_0806F798.inc @@ -0,0 +1,30 @@ + .syntax unified + push {r4, r5, lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldr r4, [r2, #0x48] + movs r1, #0 + ldrsb r1, [r4, r1] + adds r0, r0, r1 + ldr r3, _0806F7CC @ =gRoomControls + ldrh r1, [r3, #6] + subs r0, r0, r1 + movs r5, #0x32 + ldrsh r1, [r2, r5] + movs r2, #1 + ldrsb r2, [r4, r2] + adds r1, r1, r2 + ldrh r2, [r3, #8] + subs r1, r1, r2 + movs r2, #0x3f + lsrs r0, r0, #4 + ands r0, r2 + lsrs r1, r1, #4 + ands r1, r2 + lsls r1, r1, #6 + adds r0, r0, r1 + pop {r4, r5, pc} + .align 2, 0 +_0806F7CC: .4byte gRoomControls + .syntax divided diff --git a/asm/non_matching/sub_0806F824.inc b/asm/non_matching/sub_0806F824.inc new file mode 100644 index 00000000..698d911d --- /dev/null +++ b/asm/non_matching/sub_0806F824.inc @@ -0,0 +1,25 @@ + .syntax unified + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r2, #0 + adds r5, r3, #0 + movs r2, #0x2e + ldrsh r6, [r0, r2] + movs r2, #0x32 + ldrsh r3, [r0, r2] + mov r8, r3 + movs r3, #0x2e + ldrsh r2, [r1, r3] + adds r2, r2, r4 + movs r0, #0x32 + ldrsh r3, [r1, r0] + adds r3, r3, r5 + adds r0, r6, #0 + mov r1, r8 + bl sub_080045D4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/sub_0806F998.inc b/asm/non_matching/sub_0806F998.inc new file mode 100644 index 00000000..5ee106c1 --- /dev/null +++ b/asm/non_matching/sub_0806F998.inc @@ -0,0 +1,48 @@ + .syntax unified + push {r4, lr} + adds r2, r0, #0 + ldrb r4, [r2, #0x14] + ldrb r1, [r2, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0806F9E6 + movs r0, #0x1c + ands r0, r1 + lsrs r3, r0, #2 + movs r1, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F9C4 + subs r0, r3, r4 + adds r0, #1 + movs r1, #4 + ands r0, r1 + cmp r0, #0 + beq _0806F9E6 +_0806F9C4: + ldrb r0, [r2, #0x15] + lsrs r0, r0, #2 + movs r1, #0x7e + ands r0, r1 + strb r0, [r2, #0x14] + adds r4, r0, #0 + cmp r4, #4 + bhi _0806F9DE + ldrb r1, [r2, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _0806F9E4 +_0806F9DE: + ldrb r0, [r2, #0x18] + movs r1, #0x40 + orrs r0, r1 +_0806F9E4: + strb r0, [r2, #0x18] +_0806F9E6: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/sub_0806FOA4.inc b/asm/non_matching/sub_0806FOA4.inc new file mode 100644 index 00000000..53a92f93 --- /dev/null +++ b/asm/non_matching/sub_0806FOA4.inc @@ -0,0 +1,65 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r7, _0806F114 @ =gUnk_03003DA8 + ldr r5, [r7, #4] + movs r0, #0 + cmp r5, r7 + beq _0806F0BA +_0806F0B2: + adds r0, #1 + ldr r5, [r5, #4] + cmp r5, r7 + bne _0806F0B2 +_0806F0BA: + cmp r0, #1 + bls _0806F10E + ldr r5, [r7, #4] + cmp r5, r7 + beq _0806F10E + movs r2, #1 +_0806F0C6: + ldrb r1, [r5, #0x10] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F108 + ldrb r1, [r5, #0x17] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F108 + ldr r4, [r5, #4] + cmp r4, r7 + beq _0806F108 + movs r6, #1 +_0806F0E2: + ldrb r1, [r4, #0x10] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F102 + ldrb r1, [r4, #0x17] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F102 + adds r0, r5, #0 + adds r1, r4, #0 + str r2, [sp] + bl sub_08004484 + ldr r2, [sp] +_0806F102: + ldr r4, [r4, #4] + cmp r4, r7 + bne _0806F0E2 +_0806F108: + ldr r5, [r5, #4] + cmp r5, r7 + bne _0806F0C6 +_0806F10E: + add sp, #4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806F114: .4byte gUnk_03003DA8 + .syntax divided diff --git a/include/functions.h b/include/functions.h index 1b446323..293f7e20 100644 --- a/include/functions.h +++ b/include/functions.h @@ -29,7 +29,7 @@ extern Entity* CreateDeathFx(Entity*, u32, u32); extern void UpdateAnimationVariableFrames(Entity*, u32); extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32); extern bool32 LoadFixedGFX(Entity*, u32); -extern Entity* CreateItemEntity(u32, u32, u32); +extern void CreateItemEntity(u32, u32, u32); extern u32 ProcessMovement(Entity*); extern void MenuFadeIn(u32, u32); extern void LoadResourceAsync(const void*, u32, u32); @@ -276,7 +276,7 @@ extern Entity* sub_08077C0C(ItemBehavior*, u32); extern void sub_08077D38(ItemBehavior*, u32); extern void sub_08077E78(ItemBehavior*, u32); extern void UpdateItemAnim(ItemBehavior*); -extern void sub_0806F948(Entity*); +extern u32 sub_0806F948(Entity*); extern void sub_08077DF4(ItemBehavior*, u32); extern void sub_08077BB8(ItemBehavior*); extern bool32 sub_08077EFC(ItemBehavior*); diff --git a/include/room.h b/include/room.h index 58d323b1..aafac5bd 100644 --- a/include/room.h +++ b/include/room.h @@ -143,6 +143,17 @@ typedef struct { } ScreenTransition; extern ScreenTransition gScreenTransition; +typedef struct { + u8 type; + u8 _1; + u8 _2; + u8 _3; + u16 _4; + u8 _6; + u8 _7; +} TileEntity; +extern TileEntity gUnk_02017660[]; + extern void SetTileType(u32, u32, u32); extern void sub_08080964(u32 time, u32 magnitude); // shake screen diff --git a/include/save.h b/include/save.h index 56e953a1..1126973d 100644 --- a/include/save.h +++ b/include/save.h @@ -42,11 +42,12 @@ typedef struct { /*0x088*/ PlayerWorldStatus saved_status; /*0x0A8*/ Stats stats; /*0x0D0*/ u8 fillerD0[0x71]; - /*0x141*/ u8 unk141[0x45c - 0x141]; - /*0x45c*/ u8 unk45C[0x10]; - /*0x46c*/ u8 unk46C[0x20]; - /*0x48c*/ u32 unk48C[8]; - /*0x4ac*/ u8 filler4ac[0x8]; + /*0x141*/ u8 unk141[0x1c1 - 0x141]; + /*0x1C1*/ u8 unk1C1[0x45c - 0x1c1]; + /*0x45C*/ u8 unk45C[0x10]; + /*0x46C*/ u8 unk46C[0x20]; + /*0x48C*/ u32 unk48C[8]; + /*0x4AC*/ u8 filler4ac[0x8]; } SaveFile; extern SaveFile gSave; diff --git a/linker.ld b/linker.ld index f3b44b05..d98c69d0 100644 --- a/linker.ld +++ b/linker.ld @@ -475,7 +475,7 @@ SECTIONS { /* END enemies */ src/code_08049CD4.o(.text); asm/code_08049D30.o(.text); - src/enemyInit.o(.text); + src/enemyUtils.o(.text); asm/code_0804A720.o(.text); asm/sub_0804AA30.o(.text); src/createEnemy.o(.text); @@ -650,9 +650,7 @@ SECTIONS { src/npc/phonograph.o(.text); src/npc/npc58.o(.text); /* END npcs */ - asm/code_0806EC20.o(.text); - src/createNPC.o(.text); - asm/code_0806ED78.o(.text); + src/npcUtils.o(.text); src/coord.o(.text); asm/code_0806FA6C.o(.text); src/playerItem/playerItem12.o(.text); @@ -901,7 +899,7 @@ SECTIONS { asm/objectC1.o(.text); /* END objects */ asm/sub_080A276C.o(.text); - src/createObject.o(.text); + src/objectUtils.o(.text); asm/code_080A29BC.o(.text); src/playerItem/playerItemShield.o(.text); src/playerItem/playerItem15.o(.text); @@ -915,8 +913,8 @@ SECTIONS { src/sub_080A554C.o(.text); asm/code_080A5574.o(.text); src/playerItem/playerItemSword.o(.text); - asm/code_080A7C00.o(.text); - src/projectileInit.o(.text); + src/playerItemUtils.o(.text); + src/projectileUtils.o(.text); src/projectile/darkNutSwordSlash.o(.text); src/projectile/rockProjectile.o(.text); src/projectile/boneProjectile.o(.text); diff --git a/src/coord.c b/src/coord.c index 4beb4c9b..3fe17296 100644 --- a/src/coord.c +++ b/src/coord.c @@ -1,10 +1,261 @@ +#include "area.h" +#include "player.h" #include "global.h" #include "entity.h" #include "coord.h" +#include "utils.h" +#include "audio.h" +#include "room.h" +#include "functions.h" extern u8 gUnk_08114F78[]; extern u8 gUnk_08114F80[]; +typedef struct { + u32 _0; + u16 _4[0x1000]; + u8 _2004[0x2000]; +} struct_02025EB0; +extern struct_02025EB0 gUnk_02025EB0; + +extern s8 gUnk_08126EE4[]; +extern u8 gUnk_08114F38[]; +extern u8 gUnk_08114F58[]; + +void sub_080027EA(Entity*, u32, u32); +void sub_0806F5BC(Entity*, u32, u32); +u32 sub_0806F58C(Entity*, Entity*); +u32 sub_0806FCA0(Entity*, Entity*); + +void sub_0806F364(void) { + gArea.filler[2] ^= 0x80; + MemClear(&gArea.filler5[(gArea.filler[2] + 7) / 8], 16); +} + +void sub_0806F38C(void) { + gArea.filler[2] ^= 0x80; +} + +u32 sub_0806F39C(Entity* ent) { + s32 dist; + + if (gPlayerEntity.animationState & 2) { + dist = ent->x.HALF.HI - gPlayerEntity.x.HALF.HI; + } else { + dist = ent->y.HALF.HI - gPlayerEntity.y.HALF.HI; + } + if (dist < 0) { + dist = -dist; + } + + if (dist > 64) { + sub_080027EA(&gPlayerEntity, ent->speed, ent->direction); + return 1; + } + return 0; +} + +u32 sub_0806F3E4(Entity* ent) { + Entity tmp_ent; + s8* p; + + if ((gPlayerState.field_0x1c & 0x7F) != 1) + return 0; + switch (gPlayerState.field_0x1d[0]) { + case 1: + ent->field_0x46 += 64; + break; + case 2: + ent->field_0x46 += 128; + break; + case 3: + ent->field_0x46 += 192; + break; + } + if (ent->field_0x46 > 0x500) + ent->field_0x46 = 0x500; + p = &gUnk_08126EE4[gPlayerEntity.animationState & 0xE]; + tmp_ent.x.HALF.HI = p[0] + gPlayerEntity.x.HALF.HI; + tmp_ent.y.HALF.HI = p[1] + gPlayerEntity.y.HALF.HI; + sub_0806F5BC(ent, ent->field_0x46, GetFacingDirection(ent, &tmp_ent)); + if (sub_0800419C(&tmp_ent, ent, 4, 4)) { + u32 state = ent->field_0x1c & 0xF; + if (state == 2) { + Entity* item; + ent->subAction = 3; + (Entity*)gPlayerEntity.field_0x70.WORD = ent; + gPlayerState.field_0x1c = 7; + item = CreatePlayerItem(0x11, 0, 0, 0); + if (item != NULL) { + item->child = ent; + ent->parent = item; + } + SoundReq(SFX_ED); + } else if (state == 1) { + gPlayerState.field_0x2c[10] = 1; + SoundReq(SFX_EF); + } + return 1; + } + return 0; +} + +void sub_0806F4E8(Entity* ent) { + switch (ent->field_0x1d & 3) { + case 2: + ent->spriteOffsetX = -2; + break; + case 1: + ent->spriteOffsetX = 0; + break; + case 0: + ent->spriteOffsetX = 2; + break; + case 3: + ent->spriteOffsetX = 0; + break; + } +} + +u32 sub_0806F520(Entity* ent) { + if (ent->bitfield == 0x93) + return 1; + ent->field_0x3a &= ~4; + ent->spriteOffsetY = 0; + return 0; +} + +u32 sub_0806F548(Entity* a, Entity* b, u32 x, u32 y) { + if (EntityInRectRadius(a, b, x, y)) + return sub_0806F58C(a, b); + return 0; +} + +u32 sub_0806F564(Entity* ent, u32 b, u32 c) { + u32 tmp = sub_080045D4(ent->x.HALF.HI, ent->y.HALF.HI, b, c); + return ent->animationState == sub_0806F5A4(tmp); +} + +u32 sub_0806F58C(Entity* a, Entity* b) { + return a->animationState >> 1 == sub_0806FCA0(a, b); +} + +u32 sub_0806F5A4(u32 idx) { + return gUnk_08114F38[idx]; +} + +u32 sub_0806F5B0(u32 idx) { + return gUnk_08114F58[idx]; +} + +void sub_0806F5BC(Entity* ent, u32 a, u32 b) { + if ((b & 0x80) == 0) { + u32 m1 = b; + + ent->x.WORD += FixedDiv(FixedMul(gSineTable[m1 *= 8], a), 256) << 8; + ent->y.WORD -= FixedDiv(FixedMul(gSineTable[m1 + 64], a), 256) << 8; + } +} + +void sub_0806F62C(Entity* ent, u32 a, u32 b) { + ent->x.WORD += FixedDiv(FixedMul(gSineTable[(u8)b], a), 256) << 8; + ent->y.WORD -= FixedDiv(FixedMul(gSineTable[(u8)b + 64], a), 256) << 8; +} + +void sub_0806F69C(Entity* ent) { + if ((ent->direction & 0x80) == 0) { + ent->x.WORD += FixedDiv(FixedMul(gSineTable[ent->direction * 8], ent->speed), 256) << 8; + ent->y.WORD -= FixedDiv(FixedMul(gSineTable[ent->direction * 8 + 64], ent->speed), 256) << 8; + } +} + +void sub_0806F704(Entity* ent, u32 a2) { + ent->x.HALF.HI = (((16 * a2) & 0x3F0) | 8) + gRoomControls.roomOriginX; + ent->y.HALF.HI = (((a2 >> 2) & 0x3F0) | 8) + gRoomControls.roomOriginY; +} + +u32 sub_0806F730(Entity* ent) { + u32 tmp = 0x3F; + u32 x = ent->x.HALF.HI + ent->hitbox->offset_x - gRoomControls.roomOriginX; + u32 y = ent->y.HALF.HI + ent->hitbox->offset_y - gRoomControls.roomOriginY; + switch (ent->animationState) { + case 0: + y -= ent->hitbox->unk2[3]; + break; + case 4: + y += ent->hitbox->unk2[3]; + break; + case 2: + x += ent->hitbox->unk2[0]; + break; + case 6: + x -= ent->hitbox->unk2[0]; + break; + } + return ((x >> 4) & tmp) + (((y >> 4) & tmp) << 6); +} + +ASM_FUNC("asm/non_matching/sub_0806F798.inc", u32 sub_0806F798(Entity* ent)); + +u32 sub_0806F7D0(Entity* ent) { + return gUnk_02025EB0._2004[sub_0806F730(ent)]; +} + +u32 sub_0806F7EC(Entity* ent) { + return gUnk_02025EB0._4[sub_0806F730(ent)]; +} + +u32 sub_0806F804(u32 x, u32 y) { + u32 idx = ((x >> 4) & 0x3F) + 4 * (y & 0x3F0); + return gUnk_02025EB0._4[idx]; +} + +ASM_FUNC("asm/non_matching/sub_0806F824.inc", void sub_0806F824(Entity* a, Entity* b, u32 x, u32 y)); + +u32 sub_0806F854(Entity* ent, s32 x, s32 y) { + if (ent->z.WORD == 0 || (ent->collisionLayer & 2)) + return 0; + if (!sub_080002F0(TILE(ent->x.HALF.HI + x, ent->y.HALF.HI + y), 2, 8)) { + ent->spriteRendering.b3 = 1; + ent->spriteOrientation.flipY = 1; + return 0; + } + ent->spriteRendering.b3 = 2; + ent->spriteOrientation.flipY = 2; + return 1; +} + +u32 sub_0806F8DC(Entity* ent) { + if (ent->collisionLayer & 2) + return 0; + if (!GetTileTypeByPos(ent->x.HALF.HI, ent->y.HALF.HI - 4, 2)) { + GetTileTypeByPos(ent->x.HALF.HI, ent->y.HALF.HI - 4, ent->collisionLayer); + ent->spriteRendering.b3 = 1; + ent->spriteOrientation.flipY = 1; + return 0; + } + ent->spriteRendering.b3 = 2; + ent->spriteOrientation.flipY = 2; + return 1; +} + +u32 sub_0806F948(Entity* ent) { + u32 v1; + if (gPlayerState.field_0xd == 0xFF) + return ent->animationState; + + v1 = gPlayerState.field_0xd / 4; + if ((v1 & 1) && !(((v1 + 1) - ent->animationState) & 4)) { + return ent->animationState; + } else { + ent->spriteSettings.flipX = v1 > 4; + ent->animationState = v1 & 6; + } + return ent->animationState; +} + +ASM_FUNC("asm/non_matching/sub_0806F998.inc", u32 sub_0806F998(Entity* ent)); + s16 FixedMul(s16 r0, s16 r1) { s32 temp = r0 * r1; if (temp < 0) diff --git a/src/createEntity.c b/src/createEntity.c deleted file mode 100644 index 9948a780..00000000 --- a/src/createEntity.c +++ /dev/null @@ -1,50 +0,0 @@ -// #include "entity.h" -// #include "entityData.h" -// #include "global.h" - -// extern Entity * DeepFindEntityByID(u32, u32); -// extern Entity * GetEmptyEntityByKind(); -// extern void RegisterRoomEntity(Entity *, EntityData *); -// extern u32 sub_0804AF0C(Entity *, EntityData *); -// extern void sub_08016A30(Entity *); -// extern u32 gRoomControls; - -// Entity * LoadRoomEntity(EntityData *param_1) -// { -// Entity *preexisting; -// Entity *entity; -// s32 type; - -// type = param_1->entityType & 15; -// if (((param_1->field_0x1 & 240) == 80) && -// (preexisting = DeepFindEntityByID(type,param_1->entitySubtype), preexisting != NULL)) { -// entity = NULL; -// } -// else { -// entity = GetEmptyEntityByKind(); //Get empty entity -// if (entity != NULL) { -// (entity->entityType).type = type; -// (entity->entityType).subtype = param_1->entitySubtype; -// (entity->entityType).form = param_1->entityform; -// RegisterRoomEntity(entity,param_1); -// if ((param_1->field_0x1 & 240) != 16) { -// (entity->type2 = *(u8 *)¶m_1->entityparameter; -// entity->actionDelay = (u8)((u32)param_1->entityparameter >> 8); -// if ((type != 9) && (sub_0804AF0C(entity,param_1), entity->field_0x4 != NULL)) { -// if ((param_1->entityType & 16) == 0) { -// if ((param_1->entityType & 32) != 0) { -// entity->collisionLayer = 2; -// return entity; -// } -// if ((gRoomControls & 2) == 0) { -// sub_08016A30(entity); -// return entity; -// } -// } -// entity->collisionLayer = 1; -// } -// } -// } -// } -// return entity; -// } diff --git a/src/createNPC.c b/src/createNPC.c deleted file mode 100644 index 8ef66a81..00000000 --- a/src/createNPC.c +++ /dev/null @@ -1,67 +0,0 @@ -#include "global.h" -#include "entity.h" -#include "functions.h" -#include "definitions.h" - -extern const NPCDefinition gNPCDefinitions[]; - -extern Hitbox* gNPCHitboxes[]; -const NPCDefinition* GetNPCDefinition(Entity*); - -const NPCDefinition* GetNPCDefinition(Entity* this) { - const NPCDefinition* definition = &gNPCDefinitions[this->id]; - if (definition->bitfield.type == 2) { - definition = &definition->data.definition[this->type]; - } - return definition; -} - -void NPCInit(Entity* this) { - u32 tmp; - u32 tmp2; - - if ((this->flags & 1) == 0) { - const NPCDefinition* definition = GetNPCDefinition(this); - if (definition->bitfield.type == 0) { - // No sprite for this NPC - this->flags |= 1; - } else { - tmp = definition->bitfield.gfx; - switch (definition->bitfield.gfx_type) { - case 2: - this->spriteVramOffset = definition->bitfield.gfx; - break; - case 1: - LoadSwapGFX(this, tmp, 0); - break; - default: - LoadFixedGFX(this, tmp); - break; - } - tmp = definition->data.sprite.paletteIndex; - LoadObjPalette(this, tmp); - this->spriteIndex = definition->data.sprite.spriteIndex; - this->spriteSettings.shadow = definition->data.sprite.shadow; - this->spritePriority.b1 = definition->data.sprite.spritePriority; - this->spriteSettings.draw = definition->data.sprite.draw; - this->hitbox = gNPCHitboxes[definition->bitfield.hitbox]; - this->flags |= ENT_DID_INIT; - tmp2 = 0xff; - this->animIndex = tmp2; - this->frameIndex = tmp2; - UpdateSpriteForCollisionLayer(this); - } - } -} - -Entity* CreateNPC(u32 subtype, u32 form, u32 parameter) { - Entity* entity = GetEmptyEntity(); - if (entity != NULL) { - entity->kind = 7; - entity->id = subtype; - entity->type = form; - entity->type2 = parameter; - AppendEntityToList(entity, 7); - } - return entity; -} diff --git a/src/enemyInit.c b/src/enemyUtils.c similarity index 100% rename from src/enemyInit.c rename to src/enemyUtils.c diff --git a/src/npcUtils.c b/src/npcUtils.c new file mode 100644 index 00000000..7511beff --- /dev/null +++ b/src/npcUtils.c @@ -0,0 +1,312 @@ +#include "global.h" +#include "entity.h" +#include "functions.h" +#include "definitions.h" +#include "save.h" + +extern const NPCDefinition gNPCDefinitions[]; + +extern Hitbox* gNPCHitboxes[]; +const NPCDefinition* GetNPCDefinition(Entity*); +extern u32 (*gUnk_08114EFC[])(); +extern u32 (*gUnk_08114F0C[])(Entity*, u8*); + +typedef struct { + u16 _0; + u16 _2; + u16 _4; +} NPCData; +extern NPCData* gUnk_08001A7C[]; + +u32 sub_0800445C(Entity*); +void sub_08077B20(void); +void sub_0806EF14(Entity*); +void sub_0806F69C(Entity*); +void sub_0806EF4C(Entity*, u16*); +u32 sub_080041DC(Entity*, u32, u32); +u32 sub_0806EF74(Entity*, u32); +u32 sub_0806EF88(Entity*); + +void sub_0806EC20(Entity* ent) { + Entity* e = CreateNPC(0x58, 0, 0); + if (e != NULL) { + e->parent = ent; + } +} + +void sub_0806EC38(void) { + Entity* e = FindEntityByID(7, 0x58, 7); + if (e != NULL) + DeleteEntity(e); +} + +const NPCDefinition* GetNPCDefinition(Entity* this) { + const NPCDefinition* definition = &gNPCDefinitions[this->id]; + if (definition->bitfield.type == 2) { + definition = &definition->data.definition[this->type]; + } + return definition; +} + +void NPCInit(Entity* this) { + u32 tmp; + u32 tmp2; + + if ((this->flags & 1) == 0) { + const NPCDefinition* definition = GetNPCDefinition(this); + if (definition->bitfield.type == 0) { + // No sprite for this NPC + this->flags |= 1; + } else { + tmp = definition->bitfield.gfx; + switch (definition->bitfield.gfx_type) { + case 2: + this->spriteVramOffset = definition->bitfield.gfx; + break; + case 1: + LoadSwapGFX(this, tmp, 0); + break; + default: + LoadFixedGFX(this, tmp); + break; + } + tmp = definition->data.sprite.paletteIndex; + LoadObjPalette(this, tmp); + this->spriteIndex = definition->data.sprite.spriteIndex; + this->spriteSettings.shadow = definition->data.sprite.shadow; + this->spritePriority.b1 = definition->data.sprite.spritePriority; + this->spriteSettings.draw = definition->data.sprite.draw; + this->hitbox = gNPCHitboxes[definition->bitfield.hitbox]; + this->flags |= ENT_DID_INIT; + tmp2 = 0xff; + this->animIndex = tmp2; + this->frameIndex = tmp2; + UpdateSpriteForCollisionLayer(this); + } + } +} + +Entity* CreateNPC(u32 subtype, u32 form, u32 parameter) { + Entity* entity = GetEmptyEntity(); + if (entity != NULL) { + entity->kind = 7; + entity->id = subtype; + entity->type = form; + entity->type2 = parameter; + AppendEntityToList(entity, 7); + } + return entity; +} + +u32 sub_0806ED78(Entity* ent) { + u32 result = sub_0800445C(ent); + if (result) { + if (gPlayerState.field_0x1d[1] & 0x40) { + sub_08077B20(); + } + } + return result; +} + +s32 sub_0806ED9C(Entity* ent, u32 x, u32 y) { + s32 anim = -1; + if (EntityInRectRadius(ent, &gPlayerEntity, x, y)) + anim = GetAnimationState(ent); + return anim; +} + +u32 GetAnimationState(Entity* ent) { + u32 direction = GetFacingDirection(ent, &gPlayerEntity); + return sub_0806F5A4(direction); +} + +s32 sub_0806EDD8(Entity* ent, u32 x, u32 y) { + s32 anim = -1; + if (EntityInRectRadius(ent, &gPlayerEntity, x, y)) + anim = GetFacingDirection(ent, &gPlayerEntity); + return anim; +} + +void sub_0806EE04(Entity* ent, void* a2, u32 a3) { + ent->child = a2; + ent->field_0x3c = a3; + ent->hitType = 0; + ent->field_0x46 = 0; + ent->field_0x16 = 0; +} + +u32 sub_0806EE20(Entity* ent) { + u32 v3; + + if (!ent->interactType) { + if (ent->child) + return gUnk_08114EFC[ent->field_0x16](ent); + } else { + ent->field_0x46 = 8; + v3 = GetFacingDirection(ent, &gPlayerEntity); + ent->knockbackDirection = sub_0806F5A4(v3); + } + return 0; +} + +u32 sub_0806EE70(Entity* ent) { + s32 tmp1; + s32 tmp2; + u32 result; + u16 xy[2]; + + if (++ent->field_0x46 > 8) { + ent->field_0x46 = 0; + sub_0806EF14(ent); + } + sub_0806F69C(ent); + sub_0806EF4C(ent, xy); + tmp1 = sub_080041DC(ent, xy[0], xy[1]); + tmp2 = ent->speed; + if (tmp2 < 0) + tmp2 = -tmp2; + if ((u32)tmp2 / 8 <= tmp1) + result = 0; + else + result = sub_0806EF74(ent, 3); + return result; +} + +u32 sub_0806EED0(Entity* ent) { + if (!--ent->field_0x46) + return sub_0806EF74(ent, 2); + return 0; +} + +u32 sub_0806EEF4(Entity* ent) { + if (ent->frame & 0x80) + return sub_0806EF74(ent, 1); + return 0; +} + +void sub_0806EF14(Entity* ent) { + u16 xy[2]; + sub_0806EF4C(ent, xy); + ent->direction = sub_080045B4(ent, xy[0], xy[1]); + if ((ent->field_0x3c & 1) == 0) + ent->knockbackDirection = sub_0806F5A4(ent->direction); +} + +void sub_0806EF4C(Entity* ent, u16* xy) { + u16* src = &((u16*)ent->child)[ent->hitType]; + xy[0] = gRoomControls.roomOriginX + src[1]; + xy[1] = gRoomControls.roomOriginY + src[2]; +} + +u32 sub_0806EF74(Entity* ent, u32 a2) { + ent->hitType += a2; + return sub_0806EF88(ent); +} + +u32 sub_0806EF88(Entity* ent) { + u8* v1 = (u8*)&((u16*)ent->child)[ent->hitType]; + return gUnk_08114F0C[*v1](ent, v1); +} + +u32 sub_0806EFAC(Entity* ent, u16* a2) { + ent->hitType = 0; + return sub_0806EF88(ent); +} + +u32 sub_0806EFBC(Entity* ent, u16* a2) { + ent->field_0x16 = 1; + ent->field_0x46 = 8; + return 0; +} + +u32 sub_0806EFCC(Entity* ent, u16* a2) { + ent->field_0x16 = 2; + ent->field_0x46 = a2[1]; + return 0; +} + +u32 sub_0806EFDC(Entity* ent, u16* a2) { + if (*a2 >> 8) { + ent->field_0x3c &= ~1; + } else { + ent->field_0x3c |= 1; + } + ent->hitType++; + return sub_0806EF88(ent); +} + +u32 sub_0806F014(Entity* ent, u16* a2) { + ent->speed = a2[1]; + ent->hitType += 2; + return sub_0806EF88(ent); +} + +u32 sub_0806F02C(Entity* ent, u16* a2) { + ent->knockbackDirection = *a2 >> 8; + ent->hitType++; + return sub_0806EF88(ent); +} + +u32 sub_0806F048(Entity* ent, u16* a2) { + ent->field_0x16 = 3; + return 0; +} + +u32 sub_0806F050(Entity* ent, u16* a2) { + (u16*)ent->child = a2 + 1; + ent->hitType = 0; + return sub_0806EF88(ent); +} + +u32 sub_0806F064(Entity* ent, u16* a2) { + ent->field_0x16 = 0; + ent->hitType++; + return *a2 >> 8; +} + +s32 sub_0806F078(Entity* ent, s32 a2) { + if (a2 != ent->animIndex) { + if (ent->spriteAnimation[0]) + InitAnimationForceUpdate(ent, a2); + else + InitializeAnimation(ent, a2); + return 1; + } + return 0; +} + +ASM_FUNC("asm/non_matching/sub_0806FOA4.inc", void sub_0806F0A4(void)); + +void sub_0806F118(Entity* ent) { + u32 idx = sub_08002632(ent); + NPCData* data = gUnk_08001A7C[idx]; + sub_0801DFB4(ent, data->_0, data->_2, data->_4); + gPlayerState.controlMode = 3; +} + +u32 UpdateFuseInteraction(void) { + u32 ret; + sub_0801E00C(); + ret = -1; + switch (gUnk_02022740[0]) { + default: + ret = 0; + break; + case 2: + gPlayerState.controlMode = 3; + ret = 1; + case 1: + sub_0807919C(); + gPlayerState.controlMode = 1; + break; + } + return ret; +} + +void sub_0806F188(Entity* ent) { + u32 idx = sub_08002632(ent); + if (idx != 0) + gSave.unk1C1[idx] = 0xF3; +} + +ASM_FUNC("asm/non_matching/showNPCDialogue.inc", void ShowNPCDialogue(Entity* ent, Dialog* dia)); diff --git a/src/createObject.c b/src/objectUtils.c similarity index 100% rename from src/createObject.c rename to src/objectUtils.c diff --git a/src/player.c b/src/player.c index eefd0d92..3f2c89e5 100644 --- a/src/player.c +++ b/src/player.c @@ -180,7 +180,6 @@ extern void RespawnPlayer(); extern void sub_080797EC(); extern void sub_08079E08(); extern void sub_08078F60(); -extern void sub_0806F948(); extern void sub_08077698(); extern void DisplayEzloMessage(); extern void sub_08079258(); diff --git a/src/playerItemUtils.c b/src/playerItemUtils.c new file mode 100644 index 00000000..98bd0309 --- /dev/null +++ b/src/playerItemUtils.c @@ -0,0 +1,106 @@ +#include "entity.h" +#include "functions.h" +#include "room.h" +#include "save.h" +#include "utils.h" +#include "audio.h" +#include "flags.h" +#include "textbox.h" + +Entity* GiveItemWithCutscene(u32, u32, u32); +Entity* sub_080A276C(Entity*, u32, u32); +void sub_08078AF0(Entity*, u32, u32); +Entity* sub_0805E744(void); +void sub_080A7D44(u32, u32); + +void CreateItemEntity(u32 a, u32 b, u32 c) { + Entity* e = GiveItemWithCutscene(a, b, c); + if (e != NULL) { + e->parent = sub_080A276C(e, e->type, 0); + } +} + +void sub_080A7C18(u32 a, u32 b, u32 c) { + Entity* e = GiveItemWithCutscene(a, b, c); + if (e != NULL) { + e->parent = &gPlayerEntity; + sub_08078AF0(e, e->type, 0); + } +} + +Entity* GiveItemWithCutscene(u32 type, u32 type2, u32 delay) { + Entity* e; + if (type == 63 && gSave.stats.filler3[0]) { + type = 87; + type2 = 0; + } + e = sub_0805E744(); + if (e != NULL) { + e->type = type; + e->type2 = type2; + e->actionDelay = delay; + e->id = 11; + e->kind = 6; + AppendEntityToList(e, 6); + } + return e; +} + +void sub_080A7C7C(void) { + MemClear(gUnk_02017660, 0x40); +} + +void sub_080A7C8C(u32 pos, u32 layer) { + TileEntity* t = gUnk_02017660; + u32 found = 0; + u32 i; + for (i = 0; i < 8; ++i, ++t) { + if (*(u16*)&t->_4 == pos) { + found = 1; + break; + } + } + if ((layer >> 1) == ((u32)(t->_6 << 31) >> 31)) { + if (found) { + SetLocalFlag(t->_1); + CreateItemEntity(t->_2, t->_3, 0); + } else { + CreateItemEntity(0x60, 0, 0); + } + sub_0807B7D8(0x74, pos, layer); + RequestPriorityDuration(NULL, 120); + SoundReq(283); + } +} + +u32 sub_080A7CFC(u32 a1) { + u32 ta = 0x600; + u32 tb = 0; + TileEntity* t = GetCurrentRoomProperty(3); + if (t != 0) { + do { + if (t->_4 == a1) { + switch (t->type) { + case 5: + tb = 0; + ta = *(u16*)&t->_6; + break; + case 6: + tb = 1; + ta = *(u16*)&t->_6; + break; + } + break; + } + t++; + } while (t->_4 != 0); + } + sub_080A7D44(ta, tb); +} + +void sub_080A7D44(u32 msg, u32 a2) { + if (a2) + sub_08078AA8(msg, 0); + else + MessageFromTarget(msg); +} diff --git a/src/projectileInit.c b/src/projectileUtils.c similarity index 100% rename from src/projectileInit.c rename to src/projectileUtils.c diff --git a/src/room.c b/src/room.c index 45af78fe..e892739e 100644 --- a/src/room.c +++ b/src/room.c @@ -29,17 +29,6 @@ void sub_0806F704(Entity*, u32); void sub_0805BB00(u32, u32); -typedef struct { - u8 type; - u8 _1; - u8 _2; - u8 _3; - u16 _4; - u8 _6; - u8 _7; -} TileEntity; -extern TileEntity gUnk_02017660[]; - static void sub_0804B290(TileEntity*); static void sub_0804B29C(TileEntity*); static void sub_0804B300(TileEntity*); diff --git a/src/roomInit.c b/src/roomInit.c index f6484343..0ab8138f 100644 --- a/src/roomInit.c +++ b/src/roomInit.c @@ -2011,11 +2011,7 @@ void sub_StateChange_Ruins_TripleTektites(void) { } void sub_unk1_Ruins_TripleTektites(void) { -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckLocalFlagByBank(FLAG_BANK_1, LOST_03_00)) { -#else if (CheckLocalFlagByBank(FLAG_BANK_1, LOST_02_00)) { -#endif SetDirtTile(0x85); } }