diff --git a/asm/code_0804B058.s b/asm/code_0804B058.s deleted file mode 100644 index 23fa0b18..00000000 --- a/asm/code_0804B058.s +++ /dev/null @@ -1,352 +0,0 @@ - .include "asm/macros.inc" - .text - .syntax unified - - thumb_func_start GetCurrentRoomProperty -GetCurrentRoomProperty: @ 0x0804B128 - push {lr} - adds r2, r0, #0 - ldr r0, _0804B138 @ =gCurrentRoomProperties - ldr r1, [r0] - cmp r1, #0 - bne _0804B13C - movs r0, #0 - b _0804B166 - .align 2, 0 -_0804B138: .4byte gCurrentRoomProperties -_0804B13C: - cmp r2, #0x7f - bls _0804B150 - ldr r0, _0804B14C @ =gRoomVars - movs r1, #7 - ands r1, r2 - lsls r1, r1, #2 - adds r0, #0x8c - b _0804B162 - .align 2, 0 -_0804B14C: .4byte gRoomVars -_0804B150: - cmp r2, #7 - bls _0804B15C - lsls r0, r2, #2 - adds r0, r0, r1 - ldr r0, [r0] - b _0804B166 -_0804B15C: - ldr r0, _0804B168 @ =gRoomVars - lsls r1, r2, #2 - adds r0, #0x6c -_0804B162: - adds r1, r1, r0 - ldr r0, [r1] -_0804B166: - pop {pc} - .align 2, 0 -_0804B168: .4byte gRoomVars - - thumb_func_start sub_0804B16C -sub_0804B16C: @ 0x0804B16C - push {r4, lr} - ldr r4, _0804B1A4 @ =gSmallChests -_0804B170: - ldrh r0, [r4, #4] - cmp r0, #0 - beq _0804B198 - ldrb r0, [r4, #1] - bl CheckLocalFlag - cmp r0, #0 - beq _0804B198 - ldrh r3, [r4, #4] - ldrb r1, [r4, #6] - movs r0, #1 - ands r0, r1 - movs r2, #1 - cmp r0, #0 - beq _0804B190 - movs r2, #2 -_0804B190: - movs r0, #0x74 - adds r1, r3, #0 - bl SetTileType -_0804B198: - adds r4, #8 - ldr r0, _0804B1A8 @ =gPaletteBuffer - cmp r4, r0 - blo _0804B170 - pop {r4, pc} - .align 2, 0 -_0804B1A4: .4byte gSmallChests -_0804B1A8: .4byte gPaletteBuffer - - thumb_func_start LoadRoomTileEntities -LoadRoomTileEntities: @ 0x0804B1AC - push {r4, lr} - adds r4, r0, #0 - cmp r4, #0 - beq _0804B25A - b _0804B254 -_0804B1B6: - ldrb r0, [r4] - subs r0, #1 - cmp r0, #0xc - bhi _0804B252 - lsls r0, r0, #2 - ldr r1, _0804B1C8 @ =_0804B1CC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804B1C8: .4byte _0804B1CC -_0804B1CC: @ jump table - .4byte _0804B200 @ case 0 - .4byte _0804B208 @ case 1 - .4byte _0804B252 @ case 2 - .4byte _0804B210 @ case 3 - .4byte _0804B252 @ case 4 - .4byte _0804B252 @ case 5 - .4byte _0804B218 @ case 6 - .4byte _0804B252 @ case 7 - .4byte _0804B22C @ case 8 - .4byte _0804B234 @ case 9 - .4byte _0804B23C @ case 10 - .4byte _0804B244 @ case 11 - .4byte _0804B24C @ case 12 -_0804B200: - adds r0, r4, #0 - bl sub_0804B290 - b _0804B252 -_0804B208: - adds r0, r4, #0 - bl sub_0804B29C - b _0804B252 -_0804B210: - adds r0, r4, #0 - bl sub_0804B300 - b _0804B252 -_0804B218: - ldr r0, _0804B224 @ =gArea - ldr r1, _0804B228 @ =0x00000864 - adds r0, r0, r1 - ldrb r1, [r4, #3] - str r1, [r0] - b _0804B252 - .align 2, 0 -_0804B224: .4byte gArea -_0804B228: .4byte 0x00000864 -_0804B22C: - adds r0, r4, #0 - bl sub_0804B334 - b _0804B252 -_0804B234: - adds r0, r4, #0 - bl sub_0804B340 - b _0804B252 -_0804B23C: - adds r0, r4, #0 - bl sub_0804B260 - b _0804B252 -_0804B244: - adds r0, r4, #0 - bl sub_0804B27C - b _0804B252 -_0804B24C: - ldr r1, _0804B25C @ =gRoomVars - ldrb r0, [r4, #3] - strb r0, [r1, #9] -_0804B252: - adds r4, #8 -_0804B254: - ldrb r0, [r4] - cmp r0, #0 - bne _0804B1B6 -_0804B25A: - pop {r4, pc} - .align 2, 0 -_0804B25C: .4byte gRoomVars - - thumb_func_start sub_0804B260 -sub_0804B260: @ 0x0804B260 - push {lr} - ldrb r0, [r0, #1] - lsls r0, r0, #5 - ldr r1, _0804B274 @ =gUnk_080015BC - adds r0, r0, r1 - ldr r1, _0804B278 @ =gUnk_02034398 - movs r2, #0x20 - bl MemCopy - pop {pc} - .align 2, 0 -_0804B274: .4byte gUnk_080015BC -_0804B278: .4byte gUnk_02034398 - - thumb_func_start sub_0804B27C -sub_0804B27C: @ 0x0804B27C - push {lr} - ldr r1, _0804B28C @ =gArea - ldrb r0, [r0, #1] - strb r0, [r1, #1] - bl sub_08054524 - pop {pc} - .align 2, 0 -_0804B28C: .4byte gArea - - thumb_func_start sub_0804B290 -sub_0804B290: @ 0x0804B290 - push {lr} - ldrb r0, [r0, #1] - bl SetLocalFlag - pop {pc} - .align 2, 0 - - thumb_func_start sub_0804B29C -sub_0804B29C: @ 0x0804B29C - push {r4, lr} - adds r2, r0, #0 - ldr r4, _0804B2EC @ =gSmallChests - movs r1, #0 -_0804B2A4: - ldrh r0, [r4, #4] - cmp r0, #0 - bne _0804B2F4 - adds r0, r2, #0 - adds r1, r4, #0 - movs r2, #8 - bl MemCopy - ldrb r1, [r4, #6] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0804B2FC - ldr r0, _0804B2F0 @ =gRoomControls - ldrb r1, [r0, #0xf] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0804B2FC - ldrb r0, [r4, #1] - bl CheckLocalFlag - cmp r0, #0 - bne _0804B2FC - ldrb r1, [r4, #1] - movs r0, #0x52 - movs r2, #0 - bl CreateObject - cmp r0, #0 - beq _0804B2FC - ldrh r1, [r4, #4] - bl sub_0806F704 - b _0804B2FC - .align 2, 0 -_0804B2EC: .4byte gSmallChests -_0804B2F0: .4byte gRoomControls -_0804B2F4: - adds r1, #1 - adds r4, #8 - cmp r1, #7 - bls _0804B2A4 -_0804B2FC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0804B300 -sub_0804B300: @ 0x0804B300 - push {r4, lr} - adds r4, r0, #0 - bl GetEmptyManager - adds r1, r0, #0 - cmp r1, #0 - beq _0804B332 - movs r0, #9 - strb r0, [r1, #8] - movs r0, #0x24 - strb r0, [r1, #9] - ldrh r0, [r4, #4] - strh r0, [r1, #0x38] - ldrh r0, [r4, #6] - strh r0, [r1, #0x3a] - ldrb r0, [r4, #2] - adds r2, r1, #0 - adds r2, #0x35 - strb r0, [r2] - ldrb r0, [r4, #1] - strh r0, [r1, #0x3e] - adds r0, r1, #0 - movs r1, #6 - bl AppendEntityToList -_0804B332: - pop {r4, pc} - - thumb_func_start sub_0804B334 -sub_0804B334: @ 0x0804B334 - push {lr} - ldrb r0, [r0, #3] - movs r1, #1 - bl sub_0805BB00 - pop {pc} - - thumb_func_start sub_0804B340 -sub_0804B340: @ 0x0804B340 - push {r4, lr} - adds r4, r0, #0 - ldrh r0, [r4, #2] - bl CheckLocalFlag - cmp r0, #0 - beq _0804B35A - ldrh r0, [r4, #6] - ldrh r1, [r4, #4] - ldrb r2, [r4, #1] - bl SetTileType - b _0804B380 -_0804B35A: - ldr r1, _0804B384 @ =gRoomVars - ldrb r0, [r1, #1] - cmp r0, #0 - bne _0804B380 - movs r0, #1 - strb r0, [r1, #1] - bl GetEmptyManager - adds r1, r0, #0 - cmp r1, #0 - beq _0804B380 - movs r0, #9 - strb r0, [r1, #8] - movs r0, #0x2a - strb r0, [r1, #9] - adds r0, r1, #0 - movs r1, #6 - bl AppendEntityToList -_0804B380: - pop {r4, pc} - .align 2, 0 -_0804B384: .4byte gRoomVars - - thumb_func_start sub_0804B388 -sub_0804B388: @ 0x0804B388 - push {r4, r5, lr} - adds r5, r0, #0 - adds r4, r1, #0 - movs r0, #0x34 - cmp r4, #1 - bne _0804B396 - movs r0, #0x26 -_0804B396: - adds r1, r5, #0 - adds r2, r4, #0 - bl SetTileType - movs r0, #0xf - movs r1, #2 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _0804B3BA - adds r0, #0x38 - strb r4, [r0] - adds r0, r1, #0 - adds r1, r5, #0 - bl sub_0806F704 -_0804B3BA: - movs r0, #1 - rsbs r0, r0, #0 - bl sub_080526F8 - pop {r4, r5, pc} diff --git a/asm/code_08050038.s b/asm/code_08050038.s deleted file mode 100644 index 9e01870f..00000000 --- a/asm/code_08050038.s +++ /dev/null @@ -1,252 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start UpdateFade -UpdateFade: @ 0x08050154 - push {r4, r5, r6, lr} - ldr r4, _08050180 @ =gFadeControl - ldrh r0, [r4, #8] - movs r5, #0x1c - ands r5, r0 - movs r6, #0 - ldrb r0, [r4] - cmp r0, #0 - beq _080501BE - ldrh r0, [r4, #0xc] - ldrh r1, [r4, #0xa] - subs r0, r0, r1 - strh r0, [r4, #0xc] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - ldrh r2, [r4, #0xe] - movs r3, #0xe - ldrsh r1, [r4, r3] - cmp r0, r1 - bgt _080501B8 - strh r2, [r4, #0xc] - b _080501B8 - .align 2, 0 -_08050180: .4byte gFadeControl -_08050184: - mvns r0, r5 - adds r0, #1 - ands r0, r5 - eors r5, r0 - cmp r0, #8 - beq _080501A8 - cmp r0, #8 - bhi _0805019A - cmp r0, #4 - beq _080501A0 - b _080501B8 -_0805019A: - cmp r0, #0x10 - beq _080501B0 - b _080501B8 -_080501A0: - adds r0, r4, #0 - bl sub_080501C0 - b _080501B6 -_080501A8: - adds r0, r4, #0 - bl sub_08050230 - b _080501B6 -_080501B0: - adds r0, r4, #0 - bl sub_080502A4 -_080501B6: - orrs r6, r0 -_080501B8: - cmp r5, #0 - bne _08050184 - strb r6, [r4] -_080501BE: - pop {r4, r5, r6, pc} - - thumb_func_start sub_080501C0 -sub_080501C0: @ 0x080501C0 - push {r4, r5, r6, r7, lr} - adds r3, r0, #0 - ldrh r1, [r3, #8] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080501DA - movs r0, #0xc - ldrsh r1, [r3, r0] - movs r0, #0x80 - lsls r0, r0, #1 - subs r5, r0, r1 - b _080501DE -_080501DA: - movs r2, #0xc - ldrsh r5, [r3, r2] -_080501DE: - ldr r0, _080501F8 @ =gFadeControl - ldr r2, [r0, #4] - ldr r1, _080501FC @ =gUnk_020354C0 - movs r4, #0 - ldr r7, _08050200 @ =gUsedPalettes - movs r6, #1 -_080501EA: - adds r0, r2, #0 - ands r0, r6 - cmp r0, #0 - beq _08050204 - strb r6, [r1] - strh r5, [r1, #2] - b _08050208 - .align 2, 0 -_080501F8: .4byte gFadeControl -_080501FC: .4byte gUnk_020354C0 -_08050200: .4byte gUsedPalettes -_08050204: - strb r0, [r1] - strh r0, [r1, #2] -_08050208: - ldrb r0, [r3, #2] - strb r0, [r1, #1] - lsrs r2, r2, #1 - adds r4, #1 - adds r1, #4 - cmp r4, #0x1f - bls _080501EA - movs r0, #1 - rsbs r0, r0, #0 - str r0, [r7] - movs r0, #0xe - ldrsh r1, [r3, r0] - movs r2, #0xc - ldrsh r0, [r3, r2] - eors r1, r0 - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r0, r0, #0x1f - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08050230 -sub_08050230: @ 0x08050230 - push {r4, r5, lr} - ldrh r4, [r0, #8] - ldrh r0, [r0, #0xc] - lsls r5, r0, #0x10 - asrs r2, r5, #0x14 - movs r0, #0xf - ands r2, r0 - movs r0, #1 - ands r4, r0 - cmp r4, #0 - beq _0805024A - movs r0, #0xf - subs r2, r0, r2 -_0805024A: - ldr r3, _08050264 @ =gScreen - ldr r1, _08050268 @ =gUnk_080FC3C4 - lsls r0, r2, #1 - adds r0, r0, r1 - ldrh r1, [r0] - adds r0, r3, #0 - adds r0, #0x64 - strh r1, [r0] - cmp r5, #0 - beq _0805026C - movs r0, #1 - b _08050298 - .align 2, 0 -_08050264: .4byte gScreen -_08050268: .4byte gUnk_080FC3C4 -_0805026C: - ldr r1, _0805029C @ =gUnk_03000000 - movs r0, #0 - strb r0, [r1, #2] - cmp r4, #0 - bne _08050296 - ldrh r2, [r3, #8] - ldr r1, _080502A0 @ =0x0000FFBF - adds r0, r1, #0 - ands r0, r2 - strh r0, [r3, #8] - ldrh r2, [r3, #0x14] - adds r0, r1, #0 - ands r0, r2 - strh r0, [r3, #0x14] - ldrh r2, [r3, #0x20] - adds r0, r1, #0 - ands r0, r2 - strh r0, [r3, #0x20] - ldrh r0, [r3, #0x2c] - ands r1, r0 - strh r1, [r3, #0x2c] -_08050296: - movs r0, #0 -_08050298: - pop {r4, r5, pc} - .align 2, 0 -_0805029C: .4byte gUnk_03000000 -_080502A0: .4byte 0x0000FFBF - - thumb_func_start sub_080502A4 -sub_080502A4: @ 0x080502A4 - push {r4, lr} - ldrh r1, [r0, #8] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080502E4 - ldr r4, _080502E0 @ =gFadeControl - ldrh r0, [r4, #0x10] - ldrh r1, [r4, #0xa] - subs r0, r0, r1 - strh r0, [r4, #0x10] - lsls r0, r0, #0x10 - cmp r0, #0 - bgt _080502C4 - movs r0, #0 - strh r0, [r4, #0x10] -_080502C4: - movs r1, #0x12 - ldrsh r0, [r4, r1] - movs r2, #0x14 - ldrsh r1, [r4, r2] - movs r3, #0x10 - ldrsh r2, [r4, r3] - bl sub_0801E1EC - movs r1, #0x10 - ldrsh r0, [r4, r1] - cmp r0, #0 - bne _08050314 - movs r0, #0 - b _08050316 - .align 2, 0 -_080502E0: .4byte gFadeControl -_080502E4: - ldr r4, _08050310 @ =gFadeControl - ldrh r0, [r4, #0xa] - ldrh r2, [r4, #0x10] - adds r0, r0, r2 - strh r0, [r4, #0x10] - movs r3, #0x12 - ldrsh r0, [r4, r3] - movs r2, #0x14 - ldrsh r1, [r4, r2] - movs r3, #0x10 - ldrsh r2, [r4, r3] - bl sub_0801E1EC - movs r1, #0x10 - ldrsh r0, [r4, r1] - cmp r0, #0x96 - ble _08050314 - bl sub_0801E104 - movs r0, #0 - b _08050316 - .align 2, 0 -_08050310: .4byte gFadeControl -_08050314: - movs r0, #1 -_08050316: - pop {r4, pc} diff --git a/asm/code_080526F8.s b/asm/code_080526F8.s index db0707fb..402a840e 100644 --- a/asm/code_080526F8.s +++ b/asm/code_080526F8.s @@ -510,7 +510,7 @@ sub_08053974: @ 0x08053974 ldrb r0, [r0] cmp r0, #0 bne _080539A8 - bl sub_0804FFE4 + bl InitFade movs r0, #1 bl DispReset bl sub_080197AC 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_080A5574.s b/asm/code_080A5574.s index 60c6ca18..ccc08052 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -4948,7 +4948,7 @@ sub_080A7328: @ 0x080A7328 movs r0, #1 bl DispReset bl MessageInitialize - bl sub_080ADD30 + bl ResetPalettes movs r0, #0 bl sub_0801CFA8 ldr r0, _080A739C @ =gGFXSlots diff --git a/asm/code_080ADD30.s b/asm/code_080ADD30.s index f4c1ec86..ed420750 100644 --- a/asm/code_080ADD30.s +++ b/asm/code_080ADD30.s @@ -8,8 +8,8 @@ - thumb_func_start sub_080ADD30 -sub_080ADD30: @ 0x080ADD30 + thumb_func_start ResetPalettes +ResetPalettes: @ 0x080ADD30 push {r4, r5, r6, lr} ldr r4, _080ADD6C @ =gGFXSlots movs r1, #0x85 diff --git a/asm/fileScreen.s b/asm/fileScreen.s index 50f5a585..94944122 100755 --- a/asm/fileScreen.s +++ b/asm/fileScreen.s @@ -125,7 +125,7 @@ sub_08051A14: @ 0x08051A14 bl EraseAllEntities bl sub_080197AC bl sub_08080668 - bl sub_080ADD30 + bl ResetPalettes movs r0, #1 bl sub_0801CFA8 bl sub_0806FD8C 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/asm/object3D.s b/asm/object3D.s index 1fe40be6..3a81976a 100644 --- a/asm/object3D.s +++ b/asm/object3D.s @@ -89,7 +89,7 @@ _0808CF82: bl sub_0808D030 movs r0, #0 bl sub_0801CFA8 - bl sub_080ADD30 + bl ResetPalettes ldr r0, _0808D024 @ =gGFXSlots movs r6, #1 strb r6, [r0] diff --git a/assets/sounds.json b/assets/sounds.json index 1b348d4e..e5769e56 100644 --- a/assets/sounds.json +++ b/assets/sounds.json @@ -3026,7 +3026,7 @@ "size": 28 }, { - "path": "sounds/sfx11B.bin", + "path": "sounds/sfxChestOpen.bin", "start": 14558640, "type": "midi", "options": { diff --git a/constants/audio_constants.inc b/constants/audio_constants.inc index 07cb901e..94589a41 100644 --- a/constants/audio_constants.inc +++ b/constants/audio_constants.inc @@ -281,7 +281,7 @@ .equiv SFX_ITEM_SHIELD_BOUNCE, 0x118 .equiv SFX_ITEM_GLOVES_KNOCKBACK, 0x119 .equiv SFX_EM_ARMOS_ON, 0x11a - .equiv SFX_11B, 0x11b + .equiv SFX_CHEST_OPEN, 0x11b .equiv SFX_11C, 0x11c .equiv SFX_11D, 0x11d .equiv SFX_EM_MOBLIN_SPEAR, 0x11e diff --git a/data/sound/sounds.s b/data/sound/sounds.s index a2a6df41..fb2a0819 100644 --- a/data/sound/sounds.s +++ b/data/sound/sounds.s @@ -247,7 +247,7 @@ .include "sounds/sfxItemShieldBounce.s" .include "sounds/sfxItemGlovesKnockback.s" .include "sounds/sfxEmArmosOn.s" - .include "sounds/sfx11B.s" + .include "sounds/sfxChestOpen.s" .include "sounds/sfx11C.s" .include "sounds/sfx11D.s" .include "sounds/sfxEmMoblinSpear.s" diff --git a/include/arm_proxy.h b/include/arm_proxy.h index c07a649e..9364ebf0 100644 --- a/include/arm_proxy.h +++ b/include/arm_proxy.h @@ -1,6 +1,6 @@ #ifndef ARM_PROXY_H #define ARM_PROXY_H -extern void PrepNextFrame(void); +extern void WaitForNextFrame(void); #endif diff --git a/include/audio.h b/include/audio.h index 99ccf298..2add23dd 100644 --- a/include/audio.h +++ b/include/audio.h @@ -291,7 +291,7 @@ typedef enum { SFX_ITEM_SHIELD_BOUNCE, SFX_ITEM_GLOVES_KNOCKBACK, SFX_EM_ARMOS_ON, - SFX_11B, + SFX_CHEST_OPEN, SFX_11C, SFX_11D, SFX_EM_MOBLIN_SPEAR, @@ -593,6 +593,6 @@ extern SoundPlayingInfo gSoundPlayingInfo; void InitSound(void); void SoundReq(Sound sound); -void SoundLoop(void); +void AudioMain(void); #endif // AUDIO_H diff --git a/include/functions.h b/include/functions.h index 25a9243f..293f7e20 100644 --- a/include/functions.h +++ b/include/functions.h @@ -49,7 +49,6 @@ extern u32 GetSaleItemConfirmMessageID(u32); extern void FlushSprites(void); extern void DispReset(u32); extern void InitSoundPlayingInfo(void); -extern void InitDMA(void); extern Entity* CreateProjectile(u32); extern void RegisterPlayerHitbox(); extern s32 GetItemPrice(); @@ -107,7 +106,6 @@ extern void sub_080AD9B0(void); extern void sub_080AD918(void); extern void sub_0801E104(void); extern void sub_080A57F4(void); -extern void sub_0804B29C(void*); extern void sub_08030118(u32); extern void sub_080575C8(u32); extern void sub_08057688(void); @@ -278,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*); @@ -295,4 +293,6 @@ extern void sub_0801855C(void); extern u32 sub_0807CAEC(u32); extern void sub_0807CAC8(u32); extern void LoadObjPalette(Entity*, u32); + +void sub_0804B3C4(void*); #endif diff --git a/include/item.h b/include/item.h index 7c36eb15..b47066da 100644 --- a/include/item.h +++ b/include/item.h @@ -21,128 +21,125 @@ extern void ItemOcarina(ItemBehavior*, u32); extern void ItemTryPickupObject(ItemBehavior*, u32); extern void ItemJarEmpty(ItemBehavior*, u32); -/* On hold until naming conflicts are resolved */ -/* - enum - { - Untyped, - SmithSword = 0x01, - GreenSword = 0x02, - RedSword = 0x03, - BlueSword = 0x04, - // UnusedSword = 0x05, - FourSword = 0x06, - Bombs = 0x07, - RemoteBombs = 0x08, - Bow = 0x09, - LightArrow = 0x0A, - Boomerang = 0x0B, - MagicBoomerang = 0x0C, - Shield = 0x0D, - MirrorShield = 0x0E, - LanternOff = 0x0F, +enum { + ITEM_NONE, + ITEM_SMITH_SWORD, + ITEM_GREEN_SWORD, + ITEM_RED_SWORD, + ITEM_BLUE_SWORD, + ITEM_UNUSED_SWORD, + ITEM_FOURSWORD, + ITEM_BOMBS, + ITEM_REMOTE_BOMBS, + ITEM_BOW, + ITEM_LIGHT_ARROW, + ITEM_BOOMERANG, + ITEM_MAGIC_BOOMERANG, + ITEM_SHIELD, + ITEM_MIRROR_SHIELD, + ITEM_LANTERN_OFF, + ITEM_LANTERN_ON, + ITEM_GUST_JAR, + ITEM_PACCI_CANE, + ITEM_MOLE_MITTS, + ITEM_ROCS_CAPE, + ITEM_PEGASUS_BOOTS, + ITEM_FIRE_ROD, + ITEM_OCARINA, + ITEM_ORB_GREEN, + ITEM_ORB_BLUE, + ITEM_ORB_RED, + ITEM_TRAP, + ITEM_BOTTLE1, + ITEM_BOTTLE2, + ITEM_BOTTLE3, + ITEM_BOTTLE4, + ITEM_BOTTLE_EMPTY, + ITEM_BOTTLE_BUTTER, + ITEM_BOTTLE_MILK, + ITEM_BOTTLE_HALF_MILK, + ITEM_BOTTLE_RED_POTION, + ITEM_BOTTLE_BLUE_POTION, + ITEM_BOTTLE_WATER, + ITEM_BOTTLE_MINERAL_WATER, + ITEM_BOTTLE_FAIRY, + ITEM_BOTTLE_PICOLYTE_RED, + ITEM_BOTTLE_PICOLYTE_ORANGE, + ITEM_BOTTLE_PICOLYTE_YELLOW, + ITEM_BOTTLE_PICOLYTE_GREEN, + ITEM_BOTTLE_PICOLYTE_BLUE, + ITEM_BOTTLE_PICOLYTE_WHITE, + BOTTLE_CHARM_NAYRU, + BOTTLE_CHARM_FARORE, + BOTTLE_CHARM_DIN, + ITEM_32, + ITEM_33, + ITEM_QST_SWORD, + ITEM_QST_BROKEN_SWORD, + ITEM_QST_DOGFOOD, + ITEM_QST_LONLON_KEY, + ITEM_QST_MUSHROOM, + ITEM_QST_BOOK1, + ITEM_QST_BOOK2, + ITEM_QST_BOOK3, + ITEM_QST_GRAVEYARD_KEY, + ITEM_QST_TINGLE_TROPHY, + ITEM_QST_CARLOV_MEDAL, + ITEM_SHELLS, + ITEM_EARTH_ELEMENT, + ITEM_FIRE_ELEMENT, + ITEM_WATER_ELEMENT, + ITEM_WIND_ELEMENT, + ITEM_GRIP_RING, + ITEM_POWER_BRACELETS, + ITEM_FLIPPERS, + ITEM_MAP, + ITEM_SKILL_SPIN_ATTACK, + ITEM_SKILL_ROLL_ATTACK, + ITEM_SKILL_DASH_ATTACK, + ITEM_SKILL_ROCK_BREAKER, + ITEM_SKILL_SWORD_BEAM, + ITEM_SKILL_GREAT_SPIN, + ITEM_SKILL_DOWN_THRUST, + ITEM_SKILL_PERIL_BEAM, + ITEM_DUNGEON_MAP, + ITEM_COMPASS, + ITEM_BIG_KEY, + ITEM_SMALL_KEY, + ITEM_RUPEE1, + ITEM_RUPEE5, + ITEM_RUPEE20, + ITEM_RUPEE50, + ITEM_RUPEE100, + ITEM_RUPEE200, + ITEM_5A, + ITEM_JABBERNUT, + ITEM_KINSTONE, + ITEM_BOMBS5, + ITEM_ARROWS5, + ITEM_HEART, + ITEM_FAIRY, + ITEM_SHELLS30, + ITEM_HEART_CONTAINER, + ITEM_HEART_PIECE, + ITEM_WALLET, + ITEM_BOMBBAG, + ITEM_LARGE_QUIVER, + ITEM_KINSTONE_BAG, + ITEM_BRIOCHE, + ITEM_CROISSANT, + ITEM_PIE, + ITEM_CAKE, + ITEM_BOMBS10, + ITEM_BOMBS30, + ITEM_ARROWS10, + ITEM_ARROWS30, + ITEM_ARROW_BUTTERFLY, + ITEM_DIG_BUTTERFLY, + ITEM_SWIM_BUTTERFLY, + ITEM_SKILL_FAST_SPIN, + ITEM_SKILL_FAST_SPLIT, + ITEM_SKILL_LONG_SPIN, +}; - GustJar = 0x11, - PacciCane = 0x12, - MoleMitts = 0x13, - RocsCape = 0x14, - PegasusBoots = 0x15, - FireRod = 0x16, - Ocarina = 0x17, - GreenOrb = 0x18, - BlueOrb = 0x19, - RedOrb = 0x1A, - Trap = 0x1B, - Bottle1 = 0x1C, - Bottle2 = 0x1D, - Bottle3 = 0x1E, - Bottle4 = 0x1F, - BottleEmpty = 0x20, - BottleButter = 0x21, - BottleMilk = 0x22, - BottleHalfMilk = 0x23, - BottleRedPotion = 0x24, - BottleBluePotion = 0x25, - BottleWater = 0x26, - BottleMineralWater = 0x27, - BottleFairy = 0x28, - BottlePicolyteRed = 0x29, - BottlePicolyteOrange = 0x2A, - BottlePicolyteYellow = 0x2B, - BottlePiclolyteGreen = 0x2C, - BottlePicolyteBlue = 0x2D, - BottlePicolyteWhite = 0x2E, - BottleCharmNayru = 0x2F, - BottleCharmFarore = 0x30, - BottleCharmDin = 0x31, - - - SmithSwordQuest = 0x34, - BrokenPicoriBlade = 0x35, - DogFoodBottle = 0x36, - LonLonKey = 0x37, - WakeUpMushroom = 0x38, - HyruleanBestiary = 0x39, - PicoriLegend = 0x3A, - MaskHistory = 0x3B, - GraveyardKey = 0x3C, - TingleTrophy = 0x3D, - CarlovMedal = 0x3E, - ShellsX = 0x3F, - EarthElement = 0x40, - FireElement = 0x41, - WaterElement = 0x42, - WindElement = 0x43, - GripRing = 0x44, - PowerBracelets = 0x45, - Flippers = 0x46, - HyruleMap = 0x47, - SpinAttack = 0x48, - RollAttack = 0x49, - DashAttack = 0x4A, - RockBreaker = 0x4B, - SwordBeam = 0x4C, - GreatSpin = 0x4D, - DownThrust = 0x4E, - PerilBeam = 0x4F, - DungeonMap = 0x50, - Compass = 0x51, - BigKey = 0x52, - SmallKey = 0x53, - Rupee1 = 0x54, - Rupee5 = 0x55, - Rupee20 = 0x56, - Rupee50 = 0x57, - Rupee100 = 0x58, - Rupee200 = 0x59, - - JabberNut = 0x5B, - KinstoneX = 0x5C, - Bombs5 = 0x5D, - Arrows5 = 0x5E, - SmallHeart = 0x5F, - Fairy = 0x60, - Shells30 = 0x61, - HeartContainer = 0x62, - PieceOfHeart = 0x63, - Wallet = 0x64, - BombBag = 0x65, - LargeQuiver = 0x66, - KinstoneBag = 0x67, - Brioche = 0x68, - Croissant = 0x69, - PieSlice = 0x6A, - CakeSlice = 0x6B, - Bombs10 = 0x6C, - Bombs30 = 0x6D, - Arrows10 = 0x6E, - Arrows30 = 0x6F, - ArrowButterfly = 0x70, - DigButterfly = 0x71, - SwimButterfly = 0x72, - FastSpin = 0x73, - FastSplit = 0x74, - LongSpin = 0x75 - } ItemType; -*/ #endif diff --git a/include/main.h b/include/main.h index 5721b22d..c9675bfe 100644 --- a/include/main.h +++ b/include/main.h @@ -47,18 +47,23 @@ enum { SCREEN_DEBUG_TEXT, }; +enum { + DEFAULT, + SLEEP, +}; + typedef struct { vu8 interruptFlag; - u8 field_0x1; + u8 sleepStatus; u8 screen; u8 funcIndex; u8 transition; u8 field_0x5; u8 muteAudio; u8 field_0x7; - u8 countdown; - u8 field_0x9; - u8 field_0xa; + u8 pauseFrames; + u8 pauseCount; + u8 pauseInterval; u16 ticks; } Main; @@ -84,18 +89,20 @@ extern UI gUnk_02032EC0; */ void InitScreen(u32 screen); +void InitDMA(void); + extern void sub_08056208(void); -extern void sub_0804FFE4(void); -extern void sub_080ADD30(void); +extern void InitFade(void); +extern void ResetPalettes(void); extern void DoSoftReset(void); -extern void sub_08056260(void); +extern void SetSleepMode(void); extern void VBlankIntrWait(); -extern void UpdateFade(void); +extern void FadeMain(void); extern u8 gUnk_03003DE4; -extern void sub_0804FF84(u32); +extern void SetBrightness(u32); extern u16 gPaletteBuffer[]; extern void VBlankInterruptWait(void); extern void DisableInterruptsAndDMA(void); diff --git a/include/manager.h b/include/manager.h index d3b34bba..013678b2 100644 --- a/include/manager.h +++ b/include/manager.h @@ -149,6 +149,18 @@ extern struct { extern DiggingCaveEntrance* diggingCaveEntrances[]; +typedef struct { + Manager manager; + u8 field_0x20[0x15]; + u8 field_0x35; + u8 field_0x36; + u8 field_0x37; + s16 x; + u16 y; + u16 tile; + u16 field_0x3e; +} Manager24; + typedef struct { u8 unk_00; u8 unk_01; diff --git a/include/room.h b/include/room.h index 777e6cea..fb706547 100644 --- a/include/room.h +++ b/include/room.h @@ -74,7 +74,8 @@ typedef struct { u8 filler4[48]; u8 filler5[28]; u32 animFlags; - void* field_0x6c[24]; + void* field_0x6c[8]; + void* field_0x8c[16]; } RoomVars; static_assert(sizeof(RoomVars) == 0xCC); extern RoomVars gRoomVars; @@ -142,6 +143,34 @@ 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 gSmallChests[8]; + +typedef enum { + NONE, + ROOM_VISIT_MARKER, + SMALL_CHEST, + BIG_CHEST, + BOMBABLE_WALL, + SIGN, + TILE_ENTITY_6, + MUSIC_SETTER, + TILE_ENTITY_8, + DARKNESS, + DESTRUCTIBLE_TILE, + GRASS_DROP_CHANGER, + LOCATION_CHANGER, + TILE_ENTITY_D +} TileEntityType; + 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/include/structures.h b/include/structures.h index 82b39a5c..2073f1b0 100644 --- a/include/structures.h +++ b/include/structures.h @@ -157,30 +157,4 @@ typedef struct { void* unk8; } WStruct; -typedef struct { - u8 type; - u8 unk_0x1; - u8 unk_0x2; - u8 unk_0x3; - u16 tilePos; - u16 unk_0x6; -} TileEntityData; - -typedef enum { - NONE, - ROOM_VISIT_MARKER, - SMALL_CHEST, - BIG_CHEST, - BOMBABLE_WALL, - SIGN, - TILE_ENTITY_6, - MUSIC_SETTER, - TILE_ENTITY_8, - DARKNESS, - DESTRUCTIBLE_TILE, - GRASS_DROP_CHANGER, - TILE_ENTITY_C, - TILE_ENTITY_D -} TileEntityType; - #endif diff --git a/linker.ld b/linker.ld index 5859ee17..896a56fb 100644 --- a/linker.ld +++ b/linker.ld @@ -475,19 +475,15 @@ 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); src/code_0804AA84.o(.text); asm/code_0804AA84.o(.text); - src/loadRoom.o(.text); - asm/code_0804B058.o(.text); src/room.o(.text); - src/code_0804B9F8.o(.text); - src/sub_08050008.o(.text); + src/roomInit.o(.text); src/fade.o(.text); - asm/code_08050038.o(.text); src/fileScreen.o(.text); asm/fileScreen.o(.text); src/overworld.o(.text); @@ -654,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); @@ -905,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); @@ -919,8 +913,8 @@ SECTIONS { src/sub_080A554C.o(.text); asm/code_080A5574.o(.text); src/playerItem/playerItemSword.o(.text); - src/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/audio.c b/src/audio.c index 5889a0eb..1da1714a 100644 --- a/src/audio.c +++ b/src/audio.c @@ -143,7 +143,7 @@ void SoundReq(Sound sound) { } } -void SoundLoop(void) { +void AudioMain(void) { s32 fadeValue; SoundPlayingInfo* ptr = &gSoundPlayingInfo; @@ -478,7 +478,7 @@ extern const SongHeader sfx117; extern const SongHeader sfxItemShieldBounce; extern const SongHeader sfxItemGlovesKnockback; extern const SongHeader sfxEmArmosOn; -extern const SongHeader sfx11B; +extern const SongHeader sfxChestOpen; extern const SongHeader sfx11C; extern const SongHeader sfx11D; extern const SongHeader sfxEmMoblinSpear; @@ -1110,7 +1110,7 @@ const Song gSongTable[] = { [SFX_ITEM_SHIELD_BOUNCE] = { &sfxItemShieldBounce, MUSIC_PLAYER_07, MUSIC_PLAYER_07 }, [SFX_ITEM_GLOVES_KNOCKBACK] = { &sfxItemGlovesKnockback, MUSIC_PLAYER_14, MUSIC_PLAYER_14 }, [SFX_EM_ARMOS_ON] = { &sfxEmArmosOn, MUSIC_PLAYER_13, MUSIC_PLAYER_13 }, - [SFX_11B] = { &sfx11B, MUSIC_PLAYER_12, MUSIC_PLAYER_12 }, + [SFX_CHEST_OPEN] = { &sfxChestOpen, MUSIC_PLAYER_12, MUSIC_PLAYER_12 }, [SFX_11C] = { &sfx11C, MUSIC_PLAYER_11, MUSIC_PLAYER_11 }, [SFX_11D] = { &sfx11D, MUSIC_PLAYER_10, MUSIC_PLAYER_10 }, [SFX_EM_MOBLIN_SPEAR] = { &sfxEmMoblinSpear, MUSIC_PLAYER_0F, MUSIC_PLAYER_0F }, diff --git a/src/code_0804B9F8.c b/src/code_0804B9F8.c deleted file mode 100644 index 0c1937b3..00000000 --- a/src/code_0804B9F8.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "global.h" -#include "utils.h" -#include "fileScreen.h" - -extern u16 gPaletteBuffer[]; -extern u32 gUsedPalettes; - -// function pointer to overlay (0x03005e98) in ram calls rom function MakeFadeBuff256 -extern u32 gMakeFadeBuff256; -typedef void (*fptrMakeFadeBuff256)(u8*, u8*, u16, u8); - -void FadeMain() { - fptrMakeFadeBuff256 func; - u32 usedPalettesTmp, palIdx; - - struct_020354C0* ptrUnk = gUnk_020354C0; - usedPalettesTmp = gUsedPalettes; - gUsedPalettes = 0; - palIdx = 0; - - while (usedPalettesTmp != 0) { - if ((usedPalettesTmp & 1) == 1) { - func = (fptrMakeFadeBuff256)&gMakeFadeBuff256; - func(&((u8*)gPaletteBuffer)[palIdx], &PAL_RAM[palIdx], ptrUnk->unk2, ptrUnk->unk1); - } - palIdx += 0x20; - - ptrUnk++; - usedPalettesTmp /= 2; - } -} - -void sub_0804FFE4() { - MemClear(&gFadeControl, sizeof(gFadeControl)); - MemClear(&gUnk_020354C0, sizeof(gUnk_020354C0)); - gFadeControl.mask = 0xffffffff; -} diff --git a/src/code_080A7C00.c b/src/code_080A7C00.c deleted file mode 100644 index 4038ab33..00000000 --- a/src/code_080A7C00.c +++ /dev/null @@ -1,115 +0,0 @@ -#include "global.h" -#include "utils.h" -#include "textbox.h" -#include "save.h" -#include "audio.h" -#include "flags.h" -#include "functions.h" -#include "object.h" - -extern Entity* GiveItemWithCutscene(); -extern Entity* sub_080A276C(Entity*, u32, u32); -extern void sub_08078AF0(Entity*, u32, u32); -extern Entity* sub_0805E744(void); - -extern TileEntityData gSmallChests[8]; - -void sub_080A7D44(u32, bool32); - -void CreateItemEntity(u32 type, u32 type2, u32 actionDelay) { - Entity* entity = GiveItemWithCutscene(type, type2, actionDelay); - if (entity != NULL) { - Entity* new_entity = sub_080A276C(entity, entity->type, 0); - entity->parent = new_entity; - } -} - -void sub_080A7C18(u32 type, u32 type2, u32 actionDelay) { - Entity* entity = GiveItemWithCutscene(type, type2, actionDelay); - if (entity != NULL) { - entity->parent = &gPlayerEntity; - sub_08078AF0(entity, entity->type, 0); - } -} - -Entity* GiveItemWithCutscene(s32 type, u32 type2, u32 actionDelay) { - Entity* entity; - - if ((type == 0x3f) && (gSave.stats.filler3[0] != 0)) { - type = 0x57; - type2 = 0; - } - entity = sub_0805E744(); - if (entity != NULL) { - entity->type = type; - entity->type2 = type2; - entity->actionDelay = actionDelay; - entity->id = OBJECT_B; - entity->kind = OBJECT; - AppendEntityToList(entity, 6); - } - return entity; -} - -void ClearSmallChests(void) { - MemClear(&gSmallChests, sizeof(gSmallChests)); -} - -void sub_080A7C8C(u32 tilePos, u32 param_2) { - TileEntityData* data = gSmallChests; - bool32 found = FALSE; - u32 index; - for (index = 0; index < 8; data++) { - if (data->tilePos == tilePos) { - found = TRUE; - break; - } - index++; - } - if (param_2 >> 1 == ((u32)(*((u8*)&data->unk_0x6) << 0x1f) >> 0x1f)) { - if (found) { - SetLocalFlag(data->unk_0x1); - CreateItemEntity(data->unk_0x2, data->unk_0x3, 0); - } else { - CreateItemEntity(0x60, 0, 0); - } - sub_0807B7D8(0x74, tilePos, param_2); - RequestPriorityDuration(NULL, 0x78); - SoundReq(SFX_11B); - } -} - -void sub_080A7CFC(u32 tilePos) { - u32 messageId = 0x600; - bool32 isTileEntity6 = FALSE; - TileEntityData* data = (TileEntityData*)GetCurrentRoomProperty(3); - if (data != NULL) { - do { - if (data->tilePos == tilePos) { - switch (data->type) { - case SIGN: - isTileEntity6 = FALSE; - messageId = data->unk_0x6; // message id - break; - case TILE_ENTITY_6: - isTileEntity6 = TRUE; - messageId = data->unk_0x6; - break; - } - break; - } - data += 1; - } while (data->tilePos != 0); - } - sub_080A7D44(messageId, isTileEntity6); -} - -void sub_080A7D44(u32 messageId, bool32 isTileEntity6) { - if (isTileEntity6) { - // TILE_ENTITY_6 - sub_08078AA8(messageId, 0); - } else { - // Read sign text - MessageFromTarget(messageId); - } -} 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/demoScreen.c b/src/demoScreen.c index f2b3315a..b10bd35f 100644 --- a/src/demoScreen.c +++ b/src/demoScreen.c @@ -34,7 +34,7 @@ void sub_080A2E40(void) { MemClear((void*)VRAM, 0x80); MessageInitialize(); EraseAllEntities(); - sub_080ADD30(); + ResetPalettes(); sub_0801CFA8(0); MemClear(&gUnk_02032EC0, sizeof gUnk_02032EC0); MemClear(&gChooseFileState, sizeof gChooseFileState); 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/fade.c b/src/fade.c index f3d1447e..defbe187 100644 --- a/src/fade.c +++ b/src/fade.c @@ -1,20 +1,67 @@ #include "global.h" #include "functions.h" #include "screen.h" +#include "utils.h" typedef struct { u8 field_0x0; u8 field_0x1; u8 spritesOffset; } struct_03000000; - extern struct_03000000 gUnk_03000000; +static u32 sub_080501C0(FadeControl* ctl); +static u32 sub_08050230(FadeControl* ctl); +static u32 sub_080502A4(FadeControl* ctl); + extern u32 gUsedPalettes; +extern u16 gPaletteBuffer[]; +extern u16 gUnk_080FC3C4[]; + +// function pointer to overlay (0x03005e98) in ram calls rom function MakeFadeBuff256 +extern u32 gMakeFadeBuff256; +typedef void (*fptrMakeFadeBuff256)(u8*, u8*, u16, u8); + +void SetBrightness(u32 arg0) { + gSaveHeader->brightnessPref = arg0; + gUsedPalettes = 0xffffffff; +} + +void FadeVBlank(void) { + fptrMakeFadeBuff256 func; + u32 usedPalettesTmp, palIdx; + + struct_020354C0* ptrUnk = gUnk_020354C0; + usedPalettesTmp = gUsedPalettes; + gUsedPalettes = 0; + palIdx = 0; + + while (usedPalettesTmp != 0) { + if ((usedPalettesTmp & 1) == 1) { + func = (fptrMakeFadeBuff256)&gMakeFadeBuff256; + func(&((u8*)gPaletteBuffer)[palIdx], &PAL_RAM[palIdx], ptrUnk->unk2, ptrUnk->unk1); + } + palIdx += 0x20; + + ptrUnk++; + usedPalettesTmp >>= 1; + } +} + +void InitFade() { + MemClear(&gFadeControl, sizeof(gFadeControl)); + MemClear(&gUnk_020354C0, sizeof(gUnk_020354C0)); + gFadeControl.mask = 0xffffffff; +} + +void sub_08050008() { + MemClear(&gUnk_020354C0, sizeof(gUnk_020354C0)); + gFadeControl.mask = 0xFFFFFFFF; +} void sub_08050024() { sub_0801E104(); - DoFade(5, 0x80 << 1); + DoFade(5, 256); } void sub_08050038(u32 arg0) { @@ -31,22 +78,22 @@ void DoFade(u32 fadeType, u32 fadeSpeed) { gFadeControl.active = 1; gFadeControl.fadeDuration = 0x100; gFadeControl.field_0xe = 0; - if ((gFadeControl.fadeType & 2) != 0) { + if (gFadeControl.fadeType & 2) { gFadeControl.field_0x2 = 0xf8; } else { gFadeControl.field_0x2 = 0; } - if ((fadeType & 8) != 0) { + if (fadeType & 8) { gUnk_03000000.spritesOffset = 1; gScreen.bg1.control |= BGCNT_MOSAIC; gScreen.bg2.control |= BGCNT_MOSAIC; gScreen.bg3.control |= BGCNT_MOSAIC; } - if ((fadeType & 0x10) != 0) { + if (fadeType & 0x10) { sub_0801E1B8(gFadeControl.field_0x16, gFadeControl.field_0x18); sub_0801E1EC(gFadeControl.field_0x12, gFadeControl.field_0x14, gFadeControl.field_0x10); if ((fadeType & 1) == 0) { - gFadeControl.fadeType &= 0xfffb; + gFadeControl.fadeType &= ~4; sub_08050008(); gUsedPalettes = 0xffffffff; } @@ -72,3 +119,102 @@ void sub_08050110(u32 param_1, u32 param_2, u32 fadeType, u32 fadeSpeed) { gFadeControl.field_0x18 = 0; DoFade(fadeType, fadeSpeed); } + +void FadeMain(void) { + FadeControl* ctl = &gFadeControl; + u32 flags = ctl->fadeType & 0x1C; + u32 active = 0; + u32 bit; + + if (ctl->active) { + ctl->fadeDuration -= ctl->fadeSpeed; + if ((s16)ctl->fadeDuration <= (s16)ctl->field_0xe) + ctl->fadeDuration = ctl->field_0xe; + while (flags) { + bit = (~flags + 1) & flags; + flags ^= bit; + switch (bit) { + case 4: + active |= sub_080501C0(ctl); + break; + case 8: + active |= sub_08050230(ctl); + break; + case 16: + active |= sub_080502A4(ctl); + break; + } + } + ctl->active = active; + } +} + +static u32 sub_080501C0(FadeControl* ctl) { + u32 v1; + u32 v2; + struct_020354C0* v3; + u32 i; + + if (ctl->fadeType & 1) { + v1 = 256 - (s16)ctl->fadeDuration; + } else { + v1 = (s16)ctl->fadeDuration; + } + v2 = gFadeControl.mask; + v3 = gUnk_020354C0; + for (i = 0; i < 0x20; ++i, ++v3) { + if (v2 & 1) { + v3->unk0 = 1; + v3->unk2 = v1; + } else { + v3->unk0 = 0; + v3->unk2 = 0; + } + v3->unk1 = ctl->field_0x2; + v2 >>= 1; + } + gUsedPalettes = 0xffffffff; + + return !!((s16)ctl->field_0xe ^ (s16)ctl->fadeDuration); +} + +static u32 sub_08050230(FadeControl* ctl) { + u32 type = ctl->fadeType; + u32 idx = ((s16)ctl->fadeDuration >> 4) & 0xF; + if (type & 1) + idx = 0xF - idx; + gScreen.controls.mosaicSize = gUnk_080FC3C4[idx]; + if (ctl->fadeDuration != 0) + return 1; + + // fade is finished + gUnk_03000000.spritesOffset = 0; + if ((type & 1) == 0) { + // reset registers if fading in + gScreen.bg0.control &= ~BGCNT_MOSAIC; + gScreen.bg1.control &= ~BGCNT_MOSAIC; + gScreen.bg2.control &= ~BGCNT_MOSAIC; + gScreen.bg3.control &= ~BGCNT_MOSAIC; + } + return 0; +} + +static u32 sub_080502A4(FadeControl* ctl) { + if (ctl->fadeType & 1) { + s32 delta = (u16)gFadeControl.field_0x10 - gFadeControl.fadeSpeed; + gFadeControl.field_0x10 -= gFadeControl.fadeSpeed; + if (delta << 16 <= 0) + gFadeControl.field_0x10 = 0; + sub_0801E1EC(gFadeControl.field_0x12, gFadeControl.field_0x14, gFadeControl.field_0x10); + if (!gFadeControl.field_0x10) + return 0; + } else { + gFadeControl.field_0x10 += gFadeControl.fadeSpeed; + sub_0801E1EC(gFadeControl.field_0x12, gFadeControl.field_0x14, gFadeControl.field_0x10); + if (gFadeControl.field_0x10 > 150) { + sub_0801E104(); + return 0; + } + } + return 1; +} diff --git a/src/fileScreen.c b/src/fileScreen.c index 8a7fe482..8820f24f 100644 --- a/src/fileScreen.c +++ b/src/fileScreen.c @@ -197,7 +197,7 @@ static void HandleFileScreenEnter(void) { MessageInitialize(); EraseAllEntities(); sub_08080668(); - sub_080ADD30(); + ResetPalettes(); sub_0801CFA8(0); MemClear(&gUnk_0200AF00, sizeof(gUnk_0200AF00)); MemClear(&gUnk_02019EE0, sizeof(gUnk_02019EE0)); diff --git a/src/interrupts.c b/src/interrupts.c index 8a44a61b..f7252e64 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -29,7 +29,7 @@ extern void sub_080ADD70(); extern void sub_0801C25C(); extern void UpdateDisplayControls(); extern void LoadResources(); -extern void FadeMain(); +extern void FadeVBlank(); extern void HandlePlayerLife(); extern void DoPlayerAction(); extern void sub_080171F0(); @@ -156,7 +156,7 @@ void LoadResources(void) { } } -void PrepNextFrame(void) { +void WaitForNextFrame(void) { gMain.interruptFlag = 0; VBlankIntrWait(); do { @@ -176,7 +176,7 @@ void PrepNextFrame(void) { if (gUnk_0200B650 != NULL) DmaCopy32(3, &gBG2Buffer, VRAM + (*gUnk_0200B650 & 0x1f00) * 8, 0x5C0); } - FadeMain(); + FadeVBlank(); } void PlayerUpdate(Entity* this) { diff --git a/src/intro.c b/src/intro.c index 4a563487..3095dcb9 100644 --- a/src/intro.c +++ b/src/intro.c @@ -145,7 +145,7 @@ static void HandleTitlescreen(void) { gIntroState.gameLanguage = 7; EraseAllEntities(); sub_0801CFA8(0); - sub_080ADD30(); + ResetPalettes(); gGFXSlots.unk0 = 1; LoadGfxGroup(2); if (gSaveHeader->gameLanguage == 0) { diff --git a/src/loadRoom.c b/src/loadRoom.c deleted file mode 100644 index 6714f00c..00000000 --- a/src/loadRoom.c +++ /dev/null @@ -1,222 +0,0 @@ -#include "global.h" -#include "area.h" -#include "room.h" -#include "flags.h" -#include "functions.h" -#include "utils.h" - -extern void sub_0804B058(EntityData* dat); -extern void sub_0801AC98(); -extern u32 sub_08049D1C(u32); -extern Entity* LoadRoomEntity(EntityData*); -extern void* GetRoomProperty(u32, u32, u32); - -extern void** gCurrentRoomProperties; -extern void*** gAreaTable[]; -extern u8 gUnk_081091E4[]; - -extern void sub_080186EC(); -extern void sub_0804B16C(); -extern void ClearSmallChests(void); -extern Entity* GetEmptyEntityByKind(u32 kind); - -void RegisterRoomEntity(Entity*, EntityData*); -void sub_0804AF0C(Entity*, EntityData*); -void sub_0804AFB0(void** properties); - -void LoadRoomEntityList(EntityData* listPtr) { - if (listPtr != NULL) { - while (listPtr->kind != 0xFF) { - LoadRoomEntity(listPtr++); - } - } -} - -NONMATCH("asm/loadRoomEntity.s", Entity* LoadRoomEntity(EntityData* dat)) { - int kind; - Entity* v4; - Entity* v5; - - kind = dat->kind & 0xF; - if ((dat->flags & 0xF0) == 0x50 && DeepFindEntityByID(kind, dat->id)) - return NULL; - v4 = GetEmptyEntityByKind(kind); - v5 = v4; - if (v4 != NULL) { - v4->kind = kind; - v4->id = dat->id; - v4->type = dat->type; - RegisterRoomEntity(v4, dat); - if ((dat->flags & 0xF0) != 16) { - v5->type2 = dat->type2; - v5->actionDelay = (dat->type2 & 0xFF00) >> 8; - if (kind == 9) - return v5; - sub_0804AF0C(v5, dat); - if (!v5->next) - return v5; - if ((dat->kind & 0x10) == 0) { - if ((dat->kind & 0x20) != 0) { - v5->collisionLayer = 2; - return v5; - } - if ((gRoomControls.unk6 & 2) == 0) { - sub_08016A30(v5); - } - } - v5->collisionLayer = 1; - } - } - return v5; -} -END_NONMATCH - -void RegisterRoomEntity(Entity* ent, EntityData* dat) { - u32 list; - u32 kind; - void* offset; - - list = dat->flags & 0xF; - kind = dat->kind & 0xF; - if (ent->prev == NULL) { - if (list == 0xF) { - AppendEntityToList(ent, gUnk_081091E4[kind]); - } else if (list == 8) { - AppendEntityToList(ent, 8); - } else { - AppendEntityToList(ent, list); - } - } - offset = &ent->field_0x78; - if (kind == MANAGER) - offset = &ent->y; - MemCopy(dat, offset, sizeof(EntityData)); -} - -void sub_0804AF0C(Entity* ent, EntityData* dat) { - switch (dat->flags & 0xf0) { - case 0x0: - ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX; - ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY; - break; - case 0x20: - ent->field_0x6c.HALF.HI |= 0x20; - ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX; - ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY; - break; - case 0x40: - ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX; - ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY; - if (!StartCutscene(ent, (u16*)dat->spritePtr)) - DeleteEntity(ent); - break; - } -} - -void sub_0804AF90(void) { - sub_0804AFB0(gArea.pCurrentRoomInfo->properties); - ClearSmallChests(); -} - -void sub_0804AFB0(void** properties) { - u32 i; - - gCurrentRoomProperties = properties; - for (i = 0; i < 8; ++i) { - gRoomVars.field_0x6c[i] = gCurrentRoomProperties[i]; - } -} - -u32 sub_0804AFDC() { - u32 result; - u32 (*func)(); - - result = 1; - func = (u32(*)())GetCurrentRoomProperty(6); - if (func != NULL) - result = func(); - return result; -} - -void sub_0804AFF4(void) { - void (*func)(); - - sub_080186EC(); - func = (void (*)())GetCurrentRoomProperty(5); - if (func) { - func(); - } - func = (void (*)())GetCurrentRoomProperty(7); - if (func) { - func(); - } - sub_0804B16C(); -} - -void LoadRoom(void) { - LoadRoomEntityList(GetCurrentRoomProperty(1)); - LoadRoomEntityList(GetCurrentRoomProperty(0)); - - if (CheckGlobalFlag(TABIDACHI)) - sub_0804B058(GetCurrentRoomProperty(2)); - - LoadRoomTileEntities(GetCurrentRoomProperty(3)); - sub_0801AC98(); -} - -void sub_0804B058(EntityData* dat) { - Entity* ent; - u32 uVar2; - - if ((dat != NULL) && dat->kind != 0xff) { - uVar2 = 0; - do { - if ((uVar2 < 0x20) && ((dat->kind & 0xF) == 3)) { - if (sub_08049D1C(uVar2) != 0) { - ent = LoadRoomEntity(dat); - if ((ent != NULL) && (ent->kind == 3)) { - ent->field_0x6c.HALF.LO = uVar2 | 0x80; - } - } - } else { - LoadRoomEntity(dat); - } - uVar2++; - dat++; - } while (dat->kind != 0xff); - } -} - -void sub_0804B0B0(u32 arg0, u32 arg1) { - LoadRoomEntityList(GetRoomProperty(arg0, arg1, 1)); -} - -void SetCurrentRoomPropertyList(u32 area, u32 room) { - gCurrentRoomProperties = NULL; - if (gAreaTable[area] != NULL) { - gCurrentRoomProperties = gAreaTable[area][room]; - } -} - -void sub_0804B0E8(u32 arg0, u32 arg1) { - void (*func)(); - - // init function at index 4 of room data - - func = (void (*)())GetRoomProperty(arg0, arg1, 4); - if (func != NULL) { - func(); - } -} - -void* GetRoomProperty(u32 area, u32 room, u32 property) { - void** temp; - temp = NULL; - if (gAreaTable[area] != NULL) { - temp = gAreaTable[area][room]; - if (temp != NULL) { - temp = temp[property]; - } - } - return temp; -} diff --git a/src/main.c b/src/main.c index db3587c5..6a883794 100644 --- a/src/main.c +++ b/src/main.c @@ -38,8 +38,6 @@ void (*const sScreenHandlers[])(void) = { static void sub_080560B8(void); void AgbMain(void) { - int var0; - InitOverlays(); InitSound(); InitDMA(); @@ -47,11 +45,11 @@ void AgbMain(void) { sub_080560B8(); sub_08056208(); gUnk_02000010.field_0x4 = 193; - sub_0804FFE4(); + InitFade(); DmaCopy32(3, BG_PLTT, gPaletteBuffer, BG_PLTT_SIZE); - sub_0804FF84(1); + SetBrightness(1); MessageInitialize(); - sub_080ADD30(); + ResetPalettes(); gRand = 0x1234567; MemClear(&gMain, sizeof(gMain)); InitScreen(SCREEN_INTRO); @@ -61,22 +59,23 @@ void AgbMain(void) { DoSoftReset(); } - switch (gMain.field_0x1) { - case 1: - sub_08056260(); + switch (gMain.sleepStatus) { + case SLEEP: + SetSleepMode(); break; - case 0: + case DEFAULT: default: - if (gMain.countdown != 0) { + if (gMain.pauseFrames != 0) { do { VBlankIntrWait(); - } while (--gMain.countdown); + } while (--gMain.pauseFrames); } - if (gMain.field_0x9 != 0) { - gMain.field_0x9--; - var0 = gMain.field_0xa; - while (var0-- > 0) { + if (gMain.pauseCount != 0) { + int cnt; + gMain.pauseCount--; + cnt = gMain.pauseInterval; + while (cnt-- > 0) { VBlankIntrWait(); } } @@ -84,11 +83,11 @@ void AgbMain(void) { gMain.ticks++; sScreenHandlers[gMain.screen](); MessageMain(); - UpdateFade(); - SoundLoop(); + FadeMain(); + AudioMain(); break; } - PrepNextFrame(); + WaitForNextFrame(); } } @@ -200,7 +199,7 @@ NONMATCH("asm/non_matching/sub_080560B8.inc", static void sub_080560B8(void)) { } temp = gUnk_02000010.signature ^ SIGNATURE; - b = !!temp; + b = BOOLCAST(temp); if ((gUnk_02000010.field_0x4 != 0) && (gUnk_02000010.field_0x4 != 0xc1)) { b = TRUE; @@ -257,7 +256,7 @@ void sub_08056250() { gScreen._6c = 0; } -void sub_08056260(void) { +void SetSleepMode(void) { u32 restore; Main* m; @@ -272,8 +271,8 @@ void sub_08056260(void) { REG_IE = restore; REG_IME = 1; m = &gMain; - *(vu8*)&m->field_0x1; // force a read - m->field_0x1 = 0; + *(vu8*)&m->sleepStatus; // force a read + m->sleepStatus = 0; } // Convert AABB to screen coordinates and check if it's within the viewport diff --git a/src/manager/manager24.c b/src/manager/manager24.c index df298020..141e1a01 100644 --- a/src/manager/manager24.c +++ b/src/manager/manager24.c @@ -6,18 +6,6 @@ #include "object.h" #include "area.h" -typedef struct { - Manager manager; - u8 field_0x20[0x15]; - u8 field_0x35; - u8 field_0x36; - u8 field_0x37; - s16 x; - u16 y; - u16 tile; - u16 field_0x3e; -} Manager24; - extern void (*const gUnk_08108CDC[])(Manager24*); u32 sub_0805BFC4(u32, u32); diff --git a/src/npc/rem.c b/src/npc/rem.c index d4c5ede5..94356c93 100644 --- a/src/npc/rem.c +++ b/src/npc/rem.c @@ -139,7 +139,7 @@ void sub_0806A550(Entity* this) { this->frame = 0; sub_08080964(8, 2); gActiveScriptInfo.unk_00 |= 0x100; - SoundReq(SFX_11B); + SoundReq(SFX_CHEST_OPEN); } if ((this->frame & 0x80) != 0) { this->action = 5; 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/overworld.c b/src/overworld.c index a5cc9c59..417988e0 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -513,7 +513,7 @@ void sub_0805289C(void) { u32 sub_080528B4(void) { if (gScreenTransition.field_0x4[1]) { - sub_0804FFE4(); + InitFade(); gMain.funcIndex = 3; gMain.transition = 0; DoFade(5, 8); @@ -564,7 +564,7 @@ u32 HandleRoomExit(void) { } RoomExitCallback(); gMain.transition = 3; - *(&gMain.field_0xa + 1) = 1; + *(&gMain.pauseInterval + 1) = 1; return 1; } return 0; 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..9871639a --- /dev/null +++ b/src/playerItemUtils.c @@ -0,0 +1,108 @@ +#include "entity.h" +#include "functions.h" +#include "room.h" +#include "save.h" +#include "utils.h" +#include "audio.h" +#include "flags.h" +#include "textbox.h" +#include "object.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 type, u32 type2, u32 delay) { + Entity* e = GiveItemWithCutscene(type, type2, delay); + if (e != NULL) { + e->parent = sub_080A276C(e, e->type, 0); + } +} + +void sub_080A7C18(u32 type, u32 type2, u32 delay) { + Entity* e = GiveItemWithCutscene(type, type2, delay); + 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 = OBJECT_B; + e->kind = OBJECT; + AppendEntityToList(e, 6); + } + return e; +} + +void ClearSmallChests(void) { + MemClear(gSmallChests, sizeof(gSmallChests)); +} + +void sub_080A7C8C(u32 pos, u32 layer) { + TileEntity* t = gSmallChests; + 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(SFX_CHEST_OPEN); + } +} + +u32 sub_080A7CFC(u32 a1) { + u32 msg = 0x600; + u32 isTileEntity6 = 0; + TileEntity* t = GetCurrentRoomProperty(3); + if (t != 0) { + do { + if (t->_4 == a1) { + switch (t->type) { + case SIGN: + isTileEntity6 = 0; + msg = *(u16*)&t->_6; + break; + case TILE_ENTITY_6: + isTileEntity6 = 1; + msg = *(u16*)&t->_6; + break; + } + break; + } + t++; + } while (t->_4 != 0); + } + sub_080A7D44(msg, isTileEntity6); +} + +void sub_080A7D44(u32 msg, u32 isTileEntity6) { + if (isTileEntity6) + sub_08078AA8(msg, 0); + else + // Read sign text + 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 716f0806..ae2bb9f0 100644 --- a/src/room.c +++ b/src/room.c @@ -1,6733 +1,378 @@ #include "global.h" -#include "audio.h" -#include "entity.h" #include "area.h" #include "room.h" #include "flags.h" -#include "npc.h" -#include "player.h" -#include "screen.h" -#include "main.h" -#include "structures.h" -#include "save.h" -#include "script.h" -#include "random.h" #include "functions.h" -#include "effects.h" +#include "utils.h" +#include "object.h" -void sub_0804B3C4(void* arg0) { - sub_0804B29C(arg0); -} +extern void sub_0804B058(EntityData* dat); +extern void sub_0801AC98(); +extern u32 sub_08049D1C(u32); +extern Entity* LoadRoomEntity(EntityData*); +extern void* GetRoomProperty(u32, u32, u32); -u32 sub_unk3_ArmosInteriors_RuinsEntranceNorth(u32 arg0) { - return 1; -} +extern void** gCurrentRoomProperties; +extern void*** gAreaTable[]; +extern u8 gUnk_081091E4[]; -void sub_StateChange_ArmosInteriors_RuinsEntranceNorth() { - sub_08030118(0); -} +extern void sub_080186EC(); +extern void sub_0804B16C(); +extern void ClearSmallChests(void); +extern Entity* GetEmptyEntityByKind(u32 kind); -u32 sub_unk3_ArmosInteriors_RuinsEntranceSouth() { - return 1; -} +void RegisterRoomEntity(Entity*, EntityData*); +void sub_0804AF0C(Entity*, EntityData*); +void sub_0804AFB0(void** properties); -void sub_StateChange_ArmosInteriors_RuinsEntranceSouth() { - sub_08030118(1); -} +void sub_08054524(void); +void sub_0806F704(Entity*, u32); -u32 sub_unk3_ArmosInteriors_RuinsLeft() { - return 1; -} +void sub_0805BB00(u32, u32); -void sub_StateChange_ArmosInteriors_RuinsLeft() { - sub_08030118(2); -} +static void LoadRoomVisitTile(TileEntity*); +static void LoadSmallChestTile(TileEntity*); +static void LoadBombableWallTile(TileEntity*); +static void LoadDarknessTile(TileEntity*); +static void LoadDestructibleTile(TileEntity*); +static void LoadGrassDropTile(TileEntity*); +static void LoadLocationTile(TileEntity*); -u32 sub_unk3_ArmosInteriors_RuinsMiddleLeft() { - return 1; -} +typedef struct { + u8 filler[0x20]; +} VarStruct; +extern VarStruct gUnk_080015BC[]; -void sub_StateChange_ArmosInteriors_RuinsMiddleLeft() { - sub_08030118(3); -} - -u32 sub_unk3_ArmosInteriors_RuinsMiddleRight() { - return 1; -} - -void sub_StateChange_ArmosInteriors_RuinsMiddleRight() { - sub_08030118(4); -} - -u32 sub_unk3_ArmosInteriors_RuinsRight() { - return 1; -} - -void sub_StateChange_ArmosInteriors_RuinsRight() { - sub_08030118(5); -} - -u32 sub_unk3_ArmosInteriors_6() { - return 1; -} - -void sub_StateChange_ArmosInteriors_6() { - sub_08030118(6); -} - -u32 sub_unk3_ArmosInteriors_RuinsGrassPath() { - return 1; -} - -void sub_StateChange_ArmosInteriors_RuinsGrassPath() { - sub_08030118(7); -} - -u32 sub_unk3_ArmosInteriors_8() { - return 1; -} - -void sub_StateChange_ArmosInteriors_8() { - sub_08030118(8); -} - -u32 sub_unk3_ArmosInteriors_FortressOfWindsLeft() { - return 1; -} - -void sub_StateChange_ArmosInteriors_FortressOfWindsLeft() { - sub_08030118(9); - gArea.dungeon_idx = 3; - gArea.areaMetadata = 0x4e; -} - -u32 sub_unk3_ArmosInteriors_FortressOfWindsRight() { - return 1; -} - -void sub_StateChange_ArmosInteriors_FortressOfWindsRight() { - sub_08030118(10); - gArea.dungeon_idx = 3; - gArea.areaMetadata = 0x4e; -} - -u32 sub_unk3_CrenelMinishPaths_CrenelBean() { - return 1; -} - -void sub_StateChange_CrenelMinishPaths_CrenelBean() { - sub_080575C8(35); - sub_08057688(); -} - -u32 sub_unk3_CrenelMinishPaths_CrenelWater() { - return 1; -} - -void sub_StateChange_CrenelMinishPaths_CrenelWater() { - sub_080575C8(35); -} - -void sub_unk1_CrenelMinishPaths_CrenelWater() { - sub_080575C8(35); -} - -u32 sub_unk3_CrenelMinishPaths_Rainfall() { - return 1; -} - -void sub_StateChange_CrenelMinishPaths_Rainfall() { - sub_080580B0(34); -} - -void sub_unk1_CrenelMinishPaths_Rainfall() { - sub_080580B0(34); -} - -u32 sub_unk3_CrenelMinishPaths_MelarisMine() { - return 1; -} - -void sub_StateChange_CrenelMinishPaths_MelarisMine(void) { - sub_080580B0(0x22); - // white sword - if (GetInventoryValue(0x2)) - SetGlobalFlag(WHITE_SWORD_END); -} - -void sub_unk1_CrenelMinishPaths_MelarisMine() { - sub_080580B0(34); -} - -u32 sub_unk3_MinishPaths1_ToMinishVillage() { - return 1; -} - -void sub_StateChange_MinishPaths1_ToMinishVillage() { - sub_080575C8(30); -} - -void sub_unk1_MinishPaths1_ToMinishVillage() { - sub_080575C8(30); -} - -u32 sub_unk3_MinishPaths1_CastorWilds() { - return 1; -} - -void sub_StateChange_MinishPaths1_CastorWilds() { - sub_080575C8(33); -} - -void sub_unk1_MinishPaths1_CastorWilds() { - sub_080575C8(33); -} - -u32 sub_unk3_MinishPaths1_HyruleTown() { - return 1; -} - -void sub_StateChange_MinishPaths1_HyruleTown() { - sub_080575C8(31); -} - -void sub_unk1_MinishPaths1_HyruleTown() { - sub_080575C8(31); -} - -u32 sub_unk3_MinishPaths1_LonLonRanch() { - return 1; -} - -void sub_StateChange_MinishPaths1_LonLonRanch() { - sub_080575C8(32); -} - -void sub_unk1_MinishPaths1_LonLonRanch() { - sub_080575C8(32); -} - -u32 sub_unk3_MinishPaths1_MayorsCabin() { - return 1; -} - -extern EntityData Entities_MinishPaths1_MayorsCabin_gUnk_080D6138; - -void sub_StateChange_MinishPaths1_MayorsCabin(void) { - - sub_080575C8(0x20); - - if (gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY > 0x40) - LoadRoomEntityList(&Entities_MinishPaths1_MayorsCabin_gUnk_080D6138); -} - -void sub_unk1_MinishPaths1_MayorsCabin() { - sub_080575C8(32); -} - -u32 sub_unk3_HouseInteriors1_Mayor() { - return 1; -} - -extern EntityData Entities_HouseInteriors1_Mayor_080D6210; - -void sub_StateChange_HouseInteriors1_Mayor(void) { - - if ((u16)gScreenTransition.player_status.start_pos.HALF.y > 0x40) - LoadRoomEntityList(&Entities_HouseInteriors1_Mayor_080D6210); -} - -u32 sub_unk3_HouseInteriors1_PostOffice() { - return 1; -} - -extern EntityData gUnk_080D6340; -extern EntityData gUnk_080D6360; -extern EntityData gUnk_080D6380; -extern EntityData gUnk_080D63A0; -extern EntityData gUnk_080D63C0; -extern EntityData gUnk_080D63E0; -extern EntityData gUnk_080D6400; -extern EntityData gUnk_080D6420; -extern EntityData gUnk_080D6440; - -extern u16 gUnk_080D64F8; -extern u16 gUnk_080D6508; - -void sub_StateChange_HouseInteriors1_PostOffice(void) { - u16 itemID; - s32 i; - u16* itemArr; - u16* flagArr; - s32 j; - - if (CheckKinstoneFused(0x2c)) { - LoadRoomEntityList(&gUnk_080D6340); - } - j = 0; - itemArr = &gUnk_080D64F8; - for (i = 7; i >= 0; i--) { - itemID = *itemArr; - itemArr++; - if (GetInventoryValue(itemID)) { - j++; +void LoadRoomEntityList(EntityData* listPtr) { + if (listPtr != NULL) { + while (listPtr->kind != 0xFF) { + LoadRoomEntity(listPtr++); } } - if (CheckLocalFlag(BILL01_TESSIN_RESERVED)) { - flagArr = &gUnk_080D6508; - i = 0; - while (i < j) { - if (CheckLocalFlag(*flagArr) == 0) { - SetLocalFlag(*flagArr); - ClearLocalFlag(BILL01_TESSIN_RESERVED); - SetLocalFlag(BILL01_TESSIN_BRANDNEW); - break; +} + +NONMATCH("asm/loadRoomEntity.s", Entity* LoadRoomEntity(EntityData* dat)) { + int kind; + Entity* v4; + Entity* v5; + + kind = dat->kind & 0xF; + if ((dat->flags & 0xF0) == 0x50 && DeepFindEntityByID(kind, dat->id)) + return NULL; + v4 = GetEmptyEntityByKind(kind); + v5 = v4; + if (v4 != NULL) { + v4->kind = kind; + v4->id = dat->id; + v4->type = dat->type; + RegisterRoomEntity(v4, dat); + if ((dat->flags & 0xF0) != 16) { + v5->type2 = dat->type2; + v5->actionDelay = (dat->type2 & 0xFF00) >> 8; + if (kind == 9) + return v5; + sub_0804AF0C(v5, dat); + if (!v5->next) + return v5; + if ((dat->kind & 0x10) == 0) { + if ((dat->kind & 0x20) != 0) { + v5->collisionLayer = 2; + return v5; + } + if ((gRoomControls.unk6 & 2) == 0) { + sub_08016A30(v5); + } } - i++; - flagArr++; + v5->collisionLayer = 1; } } - - if (CheckLocalFlag(BILL01_TESSIN_1)) - LoadRoomEntityList(&gUnk_080D6360); - - if (CheckLocalFlag(BILL01_TESSIN_2)) - LoadRoomEntityList(&gUnk_080D6380); - - if (CheckLocalFlag(BILL01_TESSIN_3)) - LoadRoomEntityList(&gUnk_080D63A0); - - if (CheckLocalFlag(BILL01_TESSIN_4)) - LoadRoomEntityList(&gUnk_080D63C0); - - if (CheckLocalFlag(BILL01_TESSIN_5)) - LoadRoomEntityList(&gUnk_080D63E0); - - if (CheckLocalFlag(BILL01_TESSIN_6)) - LoadRoomEntityList(&gUnk_080D6400); - - if (CheckLocalFlag(BILL01_TESSIN_7)) - LoadRoomEntityList(&gUnk_080D6420); - - if (CheckLocalFlag(BILL01_TESSIN_8)) - LoadRoomEntityList(&gUnk_080D6440); + return v5; } +END_NONMATCH -u32 sub_unk3_HouseInteriors1_Library2F() { - return 1; -} +void RegisterRoomEntity(Entity* ent, EntityData* dat) { + u32 list; + u32 kind; + void* offset; -extern EntityData gUnk_080D6578; -extern EntityData gUnk_080D6638; -extern EntityData gUnk_080D6558; -extern EntityData gUnk_080D6618; - -void sub_StateChange_HouseInteriors1_Library2F(void) { - // flippers - if (GetInventoryValue(0x46) == 0) { - LoadRoomEntityList(&gUnk_080D6578); - if (CheckLocalFlag(MIZUKAKI_BOOK_ALLBACK) == 0) { - LoadRoomEntityList(&gUnk_080D6638); - return; + list = dat->flags & 0xF; + kind = dat->kind & 0xF; + if (ent->prev == NULL) { + if (list == 0xF) { + AppendEntityToList(ent, gUnk_081091E4[kind]); + } else if (list == 8) { + AppendEntityToList(ent, 8); + } else { + AppendEntityToList(ent, list); } - } else { - LoadRoomEntityList(&gUnk_080D6558); } - LoadRoomEntityList(&gUnk_080D6618); + offset = &ent->field_0x78; + if (kind == MANAGER) + offset = &ent->y; + MemCopy(dat, offset, sizeof(EntityData)); } -u32 sub_unk3_HouseInteriors1_Library1F() { - return 1; -} - -extern EntityData gUnk_080D6714; -extern EntityData gUnk_additional_9_HouseInteriors1_Library1F; -extern EntityData gUnk_additional_8_HouseInteriors1_Library1F; - -void sub_StateChange_HouseInteriors1_Library1F(void) { - if (gSave.global_progress > 4) { - LoadRoomEntityList(&gUnk_080D6714); - } - // flippers - if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START) && CheckLocalFlag(MIZUKAKI_KOBITO)) { - LoadRoomEntityList(&gUnk_additional_9_HouseInteriors1_Library1F); - } else { - LoadRoomEntityList(&gUnk_additional_8_HouseInteriors1_Library1F); +void sub_0804AF0C(Entity* ent, EntityData* dat) { + switch (dat->flags & 0xf0) { + case 0x0: + ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX; + ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY; + break; + case 0x20: + ent->field_0x6c.HALF.HI |= 0x20; + ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX; + ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY; + break; + case 0x40: + ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX; + ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY; + if (!StartCutscene(ent, (u16*)dat->spritePtr)) + DeleteEntity(ent); + break; } } -u32 sub_unk3_HouseInteriors1_Inn1F() { - return 1; +void sub_0804AF90(void) { + sub_0804AFB0(gArea.pCurrentRoomInfo->properties); + ClearSmallChests(); } -extern EntityData gUnk_080D6924; - -void sub_StateChange_HouseInteriors1_Inn1F(void) { - if (gSave.global_progress > 7) { - LoadRoomEntityList(&gUnk_080D6924); - } -} - -extern u32* gUnk_080D6A74[]; - -u32 sub_unk3_HouseInteriors1_InnWestRoom(void) { - u32 index; - - if (CheckLocalFlag(YADO_CHECKIN) != 0) { - index = (s32)Random() % 3; - ClearLocalFlag(BILL05_YADO1F_MATSU_T0); - } else { - index = 0; - SetLocalFlag(BILL05_YADO1F_MATSU_T0); - } - gRoomVars.field_0x6c[3] = gUnk_080D6A74[index]; - return 1; -} - -extern void* script_08010A5C[]; - -void sub_StateChange_HouseInteriors1_InnWestRoom(void) { - if (CheckLocalFlag(YADO_CHECKIN)) { - ClearLocalFlag(YADO_CHECKIN); - DoFade(5, 0x100); - gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; - gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; - sub_080751E8(1, 2, &script_08010A5C); - } -} - -extern u32* gUnk_080D6B18[]; - -u32 sub_unk3_HouseInteriors1_InnMiddleRoom(void) { - u32 index; - - if (CheckLocalFlag(YADO_CHECKIN) != 0) { - index = Random() & 1; - ClearLocalFlag(BILL06_YADO1F_TAKE_T0); - } else { - index = 0; - SetLocalFlag(BILL06_YADO1F_TAKE_T0); - } - gRoomVars.field_0x6c[3] = gUnk_080D6B18[index]; - return 1; -} - -void sub_StateChange_HouseInteriors1_InnMiddleRoom(void) { - if (CheckLocalFlag(YADO_CHECKIN) != 0) { - ClearLocalFlag(YADO_CHECKIN); - DoFade(5, 0x100); - gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; - gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; - sub_080751E8(1, 2, &script_08010A5C); - } -} - -extern u32* gUnk_080D6BB8[]; - -u32 sub_unk3_HouseInteriors1_InnEastRoom(void) { - s32 index; - - if (CheckLocalFlag(YADO_CHECKIN) != 0) { - index = (s32)Random() % 3; - ClearLocalFlag(BILL07_YADO1F_UME_T0); - } else { - index = 0; - SetLocalFlag(BILL07_YADO1F_UME_T0); - } - gRoomVars.field_0x6c[3] = gUnk_080D6BB8[index]; - return 1; -} - -void sub_StateChange_HouseInteriors1_InnEastRoom(void) { - if (CheckLocalFlag(YADO_CHECKIN)) { - ClearLocalFlag(YADO_CHECKIN); - DoFade(5, 0x100); - gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x60; - gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; - sub_080751E8(1, 2, &script_08010A5C); - } -} - -u32 sub_unk3_HouseInteriors1_InnWest2F() { - return 1; -} - -extern EntityData UpperInn_Oracles; -extern EntityData UpperInn_NoFarore; -extern EntityData UpperInn_NoNayru; -extern EntityData UpperInn_NoDin; -extern EntityData UpperInn_Farore; -extern EntityData UpperInn_Nayru; -extern EntityData UpperInn_Din; - -void sub_StateChange_HouseInteriors1_InnWest2F(void) { - int iVar1; - - if (gSave.global_progress < 4) - return; - - if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { - if (!CheckGlobalFlag(NEW_HOUSE_NAYRU)) - if (!CheckGlobalFlag(NEW_HOUSE_FARORE)) - LoadRoomEntityList(&UpperInn_NoDin); - else - LoadRoomEntityList(&UpperInn_Nayru); - else - LoadRoomEntityList(&UpperInn_Farore); - } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { - if (CheckGlobalFlag(NEW_HOUSE_DIN)) - LoadRoomEntityList(&UpperInn_Farore); - else if (!CheckGlobalFlag(NEW_HOUSE_FARORE)) - LoadRoomEntityList(&UpperInn_NoNayru); - else - LoadRoomEntityList(&UpperInn_Din); - } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { - if (CheckGlobalFlag(NEW_HOUSE_DIN)) - LoadRoomEntityList(&UpperInn_Nayru); - else if (CheckGlobalFlag(NEW_HOUSE_NAYRU)) - LoadRoomEntityList(&UpperInn_Din); - else - LoadRoomEntityList(&UpperInn_NoFarore); - } else - LoadRoomEntityList(&UpperInn_Oracles); -} - -u32 sub_unk3_HouseInteriors1_InnEast2F() { - return 1; -} - -void sub_StateChange_HouseInteriors1_InnEast2F() { -} - -u32 sub_unk3_HouseInteriors1_InnMinishHeartPiece() { - return 1; -} - -void sub_StateChange_HouseInteriors1_InnMinishHeartPiece() { -} - -u32 sub_unk3_HouseInteriors1_SchoolWest() { - return 1; -} - -extern EntityData gUnk_080D7038; - -void sub_StateChange_HouseInteriors1_SchoolWest(void) { - if (gSave.global_progress < 8) { - LoadRoomEntityList(&gUnk_080D7038); - } - if (gRoomVars.field_0x0 == 0) { - sub_08052CA4(2, 0, 0x2c8, 0xa8); - } -} - -u32 sub_unk3_HouseInteriors1_SchoolEast() { - return 1; -} - -extern EntityData gUnk_080D7140; -extern EntityData gUnk_080D7170; -extern EntityData gUnk_080D71A0; -extern EntityData gUnk_080D71D0; -extern EntityData gUnk_080D71F0; - -void sub_StateChange_HouseInteriors1_SchoolEast(void) { - - if (gSave.global_progress == 6) - LoadRoomEntityList(&gUnk_080D7140); - - if (gSave.global_progress == 7) - LoadRoomEntityList(&gUnk_080D7170); - - if ((gSave.global_progress < 8) || (LoadRoomEntityList(&gUnk_080D71A0), gSave.global_progress < 8)) - LoadRoomEntityList(&gUnk_080D71D0); - else - LoadRoomEntityList(&gUnk_080D71F0); -} - -extern u32 gUnk_080D7348; - -u32 sub_unk3_HyruleCastle_0(void) { - if (CheckGlobalFlag(ENDING)) { - gRoomVars.field_0x6c[0] = &gUnk_080D7348; - gRoomVars.field_0x6c[2] = 0; - } - return 1; -} - -extern EntityData gUnk_080D7328; - -void sub_StateChange_HyruleCastle_0(void) { - if (!CheckGlobalFlag(LV2_CLEAR)) { - LoadRoomEntityList(&gUnk_080D7328); - } - -#if defined(JP) || defined(DEMO_JP) - if (CheckGlobalFlag(CASTLE_BGM) || CheckGlobalFlag(ENDING)) { - gArea.pMusicIndex = gArea.musicIndex; - } -#elif defined(EU) - if (CheckGlobalFlag(ENDING)) { - gArea.pMusicIndex = gArea.musicIndex; - } -#else - if (CheckGlobalFlag(CASTLE_BGM)) { - gArea.pMusicIndex = BGM_HYRULE_CASTLE_NOINTRO; - } else if (CheckGlobalFlag(ENDING)) { - gArea.pMusicIndex = gArea.musicIndex; - } -#endif -} - -extern u32 gUnk_080D7410; - -u32 sub_unk3_HyruleCastle_1(void) { - if (CheckGlobalFlag(ENDING)) { - gRoomVars.field_0x6c[0] = &gUnk_080D7410; - gRoomVars.field_0x6c[2] = 0; - } - return 1; -} - -extern EntityData gUnk_080D73B0; -extern EntityData gUnk_080D73E0; - -void sub_StateChange_HyruleCastle_1(void) { - if (CheckGlobalFlag(ENDING)) { - gArea.pMusicIndex = gArea.musicIndex; - } else { - if (!CheckGlobalFlag(LV2_CLEAR)) { - LoadRoomEntityList(&gUnk_080D73B0); - } - if (!CheckGlobalFlag(LV1_CLEAR) && CheckGlobalFlag(TABIDACHI)) { - LoadRoomEntityList(&gUnk_080D73E0); - } -#ifndef EU - if (CheckGlobalFlag(CASTLE_BGM)) { - gArea.pMusicIndex = gArea.musicIndex; - } -#endif - } -} - -u32 sub_unk3_HyruleCastle_2() { - return 1; -} - -extern EntityData gUnk_080D74C8; -extern EntityData gUnk_080D7588; -extern EntityData gUnk_080D75D8; -extern EntityData gUnk_080D7618; - -void sub_StateChange_HyruleCastle_2(void) { -#ifndef EU - if (CheckGlobalFlag(CASTLE_BGM)) { - gArea.pMusicIndex = gArea.musicIndex; - } -#endif - - if (CheckGlobalFlag(ENDING)) { - LoadRoomEntityList(&gUnk_080D7618); - gArea.pMusicIndex = gArea.musicIndex; - } else if (CheckGlobalFlag(TABIDACHI) == 0) { - LoadRoomEntityList(&gUnk_080D74C8); - gArea.pMusicIndex = BGM_HYRULE_CASTLE_NOINTRO; - } else if (CheckGlobalFlag(LV1_CLEAR) == 0) { - LoadRoomEntityList(&gUnk_080D7588); - } else { - LoadRoomEntityList(&gUnk_080D75D8); - } -} - -u32 sub_unk3_HyruleCastle_3() { - return 1; -} - -extern EntityData gUnk_additional_8_HyruleCastle_3; - -void sub_StateChange_HyruleCastle_3(void) { - if (CheckLocalFlag(SOUGEN_08_TORITSUKI)) { - LoadRoomEntityList(&gUnk_additional_8_HyruleCastle_3); - } -} - -u32 sub_unk3_HyruleCastle_4(void) { - if (!CheckLocalFlag(CASTLE_04_MEZAME)) { - gScreenTransition.player_status.spawn_type = 5; - ClearGlobalFlag(ZELDA_CHASE); - } - return 1; -} - -extern u32 script_08009E88; - -void sub_StateChange_HyruleCastle_4(void) { - if (!CheckLocalFlag(CASTLE_04_MEZAME)) { - DoFade(5, 0x100); - gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0xb0; - gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x40; - sub_080751E8(0, 6, &script_08009E88); -#ifdef EU - SoundReq(0x80010000); - gArea.musicIndex = gArea.pMusicIndex; - } -#else - } - - if (!CheckGlobalFlag(TABIDACHI)) { - sub_08052878(); -#if !(defined(JP) || defined(DEMO_JP)) - } else { -#else - } -#endif - if (CheckGlobalFlag(CASTLE_BGM)) { -#if defined(JP) || defined(DEMO_JP) - gArea.pMusicIndex = gArea.musicIndex; -#else - gArea.pMusicIndex = 0x1b; -#endif - } -#if !(defined(JP) || defined(DEMO_JP)) - } -#endif -#endif -} - -extern ScreenTransitionData gUnk_0813AB80; - -void sub_0804BCDC() { - sub_0808091C(&gUnk_0813AB80, 4); -} - -u32 sub_unk3_HyruleCastle_5() { - return 1; -} - -void sub_StateChange_HyruleCastle_5() { -} - -u32 sub_unk3_87_Main() { - return 1; -} - -void sub_StateChange_87_Main() { -} - -u32 sub_unk3_45_Main() { - return 1; -} - -void sub_StateChange_45_Main() { -} - -u32 sub_unk3_4D_Main() { - return 1; -} - -void sub_StateChange_4D_Main() { -} - -u32 sub_unk3_57_Main() { - return 1; -} - -void sub_StateChange_57_Main() { -} - -u32 sub_unk3_5F_Main() { - return 1; -} - -void sub_StateChange_5F_Main() { -} - -u32 sub_unk3_67_Main() { - return 1; -} - -void sub_StateChange_67_Main() { -} - -u32 sub_unk3_6F_Main() { - return 1; -} - -void sub_StateChange_6F_Main() { -} - -u32 sub_unk3_77_Main() { - return 1; -} - -void sub_StateChange_77_Main() { -} - -u32 sub_unk3_7F_Main() { - return 1; -} - -void sub_StateChange_7F_Main() { -} - -u32 sub_unk3_8F_Main() { - return 1; -} - -void sub_StateChange_8F_Main() { -} - -u32 sub_unk3_GreatFairies_Entrance() { - return 1; -} - -void sub_StateChange_GreatFairies_Entrance() { -} - -u32 sub_unk3_GreatFairies_Exit() { - return 1; -} - -extern EntityData gUnk_080D7D34; - -void sub_StateChange_GreatFairies_Exit(void) { - // four sword - if (GetInventoryValue(0x6)) { - SetTile(0x4072, 0x14d, 1); - SetTile(0x4072, 0x10c, 1); - SetTile(0x4090, 0x14c, 1); - SetTile(0x4090, 0x18c, 1); - LoadRoomEntityList(&gUnk_080D7D34); - } -} - -u32 sub_unk3_Dojos_Grayblade() { - return 1; -} - -void sub_StateChange_Dojos_Grayblade() { -} - -u32 sub_unk3_Dojos_Splitblade() { - return 1; -} - -void sub_StateChange_Dojos_Splitblade() { -} - -u32 sub_unk3_Dojos_Greatblade() { - return 1; -} - -void sub_StateChange_Dojos_Greatblade() { -} - -u32 sub_unk3_Dojos_Scarblade() { - return 1; -} - -void sub_StateChange_Dojos_Scarblade() { -} - -u32 sub_unk3_Dojos_Swiftblade() { - return 1; -} - -void sub_StateChange_Dojos_Swiftblade() { -} - -u32 sub_unk3_Dojos_Grimblade() { - return 1; -} - -extern EntityData gUnk_080D827C; - -void sub_StateChange_Dojos_Grimblade(void) { - if (!CheckLocalFlag(3)) { - LoadRoomEntityList(&gUnk_080D827C); - } else { - sub_0805BC4C(); - SetTileType(0x76, 0x82, 2); - SetTileType(0x76, 0x8c, 2); - } -} - -u32 sub_unk3_Dojos_Waveblade() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade() { -} - -u32 sub_unk3_Dojos_7() { - return 1; -} - -void sub_StateChange_Dojos_7() { -} - -u32 sub_unk3_Dojos_8() { - return 1; -} - -void sub_StateChange_Dojos_8() { -} - -u32 sub_unk3_Dojos_9() { - return 1; -} - -void sub_StateChange_Dojos_9() { -} - -u32 sub_unk3_Dojos_ToGrimblade() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade() { -} - -u32 sub_unk3_Dojos_ToSplitblade() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade() { -} - -u32 sub_unk3_Dojos_ToGreatblade() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade() { -} - -u32 sub_unk3_Dojos_ToScarblade() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade() { -} - -u32 sub_unk3_GoronCave_StairsToCave() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave() { -} - -u32 sub_unk3_GoronCave_Main() { - return 1; -} - -extern EntityData gUnk_080D8B24; -extern EntityData gUnk_080D8AC4; -extern EntityData gUnk_080D8A74; -extern EntityData gUnk_080D8A34; -extern EntityData gUnk_080D8A04; -extern EntityData gUnk_080D89E4; - -extern u32 gUnk_080D8BBC; -extern u32 gUnk_080D8BFA; -extern u32 gUnk_080D8C68; - -void sub_StateChange_GoronCave_Main(void) { - if (!CheckLocalFlag(GORON_DOUKUTU_APPEAR)) - SetLocalFlag(GORON_DOUKUTU_APPEAR); - - if (CheckKinstoneFused(0x2f)) - LoadRoomEntityList(&gUnk_080D8B24); - else if (CheckKinstoneFused(0x2b)) - LoadRoomEntityList(&gUnk_080D8AC4); - else if (CheckKinstoneFused(0x26)) - LoadRoomEntityList(&gUnk_080D8A74); - else if (CheckKinstoneFused(0x2a)) - LoadRoomEntityList(&gUnk_080D8A34); - else if (CheckKinstoneFused(0x25)) - LoadRoomEntityList(&gUnk_080D8A04); - else - LoadRoomEntityList(&gUnk_080D89E4); - - if (CheckKinstoneFused(0x25)) - sub_0807BB68(&gUnk_080D8BBC, 0x7c5, 1); - - if (CheckKinstoneFused(0x26)) - sub_0807BB68(&gUnk_080D8BFA, 0x503, 1); - - if (CheckKinstoneFused(0x2f)) - sub_0807BB68(&gUnk_080D8C68, 0x281, 1); -} - -#if 0 -typedef struct { - u32 a; - u16 x, y; - u16 entCnt; - u16 shakeTime, shakeMag, sfx; -} struct_080D8E54; - -typedef struct { - u32 field_0x0; - u32 field_0x4; -} struct_0804BF38; - -extern struct_080D8E54 gUnk_080D8E50[]; - -void sub_0804BF38(u32 arg0, struct_0804BF38* arg1) -{ - u32 numEnts; - u32 iVar2; - u32 iVar3; - Entity *fx; - u32 entCnt; - u32 xOff; - - iVar2 = arg1->field_0x4; - iVar3 = iVar2 * 0x10; - sub_0807BB68(gUnk_080D8E50[iVar2].a, ((gUnk_080D8E50[iVar3].x >> 4) & 0x3f | (gUnk_080D8E50[iVar3].y >> 4) & 0x3f) << 6, 1); - numEnts = gUnk_080D8E50[iVar3].entCnt; - entCnt = 0; - - if (numEnts != 0) { - for (xOff = 0; entCnt < numEnts; xOff += 0x10, entCnt++) { - fx = CreateObject(SPECIAL_FX, 0xf, 0); - if (fx != NULL) { - fx->x.HALF.HI = gUnk_080D8E50[iVar3].x + gRoomControls.roomOriginX + xOff; - fx->y.HALF.HI = gUnk_080D8E50[iVar3].y + gRoomControls.roomOriginY + (entCnt & 1) * 8; - } - fx = CreateObject(SPECIAL_FX, 0x54, 0); - if (fx != NULL) { - fx->x.HALF.HI = gUnk_080D8E50[iVar3].x + gRoomControls.roomOriginX + xOff; - fx->y.HALF.HI = gUnk_080D8E50[iVar3].y + gRoomControls.roomOriginY + -0xc + (entCnt & 1) * 8; - fx->direction = 0; - fx->speed = 0x100; - } - } - } - - sub_08080964(gUnk_080D8E50[iVar3].shakeTime, gUnk_080D8E50[iVar3].shakeMag); - SoundReq(gUnk_080D8E50[iVar2].sfx); -} -#else -ASM_FUNC("asm/non_matching/sub_0804BF38.inc", void sub_0804BF38(Entity* this, ScriptExecutionContext* context)) -#endif - -u32 sub_unk3_EzloCutscene_Main() { - return 1; -} - -void sub_StateChange_EzloCutscene_Main() { -} - -u32 sub_unk3_RoyalValley_Main() { - return 1; -} - -extern EntityData gUnk_080D90C8; -extern EntityData gUnk_080D9108; -extern EntityData gUnk_080D9098; - -void sub_StateChange_RoyalValley_Main(void) { - if (!CheckGlobalFlag(HAKA_KEY_LOST)) { - // graveyard key - if (GetInventoryValue(0x3c) == 1) { - LoadRoomEntityList(&gUnk_080D90C8); - LoadRoomEntityList(&gUnk_080D9108); - } - } else if (!CheckGlobalFlag(HAKA_KEY_FOUND)) - LoadRoomEntityList(&gUnk_080D9108); - - if (GetInventoryValue(0x3c) != 2) { - LoadRoomEntityList(&gUnk_080D9098); - SetTileType(0x17a, 0x58e, 1); - SetTileType(0x17b, 0x58f, 1); - SetTileType(0x17c, 0x5ce, 1); - SetTileType(0x17d, 0x5cf, 1); - } - - sub_08054570(); - sub_08059278(); - SetTile(0x4072, 0xa47, 1); - SetTile(0x4072, 0xc47, 1); - - if (CheckGlobalFlag(MAZE_CLEAR)) - if (gScreenTransition.player_status.start_pos.WORD == 0x2780078) // todo: wtf - SoundReq(SFX_SECRET); - - ClearGlobalFlag(MAZE_CLEAR); -} - -u32 sub_unk3_RoyalValley_ForestMaze() { - return 1; -} - -void sub_StateChange_RoyalValley_ForestMaze(void) { - gArea.areaMetadata |= 0x40; - sub_0804C128(gArea.filler[7] |= 1); -} - -ASM_FUNC("asm/non_matching/sub_0804C128.inc", void sub_0804C128(u32 arg0)) - -ASM_FUNC("asm/non_matching/sub_0804C258.inc", void sub_0804C258(void)) - -ASM_FUNC("asm/non_matching/sub_0804C290.inc", void sub_0804C290(void)) - -u32 sub_unk3_RoyalValleyGraves_HeartPiece() { - return 1; -} - -void sub_StateChange_RoyalValleyGraves_HeartPiece() { -} - -u32 sub_unk3_RoyalValleyGraves_Gina() { - return 1; -} - -void sub_StateChange_RoyalValleyGraves_Gina() { -} - -u32 sub_unk3_MinishRafters_Cafe() { - return 1; -} - -void sub_StateChange_MinishRafters_Cafe() { - sub_08058324(0); -} - -u32 sub_unk3_MinishRafters_Stockwell() { - return 1; -} - -void sub_StateChange_MinishRafters_Stockwell() { - sub_08058324(1); -} - -u32 sub_unk3_MinishRafters_DrLeft() { - return 1; -} - -extern EntityData gUnk_080D9800; - -void sub_StateChange_MinishRafters_DrLeft(void) { - - sub_08058324(2); - - if (CheckGlobalFlag(MIZUKAKI_START) && !CheckGlobalFlag(MIZUKAKI_HARIFALL)) - LoadRoomEntityList(&gUnk_080D9800); -} - -void sub_unk1_MinishRafters_DrLeft() { - sub_StateChange_MinishRafters_DrLeft(); -} - -u32 sub_unk3_MinishRafters_Bakery() { - return 1; -} - -void sub_StateChange_MinishRafters_Bakery() { - sub_08058324(3); -} - -u32 sub_unk3_CastorWilds_Main() { - return 1; -} - -extern EntityData gUnk_080D9CC8; -extern EntityData gUnk_080D9CE8; -extern EntityData gUnk_080D9C38; - -void sub_StateChange_CastorWilds_Main(void) { - - SetGlobalFlag(DASHBOOTS); - - if (CheckKinstoneFused(0x5b)) - LoadRoomEntityList(&gUnk_080D9CC8); - - if ((gSave.windcrests & 0x20000000) == 0) - LoadRoomEntityList(&gUnk_080D9CE8); - - // pegasus boots - if (!GetInventoryValue(0x15)) - LoadRoomEntityList(&gUnk_080D9C38); -} - -void sub_unk1_CastorWilds_Main(void) { - if ((gSave.windcrests & 0x20000000) == 0) - LoadRoomEntityList(&gUnk_080D9CE8); -} - -u32 sub_unk3_CastorCaves_South() { - return 1; -} - -void sub_StateChange_CastorCaves_South() { -} - -u32 sub_unk3_CastorCaves_North() { - return 1; -} - -void sub_StateChange_CastorCaves_North() { -} - -u32 sub_unk3_CastorCaves_WindRuins() { - return 1; -} - -void sub_StateChange_CastorCaves_WindRuins() { -} - -u32 sub_unk3_CastorCaves_Darknut() { - return 1; -} - -void sub_StateChange_CastorCaves_Darknut() { -} - -u32 sub_unk3_CastorCaves_HeartPiece() { - return 1; -} - -void sub_StateChange_CastorCaves_HeartPiece() { -} - -extern u32 gUnk_080DA230; - -u32 sub_unk3_CastorDarknut_Main(void) { - if (!CheckLocalFlag(LV4_0a_TSUBO)) - gRoomVars.field_0x6c[0] = &gUnk_080DA230; - - return 1; -} - -void sub_StateChange_CastorDarknut_Main() { -} - -u32 sub_unk3_CastorDarknut_Hall() { - return 1; -} - -void sub_StateChange_CastorDarknut_Hall() { -} - -u32 sub_unk3_GreatFairies_Graveyard() { - return 1; -} - -void sub_StateChange_GreatFairies_Graveyard() { -} - -u32 sub_unk3_GreatFairies_MinishWoods() { - return 1; -} - -void sub_StateChange_GreatFairies_MinishWoods() { -} - -u32 sub_unk3_GreatFairies_MtCrenel() { - return 1; -} - -void sub_StateChange_GreatFairies_MtCrenel() { -} - -u32 sub_unk3_GardenFountains_East() { - return 1; -} - -void sub_StateChange_GardenFountains_East() { -} - -u32 sub_unk3_GardenFountains_West() { - return 1; -} - -void sub_StateChange_GardenFountains_West() { -} - -u32 sub_unk3_MinishHouseInteriors_GentariMain() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_GentariMain() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_GentariExit() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_GentariExit() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_Festari() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_Festari() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_Red() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_Red() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_Green() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_Green() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_Blue() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_Blue() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_SideArea() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_SideArea() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_ShoeMinish() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_ShoeMinish() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_PotMinish() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_PotMinish() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_BarrelMinish() { - return 1; -} - -extern EntityData gUnk_080DAB44; -extern EntityData gUnk_080DAB64; -extern EntityData gUnk_080DAB84; -extern EntityData gUnk_080DAC54; -extern EntityData gUnk_080DAD24; -extern EntityData gUnk_080DABC4; -extern EntityData gUnk_080DAC94; -extern EntityData gUnk_080DAD64; -extern EntityData gUnk_080DAC04; -extern EntityData gUnk_080DACD4; -extern EntityData gUnk_080DADA4; - -void sub_StateChange_MinishHouseInteriors_BarrelMinish(void) { - u32 uVar1; - - // jabber nut - if (!GetInventoryValue(0x5b)) - LoadRoomEntityList(&gUnk_080DAB44); - else - LoadRoomEntityList(&gUnk_080DAB64); - - if (!CheckGlobalFlag(DRUG_COUNT)) - goto a; - - if (sub_08060354()) { - SetRoomFlag(0); - if (!CheckGlobalFlag(DRUG_1)) - uVar1 = 0x3200; - else if (!CheckGlobalFlag(DRUG_2)) - uVar1 = 0x4600; - else - uVar1 = 0x4880; - } else { - a: - if (CheckGlobalFlag(DRUG_3)) - uVar1 = 0x4900; - else if (CheckGlobalFlag(DRUG_2)) - uVar1 = 0x4a00; - else if (CheckGlobalFlag(DRUG_1)) - uVar1 = 0x5200; - else - uVar1 = 0x9200; - } - if (uVar1 & 0x8000) - LoadRoomEntityList(&gUnk_080DAB84); - - if (uVar1 & 0x4000) - LoadRoomEntityList(&gUnk_080DAC54); - - if (uVar1 & 0x2000) - LoadRoomEntityList(&gUnk_080DAD24); - - if (uVar1 & 0x1000) - LoadRoomEntityList(&gUnk_080DABC4); - - if (uVar1 & 0x800) - LoadRoomEntityList(&gUnk_080DAC94); - - if (uVar1 & 0x400) - LoadRoomEntityList(&gUnk_080DAD64); - - if (uVar1 & 0x200) - LoadRoomEntityList(&gUnk_080DAC04); - - if (uVar1 & 0x100) - LoadRoomEntityList(&gUnk_080DACD4); - - if (uVar1 & 0x80) - LoadRoomEntityList(&gUnk_080DADA4); - - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_MelariMinesSouthwest() { - return 1; -} - -extern EntityData gUnk_080DAEE8; - -void sub_StateChange_MinishHouseInteriors_MelariMinesSouthwest(void) { - - if (CheckGlobalFlag(WHITE_SWORD_END)) - LoadRoomEntityList(&gUnk_080DAEE8); - - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_MelariMinesSoutheast() { - return 1; -} - -extern EntityData gUnk_080DAF80; - -void sub_StateChange_MinishHouseInteriors_MelariMinesSoutheast(void) { - - if (CheckGlobalFlag(WHITE_SWORD_END)) - LoadRoomEntityList(&gUnk_080DAF80); - - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_MelariMinesEast() { - return 1; -} - -extern EntityData gUnk_080DB018; - -void sub_StateChange_MinishHouseInteriors_MelariMinesEast(void) { - - if (CheckGlobalFlag(WHITE_SWORD_END)) - LoadRoomEntityList(&gUnk_080DB018); - - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_HyruleFieldSouthwest() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_HyruleFieldSouthwest() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_HyruleFieldOutsideLinksHouse() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_HyruleFieldOutsideLinksHouse() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_NextToKnuckle() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_NextToKnuckle() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_Librari() { - return 1; -} - -extern EntityData gUnk_080DB238; - -void sub_StateChange_MinishHouseInteriors_Librari(void) { - - if (gSave.global_progress > 8) - LoadRoomEntityList(&gUnk_080DB238); - - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_HyruleFieldExit() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_HyruleFieldExit() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_HyruleTown() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_HyruleTown() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_MinishWoodsBomb() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_MinishWoodsBomb() { - sub_0801AFE4(); -} - -u32 sub_unk3_MinishHouseInteriors_LakeHyliaOcarina() { - return 1; -} - -void sub_StateChange_MinishHouseInteriors_LakeHyliaOcarina() { - sub_0801AFE4(); -} - -u32 sub_unk3_TownMinishHoles_MayorsHouse() { - return 1; -} - -extern EntityData gUnk_080DB4D0; -extern EntityData gUnk_080DB4A0; - -void sub_StateChange_TownMinishHoles_MayorsHouse(void) { - - // flippers and history of masks book - if (!GetInventoryValue(0x46) && !GetInventoryValue(0x3b) && CheckLocalFlag(KOBITO_DOUKUTU_04_T0)) - LoadRoomEntityList(&gUnk_080DB4D0); - else - LoadRoomEntityList(&gUnk_080DB4A0); - - sub_0801AFE4(); -} - -u32 sub_unk3_TownMinishHoles_WestOracle() { - return 1; -} - -void sub_StateChange_TownMinishHoles_WestOracle() { - sub_0801AFE4(); -} - -u32 sub_unk3_TownMinishHoles_DrLeft() { - return 1; -} - -void sub_StateChange_TownMinishHoles_DrLeft() { - sub_0801AFE4(); -} - -u32 sub_unk3_TownMinishHoles_Carpenter() { - return 1; -} - -void sub_StateChange_TownMinishHoles_Carpenter() { - sub_0801AFE4(); -} - -u32 sub_unk3_TownMinishHoles_Cafe() { - return 1; -} - -void sub_StateChange_TownMinishHoles_Cafe() { - sub_0801AFE4(); -} - -u32 sub_unk3_TownMinishHoles_5() { - return 1; -} - -void sub_StateChange_TownMinishHoles_5() { - sub_0801AFE4(); -} - -extern u32 gUnk_080DB910; - -u32 sub_unk3_TownMinishHoles_LibraryBookshelf(void) { - if (CheckGlobalFlag(MIZUKAKI_START) && !CheckLocalFlag(KOBITO_DOUKUTU_09_T0)) { - gRoomVars.field_0x6c[1] = &gUnk_080DB910; - } - return 1; -} - -extern EntityData gUnk_080DB8F0; -extern EntityData gUnk_additional_a_TownMinishHoles_LibraryBookshelf; - -void sub_StateChange_TownMinishHoles_LibraryBookshelf(void) { - - LoadRoomEntityList(&gUnk_080DB8F0); - // flippers - if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START)) { - LoadRoomEntityList(&gUnk_additional_a_TownMinishHoles_LibraryBookshelf); - } - sub_0801AFE4(); -} - -u32 sub_unk3_TownMinishHoles_LibrariBookHouse() { - return 1; -} - -extern EntityData gUnk_080DBA08; - -void sub_StateChange_TownMinishHoles_LibrariBookHouse(void) { - - // flippers - if (GetInventoryValue(0x46) || !CheckLocalFlag(KOBITO_DOUKUTU_09_T0)) { - LoadRoomEntityList(&gUnk_080DBA08); - } - sub_0801AFE4(); -} - -u32 sub_unk3_TownMinishHoles_RemShoeShop() { - return 1; -} - -extern EntityData gUnk_080DBB50; -extern EntityData gUnk_080DBB70; -extern EntityData gUnk_080DBB10; -extern EntityData gUnk_080DBAD0; -extern EntityData gUnk_080DBB90; - -void sub_StateChange_TownMinishHoles_RemShoeShop(void) { - u32 tilePos; +void sub_0804AFB0(void** properties) { u32 i; - if (!CheckLocalFlag(KOBITO_DOUKUTU_00_T0)) { - LoadRoomEntityList(&gUnk_080DBB50); + gCurrentRoomProperties = properties; + for (i = 0; i < 8; ++i) { + gRoomVars.field_0x6c[i] = gCurrentRoomProperties[i]; } - - // pegasus boots - if (GetInventoryValue(0x15) == 1) { - LoadRoomEntityList(&gUnk_080DBB70); - LoadRoomEntityList(&gUnk_080DBB10); - } else { - LoadRoomEntityList(&gUnk_080DBAD0); - } - if (!CheckLocalFlag(KOBITO_DOUKUTU_05_T0)) { - tilePos = 0x140; - for (i = 0; i < 0x13; i++, tilePos++) { - SetTileType(0x4072, tilePos, 1); - } - } - LoadRoomEntityList(&gUnk_080DBB90); - sub_0801AFE4(); -} - -u32 sub_unk3_MinishCaves_BeanPesto() { - return 1; -} - -void sub_StateChange_MinishCaves_BeanPesto() { -} - -u32 sub_unk3_MinishCaves_SoutheastWater1() { - return 1; -} - -void sub_StateChange_MinishCaves_SoutheastWater1() { -} - -u32 sub_unk3_MinishCaves_SoutheastWater2() { - return 1; -} - -void sub_StateChange_MinishCaves_SoutheastWater2() { -} - -u32 sub_unk3_MinishCaves_Ruins() { - return 1; -} - -void sub_StateChange_MinishCaves_Ruins() { -} - -u32 sub_unk3_MinishCaves_OutsideLinksHouse() { - return 1; -} - -void sub_StateChange_MinishCaves_OutsideLinksHouse() { -} - -u32 sub_unk3_MinishCaves_MinishWoodsNorth1() { - return 1; -} - -void sub_StateChange_MinishCaves_MinishWoodsNorth1() { -} - -u32 sub_unk3_MinishCaves_MinishWoodsNorth2() { - return 1; -} - -void sub_StateChange_MinishCaves_MinishWoodsNorth2() { -} - -u32 sub_unk3_MinishCaves_LakeHyliaNorth() { - return 1; -} - -void sub_StateChange_MinishCaves_LakeHyliaNorth() { -} - -u32 sub_unk3_MinishCaves_LakeHyliaLibrari() { - return 1; -} - -void sub_StateChange_MinishCaves_LakeHyliaLibrari() { -} - -u32 sub_unk3_MinishCaves_MinishWoodsSouthwest() { - return 1; -} - -void sub_StateChange_MinishCaves_MinishWoodsSouthwest() { -} - -u32 sub_unk3_MinishVillage_Main() { - return 1; -} - -extern EntityData gUnk_080DC390; -extern EntityData gUnk_080DC3F0; -extern EntityData gUnk_080DC430; -extern EntityData gUnk_080DC530; -extern EntityData gUnk_080DC470; -extern EntityData gUnk_080DC4C0; - -void sub_StateChange_MinishVillage_Main(void) { - - // jabber nut - if (!GetInventoryValue(0x5b)) { - LoadRoomEntityList(&gUnk_080DC390); - if (!CheckLocalFlagByBank(0x200, 0x80)) { - LoadRoomEntityList(&gUnk_080DC3F0); - } - } else { - LoadRoomEntityList(&gUnk_080DC430); - // gust jar - if (!GetInventoryValue(0x11)) { - LoadRoomEntityList(&gUnk_080DC530); - } - } - if ((!CheckLocalFlagByBank(0x200, 0x83)) && GetInventoryValue(0x11)) { - LoadRoomEntityList(&gUnk_080DC470); - } - if (!CheckLocalFlag(0x8d)) { - LoadRoomEntityList(&gUnk_080DC4C0); - } - sub_08057E64(); -} - -u32 sub_unk3_MinishVillage_SideHouse() { - return 1; -} - -void sub_StateChange_MinishVillage_SideHouse() { -} - -typedef struct { - u8 LO[0x4000]; - u8 HI[0x4000]; -} struct_086D4460; - -extern struct_086D4460 gUnk_086D4460; - -void sub_unk2_MinishVillage_SideHouse(void) { - LoadResourceAsync(&gUnk_086D4460.LO, 0x6000000, 0x4000); - LoadResourceAsync(&gUnk_086D4460.HI, 0x6008000, 0x4000); - LoadPaletteGroup(0x19); -} - -u32 sub_unk3_CastleGardenMinishHoles_East() { - return 1; -} - -void sub_StateChange_CastleGardenMinishHoles_East() { -} - -u32 sub_unk3_CastleGardenMinishHoles_West() { - return 1; -} - -void sub_StateChange_CastleGardenMinishHoles_West() { -} - -u32 sub_unk3_37_0() { - return 1; -} - -void sub_StateChange_37_0() { -} - -u32 sub_unk3_37_1() { - return 1; -} - -void sub_StateChange_37_1() { -} - -u32 sub_unk3_MinishCracks_LonLonRanchNorth() { - return 1; -} - -void sub_StateChange_MinishCracks_LonLonRanchNorth() { -} - -u32 sub_unk3_MinishCracks_LakeHyliaEast() { - return 1; -} - -void sub_StateChange_MinishCracks_LakeHyliaEast() { -} - -u32 sub_unk3_MinishCracks_HyruleCastleGarden() { - return 1; -} - -void sub_StateChange_MinishCracks_HyruleCastleGarden() { -} - -u32 sub_unk3_MinishCracks_MtCrenel() { - return 1; -} - -void sub_StateChange_MinishCracks_MtCrenel() { -} - -u32 sub_unk3_MinishCracks_EastHyruleCastle() { - return 1; -} - -void sub_StateChange_MinishCracks_EastHyruleCastle() { -} - -u32 sub_unk3_MinishCracks_5() { - return 1; -} - -void sub_StateChange_MinishCracks_5() { -} - -u32 sub_unk3_MinishCracks_CastleWildsBowHole() { - return 1; -} - -extern EntityData gUnk_080DCB10; - -void sub_StateChange_MinishCracks_CastleWildsBowHole(void) { - - // bow - if (!GetInventoryValue(0x9)) { - LoadRoomEntityList(&gUnk_080DCB10); - } -} - -u32 sub_unk3_MinishCracks_RuinsEntrance() { - return 1; -} - -void sub_StateChange_MinishCracks_RuinsEntrance() { -} - -u32 sub_unk3_MinishCracks_MinishWoodsSouth() { - return 1; -} - -void sub_StateChange_MinishCracks_MinishWoodsSouth() { -} - -u32 sub_unk3_MinishCracks_CastorWildsNorth() { - return 1; -} - -void sub_StateChange_MinishCracks_CastorWildsNorth() { -} - -u32 sub_unk3_MinishCracks_CastorWildsWest() { - return 1; -} - -void sub_StateChange_MinishCracks_CastorWildsWest() { -} - -u32 sub_unk3_MinishCracks_CastorWildsMiddle() { - return 1; -} - -void sub_StateChange_MinishCracks_CastorWildsMiddle() { -} - -u32 sub_unk3_MinishCracks_RuinsTektite() { - return 1; -} - -void sub_StateChange_MinishCracks_RuinsTektite() { -} - -u32 sub_unk3_MinishCracks_CastorWildsNextToBow() { - return 1; -} - -void sub_StateChange_MinishCracks_CastorWildsNextToBow() { -} - -u32 sub_unk3_MinishCracks_E() { - return 1; -} - -void sub_StateChange_MinishCracks_E() { -} - -u32 sub_unk3_MinishCracks_F() { - return 1; -} - -void sub_StateChange_MinishCracks_F() { -} - -u32 sub_unk3_MinishCracks_10() { - return 1; -} - -void sub_StateChange_MinishCracks_10() { -} - -u32 sub_unk3_MinishCracks_11() { - return 1; -} - -void sub_StateChange_MinishCracks_11() { -} - -u32 sub_unk3_MelarisMine_Main() { - return 1; -} - -extern EntityData gUnk_additional_8_MelarisMine_Main; -extern EntityData gUnk_additional_9_MelarisMine_Main; -extern EntityData gUnk_080DD294; - -void sub_StateChange_MelarisMine_Main(void) { - - if (!CheckGlobalFlag(WHITE_SWORD_END)) { - LoadRoomEntityList(&gUnk_additional_8_MelarisMine_Main); - } - if (!CheckLocalFlag(0x7f)) { - LoadRoomEntityList(&gUnk_additional_9_MelarisMine_Main); - } else { - LoadRoomEntityList(&gUnk_080DD294); - } - SetLocalFlag(0x8e); -} - -u32 sub_unk3_CloudTops_House() { - return 1; -} - -extern EntityData gUnk_080DD364; - -void sub_StateChange_CloudTops_House(void) { - if (!(gSave.windcrests & 0x4000000)) { - LoadRoomEntityList(&gUnk_080DD364); - } -} - -void sub_unk1_CloudTops_House(void) { - if (!(gSave.windcrests & 0x4000000)) { - LoadRoomEntityList(&gUnk_080DD364); - } -} - -u32 sub_unk3_CloudTops_Middle() { - return 1; -} - -void sub_StateChange_CloudTops_Middle() { -} - -u32 sub_unk3_CloudTops_Bottom() { - return 1; -} - -extern EntityData gUnk_080DD7E0; -extern EntityData gUnk_080DD840; - -void sub_StateChange_CloudTops_Bottom(void) { - - if (CheckGlobalFlag(KUMOTATSUMAKI)) { - sub_0809F814(0x6de); - } -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckLocalFlag(0xf0)) { -#else - if (CheckLocalFlag(0xf3)) { -#endif - sub_0809F814(0xe0); - } else { - LoadRoomEntityList(&gUnk_080DD7E0); - } -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckLocalFlag(0xf2)) { -#else - if (CheckLocalFlag(0xf5)) { -#endif - sub_0809F814(0xba3); - } else { - LoadRoomEntityList(&gUnk_080DD840); - } -} - -u32 sub_unk3_Ruins_Entrance() { - return 1; -} - -void sub_StateChange_Ruins_Entrance() { - sub_080300E8(); -#if defined(JP) || defined(EU) || defined(DEMO_JP) - SetLocalFlag(0x25); -#else - SetLocalFlag(0x24); -#endif -} - -u32 sub_unk3_Ruins_Beanstalk() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk() { -} - -u32 sub_unk3_Ruins_TripleTektites() { - return 1; -} - -extern EntityData gUnk_080DDE88; - -void sub_StateChange_Ruins_TripleTektites(void) { - - if (CheckKinstoneFused(0x41)) { - LoadRoomEntityList(&gUnk_080DDE88); - } -} - -void sub_unk1_Ruins_TripleTektites(void) { -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckLocalFlagByBank(0x100, 0x28)) { -#else - if (CheckLocalFlagByBank(0x100, 0x27)) { -#endif - SetDirtTile(0x85); - } -} - -u32 sub_unk3_Ruins_LadderToTektites() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites() { -} - -u32 sub_unk3_Ruins_FortressEntrance() { - return 1; -} - -extern EntityData gUnk_080DE008; - -void sub_StateChange_Ruins_FortressEntrance(void) { - - sub_080300E8(); - if (CheckGlobalFlag(LV3_CLEAR) && !CheckLocalFlag(3)) { - LoadRoomEntityList(&gUnk_080DE008); - } -} - -u32 sub_unk3_Ruins_Armos() { - return 1; -} - -extern EntityData gUnk_080DE1E0; -extern EntityData gUnk_080DE200; - -void sub_StateChange_Ruins_Armos(void) { - - sub_080300E8(); -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0x31)) { -#else - if (!CheckLocalFlag(0x30)) { -#endif - LoadRoomEntityList(&gUnk_080DE1E0); - } -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0x32)) { -#else - if (!CheckLocalFlag(0x31)) { -#endif - LoadRoomEntityList(&gUnk_080DE200); - } -} - -u32 sub_unk3_DeepwoodShrine_Madderpillar() { - return 1; -} - -extern EntityData gUnk_080DE4C8; - -void sub_StateChange_DeepwoodShrine_Madderpillar(void) { - - if ((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) < (gRoomControls.height >> 1)) { - if (!CheckLocalFlag(0x17)) { - LoadRoomEntityList(&gUnk_080DE4C8); - } - } -} - -u32 sub_unk3_DeepwoodShrine_BluePortal() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_BluePortal() { -} - -u32 sub_unk3_DeepwoodShrine_StairsToB1() { - return 1; -} - -extern EntityData gUnk_080DE814; -extern EntityData gUnk_additional_8_DeepwoodShrine_StairsToB1; - -void sub_StateChange_DeepwoodShrine_StairsToB1(void) { - - if (!CheckLocalFlag(0x4b)) { - LoadRoomEntityList(&gUnk_080DE814); - } else { - if (!CheckLocalFlag(0x4c)) { - LoadRoomEntityList(&gUnk_additional_8_DeepwoodShrine_StairsToB1); - SetTileType(0x79, 0x285, 1); - } else { - SetTileType(0x7a, 0x285, 1); - if (!CheckLocalFlag(0x24)) { - SetTileType(0x73, 0x205, 1); - } - } - } -} - -u32 sub_unk3_DeepwoodShrine_PotBridge() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_PotBridge() { -} - -u32 sub_unk3_DeepwoodShrine_DoubleStatue() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_DoubleStatue() { -} - -u32 sub_unk3_DeepwoodShrine_Map() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_Map() { -} - -u32 sub_unk3_DeepwoodShrine_Barrel() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_Barrel(void) { - if (gSave.unk7 == 0) { - goto a; - } - if (gSave.unk7 != 2) { - a: - SetTileType(0x90, 0x20b, 1); - SetTileType(0x90, 0x411, 1); - } else { - SetTileType(0x90, 0x211, 1); - SetTileType(0x90, 0x40b, 1); - } - if (CheckLocalFlag(0x15)) { - SetTileType(0x76, 0x304, 2); - } - if (CheckLocalFlag(0x16)) { - SetTileType(0x76, 0x318, 2); - } -} - -u32 sub_unk3_DeepwoodShrine_Button() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_Button() { -} - -u32 sub_unk3_DeepwoodShrine_Mulldozer() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_Mulldozer() { -} - -u32 sub_unk3_DeepwoodShrine_Pillars() { - return 1; -} -void sub_StateChange_DeepwoodShrine_Pillars() { -} - -u32 sub_unk3_DeepwoodShrine_Lever() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_Lever() { -} - -u32 sub_unk3_DeepwoodShrine_Entrance() { - return 1; -} - -#if defined(DEMO_USA) || defined(DEMO_JP) -void sub_StateChange_DeepwoodShrine_Entrance() { -#ifdef DEMO_USA - if (gSaveHeader->saveFileId != 0 && GetInventoryValue(0x40) == 0) { -#else -#ifdef DEMO_JP - if (GetInventoryValue(0x40) == 0) { -#endif -#endif - SetTileType(0x365, 0x349, 1); - SetTileType(0x365, 0x34a, 1); - SetTileType(0x365, 0x34b, 1); - } -} -#else -void sub_StateChange_DeepwoodShrine_Entrance() { -} -#endif - -u32 sub_unk3_DeepwoodShrine_Torch() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_Torch() { -} - -u32 sub_unk3_DeepwoodShrine_BossKey() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_BossKey() { -} - -u32 sub_unk3_DeepwoodShrine_Compass() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_Compass() { -} - -u32 sub_unk3_DeepwoodShrine_13() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_13() { -} - -u32 sub_unk3_DeepwoodShrine_LilyPadWest() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_LilyPadWest() { -} - -u32 sub_unk3_DeepwoodShrine_LilyPadEast() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_LilyPadEast() { -} - -u32 sub_unk3_DeepwoodShrineBoss_Main() { - return 1; -} - -extern EntityData gUnk_additional_a_DeepwoodShrineBoss_Main; - -extern u8 gUpdateVisibleTiles; -extern u32 gUsedPalettes; - -void sub_StateChange_DeepwoodShrineBoss_Main(void) { - - if (!CheckLocalFlag(0x48)) { - SetLocalFlag(0x48); - MenuFadeIn(5, 0); - gUpdateVisibleTiles = 0; - gFadeControl.active = 0; - gUsedPalettes = 0; - *(u16*)0x5000000 = 0x7fff; - DispReset(1); - } - if (CheckGlobalFlag(LV1_CLEAR)) { - LoadRoomEntityList(&gUnk_additional_a_DeepwoodShrineBoss_Main); - } else { - SoundReq(SONG_STOP_BGM); - gArea.musicIndex = gArea.pMusicIndex; - } -} - -u32 sub_unk3_DeepwoodShrine_PreBoss() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_PreBoss() { -} - -u32 sub_unk3_DeepwoodShrine_InsideBarrel() { - return 1; -} - -void sub_StateChange_DeepwoodShrine_InsideBarrel(void) { - sub_08058D34(); - gArea.areaMetadata |= 0x40; - gMain.transition = 5; -} - -u32 sub_unk3_DeepwoodShrineEntry_Main() { - return 1; -} - -extern EntityData gUnk_080DFB78; - -void sub_StateChange_DeepwoodShrineEntry_Main(void) { - if (CheckGlobalFlag(LV1_CLEAR) && !CheckLocalFlagByBank(0x100, 1)) { - LoadRoomEntityList(&gUnk_080DFB78); - } -} - -u32 sub_unk3_CaveOfFlames_AfterCane() { - return 1; -} - -void sub_StateChange_CaveOfFlames_AfterCane() { -} - -u32 sub_unk3_CaveOfFlames_SpinyChus() { - return 1; -} - -void sub_StateChange_CaveOfFlames_SpinyChus() { -} - -u32 sub_unk3_CaveOfFlames_CartToSpinyChus() { - return 1; -} - -void sub_StateChange_CaveOfFlames_CartToSpinyChus() { -} - -u32 sub_unk3_CaveOfFlames_Entrance() { - return 1; -} - -#ifdef DEMO_USA -void sub_StateChange_CaveOfFlames_Entrance() { - if (GetInventoryValue(0x41) == 0) { - SetTileType(0x365, 0x287, 2); - SetTileType(0x365, 0x288, 2); - SetTileType(0x365, 0x289, 2); - } -} -#else -void sub_StateChange_CaveOfFlames_Entrance() { -} -#endif - -u32 sub_unk3_CaveOfFlames_MainCart() { - return 1; -} - -void sub_StateChange_CaveOfFlames_MainCart() { -} - -u32 sub_unk3_CaveOfFlames_NorthEntrance() { - return 1; -} - -void sub_StateChange_CaveOfFlames_NorthEntrance() { -} - -u32 sub_unk3_CaveOfFlames_CartWest() { - return 1; -} - -void sub_StateChange_CaveOfFlames_CartWest() { -} - -u32 sub_unk3_CaveOfFlames_Helmasaur() { - return 1; -} - -void sub_StateChange_CaveOfFlames_Helmasaur() { -} - -u32 sub_unk3_CaveOfFlames_Rollobite() { - return 1; -} - -void sub_StateChange_CaveOfFlames_Rollobite() { -} - -u32 sub_unk3_CaveOfFlames_MinishLava() { - return 1; -} - -void sub_StateChange_CaveOfFlames_MinishLava() { -} - -u32 sub_unk3_CaveOfFlames_MinishSpikes() { - return 1; -} - -void sub_StateChange_CaveOfFlames_MinishSpikes() { -} - -u32 sub_unk3_CaveOfFlames_RollobiteSwitch() { - return 1; -} - -void sub_StateChange_CaveOfFlames_RollobiteSwitch() { -} - -extern u32 gUnk_080E103C; - -u32 sub_unk3_CaveOfFlames_BeforeGleerok(void) { - if (CheckGlobalFlag(LV2_CLEAR)) { - gRoomVars.field_0x6c[1] = &gUnk_080E103C; - } - return 1; -} - -void sub_StateChange_CaveOfFlames_BeforeGleerok() { -} - -u32 sub_unk3_CaveOfFlames_PathBossKey() { - return 1; -} - -void sub_StateChange_CaveOfFlames_PathBossKey() { -} - -u32 sub_unk3_CaveOfFlames_PathBossKey2() { - return 1; -} - -void sub_StateChange_CaveOfFlames_PathBossKey2() { -} - -u32 sub_unk3_CaveOfFlames_Compass() { - return 1; -} - -void sub_StateChange_CaveOfFlames_Compass() { -} - -u32 sub_unk3_CaveOfFlames_Bobomb() { - return 1; -} - -void sub_StateChange_CaveOfFlames_Bobomb() { -} - -u32 sub_unk3_CaveOfFlames_BossDoor() { - return 1; -} - -void sub_StateChange_CaveOfFlames_BossDoor() { -} - -u32 sub_unk3_CaveOfFlames_18() { - return 1; -} - -void sub_StateChange_CaveOfFlames_18() { -} - -u32 sub_unk3_CaveOfFlamesBoss_Main() { - return 1; -} - -extern EntityData gUnk_additional_a_CaveOfFlamesBoss_Main; - -extern u32 gUnk_0200B650; - -void sub_StateChange_CaveOfFlamesBoss_Main(void) { - - if (CheckGlobalFlag(LV2_CLEAR)) { - gUnk_0200B650 = 0; - gScreen.lcd.displayControl &= ~DISPCNT_BG1_ON; - sub_0807AABC(&gPlayerEntity); - LoadRoomEntityList(&gUnk_additional_a_CaveOfFlamesBoss_Main); - } else { - SoundReq(SONG_STOP_BGM); - gArea.musicIndex = gArea.pMusicIndex; - } -} - -u32 sub_unk3_FortressOfWinds_Eyegore() { - return 1; -} - -void sub_StateChange_FortressOfWinds_Eyegore() { -} - -u32 sub_unk3_FortressOfWinds_BeforeMazaal() { - return 1; -} - -void sub_StateChange_FortressOfWinds_BeforeMazaal(void) { - gScreenTransition.field_0x38 = 0; - gScreenTransition.field_0x39 = 0x5a; -} - -u32 sub_unk3_FortressOfWinds_EastKeyLever() { - return 1; -} - -void sub_StateChange_FortressOfWinds_EastKeyLever() { - sub_080300E8(); -} - -u32 sub_unk3_FortressOfWinds_PitPlatforms() { - return 1; -} - -void sub_StateChange_FortressOfWinds_PitPlatforms() { -} - -u32 sub_unk3_FortressOfWinds_WestKeyLever() { - return 1; -} - -void sub_StateChange_FortressOfWinds_WestKeyLever() { - sub_080300E8(); -} - -u32 sub_unk3_FortressOfWinds_Darknut() { - return 1; -} - -void sub_StateChange_FortressOfWinds_Darknut() { -} - -u32 sub_unk3_FortressOfWinds_EyeBridge() { - return 1; -} - -void sub_StateChange_FortressOfWinds_EyeBridge() { -} - -u32 sub_unk3_FortressOfWinds_Pit() { - return 1; -} - -void sub_StateChange_FortressOfWinds_Pit() { -} - -u32 sub_unk3_FortressOfWinds_Wallmaster() { - return 1; -} - -void sub_StateChange_FortressOfWinds_Wallmaster() { -} - -u32 sub_unk3_FortressOfWinds_Clone() { - return 1; -} - -void sub_StateChange_FortressOfWinds_Clone() { -} - -u32 sub_unk3_FortressOfWinds_SpikeTraps() { - return 1; -} - -void sub_StateChange_FortressOfWinds_SpikeTraps() { -} - -u32 sub_unk3_FortressOfWinds_Mazaal() { - return 1; -} - -void sub_StateChange_FortressOfWinds_Mazaal(void) { - - if (!CheckFlags(0x31)) { - if (gScreenTransition.field_0x38 == 0) { - SoundReq(SONG_STOP_BGM); - } else { - if (gScreenTransition.field_0x39 == 0) { - SoundReq(SONG_STOP); - SetPlayerControl(3); - } - } - gArea.musicIndex = gArea.pMusicIndex; - } -} - -u32 sub_unk3_FortressOfWinds_Stalfos() { - return 1; -} - -void sub_StateChange_FortressOfWinds_Stalfos() { -} - -u32 sub_unk3_FortressOfWinds_EntranceMoleMitts() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade0() { -} - -u32 sub_unk3_FortressOfWinds_Main2F() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade1() { -} - -u32 sub_unk3_FortressOfWinds_MinishHole() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade2() { -} - -u32 sub_unk3_FortressOfWinds_BossKey() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade3() { -} - -u32 sub_unk3_FortressOfWinds_WestStairs2F() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade4() { -} - -u32 sub_unk3_FortressOfWinds_EastStairs2F() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade5() { -} - -u32 sub_unk3_FortressOfWinds_WestStairs1F() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade6() { -} - -u32 sub_unk3_FortressOfWinds_CenterStairs1F() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade7() { -} - -u32 sub_unk3_FortressOfWinds_EastStairs1F() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade8() { -} - -u32 sub_unk3_FortressOfWinds_Wizzrobe() { - return 1; -} - -void sub_StateChange_Dojos_Waveblade9() { -} - -u32 sub_unk3_FortressOfWinds_HeartPiece() { - return 1; -} - -void sub_StateChange_Dojos_70() { -} - -u32 sub_unk3_InnerMazaal_Main() { - return 1; -} - -void sub_StateChange_Dojos_71() { -} - -u32 sub_unk3_FortressOfWindsTop_Main() { - return 1; -} - -extern EntityData gUnk_080E3850; - -void sub_StateChange_FortressOfWindsTop_Main(void) { - - SetGlobalFlag(LV3_CLEAR); - UpdateGlobalProgress(); - sub_0805B4D0(3); - // wind ocarina - if (!GetInventoryValue(0x17) && CheckLocalFlag(0x45)) { - LoadRoomEntityList(&gUnk_080E3850); - } -} - -u32 sub_unk3_TempleOfDroplets_WestHole() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_WestHole() { - sub_0804D0B4(); -} - -void sub_0804D0B4(void) { - - if (!CheckLocalFlag(0x29)) { - SetLocalFlag(0x29); - SetLocalFlag(0x4b); - SetLocalFlag(0x4e); - } -} - -u32 sub_unk3_TempleOfDroplets_NorthSplit() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_NorthSplit() { -} - -u32 sub_unk3_TempleOfDroplets_EastHole() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_EastHole() { -} - -u32 sub_unk3_TempleOfDroplets_Entrance() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_Entrance() { -} - -u32 sub_unk3_TempleOfDroplets_NorthwestStairs() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_NorthwestStairs() { -} - -u32 sub_unk3_TempleOfDroplets_ScissorsMiniboss() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_ScissorsMiniboss() { -} - -u32 sub_unk3_TempleOfDroplets_WaterfallNorthwest() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_WaterfallNorthwest() { -} - -u32 sub_unk3_TempleOfDroplets_WaterfallNortheast() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_WaterfallNortheast() { -} - -u32 sub_unk3_TempleOfDroplets_Element() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_Element() { -} - -u32 sub_unk3_TempleOfDroplets_IceCorner() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_IceCorner() { -} - -u32 sub_unk3_TempleOfDroplets_IcePitMaze() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_IcePitMaze() { -} - -u32 sub_unk3_TempleOfDroplets_HoleToBlueChuchu() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_HoleToBlueChuchu() { -} - -u32 sub_unk3_TempleOfDroplets_WaterfallSoutheast() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_WaterfallSoutheast() { -} - -u32 sub_unk3_TempleOfDroplets_WaterfallSouthwest() { - return 1; -} - -void sub_StateChange_TempleOfDroplets_WaterfallSouthwest() { -} - -u32 sub_unk3_TempleOfDroplets_BigOcto() { - return 1; -} - -extern EntityData gUnk_additional_a_TempleOfDroplets_BigOcto; - -void sub_StateChange_TempleOfDroplets_BigOcto(void) { - ChangeLightLevel(0x100); - if (CheckGlobalFlag(LV4_CLEAR)) { - LoadRoomEntityList(&gUnk_additional_a_TempleOfDroplets_BigOcto); - } else { - SoundReq(SONG_STOP_BGM); - gArea.musicIndex = gArea.pMusicIndex; - } -} - -u32 sub_unk3_TempleOfDroplets_ToBigBlueChuchu() { - return 1; -} - -void sub_StateChange_Dojos_72() { -} - -u32 sub_unk3_TempleOfDroplets_BigBlueChuchu() { - return 1; -} - -extern EntityData gUnk_080E4BD8; - -void sub_StateChange_TempleOfDroplets_BigBlueChuchu(void) { - if (!CheckLocalFlag(0x48)) { - ClearLocalFlag(0x46); - LoadRoomEntityList(&gUnk_080E4BD8); - } -} - -u32 sub_unk3_TempleOfDroplets_BigBlueChuchuKey() { - return 1; -} - -extern EntityData gUnk_080E4CF8; -extern EntityData gUnk_080E4CD8; - -void sub_StateChange_TempleOfDroplets_BigBlueChuchuKey(void) { - - sub_0804D0B4(); - if (CheckLocalFlag(0x6c)) { - LoadRoomEntityList(&gUnk_080E4CD8); - } else { - LoadRoomEntityList(&gUnk_080E4CF8); - } - if (!CheckLocalFlag(0x4b)) { - ClearLocalFlag(0x49); - } -} - -u32 sub_unk3_TempleOfDroplets_BossKey() { - return 1; -} - -void sub_StateChange_Dojos_73() { -} - -u32 sub_unk3_TempleOfDroplets_NorthSmallKey() { - return 1; -} - -void sub_StateChange_Dojos_74() { -} - -u32 sub_unk3_TempleOfDroplets_BlockCloneButtonPuzzle() { - return 1; -} - -void sub_StateChange_Dojos_75() { -} - -u32 sub_unk3_TempleOfDroplets_BlockClonePuzzle() { - return 1; -} - -void sub_StateChange_Dojos_76() { -} - -u32 sub_unk3_TempleOfDroplets_BlockCloneIceBridge() { - return 1; -} - -void sub_StateChange_Dojos_77() { -} - -u32 sub_unk3_TempleOfDroplets_StairsToScissorsMiniboss() { - return 1; -} - -void sub_StateChange_Dojos_78() { -} - -u32 sub_unk3_TempleOfDroplets_SpikeBar() { - return 1; -} - -void sub_StateChange_Dojos_79() { -} - -u32 sub_unk3_TempleOfDroplets_Lanterns() { - return 1; -} - -void sub_StateChange_Dojos_80() { -} - -u32 sub_unk3_TempleOfDroplets_LilypadIceBlocks() { - return 1; -} - -extern EntityData gUnk_080E5660; -extern EntityData gUnk_080E5680; - -void sub_StateChange_TempleOfDroplets_LilypadIceBlocks(void) { - - if (!CheckLocalFlag(0x59)) { - LoadRoomEntityList(&gUnk_080E5660); - } else { - LoadRoomEntityList(&gUnk_080E5680); - } -} - -u32 sub_unk3_TempleOfDroplets_Pit() { - return 1; -} - -void sub_StateChange_Dojos_81() { -} - -u32 sub_unk3_TempleOfDroplets_FireBars() { - return 1; -} - -void sub_StateChange_Dojos_82() { -} - -u32 sub_unk3_TempleOfDroplets_LanternMaze() { - return 1; -} - -void sub_StateChange_Dojos_83() { -} - -u32 sub_unk3_TempleOfDroplets_Madderpillars() { - return 1; -} - -void sub_StateChange_Dojos_84() { -} - -u32 sub_unk3_TempleOfDroplets_AfterMadderpillars() { - return 1; -} - -void sub_StateChange_Dojos_85() { -} - -u32 sub_unk3_TempleOfDroplets_BlueChuchuKeyLever() { - return 1; -} - -extern EntityData gUnk_080E5E3C; -extern EntityData gUnk_080E5E5C; - -void sub_StateChange_TempleOfDroplets_BlueChuchuKeyLever(void) { - sub_0804D0B4(); - if (!CheckLocalFlag(0x4b)) { - LoadRoomEntityList(&gUnk_080E5E3C); - } else { - LoadRoomEntityList(&gUnk_080E5E5C); - } -} - -u32 sub_unk3_TempleOfDroplets_MulldozerKey() { - return 1; -} - -void sub_StateChange_Dojos_86() { -} - -u32 sub_unk3_TempleOfDroplets_BombWall() { - return 1; -} - -void sub_StateChange_Dojos_87() { -} - -u32 sub_unk3_TempleOfDroplets_LilypadWestB2() { - return 1; -} - -void sub_StateChange_Dojos_88() { -} - -u32 sub_unk3_TempleOfDroplets_CompassRoom() { - return 1; -} - -void sub_StateChange_Dojos_89() { -} - -u32 sub_unk3_TempleOfDroplets_LanternScissors() { - return 1; -} - -void sub_StateChange_Dojos_90() { -} - -u32 sub_unk3_TempleOfDroplets_LilypadMiddleB2() { - return 1; -} - -void sub_StateChange_Dojos_91() { -} - -u32 sub_unk3_TempleOfDroplets_LilypadEastB2() { - return 1; -} - -void sub_StateChange_Dojos_92() { -} - -u32 sub_unk3_TempleOfDroplets_FlameBarBlockPuzzle() { - return 1; -} - -void sub_StateChange_Dojos_93() { -} - -u32 sub_unk3_RoyalCrypt_KingGustaf() { - return 1; -} - -extern EntityData gUnk_080E693C; - -void sub_StateChange_RoyalCrypt_KingGustaf(void) { - - if (!CheckLocalFlag(0x32)) { - LoadRoomEntityList(&gUnk_080E693C); - } -} - -u32 sub_unk3_RoyalCrypt_WaterRope() { - return 1; -} - -void sub_StateChange_Dojos_94() { -} - -u32 sub_unk3_RoyalCrypt_Gibdo() { - return 1; -} - -void sub_StateChange_Dojos_95() { -} - -u32 sub_unk3_RoyalCrypt_3() { - return 1; -} - -void sub_StateChange_Dojos_96() { -} - -u32 sub_unk3_RoyalCrypt_KeyBlock() { - return 1; -} - -void sub_StateChange_Dojos_97() { -} - -u32 sub_unk3_RoyalCrypt_5() { - return 1; -} - -void sub_StateChange_Dojos_98() { -} - -u32 sub_unk3_RoyalCrypt_6() { - return 1; -} - -void sub_StateChange_Dojos_99() { -} - -u32 sub_unk3_RoyalCrypt_MushroomPit() { - return 1; -} - -void sub_StateChange_RoyalCrypt_MushroomPit() { - sub_08054570(); -} - -u32 sub_unk3_RoyalCrypt_Entrance() { - return 1; -} - -extern EntityData gUnk_080E718C; -extern EntityData gUnk_080E71AC; - -void sub_StateChange_RoyalCrypt_Entrance(void) { - - SetTileType(0x312, 0x108, 1); - sub_08054570(); - if (!CheckLocalFlag(0xc4)) { - LoadRoomEntityList(&gUnk_080E718C); - } - if (!CheckLocalFlag(0xc5)) { - LoadRoomEntityList(&gUnk_080E71AC); - } -} - -u32 sub_unk3_PalaceOfWinds_0() { - return 1; -} - -extern EntityData gUnk_additional_9_PalaceOfWinds_0; -extern EntityData gUnk_080E72C4; -extern EntityData gUnk_additional_8_PalaceOfWinds_0; - -void sub_StateChange_PalaceOfWinds_0(void) { - - Manager19_Main(0); - if (CheckGlobalFlag(LV5_CLEAR)) { - LoadRoomEntityList(&gUnk_additional_9_PalaceOfWinds_0); - } - if (!CheckLocalFlag(0x7b)) { - LoadRoomEntityList(&gUnk_080E72C4); - } else { - SetGlobalFlag(LV5_CLEAR); - // wind element - if (!GetInventoryValue(0x43)) { - SetPlayerControl(3); - LoadRoomEntityList(&gUnk_additional_8_PalaceOfWinds_0); - gArea.musicIndex = gArea.pMusicIndex; - SoundReq(SONG_STOP_BGM); - } - } -} - -u32 sub_unk3_PalaceOfWinds_1() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_1() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_2() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_2() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_3() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_3() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_4() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_4() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_5() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_5() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_6() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_6() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_7() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_7() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_8() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_8() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_9() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_9() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_10() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_10() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_11() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_11() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_12() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_12() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_13() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_13() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_14() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_14() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_15() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_15() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_16() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_16() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_17() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_17() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_18() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_18() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_19() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_19() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_20() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_20() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_21() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_21() { -} - -u32 sub_unk3_PalaceOfWinds_22() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_22() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_23() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_23() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_24() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_24() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_25() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_25() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_26() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_26() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_27() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_27() { -} - -u32 sub_unk3_PalaceOfWinds_28() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_28() { -} - -u32 sub_unk3_PalaceOfWinds_29() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_29() { -} - -u32 sub_unk3_PalaceOfWinds_30() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_30() { -} - -u32 sub_unk3_PalaceOfWinds_31() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_31() { -} - -u32 sub_unk3_PalaceOfWinds_32() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_32() { -} - -u32 sub_unk3_PalaceOfWinds_33() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_33() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_34() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_34() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_35() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_35() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_36() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_36() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_37() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_37() { -} - -u32 sub_unk3_PalaceOfWinds_38() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_38() { -} - -u32 sub_unk3_PalaceOfWinds_39() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_39() { -} - -u32 sub_unk3_PalaceOfWinds_40() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_40() { -} - -u32 sub_unk3_PalaceOfWinds_41() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_41() { -} - -u32 sub_unk3_PalaceOfWinds_42() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_42() { -} - -u32 sub_unk3_PalaceOfWinds_43() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_43() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_44() { - return 1; -} - -extern EntityData gUnk_080EA09C; - -void sub_StateChange_PalaceOfWinds_44(void) { - Manager19_Main(0); - if (!CheckLocalFlag(0x70)) { - LoadRoomEntityList(&gUnk_080EA09C); - } -} - -u32 sub_unk3_PalaceOfWinds_45() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_45() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_46() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_46() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_47() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_47() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_48() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_48() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_49() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_49() { - Manager19_Main(0); -} - -u32 sub_unk3_PalaceOfWinds_50() { - return 1; -} - -void sub_StateChange_PalaceOfWinds_50() { -} - -u32 sub_unk3_PalaceOfWindsBoss_Main() { - return 1; -} - -void sub_StateChange_PalaceOfWindsBoss_Main() { -} - -u32 sub_unk3_Vaati2_Main() { - return 1; -} - -void sub_StateChange_Vaati2_Main(void) { - SoundReq(SONG_STOP_BGM); - gArea.musicIndex = gArea.pMusicIndex; -} - -u32 sub_unk3_Vaati3_Main() { - return 1; -} - -void sub_StateChange_Vaati3_Main(void) { - Manager2F_Main(0); - - if ((gScreenTransition.field_0x38 & 1) && gScreenTransition.field_0x39) { - if (gScreenTransition.field_0x3c == 1) { - gPlayerEntity.x.HALF.HI = gScreenTransition.field_0x48; - gPlayerEntity.y.HALF.HI = gScreenTransition.field_0x4a + 8; - } else { - if (gScreenTransition.field_0x3c) { - return; - } - gPlayerEntity.x.HALF.HI = gScreenTransition.field_0x44; - gPlayerEntity.y.HALF.HI = gScreenTransition.field_0x46 + 8; - } - } -} - -u32 sub_unk3_DarkHyruleCastleBridge_Main() { - return 1; -} - -void sub_StateChange_DarkHyruleCastleBridge_Main() { - sub_0805B4D0(6); -} - -u32 sub_unk3_VaatisArms_First() { - return 1; -} - -void sub_StateChange_VaatisArms_First() { -} - -u32 sub_unk3_VaatisArms_Second() { - return 1; -} - -void sub_StateChange_VaatisArms_Second() { -} - -u32 sub_unk3_DarkHyruleCastleOutside_ZeldaStatuePlatform() { - sub_080534AC(); - return 1; -} - -extern EntityData gUnk_080EAD68; -extern EntityData gUnk_080EADB8; - -void sub_StateChange_DarkHyruleCastleOutside_ZeldaStatuePlatform(void) { - - sub_0805B4D0(4); - if (!CheckLocalFlag(0x77)) { - LoadRoomEntityList(&gUnk_080EAD68); - } else if (!CheckLocalFlag(0x79)) { - LoadRoomEntityList(&gUnk_080EADB8); - SetTileType(0x4072, 0x145, 1); - SetTileType(0x4072, 0x149, 1); - gArea.pMusicIndex = 0; - } -} - -extern u16 gUnk_080EAE00; - -void sub_0804D7EC(void) { - u16 temp; - u16* tilePos; - - tilePos = &gUnk_080EAE00; - while (*tilePos != 0) { - temp = *tilePos; - tilePos++; - SetTileType(0x4072, temp, 1); - } -} - -void sub_0804D810(void) { - u16 uVar1; - u16* puVar2; - - puVar2 = &gUnk_080EAE00; - while (*puVar2 != 0) { - uVar1 = *puVar2; - puVar2++; - sub_0807BA8C(uVar1, 1); - } -} - -u32 sub_unk3_DarkHyruleCastleOutside_Garden() { - return 1; -} - -extern EntityData gUnk_080EAE60; -extern EntityData gUnk_080EAEC0; -extern EntityData gUnk_080EAF20; - -void sub_StateChange_DarkHyruleCastleOutside_Garden(void) { - gArea.areaMetadata = 0x40; - gArea.locationIndex = 0; - if (CheckGlobalFlag(ENDING)) { - if (!CheckLocalFlag(0x7f)) { - LoadRoomEntityList(&gUnk_080EAEC0); - SetLocalFlag(0x7f); - gArea.pMusicIndex = 0x11; - } else { - LoadRoomEntityList(&gUnk_080EAF20); - gArea.pMusicIndex = gArea.musicIndex; - } - } else { - if (CheckLocalFlag(0x79)) { - gArea.pMusicIndex = gArea.musicIndex; - } - if (!CheckLocalFlag(1)) { - LoadRoomEntityList(&gUnk_080EAE60); - } - } - ClearGlobalFlag(0x5d); -} - -u32 sub_unk3_DarkHyruleCastleOutside_OutsideNorthwest() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade0() { -} - -u32 sub_unk3_DarkHyruleCastleOutside_OutsideNortheast() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade1() { -} - -u32 sub_unk3_DarkHyruleCastleOutside_OutsideEast() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade2() { -} - -u32 sub_unk3_DarkHyruleCastleOutside_OutsideSouthwest() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade3() { -} - -u32 sub_unk3_DarkHyruleCastleOutside_OutsideSouth() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade4() { -} - -u32 sub_unk3_DarkHyruleCastleOutside_OutsideSoutheast() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade5() { -} - -u32 sub_unk3_DarkHyruleCastleOutside_8() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade6() { -} - -extern u32 gUnk_080EB604; -extern u32 gUnk_080EB5D4; - -u32 sub_unk3_DarkHyruleCastle_0(void) { - - if (CheckGlobalFlag(ENDING)) { - gRoomVars.field_0x6c[0] = &gUnk_080EB604; - gRoomVars.field_0x6c[2] = 0; - gArea.musicIndex = gArea.pMusicIndex = 0x11; - } else if (CheckLocalFlag(0x79)) { - gRoomVars.field_0x6c[0] = NULL; - if (!CheckLocalFlag(0x7a)) { - SetGlobalFlag(ZELDA_CHASE); - gRoomVars.field_0x6c[0] = &gUnk_080EB5D4; - gRoomVars.field_0x6c[7] = sub_0804D9B0; - gRoomVars.field_0x6c[2] = 0; - } - } - return 1; -} - -void sub_StateChange_DarkHyruleCastle_0(void) { - if (CheckGlobalFlag(ENDING)) { - gArea.pMusicIndex = gArea.musicIndex; - } - - if (CheckLocalFlag(0x79)) { - sub_0804D9B0(); - } -} - -extern EntityData gUnk_080EB684; - -void sub_0804D9B0(void) { - sub_0807BB98(0x797, 1, 5, 1); - sub_0807BB98(0x357, 1, 5, 1); - sub_0807BB98(0x55f, 1, 2, 1); - LoadRoomEntityList(&gUnk_080EB684); - gArea.pMusicIndex = gArea.musicIndex; -} - -u32 sub_unk3_DarkHyruleCastle_1() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade7() { -} - -u32 sub_unk3_DarkHyruleCastle_2() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade8() { -} - -u32 sub_unk3_DarkHyruleCastle_3() { - return 1; -} - -void sub_StateChange_Dojos_ToGrimblade9() { -} - -u32 sub_unk3_DarkHyruleCastle_4() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade0() { -} - -u32 sub_unk3_DarkHyruleCastle_5() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade1() { -} - -u32 sub_unk3_DarkHyruleCastle_6(void) { - if (!CheckLocalFlag(0x77)) { - gRoomVars.field_0x6c[0] = 0; - gRoomVars.field_0x6c[2] = 0; - } - return 1; -} - -extern EntityData gUnk_080EB9F4; -extern EntityData gUnk_080EBAA4; -extern EntityData gUnk_080EBAF4; - -void sub_StateChange_DarkHyruleCastle_6(void) { - if (!CheckLocalFlag(0x77)) { - LoadRoomEntityList(&gUnk_080EB9F4); - } else { - if (!CheckLocalFlag(0x78)) { - LoadRoomEntityList(&gUnk_080EBAA4); - SetLocalFlag(0x75); - } - if (CheckLocalFlag(0x7b)) { - LoadRoomEntityList(&gUnk_080EBAF4); - SetLocalFlag(0x76); - } - } -} - -u32 sub_unk3_DarkHyruleCastle_7() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade2() { -} - -u32 sub_unk3_DarkHyruleCastle_8() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade3() { -} - -u32 sub_unk3_DarkHyruleCastle_9() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade4() { -} - -u32 sub_unk3_DarkHyruleCastle_10() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade5() { -} - -u32 sub_unk3_DarkHyruleCastle_11() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade6() { -} - -u32 sub_unk3_DarkHyruleCastle_12() { - return 1; -} -void sub_StateChange_Dojos_ToSplitblade7() { -} - -u32 sub_unk3_DarkHyruleCastle_13() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade8() { -} - -u32 sub_unk3_DarkHyruleCastle_14() { - return 1; -} - -extern EntityData gUnk_080EC2CC; - -void sub_StateChange_DarkHyruleCastle_14(void) { - if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x4c)) { - LoadRoomEntityList(&gUnk_080EC2CC); - } -} - -u32 sub_unk3_DarkHyruleCastle_15() { - return 1; -} - -void sub_StateChange_Dojos_ToSplitblade9() { -} - -u32 sub_unk3_DarkHyruleCastle_16() { - return 1; -} - -extern EntityData gUnk_080EC4E8; - -void sub_StateChange_DarkHyruleCastle_16(void) { - if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x4d)) { - LoadRoomEntityList(&gUnk_080EC4E8); - } -} - -u32 sub_unk3_DarkHyruleCastle_17() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade0() { -} - -u32 sub_unk3_DarkHyruleCastle_18() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade1() { -} - -u32 sub_unk3_DarkHyruleCastle_19() { - return 1; -} - -extern EntityData gUnk_080EC820; - -void sub_StateChange_DarkHyruleCastle_19(void) { - if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x53)) { - LoadRoomEntityList(&gUnk_080EC820); - } -} - -u32 sub_unk3_DarkHyruleCastle_20() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade2() { -} - -u32 sub_unk3_DarkHyruleCastle_21() { - return 1; -} - -extern EntityData gUnk_080ECA60; - -void sub_StateChange_DarkHyruleCastle_21(void) { - if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x56)) { - LoadRoomEntityList(&gUnk_080ECA60); - } -} - -u32 sub_unk3_DarkHyruleCastle_22() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade3() { -} - -u32 sub_unk3_DarkHyruleCastle_23() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade4() { -} - -u32 sub_unk3_DarkHyruleCastle_24() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade5() { -} - -u32 sub_unk3_DarkHyruleCastle_25() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade6() { -} - -u32 sub_unk3_DarkHyruleCastle_26() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade7() { -} - -u32 sub_unk3_DarkHyruleCastle_27() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade8() { } -u32 sub_unk3_DarkHyruleCastle_28(void) { - if (CheckLocalFlag(0x79)) { - gRoomVars.field_0x6c[2] = 0; - } - return 1; -} - -extern EntityData gUnk_080ECFCC; - -void sub_StateChange_DarkHyruleCastle_28(void) { - if (CheckLocalFlag(0x79)) { - sub_0807BB98(0x90, 1, 1, 5); - LoadRoomEntityList(&gUnk_080ECFCC); - gArea.pMusicIndex = gArea.musicIndex; - } -} - -u32 sub_unk3_DarkHyruleCastle_29() { - return 1; -} - -void sub_StateChange_Dojos_ToGreatblade9() { -} - -u32 sub_unk3_DarkHyruleCastle_30() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade0() { -} - -extern u32 gUnk_080ED1E4; - -u32 sub_unk3_DarkHyruleCastle_31(void) { - if (CheckGlobalFlag(ENDING)) { - gRoomVars.field_0x6c[0] = &gUnk_080ED1E4; - gRoomVars.field_0x6c[2] = 0; - } - return 1; -} - -void sub_StateChange_DarkHyruleCastle_31(void) { - if (CheckGlobalFlag(ENDING)) { - gArea.pMusicIndex = gArea.musicIndex; - } -} - -u32 sub_unk3_DarkHyruleCastle_32() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade1() { -} - -u32 sub_unk3_DarkHyruleCastle_33() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade2() { -} - -u32 sub_unk3_DarkHyruleCastle_34() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade3() { -} - -u32 sub_unk3_DarkHyruleCastle_35() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade4() { -} - -u32 sub_unk3_DarkHyruleCastle_36() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade5() { -} - -u32 sub_unk3_DarkHyruleCastle_37() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade6() { -} - -u32 sub_unk3_DarkHyruleCastle_38() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade7() { -} - -u32 sub_unk3_DarkHyruleCastle_39() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade8() { -} - -u32 sub_unk3_DarkHyruleCastle_40() { - return 1; -} - -void sub_StateChange_Dojos_ToScarblade9() { -} - -u32 sub_unk3_DarkHyruleCastle_41() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave0() { -} - -u32 sub_unk3_DarkHyruleCastle_42() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave1() { -} - -u32 sub_unk3_DarkHyruleCastle_43() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave2() { -} - -u32 sub_unk3_DarkHyruleCastle_44() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave3() { -} - -u32 sub_unk3_DarkHyruleCastle_45() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave4() { -} - -u32 sub_unk3_DarkHyruleCastle_46() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave5() { -} - -u32 sub_unk3_DarkHyruleCastle_47() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave6() { -} - -u32 sub_unk3_DarkHyruleCastle_48() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave7() { -} - -u32 sub_unk3_DarkHyruleCastle_49() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave8() { -} - -u32 sub_unk3_DarkHyruleCastle_50() { - return 1; -} - -void sub_StateChange_GoronCave_StairsToCave9() { -} - -u32 sub_unk3_DarkHyruleCastle_51() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk0() { -} - -u32 sub_unk3_DarkHyruleCastle_52() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk1() { -} - -u32 sub_unk3_DarkHyruleCastle_53(void) { - if (CheckLocalFlag(0x79)) { - gRoomVars.field_0x6c[2] = 0; - gRoomVars.field_0x6c[0] = 0; - } - return 1; -} - -extern EntityData gUnk_080EE314; - -void sub_StateChange_DarkHyruleCastle_53(void) { - if (CheckLocalFlag(0x79)) { - sub_0807BB98(3, 2, 5, 1); - LoadRoomEntityList(&gUnk_080EE314); - gArea.pMusicIndex = gArea.musicIndex; - } -} +u32 sub_0804AFDC() { + u32 result; + u32 (*func)(); -u32 sub_unk3_DarkHyruleCastle_54() { - return 1; + result = 1; + func = (u32(*)())GetCurrentRoomProperty(6); + if (func != NULL) + result = func(); + return result; } -void sub_StateChange_Ruins_Beanstalk2() { -} +void sub_0804AFF4(void) { + void (*func)(); -u32 sub_unk3_DarkHyruleCastle_55(void) { - if (CheckLocalFlag(0x79)) { - gRoomVars.field_0x6c[2] = 0; + sub_080186EC(); + func = (void (*)())GetCurrentRoomProperty(5); + if (func) { + func(); } - return 1; -} - -extern EntityData gUnk_080EE5DC; - -void sub_StateChange_DarkHyruleCastle_55(void) { - if (CheckLocalFlag(0x79)) { - sub_0807BB98(0x392, 2, 2, 5); - LoadRoomEntityList(&gUnk_080EE5DC); - gArea.pMusicIndex = gArea.musicIndex; + func = (void (*)())GetCurrentRoomProperty(7); + if (func) { + func(); } + sub_0804B16C(); } -u32 sub_unk3_DarkHyruleCastle_56() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk3() { -} - -u32 sub_unk3_DarkHyruleCastle_57() { - return 1; -} - -extern EntityData gUnk_080EE71C; - -void sub_StateChange_DarkHyruleCastle_57(void) { - if (CheckLocalFlag(1)) { - LoadRoomEntityList(&gUnk_080EE71C); - } -} +void LoadRoom(void) { + LoadRoomEntityList(GetCurrentRoomProperty(1)); + LoadRoomEntityList(GetCurrentRoomProperty(0)); -u32 sub_unk3_DarkHyruleCastle_58() { - return 1; -} + if (CheckGlobalFlag(TABIDACHI)) + sub_0804B058(GetCurrentRoomProperty(2)); -void sub_StateChange_Ruins_Beanstalk4() { + LoadRoomTileEntities(GetCurrentRoomProperty(3)); + sub_0801AC98(); } -ASM_FUNC("asm/non_matching/sub_unk3_HyruleTown_0.inc", u32 sub_unk3_HyruleTown_0(void)) - -extern EntityData gUnk_080EEB6C; -extern EntityData gUnk_080EEB8C; -extern EntityData gUnk_080EE88C; -extern EntityData gUnk_080EE8FC; -extern EntityData gUnk_080EE91C; -extern EntityData gUnk_080EECBC; -extern EntityData gUnk_080EE93C; -extern EntityData gUnk_080EE95C; -extern EntityData gUnk_080EE97C; -extern EntityData gUnk_080EE9BC; -extern EntityData gUnk_080EE99C; -extern EntityData gUnk_080EE9DC; -extern EntityData gUnk_080EEA3C; -extern EntityData gUnk_080EEA1C; -extern EntityData gUnk_080EE9FC; -extern EntityData gUnk_080EEA5C; -extern EntityData gUnk_080EEABC; -extern EntityData gUnk_080EEA7C; -extern EntityData gUnk_080EEA9C; -extern EntityData gUnk_080EEBAC; - -void sub_StateChange_HyruleTown_0(void) { +void sub_0804B058(EntityData* dat) { + Entity* ent; + u32 uVar2; - sub_08054570(); - TryLoadPrologueHyruleTown(); -#if defined(USA) || defined(DEMO_USA) || defined(DEMO_JP) - SetTileType(0x176, 0x66b, 1); -#endif - if (gSave.global_progress == 1) { - sub_0801D000(0); - } else { - sub_08018C58(0xdb4); - if (!CheckLocalFlagByBank(0x200, 0x84)) { - LoadRoomEntityList(&gUnk_080EEB6C); - } - if (!CheckLocalFlagByBank(0x200, 0x85)) { - LoadRoomEntityList(&gUnk_080EEB8C); - } - // kinstone bag - if ((!GetInventoryValue(0x67)) && CheckGlobalFlag(LV1_CLEAR)) { - LoadRoomEntityList(&gUnk_080EE88C); - } - if (!CheckKinstoneFused(0x28)) { - LoadRoomEntityList(&gUnk_080EE8FC); - } - if (CheckKinstoneFused(0x33)) { - LoadRoomEntityList(&gUnk_080EE91C); - } - if (CheckGlobalFlag(MACHI_MACHIHOKORI)) { - LoadRoomEntityList(&gUnk_080EE93C); - } else { - LoadRoomEntityList(&gUnk_080EECBC); - } - if (CheckKinstoneFused(0x1b) && (gSave.global_progress > 3)) { - if (!CheckGlobalFlag(NEW_HOUSE_DIN) && !CheckGlobalFlag(NEW_HOUSE_NAYRU) && - !CheckGlobalFlag(NEW_HOUSE_FARORE)) { - if (!CheckGlobalFlag(RENTED_HOUSE_DIN) && !CheckGlobalFlag(RENTED_HOUSE_NAYRU) && - !CheckGlobalFlag(RENTED_HOUSE_FARORE)) { - LoadRoomEntityList(&gUnk_080EE95C); - } else { - if (!CheckGlobalFlag(TATEKAKE_HOUSE)) { - LoadRoomEntityList(&gUnk_080EE97C); - } else { - LoadRoomEntityList(&gUnk_080EE9BC); + if ((dat != NULL) && dat->kind != 0xff) { + uVar2 = 0; + do { + if ((uVar2 < 0x20) && ((dat->kind & 0xF) == 3)) { + if (sub_08049D1C(uVar2) != 0) { + ent = LoadRoomEntity(dat); + if ((ent != NULL) && (ent->kind == 3)) { + ent->field_0x6c.HALF.LO = uVar2 | 0x80; } } } else { - LoadRoomEntityList(&gUnk_080EE99C); + LoadRoomEntity(dat); } - } - if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { - LoadRoomEntityList(&gUnk_080EE9FC); - } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { - LoadRoomEntityList(&gUnk_080EEA1C); - } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { - LoadRoomEntityList(&gUnk_080EEA3C); - } else { - LoadRoomEntityList(&gUnk_080EE9DC); - } - if ((gSave.global_progress > 4) && !CheckKinstoneFused(0xb) && - (CheckGlobalFlag(RENTED_HOUSE_DIN) || CheckGlobalFlag(RENTED_HOUSE_NAYRU) || - CheckGlobalFlag(RENTED_HOUSE_FARORE))) { - LoadRoomEntityList(&gUnk_080EEA5C); - } - // rocs cape -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0xcd) && GetInventoryValue(0x14)) { -#else - if (!CheckLocalFlag(0xd0) && GetInventoryValue(0x14)) { -#endif - LoadRoomEntityList(&gUnk_080EEABC); - } - if ((gSave.global_progress > 3) && CheckGlobalFlag(INLOCK)) { - LoadRoomEntityList(&gUnk_080EEA7C); - } - if ((gSave.global_progress < 6) && !CheckGlobalFlag(MIZUKAKI_START)) { - LoadRoomEntityList(&gUnk_080EEA9C); - } - if ((gSave.windcrests & 0x8000000) == 0) { - LoadRoomEntityList(&gUnk_080EEBAC); - } - sub_0804E150(); + uVar2++; + dat++; + } while (dat->kind != 0xff); } } -void sub_unk1_HyruleTown_8(void) { - if ((gSave.windcrests & 0x8000000) == 0) { - LoadRoomEntityList(&gUnk_080EEBAC); +void sub_0804B0B0(u32 arg0, u32 arg1) { + LoadRoomEntityList(GetRoomProperty(arg0, arg1, 1)); +} + +void SetCurrentRoomPropertyList(u32 area, u32 room) { + gCurrentRoomProperties = NULL; + if (gAreaTable[area] != NULL) { + gCurrentRoomProperties = gAreaTable[area][room]; } } -ASM_FUNC("asm/non_matching/sub_0804E150.inc", void sub_0804E150(void)) +void sub_0804B0E8(u32 arg0, u32 arg1) { + void (*func)(); -u32 sub_unk3_HyruleTownMinishCaves_Entrance() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_Entrance() { -} - -u32 sub_unk3_HyruleTownMinishCaves_NorthRoom() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_NorthRoom() { -} - -u32 sub_unk3_HyruleTownMinishCaves_PacciJump() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_PacciJump() { -} - -u32 sub_unk3_HyruleTownMinishCaves_MulldozerFight() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_MulldozerFight() { -} - -u32 sub_unk3_HyruleTownMinishCaves_WestChest() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_WestChest() { -} - -u32 sub_unk3_HyruleTownMinishCaves_Flippers() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_Flippers() { -} - -u32 sub_unk3_HyruleTownMinishCaves_Librari() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_Librari() { -} - -u32 sub_unk3_HyruleTownMinishCaves_WestFrozenChest() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_WestFrozenChest() { -} - -u32 sub_unk3_HyruleTownMinishCaves_CrossIntersection() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_CrossIntersection() { -} - -u32 sub_unk3_HyruleTownMinishCaves_SoutheastCorner() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_SoutheastCorner() { -} - -u32 sub_unk3_HyruleTownMinishCaves_Entrance2() { - return 1; -} - -void sub_StateChange_HyruleTownMinishCaves_Entrance2() { -} - -u32 sub_unk3_HyruleTownUnderground_Main() { - return 1; -} - -void sub_StateChange_HyruleTownUnderground_Main() { -} - -u32 sub_unk3_HyruleTownUnderground_Well() { - return 1; -} - -void sub_StateChange_HyruleTownUnderground_Well() { -} - -extern u32 gUnk_080F09A0; - -u32 sub_unk3_CastleGarden_Main(void) { - - // four sword - if (GetInventoryValue(0x6)) { - gRoomVars.field_0x6c[1] = &gUnk_080F09A0; + // init function at index 4 of room data + func = (void (*)())GetRoomProperty(arg0, arg1, 4); + if (func != NULL) { + func(); } - return 1; } -extern EntityData gUnk_080F0650; -extern EntityData gUnk_080F0800; -extern EntityData gUnk_080F08F0; -extern EntityData gUnk_080F0850; -extern EntityData gUnk_080F0870; -extern EntityData gUnk_080F0890; -extern EntityData gUnk_080F0920; +void* GetRoomProperty(u32 area, u32 room, u32 property) { + void** temp; + temp = NULL; + if (gAreaTable[area] != NULL) { + temp = gAreaTable[area][room]; + if (temp != NULL) { + temp = temp[property]; + } + } + return temp; +} -void sub_StateChange_CastleGarden_Main(void) { +void* GetCurrentRoomProperty(u32 idx) { + if (gCurrentRoomProperties == NULL) + return NULL; - if (!CheckGlobalFlag(TABIDACHI)) { - LoadRoomEntityList(&gUnk_080F0650); -#ifdef EU - gArea.pMusicIndex = 0x10; -#else - gArea.pMusicIndex = 0x13; - SetGlobalFlag(CASTLE_BGM); + if (idx >= 0x80) { + return gRoomVars.field_0x8c[idx & 7]; + } else if (idx <= 7) { + return gRoomVars.field_0x6c[idx]; } else { - if (CheckGlobalFlag(CASTLE_BGM)) { -#if defined(JP) || defined(DEMO_JP) - gArea.pMusicIndex = gArea.musicIndex; -#else - gArea.pMusicIndex = 0x1b; -#endif - } -#endif + return gCurrentRoomProperties[idx]; } -#if defined(JP) || defined(DEMO_JP) || defined(EU) - if (!CheckLocalFlag(0x9b)) { -#else - if (!CheckLocalFlag(0x9c)) { -#endif - LoadRoomEntityList(&gUnk_080F0800); - SetTileType(0x4072, 600, 1); - SetTileType(0x4072, 0x298, 1); - SetTileType(0x4072, 0x266, 1); - SetTileType(0x4072, 0x2a6, 1); - } else { - // four sword - if (!GetInventoryValue(0x6)) { - LoadRoomEntityList(&gUnk_080F08F0); - SetTileType(0x4072, 0x9e, 1); - SetTileType(0x4072, 0x9f, 1); - SetTileType(0x4072, 0xa0, 1); +} + +void sub_0804B16C(void) { + TileEntity* tile = gSmallChests; + do { + if (tile->_4 != 0 && CheckLocalFlag(tile->_1)) { + SetTileType(0x74, tile->_4, tile->_6 & 1 ? 2 : 1); } - LoadRoomEntityList(&gUnk_080F0850); - // water element - if (!GetInventoryValue(0x42)) { - LoadRoomEntityList(&gUnk_080F0870); - } else { - LoadRoomEntityList(&gUnk_080F0890); - } - SetTileType(0x4072, 600, 1); - SetTileType(0x4072, 0x298, 1); -#if defined(JP) || defined(DEMO_JP) || defined(EU) - if (CheckLocalFlag(0x11)) { -#else - if (CheckLocalFlag(0x10)) { -#endif - LoadRoomEntityList(&gUnk_080F0920); -#if defined(JP) || defined(DEMO_JP) || defined(EU) - ClearLocalFlag(0x11); -#else - ClearLocalFlag(0x10); -#endif + } while (++tile < gSmallChests + 8); +} + +void LoadRoomTileEntities(TileEntity* list) { + TileEntity* t = list; + + if (t == NULL) + return; + + for (t; t->type != 0; ++t) { + switch (t->type) { + case ROOM_VISIT_MARKER: + LoadRoomVisitTile(t); + break; + case SMALL_CHEST: + LoadSmallChestTile(t); + break; + case BOMBABLE_WALL: + LoadBombableWallTile(t); + break; + case MUSIC_SETTER: + gArea.pMusicIndex = t->_3; + break; + case DARKNESS: + LoadDarknessTile(t); + break; + case DESTRUCTIBLE_TILE: + LoadDestructibleTile(t); + break; + case GRASS_DROP_CHANGER: + LoadGrassDropTile(t); + break; + case LOCATION_CHANGER: + LoadLocationTile(t); + break; + case TILE_ENTITY_D: + gRoomVars.field_0x9 = t->_3; + break; } } - sub_080AF284(); } -u32 sub_unk3_SimonsSimulation_Main() { - ClearLocalFlag(1); - return 1; +static void LoadGrassDropTile(TileEntity* tile) { + MemCopy(&gUnk_080015BC[tile->_1], &gRoomVars.filler4[44], 0x20); } -extern u8* gUnk_080F0D58[4]; -extern Entity* gUnk_080F0CB8[15]; -extern u8* gUnk_080F0E08[]; -extern struct { - u32 unk_00; - u32 unk_04; -} gUnk_080F0E1C[]; - -void sub_StateChange_SimonsSimulation_Main() { - u32 r; - u32 index; - u32 tmp; - tmp = CheckGlobalFlag(LV4_CLEAR); - index = BOOLCAST(tmp); - if (CheckGlobalFlag(LV5_CLEAR)) { - index = 2; - } - if (CheckGlobalFlag(GAMECLEAR)) { - index = 3; - } - r = Random(); - index = gUnk_080F0D58[index][r & 0x1f]; - LoadRoomEntityList((EntityData*)gUnk_080F0CB8[index & 0xF]); - index >>= 4; - r >>= 8; - index = gUnk_080F0E08[index][r & 0x1F]; - if (!CheckLocalFlag(0xC6)) { - SetLocalFlag(0xC6); - index = 0xE; - } - sub_0804B3C4(&gUnk_080F0E1C[index]); - SoundReq(SONG_STOP_BGM); +static void LoadLocationTile(TileEntity* tile) { + gArea.locationIndex = tile->_1; + sub_08054524(); } -u32 sub_unk3_HouseInteriors2_Stranger() { - return 1; +static void LoadRoomVisitTile(TileEntity* tile) { + SetLocalFlag(tile->_1); } -extern EntityData gUnk_080F1C68; -extern EntityData gUnk_080F1C88; - -void sub_StateChange_HouseInteriors2_Stranger(void) { - if (!CheckGlobalFlag(POWERGLOVE_HINT)) { - LoadRoomEntityList(&gUnk_080F1C68); - } else { - LoadRoomEntityList(&gUnk_080F1C88); - } -} - -u32 sub_unk3_HouseInteriors2_WestOracle() { - return 1; -} - -extern EntityData gUnk_080F1D90; -extern EntityData gUnk_080F1DB0; -extern EntityData gUnk_080F1DD0; - -void sub_StateChange_HouseInteriors2_WestOracle(void) { - if (CheckGlobalFlag(NEW_HOUSE_DIN)) { - LoadRoomEntityList(&gUnk_080F1D90); - } else if (CheckGlobalFlag(NEW_HOUSE_NAYRU)) { - LoadRoomEntityList(&gUnk_080F1DB0); - } else if (CheckGlobalFlag(NEW_HOUSE_FARORE)) { - LoadRoomEntityList(&gUnk_080F1DD0); - } -} - -u32 sub_unk3_HouseInteriors2_2() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk5() { -} - -u32 sub_unk3_HouseInteriors2_3() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk6() { -} - -u32 sub_unk3_HouseInteriors2_DrLeft() { - return 1; -} - -extern EntityData gUnk_080F2174; -extern EntityData gUnk_080F2194; -extern EntityData gUnk_080F21B4; - -void sub_StateChange_HouseInteriors2_DrLeft(void) { - - LoadRoomEntityList(&gUnk_080F2174); - // picori legend book - if (!GetInventoryValue(0x3a) && CheckGlobalFlag(MIZUKAKI_HARIFALL)) { - LoadRoomEntityList(&gUnk_080F2194); - } - if (gScreenTransition.player_status.spawn_type == 1) { - LoadRoomEntityList(&gUnk_080F21B4); - } -} - -u32 sub_unk3_HouseInteriors2_Romio() { - return 1; -} - -extern EntityData gUnk_080F23BC; -extern EntityData gUnk_080F238C; -extern EntityData gUnk_additional_c_HouseInteriors2_Romio; - -void sub_StateChange_HouseInteriors2_Romio(void) { - - if (gSave.global_progress > 7) { - LoadRoomEntityList(&gUnk_080F23BC); - } - // flippers - if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START)) { - LoadRoomEntityList(&gUnk_080F238C); - } else { - LoadRoomEntityList(&gUnk_additional_c_HouseInteriors2_Romio); - } -} - -u32 sub_unk3_HouseInteriors2_Julietta() { - return 1; -} - -extern EntityData gUnk_080F2570; -extern EntityData gUnk_080F2590; -extern EntityData gUnk_080F25C0; -extern EntityData gUnk_080F2600; - -void sub_StateChange_HouseInteriors2_Julietta(void) { - switch (gSave.global_progress) { - case 0: - case 2: - case 4: - LoadRoomEntityList(&gUnk_080F2570); - break; - case 1: - case 3: - break; - case 5: - // flippers - if (!GetInventoryValue(0x46)) { - if (!CheckGlobalFlag(MIZUKAKI_START)) { - LoadRoomEntityList(&gUnk_080F2570); - break; +static void LoadSmallChestTile(TileEntity* tile) { + TileEntity* t = gSmallChests; + u32 i = 0; + for (i = 0; i < 8; ++i, ++t) { + if (!t->_4) { + MemCopy(tile, t, sizeof(TileEntity)); + if ((t->_6 & 1) && (gRoomControls.unk6 & 2) && !CheckLocalFlag(t->_1)) { + Entity* e = CreateObject(OBJECT_52, t->_1, 0); + if (e != NULL) { + sub_0806F704(e, t->_4); } - if (!GetInventoryValue(0x39)) { - LoadRoomEntityList(&gUnk_080F25C0); - } - } else { - LoadRoomEntityList(&gUnk_080F2590); } - break; - case 8: - case 9: - LoadRoomEntityList(&gUnk_080F2600); - case 6: - case 7: - LoadRoomEntityList(&gUnk_080F2590); - } -} - -u32 sub_unk3_HouseInteriors2_Percy() { - return 1; -} - -extern EntityData gUnk_additional_9_HouseInteriors2_Percy; -extern EntityData gUnk_080F2860; -extern EntityData gUnk_additional_a_HouseInteriors2_Percy; -extern EntityData gUnk_080F27D8; -extern EntityData gUnk_080F2798; - -void sub_StateChange_HouseInteriors2_Percy(void) { - if (CheckKinstoneFused(0x21)) { - if (!CheckLocalFlag(0x42)) { - if (!CheckLocalFlag(0x43)) { - LoadRoomEntityList(&gUnk_additional_9_HouseInteriors2_Percy); - LoadRoomTileEntities(&gUnk_080F2860); - } else { - LoadRoomEntityList(&gUnk_additional_a_HouseInteriors2_Percy); - } - } else if (!CheckLocalFlag(0x3f)) { - LoadRoomEntityList(&gUnk_080F27D8); - } else { - LoadRoomEntityList(&gUnk_080F2798); + return; } } } -u32 sub_unk3_HouseInteriors2_EastOracle() { - return 1; -} - -extern EntityData gUnk_080F28D4; -extern EntityData gUnk_080F28F4; -extern EntityData gUnk_080F2914; - -void sub_StateChange_HouseInteriors2_EastOracle(void) { - if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { - LoadRoomEntityList(&gUnk_080F28D4); - } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { - LoadRoomEntityList(&gUnk_080F28F4); - } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { - LoadRoomEntityList(&gUnk_080F2914); +static void LoadBombableWallTile(TileEntity* tile) { + Manager24* mgr = (Manager24*)GetEmptyManager(); + if (mgr != NULL) { + mgr->manager.type = 9; + mgr->manager.subtype = 0x24; + mgr->x = tile->_4; + mgr->y = *(u16*)&tile->_6; + mgr->field_0x35 = tile->_2; + mgr->field_0x3e = tile->_1; + AppendEntityToList((Entity*)mgr, 6); } } -u32 sub_unk3_HouseInteriors2_A() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk7() { -} - -u32 sub_unk3_HouseInteriors2_B() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk8() { -} - -u32 sub_unk3_HouseInteriors2_Cucco() { - return 1; -} - -void sub_StateChange_Ruins_Beanstalk9() { -} - -u32 sub_unk3_HouseInteriors2_LinksHouseEntrance() { - return 1; -} - -extern EntityData gUnk_080F2E2C; - -void sub_StateChange_HouseInteriors2_LinksHouseEntrance(void) { - if (!CheckGlobalFlag(OUTDOOR)) { - gArea.musicIndex = gArea.pMusicIndex; - SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); - } - if (!CheckGlobalFlag(START)) { - LoadRoomEntityList(&gUnk_080F2E2C); - } -} - -u32 sub_unk3_HouseInteriors2_LinksHouseSmith() { - return 1; -} - -extern EntityData gUnk_080F2E94; -extern EntityData gUnk_080F2EC4; - -void sub_StateChange_HouseInteriors2_LinksHouseSmith(void) { - if (!CheckGlobalFlag(OUTDOOR)) { - gArea.musicIndex = gArea.pMusicIndex; - SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); - } - if (!CheckGlobalFlag(START)) { - LoadRoomEntityList(&gUnk_080F2E94); - } else { - LoadRoomEntityList(&gUnk_080F2EC4); - } -} - -u32 sub_unk3_HouseInteriors2_Dampe() { - return 1; -} - -extern EntityData gUnk_080F2FD4; - -void sub_StateChange_HouseInteriors2_Dampe(void) { - // graveyard key - if (!CheckLocalFlag(0x69) || GetInventoryValue(0x3c) > 1) { - LoadRoomEntityList(&gUnk_080F2FD4); - } -} - -u32 sub_unk3_HouseInteriors2_Stockwell() { - return 1; -} - -extern EntityData gUnk_080F30CC; - -void sub_StateChange_HouseInteriors2_Stockwell(void) { - // dog food - if ((GetInventoryValue(0x36) == 1) && !CheckGlobalFlag(BIN_DOGFOOD) && (gPlayerState.flags & PL_MINISH) == 0) { - LoadRoomEntityList(&gUnk_080F30CC); - } -} - -u32 sub_unk3_HouseInteriors2_LinksHouseBedroom() { - return 1; -} - -extern EntityData gUnk_080F31D8; -extern u32 script_08009B30; - -void sub_StateChange_HouseInteriors2_LinksHouseBedroom(void) { - - if (!CheckGlobalFlag(START) && !CheckLocalFlag(0x46)) { - sub_080A71C4(5, 1, 4, 4); - gUpdateVisibleTiles = 0; - DoFade(5, 0x100); - sub_080751E8(0, 6, &script_08009B30); - } - if (!CheckGlobalFlag(OUTDOOR)) { - gArea.musicIndex = gArea.pMusicIndex; - SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); - } - if ((gPlayerState.flags & 8) == 0) { - LoadRoomEntityList(&gUnk_080F31D8); - } -} - -extern u32 script_08009E58; - -void sub_0804E864(void) { - gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x90; - gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; - sub_080751E8(1, 6, &script_08009E58); - ModHealth(0xa0); -} - -u32 sub_unk3_HouseInteriors4_Carpenter() { - return 1; -} - -extern EntityData gUnk_080F3260; - -void sub_StateChange_HouseInteriors4_Carpenter(void) { - // pacci cane - if (GetInventoryValue(0x12)) { - LoadRoomEntityList(&gUnk_080F3260); - SetTileType(0x4072, 0x202, 1); - SetTileType(0x4072, 0x242, 1); - SetTileType(0x4072, 0x204, 1); - SetTileType(0x4072, 0x244, 1); - } -} - -u32 sub_unk3_HouseInteriors4_Swiftblade() { - return 1; -} - -void sub_StateChange_HouseInteriors4_Swiftblade() { - sub_08054564(); -} - -u32 sub_unk3_HouseInteriors4_RanchHouseWest() { - return 1; -} - -extern EntityData gUnk_080F36FC; -extern EntityData gUnk_080F3604; - -void sub_StateChange_HouseInteriors4_RanchHouseWest(void) { - if (!CheckGlobalFlag(INLOCK)) { - LoadRoomEntityList(&gUnk_080F36FC); - } else if (gSave.global_progress < 4) { - LoadRoomEntityList(&gUnk_080F3604); - } -} - -u32 sub_unk3_HouseInteriors4_RanchHouseEast() { - return 1; -} - -extern EntityData gUnk_080F37D0; - -void sub_StateChange_HouseInteriors4_RanchHouseEast(void) { - if (CheckGlobalFlag(INLOCK)) { - LoadRoomEntityList(&gUnk_080F37D0); - } -} - -u32 sub_unk3_HouseInteriors4_FarmHouse() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites0() { -} - -u32 sub_unk3_HouseInteriors4_Mayor() { - return 1; -} - -extern EntityData gUnk_080F3A48; - -void sub_StateChange_HouseInteriors4_Mayor(void) { - // flippers, history of masks - if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START) && !GetInventoryValue(0x3b)) { - LoadRoomEntityList(&gUnk_080F3A48); - } - gScreenTransition.player_status.field_0x20 = 0xf28; - gScreenTransition.player_status.field_0x22 = 0x82d; -} - -extern u32 Enemies_LakeHylia_Main; -extern u32 gUnk_080F3EA4; - -u32 sub_unk3_LakeHylia_Main(void) { - if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) { - gRoomVars.field_0x6c[2] = &gUnk_080F3EA4; - } else { - gRoomVars.field_0x6c[2] = &Enemies_LakeHylia_Main; - } - return 1; -} - -extern EntityData gUnk_080F3C64; -extern EntityData gUnk_080F3C94; -extern EntityData gUnk_080F3C44; - -void sub_StateChange_LakeHylia_Main(void) { - if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) { - LoadRoomEntityList(&gUnk_080F3C64); - } - if (CheckKinstoneFused(0x12)) { - LoadRoomEntityList(&gUnk_080F3C94); - } - if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { - LoadRoomEntityList(&gUnk_080F3C44); - } - SetTile(0x4091, 0x590, 1); - SetTile(0x4091, 0x591, 1); - SetTile(0x4091, 0x592, 1); - SetTile(0x4091, 0x593, 1); - SetTile(0x4091, 0x594, 1); - SetTile(0x4091, 0x5d0, 1); - SetTile(0x4091, 0x610, 1); - SetTile(0x4091, 0x650, 1); - SetTile(0x4091, 0x5d4, 1); - SetTile(0x4091, 0x614, 1); - SetTile(0x4091, 0x654, 1); - SetTile(0x4091, 0x690, 1); - SetTile(0x4091, 0x691, 1); - SetTile(0x4091, 0x692, 1); - SetTile(0x4091, 0x693, 1); - SetTile(0x4091, 0x694, 1); -} - -u32 sub_unk3_LakeHylia_Beanstalk() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites1() { -} - -u32 sub_unk3_LakeWoodsCave_Main() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites2() { -} - -u32 sub_unk3_HyliaDigCaves_Middle() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites3() { -} - -u32 sub_unk3_HyliaDigCaves_North() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites4() { -} - -u32 sub_unk3_CastorWildsDigCave_Main() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites5() { -} - -u32 sub_unk3_HyruleDigCaves_Main() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites6() { -} - -u32 sub_unk3_CrenelDigCave_Main() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites7() { -} - -u32 sub_unk3_DigCaves1_HyruleFieldFarm() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites8() { -} - -u32 sub_unk3_DigCaves1_TrilbyHighlands() { - return 1; -} - -void sub_StateChange_Ruins_LadderToTektites9() { -} - -u32 sub_unk3_VeilFallsDigCave_Main() { - return 1; -} - -void sub_StateChange_VeilFallsDigCave_Main() { -} - -u32 sub_unk3_OuterFortressOfWinds_EntranceHall(void) { - gArea.areaMetadata |= 0x48; - return 1; -} - -void sub_StateChange_OuterFortressOfWinds_EntranceHall() { -} - -u32 sub_unk3_OuterFortressOfWinds_2F(void) { - gArea.areaMetadata |= 0x48; - return 1; -} - -void sub_StateChange_OuterFortressOfWinds_2F() { -} - -u32 sub_unk3_OuterFortressOfWinds_3F(void) { - gArea.areaMetadata |= 0x48; - return 1; -} - -void sub_StateChange_OuterFortressOfWinds_3F() { -} - -u32 sub_unk3_OuterFortressOfWinds_MoleMitts(void) { - sub_0801DD58(0x58, 5); - gArea.areaMetadata |= 0x48; - return 1; -} - -void sub_StateChange_OuterFortressOfWinds_MoleMitts() { -} - -u32 sub_unk3_OuterFortressOfWinds_SmallKey(void) { - sub_0801DD58(0x58, 6); - gArea.areaMetadata |= 0x48; - return 1; -} - -void sub_StateChange_OuterFortressOfWinds_SmallKey() { -} - -extern u32 gUnk_080F4EB0; - -u32 sub_unk3_MinishWoods_Main(void) { - if (CheckGlobalFlag(ENDING)) { - gRoomVars.field_0x6c[0] = &gUnk_080F4EB0; - gRoomVars.field_0x6c[2] = NULL; - } - return 1; -} - -extern EntityData gUnk_080F4D50; -extern EntityData gUnk_080F4DB0; -extern EntityData gUnk_080F4DD0; -extern EntityData gUnk_080F4DF0; -extern EntityData gUnk_080F4F10; -extern EntityData gUnk_080F4E10; - -void sub_StateChange_MinishWoods_Main(void) { - if (CheckGlobalFlag(ENDING)) { - gArea.pMusicIndex = gArea.musicIndex; - } - if (!CheckGlobalFlag(EZERO_1ST)) { - LoadRoomEntityList(&gUnk_080F4D50); - } -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0x3d)) { - if (!CheckLocalFlag(0x3a)) { -#else - if (!CheckLocalFlag(0x3e)) { - if (!CheckLocalFlag(0x3b)) { -#endif - LoadRoomEntityList(&gUnk_080F4DB0); - } else { - LoadRoomEntityList(&gUnk_080F4DD0); - } - LoadRoomEntityList(&gUnk_080F4DF0); - } - if (CheckKinstoneFused(0x4e)) { - LoadRoomEntityList(&gUnk_080F4F10); - } - if ((s32)gSave.windcrests > -1) { - LoadRoomEntityList(&gUnk_080F4E10); - } -#ifdef DEMO_USA - SetTileType(0x177, 0x5b4, 1); - SetTileType(0x177, 0x5f4, 1); -#endif -} - -void sub_unk1_MinishWoods_Main(void) { - if ((s32)gSave.windcrests > -1) { - LoadRoomEntityList(&gUnk_080F4E10); - } -} - -u32 sub_unk3_Empty_Main() { - return 1; -} - -void sub_StateChange_Empty_Main() { -} - -extern u32 gUnk_080F5348; - -u32 sub_unk3_SanctuaryEntrance_Main(void) { - if (CheckGlobalFlag(ENDING)) { - gRoomVars.field_0x6c[0] = &gUnk_080F5348; - gRoomVars.field_0x6c[7] = sub_0804ED18; - gRoomVars.field_0x6c[2] = NULL; - } - return 1; -} - -extern EntityData gUnk_080F5328; -extern EntityData gUnk_080F5308; - -void sub_StateChange_SanctuaryEntrance_Main(void) { - // white sword - if (GetInventoryValue(0x2)) { - LoadRoomEntityList(&gUnk_080F5328); -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0x15)) { -#else - if (!CheckLocalFlag(0x14)) { -#endif - LoadRoomEntityList(&gUnk_080F5308); +static void LoadDarknessTile(TileEntity* tile) { + sub_0805BB00(tile->_3, 1); +} + +static void LoadDestructibleTile(TileEntity* tile) { + if (CheckLocalFlag(*(u16*)&tile->_2)) { + SetTileType(*(u16*)&tile->_6, tile->_4, tile->_1); + } else if (!gRoomVars.filler_0x1) { + Manager* mgr; + gRoomVars.filler_0x1 = 1; + mgr = GetEmptyManager(); + if (mgr != NULL) { + mgr->type = 9; + mgr->subtype = 0x2a; + AppendEntityToList((Entity*)mgr, 6); } } } -void sub_0804ED18(void) { - gArea.pMusicIndex = gArea.musicIndex; -} - -u32 sub_unk3_Sanctuary_Hall() { - return 1; -} - -void sub_StateChange_Sanctuary_Hall(void) { - sub_080AF2E4(); - if (CheckGlobalFlag(SEIIKI_BGM)) { - gArea.pMusicIndex = 0x31; - } -} - -u32 sub_unk3_Sanctuary_Main() { - return 1; -} - -extern EntityData gUnk_080F54E8; -extern EntityData gUnk_080F5508; -extern EntityData gUnk_080F5558; -extern EntityData gUnk_080F5598; -extern EntityData gUnk_080F55D8; -extern EntityData gUnk_080F5528; -extern EntityData gUnk_080F5578; -extern EntityData gUnk_080F55B8; - -void sub_StateChange_Sanctuary_Main(void) { - if (!CheckLocalFlag(0x79)) { - LoadRoomEntityList(&gUnk_080F54E8); - } - if (!CheckLocalFlag(0x7a)) { - // white sword, white sword 2, earth element, fire element - if (GetInventoryValue(0x2) && !GetInventoryValue(0x3) && GetInventoryValue(0x40) && GetInventoryValue(0x41)) { - LoadRoomEntityList(&gUnk_080F5508); - } - } else { - if (!CheckLocalFlag(0x7b)) { - if (GetInventoryValue(0x3) && !GetInventoryValue(0x4) && GetInventoryValue(0x42)) { - LoadRoomEntityList(&gUnk_080F5558); - } - } else { - if (!CheckLocalFlag(0x7c)) { - if (!GetInventoryValue(0x6) && GetInventoryValue(0x43)) { - LoadRoomEntityList(&gUnk_080F5598); - } - } else { - LoadRoomEntityList(&gUnk_080F55D8); - } - } - } - if (CheckLocalFlag(0x7a)) { - LoadRoomEntityList(&gUnk_080F5528); - } - if (CheckLocalFlag(0x7b)) { - LoadRoomEntityList(&gUnk_080F5578); - } - if (CheckLocalFlag(0x7c)) { - LoadRoomEntityList(&gUnk_080F55B8); - } - if (CheckGlobalFlag(SEIIKI_BGM)) { - gArea.pMusicIndex = 0x31; - } -} - -u32 sub_unk3_Sanctuary_StainedGlass() { - return 1; -} - -extern EntityData gUnk_080F5660; - -void sub_StateChange_Sanctuary_StainedGlass(void) { - if (!CheckLocalFlag(0x78) && CheckLocalFlag(0x7c)) { - LoadRoomEntityList(&gUnk_080F5660); - } - if (CheckGlobalFlag(SEIIKI_BGM)) { - gArea.pMusicIndex = 0x31; - } -} - -u32 sub_unk3_HouseInteriors3_StockwellShop() { - return 1; -} - -extern EntityData gUnk_080F5758; -extern EntityData gUnk_080F57E8; -extern EntityData gUnk_080F57A8; -extern EntityData gUnk_080F57C8; -extern EntityData gUnk_080F5888; -extern EntityData gUnk_080F58A8; -extern EntityData gUnk_080F5868; -extern EntityData gUnk_080F5828; -extern EntityData gUnk_080F5848; -extern EntityData gUnk_080F5788; - -void sub_StateChange_HouseInteriors3_StockwellShop(void) { - LoadRoomEntityList(&gUnk_080F5758); - if (!GetInventoryValue(0x36) && CheckLocalFlagByBank(0x200, 0x8f)) { - LoadRoomEntityList(&gUnk_080F57E8); - } - if (!CheckLocalFlag(0x55)) { - LoadRoomEntityList(&gUnk_080F57A8); - } else { - if (gBombBagSizes[gSave.stats.bombBagType] > 0x1d) { - LoadRoomEntityList(&gUnk_080F57C8); - } - if (!GetInventoryValue(0xb) && !GetInventoryValue(0xc)) { - LoadRoomEntityList(&gUnk_080F5888); -#ifndef EU - } else { - if (!CheckLocalFlag(0xcd)) { - LoadRoomEntityList(&gUnk_080F58A8); - } -#endif - } - } - if (GetInventoryValue(0x9) || CheckGlobalFlag(LV3_CLEAR)) { - LoadRoomEntityList(&gUnk_080F5868); - if (!CheckLocalFlag(0x56)) { - LoadRoomEntityList(&gUnk_080F5828); - } else { - LoadRoomEntityList(&gUnk_080F5848); - } - } - if (gSave.stats.filler3[0] == 0) { - LoadRoomEntityList(&gUnk_080F5788); - } -} - -u32 sub_unk3_HouseInteriors3_Cafe() { - return 1; -} - -void sub_StateChange_HouseInteriors3_Cafe() { -} - -u32 sub_unk3_HouseInteriors3_RemShoeShop() { - return 1; -} - -extern EntityData gUnk_080F5B3C; - -void sub_StateChange_HouseInteriors3_RemShoeShop(void) { -#ifndef EU - if (GetInventoryValue(0x38) == 1) { - LoadRoomEntityList(&gUnk_080F5B3C); - } -#endif -} - -u32 sub_unk3_HouseInteriors3_Bakery() { - return 1; -} -void sub_StateChange_HouseInteriors3_Bakery() { -} - -u32 sub_unk3_HouseInteriors3_Simon(void) { - if (CheckGlobalFlag(MAROYA_WAKEUP)) { - gScreenTransition.player_status.spawn_type = 5; - } - return 1; -} - -extern EntityData gUnk_080F5DD0; -extern u32 script_08011C50; - -void sub_StateChange_HouseInteriors3_Simon(void) { - if (gSave.global_progress > 7) { - LoadRoomEntityList(&gUnk_080F5DD0); - } - if (CheckGlobalFlag(MAROYA_WAKEUP)) { - sub_080751E8(1, 2, &script_08011C50); - } -} - -u32 sub_unk3_HouseInteriors3_FigurineHouse() { - return 1; -} - -extern EntityData gUnk_080F5E68; - -void sub_StateChange_HouseInteriors3_FigurineHouse(void) { -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlagByBank(0x100, 0xce)) { -#else - if (!CheckLocalFlagByBank(0x100, 0xd1)) { -#endif - LoadRoomEntityList(&gUnk_080F5E68); - } -} - -u32 sub_unk3_HouseInteriors3_BorlovEntrance() { - return 1; -} - -extern EntityData gUnk_additional_8_HouseInteriors3_BorlovEntrance; -extern EntityData gUnk_additional_9_HouseInteriors3_BorlovEntrance; -extern EntityData gUnk_additional_a_HouseInteriors3_BorlovEntrance; - -void sub_StateChange_HouseInteriors3_BorlovEntrance(void) { - - if (gSave.global_progress > 4) { - LoadRoomEntityList(&gUnk_additional_8_HouseInteriors3_BorlovEntrance); - } - if (!CheckLocalFlag(0x92)) { - LoadRoomEntityList(&gUnk_additional_9_HouseInteriors3_BorlovEntrance); - } else { - LoadRoomEntityList(&gUnk_additional_a_HouseInteriors3_BorlovEntrance); - } -} - -u32 sub_unk3_HouseInteriors3_Carlov() { - return 1; -} - -void sub_StateChange_HouseInteriors3_Carlov() { -} - -u32 sub_unk3_HouseInteriors3_Borlov() { - return 1; -} - -void sub_StateChange_HouseInteriors3_Borlov() { -} - -u32 sub_unk3_WindTribeTower_Entrance(void) { -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByBank(0x100, 0xd9)) { -#else - if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByBank(0x100, 0xdc)) { -#endif - SetGlobalFlag(WARP_EVENT_END); - } - return 1; -} - -extern EntityData gUnk_080F61BC; - -void sub_StateChange_WindTribeTower_Entrance(void) { -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckLocalFlagByBank(0x100, 0xd9)) { -#else - if (CheckLocalFlagByBank(0x100, 0xdc)) { -#endif - SetLocalFlag(0x90); - } - if (CheckKinstoneFused(0xf)) { - LoadRoomEntityList(&gUnk_080F61BC); - } - if (!CheckGlobalFlag(WARP_EVENT_END)) { - SetTileType(0x4072, 0x4c7, 1); - SetTileType(0x4072, 0x507, 1); - } - sub_08052CA4(8, 0, 0x1e8, 0x158); -} - -u32 sub_unk3_WindTribeTower_Floor2() { - return 1; -} - -extern EntityData gUnk_080F62E4; -extern EntityData gUnk_080F6324; - -void sub_StateChange_WindTribeTower_Floor2(void) { - if (!CheckGlobalFlag(WARP_EVENT_END)) { - LoadRoomEntityList(&gUnk_080F62E4); - } else { - if (CheckLocalFlag(99)) { - LoadRoomEntityList(&gUnk_080F6324); - } - } -} - -u32 sub_unk3_WindTribeTower_Floor3() { - return 1; -} - -void sub_StateChange_WindTribeTower_Floor3() { -} - -u32 sub_unk3_WindTribeTower_Floor4() { - return 1; -} - -extern EntityData gUnk_080F6564; -extern EntityData gUnk_080F6584; - -void sub_StateChange_WindTribeTower_Floor4(void) { - - if (!CheckLocalFlag(0xb1)) { - LoadRoomEntityList(&gUnk_080F6564); - } else { - LoadRoomEntityList(&gUnk_080F6584); - } -} - -u32 sub_unk3_WindTribeTowerRoof_Main() { - return 1; -} - -extern EntityData gUnk_080F66AC; - -void sub_StateChange_WindTribeTowerRoof_Main(void) { - sub_0805B4D0(5); - if (CheckGlobalFlag(LV5_CLEAR) && !CheckLocalFlagByBank(0x100, 5)) { - LoadRoomEntityList(&gUnk_080F66AC); - } - sub_08052CA4(8, 0, 0x1e8, 0x158); -#ifndef EU - gArea.areaMetadata |= 0x80; -#endif -} - -u32 sub_unk3_Beanstalks_MountCrenel() { - return 1; -} - -void sub_StateChange_Beanstalks_MountCrenel() { -} - -u32 sub_unk3_Beanstalks_LakeHylia() { - return 1; -} - -void sub_StateChange_Beanstalks_LakeHylia() { -} - -u32 sub_unk3_Beanstalks_Ruins() { - return 1; -} - -void sub_StateChange_Beanstalks_Ruins() { -} - -u32 sub_unk3_Beanstalks_EasternHills() { - return 1; -} - -void sub_StateChange_Beanstalks_EasternHills() { -} - -u32 sub_unk3_Beanstalks_WesternWoods() { - return 1; -} - -void sub_StateChange_Beanstalks_WesternWoods() { -} - -u32 sub_unk3_Beanstalks_MountCrenelClimb() { - return 1; -} - -void sub_StateChange_Beanstalks_MountCrenelClimb() { -} - -u32 sub_unk3_Beanstalks_LakeHyliaClimb() { - return 1; -} - -void sub_StateChange_Beanstalks_LakeHyliaClimb() { -} - -u32 sub_unk3_Beanstalks_RuinsClimb() { - return 1; -} - -void sub_StateChange_Beanstalks_RuinsClimb() { -} - -u32 sub_unk3_Beanstalks_EasternHillsClimb() { - return 1; -} - -void sub_StateChange_Beanstalks_EasternHillsClimb() { -} - -u32 sub_unk3_Beanstalks_WesternWoodsClimb() { - return 1; -} - -void sub_StateChange_Beanstalks_WesternWoodsClimb() { -} - -u32 sub_unk3_HyruleField_WesternWoodSouth() { - return 1; -} - -void sub_StateChange_HyruleField_WesternWoodSouth() { - Manager18_Main(0); -} - -u32 sub_unk3_HyruleField_LinksHouseExterior(void) { -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0x6b)) { -#else - if (!CheckLocalFlag(0x6d)) { -#endif - DoFade(7, 0x100); - } - SetGlobalFlag(OUTDOOR); - return 1; -} - -extern EntityData gUnk_080F70A8; -extern EntityData gUnk_080F70D8; -extern EntityData gUnk_080F7088; - -void sub_StateChange_HyruleField_LinksHouseExterior(void) { - Manager18_Main(0); -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0x6b)) { -#else - if (!CheckLocalFlag(0x6d)) { -#endif - LoadRoomEntityList(&gUnk_080F70A8); - ClearGlobalFlag(ZELDA_CHASE); - } - if (!CheckGlobalFlag(TABIDACHI)) { - gArea.pMusicIndex = 0x10; - } - if ((gSave.windcrests & 0x40000000) == 0) { - LoadRoomEntityList(&gUnk_080F70D8); - } - if (gSave.global_progress > 3) { - LoadRoomEntityList(&gUnk_080F7088); - } -} - -void sub_unk1_HyruleField_LinksHouseExterior(void) { - if ((gSave.windcrests & 0x40000000) == 0) { - LoadRoomEntityList(&gUnk_080F70D8); - } -} - -u32 sub_unk3_HyruleField_FromMinishWoods() { - return 1; -} - -void sub_StateChange_HyruleField_FromMinishWoods() { - Manager18_Main(0); -} - -u32 sub_unk3_HyruleField_FromMinishWoodsNorth() { - return 1; -} - -void sub_StateChange_HyruleField_FromMinishWoodsNorth() { - Manager18_Main(0); -} - -extern u32 gUnk_080F7680; - -u32 sub_unk3_HyruleField_Farmers(void) { - if (GetInventoryValue(0x11) && !GetInventoryValue(0x12)) { - gRoomVars.field_0x6c[2] = &gUnk_080F7680; - } - return 1; -} - -extern EntityData gUnk_080F7500; -extern EntityData gUnk_080F7550; - -void sub_StateChange_HyruleField_Farmers(void) { - Manager18_Main(0); - if (gSave.global_progress > 3) { - LoadRoomEntityList(&gUnk_080F7500); - } - if (GetInventoryValue(0x11) && !GetInventoryValue(0x12)) { - LoadRoomEntityList(&gUnk_080F7550); - SetTileType(0x4072, 0x311, 1); - SetTileType(0x4072, 0x351, 1); - SetTileType(0x4072, 0x3d9, 1); - SetTileType(0x4072, 0x419, 1); - } -} - -u32 sub_unk3_HyruleField_LonLonRanch() { - return 1; -} - -extern EntityData gUnk_080F77F0; -extern EntityData gUnk_080F77C0; -extern EntityData gUnk_080F7810; -extern EntityData gUnk_080F7860; -extern EntityData gUnk_080F78A0; - -void sub_StateChange_HyruleField_LonLonRanch(void) { - - Manager18_Main(0); - if (CheckLocalFlagByBank(0x200, 0x8f)) { - if (!CheckGlobalFlag(INLOCK)) { - LoadRoomEntityList(&gUnk_080F77C0); - } - } else if (GetInventoryValue(0x40)) { - LoadRoomEntityList(&gUnk_080F77F0); - } - if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(0x40)) { - LoadRoomEntityList(&gUnk_080F7810); - } - if (!CheckKinstoneFused(0x29)) { - LoadRoomEntityList(&gUnk_080F7860); - SetTile(0x4072, 0xd88, 1); - SetTile(0x4096, 0xdc8, 1); - } - if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { - LoadRoomEntityList(&gUnk_080F78A0); - } -} - -extern u32 gUnk_080F7CD0; -extern void sub_0804F5E8(); -extern u32 gUnk_080F7C80; -extern void sub_0804F4E4(); - -u32 sub_unk3_HyruleField_OutsideCastle(void) { - if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(0x11)) { - gRoomVars.field_0x6c[0] = &gUnk_080F7CD0; - gRoomVars.field_0x6c[7] = sub_0804F5E8; - } -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8a)) { -#else - if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8c)) { -#endif - gRoomVars.field_0x6c[0] = &gUnk_080F7C80; - gRoomVars.field_0x6c[7] = sub_0804F4E4; - gRoomVars.field_0x6c[2] = NULL; - } -#ifndef EU - if (CheckGlobalFlag(TABIDACHI)) { - ClearGlobalFlag(CASTLE_BGM); - } -#endif - return 1; -} - -void sub_0804F4E4() { - Manager18_Main(0); - sub_0804F578(); -} - -extern EntityData gUnk_080F7D70; - -void sub_StateChange_HyruleField_OutsideCastle(void) { - sub_0804F4E4(); -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0x89)) { -#else - if (!CheckLocalFlag(0x8b)) { -#endif - LoadRoomEntityList(&gUnk_080F7D70); - SetTileType(0x174, 0x7a2, 1); - SetTileType(0x174, 0x7a3, 1); - SetTileType(0x174, 0x7a5, 1); - SetTileType(0x174, 0x7a6, 1); - SetTileType(0x174, 0x7a7, 1); - } - if (!CheckGlobalFlag(TABIDACHI)) { -#ifdef EU - gArea.pMusicIndex = 0x10; -#else - gArea.pMusicIndex = 0x13; -#endif - } -} - -extern EntityData gUnk_080F7DC0; - -void sub_0804F578(void) { -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlag(0x8c)) { -#else - if (!CheckLocalFlag(0x8e)) { -#endif - LoadRoomEntityList(&gUnk_080F7DC0); - } else { - SetTileType(0x37, 0x94a, 1); - SetTileType(0x37, 0x94b, 1); - SetTileType(0x37, 0x94c, 1); - SetTileType(0x37, 0x98a, 1); - SetTileType(0x37, 0x98b, 1); - SetTileType(0x37, 0x98c, 1); - } -} - -void sub_0804F5E8(void) { - sub_0804F4E4(); - SetTileType(0x1d3, 0xbde, 1); - SetTileType(0x1d6, 0xbe2, 1); - SetTileType(0x1d4, 0xc1f, 1); - SetTileType(0x1d5, 0xc20, 1); - SetTileType(0x1d6, 0xc5e, 1); - SetTileType(0x4072, 0xb9b, 1); - SetTileType(0x4072, 0xbdb, 1); - SetTileType(0x4072, 0xaa4, 1); - SetTileType(0x4072, 0xae4, 1); -} - -void sub_0804F680(Entity* parent, s32 x, s32 y) { - Entity* fx; - - fx = CreateFx(parent, FX_DEATH, 0); - if (fx != NULL) { - fx->x.HALF.HI = gRoomControls.roomOriginX + x; - fx->y.HALF.HI = gRoomControls.roomOriginY + y; - } -} - -void sub_0804F6A8(Entity* this) { - sub_0804F680(this, 0x1d8, 0x108); - sub_0804F680(this, 0x218, 0x188); -} - -void sub_0804F6C8(Entity* this) { - sub_0804F680(this, 0x1e8, 0x108); - sub_0804F680(this, 0x208, 0x188); -} - -void sub_0804F6E8(Entity* this) { - sub_0804F680(this, 0x1f8, 0x108); - sub_0804F680(this, 0x258, 0x138); - sub_0804F680(this, 0x1f8, 0x188); - sub_0804F680(this, 0x198, 0x158); -} - -void sub_0804F724(Entity* this) { - sub_0804F680(this, 0x208, 0x108); - sub_0804F680(this, 0x258, 0x148); - sub_0804F680(this, 0x1e8, 0x188); - sub_0804F680(this, 0x198, 0x148); -} - -void sub_0804F760(Entity* this) { - sub_0804F680(this, 0x218, 0x108); - sub_0804F680(this, 0x258, 0x158); - sub_0804F680(this, 0x1d8, 0x188); - sub_0804F680(this, 0x198, 0x138); -} - -void sub_0804F79C(Entity* parent) { - Entity* fx; - - fx = CreateFx(parent, FX_BIG_EXPLOSION, 0); - if (fx != NULL) { - fx->spriteRendering.b3 = 0; - fx->x.HALF.HI = gRoomControls.roomOriginX + 0x1b8; - fx->y.HALF.HI = gRoomControls.roomOriginY + 0x148; - } - fx = CreateFx(parent, FX_BIG_EXPLOSION, 0); - if (fx != NULL) { - fx->spriteRendering.b3 = 0; - fx->x.HALF.HI = gRoomControls.roomOriginX + 0x238; - fx->y.HALF.HI = gRoomControls.roomOriginY + 0x148; - } -} - -void sub_0804F808(void) { - SetTileType(0x1d3, 0x41d, 1); - SetTileType(0x1d3, 0x621, 1); -} - -void sub_0804F830(void) { - SetTileType(0x1d4, 0x41e, 1); - SetTileType(0x1d4, 0x620, 1); -} - -void sub_0804F854(void) { - SetTileType(0x1d5, 0x41f, 1); - SetTileType(0x1d4, 0x4e5, 1); - SetTileType(0x1d5, 0x61f, 1); - SetTileType(0x1d4, 0x559, 1); -} - -void sub_0804F89C(void) { - SetTileType(0x1d6, 0x420, 1); - SetTileType(0x1d5, 0x525, 1); - SetTileType(0x1d6, 0x61e, 1); - SetTileType(0x1d5, 0x519, 1); -} - -void sub_0804F8E0(void) { - SetTileType(0x1d3, 0x421, 1); - SetTileType(0x1d6, 0x565, 1); - SetTileType(0x1d3, 0x61d, 1); - SetTileType(0x1d6, 0x4d9, 1); -} - -void sub_0804F928(void) { - sub_0807BA8C(0x41d, 1); - sub_0807BA8C(0x621, 1); -} - -void sub_0804F944(void) { - sub_0807BA8C(0x41e, 1); - sub_0807BA8C(0x620, 1); -} - -void sub_0804F960(void) { - sub_0807BA8C(0x41f, 1); - sub_0807BA8C(0x4e5, 1); - sub_0807BA8C(0x61f, 1); - sub_0807BA8C(0x559, 1); -} - -void sub_0804F994(void) { - sub_0807BA8C(0x420, 1); - sub_0807BA8C(0x525, 1); - sub_0807BA8C(0x61e, 1); - sub_0807BA8C(0x519, 1); -} - -void sub_0804F9C8(void) { - sub_0807BA8C(0x421, 1); - sub_0807BA8C(0x565, 1); - sub_0807BA8C(0x61d, 1); - sub_0807BA8C(0x4d9, 1); -} - -u32 sub_unk3_HyruleField_OutsideCastleWest() { - return 1; -} - -extern EntityData gUnk_080F806C; - -void sub_StateChange_HyruleField_OutsideCastleWest(void) { - - Manager18_Main(0); - if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { - LoadRoomEntityList(&gUnk_080F806C); - } -} - -u32 sub_unk3_HyruleField_TrilbyHighlands() { - return 1; -} - -extern EntityData gUnk_080F82E0; - -void sub_StateChange_HyruleField_TrilbyHighlands(void) { - Manager18_Main(0); -#if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x9b)) { -#else - if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x9c)) { -#endif - LoadRoomEntityList(&gUnk_080F82E0); - } -} - -u32 sub_unk3_HyruleField_PercysHouse() { - return 1; -} - -extern EntityData gUnk_080F8430; - -void sub_StateChange_HyruleField_PercysHouse(void) { - - Manager18_Main(0); - if (CheckKinstoneFused(0x21) && !CheckLocalFlagByBank(0x200, 0x42)) { - LoadRoomEntityList(&gUnk_080F8430); - } -} - -u32 sub_unk3_Caves_Boomerang() { - return 1; -} - -extern EntityData gUnk_080F85F8; -extern EntityData gUnk_080F85D8; - -void sub_StateChange_Caves_Boomerang(void) { - - if (CheckGlobalFlag(SOUGEN_06_HASHIGO)) { - LoadRoomEntityList(&gUnk_080F85D8); - } else { - LoadRoomEntityList(&gUnk_080F85F8); - } - if (!GetInventoryValue(0xc)) { - ClearLocalFlag(8); - } -} - -u32 sub_unk3_Caves_ToGraveyard() { - return 1; -} - -void sub_StateChange_Caves_ToGraveyard() { -} - -u32 sub_unk3_Caves_2() { - return 1; -} - -void sub_StateChange_Caves_2() { -} - -u32 sub_unk3_Caves_3() { - return 1; -} - -void sub_StateChange_Caves_3() { -} - -u32 sub_unk3_Caves_4() { - return 1; -} - -void sub_StateChange_Caves_4() { -} - -u32 sub_unk3_Caves_5() { - return 1; -} - -void sub_StateChange_Caves_5() { -} - -u32 sub_unk3_Caves_6() { - return 1; -} - -void sub_StateChange_Caves_6() { -} - -u32 sub_unk3_Caves_KeeseChest() { - return 1; -} - -void sub_StateChange_Caves_KeeseChest() { -} - -u32 sub_unk3_Caves_FairyFountainTrilbyHighlands() { - return 1; -} - -void sub_StateChange_Caves_FairyFountainTrilbyHighlands() { -} - -u32 sub_unk3_Caves_FairyFountainLinksHouse() { - return 1; -} - -void sub_StateChange_Caves_FairyFountainLinksHouse() { -} - -u32 sub_unk3_Caves_A() { - return 1; -} - -void sub_StateChange_Caves_A() { -} - -u32 sub_unk3_Caves_HyruleTownWaterfall() { - return 1; -} - -void sub_StateChange_Caves_HyruleTownWaterfall() { -} - -u32 sub_unk3_Caves_LonLonRanch() { - return 1; -} - -void sub_StateChange_Caves_LonLonRanch() { -} - -u32 sub_unk3_Caves_LonLonRanchSecret() { - return 1; -} - -void sub_StateChange_Caves_LonLonRanchSecret(void) { - if (CheckLocalFlag(0x11)) { - SetRoomFlag(0); - SetRoomFlag(1); - ChangeLightLevel(0x100); - if (!CheckLocalFlag(0x12)) { - SetTileType(0x73, 0xcb, 1); - } - } -} - -u32 sub_unk3_Caves_TrilbyHighlands() { - return 1; -} - -void sub_StateChange_Caves_TrilbyHighlands() { -} - -u32 sub_unk3_Caves_LonLonRanchWallet() { - return 1; -} - -void sub_StateChange_Caves_LonLonRanchWallet() { -} - -u32 sub_unk3_Caves_RupeeLinksHouse() { - return 1; -} - -void sub_StateChange_Caves_RupeeLinksHouse() { -} - -u32 sub_unk3_Caves_RupeeTrilbyHighlands() { - return 1; -} - -void sub_StateChange_Caves_RupeeTrilbyHighlands() { -} - -u32 sub_unk3_Caves_FairyFountainMoleMitts() { - return 1; -} - -void sub_StateChange_Caves_FairyFountainMoleMitts() { -} - -u32 sub_unk3_Caves_KeeseChestSoutheastHyrule() { - return 1; -} -void sub_StateChange_Caves_KeeseChestSoutheastHyrule() { -} - -u32 sub_unk3_Caves_BottleBusinessScrub() { - return 1; -} - -void sub_StateChange_Caves_BottleBusinessScrub() { -} - -u32 sub_unk3_Caves_HeartPieceHallway() { - return 1; -} - -void sub_StateChange_Caves_HeartPieceHallway() { -} - -u32 sub_unk3_Caves_FairyFountainBoomerang() { - return 1; -} - -void sub_StateChange_Caves_FairyFountainBoomerang() { -} - -u32 sub_unk3_Caves_KinstoneBusinessScrub() { - return 1; -} - -void sub_StateChange_Caves_KinstoneBusinessScrub() { -} - -u32 sub_unk3_VeilFalls_Main() { - return 1; -} - -extern EntityData gUnk_080F9304; - -void sub_StateChange_VeilFalls_Main(void) { - if ((gSave.windcrests & 0x2000000) == 0) { - LoadRoomEntityList(&gUnk_080F9304); - } -} - -void sub_unk1_VeilFalls_Main(void) { - if ((gSave.windcrests & 0x2000000) == 0) { - LoadRoomEntityList(&gUnk_080F9304); - } -} - -u32 sub_unk3_VeilFallsCaves_Hallway2F() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_Hallway2F() { -} - -u32 sub_unk3_VeilFallsCaves_Hallway1F() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_Hallway1F() { -} - -u32 sub_unk3_VeilFallsCaves_SecretRoom() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_SecretRoom() { -} - -u32 sub_unk3_VeilFallsCaves_Entrance() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_Entrance() { -} - -u32 sub_unk3_VeilFallsCaves_Exit() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_Exit() { -} - -u32 sub_unk3_VeilFallsCaves_SecretChest() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_SecretChest() { -} - -u32 sub_unk3_VeilFallsCaves_SecretStaircases() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_SecretStaircases() { -} - -u32 sub_unk3_VeilFallsCaves_BlockPuzzle() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_BlockPuzzle() { -} - -u32 sub_unk3_VeilFallsCaves_RupeePath() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_RupeePath() { -} - -u32 sub_unk3_VeilFallsCaves_HeartPiece() { - return 1; -} - -void sub_StateChange_VeilFallsCaves_HeartPiece() { -} - -extern u32 gUnk_080F9BF8; - -u32 sub_unk3_VeilFallsTop_Main(void) { - if (!CheckKinstoneFused(0xe)) { - gRoomVars.field_0x6c[0] = &gUnk_080F9BF8; - } - return 1; -} - -void sub_StateChange_VeilFallsTop_Main() { - sub_0805B4D0(2); - sub_0806D0B0(0); -} - -u32 sub_unk3_47_0() { - return 1; -} - -void sub_StateChange_47_0() { -} - -u32 sub_unk3_47_1() { - return 1; -} - -void sub_StateChange_47_1() { -} - -u32 sub_unk3_47_2() { - return 1; -} - -void sub_StateChange_47_2() { -} - -u32 sub_unk3_47_3() { - return 1; -} - -void sub_StateChange_47_3() { -} - -u32 sub_unk3_47_4() { - return 1; -} - -void sub_StateChange_47_4() { -} - -u32 sub_unk3_TreeInteriors_WitchHut() { - return 1; -} - -extern EntityData gUnk_080F9FA8; -extern EntityData gUnk_080F9F88; - -void sub_StateChange_TreeInteriors_WitchHut(void) { - if (CheckKinstoneFused(0x14)) { - LoadRoomEntityList(&gUnk_080F9FA8); - } - if (!GetInventoryValue(0x38)) { - LoadRoomEntityList(&gUnk_080F9F88); - } -} - -u32 sub_0804FCD4() { - return 1; -} - -void nullsub_434() { -} - -u32 sub_0804FCDC() { - return 1; -} - -void nullsub_435() { -} - -u32 sub_0804FCE4() { - return 1; -} - -void nullsub_436() { -} - -u32 sub_0804FCEC() { - return 1; -} - -void nullsub_437() { -} - -u32 sub_0804FCF4() { - return 1; -} - -void nullsub_438() { -} - -u32 sub_0804FCFC() { - return 1; -} - -void nullsub_439() { -} - -u32 sub_0804FD04() { - return 1; -} - -void nullsub_440() { -} - -u32 sub_0804FD0C() { - return 1; -} - -void nullsub_441() { -} - -u32 sub_0804FD14() { - return 1; -} - -void nullsub_442() { -} - -u32 sub_0804FD1C() { - return 1; -} - -void nullsub_443() { -} - -u32 sub_0804FD24() { - return 1; -} - -void nullsub_444() { -} - -u32 sub_0804FD2C() { - return 1; -} - -void nullsub_445() { -} - -u32 sub_0804FD34() { - return 1; -} - -void nullsub_446() { -} - -u32 sub_0804FD3C() { - return 1; -} - -void nullsub_447() { -} - -u32 sub_0804FD44() { - return 1; -} - -void nullsub_448() { -} - -u32 sub_unk3_TreeInteriors_StairsToCarlov() { - return 1; -} - -void sub_StateChange_TreeInteriors_StairsToCarlov() { -} - -u32 sub_unk3_TreeInteriors_PercysTreehouse() { - return 1; -} - -extern EntityData gUnk_080FA5D0; - -void sub_StateChange_TreeInteriors_PercysTreehouse(void) { - if (!CheckKinstoneFused(0x21)) { - LoadRoomEntityList(&gUnk_080FA5D0); - } -} - -u32 sub_unk3_TreeInteriors_HeartPiece() { - return 1; -} -void sub_StateChange_TreeInteriors_HeartPiece() { -} - -u32 sub_unk3_TreeInteriors_StairsToBladeBrother() { - return 1; -} - -void sub_StateChange_TreeInteriors_StairsToBladeBrother() { -} - -u32 sub_unk3_TreeInteriors_14() { - return 1; -} - -void sub_StateChange_TreeInteriors_14() { -} - -u32 sub_unk3_TreeInteriors_BoomerangNorthwest() { - return 1; -} - -void sub_StateChange_TreeInteriors_BoomerangNorthwest() { -} - -u32 sub_unk3_TreeInteriors_BoomerangNortheast() { - return 1; -} - -void sub_StateChange_TreeInteriors_BoomerangNortheast() { -} - -u32 sub_unk3_TreeInteriors_BoomerangSouthwest() { - return 1; -} - -void sub_StateChange_TreeInteriors_BoomerangSouthwest() { -} - -u32 sub_unk3_TreeInteriors_BoomerangSoutheast() { - return 1; -} - -void sub_StateChange_TreeInteriors_BoomerangSoutheast() { -} - -u32 sub_unk3_TreeInteriors_HeartPieceSouthwestField() { - return 1; -} - -void sub_StateChange_TreeInteriors_HeartPieceSouthwestField() { -} - -u32 sub_unk3_TreeInteriors_StairsToFairyFountain() { - return 1; -} - -void sub_StateChange_TreeInteriors_StairsToFairyFountain() { -} - -u32 sub_unk3_TreeInteriors_StairsToWalletFairy() { - return 1; -} - -void sub_StateChange_TreeInteriors_StairsToWalletFairy() { -} - -u32 sub_unk3_TreeInteriors_1C() { - return 1; -} - -void sub_StateChange_TreeInteriors_1C() { -} - -u32 sub_unk3_TreeInteriors_StairsToBusinessScrub() { - return 1; -} - -void sub_StateChange_TreeInteriors_StairsToBusinessScrub() { -} - -u32 sub_unk3_TreeInteriors_1E() { - return 1; -} - -void sub_StateChange_TreeInteriors_1E() { -} - -u32 sub_unk3_TreeInteriors_1F() { - return 1; -} - -void sub_StateChange_TreeInteriors_1F() { -} - -extern u32 gUnk_080FAD48; - -u32 sub_unk3_MtCrenel_MountainTop(void) { - if (CheckGlobalFlag(ENDING)) { - gRoomVars.field_0x6c[0] = &gUnk_080FAD48; - gRoomVars.field_0x6c[2] = NULL; - } - return 1; -} - -extern EntityData gUnk_080FACB8; - -void sub_StateChange_MtCrenel_MountainTop(void) { - if (CheckGlobalFlag(ENDING)) { - gArea.pMusicIndex = gArea.musicIndex; - } else { - LoadRoomEntityList(&gUnk_080FACB8); - } - sub_0805B4D0(0); - sub_08059994(); -} - -void sub_unk1_MtCrenel_MountainTop() { - sub_0805B4D0(0); -} - -u32 sub_unk3_MtCrenel_WallClimb() { - return 1; -} - -void sub_StateChange_MtCrenel_WallClimb() { -} - -u32 sub_unk3_MtCrenel_CaveOfFlamesEntrance() { - return 1; -} - -extern EntityData gUnk_080FAFE4; -extern EntityData gUnk_080FB004; - -void sub_StateChange_MtCrenel_CaveOfFlamesEntrance(void) { - - sub_0805B4D0(1); - if (CheckGlobalFlag(LV2_CLEAR) && !CheckLocalFlag(LV1_CLEAR)) { - LoadRoomEntityList(&gUnk_080FAFE4); - } - if ((gSave.windcrests & 0x1000000) == 0) { - LoadRoomEntityList(&gUnk_080FB004); - } - if (GetInventoryValue(0x2)) { - SetGlobalFlag(WHITE_SWORD_END); - } -} - -void sub_unk1_MtCrenel_CaveOfFlamesEntrance(void) { - if ((gSave.windcrests & 0x1000000) == 0) { - LoadRoomEntityList(&gUnk_080FB004); - } -} - -u32 sub_unk3_MtCrenel_GustJarShortcut() { - return 1; -} - -void sub_StateChange_MtCrenel_GustJarShortcut() { -} - -u32 sub_unk3_MtCrenel_Entrance() { - return 1; -} - -void sub_StateChange_MtCrenel_Entrance(void) { -#if defined(USA) || defined(DEMO_USA) || defined(DEMO_JP) - SetTileType(0x176, 0x66f, 1); -#endif -} - -u32 sub_unk3_CrenelCaves_BlockPushing() { - return 1; -} - -void sub_StateChange_CrenelCaves_BlockPushing() { -} - -u32 sub_unk3_CrenelCaves_PillarCave() { - return 1; -} - -void sub_StateChange_CrenelCaves_PillarCave() { -} - -u32 sub_unk3_CrenelCaves_BridgeSwitch() { - return 1; -} - -void sub_StateChange_CrenelCaves_BridgeSwitch() { -} - -u32 sub_unk3_CrenelCaves_ExitToMines() { - return 1; -} - -void sub_StateChange_CrenelCaves_ExitToMines() { -} - -u32 sub_unk3_CrenelCaves_GripRing() { - return 1; -} - -void sub_StateChange_CrenelCaves_GripRing() { -} - -u32 sub_unk3_CrenelCaves_FairyFountain() { - return 1; -} - -void sub_StateChange_CrenelCaves_FairyFountain() { -} - -u32 sub_unk3_CrenelCaves_SpinyChuPuzzle() { - return 1; -} - -void sub_StateChange_CrenelCaves_SpinyChuPuzzle() { -} - -u32 sub_unk3_CrenelCaves_ChuchuPotChest() { - return 1; -} - -void sub_StateChange_CrenelCaves_ChuchuPotChest() { -} - -u32 sub_unk3_CrenelCaves_WaterHeartPiece() { - return 1; -} - -void sub_StateChange_CrenelCaves_WaterHeartPiece() { -} - -u32 sub_unk3_CrenelCaves_RupeeFairyFountain() { - return 1; -} - -void sub_StateChange_CrenelCaves_RupeeFairyFountain() { -} - -u32 sub_unk3_CrenelCaves_HelmasaurHallway() { - return 1; -} - -void sub_StateChange_CrenelCaves_HelmasaurHallway() { -} - -u32 sub_unk3_CrenelCaves_MushroomKeese() { - return 1; -} - -void sub_StateChange_CrenelCaves_MushroomKeese() { -} - -u32 sub_unk3_CrenelCaves_LadderToGreenWater() { - return 1; -} - -void sub_StateChange_CrenelCaves_LadderToGreenWater() { -} - -u32 sub_unk3_CrenelCaves_BombBusinessScrub() { - return 1; -} - -void sub_StateChange_CrenelCaves_BombBusinessScrub() { -} - -u32 sub_unk3_CrenelCaves_Hermit() { - return 1; -} - -void sub_StateChange_CrenelCaves_Hermit(void) { - if (!CheckLocalFlag(0x70)) { - SetLocalFlag(0x70); +void sub_0804B388(u32 a1, u32 a2) { + Entity* e; + SetTileType(a2 == 1 ? 38 : 52, a1, a2); + e = CreateObject(0xF, 2, 0); + if (e != NULL) { + e->collisionLayer = a2; + sub_0806F704(e, a1); } + sub_080526F8(-1); } -u32 sub_unk3_CrenelCaves_HintScrub() { - return 1; -} - -void sub_StateChange_CrenelCaves_HintScrub() { -} - -u32 sub_unk3_CrenelCaves_ToGrayblade() { - return 1; -} - -void sub_StateChange_CrenelCaves_ToGrayblade() { -} - -void sub_0804FF84(u32 arg0) { - ((struct_02000000*)0x02000000)->brightnessPref = arg0; - gUsedPalettes = 0xffffffff; +void sub_0804B3C4(void* arg0) { + LoadSmallChestTile(arg0); } diff --git a/src/roomInit.c b/src/roomInit.c new file mode 100644 index 00000000..223d7c99 --- /dev/null +++ b/src/roomInit.c @@ -0,0 +1,6666 @@ +#include "global.h" + +#include "main.h" +#include "random.h" + +#include "functions.h" +#include "structures.h" + +#include "audio.h" +#include "effects.h" +#include "screen.h" +#include "flags.h" +#include "item.h" +#include "save.h" +#include "script.h" + +#include "area.h" +#include "room.h" + +#include "entity.h" +#include "npc.h" +#include "player.h" + +u32 sub_unk3_ArmosInteriors_RuinsEntranceNorth(u32 arg0) { + return 1; +} + +void sub_StateChange_ArmosInteriors_RuinsEntranceNorth() { + sub_08030118(0); +} + +u32 sub_unk3_ArmosInteriors_RuinsEntranceSouth() { + return 1; +} + +void sub_StateChange_ArmosInteriors_RuinsEntranceSouth() { + sub_08030118(1); +} + +u32 sub_unk3_ArmosInteriors_RuinsLeft() { + return 1; +} + +void sub_StateChange_ArmosInteriors_RuinsLeft() { + sub_08030118(2); +} + +u32 sub_unk3_ArmosInteriors_RuinsMiddleLeft() { + return 1; +} + +void sub_StateChange_ArmosInteriors_RuinsMiddleLeft() { + sub_08030118(3); +} + +u32 sub_unk3_ArmosInteriors_RuinsMiddleRight() { + return 1; +} + +void sub_StateChange_ArmosInteriors_RuinsMiddleRight() { + sub_08030118(4); +} + +u32 sub_unk3_ArmosInteriors_RuinsRight() { + return 1; +} + +void sub_StateChange_ArmosInteriors_RuinsRight() { + sub_08030118(5); +} + +u32 sub_unk3_ArmosInteriors_6() { + return 1; +} + +void sub_StateChange_ArmosInteriors_6() { + sub_08030118(6); +} + +u32 sub_unk3_ArmosInteriors_RuinsGrassPath() { + return 1; +} + +void sub_StateChange_ArmosInteriors_RuinsGrassPath() { + sub_08030118(7); +} + +u32 sub_unk3_ArmosInteriors_8() { + return 1; +} + +void sub_StateChange_ArmosInteriors_8() { + sub_08030118(8); +} + +u32 sub_unk3_ArmosInteriors_FortressOfWindsLeft() { + return 1; +} + +void sub_StateChange_ArmosInteriors_FortressOfWindsLeft() { + sub_08030118(9); + gArea.dungeon_idx = 3; + gArea.areaMetadata = 0x4e; +} + +u32 sub_unk3_ArmosInteriors_FortressOfWindsRight() { + return 1; +} + +void sub_StateChange_ArmosInteriors_FortressOfWindsRight() { + sub_08030118(10); + gArea.dungeon_idx = 3; + gArea.areaMetadata = 0x4e; +} + +u32 sub_unk3_CrenelMinishPaths_CrenelBean() { + return 1; +} + +void sub_StateChange_CrenelMinishPaths_CrenelBean() { + sub_080575C8(35); + sub_08057688(); +} + +u32 sub_unk3_CrenelMinishPaths_CrenelWater() { + return 1; +} + +void sub_StateChange_CrenelMinishPaths_CrenelWater() { + sub_080575C8(35); +} + +void sub_unk1_CrenelMinishPaths_CrenelWater() { + sub_080575C8(35); +} + +u32 sub_unk3_CrenelMinishPaths_Rainfall() { + return 1; +} + +void sub_StateChange_CrenelMinishPaths_Rainfall() { + sub_080580B0(34); +} + +void sub_unk1_CrenelMinishPaths_Rainfall() { + sub_080580B0(34); +} + +u32 sub_unk3_CrenelMinishPaths_MelarisMine() { + return 1; +} + +void sub_StateChange_CrenelMinishPaths_MelarisMine(void) { + sub_080580B0(0x22); + // white sword + if (GetInventoryValue(0x2)) + SetGlobalFlag(WHITE_SWORD_END); +} + +void sub_unk1_CrenelMinishPaths_MelarisMine() { + sub_080580B0(34); +} + +u32 sub_unk3_MinishPaths1_ToMinishVillage() { + return 1; +} + +void sub_StateChange_MinishPaths1_ToMinishVillage() { + sub_080575C8(30); +} + +void sub_unk1_MinishPaths1_ToMinishVillage() { + sub_080575C8(30); +} + +u32 sub_unk3_MinishPaths1_CastorWilds() { + return 1; +} + +void sub_StateChange_MinishPaths1_CastorWilds() { + sub_080575C8(33); +} + +void sub_unk1_MinishPaths1_CastorWilds() { + sub_080575C8(33); +} + +u32 sub_unk3_MinishPaths1_HyruleTown() { + return 1; +} + +void sub_StateChange_MinishPaths1_HyruleTown() { + sub_080575C8(31); +} + +void sub_unk1_MinishPaths1_HyruleTown() { + sub_080575C8(31); +} + +u32 sub_unk3_MinishPaths1_LonLonRanch() { + return 1; +} + +void sub_StateChange_MinishPaths1_LonLonRanch() { + sub_080575C8(32); +} + +void sub_unk1_MinishPaths1_LonLonRanch() { + sub_080575C8(32); +} + +u32 sub_unk3_MinishPaths1_MayorsCabin() { + return 1; +} + +extern EntityData Entities_MinishPaths1_MayorsCabin_gUnk_080D6138; + +void sub_StateChange_MinishPaths1_MayorsCabin(void) { + + sub_080575C8(0x20); + + if (gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY > 0x40) + LoadRoomEntityList(&Entities_MinishPaths1_MayorsCabin_gUnk_080D6138); +} + +void sub_unk1_MinishPaths1_MayorsCabin() { + sub_080575C8(32); +} + +u32 sub_unk3_HouseInteriors1_Mayor() { + return 1; +} + +extern EntityData Entities_HouseInteriors1_Mayor_080D6210; + +void sub_StateChange_HouseInteriors1_Mayor(void) { + + if ((u16)gScreenTransition.player_status.start_pos.HALF.y > 0x40) + LoadRoomEntityList(&Entities_HouseInteriors1_Mayor_080D6210); +} + +u32 sub_unk3_HouseInteriors1_PostOffice() { + return 1; +} + +extern EntityData gUnk_080D6340; +extern EntityData gUnk_080D6360; +extern EntityData gUnk_080D6380; +extern EntityData gUnk_080D63A0; +extern EntityData gUnk_080D63C0; +extern EntityData gUnk_080D63E0; +extern EntityData gUnk_080D6400; +extern EntityData gUnk_080D6420; +extern EntityData gUnk_080D6440; + +extern u16 gUnk_080D64F8; +extern u16 gUnk_080D6508; + +void sub_StateChange_HouseInteriors1_PostOffice(void) { + u16 itemID; + s32 i; + u16* itemArr; + u16* flagArr; + s32 j; + + if (CheckKinstoneFused(0x2c)) { + LoadRoomEntityList(&gUnk_080D6340); + } + j = 0; + itemArr = &gUnk_080D64F8; + for (i = 7; i >= 0; i--) { + itemID = *itemArr; + itemArr++; + if (GetInventoryValue(itemID)) { + j++; + } + } + if (CheckLocalFlag(BILL01_TESSIN_RESERVED)) { + flagArr = &gUnk_080D6508; + i = 0; + while (i < j) { + if (CheckLocalFlag(*flagArr) == 0) { + SetLocalFlag(*flagArr); + ClearLocalFlag(BILL01_TESSIN_RESERVED); + SetLocalFlag(BILL01_TESSIN_BRANDNEW); + break; + } + i++; + flagArr++; + } + } + + if (CheckLocalFlag(BILL01_TESSIN_1)) + LoadRoomEntityList(&gUnk_080D6360); + + if (CheckLocalFlag(BILL01_TESSIN_2)) + LoadRoomEntityList(&gUnk_080D6380); + + if (CheckLocalFlag(BILL01_TESSIN_3)) + LoadRoomEntityList(&gUnk_080D63A0); + + if (CheckLocalFlag(BILL01_TESSIN_4)) + LoadRoomEntityList(&gUnk_080D63C0); + + if (CheckLocalFlag(BILL01_TESSIN_5)) + LoadRoomEntityList(&gUnk_080D63E0); + + if (CheckLocalFlag(BILL01_TESSIN_6)) + LoadRoomEntityList(&gUnk_080D6400); + + if (CheckLocalFlag(BILL01_TESSIN_7)) + LoadRoomEntityList(&gUnk_080D6420); + + if (CheckLocalFlag(BILL01_TESSIN_8)) + LoadRoomEntityList(&gUnk_080D6440); +} + +u32 sub_unk3_HouseInteriors1_Library2F() { + return 1; +} + +extern EntityData gUnk_080D6578; +extern EntityData gUnk_080D6638; +extern EntityData gUnk_080D6558; +extern EntityData gUnk_080D6618; + +void sub_StateChange_HouseInteriors1_Library2F(void) { + // flippers + if (GetInventoryValue(0x46) == 0) { + LoadRoomEntityList(&gUnk_080D6578); + if (CheckLocalFlag(MIZUKAKI_BOOK_ALLBACK) == 0) { + LoadRoomEntityList(&gUnk_080D6638); + return; + } + } else { + LoadRoomEntityList(&gUnk_080D6558); + } + LoadRoomEntityList(&gUnk_080D6618); +} + +u32 sub_unk3_HouseInteriors1_Library1F() { + return 1; +} + +extern EntityData gUnk_080D6714; +extern EntityData gUnk_additional_9_HouseInteriors1_Library1F; +extern EntityData gUnk_additional_8_HouseInteriors1_Library1F; + +void sub_StateChange_HouseInteriors1_Library1F(void) { + if (gSave.global_progress > 4) { + LoadRoomEntityList(&gUnk_080D6714); + } + // flippers + if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START) && CheckLocalFlag(MIZUKAKI_KOBITO)) { + LoadRoomEntityList(&gUnk_additional_9_HouseInteriors1_Library1F); + } else { + LoadRoomEntityList(&gUnk_additional_8_HouseInteriors1_Library1F); + } +} + +u32 sub_unk3_HouseInteriors1_Inn1F() { + return 1; +} + +extern EntityData gUnk_080D6924; + +void sub_StateChange_HouseInteriors1_Inn1F(void) { + if (gSave.global_progress > 7) { + LoadRoomEntityList(&gUnk_080D6924); + } +} + +extern u32* gUnk_080D6A74[]; + +u32 sub_unk3_HouseInteriors1_InnWestRoom(void) { + u32 index; + + if (CheckLocalFlag(YADO_CHECKIN)) { + index = (s32)Random() % 3; + ClearLocalFlag(BILL05_YADO1F_MATSU_T0); + } else { + index = 0; + SetLocalFlag(BILL05_YADO1F_MATSU_T0); + } + gRoomVars.field_0x6c[3] = gUnk_080D6A74[index]; + return 1; +} + +extern void* script_08010A5C[]; + +void sub_StateChange_HouseInteriors1_InnWestRoom(void) { + if (CheckLocalFlag(YADO_CHECKIN)) { + ClearLocalFlag(YADO_CHECKIN); + DoFade(5, 256); + gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; + gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; + sub_080751E8(1, 2, &script_08010A5C); + } +} + +extern u32* gUnk_080D6B18[]; + +u32 sub_unk3_HouseInteriors1_InnMiddleRoom(void) { + u32 index; + + if (CheckLocalFlag(YADO_CHECKIN) != 0) { + index = Random() & 1; + ClearLocalFlag(BILL06_YADO1F_TAKE_T0); + } else { + index = 0; + SetLocalFlag(BILL06_YADO1F_TAKE_T0); + } + gRoomVars.field_0x6c[3] = gUnk_080D6B18[index]; + return 1; +} + +void sub_StateChange_HouseInteriors1_InnMiddleRoom(void) { + if (CheckLocalFlag(YADO_CHECKIN) != 0) { + ClearLocalFlag(YADO_CHECKIN); + DoFade(5, 256); + gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; + gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; + sub_080751E8(1, 2, &script_08010A5C); + } +} + +extern u32* gUnk_080D6BB8[]; + +u32 sub_unk3_HouseInteriors1_InnEastRoom(void) { + s32 index; + + if (CheckLocalFlag(YADO_CHECKIN) != 0) { + index = (s32)Random() % 3; + ClearLocalFlag(BILL07_YADO1F_UME_T0); + } else { + index = 0; + SetLocalFlag(BILL07_YADO1F_UME_T0); + } + gRoomVars.field_0x6c[3] = gUnk_080D6BB8[index]; + return 1; +} + +void sub_StateChange_HouseInteriors1_InnEastRoom(void) { + if (CheckLocalFlag(YADO_CHECKIN)) { + ClearLocalFlag(YADO_CHECKIN); + DoFade(5, 256); + gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x60; + gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; + sub_080751E8(1, 2, &script_08010A5C); + } +} + +u32 sub_unk3_HouseInteriors1_InnWest2F() { + return 1; +} + +extern EntityData UpperInn_Oracles; +extern EntityData UpperInn_NoFarore; +extern EntityData UpperInn_NoNayru; +extern EntityData UpperInn_NoDin; +extern EntityData UpperInn_Farore; +extern EntityData UpperInn_Nayru; +extern EntityData UpperInn_Din; + +void sub_StateChange_HouseInteriors1_InnWest2F(void) { + int iVar1; + + if (gSave.global_progress < 4) + return; + + if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { + if (!CheckGlobalFlag(NEW_HOUSE_NAYRU)) + if (!CheckGlobalFlag(NEW_HOUSE_FARORE)) + LoadRoomEntityList(&UpperInn_NoDin); + else + LoadRoomEntityList(&UpperInn_Nayru); + else + LoadRoomEntityList(&UpperInn_Farore); + } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { + if (CheckGlobalFlag(NEW_HOUSE_DIN)) + LoadRoomEntityList(&UpperInn_Farore); + else if (!CheckGlobalFlag(NEW_HOUSE_FARORE)) + LoadRoomEntityList(&UpperInn_NoNayru); + else + LoadRoomEntityList(&UpperInn_Din); + } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { + if (CheckGlobalFlag(NEW_HOUSE_DIN)) + LoadRoomEntityList(&UpperInn_Nayru); + else if (CheckGlobalFlag(NEW_HOUSE_NAYRU)) + LoadRoomEntityList(&UpperInn_Din); + else + LoadRoomEntityList(&UpperInn_NoFarore); + } else + LoadRoomEntityList(&UpperInn_Oracles); +} + +u32 sub_unk3_HouseInteriors1_InnEast2F() { + return 1; +} + +void sub_StateChange_HouseInteriors1_InnEast2F() { +} + +u32 sub_unk3_HouseInteriors1_InnMinishHeartPiece() { + return 1; +} + +void sub_StateChange_HouseInteriors1_InnMinishHeartPiece() { +} + +u32 sub_unk3_HouseInteriors1_SchoolWest() { + return 1; +} + +extern EntityData gUnk_080D7038; + +void sub_StateChange_HouseInteriors1_SchoolWest(void) { + if (gSave.global_progress < 8) { + LoadRoomEntityList(&gUnk_080D7038); + } + if (gRoomVars.field_0x0 == 0) { + sub_08052CA4(2, 0, 0x2c8, 0xa8); + } +} + +u32 sub_unk3_HouseInteriors1_SchoolEast() { + return 1; +} + +extern EntityData gUnk_080D7140; +extern EntityData gUnk_080D7170; +extern EntityData gUnk_080D71A0; +extern EntityData gUnk_080D71D0; +extern EntityData gUnk_080D71F0; + +void sub_StateChange_HouseInteriors1_SchoolEast(void) { + + if (gSave.global_progress == 6) + LoadRoomEntityList(&gUnk_080D7140); + + if (gSave.global_progress == 7) + LoadRoomEntityList(&gUnk_080D7170); + + if ((gSave.global_progress < 8) || (LoadRoomEntityList(&gUnk_080D71A0), gSave.global_progress < 8)) + LoadRoomEntityList(&gUnk_080D71D0); + else + LoadRoomEntityList(&gUnk_080D71F0); +} + +extern u32 gUnk_080D7348; + +u32 sub_unk3_HyruleCastle_0(void) { + if (CheckGlobalFlag(ENDING)) { + gRoomVars.field_0x6c[0] = &gUnk_080D7348; + gRoomVars.field_0x6c[2] = 0; + } + return 1; +} + +extern EntityData gUnk_080D7328; + +void sub_StateChange_HyruleCastle_0(void) { + if (!CheckGlobalFlag(LV2_CLEAR)) { + LoadRoomEntityList(&gUnk_080D7328); + } + +#if defined(JP) || defined(DEMO_JP) + if (CheckGlobalFlag(CASTLE_BGM) || CheckGlobalFlag(ENDING)) { + gArea.pMusicIndex = gArea.musicIndex; + } +#elif defined(EU) + if (CheckGlobalFlag(ENDING)) { + gArea.pMusicIndex = gArea.musicIndex; + } +#else + if (CheckGlobalFlag(CASTLE_BGM)) { + gArea.pMusicIndex = BGM_HYRULE_CASTLE_NOINTRO; + } else if (CheckGlobalFlag(ENDING)) { + gArea.pMusicIndex = gArea.musicIndex; + } +#endif +} + +extern u32 gUnk_080D7410; + +u32 sub_unk3_HyruleCastle_1(void) { + if (CheckGlobalFlag(ENDING)) { + gRoomVars.field_0x6c[0] = &gUnk_080D7410; + gRoomVars.field_0x6c[2] = 0; + } + return 1; +} + +extern EntityData gUnk_080D73B0; +extern EntityData gUnk_080D73E0; + +void sub_StateChange_HyruleCastle_1(void) { + if (CheckGlobalFlag(ENDING)) { + gArea.pMusicIndex = gArea.musicIndex; + } else { + if (!CheckGlobalFlag(LV2_CLEAR)) { + LoadRoomEntityList(&gUnk_080D73B0); + } + if (!CheckGlobalFlag(LV1_CLEAR) && CheckGlobalFlag(TABIDACHI)) { + LoadRoomEntityList(&gUnk_080D73E0); + } +#ifndef EU + if (CheckGlobalFlag(CASTLE_BGM)) { + gArea.pMusicIndex = gArea.musicIndex; + } +#endif + } +} + +u32 sub_unk3_HyruleCastle_2() { + return 1; +} + +extern EntityData gUnk_080D74C8; +extern EntityData gUnk_080D7588; +extern EntityData gUnk_080D75D8; +extern EntityData gUnk_080D7618; + +void sub_StateChange_HyruleCastle_2(void) { +#ifndef EU + if (CheckGlobalFlag(CASTLE_BGM)) { + gArea.pMusicIndex = gArea.musicIndex; + } +#endif + + if (CheckGlobalFlag(ENDING)) { + LoadRoomEntityList(&gUnk_080D7618); + gArea.pMusicIndex = gArea.musicIndex; + } else if (CheckGlobalFlag(TABIDACHI) == 0) { + LoadRoomEntityList(&gUnk_080D74C8); + gArea.pMusicIndex = BGM_HYRULE_CASTLE_NOINTRO; + } else if (CheckGlobalFlag(LV1_CLEAR) == 0) { + LoadRoomEntityList(&gUnk_080D7588); + } else { + LoadRoomEntityList(&gUnk_080D75D8); + } +} + +u32 sub_unk3_HyruleCastle_3() { + return 1; +} + +extern EntityData gUnk_additional_8_HyruleCastle_3; + +void sub_StateChange_HyruleCastle_3(void) { + if (CheckLocalFlag(SOUGEN_08_TORITSUKI)) { + LoadRoomEntityList(&gUnk_additional_8_HyruleCastle_3); + } +} + +u32 sub_unk3_HyruleCastle_4(void) { + if (!CheckLocalFlag(CASTLE_04_MEZAME)) { + gScreenTransition.player_status.spawn_type = PL_SPAWN_SPECIAL; + ClearGlobalFlag(ZELDA_CHASE); + } + return 1; +} + +extern u32 script_08009E88; + +void sub_StateChange_HyruleCastle_4(void) { + if (!CheckLocalFlag(CASTLE_04_MEZAME)) { + DoFade(5, 256); + gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0xb0; + gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x40; + sub_080751E8(0, 6, &script_08009E88); +#ifdef EU + SoundReq(0x80010000); + gArea.musicIndex = gArea.pMusicIndex; + } +#else + } + + if (!CheckGlobalFlag(TABIDACHI)) { + sub_08052878(); +#if !(defined(JP) || defined(DEMO_JP)) + } else { +#else + } +#endif + if (CheckGlobalFlag(CASTLE_BGM)) { +#if defined(JP) || defined(DEMO_JP) + gArea.pMusicIndex = gArea.musicIndex; +#else + gArea.pMusicIndex = BGM_HYRULE_CASTLE_NOINTRO; +#endif + } +#if !(defined(JP) || defined(DEMO_JP)) + } +#endif +#endif +} + +extern ScreenTransitionData gUnk_0813AB80; + +void sub_0804BCDC() { + sub_0808091C(&gUnk_0813AB80, 4); +} + +u32 sub_unk3_HyruleCastle_5() { + return 1; +} + +void sub_StateChange_HyruleCastle_5() { +} + +u32 sub_unk3_87_Main() { + return 1; +} + +void sub_StateChange_87_Main() { +} + +u32 sub_unk3_45_Main() { + return 1; +} + +void sub_StateChange_45_Main() { +} + +u32 sub_unk3_4D_Main() { + return 1; +} + +void sub_StateChange_4D_Main() { +} + +u32 sub_unk3_57_Main() { + return 1; +} + +void sub_StateChange_57_Main() { +} + +u32 sub_unk3_5F_Main() { + return 1; +} + +void sub_StateChange_5F_Main() { +} + +u32 sub_unk3_67_Main() { + return 1; +} + +void sub_StateChange_67_Main() { +} + +u32 sub_unk3_6F_Main() { + return 1; +} + +void sub_StateChange_6F_Main() { +} + +u32 sub_unk3_77_Main() { + return 1; +} + +void sub_StateChange_77_Main() { +} + +u32 sub_unk3_7F_Main() { + return 1; +} + +void sub_StateChange_7F_Main() { +} + +u32 sub_unk3_8F_Main() { + return 1; +} + +void sub_StateChange_8F_Main() { +} + +u32 sub_unk3_GreatFairies_Entrance() { + return 1; +} + +void sub_StateChange_GreatFairies_Entrance() { +} + +u32 sub_unk3_GreatFairies_Exit() { + return 1; +} + +extern EntityData gUnk_080D7D34; + +void sub_StateChange_GreatFairies_Exit(void) { + // four sword + if (GetInventoryValue(0x6)) { + SetTile(0x4072, 0x14d, 1); + SetTile(0x4072, 0x10c, 1); + SetTile(0x4090, 0x14c, 1); + SetTile(0x4090, 0x18c, 1); + LoadRoomEntityList(&gUnk_080D7D34); + } +} + +u32 sub_unk3_Dojos_Grayblade() { + return 1; +} + +void sub_StateChange_Dojos_Grayblade() { +} + +u32 sub_unk3_Dojos_Splitblade() { + return 1; +} + +void sub_StateChange_Dojos_Splitblade() { +} + +u32 sub_unk3_Dojos_Greatblade() { + return 1; +} + +void sub_StateChange_Dojos_Greatblade() { +} + +u32 sub_unk3_Dojos_Scarblade() { + return 1; +} + +void sub_StateChange_Dojos_Scarblade() { +} + +u32 sub_unk3_Dojos_Swiftblade() { + return 1; +} + +void sub_StateChange_Dojos_Swiftblade() { +} + +u32 sub_unk3_Dojos_Grimblade() { + return 1; +} + +extern EntityData gUnk_080D827C; + +void sub_StateChange_Dojos_Grimblade(void) { + if (!CheckLocalFlag(3)) { + LoadRoomEntityList(&gUnk_080D827C); + } else { + sub_0805BC4C(); + SetTileType(0x76, 0x82, 2); + SetTileType(0x76, 0x8c, 2); + } +} + +u32 sub_unk3_Dojos_Waveblade() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade() { +} + +u32 sub_unk3_Dojos_7() { + return 1; +} + +void sub_StateChange_Dojos_7() { +} + +u32 sub_unk3_Dojos_8() { + return 1; +} + +void sub_StateChange_Dojos_8() { +} + +u32 sub_unk3_Dojos_9() { + return 1; +} + +void sub_StateChange_Dojos_9() { +} + +u32 sub_unk3_Dojos_ToGrimblade() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade() { +} + +u32 sub_unk3_Dojos_ToSplitblade() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade() { +} + +u32 sub_unk3_Dojos_ToGreatblade() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade() { +} + +u32 sub_unk3_Dojos_ToScarblade() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade() { +} + +u32 sub_unk3_GoronCave_StairsToCave() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave() { +} + +u32 sub_unk3_GoronCave_Main() { + return 1; +} + +extern EntityData gUnk_080D8B24; +extern EntityData gUnk_080D8AC4; +extern EntityData gUnk_080D8A74; +extern EntityData gUnk_080D8A34; +extern EntityData gUnk_080D8A04; +extern EntityData gUnk_080D89E4; + +extern u32 gUnk_080D8BBC; +extern u32 gUnk_080D8BFA; +extern u32 gUnk_080D8C68; + +void sub_StateChange_GoronCave_Main(void) { + if (!CheckLocalFlag(GORON_DOUKUTU_APPEAR)) + SetLocalFlag(GORON_DOUKUTU_APPEAR); + + if (CheckKinstoneFused(0x2f)) + LoadRoomEntityList(&gUnk_080D8B24); + else if (CheckKinstoneFused(0x2b)) + LoadRoomEntityList(&gUnk_080D8AC4); + else if (CheckKinstoneFused(0x26)) + LoadRoomEntityList(&gUnk_080D8A74); + else if (CheckKinstoneFused(0x2a)) + LoadRoomEntityList(&gUnk_080D8A34); + else if (CheckKinstoneFused(0x25)) + LoadRoomEntityList(&gUnk_080D8A04); + else + LoadRoomEntityList(&gUnk_080D89E4); + + if (CheckKinstoneFused(0x25)) + sub_0807BB68(&gUnk_080D8BBC, 0x7c5, 1); + + if (CheckKinstoneFused(0x26)) + sub_0807BB68(&gUnk_080D8BFA, 0x503, 1); + + if (CheckKinstoneFused(0x2f)) + sub_0807BB68(&gUnk_080D8C68, 0x281, 1); +} + +#if 0 +typedef struct { + u32 a; + u16 x, y; + u16 entCnt; + u16 shakeTime, shakeMag, sfx; +} struct_080D8E54; + +typedef struct { + u32 field_0x0; + u32 field_0x4; +} struct_0804BF38; + +extern struct_080D8E54 gUnk_080D8E50[]; + +void sub_0804BF38(u32 arg0, struct_0804BF38* arg1) +{ + u32 numEnts; + u32 iVar2; + u32 iVar3; + Entity *fx; + u32 entCnt; + u32 xOff; + + iVar2 = arg1->field_0x4; + iVar3 = iVar2 * 0x10; + sub_0807BB68(gUnk_080D8E50[iVar2].a, ((gUnk_080D8E50[iVar3].x >> 4) & 0x3f | (gUnk_080D8E50[iVar3].y >> 4) & 0x3f) << 6, 1); + numEnts = gUnk_080D8E50[iVar3].entCnt; + entCnt = 0; + + if (numEnts != 0) { + for (xOff = 0; entCnt < numEnts; xOff += 0x10, entCnt++) { + fx = CreateObject(SPECIAL_FX, 0xf, 0); + if (fx != NULL) { + fx->x.HALF.HI = gUnk_080D8E50[iVar3].x + gRoomControls.roomOriginX + xOff; + fx->y.HALF.HI = gUnk_080D8E50[iVar3].y + gRoomControls.roomOriginY + (entCnt & 1) * 8; + } + fx = CreateObject(SPECIAL_FX, 0x54, 0); + if (fx != NULL) { + fx->x.HALF.HI = gUnk_080D8E50[iVar3].x + gRoomControls.roomOriginX + xOff; + fx->y.HALF.HI = gUnk_080D8E50[iVar3].y + gRoomControls.roomOriginY + -0xc + (entCnt & 1) * 8; + fx->direction = 0; + fx->speed = 0x100; + } + } + } + + sub_08080964(gUnk_080D8E50[iVar3].shakeTime, gUnk_080D8E50[iVar3].shakeMag); + SoundReq(gUnk_080D8E50[iVar2].sfx); +} +#else +ASM_FUNC("asm/non_matching/sub_0804BF38.inc", void sub_0804BF38(Entity* this, ScriptExecutionContext* context)) +#endif + +u32 sub_unk3_EzloCutscene_Main() { + return 1; +} + +void sub_StateChange_EzloCutscene_Main() { +} + +u32 sub_unk3_RoyalValley_Main() { + return 1; +} + +extern EntityData gUnk_080D90C8; +extern EntityData gUnk_080D9108; +extern EntityData gUnk_080D9098; + +void sub_StateChange_RoyalValley_Main(void) { + if (!CheckGlobalFlag(HAKA_KEY_LOST)) { + if (GetInventoryValue(ITEM_QST_GRAVEYARD_KEY) == 1) { + LoadRoomEntityList(&gUnk_080D90C8); + LoadRoomEntityList(&gUnk_080D9108); + } + } else if (!CheckGlobalFlag(HAKA_KEY_FOUND)) + LoadRoomEntityList(&gUnk_080D9108); + + if (GetInventoryValue(ITEM_QST_GRAVEYARD_KEY) != 2) { + LoadRoomEntityList(&gUnk_080D9098); + SetTileType(0x17a, 0x58e, 1); + SetTileType(0x17b, 0x58f, 1); + SetTileType(0x17c, 0x5ce, 1); + SetTileType(0x17d, 0x5cf, 1); + } + + sub_08054570(); + sub_08059278(); + SetTile(0x4072, 0xa47, 1); + SetTile(0x4072, 0xc47, 1); + + if (CheckGlobalFlag(MAZE_CLEAR)) + if (gScreenTransition.player_status.start_pos.WORD == 0x2780078) // todo: wtf + SoundReq(SFX_SECRET); + + ClearGlobalFlag(MAZE_CLEAR); +} + +u32 sub_unk3_RoyalValley_ForestMaze() { + return 1; +} + +void sub_StateChange_RoyalValley_ForestMaze(void) { + gArea.areaMetadata |= 0x40; + sub_0804C128(gArea.filler[7] |= 1); +} + +ASM_FUNC("asm/non_matching/sub_0804C128.inc", void sub_0804C128(u32 arg0)) + +ASM_FUNC("asm/non_matching/sub_0804C258.inc", void sub_0804C258(void)) + +ASM_FUNC("asm/non_matching/sub_0804C290.inc", void sub_0804C290(void)) + +u32 sub_unk3_RoyalValleyGraves_HeartPiece() { + return 1; +} + +void sub_StateChange_RoyalValleyGraves_HeartPiece() { +} + +u32 sub_unk3_RoyalValleyGraves_Gina() { + return 1; +} + +void sub_StateChange_RoyalValleyGraves_Gina() { +} + +u32 sub_unk3_MinishRafters_Cafe() { + return 1; +} + +void sub_StateChange_MinishRafters_Cafe() { + sub_08058324(0); +} + +u32 sub_unk3_MinishRafters_Stockwell() { + return 1; +} + +void sub_StateChange_MinishRafters_Stockwell() { + sub_08058324(1); +} + +u32 sub_unk3_MinishRafters_DrLeft() { + return 1; +} + +extern EntityData gUnk_080D9800; + +void sub_StateChange_MinishRafters_DrLeft(void) { + + sub_08058324(2); + + if (CheckGlobalFlag(MIZUKAKI_START) && !CheckGlobalFlag(MIZUKAKI_HARIFALL)) + LoadRoomEntityList(&gUnk_080D9800); +} + +void sub_unk1_MinishRafters_DrLeft() { + sub_StateChange_MinishRafters_DrLeft(); +} + +u32 sub_unk3_MinishRafters_Bakery() { + return 1; +} + +void sub_StateChange_MinishRafters_Bakery() { + sub_08058324(3); +} + +u32 sub_unk3_CastorWilds_Main() { + return 1; +} + +extern EntityData gUnk_080D9CC8; +extern EntityData gUnk_080D9CE8; +extern EntityData gUnk_080D9C38; + +void sub_StateChange_CastorWilds_Main(void) { + + SetGlobalFlag(DASHBOOTS); + + if (CheckKinstoneFused(0x5b)) + LoadRoomEntityList(&gUnk_080D9CC8); + + if ((gSave.windcrests & 0x20000000) == 0) + LoadRoomEntityList(&gUnk_080D9CE8); + + if (!GetInventoryValue(ITEM_PEGASUS_BOOTS)) + LoadRoomEntityList(&gUnk_080D9C38); +} + +void sub_unk1_CastorWilds_Main(void) { + if ((gSave.windcrests & 0x20000000) == 0) + LoadRoomEntityList(&gUnk_080D9CE8); +} + +u32 sub_unk3_CastorCaves_South() { + return 1; +} + +void sub_StateChange_CastorCaves_South() { +} + +u32 sub_unk3_CastorCaves_North() { + return 1; +} + +void sub_StateChange_CastorCaves_North() { +} + +u32 sub_unk3_CastorCaves_WindRuins() { + return 1; +} + +void sub_StateChange_CastorCaves_WindRuins() { +} + +u32 sub_unk3_CastorCaves_Darknut() { + return 1; +} + +void sub_StateChange_CastorCaves_Darknut() { +} + +u32 sub_unk3_CastorCaves_HeartPiece() { + return 1; +} + +void sub_StateChange_CastorCaves_HeartPiece() { +} + +extern u32 gUnk_080DA230; + +u32 sub_unk3_CastorDarknut_Main(void) { + if (!CheckLocalFlag(LV4_0a_TSUBO)) + gRoomVars.field_0x6c[0] = &gUnk_080DA230; + + return 1; +} + +void sub_StateChange_CastorDarknut_Main() { +} + +u32 sub_unk3_CastorDarknut_Hall() { + return 1; +} + +void sub_StateChange_CastorDarknut_Hall() { +} + +u32 sub_unk3_GreatFairies_Graveyard() { + return 1; +} + +void sub_StateChange_GreatFairies_Graveyard() { +} + +u32 sub_unk3_GreatFairies_MinishWoods() { + return 1; +} + +void sub_StateChange_GreatFairies_MinishWoods() { +} + +u32 sub_unk3_GreatFairies_MtCrenel() { + return 1; +} + +void sub_StateChange_GreatFairies_MtCrenel() { +} + +u32 sub_unk3_GardenFountains_East() { + return 1; +} + +void sub_StateChange_GardenFountains_East() { +} + +u32 sub_unk3_GardenFountains_West() { + return 1; +} + +void sub_StateChange_GardenFountains_West() { +} + +u32 sub_unk3_MinishHouseInteriors_GentariMain() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_GentariMain() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_GentariExit() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_GentariExit() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_Festari() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_Festari() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_Red() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_Red() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_Green() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_Green() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_Blue() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_Blue() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_SideArea() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_SideArea() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_ShoeMinish() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_ShoeMinish() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_PotMinish() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_PotMinish() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_BarrelMinish() { + return 1; +} + +extern EntityData gUnk_080DAB44; +extern EntityData gUnk_080DAB64; +extern EntityData gUnk_080DAB84; +extern EntityData gUnk_080DAC54; +extern EntityData gUnk_080DAD24; +extern EntityData gUnk_080DABC4; +extern EntityData gUnk_080DAC94; +extern EntityData gUnk_080DAD64; +extern EntityData gUnk_080DAC04; +extern EntityData gUnk_080DACD4; +extern EntityData gUnk_080DADA4; + +void sub_StateChange_MinishHouseInteriors_BarrelMinish(void) { + u32 uVar1; + + if (!GetInventoryValue(ITEM_JABBERNUT)) + LoadRoomEntityList(&gUnk_080DAB44); + else + LoadRoomEntityList(&gUnk_080DAB64); + + if (CheckGlobalFlag(DRUG_COUNT) && sub_08060354()) { + SetRoomFlag(0); + if (!CheckGlobalFlag(DRUG_1)) + uVar1 = 0x3200; + else if (!CheckGlobalFlag(DRUG_2)) + uVar1 = 0x4600; + else + uVar1 = 0x4880; + } else { + if (CheckGlobalFlag(DRUG_3)) + uVar1 = 0x4900; + else if (CheckGlobalFlag(DRUG_2)) + uVar1 = 0x4a00; + else if (CheckGlobalFlag(DRUG_1)) + uVar1 = 0x5200; + else + uVar1 = 0x9200; + } + if (uVar1 & 0x8000) + LoadRoomEntityList(&gUnk_080DAB84); + + if (uVar1 & 0x4000) + LoadRoomEntityList(&gUnk_080DAC54); + + if (uVar1 & 0x2000) + LoadRoomEntityList(&gUnk_080DAD24); + + if (uVar1 & 0x1000) + LoadRoomEntityList(&gUnk_080DABC4); + + if (uVar1 & 0x800) + LoadRoomEntityList(&gUnk_080DAC94); + + if (uVar1 & 0x400) + LoadRoomEntityList(&gUnk_080DAD64); + + if (uVar1 & 0x200) + LoadRoomEntityList(&gUnk_080DAC04); + + if (uVar1 & 0x100) + LoadRoomEntityList(&gUnk_080DACD4); + + if (uVar1 & 0x80) + LoadRoomEntityList(&gUnk_080DADA4); + + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_MelariMinesSouthwest() { + return 1; +} + +extern EntityData gUnk_080DAEE8; + +void sub_StateChange_MinishHouseInteriors_MelariMinesSouthwest(void) { + if (CheckGlobalFlag(WHITE_SWORD_END)) + LoadRoomEntityList(&gUnk_080DAEE8); + + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_MelariMinesSoutheast() { + return 1; +} + +extern EntityData gUnk_080DAF80; + +void sub_StateChange_MinishHouseInteriors_MelariMinesSoutheast(void) { + if (CheckGlobalFlag(WHITE_SWORD_END)) + LoadRoomEntityList(&gUnk_080DAF80); + + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_MelariMinesEast() { + return 1; +} + +extern EntityData gUnk_080DB018; + +void sub_StateChange_MinishHouseInteriors_MelariMinesEast(void) { + if (CheckGlobalFlag(WHITE_SWORD_END)) + LoadRoomEntityList(&gUnk_080DB018); + + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_HyruleFieldSouthwest() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_HyruleFieldSouthwest() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_HyruleFieldOutsideLinksHouse() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_HyruleFieldOutsideLinksHouse() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_NextToKnuckle() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_NextToKnuckle() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_Librari() { + return 1; +} + +extern EntityData gUnk_080DB238; + +void sub_StateChange_MinishHouseInteriors_Librari(void) { + if (gSave.global_progress > 8) + LoadRoomEntityList(&gUnk_080DB238); + + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_HyruleFieldExit() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_HyruleFieldExit() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_HyruleTown() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_HyruleTown() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_MinishWoodsBomb() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_MinishWoodsBomb() { + sub_0801AFE4(); +} + +u32 sub_unk3_MinishHouseInteriors_LakeHyliaOcarina() { + return 1; +} + +void sub_StateChange_MinishHouseInteriors_LakeHyliaOcarina() { + sub_0801AFE4(); +} + +u32 sub_unk3_TownMinishHoles_MayorsHouse() { + return 1; +} + +extern EntityData gUnk_080DB4D0; +extern EntityData gUnk_080DB4A0; + +void sub_StateChange_TownMinishHoles_MayorsHouse(void) { + if (!GetInventoryValue(ITEM_FLIPPERS) && !GetInventoryValue(ITEM_QST_BOOK3) && CheckLocalFlag(KOBITO_DOUKUTU_04_T0)) + LoadRoomEntityList(&gUnk_080DB4D0); + else + LoadRoomEntityList(&gUnk_080DB4A0); + + sub_0801AFE4(); +} + +u32 sub_unk3_TownMinishHoles_WestOracle() { + return 1; +} + +void sub_StateChange_TownMinishHoles_WestOracle() { + sub_0801AFE4(); +} + +u32 sub_unk3_TownMinishHoles_DrLeft() { + return 1; +} + +void sub_StateChange_TownMinishHoles_DrLeft() { + sub_0801AFE4(); +} + +u32 sub_unk3_TownMinishHoles_Carpenter() { + return 1; +} + +void sub_StateChange_TownMinishHoles_Carpenter() { + sub_0801AFE4(); +} + +u32 sub_unk3_TownMinishHoles_Cafe() { + return 1; +} + +void sub_StateChange_TownMinishHoles_Cafe() { + sub_0801AFE4(); +} + +u32 sub_unk3_TownMinishHoles_5() { + return 1; +} + +void sub_StateChange_TownMinishHoles_5() { + sub_0801AFE4(); +} + +extern u32 gUnk_080DB910; + +u32 sub_unk3_TownMinishHoles_LibraryBookshelf(void) { + if (CheckGlobalFlag(MIZUKAKI_START) && !CheckLocalFlag(KOBITO_DOUKUTU_09_T0)) { + gRoomVars.field_0x6c[1] = &gUnk_080DB910; + } + return 1; +} + +extern EntityData gUnk_080DB8F0; +extern EntityData gUnk_additional_a_TownMinishHoles_LibraryBookshelf; + +void sub_StateChange_TownMinishHoles_LibraryBookshelf(void) { + LoadRoomEntityList(&gUnk_080DB8F0); + if (!GetInventoryValue(ITEM_FLIPPERS) && CheckGlobalFlag(MIZUKAKI_START)) { + LoadRoomEntityList(&gUnk_additional_a_TownMinishHoles_LibraryBookshelf); + } + sub_0801AFE4(); +} + +u32 sub_unk3_TownMinishHoles_LibrariBookHouse() { + return 1; +} + +extern EntityData gUnk_080DBA08; + +void sub_StateChange_TownMinishHoles_LibrariBookHouse(void) { + if (GetInventoryValue(ITEM_FLIPPERS) || !CheckLocalFlag(KOBITO_DOUKUTU_09_T0)) { + LoadRoomEntityList(&gUnk_080DBA08); + } + sub_0801AFE4(); +} + +u32 sub_unk3_TownMinishHoles_RemShoeShop() { + return 1; +} + +extern EntityData gUnk_080DBB50; +extern EntityData gUnk_080DBB70; +extern EntityData gUnk_080DBB10; +extern EntityData gUnk_080DBAD0; +extern EntityData gUnk_080DBB90; + +void sub_StateChange_TownMinishHoles_RemShoeShop(void) { + u32 tilePos; + u32 i; + + if (!CheckLocalFlag(KOBITO_DOUKUTU_00_T0)) { + LoadRoomEntityList(&gUnk_080DBB50); + } + + if (GetInventoryValue(ITEM_PEGASUS_BOOTS) == 1) { + LoadRoomEntityList(&gUnk_080DBB70); + LoadRoomEntityList(&gUnk_080DBB10); + } else { + LoadRoomEntityList(&gUnk_080DBAD0); + } + if (!CheckLocalFlag(KOBITO_DOUKUTU_05_T0)) { + tilePos = 0x140; + for (i = 0; i < 0x13; i++, tilePos++) { + SetTileType(0x4072, tilePos, 1); + } + } + LoadRoomEntityList(&gUnk_080DBB90); + sub_0801AFE4(); +} + +u32 sub_unk3_MinishCaves_BeanPesto() { + return 1; +} + +void sub_StateChange_MinishCaves_BeanPesto() { +} + +u32 sub_unk3_MinishCaves_SoutheastWater1() { + return 1; +} + +void sub_StateChange_MinishCaves_SoutheastWater1() { +} + +u32 sub_unk3_MinishCaves_SoutheastWater2() { + return 1; +} + +void sub_StateChange_MinishCaves_SoutheastWater2() { +} + +u32 sub_unk3_MinishCaves_Ruins() { + return 1; +} + +void sub_StateChange_MinishCaves_Ruins() { +} + +u32 sub_unk3_MinishCaves_OutsideLinksHouse() { + return 1; +} + +void sub_StateChange_MinishCaves_OutsideLinksHouse() { +} + +u32 sub_unk3_MinishCaves_MinishWoodsNorth1() { + return 1; +} + +void sub_StateChange_MinishCaves_MinishWoodsNorth1() { +} + +u32 sub_unk3_MinishCaves_MinishWoodsNorth2() { + return 1; +} + +void sub_StateChange_MinishCaves_MinishWoodsNorth2() { +} + +u32 sub_unk3_MinishCaves_LakeHyliaNorth() { + return 1; +} + +void sub_StateChange_MinishCaves_LakeHyliaNorth() { +} + +u32 sub_unk3_MinishCaves_LakeHyliaLibrari() { + return 1; +} + +void sub_StateChange_MinishCaves_LakeHyliaLibrari() { +} + +u32 sub_unk3_MinishCaves_MinishWoodsSouthwest() { + return 1; +} + +void sub_StateChange_MinishCaves_MinishWoodsSouthwest() { +} + +u32 sub_unk3_MinishVillage_Main() { + return 1; +} + +extern EntityData gUnk_080DC390; +extern EntityData gUnk_080DC3F0; +extern EntityData gUnk_080DC430; +extern EntityData gUnk_080DC530; +extern EntityData gUnk_080DC470; +extern EntityData gUnk_080DC4C0; + +void sub_StateChange_MinishVillage_Main(void) { + if (!GetInventoryValue(ITEM_JABBERNUT)) { + LoadRoomEntityList(&gUnk_080DC390); + if (!CheckLocalFlagByBank(0x200, 0x80)) { + LoadRoomEntityList(&gUnk_080DC3F0); + } + } else { + LoadRoomEntityList(&gUnk_080DC430); + if (!GetInventoryValue(ITEM_GUST_JAR)) { + LoadRoomEntityList(&gUnk_080DC530); + } + } + if ((!CheckLocalFlagByBank(FLAG_BANK_2, M_ELDER_TALK2ND)) && GetInventoryValue(ITEM_GUST_JAR)) { + LoadRoomEntityList(&gUnk_080DC470); + } + if (!CheckLocalFlag(0x8d)) { + LoadRoomEntityList(&gUnk_080DC4C0); + } + sub_08057E64(); +} + +u32 sub_unk3_MinishVillage_SideHouse() { + return 1; +} + +void sub_StateChange_MinishVillage_SideHouse() { +} + +typedef struct { + u8 LO[0x4000]; + u8 HI[0x4000]; +} struct_086D4460; + +extern struct_086D4460 gUnk_086D4460; + +void sub_unk2_MinishVillage_SideHouse(void) { + LoadResourceAsync(&gUnk_086D4460.LO, 0x6000000, 0x4000); + LoadResourceAsync(&gUnk_086D4460.HI, 0x6008000, 0x4000); + LoadPaletteGroup(0x19); +} + +u32 sub_unk3_CastleGardenMinishHoles_East() { + return 1; +} + +void sub_StateChange_CastleGardenMinishHoles_East() { +} + +u32 sub_unk3_CastleGardenMinishHoles_West() { + return 1; +} + +void sub_StateChange_CastleGardenMinishHoles_West() { +} + +u32 sub_unk3_37_0() { + return 1; +} + +void sub_StateChange_37_0() { +} + +u32 sub_unk3_37_1() { + return 1; +} + +void sub_StateChange_37_1() { +} + +u32 sub_unk3_MinishCracks_LonLonRanchNorth() { + return 1; +} + +void sub_StateChange_MinishCracks_LonLonRanchNorth() { +} + +u32 sub_unk3_MinishCracks_LakeHyliaEast() { + return 1; +} + +void sub_StateChange_MinishCracks_LakeHyliaEast() { +} + +u32 sub_unk3_MinishCracks_HyruleCastleGarden() { + return 1; +} + +void sub_StateChange_MinishCracks_HyruleCastleGarden() { +} + +u32 sub_unk3_MinishCracks_MtCrenel() { + return 1; +} + +void sub_StateChange_MinishCracks_MtCrenel() { +} + +u32 sub_unk3_MinishCracks_EastHyruleCastle() { + return 1; +} + +void sub_StateChange_MinishCracks_EastHyruleCastle() { +} + +u32 sub_unk3_MinishCracks_5() { + return 1; +} + +void sub_StateChange_MinishCracks_5() { +} + +u32 sub_unk3_MinishCracks_CastleWildsBowHole() { + return 1; +} + +extern EntityData gUnk_080DCB10; + +void sub_StateChange_MinishCracks_CastleWildsBowHole(void) { + if (!GetInventoryValue(ITEM_BOW)) { + LoadRoomEntityList(&gUnk_080DCB10); + } +} + +u32 sub_unk3_MinishCracks_RuinsEntrance() { + return 1; +} + +void sub_StateChange_MinishCracks_RuinsEntrance() { +} + +u32 sub_unk3_MinishCracks_MinishWoodsSouth() { + return 1; +} + +void sub_StateChange_MinishCracks_MinishWoodsSouth() { +} + +u32 sub_unk3_MinishCracks_CastorWildsNorth() { + return 1; +} + +void sub_StateChange_MinishCracks_CastorWildsNorth() { +} + +u32 sub_unk3_MinishCracks_CastorWildsWest() { + return 1; +} + +void sub_StateChange_MinishCracks_CastorWildsWest() { +} + +u32 sub_unk3_MinishCracks_CastorWildsMiddle() { + return 1; +} + +void sub_StateChange_MinishCracks_CastorWildsMiddle() { +} + +u32 sub_unk3_MinishCracks_RuinsTektite() { + return 1; +} + +void sub_StateChange_MinishCracks_RuinsTektite() { +} + +u32 sub_unk3_MinishCracks_CastorWildsNextToBow() { + return 1; +} + +void sub_StateChange_MinishCracks_CastorWildsNextToBow() { +} + +u32 sub_unk3_MinishCracks_E() { + return 1; +} + +void sub_StateChange_MinishCracks_E() { +} + +u32 sub_unk3_MinishCracks_F() { + return 1; +} + +void sub_StateChange_MinishCracks_F() { +} + +u32 sub_unk3_MinishCracks_10() { + return 1; +} + +void sub_StateChange_MinishCracks_10() { +} + +u32 sub_unk3_MinishCracks_11() { + return 1; +} + +void sub_StateChange_MinishCracks_11() { +} + +u32 sub_unk3_MelarisMine_Main() { + return 1; +} + +extern EntityData gUnk_additional_8_MelarisMine_Main; +extern EntityData gUnk_additional_9_MelarisMine_Main; +extern EntityData gUnk_080DD294; + +void sub_StateChange_MelarisMine_Main(void) { + if (!CheckGlobalFlag(WHITE_SWORD_END)) { + LoadRoomEntityList(&gUnk_additional_8_MelarisMine_Main); + } + if (!CheckLocalFlag(0x7f)) { + LoadRoomEntityList(&gUnk_additional_9_MelarisMine_Main); + } else { + LoadRoomEntityList(&gUnk_080DD294); + } + SetLocalFlag(0x8e); +} + +u32 sub_unk3_CloudTops_House() { + return 1; +} + +extern EntityData gUnk_080DD364; + +void sub_StateChange_CloudTops_House(void) { + if (!(gSave.windcrests & 0x4000000)) { + LoadRoomEntityList(&gUnk_080DD364); + } +} + +void sub_unk1_CloudTops_House(void) { + if (!(gSave.windcrests & 0x4000000)) { + LoadRoomEntityList(&gUnk_080DD364); + } +} + +u32 sub_unk3_CloudTops_Middle() { + return 1; +} + +void sub_StateChange_CloudTops_Middle() { +} + +u32 sub_unk3_CloudTops_Bottom() { + return 1; +} + +extern EntityData gUnk_080DD7E0; +extern EntityData gUnk_080DD840; + +void sub_StateChange_CloudTops_Bottom(void) { + + if (CheckGlobalFlag(KUMOTATSUMAKI)) { + sub_0809F814(0x6de); + } +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (CheckLocalFlag(0xf0)) { +#else + if (CheckLocalFlag(0xf3)) { +#endif + sub_0809F814(0xe0); + } else { + LoadRoomEntityList(&gUnk_080DD7E0); + } +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (CheckLocalFlag(0xf2)) { +#else + if (CheckLocalFlag(0xf5)) { +#endif + sub_0809F814(0xba3); + } else { + LoadRoomEntityList(&gUnk_080DD840); + } +} + +u32 sub_unk3_Ruins_Entrance() { + return 1; +} + +void sub_StateChange_Ruins_Entrance() { + sub_080300E8(); +#if defined(JP) || defined(EU) || defined(DEMO_JP) + SetLocalFlag(0x25); +#else + SetLocalFlag(0x24); +#endif +} + +u32 sub_unk3_Ruins_Beanstalk() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk() { +} + +u32 sub_unk3_Ruins_TripleTektites() { + return 1; +} + +extern EntityData gUnk_080DDE88; + +void sub_StateChange_Ruins_TripleTektites(void) { + + if (CheckKinstoneFused(0x41)) { + LoadRoomEntityList(&gUnk_080DDE88); + } +} + +void sub_unk1_Ruins_TripleTektites(void) { + if (CheckLocalFlagByBank(FLAG_BANK_1, LOST_02_00)) { + SetDirtTile(0x85); + } +} + +u32 sub_unk3_Ruins_LadderToTektites() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites() { +} + +u32 sub_unk3_Ruins_FortressEntrance() { + return 1; +} + +extern EntityData gUnk_080DE008; + +void sub_StateChange_Ruins_FortressEntrance(void) { + sub_080300E8(); + if (CheckGlobalFlag(LV3_CLEAR) && !CheckLocalFlag(3)) { + LoadRoomEntityList(&gUnk_080DE008); + } +} + +u32 sub_unk3_Ruins_Armos() { + return 1; +} + +extern EntityData gUnk_080DE1E0; +extern EntityData gUnk_080DE200; + +void sub_StateChange_Ruins_Armos(void) { + sub_080300E8(); +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0x31)) { +#else + if (!CheckLocalFlag(0x30)) { +#endif + LoadRoomEntityList(&gUnk_080DE1E0); + } +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0x32)) { +#else + if (!CheckLocalFlag(0x31)) { +#endif + LoadRoomEntityList(&gUnk_080DE200); + } +} + +u32 sub_unk3_DeepwoodShrine_Madderpillar() { + return 1; +} + +extern EntityData gUnk_080DE4C8; + +void sub_StateChange_DeepwoodShrine_Madderpillar(void) { + if ((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) < (gRoomControls.height >> 1)) { + if (!CheckLocalFlag(0x17)) { + LoadRoomEntityList(&gUnk_080DE4C8); + } + } +} + +u32 sub_unk3_DeepwoodShrine_BluePortal() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_BluePortal() { +} + +u32 sub_unk3_DeepwoodShrine_StairsToB1() { + return 1; +} + +extern EntityData gUnk_080DE814; +extern EntityData gUnk_additional_8_DeepwoodShrine_StairsToB1; + +void sub_StateChange_DeepwoodShrine_StairsToB1(void) { + if (!CheckLocalFlag(0x4b)) { + LoadRoomEntityList(&gUnk_080DE814); + } else { + if (!CheckLocalFlag(0x4c)) { + LoadRoomEntityList(&gUnk_additional_8_DeepwoodShrine_StairsToB1); + SetTileType(0x79, 0x285, 1); + } else { + SetTileType(0x7a, 0x285, 1); + if (!CheckLocalFlag(0x24)) { + SetTileType(0x73, 0x205, 1); + } + } + } +} + +u32 sub_unk3_DeepwoodShrine_PotBridge() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_PotBridge() { +} + +u32 sub_unk3_DeepwoodShrine_DoubleStatue() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_DoubleStatue() { +} + +u32 sub_unk3_DeepwoodShrine_Map() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_Map() { +} + +u32 sub_unk3_DeepwoodShrine_Barrel() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_Barrel(void) { + if (gSave.unk7 == 0) { + goto a; + } + if (gSave.unk7 != 2) { + a: + SetTileType(0x90, 0x20b, 1); + SetTileType(0x90, 0x411, 1); + } else { + SetTileType(0x90, 0x211, 1); + SetTileType(0x90, 0x40b, 1); + } + if (CheckLocalFlag(0x15)) { + SetTileType(0x76, 0x304, 2); + } + if (CheckLocalFlag(0x16)) { + SetTileType(0x76, 0x318, 2); + } +} + +u32 sub_unk3_DeepwoodShrine_Button() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_Button() { +} + +u32 sub_unk3_DeepwoodShrine_Mulldozer() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_Mulldozer() { +} + +u32 sub_unk3_DeepwoodShrine_Pillars() { + return 1; +} +void sub_StateChange_DeepwoodShrine_Pillars() { +} + +u32 sub_unk3_DeepwoodShrine_Lever() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_Lever() { +} + +u32 sub_unk3_DeepwoodShrine_Entrance() { + return 1; +} + +#if defined(DEMO_USA) || defined(DEMO_JP) +void sub_StateChange_DeepwoodShrine_Entrance() { +#ifdef DEMO_USA + if (gSaveHeader->saveFileId != 0 && GetInventoryValue(ITEM_EARTH_ELEMENT) == 0) { +#else +#ifdef DEMO_JP + if (GetInventoryValue(ITEM_EARTH_ELEMENT) == 0) { +#endif +#endif + SetTileType(0x365, 0x349, 1); + SetTileType(0x365, 0x34a, 1); + SetTileType(0x365, 0x34b, 1); + } +} +#else +void sub_StateChange_DeepwoodShrine_Entrance() { +} +#endif + +u32 sub_unk3_DeepwoodShrine_Torch() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_Torch() { +} + +u32 sub_unk3_DeepwoodShrine_BossKey() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_BossKey() { +} + +u32 sub_unk3_DeepwoodShrine_Compass() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_Compass() { +} + +u32 sub_unk3_DeepwoodShrine_13() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_13() { +} + +u32 sub_unk3_DeepwoodShrine_LilyPadWest() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_LilyPadWest() { +} + +u32 sub_unk3_DeepwoodShrine_LilyPadEast() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_LilyPadEast() { +} + +u32 sub_unk3_DeepwoodShrineBoss_Main() { + return 1; +} + +extern EntityData gUnk_additional_a_DeepwoodShrineBoss_Main; + +extern u8 gUpdateVisibleTiles; +extern u32 gUsedPalettes; + +void sub_StateChange_DeepwoodShrineBoss_Main(void) { + + if (!CheckLocalFlag(0x48)) { + SetLocalFlag(0x48); + MenuFadeIn(5, 0); + gUpdateVisibleTiles = 0; + gFadeControl.active = 0; + gUsedPalettes = 0; + *(u16*)0x5000000 = 0x7fff; + DispReset(1); + } + if (CheckGlobalFlag(LV1_CLEAR)) { + LoadRoomEntityList(&gUnk_additional_a_DeepwoodShrineBoss_Main); + } else { + SoundReq(SONG_STOP_BGM); + gArea.musicIndex = gArea.pMusicIndex; + } +} + +u32 sub_unk3_DeepwoodShrine_PreBoss() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_PreBoss() { +} + +u32 sub_unk3_DeepwoodShrine_InsideBarrel() { + return 1; +} + +void sub_StateChange_DeepwoodShrine_InsideBarrel(void) { + sub_08058D34(); + gArea.areaMetadata |= 0x40; + gMain.transition = 5; +} + +u32 sub_unk3_DeepwoodShrineEntry_Main() { + return 1; +} + +extern EntityData gUnk_080DFB78; + +void sub_StateChange_DeepwoodShrineEntry_Main(void) { + if (CheckGlobalFlag(LV1_CLEAR) && !CheckLocalFlagByBank(FLAG_BANK_1, LV1_CLEAR_MES)) { + LoadRoomEntityList(&gUnk_080DFB78); + } +} + +u32 sub_unk3_CaveOfFlames_AfterCane() { + return 1; +} + +void sub_StateChange_CaveOfFlames_AfterCane() { +} + +u32 sub_unk3_CaveOfFlames_SpinyChus() { + return 1; +} + +void sub_StateChange_CaveOfFlames_SpinyChus() { +} + +u32 sub_unk3_CaveOfFlames_CartToSpinyChus() { + return 1; +} + +void sub_StateChange_CaveOfFlames_CartToSpinyChus() { +} + +u32 sub_unk3_CaveOfFlames_Entrance() { + return 1; +} + +#ifdef DEMO_USA +void sub_StateChange_CaveOfFlames_Entrance() { + if (GetInventoryValue(ITEM_FIRE_ELEMENT) == 0) { + SetTileType(0x365, 0x287, 2); + SetTileType(0x365, 0x288, 2); + SetTileType(0x365, 0x289, 2); + } +} +#else +void sub_StateChange_CaveOfFlames_Entrance() { +} +#endif + +u32 sub_unk3_CaveOfFlames_MainCart() { + return 1; +} + +void sub_StateChange_CaveOfFlames_MainCart() { +} + +u32 sub_unk3_CaveOfFlames_NorthEntrance() { + return 1; +} + +void sub_StateChange_CaveOfFlames_NorthEntrance() { +} + +u32 sub_unk3_CaveOfFlames_CartWest() { + return 1; +} + +void sub_StateChange_CaveOfFlames_CartWest() { +} + +u32 sub_unk3_CaveOfFlames_Helmasaur() { + return 1; +} + +void sub_StateChange_CaveOfFlames_Helmasaur() { +} + +u32 sub_unk3_CaveOfFlames_Rollobite() { + return 1; +} + +void sub_StateChange_CaveOfFlames_Rollobite() { +} + +u32 sub_unk3_CaveOfFlames_MinishLava() { + return 1; +} + +void sub_StateChange_CaveOfFlames_MinishLava() { +} + +u32 sub_unk3_CaveOfFlames_MinishSpikes() { + return 1; +} + +void sub_StateChange_CaveOfFlames_MinishSpikes() { +} + +u32 sub_unk3_CaveOfFlames_RollobiteSwitch() { + return 1; +} + +void sub_StateChange_CaveOfFlames_RollobiteSwitch() { +} + +extern u32 gUnk_080E103C; + +u32 sub_unk3_CaveOfFlames_BeforeGleerok(void) { + if (CheckGlobalFlag(LV2_CLEAR)) { + gRoomVars.field_0x6c[1] = &gUnk_080E103C; + } + return 1; +} + +void sub_StateChange_CaveOfFlames_BeforeGleerok() { +} + +u32 sub_unk3_CaveOfFlames_PathBossKey() { + return 1; +} + +void sub_StateChange_CaveOfFlames_PathBossKey() { +} + +u32 sub_unk3_CaveOfFlames_PathBossKey2() { + return 1; +} + +void sub_StateChange_CaveOfFlames_PathBossKey2() { +} + +u32 sub_unk3_CaveOfFlames_Compass() { + return 1; +} + +void sub_StateChange_CaveOfFlames_Compass() { +} + +u32 sub_unk3_CaveOfFlames_Bobomb() { + return 1; +} + +void sub_StateChange_CaveOfFlames_Bobomb() { +} + +u32 sub_unk3_CaveOfFlames_BossDoor() { + return 1; +} + +void sub_StateChange_CaveOfFlames_BossDoor() { +} + +u32 sub_unk3_CaveOfFlames_18() { + return 1; +} + +void sub_StateChange_CaveOfFlames_18() { +} + +u32 sub_unk3_CaveOfFlamesBoss_Main() { + return 1; +} + +extern EntityData gUnk_additional_a_CaveOfFlamesBoss_Main; + +extern u32 gUnk_0200B650; + +void sub_StateChange_CaveOfFlamesBoss_Main(void) { + + if (CheckGlobalFlag(LV2_CLEAR)) { + gUnk_0200B650 = 0; + gScreen.lcd.displayControl &= ~DISPCNT_BG1_ON; + sub_0807AABC(&gPlayerEntity); + LoadRoomEntityList(&gUnk_additional_a_CaveOfFlamesBoss_Main); + } else { + SoundReq(SONG_STOP_BGM); + gArea.musicIndex = gArea.pMusicIndex; + } +} + +u32 sub_unk3_FortressOfWinds_Eyegore() { + return 1; +} + +void sub_StateChange_FortressOfWinds_Eyegore() { +} + +u32 sub_unk3_FortressOfWinds_BeforeMazaal() { + return 1; +} + +void sub_StateChange_FortressOfWinds_BeforeMazaal(void) { + gScreenTransition.field_0x38 = 0; + gScreenTransition.field_0x39 = 0x5a; +} + +u32 sub_unk3_FortressOfWinds_EastKeyLever() { + return 1; +} + +void sub_StateChange_FortressOfWinds_EastKeyLever() { + sub_080300E8(); +} + +u32 sub_unk3_FortressOfWinds_PitPlatforms() { + return 1; +} + +void sub_StateChange_FortressOfWinds_PitPlatforms() { +} + +u32 sub_unk3_FortressOfWinds_WestKeyLever() { + return 1; +} + +void sub_StateChange_FortressOfWinds_WestKeyLever() { + sub_080300E8(); +} + +u32 sub_unk3_FortressOfWinds_Darknut() { + return 1; +} + +void sub_StateChange_FortressOfWinds_Darknut() { +} + +u32 sub_unk3_FortressOfWinds_EyeBridge() { + return 1; +} + +void sub_StateChange_FortressOfWinds_EyeBridge() { +} + +u32 sub_unk3_FortressOfWinds_Pit() { + return 1; +} + +void sub_StateChange_FortressOfWinds_Pit() { +} + +u32 sub_unk3_FortressOfWinds_Wallmaster() { + return 1; +} + +void sub_StateChange_FortressOfWinds_Wallmaster() { +} + +u32 sub_unk3_FortressOfWinds_Clone() { + return 1; +} + +void sub_StateChange_FortressOfWinds_Clone() { +} + +u32 sub_unk3_FortressOfWinds_SpikeTraps() { + return 1; +} + +void sub_StateChange_FortressOfWinds_SpikeTraps() { +} + +u32 sub_unk3_FortressOfWinds_Mazaal() { + return 1; +} + +void sub_StateChange_FortressOfWinds_Mazaal(void) { + + if (!CheckFlags(0x31)) { + if (gScreenTransition.field_0x38 == 0) { + SoundReq(SONG_STOP_BGM); + } else { + if (gScreenTransition.field_0x39 == 0) { + SoundReq(SONG_STOP); + SetPlayerControl(3); + } + } + gArea.musicIndex = gArea.pMusicIndex; + } +} + +u32 sub_unk3_FortressOfWinds_Stalfos() { + return 1; +} + +void sub_StateChange_FortressOfWinds_Stalfos() { +} + +u32 sub_unk3_FortressOfWinds_EntranceMoleMitts() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade0() { +} + +u32 sub_unk3_FortressOfWinds_Main2F() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade1() { +} + +u32 sub_unk3_FortressOfWinds_MinishHole() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade2() { +} + +u32 sub_unk3_FortressOfWinds_BossKey() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade3() { +} + +u32 sub_unk3_FortressOfWinds_WestStairs2F() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade4() { +} + +u32 sub_unk3_FortressOfWinds_EastStairs2F() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade5() { +} + +u32 sub_unk3_FortressOfWinds_WestStairs1F() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade6() { +} + +u32 sub_unk3_FortressOfWinds_CenterStairs1F() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade7() { +} + +u32 sub_unk3_FortressOfWinds_EastStairs1F() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade8() { +} + +u32 sub_unk3_FortressOfWinds_Wizzrobe() { + return 1; +} + +void sub_StateChange_Dojos_Waveblade9() { +} + +u32 sub_unk3_FortressOfWinds_HeartPiece() { + return 1; +} + +void sub_StateChange_Dojos_70() { +} + +u32 sub_unk3_InnerMazaal_Main() { + return 1; +} + +void sub_StateChange_Dojos_71() { +} + +u32 sub_unk3_FortressOfWindsTop_Main() { + return 1; +} + +extern EntityData gUnk_080E3850; + +void sub_StateChange_FortressOfWindsTop_Main(void) { + SetGlobalFlag(LV3_CLEAR); + UpdateGlobalProgress(); + sub_0805B4D0(3); + if (!GetInventoryValue(ITEM_OCARINA) && CheckLocalFlag(0x45)) { + LoadRoomEntityList(&gUnk_080E3850); + } +} + +u32 sub_unk3_TempleOfDroplets_WestHole() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_WestHole() { + sub_0804D0B4(); +} + +void sub_0804D0B4(void) { + if (!CheckLocalFlag(0x29)) { + SetLocalFlag(0x29); + SetLocalFlag(0x4b); + SetLocalFlag(0x4e); + } +} + +u32 sub_unk3_TempleOfDroplets_NorthSplit() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_NorthSplit() { +} + +u32 sub_unk3_TempleOfDroplets_EastHole() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_EastHole() { +} + +u32 sub_unk3_TempleOfDroplets_Entrance() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_Entrance() { +} + +u32 sub_unk3_TempleOfDroplets_NorthwestStairs() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_NorthwestStairs() { +} + +u32 sub_unk3_TempleOfDroplets_ScissorsMiniboss() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_ScissorsMiniboss() { +} + +u32 sub_unk3_TempleOfDroplets_WaterfallNorthwest() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_WaterfallNorthwest() { +} + +u32 sub_unk3_TempleOfDroplets_WaterfallNortheast() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_WaterfallNortheast() { +} + +u32 sub_unk3_TempleOfDroplets_Element() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_Element() { +} + +u32 sub_unk3_TempleOfDroplets_IceCorner() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_IceCorner() { +} + +u32 sub_unk3_TempleOfDroplets_IcePitMaze() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_IcePitMaze() { +} + +u32 sub_unk3_TempleOfDroplets_HoleToBlueChuchu() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_HoleToBlueChuchu() { +} + +u32 sub_unk3_TempleOfDroplets_WaterfallSoutheast() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_WaterfallSoutheast() { +} + +u32 sub_unk3_TempleOfDroplets_WaterfallSouthwest() { + return 1; +} + +void sub_StateChange_TempleOfDroplets_WaterfallSouthwest() { +} + +u32 sub_unk3_TempleOfDroplets_BigOcto() { + return 1; +} + +extern EntityData gUnk_additional_a_TempleOfDroplets_BigOcto; + +void sub_StateChange_TempleOfDroplets_BigOcto(void) { + ChangeLightLevel(0x100); + if (CheckGlobalFlag(LV4_CLEAR)) { + LoadRoomEntityList(&gUnk_additional_a_TempleOfDroplets_BigOcto); + } else { + SoundReq(SONG_STOP_BGM); + gArea.musicIndex = gArea.pMusicIndex; + } +} + +u32 sub_unk3_TempleOfDroplets_ToBigBlueChuchu() { + return 1; +} + +void sub_StateChange_Dojos_72() { +} + +u32 sub_unk3_TempleOfDroplets_BigBlueChuchu() { + return 1; +} + +extern EntityData gUnk_080E4BD8; + +void sub_StateChange_TempleOfDroplets_BigBlueChuchu(void) { + if (!CheckLocalFlag(0x48)) { + ClearLocalFlag(0x46); + LoadRoomEntityList(&gUnk_080E4BD8); + } +} + +u32 sub_unk3_TempleOfDroplets_BigBlueChuchuKey() { + return 1; +} + +extern EntityData gUnk_080E4CF8; +extern EntityData gUnk_080E4CD8; + +void sub_StateChange_TempleOfDroplets_BigBlueChuchuKey(void) { + sub_0804D0B4(); + if (CheckLocalFlag(0x6c)) { + LoadRoomEntityList(&gUnk_080E4CD8); + } else { + LoadRoomEntityList(&gUnk_080E4CF8); + } + if (!CheckLocalFlag(0x4b)) { + ClearLocalFlag(0x49); + } +} + +u32 sub_unk3_TempleOfDroplets_BossKey() { + return 1; +} + +void sub_StateChange_Dojos_73() { +} + +u32 sub_unk3_TempleOfDroplets_NorthSmallKey() { + return 1; +} + +void sub_StateChange_Dojos_74() { +} + +u32 sub_unk3_TempleOfDroplets_BlockCloneButtonPuzzle() { + return 1; +} + +void sub_StateChange_Dojos_75() { +} + +u32 sub_unk3_TempleOfDroplets_BlockClonePuzzle() { + return 1; +} + +void sub_StateChange_Dojos_76() { +} + +u32 sub_unk3_TempleOfDroplets_BlockCloneIceBridge() { + return 1; +} + +void sub_StateChange_Dojos_77() { +} + +u32 sub_unk3_TempleOfDroplets_StairsToScissorsMiniboss() { + return 1; +} + +void sub_StateChange_Dojos_78() { +} + +u32 sub_unk3_TempleOfDroplets_SpikeBar() { + return 1; +} + +void sub_StateChange_Dojos_79() { +} + +u32 sub_unk3_TempleOfDroplets_Lanterns() { + return 1; +} + +void sub_StateChange_Dojos_80() { +} + +u32 sub_unk3_TempleOfDroplets_LilypadIceBlocks() { + return 1; +} + +extern EntityData gUnk_080E5660; +extern EntityData gUnk_080E5680; + +void sub_StateChange_TempleOfDroplets_LilypadIceBlocks(void) { + if (!CheckLocalFlag(0x59)) { + LoadRoomEntityList(&gUnk_080E5660); + } else { + LoadRoomEntityList(&gUnk_080E5680); + } +} + +u32 sub_unk3_TempleOfDroplets_Pit() { + return 1; +} + +void sub_StateChange_Dojos_81() { +} + +u32 sub_unk3_TempleOfDroplets_FireBars() { + return 1; +} + +void sub_StateChange_Dojos_82() { +} + +u32 sub_unk3_TempleOfDroplets_LanternMaze() { + return 1; +} + +void sub_StateChange_Dojos_83() { +} + +u32 sub_unk3_TempleOfDroplets_Madderpillars() { + return 1; +} + +void sub_StateChange_Dojos_84() { +} + +u32 sub_unk3_TempleOfDroplets_AfterMadderpillars() { + return 1; +} + +void sub_StateChange_Dojos_85() { +} + +u32 sub_unk3_TempleOfDroplets_BlueChuchuKeyLever() { + return 1; +} + +extern EntityData gUnk_080E5E3C; +extern EntityData gUnk_080E5E5C; + +void sub_StateChange_TempleOfDroplets_BlueChuchuKeyLever(void) { + sub_0804D0B4(); + if (!CheckLocalFlag(0x4b)) { + LoadRoomEntityList(&gUnk_080E5E3C); + } else { + LoadRoomEntityList(&gUnk_080E5E5C); + } +} + +u32 sub_unk3_TempleOfDroplets_MulldozerKey() { + return 1; +} + +void sub_StateChange_Dojos_86() { +} + +u32 sub_unk3_TempleOfDroplets_BombWall() { + return 1; +} + +void sub_StateChange_Dojos_87() { +} + +u32 sub_unk3_TempleOfDroplets_LilypadWestB2() { + return 1; +} + +void sub_StateChange_Dojos_88() { +} + +u32 sub_unk3_TempleOfDroplets_CompassRoom() { + return 1; +} + +void sub_StateChange_Dojos_89() { +} + +u32 sub_unk3_TempleOfDroplets_LanternScissors() { + return 1; +} + +void sub_StateChange_Dojos_90() { +} + +u32 sub_unk3_TempleOfDroplets_LilypadMiddleB2() { + return 1; +} + +void sub_StateChange_Dojos_91() { +} + +u32 sub_unk3_TempleOfDroplets_LilypadEastB2() { + return 1; +} + +void sub_StateChange_Dojos_92() { +} + +u32 sub_unk3_TempleOfDroplets_FlameBarBlockPuzzle() { + return 1; +} + +void sub_StateChange_Dojos_93() { +} + +u32 sub_unk3_RoyalCrypt_KingGustaf() { + return 1; +} + +extern EntityData gUnk_080E693C; + +void sub_StateChange_RoyalCrypt_KingGustaf(void) { + if (!CheckLocalFlag(0x32)) { + LoadRoomEntityList(&gUnk_080E693C); + } +} + +u32 sub_unk3_RoyalCrypt_WaterRope() { + return 1; +} + +void sub_StateChange_Dojos_94() { +} + +u32 sub_unk3_RoyalCrypt_Gibdo() { + return 1; +} + +void sub_StateChange_Dojos_95() { +} + +u32 sub_unk3_RoyalCrypt_3() { + return 1; +} + +void sub_StateChange_Dojos_96() { +} + +u32 sub_unk3_RoyalCrypt_KeyBlock() { + return 1; +} + +void sub_StateChange_Dojos_97() { +} + +u32 sub_unk3_RoyalCrypt_5() { + return 1; +} + +void sub_StateChange_Dojos_98() { +} + +u32 sub_unk3_RoyalCrypt_6() { + return 1; +} + +void sub_StateChange_Dojos_99() { +} + +u32 sub_unk3_RoyalCrypt_MushroomPit() { + return 1; +} + +void sub_StateChange_RoyalCrypt_MushroomPit() { + sub_08054570(); +} + +u32 sub_unk3_RoyalCrypt_Entrance() { + return 1; +} + +extern EntityData gUnk_080E718C; +extern EntityData gUnk_080E71AC; + +void sub_StateChange_RoyalCrypt_Entrance(void) { + SetTileType(0x312, 0x108, 1); + sub_08054570(); + if (!CheckLocalFlag(0xc4)) { + LoadRoomEntityList(&gUnk_080E718C); + } + if (!CheckLocalFlag(0xc5)) { + LoadRoomEntityList(&gUnk_080E71AC); + } +} + +u32 sub_unk3_PalaceOfWinds_0() { + return 1; +} + +extern EntityData gUnk_additional_9_PalaceOfWinds_0; +extern EntityData gUnk_080E72C4; +extern EntityData gUnk_additional_8_PalaceOfWinds_0; + +void sub_StateChange_PalaceOfWinds_0(void) { + Manager19_Main(NULL); + if (CheckGlobalFlag(LV5_CLEAR)) { + LoadRoomEntityList(&gUnk_additional_9_PalaceOfWinds_0); + } + if (!CheckLocalFlag(0x7b)) { + LoadRoomEntityList(&gUnk_080E72C4); + } else { + SetGlobalFlag(LV5_CLEAR); + if (!GetInventoryValue(ITEM_WIND_ELEMENT)) { + SetPlayerControl(3); + LoadRoomEntityList(&gUnk_additional_8_PalaceOfWinds_0); + gArea.musicIndex = gArea.pMusicIndex; + SoundReq(SONG_STOP_BGM); + } + } +} + +u32 sub_unk3_PalaceOfWinds_1() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_1() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_2() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_2() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_3() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_3() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_4() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_4() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_5() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_5() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_6() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_6() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_7() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_7() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_8() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_8() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_9() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_9() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_10() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_10() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_11() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_11() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_12() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_12() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_13() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_13() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_14() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_14() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_15() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_15() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_16() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_16() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_17() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_17() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_18() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_18() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_19() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_19() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_20() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_20() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_21() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_21() { +} + +u32 sub_unk3_PalaceOfWinds_22() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_22() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_23() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_23() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_24() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_24() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_25() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_25() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_26() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_26() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_27() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_27() { +} + +u32 sub_unk3_PalaceOfWinds_28() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_28() { +} + +u32 sub_unk3_PalaceOfWinds_29() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_29() { +} + +u32 sub_unk3_PalaceOfWinds_30() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_30() { +} + +u32 sub_unk3_PalaceOfWinds_31() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_31() { +} + +u32 sub_unk3_PalaceOfWinds_32() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_32() { +} + +u32 sub_unk3_PalaceOfWinds_33() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_33() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_34() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_34() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_35() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_35() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_36() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_36() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_37() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_37() { +} + +u32 sub_unk3_PalaceOfWinds_38() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_38() { +} + +u32 sub_unk3_PalaceOfWinds_39() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_39() { +} + +u32 sub_unk3_PalaceOfWinds_40() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_40() { +} + +u32 sub_unk3_PalaceOfWinds_41() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_41() { +} + +u32 sub_unk3_PalaceOfWinds_42() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_42() { +} + +u32 sub_unk3_PalaceOfWinds_43() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_43() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_44() { + return 1; +} + +extern EntityData gUnk_080EA09C; + +void sub_StateChange_PalaceOfWinds_44(void) { + Manager19_Main(NULL); + if (!CheckLocalFlag(0x70)) { + LoadRoomEntityList(&gUnk_080EA09C); + } +} + +u32 sub_unk3_PalaceOfWinds_45() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_45() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_46() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_46() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_47() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_47() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_48() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_48() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_49() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_49() { + Manager19_Main(NULL); +} + +u32 sub_unk3_PalaceOfWinds_50() { + return 1; +} + +void sub_StateChange_PalaceOfWinds_50() { +} + +u32 sub_unk3_PalaceOfWindsBoss_Main() { + return 1; +} + +void sub_StateChange_PalaceOfWindsBoss_Main() { +} + +u32 sub_unk3_Vaati2_Main() { + return 1; +} + +void sub_StateChange_Vaati2_Main(void) { + SoundReq(SONG_STOP_BGM); + gArea.musicIndex = gArea.pMusicIndex; +} + +u32 sub_unk3_Vaati3_Main() { + return 1; +} + +void sub_StateChange_Vaati3_Main(void) { + Manager2F_Main(NULL); + + if ((gScreenTransition.field_0x38 & 1) && gScreenTransition.field_0x39) { + if (gScreenTransition.field_0x3c == 1) { + gPlayerEntity.x.HALF.HI = gScreenTransition.field_0x48; + gPlayerEntity.y.HALF.HI = gScreenTransition.field_0x4a + 8; + } else { + if (gScreenTransition.field_0x3c) { + return; + } + gPlayerEntity.x.HALF.HI = gScreenTransition.field_0x44; + gPlayerEntity.y.HALF.HI = gScreenTransition.field_0x46 + 8; + } + } +} + +u32 sub_unk3_DarkHyruleCastleBridge_Main() { + return 1; +} + +void sub_StateChange_DarkHyruleCastleBridge_Main() { + sub_0805B4D0(6); +} + +u32 sub_unk3_VaatisArms_First() { + return 1; +} + +void sub_StateChange_VaatisArms_First() { +} + +u32 sub_unk3_VaatisArms_Second() { + return 1; +} + +void sub_StateChange_VaatisArms_Second() { +} + +u32 sub_unk3_DarkHyruleCastleOutside_ZeldaStatuePlatform() { + sub_080534AC(); + return 1; +} + +extern EntityData gUnk_080EAD68; +extern EntityData gUnk_080EADB8; + +void sub_StateChange_DarkHyruleCastleOutside_ZeldaStatuePlatform(void) { + sub_0805B4D0(4); + if (!CheckLocalFlag(0x77)) { + LoadRoomEntityList(&gUnk_080EAD68); + } else if (!CheckLocalFlag(0x79)) { + LoadRoomEntityList(&gUnk_080EADB8); + SetTileType(0x4072, 0x145, 1); + SetTileType(0x4072, 0x149, 1); + gArea.pMusicIndex = 0; + } +} + +extern u16 gUnk_080EAE00; + +void sub_0804D7EC(void) { + u16 temp; + u16* tilePos; + + tilePos = &gUnk_080EAE00; + while (*tilePos != 0) { + temp = *tilePos; + tilePos++; + SetTileType(0x4072, temp, 1); + } +} + +void sub_0804D810(void) { + u16 uVar1; + u16* puVar2; + + puVar2 = &gUnk_080EAE00; + while (*puVar2 != 0) { + uVar1 = *puVar2; + puVar2++; + sub_0807BA8C(uVar1, 1); + } +} + +u32 sub_unk3_DarkHyruleCastleOutside_Garden() { + return 1; +} + +extern EntityData gUnk_080EAE60; +extern EntityData gUnk_080EAEC0; +extern EntityData gUnk_080EAF20; + +void sub_StateChange_DarkHyruleCastleOutside_Garden(void) { + gArea.areaMetadata = 0x40; + gArea.locationIndex = 0; + if (CheckGlobalFlag(ENDING)) { + if (!CheckLocalFlag(0x7f)) { + LoadRoomEntityList(&gUnk_080EAEC0); + SetLocalFlag(0x7f); + gArea.pMusicIndex = 0x11; + } else { + LoadRoomEntityList(&gUnk_080EAF20); + gArea.pMusicIndex = gArea.musicIndex; + } + } else { + if (CheckLocalFlag(0x79)) { + gArea.pMusicIndex = gArea.musicIndex; + } + if (!CheckLocalFlag(1)) { + LoadRoomEntityList(&gUnk_080EAE60); + } + } + ClearGlobalFlag(0x5d); +} + +u32 sub_unk3_DarkHyruleCastleOutside_OutsideNorthwest() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade0() { +} + +u32 sub_unk3_DarkHyruleCastleOutside_OutsideNortheast() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade1() { +} + +u32 sub_unk3_DarkHyruleCastleOutside_OutsideEast() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade2() { +} + +u32 sub_unk3_DarkHyruleCastleOutside_OutsideSouthwest() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade3() { +} + +u32 sub_unk3_DarkHyruleCastleOutside_OutsideSouth() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade4() { +} + +u32 sub_unk3_DarkHyruleCastleOutside_OutsideSoutheast() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade5() { +} + +u32 sub_unk3_DarkHyruleCastleOutside_8() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade6() { +} + +extern u32 gUnk_080EB604; +extern u32 gUnk_080EB5D4; + +u32 sub_unk3_DarkHyruleCastle_0(void) { + if (CheckGlobalFlag(ENDING)) { + gRoomVars.field_0x6c[0] = &gUnk_080EB604; + gRoomVars.field_0x6c[2] = 0; + gArea.musicIndex = gArea.pMusicIndex = BGM_BEAT_VAATI; + } else if (CheckLocalFlag(0x79)) { + gRoomVars.field_0x6c[0] = NULL; + if (!CheckLocalFlag(0x7a)) { + SetGlobalFlag(ZELDA_CHASE); + gRoomVars.field_0x6c[0] = &gUnk_080EB5D4; + gRoomVars.field_0x6c[7] = sub_0804D9B0; + gRoomVars.field_0x6c[2] = 0; + } + } + return 1; +} + +void sub_StateChange_DarkHyruleCastle_0(void) { + if (CheckGlobalFlag(ENDING)) { + gArea.pMusicIndex = gArea.musicIndex; + } + + if (CheckLocalFlag(0x79)) { + sub_0804D9B0(); + } +} + +extern EntityData gUnk_080EB684; + +void sub_0804D9B0(void) { + sub_0807BB98(0x797, 1, 5, 1); + sub_0807BB98(0x357, 1, 5, 1); + sub_0807BB98(0x55f, 1, 2, 1); + LoadRoomEntityList(&gUnk_080EB684); + gArea.pMusicIndex = gArea.musicIndex; +} + +u32 sub_unk3_DarkHyruleCastle_1() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade7() { +} + +u32 sub_unk3_DarkHyruleCastle_2() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade8() { +} + +u32 sub_unk3_DarkHyruleCastle_3() { + return 1; +} + +void sub_StateChange_Dojos_ToGrimblade9() { +} + +u32 sub_unk3_DarkHyruleCastle_4() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade0() { +} + +u32 sub_unk3_DarkHyruleCastle_5() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade1() { +} + +u32 sub_unk3_DarkHyruleCastle_6(void) { + if (!CheckLocalFlag(0x77)) { + gRoomVars.field_0x6c[0] = 0; + gRoomVars.field_0x6c[2] = 0; + } + return 1; +} + +extern EntityData gUnk_080EB9F4; +extern EntityData gUnk_080EBAA4; +extern EntityData gUnk_080EBAF4; + +void sub_StateChange_DarkHyruleCastle_6(void) { + if (!CheckLocalFlag(0x77)) { + LoadRoomEntityList(&gUnk_080EB9F4); + } else { + if (!CheckLocalFlag(0x78)) { + LoadRoomEntityList(&gUnk_080EBAA4); + SetLocalFlag(0x75); + } + if (CheckLocalFlag(0x7b)) { + LoadRoomEntityList(&gUnk_080EBAF4); + SetLocalFlag(0x76); + } + } +} + +u32 sub_unk3_DarkHyruleCastle_7() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade2() { +} + +u32 sub_unk3_DarkHyruleCastle_8() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade3() { +} + +u32 sub_unk3_DarkHyruleCastle_9() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade4() { +} + +u32 sub_unk3_DarkHyruleCastle_10() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade5() { +} + +u32 sub_unk3_DarkHyruleCastle_11() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade6() { +} + +u32 sub_unk3_DarkHyruleCastle_12() { + return 1; +} +void sub_StateChange_Dojos_ToSplitblade7() { +} + +u32 sub_unk3_DarkHyruleCastle_13() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade8() { +} + +u32 sub_unk3_DarkHyruleCastle_14() { + return 1; +} + +extern EntityData gUnk_080EC2CC; + +void sub_StateChange_DarkHyruleCastle_14(void) { + if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x4c)) { + LoadRoomEntityList(&gUnk_080EC2CC); + } +} + +u32 sub_unk3_DarkHyruleCastle_15() { + return 1; +} + +void sub_StateChange_Dojos_ToSplitblade9() { +} + +u32 sub_unk3_DarkHyruleCastle_16() { + return 1; +} + +extern EntityData gUnk_080EC4E8; + +void sub_StateChange_DarkHyruleCastle_16(void) { + if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x4d)) { + LoadRoomEntityList(&gUnk_080EC4E8); + } +} + +u32 sub_unk3_DarkHyruleCastle_17() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade0() { +} + +u32 sub_unk3_DarkHyruleCastle_18() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade1() { +} + +u32 sub_unk3_DarkHyruleCastle_19() { + return 1; +} + +extern EntityData gUnk_080EC820; + +void sub_StateChange_DarkHyruleCastle_19(void) { + if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x53)) { + LoadRoomEntityList(&gUnk_080EC820); + } +} + +u32 sub_unk3_DarkHyruleCastle_20() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade2() { +} + +u32 sub_unk3_DarkHyruleCastle_21() { + return 1; +} + +extern EntityData gUnk_080ECA60; + +void sub_StateChange_DarkHyruleCastle_21(void) { + if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x56)) { + LoadRoomEntityList(&gUnk_080ECA60); + } +} + +u32 sub_unk3_DarkHyruleCastle_22() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade3() { +} + +u32 sub_unk3_DarkHyruleCastle_23() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade4() { +} + +u32 sub_unk3_DarkHyruleCastle_24() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade5() { +} + +u32 sub_unk3_DarkHyruleCastle_25() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade6() { +} + +u32 sub_unk3_DarkHyruleCastle_26() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade7() { +} + +u32 sub_unk3_DarkHyruleCastle_27() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade8() { +} + +u32 sub_unk3_DarkHyruleCastle_28(void) { + if (CheckLocalFlag(0x79)) { + gRoomVars.field_0x6c[2] = 0; + } + return 1; +} + +extern EntityData gUnk_080ECFCC; + +void sub_StateChange_DarkHyruleCastle_28(void) { + if (CheckLocalFlag(0x79)) { + sub_0807BB98(0x90, 1, 1, 5); + LoadRoomEntityList(&gUnk_080ECFCC); + gArea.pMusicIndex = gArea.musicIndex; + } +} + +u32 sub_unk3_DarkHyruleCastle_29() { + return 1; +} + +void sub_StateChange_Dojos_ToGreatblade9() { +} + +u32 sub_unk3_DarkHyruleCastle_30() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade0() { +} + +extern u32 gUnk_080ED1E4; + +u32 sub_unk3_DarkHyruleCastle_31(void) { + if (CheckGlobalFlag(ENDING)) { + gRoomVars.field_0x6c[0] = &gUnk_080ED1E4; + gRoomVars.field_0x6c[2] = 0; + } + return 1; +} + +void sub_StateChange_DarkHyruleCastle_31(void) { + if (CheckGlobalFlag(ENDING)) { + gArea.pMusicIndex = gArea.musicIndex; + } +} + +u32 sub_unk3_DarkHyruleCastle_32() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade1() { +} + +u32 sub_unk3_DarkHyruleCastle_33() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade2() { +} + +u32 sub_unk3_DarkHyruleCastle_34() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade3() { +} + +u32 sub_unk3_DarkHyruleCastle_35() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade4() { +} + +u32 sub_unk3_DarkHyruleCastle_36() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade5() { +} + +u32 sub_unk3_DarkHyruleCastle_37() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade6() { +} + +u32 sub_unk3_DarkHyruleCastle_38() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade7() { +} + +u32 sub_unk3_DarkHyruleCastle_39() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade8() { +} + +u32 sub_unk3_DarkHyruleCastle_40() { + return 1; +} + +void sub_StateChange_Dojos_ToScarblade9() { +} + +u32 sub_unk3_DarkHyruleCastle_41() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave0() { +} + +u32 sub_unk3_DarkHyruleCastle_42() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave1() { +} + +u32 sub_unk3_DarkHyruleCastle_43() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave2() { +} + +u32 sub_unk3_DarkHyruleCastle_44() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave3() { +} + +u32 sub_unk3_DarkHyruleCastle_45() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave4() { +} + +u32 sub_unk3_DarkHyruleCastle_46() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave5() { +} + +u32 sub_unk3_DarkHyruleCastle_47() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave6() { +} + +u32 sub_unk3_DarkHyruleCastle_48() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave7() { +} + +u32 sub_unk3_DarkHyruleCastle_49() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave8() { +} + +u32 sub_unk3_DarkHyruleCastle_50() { + return 1; +} + +void sub_StateChange_GoronCave_StairsToCave9() { +} + +u32 sub_unk3_DarkHyruleCastle_51() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk0() { +} + +u32 sub_unk3_DarkHyruleCastle_52() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk1() { +} + +u32 sub_unk3_DarkHyruleCastle_53(void) { + if (CheckLocalFlag(0x79)) { + gRoomVars.field_0x6c[2] = 0; + gRoomVars.field_0x6c[0] = 0; + } + return 1; +} + +extern EntityData gUnk_080EE314; + +void sub_StateChange_DarkHyruleCastle_53(void) { + if (CheckLocalFlag(0x79)) { + sub_0807BB98(3, 2, 5, 1); + LoadRoomEntityList(&gUnk_080EE314); + gArea.pMusicIndex = gArea.musicIndex; + } +} + +u32 sub_unk3_DarkHyruleCastle_54() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk2() { +} + +u32 sub_unk3_DarkHyruleCastle_55(void) { + if (CheckLocalFlag(0x79)) { + gRoomVars.field_0x6c[2] = 0; + } + return 1; +} + +extern EntityData gUnk_080EE5DC; + +void sub_StateChange_DarkHyruleCastle_55(void) { + if (CheckLocalFlag(0x79)) { + sub_0807BB98(0x392, 2, 2, 5); + LoadRoomEntityList(&gUnk_080EE5DC); + gArea.pMusicIndex = gArea.musicIndex; + } +} + +u32 sub_unk3_DarkHyruleCastle_56() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk3() { +} + +u32 sub_unk3_DarkHyruleCastle_57() { + return 1; +} + +extern EntityData gUnk_080EE71C; + +void sub_StateChange_DarkHyruleCastle_57(void) { + if (CheckLocalFlag(1)) { + LoadRoomEntityList(&gUnk_080EE71C); + } +} + +u32 sub_unk3_DarkHyruleCastle_58() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk4() { +} + +ASM_FUNC("asm/non_matching/sub_unk3_HyruleTown_0.inc", u32 sub_unk3_HyruleTown_0(void)) + +extern EntityData gUnk_080EEB6C; +extern EntityData gUnk_080EEB8C; +extern EntityData gUnk_080EE88C; +extern EntityData gUnk_080EE8FC; +extern EntityData gUnk_080EE91C; +extern EntityData gUnk_080EECBC; +extern EntityData gUnk_080EE93C; +extern EntityData gUnk_080EE95C; +extern EntityData gUnk_080EE97C; +extern EntityData gUnk_080EE9BC; +extern EntityData gUnk_080EE99C; +extern EntityData gUnk_080EE9DC; +extern EntityData gUnk_080EEA3C; +extern EntityData gUnk_080EEA1C; +extern EntityData gUnk_080EE9FC; +extern EntityData gUnk_080EEA5C; +extern EntityData gUnk_080EEABC; +extern EntityData gUnk_080EEA7C; +extern EntityData gUnk_080EEA9C; +extern EntityData gUnk_080EEBAC; + +void sub_StateChange_HyruleTown_0(void) { + sub_08054570(); + TryLoadPrologueHyruleTown(); +#if defined(USA) || defined(DEMO_USA) || defined(DEMO_JP) + SetTileType(0x176, 0x66b, 1); +#endif + if (gSave.global_progress == 1) { + sub_0801D000(0); + } else { + sub_08018C58(0xdb4); + if (!CheckLocalFlagByBank(FLAG_BANK_2, MHOUSE04_DANRO)) { + LoadRoomEntityList(&gUnk_080EEB6C); + } + if (!CheckLocalFlagByBank(FLAG_BANK_2, MHOUSE06_DANRO)) { + LoadRoomEntityList(&gUnk_080EEB8C); + } + + if ((!GetInventoryValue(ITEM_KINSTONE_BAG)) && CheckGlobalFlag(LV1_CLEAR)) { + LoadRoomEntityList(&gUnk_080EE88C); + } + if (!CheckKinstoneFused(0x28)) { + LoadRoomEntityList(&gUnk_080EE8FC); + } + if (CheckKinstoneFused(0x33)) { + LoadRoomEntityList(&gUnk_080EE91C); + } + if (CheckGlobalFlag(MACHI_MACHIHOKORI)) { + LoadRoomEntityList(&gUnk_080EE93C); + } else { + LoadRoomEntityList(&gUnk_080EECBC); + } + if (CheckKinstoneFused(0x1b) && (gSave.global_progress > 3)) { + if (!(CheckGlobalFlag(NEW_HOUSE_DIN) || CheckGlobalFlag(NEW_HOUSE_NAYRU) || + CheckGlobalFlag(NEW_HOUSE_FARORE))) { + if (!(CheckGlobalFlag(RENTED_HOUSE_DIN) || CheckGlobalFlag(RENTED_HOUSE_NAYRU) || + CheckGlobalFlag(RENTED_HOUSE_FARORE))) { + LoadRoomEntityList(&gUnk_080EE95C); + } else { + if (!CheckGlobalFlag(TATEKAKE_HOUSE)) { + LoadRoomEntityList(&gUnk_080EE97C); + } else { + LoadRoomEntityList(&gUnk_080EE9BC); + } + } + } else { + LoadRoomEntityList(&gUnk_080EE99C); + } + } + if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { + LoadRoomEntityList(&gUnk_080EE9FC); + } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { + LoadRoomEntityList(&gUnk_080EEA1C); + } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { + LoadRoomEntityList(&gUnk_080EEA3C); + } else { + LoadRoomEntityList(&gUnk_080EE9DC); + } + if ((gSave.global_progress > 4) && !CheckKinstoneFused(0xb) && + (CheckGlobalFlag(RENTED_HOUSE_DIN) || CheckGlobalFlag(RENTED_HOUSE_NAYRU) || + CheckGlobalFlag(RENTED_HOUSE_FARORE))) { + LoadRoomEntityList(&gUnk_080EEA5C); + } + // rocs cape +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0xcd) && GetInventoryValue(ITEM_ROCS_CAPE)) { +#else + if (!CheckLocalFlag(0xd0) && GetInventoryValue(ITEM_ROCS_CAPE)) { +#endif + LoadRoomEntityList(&gUnk_080EEABC); + } + if ((gSave.global_progress > 3) && CheckGlobalFlag(INLOCK)) { + LoadRoomEntityList(&gUnk_080EEA7C); + } + if ((gSave.global_progress < 6) && !CheckGlobalFlag(MIZUKAKI_START)) { + LoadRoomEntityList(&gUnk_080EEA9C); + } + if ((gSave.windcrests & 0x8000000) == 0) { + LoadRoomEntityList(&gUnk_080EEBAC); + } + sub_0804E150(); + } +} + +void sub_unk1_HyruleTown_8(void) { + if ((gSave.windcrests & 0x8000000) == 0) { + LoadRoomEntityList(&gUnk_080EEBAC); + } +} + +ASM_FUNC("asm/non_matching/sub_0804E150.inc", void sub_0804E150(void)) + +u32 sub_unk3_HyruleTownMinishCaves_Entrance() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_Entrance() { +} + +u32 sub_unk3_HyruleTownMinishCaves_NorthRoom() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_NorthRoom() { +} + +u32 sub_unk3_HyruleTownMinishCaves_PacciJump() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_PacciJump() { +} + +u32 sub_unk3_HyruleTownMinishCaves_MulldozerFight() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_MulldozerFight() { +} + +u32 sub_unk3_HyruleTownMinishCaves_WestChest() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_WestChest() { +} + +u32 sub_unk3_HyruleTownMinishCaves_Flippers() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_Flippers() { +} + +u32 sub_unk3_HyruleTownMinishCaves_Librari() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_Librari() { +} + +u32 sub_unk3_HyruleTownMinishCaves_WestFrozenChest() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_WestFrozenChest() { +} + +u32 sub_unk3_HyruleTownMinishCaves_CrossIntersection() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_CrossIntersection() { +} + +u32 sub_unk3_HyruleTownMinishCaves_SoutheastCorner() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_SoutheastCorner() { +} + +u32 sub_unk3_HyruleTownMinishCaves_Entrance2() { + return 1; +} + +void sub_StateChange_HyruleTownMinishCaves_Entrance2() { +} + +u32 sub_unk3_HyruleTownUnderground_Main() { + return 1; +} + +void sub_StateChange_HyruleTownUnderground_Main() { +} + +u32 sub_unk3_HyruleTownUnderground_Well() { + return 1; +} + +void sub_StateChange_HyruleTownUnderground_Well() { +} + +extern u32 gUnk_080F09A0; + +u32 sub_unk3_CastleGarden_Main(void) { + if (GetInventoryValue(ITEM_FOURSWORD)) { + gRoomVars.field_0x6c[1] = &gUnk_080F09A0; + } + return 1; +} + +extern EntityData gUnk_080F0650; +extern EntityData gUnk_080F0800; +extern EntityData gUnk_080F08F0; +extern EntityData gUnk_080F0850; +extern EntityData gUnk_080F0870; +extern EntityData gUnk_080F0890; +extern EntityData gUnk_080F0920; + +void sub_StateChange_CastleGarden_Main(void) { + if (!CheckGlobalFlag(TABIDACHI)) { + LoadRoomEntityList(&gUnk_080F0650); +#ifdef EU + gArea.pMusicIndex = BGM_FESTIVAL_APPROACH; +#else + gArea.pMusicIndex = BGM_BEANSTALK; + SetGlobalFlag(CASTLE_BGM); + } else { + if (CheckGlobalFlag(CASTLE_BGM)) { +#if defined(JP) || defined(DEMO_JP) + gArea.pMusicIndex = gArea.musicIndex; +#else + gArea.pMusicIndex = BGM_HYRULE_CASTLE_NOINTRO; +#endif + } +#endif + } +#if defined(JP) || defined(DEMO_JP) || defined(EU) + if (!CheckLocalFlag(0x9b)) { +#else + if (!CheckLocalFlag(0x9c)) { +#endif + LoadRoomEntityList(&gUnk_080F0800); + SetTileType(0x4072, 600, 1); + SetTileType(0x4072, 0x298, 1); + SetTileType(0x4072, 0x266, 1); + SetTileType(0x4072, 0x2a6, 1); + } else { + if (!GetInventoryValue(ITEM_FOURSWORD)) { + LoadRoomEntityList(&gUnk_080F08F0); + SetTileType(0x4072, 0x9e, 1); + SetTileType(0x4072, 0x9f, 1); + SetTileType(0x4072, 0xa0, 1); + } + LoadRoomEntityList(&gUnk_080F0850); + if (!GetInventoryValue(ITEM_WATER_ELEMENT)) { + LoadRoomEntityList(&gUnk_080F0870); + } else { + LoadRoomEntityList(&gUnk_080F0890); + } + SetTileType(0x4072, 600, 1); + SetTileType(0x4072, 0x298, 1); +#if defined(JP) || defined(DEMO_JP) || defined(EU) + if (CheckLocalFlag(0x11)) { +#else + if (CheckLocalFlag(0x10)) { +#endif + LoadRoomEntityList(&gUnk_080F0920); +#if defined(JP) || defined(DEMO_JP) || defined(EU) + ClearLocalFlag(0x11); +#else + ClearLocalFlag(0x10); +#endif + } + } + sub_080AF284(); +} + +u32 sub_unk3_SimonsSimulation_Main() { + ClearLocalFlag(1); + return 1; +} + +extern u8* gUnk_080F0D58[4]; +extern Entity* gUnk_080F0CB8[15]; +extern u8* gUnk_080F0E08[]; +extern struct { + u32 unk_00; + u32 unk_04; +} gUnk_080F0E1C[]; + +void sub_StateChange_SimonsSimulation_Main() { + u32 r; + u32 index; + u32 tmp; + tmp = CheckGlobalFlag(LV4_CLEAR); + index = BOOLCAST(tmp); + if (CheckGlobalFlag(LV5_CLEAR)) { + index = 2; + } + if (CheckGlobalFlag(GAMECLEAR)) { + index = 3; + } + r = Random(); + index = gUnk_080F0D58[index][r & 0x1f]; + LoadRoomEntityList((EntityData*)gUnk_080F0CB8[index & 0xF]); + index >>= 4; + r >>= 8; + index = gUnk_080F0E08[index][r & 0x1F]; + if (!CheckLocalFlag(0xC6)) { + SetLocalFlag(0xC6); + index = 0xE; + } + sub_0804B3C4(&gUnk_080F0E1C[index]); + SoundReq(SONG_STOP_BGM); +} + +u32 sub_unk3_HouseInteriors2_Stranger() { + return 1; +} + +extern EntityData gUnk_080F1C68; +extern EntityData gUnk_080F1C88; + +void sub_StateChange_HouseInteriors2_Stranger(void) { + if (!CheckGlobalFlag(POWERGLOVE_HINT)) { + LoadRoomEntityList(&gUnk_080F1C68); + } else { + LoadRoomEntityList(&gUnk_080F1C88); + } +} + +u32 sub_unk3_HouseInteriors2_WestOracle() { + return 1; +} + +extern EntityData gUnk_080F1D90; +extern EntityData gUnk_080F1DB0; +extern EntityData gUnk_080F1DD0; + +void sub_StateChange_HouseInteriors2_WestOracle(void) { + if (CheckGlobalFlag(NEW_HOUSE_DIN)) { + LoadRoomEntityList(&gUnk_080F1D90); + } else if (CheckGlobalFlag(NEW_HOUSE_NAYRU)) { + LoadRoomEntityList(&gUnk_080F1DB0); + } else if (CheckGlobalFlag(NEW_HOUSE_FARORE)) { + LoadRoomEntityList(&gUnk_080F1DD0); + } +} + +u32 sub_unk3_HouseInteriors2_2() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk5() { +} + +u32 sub_unk3_HouseInteriors2_3() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk6() { +} + +u32 sub_unk3_HouseInteriors2_DrLeft() { + return 1; +} + +extern EntityData gUnk_080F2174; +extern EntityData gUnk_080F2194; +extern EntityData gUnk_080F21B4; + +void sub_StateChange_HouseInteriors2_DrLeft(void) { + LoadRoomEntityList(&gUnk_080F2174); + if (!GetInventoryValue(ITEM_QST_BOOK2) && CheckGlobalFlag(MIZUKAKI_HARIFALL)) { + LoadRoomEntityList(&gUnk_080F2194); + } + if (gScreenTransition.player_status.spawn_type == PL_SPAWN_MINISH) { + LoadRoomEntityList(&gUnk_080F21B4); + } +} + +u32 sub_unk3_HouseInteriors2_Romio() { + return 1; +} + +extern EntityData gUnk_080F23BC; +extern EntityData gUnk_080F238C; +extern EntityData gUnk_additional_c_HouseInteriors2_Romio; + +void sub_StateChange_HouseInteriors2_Romio(void) { + if (gSave.global_progress > 7) { + LoadRoomEntityList(&gUnk_080F23BC); + } + if (!GetInventoryValue(ITEM_FLIPPERS) && CheckGlobalFlag(MIZUKAKI_START)) { + LoadRoomEntityList(&gUnk_080F238C); + } else { + LoadRoomEntityList(&gUnk_additional_c_HouseInteriors2_Romio); + } +} + +u32 sub_unk3_HouseInteriors2_Julietta() { + return 1; +} + +extern EntityData gUnk_080F2570; +extern EntityData gUnk_080F2590; +extern EntityData gUnk_080F25C0; +extern EntityData gUnk_080F2600; + +void sub_StateChange_HouseInteriors2_Julietta(void) { + switch (gSave.global_progress) { + case 0: + case 2: + case 4: + LoadRoomEntityList(&gUnk_080F2570); + break; + case 1: + case 3: + break; + case 5: + if (!GetInventoryValue(ITEM_FLIPPERS)) { + if (!CheckGlobalFlag(MIZUKAKI_START)) { + LoadRoomEntityList(&gUnk_080F2570); + break; + } + if (!GetInventoryValue(0x39)) { + LoadRoomEntityList(&gUnk_080F25C0); + } + } else { + LoadRoomEntityList(&gUnk_080F2590); + } + break; + case 8: + case 9: + LoadRoomEntityList(&gUnk_080F2600); + case 6: + case 7: + LoadRoomEntityList(&gUnk_080F2590); + } +} + +u32 sub_unk3_HouseInteriors2_Percy() { + return 1; +} + +extern EntityData gUnk_additional_9_HouseInteriors2_Percy; +extern EntityData gUnk_080F2860; +extern EntityData gUnk_additional_a_HouseInteriors2_Percy; +extern EntityData gUnk_080F27D8; +extern EntityData gUnk_080F2798; + +void sub_StateChange_HouseInteriors2_Percy(void) { + if (CheckKinstoneFused(0x21)) { + if (!CheckLocalFlag(0x42)) { + if (!CheckLocalFlag(0x43)) { + LoadRoomEntityList(&gUnk_additional_9_HouseInteriors2_Percy); + LoadRoomTileEntities(&gUnk_080F2860); + } else { + LoadRoomEntityList(&gUnk_additional_a_HouseInteriors2_Percy); + } + } else if (!CheckLocalFlag(0x3f)) { + LoadRoomEntityList(&gUnk_080F27D8); + } else { + LoadRoomEntityList(&gUnk_080F2798); + } + } +} + +u32 sub_unk3_HouseInteriors2_EastOracle() { + return 1; +} + +extern EntityData gUnk_080F28D4; +extern EntityData gUnk_080F28F4; +extern EntityData gUnk_080F2914; + +void sub_StateChange_HouseInteriors2_EastOracle(void) { + if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { + LoadRoomEntityList(&gUnk_080F28D4); + } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { + LoadRoomEntityList(&gUnk_080F28F4); + } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { + LoadRoomEntityList(&gUnk_080F2914); + } +} + +u32 sub_unk3_HouseInteriors2_A() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk7() { +} + +u32 sub_unk3_HouseInteriors2_B() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk8() { +} + +u32 sub_unk3_HouseInteriors2_Cucco() { + return 1; +} + +void sub_StateChange_Ruins_Beanstalk9() { +} + +u32 sub_unk3_HouseInteriors2_LinksHouseEntrance() { + return 1; +} + +extern EntityData gUnk_080F2E2C; + +void sub_StateChange_HouseInteriors2_LinksHouseEntrance(void) { + if (!CheckGlobalFlag(OUTDOOR)) { + gArea.musicIndex = gArea.pMusicIndex; + SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); + } + if (!CheckGlobalFlag(START)) { + LoadRoomEntityList(&gUnk_080F2E2C); + } +} + +u32 sub_unk3_HouseInteriors2_LinksHouseSmith() { + return 1; +} + +extern EntityData gUnk_080F2E94; +extern EntityData gUnk_080F2EC4; + +void sub_StateChange_HouseInteriors2_LinksHouseSmith(void) { + if (!CheckGlobalFlag(OUTDOOR)) { + gArea.musicIndex = gArea.pMusicIndex; + SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); + } + if (!CheckGlobalFlag(START)) { + LoadRoomEntityList(&gUnk_080F2E94); + } else { + LoadRoomEntityList(&gUnk_080F2EC4); + } +} + +u32 sub_unk3_HouseInteriors2_Dampe() { + return 1; +} + +extern EntityData gUnk_080F2FD4; + +void sub_StateChange_HouseInteriors2_Dampe(void) { + if (!CheckLocalFlag(0x69) || GetInventoryValue(ITEM_QST_GRAVEYARD_KEY) > 1) { + LoadRoomEntityList(&gUnk_080F2FD4); + } +} + +u32 sub_unk3_HouseInteriors2_Stockwell() { + return 1; +} + +extern EntityData gUnk_080F30CC; + +void sub_StateChange_HouseInteriors2_Stockwell(void) { + if ((GetInventoryValue(ITEM_QST_DOGFOOD) == 1) && !CheckGlobalFlag(BIN_DOGFOOD) && + (gPlayerState.flags & PL_MINISH) == 0) { + LoadRoomEntityList(&gUnk_080F30CC); + } +} + +u32 sub_unk3_HouseInteriors2_LinksHouseBedroom() { + return 1; +} + +extern EntityData gUnk_080F31D8; +extern u32 script_08009B30; + +void sub_StateChange_HouseInteriors2_LinksHouseBedroom(void) { + if (!CheckGlobalFlag(START) && !CheckLocalFlag(0x46)) { + sub_080A71C4(5, 1, 4, 4); + gUpdateVisibleTiles = 0; + DoFade(5, 256); + sub_080751E8(0, 6, &script_08009B30); + } + if (!CheckGlobalFlag(OUTDOOR)) { + gArea.musicIndex = gArea.pMusicIndex; + SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); + } + if ((gPlayerState.flags & 8) == 0) { + LoadRoomEntityList(&gUnk_080F31D8); + } +} + +extern u32 script_08009E58; + +void sub_0804E864(void) { + gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x90; + gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; + sub_080751E8(1, 6, &script_08009E58); + ModHealth(0xa0); +} + +u32 sub_unk3_HouseInteriors4_Carpenter() { + return 1; +} + +extern EntityData gUnk_080F3260; + +void sub_StateChange_HouseInteriors4_Carpenter(void) { + if (GetInventoryValue(ITEM_PACCI_CANE)) { + LoadRoomEntityList(&gUnk_080F3260); + SetTileType(0x4072, 0x202, 1); + SetTileType(0x4072, 0x242, 1); + SetTileType(0x4072, 0x204, 1); + SetTileType(0x4072, 0x244, 1); + } +} + +u32 sub_unk3_HouseInteriors4_Swiftblade() { + return 1; +} + +void sub_StateChange_HouseInteriors4_Swiftblade() { + sub_08054564(); +} + +u32 sub_unk3_HouseInteriors4_RanchHouseWest() { + return 1; +} + +extern EntityData gUnk_080F36FC; +extern EntityData gUnk_080F3604; + +void sub_StateChange_HouseInteriors4_RanchHouseWest(void) { + if (!CheckGlobalFlag(INLOCK)) { + LoadRoomEntityList(&gUnk_080F36FC); + } else if (gSave.global_progress < 4) { + LoadRoomEntityList(&gUnk_080F3604); + } +} + +u32 sub_unk3_HouseInteriors4_RanchHouseEast() { + return 1; +} + +extern EntityData gUnk_080F37D0; + +void sub_StateChange_HouseInteriors4_RanchHouseEast(void) { + if (CheckGlobalFlag(INLOCK)) { + LoadRoomEntityList(&gUnk_080F37D0); + } +} + +u32 sub_unk3_HouseInteriors4_FarmHouse() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites0() { +} + +u32 sub_unk3_HouseInteriors4_Mayor() { + return 1; +} + +extern EntityData gUnk_080F3A48; + +void sub_StateChange_HouseInteriors4_Mayor(void) { + if (!GetInventoryValue(ITEM_FLIPPERS) && CheckGlobalFlag(MIZUKAKI_START) && !GetInventoryValue(ITEM_QST_BOOK3)) { + LoadRoomEntityList(&gUnk_080F3A48); + } + gScreenTransition.player_status.field_0x20 = 0xf28; + gScreenTransition.player_status.field_0x22 = 0x82d; +} + +extern u32 Enemies_LakeHylia_Main; +extern u32 gUnk_080F3EA4; + +u32 sub_unk3_LakeHylia_Main(void) { + if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) { + gRoomVars.field_0x6c[2] = &gUnk_080F3EA4; + } else { + gRoomVars.field_0x6c[2] = &Enemies_LakeHylia_Main; + } + return 1; +} + +extern EntityData gUnk_080F3C64; +extern EntityData gUnk_080F3C94; +extern EntityData gUnk_080F3C44; + +void sub_StateChange_LakeHylia_Main(void) { + if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) { + LoadRoomEntityList(&gUnk_080F3C64); + } + if (CheckKinstoneFused(0x12)) { + LoadRoomEntityList(&gUnk_080F3C94); + } + if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { + LoadRoomEntityList(&gUnk_080F3C44); + } + SetTile(0x4091, 0x590, 1); + SetTile(0x4091, 0x591, 1); + SetTile(0x4091, 0x592, 1); + SetTile(0x4091, 0x593, 1); + SetTile(0x4091, 0x594, 1); + SetTile(0x4091, 0x5d0, 1); + SetTile(0x4091, 0x610, 1); + SetTile(0x4091, 0x650, 1); + SetTile(0x4091, 0x5d4, 1); + SetTile(0x4091, 0x614, 1); + SetTile(0x4091, 0x654, 1); + SetTile(0x4091, 0x690, 1); + SetTile(0x4091, 0x691, 1); + SetTile(0x4091, 0x692, 1); + SetTile(0x4091, 0x693, 1); + SetTile(0x4091, 0x694, 1); +} + +u32 sub_unk3_LakeHylia_Beanstalk() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites1() { +} + +u32 sub_unk3_LakeWoodsCave_Main() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites2() { +} + +u32 sub_unk3_HyliaDigCaves_Middle() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites3() { +} + +u32 sub_unk3_HyliaDigCaves_North() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites4() { +} + +u32 sub_unk3_CastorWildsDigCave_Main() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites5() { +} + +u32 sub_unk3_HyruleDigCaves_Main() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites6() { +} + +u32 sub_unk3_CrenelDigCave_Main() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites7() { +} + +u32 sub_unk3_DigCaves1_HyruleFieldFarm() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites8() { +} + +u32 sub_unk3_DigCaves1_TrilbyHighlands() { + return 1; +} + +void sub_StateChange_Ruins_LadderToTektites9() { +} + +u32 sub_unk3_VeilFallsDigCave_Main() { + return 1; +} + +void sub_StateChange_VeilFallsDigCave_Main() { +} + +u32 sub_unk3_OuterFortressOfWinds_EntranceHall(void) { + gArea.areaMetadata |= 0x48; + return 1; +} + +void sub_StateChange_OuterFortressOfWinds_EntranceHall() { +} + +u32 sub_unk3_OuterFortressOfWinds_2F(void) { + gArea.areaMetadata |= 0x48; + return 1; +} + +void sub_StateChange_OuterFortressOfWinds_2F() { +} + +u32 sub_unk3_OuterFortressOfWinds_3F(void) { + gArea.areaMetadata |= 0x48; + return 1; +} + +void sub_StateChange_OuterFortressOfWinds_3F() { +} + +u32 sub_unk3_OuterFortressOfWinds_MoleMitts(void) { + sub_0801DD58(0x58, 5); + gArea.areaMetadata |= 0x48; + return 1; +} + +void sub_StateChange_OuterFortressOfWinds_MoleMitts() { +} + +u32 sub_unk3_OuterFortressOfWinds_SmallKey(void) { + sub_0801DD58(0x58, 6); + gArea.areaMetadata |= 0x48; + return 1; +} + +void sub_StateChange_OuterFortressOfWinds_SmallKey() { +} + +extern u32 gUnk_080F4EB0; + +u32 sub_unk3_MinishWoods_Main(void) { + if (CheckGlobalFlag(ENDING)) { + gRoomVars.field_0x6c[0] = &gUnk_080F4EB0; + gRoomVars.field_0x6c[2] = NULL; + } + return 1; +} + +extern EntityData gUnk_080F4D50; +extern EntityData gUnk_080F4DB0; +extern EntityData gUnk_080F4DD0; +extern EntityData gUnk_080F4DF0; +extern EntityData gUnk_080F4F10; +extern EntityData gUnk_080F4E10; + +void sub_StateChange_MinishWoods_Main(void) { + if (CheckGlobalFlag(ENDING)) { + gArea.pMusicIndex = gArea.musicIndex; + } + if (!CheckGlobalFlag(EZERO_1ST)) { + LoadRoomEntityList(&gUnk_080F4D50); + } +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0x3d)) { + if (!CheckLocalFlag(0x3a)) { +#else + if (!CheckLocalFlag(0x3e)) { + if (!CheckLocalFlag(0x3b)) { +#endif + LoadRoomEntityList(&gUnk_080F4DB0); + } else { + LoadRoomEntityList(&gUnk_080F4DD0); + } + LoadRoomEntityList(&gUnk_080F4DF0); + } + if (CheckKinstoneFused(0x4e)) { + LoadRoomEntityList(&gUnk_080F4F10); + } + if ((s32)gSave.windcrests > -1) { + LoadRoomEntityList(&gUnk_080F4E10); + } +#ifdef DEMO_USA + SetTileType(0x177, 0x5b4, 1); + SetTileType(0x177, 0x5f4, 1); +#endif +} + +void sub_unk1_MinishWoods_Main(void) { + if ((s32)gSave.windcrests > -1) { + LoadRoomEntityList(&gUnk_080F4E10); + } +} + +u32 sub_unk3_Empty_Main() { + return 1; +} + +void sub_StateChange_Empty_Main() { +} + +extern u32 gUnk_080F5348; + +u32 sub_unk3_SanctuaryEntrance_Main(void) { + if (CheckGlobalFlag(ENDING)) { + gRoomVars.field_0x6c[0] = &gUnk_080F5348; + gRoomVars.field_0x6c[7] = sub_0804ED18; + gRoomVars.field_0x6c[2] = NULL; + } + return 1; +} + +extern EntityData gUnk_080F5328; +extern EntityData gUnk_080F5308; + +void sub_StateChange_SanctuaryEntrance_Main(void) { + if (GetInventoryValue(ITEM_GREEN_SWORD)) { + LoadRoomEntityList(&gUnk_080F5328); +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0x15)) { +#else + if (!CheckLocalFlag(0x14)) { +#endif + LoadRoomEntityList(&gUnk_080F5308); + } + } +} + +void sub_0804ED18(void) { + gArea.pMusicIndex = gArea.musicIndex; +} + +u32 sub_unk3_Sanctuary_Hall() { + return 1; +} + +void sub_StateChange_Sanctuary_Hall(void) { + sub_080AF2E4(); + if (CheckGlobalFlag(SEIIKI_BGM)) { + gArea.pMusicIndex = BGM_CASTLE_COLLAPSE; + } +} + +u32 sub_unk3_Sanctuary_Main() { + return 1; +} + +extern EntityData gUnk_080F54E8; +extern EntityData gUnk_080F5508; +extern EntityData gUnk_080F5558; +extern EntityData gUnk_080F5598; +extern EntityData gUnk_080F55D8; +extern EntityData gUnk_080F5528; +extern EntityData gUnk_080F5578; +extern EntityData gUnk_080F55B8; + +void sub_StateChange_Sanctuary_Main(void) { + if (!CheckLocalFlag(0x79)) { + LoadRoomEntityList(&gUnk_080F54E8); + } + if (!CheckLocalFlag(0x7a)) { + if (GetInventoryValue(ITEM_GREEN_SWORD) && !GetInventoryValue(ITEM_RED_SWORD) && + GetInventoryValue(ITEM_EARTH_ELEMENT) && GetInventoryValue(ITEM_FIRE_ELEMENT)) { + LoadRoomEntityList(&gUnk_080F5508); + } + } else { + if (!CheckLocalFlag(0x7b)) { + if (GetInventoryValue(ITEM_RED_SWORD) && !GetInventoryValue(ITEM_BLUE_SWORD) && + GetInventoryValue(ITEM_WATER_ELEMENT)) { + LoadRoomEntityList(&gUnk_080F5558); + } + } else { + if (!CheckLocalFlag(0x7c)) { + if (!GetInventoryValue(ITEM_FOURSWORD) && GetInventoryValue(ITEM_WIND_ELEMENT)) { + LoadRoomEntityList(&gUnk_080F5598); + } + } else { + LoadRoomEntityList(&gUnk_080F55D8); + } + } + } + if (CheckLocalFlag(0x7a)) { + LoadRoomEntityList(&gUnk_080F5528); + } + if (CheckLocalFlag(0x7b)) { + LoadRoomEntityList(&gUnk_080F5578); + } + if (CheckLocalFlag(0x7c)) { + LoadRoomEntityList(&gUnk_080F55B8); + } + if (CheckGlobalFlag(SEIIKI_BGM)) { + gArea.pMusicIndex = BGM_CASTLE_COLLAPSE; + } +} + +u32 sub_unk3_Sanctuary_StainedGlass() { + return 1; +} + +extern EntityData gUnk_080F5660; + +void sub_StateChange_Sanctuary_StainedGlass(void) { + if (!CheckLocalFlag(0x78) && CheckLocalFlag(0x7c)) { + LoadRoomEntityList(&gUnk_080F5660); + } + if (CheckGlobalFlag(SEIIKI_BGM)) { + gArea.pMusicIndex = BGM_CASTLE_COLLAPSE; + } +} + +u32 sub_unk3_HouseInteriors3_StockwellShop() { + return 1; +} + +extern EntityData gUnk_080F5758; +extern EntityData gUnk_080F57E8; +extern EntityData gUnk_080F57A8; +extern EntityData gUnk_080F57C8; +extern EntityData gUnk_080F5888; +extern EntityData gUnk_080F58A8; +extern EntityData gUnk_080F5868; +extern EntityData gUnk_080F5828; +extern EntityData gUnk_080F5848; +extern EntityData gUnk_080F5788; + +void sub_StateChange_HouseInteriors3_StockwellShop(void) { + LoadRoomEntityList(&gUnk_080F5758); + if (!GetInventoryValue(0x36) && CheckLocalFlagByBank(0x200, 0x8f)) { + LoadRoomEntityList(&gUnk_080F57E8); + } + if (!CheckLocalFlag(0x55)) { + LoadRoomEntityList(&gUnk_080F57A8); + } else { + if (gBombBagSizes[gSave.stats.bombBagType] >= 30) { + LoadRoomEntityList(&gUnk_080F57C8); + } + if (!GetInventoryValue(ITEM_BOOMERANG) && !GetInventoryValue(ITEM_MAGIC_BOOMERANG)) { + LoadRoomEntityList(&gUnk_080F5888); +#ifndef EU + } else { + if (!CheckLocalFlag(0xcd)) { + LoadRoomEntityList(&gUnk_080F58A8); + } +#endif + } + } + if (GetInventoryValue(ITEM_BOW) || CheckGlobalFlag(LV3_CLEAR)) { + LoadRoomEntityList(&gUnk_080F5868); + if (!CheckLocalFlag(0x56)) { + LoadRoomEntityList(&gUnk_080F5828); + } else { + LoadRoomEntityList(&gUnk_080F5848); + } + } + if (gSave.stats.filler3[0] == 0) { + LoadRoomEntityList(&gUnk_080F5788); + } +} + +u32 sub_unk3_HouseInteriors3_Cafe() { + return 1; +} + +void sub_StateChange_HouseInteriors3_Cafe() { +} + +u32 sub_unk3_HouseInteriors3_RemShoeShop() { + return 1; +} + +extern EntityData gUnk_080F5B3C; + +void sub_StateChange_HouseInteriors3_RemShoeShop(void) { +#ifndef EU + if (GetInventoryValue(0x38) == 1) { + LoadRoomEntityList(&gUnk_080F5B3C); + } +#endif +} + +u32 sub_unk3_HouseInteriors3_Bakery() { + return 1; +} +void sub_StateChange_HouseInteriors3_Bakery() { +} + +u32 sub_unk3_HouseInteriors3_Simon(void) { + if (CheckGlobalFlag(MAROYA_WAKEUP)) { + gScreenTransition.player_status.spawn_type = 5; + } + return 1; +} + +extern EntityData gUnk_080F5DD0; +extern u32 script_08011C50; + +void sub_StateChange_HouseInteriors3_Simon(void) { + if (gSave.global_progress > 7) { + LoadRoomEntityList(&gUnk_080F5DD0); + } + if (CheckGlobalFlag(MAROYA_WAKEUP)) { + sub_080751E8(1, 2, &script_08011C50); + } +} + +u32 sub_unk3_HouseInteriors3_FigurineHouse() { + return 1; +} + +extern EntityData gUnk_080F5E68; + +void sub_StateChange_HouseInteriors3_FigurineHouse(void) { +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlagByBank(0x100, 0xce)) { +#else + if (!CheckLocalFlagByBank(0x100, 0xd1)) { +#endif + LoadRoomEntityList(&gUnk_080F5E68); + } +} + +u32 sub_unk3_HouseInteriors3_BorlovEntrance() { + return 1; +} + +extern EntityData gUnk_additional_8_HouseInteriors3_BorlovEntrance; +extern EntityData gUnk_additional_9_HouseInteriors3_BorlovEntrance; +extern EntityData gUnk_additional_a_HouseInteriors3_BorlovEntrance; + +void sub_StateChange_HouseInteriors3_BorlovEntrance(void) { + if (gSave.global_progress > 4) { + LoadRoomEntityList(&gUnk_additional_8_HouseInteriors3_BorlovEntrance); + } + if (!CheckLocalFlag(0x92)) { + LoadRoomEntityList(&gUnk_additional_9_HouseInteriors3_BorlovEntrance); + } else { + LoadRoomEntityList(&gUnk_additional_a_HouseInteriors3_BorlovEntrance); + } +} + +u32 sub_unk3_HouseInteriors3_Carlov() { + return 1; +} + +void sub_StateChange_HouseInteriors3_Carlov() { +} + +u32 sub_unk3_HouseInteriors3_Borlov() { + return 1; +} + +void sub_StateChange_HouseInteriors3_Borlov() { +} + +u32 sub_unk3_WindTribeTower_Entrance(void) { +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByBank(0x100, 0xd9)) { +#else + if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByBank(0x100, 0xdc)) { +#endif + SetGlobalFlag(WARP_EVENT_END); + } + return 1; +} + +extern EntityData gUnk_080F61BC; + +void sub_StateChange_WindTribeTower_Entrance(void) { +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (CheckLocalFlagByBank(0x100, 0xd9)) { +#else + if (CheckLocalFlagByBank(0x100, 0xdc)) { +#endif + SetLocalFlag(0x90); + } + if (CheckKinstoneFused(0xf)) { + LoadRoomEntityList(&gUnk_080F61BC); + } + if (!CheckGlobalFlag(WARP_EVENT_END)) { + SetTileType(0x4072, 0x4c7, 1); + SetTileType(0x4072, 0x507, 1); + } + sub_08052CA4(8, 0, 0x1e8, 0x158); +} + +u32 sub_unk3_WindTribeTower_Floor2() { + return 1; +} + +extern EntityData gUnk_080F62E4; +extern EntityData gUnk_080F6324; + +void sub_StateChange_WindTribeTower_Floor2(void) { + if (!CheckGlobalFlag(WARP_EVENT_END)) { + LoadRoomEntityList(&gUnk_080F62E4); + } else { + if (CheckLocalFlag(99)) { + LoadRoomEntityList(&gUnk_080F6324); + } + } +} + +u32 sub_unk3_WindTribeTower_Floor3() { + return 1; +} + +void sub_StateChange_WindTribeTower_Floor3() { +} + +u32 sub_unk3_WindTribeTower_Floor4() { + return 1; +} + +extern EntityData gUnk_080F6564; +extern EntityData gUnk_080F6584; + +void sub_StateChange_WindTribeTower_Floor4(void) { + if (!CheckLocalFlag(0xb1)) { + LoadRoomEntityList(&gUnk_080F6564); + } else { + LoadRoomEntityList(&gUnk_080F6584); + } +} + +u32 sub_unk3_WindTribeTowerRoof_Main() { + return 1; +} + +extern EntityData gUnk_080F66AC; + +void sub_StateChange_WindTribeTowerRoof_Main(void) { + sub_0805B4D0(5); + if (CheckGlobalFlag(LV5_CLEAR) && !CheckLocalFlagByBank(0x100, 5)) { + LoadRoomEntityList(&gUnk_080F66AC); + } + sub_08052CA4(8, 0, 0x1e8, 0x158); +#ifndef EU + gArea.areaMetadata |= 0x80; +#endif +} + +u32 sub_unk3_Beanstalks_MountCrenel() { + return 1; +} + +void sub_StateChange_Beanstalks_MountCrenel() { +} + +u32 sub_unk3_Beanstalks_LakeHylia() { + return 1; +} + +void sub_StateChange_Beanstalks_LakeHylia() { +} + +u32 sub_unk3_Beanstalks_Ruins() { + return 1; +} + +void sub_StateChange_Beanstalks_Ruins() { +} + +u32 sub_unk3_Beanstalks_EasternHills() { + return 1; +} + +void sub_StateChange_Beanstalks_EasternHills() { +} + +u32 sub_unk3_Beanstalks_WesternWoods() { + return 1; +} + +void sub_StateChange_Beanstalks_WesternWoods() { +} + +u32 sub_unk3_Beanstalks_MountCrenelClimb() { + return 1; +} + +void sub_StateChange_Beanstalks_MountCrenelClimb() { +} + +u32 sub_unk3_Beanstalks_LakeHyliaClimb() { + return 1; +} + +void sub_StateChange_Beanstalks_LakeHyliaClimb() { +} + +u32 sub_unk3_Beanstalks_RuinsClimb() { + return 1; +} + +void sub_StateChange_Beanstalks_RuinsClimb() { +} + +u32 sub_unk3_Beanstalks_EasternHillsClimb() { + return 1; +} + +void sub_StateChange_Beanstalks_EasternHillsClimb() { +} + +u32 sub_unk3_Beanstalks_WesternWoodsClimb() { + return 1; +} + +void sub_StateChange_Beanstalks_WesternWoodsClimb() { +} + +u32 sub_unk3_HyruleField_WesternWoodSouth() { + return 1; +} + +void sub_StateChange_HyruleField_WesternWoodSouth() { + Manager18_Main(0); +} + +u32 sub_unk3_HyruleField_LinksHouseExterior(void) { +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0x6b)) { +#else + if (!CheckLocalFlag(0x6d)) { +#endif + DoFade(7, 256); + } + SetGlobalFlag(OUTDOOR); + return 1; +} + +extern EntityData gUnk_080F70A8; +extern EntityData gUnk_080F70D8; +extern EntityData gUnk_080F7088; + +void sub_StateChange_HyruleField_LinksHouseExterior(void) { + Manager18_Main(NULL); +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0x6b)) { +#else + if (!CheckLocalFlag(0x6d)) { +#endif + LoadRoomEntityList(&gUnk_080F70A8); + ClearGlobalFlag(ZELDA_CHASE); + } + if (!CheckGlobalFlag(TABIDACHI)) { + gArea.pMusicIndex = BGM_FESTIVAL_APPROACH; + } + if ((gSave.windcrests & 0x40000000) == 0) { + LoadRoomEntityList(&gUnk_080F70D8); + } + if (gSave.global_progress > 3) { + LoadRoomEntityList(&gUnk_080F7088); + } +} + +void sub_unk1_HyruleField_LinksHouseExterior(void) { + if ((gSave.windcrests & 0x40000000) == 0) { + LoadRoomEntityList(&gUnk_080F70D8); + } +} + +u32 sub_unk3_HyruleField_FromMinishWoods() { + return 1; +} + +void sub_StateChange_HyruleField_FromMinishWoods() { + Manager18_Main(NULL); +} + +u32 sub_unk3_HyruleField_FromMinishWoodsNorth() { + return 1; +} + +void sub_StateChange_HyruleField_FromMinishWoodsNorth() { + Manager18_Main(NULL); +} + +extern u32 gUnk_080F7680; + +u32 sub_unk3_HyruleField_Farmers(void) { + if (GetInventoryValue(ITEM_GUST_JAR) && !GetInventoryValue(ITEM_PACCI_CANE)) { + gRoomVars.field_0x6c[2] = &gUnk_080F7680; + } + return 1; +} + +extern EntityData gUnk_080F7500; +extern EntityData gUnk_080F7550; + +void sub_StateChange_HyruleField_Farmers(void) { + Manager18_Main(NULL); + if (gSave.global_progress > 3) { + LoadRoomEntityList(&gUnk_080F7500); + } + if (GetInventoryValue(ITEM_GUST_JAR) && !GetInventoryValue(ITEM_PACCI_CANE)) { + LoadRoomEntityList(&gUnk_080F7550); + SetTileType(0x4072, 0x311, 1); + SetTileType(0x4072, 0x351, 1); + SetTileType(0x4072, 0x3d9, 1); + SetTileType(0x4072, 0x419, 1); + } +} + +u32 sub_unk3_HyruleField_LonLonRanch() { + return 1; +} + +extern EntityData gUnk_080F77F0; +extern EntityData gUnk_080F77C0; +extern EntityData gUnk_080F7810; +extern EntityData gUnk_080F7860; +extern EntityData gUnk_080F78A0; + +void sub_StateChange_HyruleField_LonLonRanch(void) { + + Manager18_Main(0); + if (CheckLocalFlagByBank(0x200, 0x8f)) { + if (!CheckGlobalFlag(INLOCK)) { + LoadRoomEntityList(&gUnk_080F77C0); + } + } else if (GetInventoryValue(ITEM_EARTH_ELEMENT)) { + LoadRoomEntityList(&gUnk_080F77F0); + } + if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(ITEM_EARTH_ELEMENT)) { + LoadRoomEntityList(&gUnk_080F7810); + } + if (!CheckKinstoneFused(0x29)) { + LoadRoomEntityList(&gUnk_080F7860); + SetTile(0x4072, 0xd88, 1); + SetTile(0x4096, 0xdc8, 1); + } + if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { + LoadRoomEntityList(&gUnk_080F78A0); + } +} + +extern u32 gUnk_080F7CD0; +extern void sub_0804F5E8(); +extern u32 gUnk_080F7C80; +extern void sub_0804F4E4(); + +u32 sub_unk3_HyruleField_OutsideCastle(void) { + if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(0x11)) { + gRoomVars.field_0x6c[0] = &gUnk_080F7CD0; + gRoomVars.field_0x6c[7] = sub_0804F5E8; + } +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8a)) { +#else + if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8c)) { +#endif + gRoomVars.field_0x6c[0] = &gUnk_080F7C80; + gRoomVars.field_0x6c[7] = sub_0804F4E4; + gRoomVars.field_0x6c[2] = NULL; + } +#ifndef EU + if (CheckGlobalFlag(TABIDACHI)) { + ClearGlobalFlag(CASTLE_BGM); + } +#endif + return 1; +} + +void sub_0804F4E4() { + Manager18_Main(NULL); + sub_0804F578(); +} + +extern EntityData gUnk_080F7D70; + +void sub_StateChange_HyruleField_OutsideCastle(void) { + sub_0804F4E4(); +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0x89)) { +#else + if (!CheckLocalFlag(0x8b)) { +#endif + LoadRoomEntityList(&gUnk_080F7D70); + SetTileType(0x174, 0x7a2, 1); + SetTileType(0x174, 0x7a3, 1); + SetTileType(0x174, 0x7a5, 1); + SetTileType(0x174, 0x7a6, 1); + SetTileType(0x174, 0x7a7, 1); + } + if (!CheckGlobalFlag(TABIDACHI)) { +#ifdef EU + gArea.pMusicIndex = 0x10; +#else + gArea.pMusicIndex = 0x13; +#endif + } +} + +extern EntityData gUnk_080F7DC0; + +void sub_0804F578(void) { +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (!CheckLocalFlag(0x8c)) { +#else + if (!CheckLocalFlag(0x8e)) { +#endif + LoadRoomEntityList(&gUnk_080F7DC0); + } else { + SetTileType(0x37, 0x94a, 1); + SetTileType(0x37, 0x94b, 1); + SetTileType(0x37, 0x94c, 1); + SetTileType(0x37, 0x98a, 1); + SetTileType(0x37, 0x98b, 1); + SetTileType(0x37, 0x98c, 1); + } +} + +void sub_0804F5E8(void) { + sub_0804F4E4(); + SetTileType(0x1d3, 0xbde, 1); + SetTileType(0x1d6, 0xbe2, 1); + SetTileType(0x1d4, 0xc1f, 1); + SetTileType(0x1d5, 0xc20, 1); + SetTileType(0x1d6, 0xc5e, 1); + SetTileType(0x4072, 0xb9b, 1); + SetTileType(0x4072, 0xbdb, 1); + SetTileType(0x4072, 0xaa4, 1); + SetTileType(0x4072, 0xae4, 1); +} + +void sub_0804F680(Entity* parent, s32 x, s32 y) { + Entity* fx; + + fx = CreateFx(parent, FX_DEATH, 0); + if (fx != NULL) { + fx->x.HALF.HI = gRoomControls.roomOriginX + x; + fx->y.HALF.HI = gRoomControls.roomOriginY + y; + } +} + +void sub_0804F6A8(Entity* this) { + sub_0804F680(this, 0x1d8, 0x108); + sub_0804F680(this, 0x218, 0x188); +} + +void sub_0804F6C8(Entity* this) { + sub_0804F680(this, 0x1e8, 0x108); + sub_0804F680(this, 0x208, 0x188); +} + +void sub_0804F6E8(Entity* this) { + sub_0804F680(this, 0x1f8, 0x108); + sub_0804F680(this, 0x258, 0x138); + sub_0804F680(this, 0x1f8, 0x188); + sub_0804F680(this, 0x198, 0x158); +} + +void sub_0804F724(Entity* this) { + sub_0804F680(this, 0x208, 0x108); + sub_0804F680(this, 0x258, 0x148); + sub_0804F680(this, 0x1e8, 0x188); + sub_0804F680(this, 0x198, 0x148); +} + +void sub_0804F760(Entity* this) { + sub_0804F680(this, 0x218, 0x108); + sub_0804F680(this, 0x258, 0x158); + sub_0804F680(this, 0x1d8, 0x188); + sub_0804F680(this, 0x198, 0x138); +} + +void sub_0804F79C(Entity* parent) { + Entity* fx; + + fx = CreateFx(parent, FX_BIG_EXPLOSION, 0); + if (fx != NULL) { + fx->spriteRendering.b3 = 0; + fx->x.HALF.HI = gRoomControls.roomOriginX + 0x1b8; + fx->y.HALF.HI = gRoomControls.roomOriginY + 0x148; + } + fx = CreateFx(parent, FX_BIG_EXPLOSION, 0); + if (fx != NULL) { + fx->spriteRendering.b3 = 0; + fx->x.HALF.HI = gRoomControls.roomOriginX + 0x238; + fx->y.HALF.HI = gRoomControls.roomOriginY + 0x148; + } +} + +void sub_0804F808(void) { + SetTileType(0x1d3, 0x41d, 1); + SetTileType(0x1d3, 0x621, 1); +} + +void sub_0804F830(void) { + SetTileType(0x1d4, 0x41e, 1); + SetTileType(0x1d4, 0x620, 1); +} + +void sub_0804F854(void) { + SetTileType(0x1d5, 0x41f, 1); + SetTileType(0x1d4, 0x4e5, 1); + SetTileType(0x1d5, 0x61f, 1); + SetTileType(0x1d4, 0x559, 1); +} + +void sub_0804F89C(void) { + SetTileType(0x1d6, 0x420, 1); + SetTileType(0x1d5, 0x525, 1); + SetTileType(0x1d6, 0x61e, 1); + SetTileType(0x1d5, 0x519, 1); +} + +void sub_0804F8E0(void) { + SetTileType(0x1d3, 0x421, 1); + SetTileType(0x1d6, 0x565, 1); + SetTileType(0x1d3, 0x61d, 1); + SetTileType(0x1d6, 0x4d9, 1); +} + +void sub_0804F928(void) { + sub_0807BA8C(0x41d, 1); + sub_0807BA8C(0x621, 1); +} + +void sub_0804F944(void) { + sub_0807BA8C(0x41e, 1); + sub_0807BA8C(0x620, 1); +} + +void sub_0804F960(void) { + sub_0807BA8C(0x41f, 1); + sub_0807BA8C(0x4e5, 1); + sub_0807BA8C(0x61f, 1); + sub_0807BA8C(0x559, 1); +} + +void sub_0804F994(void) { + sub_0807BA8C(0x420, 1); + sub_0807BA8C(0x525, 1); + sub_0807BA8C(0x61e, 1); + sub_0807BA8C(0x519, 1); +} + +void sub_0804F9C8(void) { + sub_0807BA8C(0x421, 1); + sub_0807BA8C(0x565, 1); + sub_0807BA8C(0x61d, 1); + sub_0807BA8C(0x4d9, 1); +} + +u32 sub_unk3_HyruleField_OutsideCastleWest() { + return 1; +} + +extern EntityData gUnk_080F806C; + +void sub_StateChange_HyruleField_OutsideCastleWest(void) { + Manager18_Main(NULL); + if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { + LoadRoomEntityList(&gUnk_080F806C); + } +} + +u32 sub_unk3_HyruleField_TrilbyHighlands() { + return 1; +} + +extern EntityData gUnk_080F82E0; + +void sub_StateChange_HyruleField_TrilbyHighlands(void) { + Manager18_Main(NULL); +#if defined(JP) || defined(EU) || defined(DEMO_JP) + if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(ITEM_RED_SWORD) && !CheckLocalFlag(0x9b)) { +#else + if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(ITEM_RED_SWORD) && !CheckLocalFlag(0x9c)) { +#endif + LoadRoomEntityList(&gUnk_080F82E0); + } +} + +u32 sub_unk3_HyruleField_PercysHouse() { + return 1; +} + +extern EntityData gUnk_080F8430; + +void sub_StateChange_HyruleField_PercysHouse(void) { + Manager18_Main(NULL); + if (CheckKinstoneFused(0x21) && !CheckLocalFlagByBank(0x200, 0x42)) { + LoadRoomEntityList(&gUnk_080F8430); + } +} + +u32 sub_unk3_Caves_Boomerang() { + return 1; +} + +extern EntityData gUnk_080F85F8; +extern EntityData gUnk_080F85D8; + +void sub_StateChange_Caves_Boomerang(void) { + if (CheckGlobalFlag(SOUGEN_06_HASHIGO)) { + LoadRoomEntityList(&gUnk_080F85D8); + } else { + LoadRoomEntityList(&gUnk_080F85F8); + } + if (!GetInventoryValue(0xc)) { + ClearLocalFlag(8); + } +} + +u32 sub_unk3_Caves_ToGraveyard() { + return 1; +} + +void sub_StateChange_Caves_ToGraveyard() { +} + +u32 sub_unk3_Caves_2() { + return 1; +} + +void sub_StateChange_Caves_2() { +} + +u32 sub_unk3_Caves_3() { + return 1; +} + +void sub_StateChange_Caves_3() { +} + +u32 sub_unk3_Caves_4() { + return 1; +} + +void sub_StateChange_Caves_4() { +} + +u32 sub_unk3_Caves_5() { + return 1; +} + +void sub_StateChange_Caves_5() { +} + +u32 sub_unk3_Caves_6() { + return 1; +} + +void sub_StateChange_Caves_6() { +} + +u32 sub_unk3_Caves_KeeseChest() { + return 1; +} + +void sub_StateChange_Caves_KeeseChest() { +} + +u32 sub_unk3_Caves_FairyFountainTrilbyHighlands() { + return 1; +} + +void sub_StateChange_Caves_FairyFountainTrilbyHighlands() { +} + +u32 sub_unk3_Caves_FairyFountainLinksHouse() { + return 1; +} + +void sub_StateChange_Caves_FairyFountainLinksHouse() { +} + +u32 sub_unk3_Caves_A() { + return 1; +} + +void sub_StateChange_Caves_A() { +} + +u32 sub_unk3_Caves_HyruleTownWaterfall() { + return 1; +} + +void sub_StateChange_Caves_HyruleTownWaterfall() { +} + +u32 sub_unk3_Caves_LonLonRanch() { + return 1; +} + +void sub_StateChange_Caves_LonLonRanch() { +} + +u32 sub_unk3_Caves_LonLonRanchSecret() { + return 1; +} + +void sub_StateChange_Caves_LonLonRanchSecret(void) { + if (CheckLocalFlag(0x11)) { + SetRoomFlag(0); + SetRoomFlag(1); + ChangeLightLevel(0x100); + if (!CheckLocalFlag(0x12)) { + SetTileType(0x73, 0xcb, 1); + } + } +} + +u32 sub_unk3_Caves_TrilbyHighlands() { + return 1; +} + +void sub_StateChange_Caves_TrilbyHighlands() { +} + +u32 sub_unk3_Caves_LonLonRanchWallet() { + return 1; +} + +void sub_StateChange_Caves_LonLonRanchWallet() { +} + +u32 sub_unk3_Caves_RupeeLinksHouse() { + return 1; +} + +void sub_StateChange_Caves_RupeeLinksHouse() { +} + +u32 sub_unk3_Caves_RupeeTrilbyHighlands() { + return 1; +} + +void sub_StateChange_Caves_RupeeTrilbyHighlands() { +} + +u32 sub_unk3_Caves_FairyFountainMoleMitts() { + return 1; +} + +void sub_StateChange_Caves_FairyFountainMoleMitts() { +} + +u32 sub_unk3_Caves_KeeseChestSoutheastHyrule() { + return 1; +} +void sub_StateChange_Caves_KeeseChestSoutheastHyrule() { +} + +u32 sub_unk3_Caves_BottleBusinessScrub() { + return 1; +} + +void sub_StateChange_Caves_BottleBusinessScrub() { +} + +u32 sub_unk3_Caves_HeartPieceHallway() { + return 1; +} + +void sub_StateChange_Caves_HeartPieceHallway() { +} + +u32 sub_unk3_Caves_FairyFountainBoomerang() { + return 1; +} + +void sub_StateChange_Caves_FairyFountainBoomerang() { +} + +u32 sub_unk3_Caves_KinstoneBusinessScrub() { + return 1; +} + +void sub_StateChange_Caves_KinstoneBusinessScrub() { +} + +u32 sub_unk3_VeilFalls_Main() { + return 1; +} + +extern EntityData gUnk_080F9304; + +void sub_StateChange_VeilFalls_Main(void) { + if ((gSave.windcrests & 0x2000000) == 0) { + LoadRoomEntityList(&gUnk_080F9304); + } +} + +void sub_unk1_VeilFalls_Main(void) { + if ((gSave.windcrests & 0x2000000) == 0) { + LoadRoomEntityList(&gUnk_080F9304); + } +} + +u32 sub_unk3_VeilFallsCaves_Hallway2F() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_Hallway2F() { +} + +u32 sub_unk3_VeilFallsCaves_Hallway1F() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_Hallway1F() { +} + +u32 sub_unk3_VeilFallsCaves_SecretRoom() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_SecretRoom() { +} + +u32 sub_unk3_VeilFallsCaves_Entrance() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_Entrance() { +} + +u32 sub_unk3_VeilFallsCaves_Exit() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_Exit() { +} + +u32 sub_unk3_VeilFallsCaves_SecretChest() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_SecretChest() { +} + +u32 sub_unk3_VeilFallsCaves_SecretStaircases() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_SecretStaircases() { +} + +u32 sub_unk3_VeilFallsCaves_BlockPuzzle() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_BlockPuzzle() { +} + +u32 sub_unk3_VeilFallsCaves_RupeePath() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_RupeePath() { +} + +u32 sub_unk3_VeilFallsCaves_HeartPiece() { + return 1; +} + +void sub_StateChange_VeilFallsCaves_HeartPiece() { +} + +extern u32 gUnk_080F9BF8; + +u32 sub_unk3_VeilFallsTop_Main(void) { + if (!CheckKinstoneFused(0xe)) { + gRoomVars.field_0x6c[0] = &gUnk_080F9BF8; + } + return 1; +} + +void sub_StateChange_VeilFallsTop_Main() { + sub_0805B4D0(2); + sub_0806D0B0(0); +} + +u32 sub_unk3_47_0() { + return 1; +} + +void sub_StateChange_47_0() { +} + +u32 sub_unk3_47_1() { + return 1; +} + +void sub_StateChange_47_1() { +} + +u32 sub_unk3_47_2() { + return 1; +} + +void sub_StateChange_47_2() { +} + +u32 sub_unk3_47_3() { + return 1; +} + +void sub_StateChange_47_3() { +} + +u32 sub_unk3_47_4() { + return 1; +} + +void sub_StateChange_47_4() { +} + +u32 sub_unk3_TreeInteriors_WitchHut() { + return 1; +} + +extern EntityData gUnk_080F9FA8; +extern EntityData gUnk_080F9F88; + +void sub_StateChange_TreeInteriors_WitchHut(void) { + if (CheckKinstoneFused(0x14)) { + LoadRoomEntityList(&gUnk_080F9FA8); + } + if (!GetInventoryValue(ITEM_QST_MUSHROOM)) { + LoadRoomEntityList(&gUnk_080F9F88); + } +} + +u32 sub_0804FCD4() { + return 1; +} + +void nullsub_434() { +} + +u32 sub_0804FCDC() { + return 1; +} + +void nullsub_435() { +} + +u32 sub_0804FCE4() { + return 1; +} + +void nullsub_436() { +} + +u32 sub_0804FCEC() { + return 1; +} + +void nullsub_437() { +} + +u32 sub_0804FCF4() { + return 1; +} + +void nullsub_438() { +} + +u32 sub_0804FCFC() { + return 1; +} + +void nullsub_439() { +} + +u32 sub_0804FD04() { + return 1; +} + +void nullsub_440() { +} + +u32 sub_0804FD0C() { + return 1; +} + +void nullsub_441() { +} + +u32 sub_0804FD14() { + return 1; +} + +void nullsub_442() { +} + +u32 sub_0804FD1C() { + return 1; +} + +void nullsub_443() { +} + +u32 sub_0804FD24() { + return 1; +} + +void nullsub_444() { +} + +u32 sub_0804FD2C() { + return 1; +} + +void nullsub_445() { +} + +u32 sub_0804FD34() { + return 1; +} + +void nullsub_446() { +} + +u32 sub_0804FD3C() { + return 1; +} + +void nullsub_447() { +} + +u32 sub_0804FD44() { + return 1; +} + +void nullsub_448() { +} + +u32 sub_unk3_TreeInteriors_StairsToCarlov() { + return 1; +} + +void sub_StateChange_TreeInteriors_StairsToCarlov() { +} + +u32 sub_unk3_TreeInteriors_PercysTreehouse() { + return 1; +} + +extern EntityData gUnk_080FA5D0; + +void sub_StateChange_TreeInteriors_PercysTreehouse(void) { + if (!CheckKinstoneFused(0x21)) { + LoadRoomEntityList(&gUnk_080FA5D0); + } +} + +u32 sub_unk3_TreeInteriors_HeartPiece() { + return 1; +} +void sub_StateChange_TreeInteriors_HeartPiece() { +} + +u32 sub_unk3_TreeInteriors_StairsToBladeBrother() { + return 1; +} + +void sub_StateChange_TreeInteriors_StairsToBladeBrother() { +} + +u32 sub_unk3_TreeInteriors_14() { + return 1; +} + +void sub_StateChange_TreeInteriors_14() { +} + +u32 sub_unk3_TreeInteriors_BoomerangNorthwest() { + return 1; +} + +void sub_StateChange_TreeInteriors_BoomerangNorthwest() { +} + +u32 sub_unk3_TreeInteriors_BoomerangNortheast() { + return 1; +} + +void sub_StateChange_TreeInteriors_BoomerangNortheast() { +} + +u32 sub_unk3_TreeInteriors_BoomerangSouthwest() { + return 1; +} + +void sub_StateChange_TreeInteriors_BoomerangSouthwest() { +} + +u32 sub_unk3_TreeInteriors_BoomerangSoutheast() { + return 1; +} + +void sub_StateChange_TreeInteriors_BoomerangSoutheast() { +} + +u32 sub_unk3_TreeInteriors_HeartPieceSouthwestField() { + return 1; +} + +void sub_StateChange_TreeInteriors_HeartPieceSouthwestField() { +} + +u32 sub_unk3_TreeInteriors_StairsToFairyFountain() { + return 1; +} + +void sub_StateChange_TreeInteriors_StairsToFairyFountain() { +} + +u32 sub_unk3_TreeInteriors_StairsToWalletFairy() { + return 1; +} + +void sub_StateChange_TreeInteriors_StairsToWalletFairy() { +} + +u32 sub_unk3_TreeInteriors_1C() { + return 1; +} + +void sub_StateChange_TreeInteriors_1C() { +} + +u32 sub_unk3_TreeInteriors_StairsToBusinessScrub() { + return 1; +} + +void sub_StateChange_TreeInteriors_StairsToBusinessScrub() { +} + +u32 sub_unk3_TreeInteriors_1E() { + return 1; +} + +void sub_StateChange_TreeInteriors_1E() { +} + +u32 sub_unk3_TreeInteriors_1F() { + return 1; +} + +void sub_StateChange_TreeInteriors_1F() { +} + +extern u32 gUnk_080FAD48; + +u32 sub_unk3_MtCrenel_MountainTop(void) { + if (CheckGlobalFlag(ENDING)) { + gRoomVars.field_0x6c[0] = &gUnk_080FAD48; + gRoomVars.field_0x6c[2] = NULL; + } + return 1; +} + +extern EntityData gUnk_080FACB8; + +void sub_StateChange_MtCrenel_MountainTop(void) { + if (CheckGlobalFlag(ENDING)) { + gArea.pMusicIndex = gArea.musicIndex; + } else { + LoadRoomEntityList(&gUnk_080FACB8); + } + sub_0805B4D0(0); + sub_08059994(); +} + +void sub_unk1_MtCrenel_MountainTop() { + sub_0805B4D0(0); +} + +u32 sub_unk3_MtCrenel_WallClimb() { + return 1; +} + +void sub_StateChange_MtCrenel_WallClimb() { +} + +u32 sub_unk3_MtCrenel_CaveOfFlamesEntrance() { + return 1; +} + +extern EntityData gUnk_080FAFE4; +extern EntityData gUnk_080FB004; + +void sub_StateChange_MtCrenel_CaveOfFlamesEntrance(void) { + sub_0805B4D0(1); + if (CheckGlobalFlag(LV2_CLEAR) && !CheckLocalFlag(LV1_CLEAR)) { + LoadRoomEntityList(&gUnk_080FAFE4); + } + if ((gSave.windcrests & 0x1000000) == 0) { + LoadRoomEntityList(&gUnk_080FB004); + } + if (GetInventoryValue(0x2)) { + SetGlobalFlag(WHITE_SWORD_END); + } +} + +void sub_unk1_MtCrenel_CaveOfFlamesEntrance(void) { + if ((gSave.windcrests & 0x1000000) == 0) { + LoadRoomEntityList(&gUnk_080FB004); + } +} + +u32 sub_unk3_MtCrenel_GustJarShortcut() { + return 1; +} + +void sub_StateChange_MtCrenel_GustJarShortcut() { +} + +u32 sub_unk3_MtCrenel_Entrance() { + return 1; +} + +void sub_StateChange_MtCrenel_Entrance(void) { +#if defined(USA) || defined(DEMO_USA) || defined(DEMO_JP) + SetTileType(0x176, 0x66f, 1); +#endif +} + +u32 sub_unk3_CrenelCaves_BlockPushing() { + return 1; +} + +void sub_StateChange_CrenelCaves_BlockPushing() { +} + +u32 sub_unk3_CrenelCaves_PillarCave() { + return 1; +} + +void sub_StateChange_CrenelCaves_PillarCave() { +} + +u32 sub_unk3_CrenelCaves_BridgeSwitch() { + return 1; +} + +void sub_StateChange_CrenelCaves_BridgeSwitch() { +} + +u32 sub_unk3_CrenelCaves_ExitToMines() { + return 1; +} + +void sub_StateChange_CrenelCaves_ExitToMines() { +} + +u32 sub_unk3_CrenelCaves_GripRing() { + return 1; +} + +void sub_StateChange_CrenelCaves_GripRing() { +} + +u32 sub_unk3_CrenelCaves_FairyFountain() { + return 1; +} + +void sub_StateChange_CrenelCaves_FairyFountain() { +} + +u32 sub_unk3_CrenelCaves_SpinyChuPuzzle() { + return 1; +} + +void sub_StateChange_CrenelCaves_SpinyChuPuzzle() { +} + +u32 sub_unk3_CrenelCaves_ChuchuPotChest() { + return 1; +} + +void sub_StateChange_CrenelCaves_ChuchuPotChest() { +} + +u32 sub_unk3_CrenelCaves_WaterHeartPiece() { + return 1; +} + +void sub_StateChange_CrenelCaves_WaterHeartPiece() { +} + +u32 sub_unk3_CrenelCaves_RupeeFairyFountain() { + return 1; +} + +void sub_StateChange_CrenelCaves_RupeeFairyFountain() { +} + +u32 sub_unk3_CrenelCaves_HelmasaurHallway() { + return 1; +} + +void sub_StateChange_CrenelCaves_HelmasaurHallway() { +} + +u32 sub_unk3_CrenelCaves_MushroomKeese() { + return 1; +} + +void sub_StateChange_CrenelCaves_MushroomKeese() { +} + +u32 sub_unk3_CrenelCaves_LadderToGreenWater() { + return 1; +} + +void sub_StateChange_CrenelCaves_LadderToGreenWater() { +} + +u32 sub_unk3_CrenelCaves_BombBusinessScrub() { + return 1; +} + +void sub_StateChange_CrenelCaves_BombBusinessScrub() { +} + +u32 sub_unk3_CrenelCaves_Hermit() { + return 1; +} + +void sub_StateChange_CrenelCaves_Hermit(void) { + if (!CheckLocalFlag(0x70)) { + SetLocalFlag(0x70); + } +} + +u32 sub_unk3_CrenelCaves_HintScrub() { + return 1; +} + +void sub_StateChange_CrenelCaves_HintScrub() { +} + +u32 sub_unk3_CrenelCaves_ToGrayblade() { + return 1; +} + +void sub_StateChange_CrenelCaves_ToGrayblade() { +} diff --git a/src/save.c b/src/save.c index 1f3102b2..177ad460 100644 --- a/src/save.c +++ b/src/save.c @@ -2,6 +2,7 @@ #include "gba/eeprom.h" #include "audio.h" #include "menu.h" +#include "main.h" #include "functions.h" typedef struct SaveFileStatus { diff --git a/src/sub_08050008.c b/src/sub_08050008.c deleted file mode 100644 index 4124df8f..00000000 --- a/src/sub_08050008.c +++ /dev/null @@ -1,8 +0,0 @@ -#include "global.h" -#include "utils.h" -#include "structures.h" - -void sub_08050008() { - MemClear(&gUnk_020354C0, sizeof(gUnk_020354C0)); - gFadeControl.mask = 0xFFFFFFFF; -}