Extract some map data definitions

This commit is contained in:
octorock 2023-06-10 15:12:51 +02:00
parent 99c0d42297
commit 551cb72093
88 changed files with 1554 additions and 2327 deletions

View File

@ -1,274 +0,0 @@
.syntax unified
.text
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
ldr r0, _0806239C @ =gPlayerEntity
mov r8, r0
ldrh r1, [r0, #0x2e]
ldr r3, _080623A0 @ =0xFFFF0000
adds r0, r3, #0
ands r0, r5
orrs r0, r1
mov r2, r8
ldrh r1, [r2, #0x32]
lsls r1, r1, #0x10
ldr r2, _080623A4 @ =0x0000FFFF
ands r0, r2
adds r5, r0, #0
orrs r5, r1
mov r1, r8
ldrh r0, [r1, #0x36]
ands r3, r6
orrs r3, r0
ldr r0, _080623A8 @ =gPlayerState
adds r0, #0xa8
ldrb r0, [r0]
lsls r0, r0, #0x10
ldr r2, _080623AC @ =0xFF00FFFF
ands r2, r3
orrs r2, r0
ldrb r1, [r1, #0x14]
movs r0, #0x3f
ands r1, r0
lsls r1, r1, #0x18
ldr r0, _080623B0 @ =0xC0FFFFFF
ands r0, r2
orrs r0, r1
mov r1, r8
adds r1, #0x38
ldrb r1, [r1]
lsls r1, r1, #0x1e
ldr r2, _080623B4 @ =0x3FFFFFFF
ands r0, r2
adds r6, r0, #0
orrs r6, r1
ldr r4, [r7, #0x64]
ldrb r0, [r4, #6]
cmp r0, #0x16
bne _080623BE
lsrs r0, r6, #0x10
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x16
beq _080623BE
movs r2, #0x2e
ldrsh r1, [r7, r2]
mov r3, r8
movs r2, #0x2e
ldrsh r0, [r3, r2]
subs r2, r1, r0
movs r0, #0x32
ldrsh r3, [r7, r0]
mov sb, r3
mov r1, r8
movs r3, #0x32
ldrsh r0, [r1, r3]
mov r3, sb
subs r1, r3, r0
cmp r2, #0
bge _08062382
rsbs r2, r2, #0
_08062382:
cmp r1, #0
bge _08062388
rsbs r1, r1, #0
_08062388:
cmp r2, #0x78
bgt _08062390
cmp r1, #0x50
ble _080623B8
_08062390:
adds r1, r7, #0
adds r1, #0x68
movs r0, #0
strb r0, [r1]
b _080624F8
.align 2, 0
_0806239C: .4byte gPlayerEntity
_080623A0: .4byte 0xFFFF0000
_080623A4: .4byte 0x0000FFFF
_080623A8: .4byte gPlayerState
_080623AC: .4byte 0xFF00FFFF
_080623B0: .4byte 0xC0FFFFFF
_080623B4: .4byte 0x3FFFFFFF
_080623B8:
adds r0, r7, #0
bl sub_0806252C
_080623BE:
movs r0, #0
mov sb, r0
ldr r0, [r4]
cmp r5, r0
bne _080623CE
ldr r0, [r4, #4]
cmp r6, r0
beq _08062410
_080623CE:
ldr r4, [r7, #0x64]
adds r4, #0x90
movs r1, #0x69
adds r1, r1, r7
mov r8, r1
adds r3, r7, #0
adds r3, #0x38
movs r2, #0x58
adds r2, r2, r7
mov ip, r2
movs r2, #0x12
_080623E4:
ldr r0, [r4]
ldr r1, [r4, #4]
str r0, [r4, #8]
str r1, [r4, #0xc]
subs r4, #8
subs r2, #1
cmp r2, #0
bge _080623E4
ldr r4, [r7, #0x64]
str r5, [r4]
str r6, [r4, #4]
movs r0, #4
mov sb, r0
mov r2, r8
ldrb r1, [r2]
movs r0, #0
ldrsb r0, [r2, r0]
cmp r0, #0
ble _08062484
subs r0, r1, #1
strb r0, [r2]
b _08062484
_08062410:
adds r4, #0x98
movs r3, #4
ldrsh r0, [r4, r3]
cmp r0, #0
bge _08062442
ldr r4, [r7, #0x64]
adds r4, #0x90
movs r0, #0x69
adds r0, r0, r7
mov r8, r0
adds r3, r7, #0
adds r3, #0x38
movs r1, #0x58
adds r1, r1, r7
mov ip, r1
movs r2, #0x12
_08062430:
ldr r0, [r4]
ldr r1, [r4, #4]
str r0, [r4, #8]
str r1, [r4, #0xc]
subs r4, #8
subs r2, #1
cmp r2, #0
bge _08062430
b _08062480
_08062442:
ldr r1, _080624E8 @ =gPlayerEntity
movs r3, #0x2e
ldrsh r0, [r1, r3]
movs r2, #0x32
ldrsh r1, [r1, r2]
ldrh r2, [r4]
ldrh r3, [r4, #2]
bl sub_080041E8
lsrs r0, r0, #4
movs r3, #0x69
adds r3, r3, r7
mov r8, r3
adds r3, r7, #0
adds r3, #0x38
movs r1, #0x58
adds r1, r1, r7
mov ip, r1
cmp r0, #0x18
ble _08062484
ldr r4, [r7, #0x64]
adds r4, #0x90
movs r2, #0x12
_08062470:
ldr r0, [r4]
ldr r1, [r4, #4]
str r0, [r4, #8]
str r1, [r4, #0xc]
subs r4, #8
subs r2, #1
cmp r2, #0
bge _08062470
_08062480:
movs r2, #4
mov sb, r2
_08062484:
ldr r4, [r7, #0x64]
adds r4, #0x98
ldrh r0, [r4]
strh r0, [r7, #0x2e]
ldrh r0, [r4, #2]
strh r0, [r7, #0x32]
ldrh r0, [r4, #4]
strh r0, [r7, #0x36]
ldrb r0, [r4, #7]
lsls r0, r0, #0x1a
lsrs r0, r0, #0x1a
strb r0, [r7, #0x14]
ldrb r0, [r4, #7]
lsrs r0, r0, #6
strb r0, [r3]
mov r1, r8
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
ble _080624B2
subs r0, r2, #1
strb r0, [r1]
_080624B2:
mov r2, sb
ldrb r0, [r7, #0x14]
lsrs r0, r0, #1
add sb, r0
ldrb r0, [r7, #0xa]
cmp r0, #6
bne _080624C4
movs r3, #0x10
add sb, r3
_080624C4:
mov r0, ip
ldrb r0, [r0]
cmp sb, r0
beq _080624EC
cmp r2, #0
bne _080624D8
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bgt _080624EC
_080624D8:
adds r0, r7, #0
mov r1, sb
bl InitAnimationForceUpdate
movs r0, #0x1e
mov r1, r8
strb r0, [r1]
b _080624F2
.align 2, 0
_080624E8: .4byte gPlayerEntity
_080624EC:
adds r0, r7, #0
bl UpdateAnimationSingleFrame
_080624F2:
adds r0, r7, #0
bl sub_0800451C
_080624F8:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.syntax divided

View File

@ -100,7 +100,7 @@ _0807A3AA:
lsrs r4, r7, #1
adds r0, r4, #0
movs r1, #1
bl sub_080B1B44
bl GetCollisionData
cmp r0, #0
beq _0807A3FC
lsls r0, r4, #0x10
@ -138,7 +138,7 @@ _0807A400:
lsrs r4, r6, #1
adds r0, r4, #0
movs r1, #1
bl sub_080B1B44
bl GetCollisionData
cmp r0, #0
beq _0807A44C
lsls r0, r4, #0x10
@ -195,7 +195,7 @@ _0807A46E:
adds r7, r0, #0
lsrs r0, r7, #1
movs r1, #2
bl sub_080B1B44
bl GetCollisionData
cmp r0, #0
bne _0807A4F2
adds r0, r4, #0
@ -206,7 +206,7 @@ _0807A46E:
lsrs r0, r6, #1
movs r1, #2
_0807A4A0:
bl sub_080B1B44
bl GetCollisionData
cmp r0, #0
beq _0807A4EC
b _0807A4F2
@ -224,7 +224,7 @@ _0807A4B0:
_0807A4C2:
lsrs r0, r7, #1
movs r1, #1
bl sub_080B1B44
bl GetCollisionData
cmp r0, #0
bne _0807A4F2
mov r1, sb

View File

@ -210,7 +210,7 @@ _080040F2:
movs r3, #0x38
ldrb r3, [r0, r3]
lsls r3, r3, #2
ldr r4, _08004380 @ =gUnk_08000248
ldr r4, _08004380 @ =gCollisionDataPtrs
ldr r3, [r4, r3]
ldrb r4, [r3, r2]
pop {r2, r3}
@ -403,7 +403,7 @@ _0800423C:
movs r4, #0x38
ldrb r4, [r0, r4]
lsls r4, r4, #3
ldr r3, _08004394 @ =gUnk_08000228
ldr r3, _08004394 @ =gMapDataPtrs
adds r3, r3, r4
ldr r4, [r3]
ldrh r1, [r4, r2]
@ -610,12 +610,12 @@ _08004370: .4byte 0x0000011E
_08004374: .4byte gRoomControls + 6
_08004378: .4byte gRoomControls + 8
_0800437C: .4byte 0x000003F0
_08004380: .4byte gUnk_08000248
_08004380: .4byte gCollisionDataPtrs
_08004384: .4byte 0x000FFFFF
_08004388: .4byte 0x00080000
_0800438C: .4byte 0x0000EE00
_08004390: .4byte 0x00001FFF
_08004394: .4byte gUnk_08000228
_08004394: .4byte gMapDataPtrs
_08004398: .4byte 0x00004000
_0800439C: .4byte gSpritePtrs
_080043A0: .4byte gSpritePtrs

View File

@ -10,6 +10,7 @@
.global RAMFUNCS_BASE
RAMFUNCS_BASE::
@ Called when gUpdateVisibleTiles == 1
sub_080B197C:: @ 0x080B197C
push {r4, r5, r6}
ldr r2, _080B19C0 @ =gRoomControls
@ -107,7 +108,7 @@ arm_sub_080B1A58:
arm_func_start arm_GetTileType
arm_GetTileType: @ 0x080B1A60
ldr r2, _080B1C1C @ =gUnk_08000228
ldr r2, _080B1C1C @ =gMapDataPtrs
_080B1A64:
add r2, r2, r1, lsl #3
ldr r1, [r2]
@ -180,8 +181,8 @@ arm_sub_080B1B2C:
arm_sub_080B1B3C:
add r0, r0, r1, lsl #6
mov r1, r2
arm_sub_080B1B44:
ldr r2, _080B1C2C @ =gUnk_08000248
arm_GetCollisionData:
ldr r2, _080B1C2C @ =gCollisionDataPtrs
ldr r1, [r2, r1, lsl #2]
ldrb r0, [r1, r0]
bx lr
@ -198,7 +199,7 @@ arm_sub_080B1B54: @ 0x080B1B54
arm_sub_080B1B68: @ 0x080B1B68
lsrs r2, r0, #0xe
bxne lr
ldr r2, _080B1C38 @ =gUnk_0800022C
ldr r2, _080B1C38 @ =gMetatileTypesPtrs
ldr r1, [r2, r1, lsl #3]
lsl r0, r0, #1
ldrh r0, [r1, r0]
@ -251,14 +252,14 @@ sub_080B1BCC: @ 0x080B1BCC
_080B1C10: .4byte gRoomControls
_080B1C14: .4byte gUnk_08000258
_080B1C18: .4byte gRoomControls
_080B1C1C: .4byte gUnk_08000228
_080B1C1C: .4byte gMapDataPtrs
_080B1C20: .4byte gRoomControls
_080B1C24: .4byte gUnk_08000278
_080B1C28: .4byte gRoomControls
_080B1C2C: .4byte gUnk_08000248
_080B1C2C: .4byte gCollisionDataPtrs
_080B1C30: .4byte gUnk_080B37A0
_080B1C34: .4byte gUnk_080B7910
_080B1C38: .4byte gUnk_0800022C
_080B1C38: .4byte gMetatileTypesPtrs
_080B1C3C: .4byte gUnk_08000360
_080B1C40: .4byte gUnk_080B7A3E
_080B1C44: .4byte gUnk_08000360
@ -1697,7 +1698,7 @@ _080B1FBC:
mov r3, #0
bl arm_CheckBitsEU
mov r5, #0
ldr r4, _080B2194 @ =0x03003DF8
ldr r4, _080B2194 @ =gInteractableObjects
_080B1FECEU:
ldr r0, [r4, #8]
cmp r0, #0
@ -1813,7 +1814,7 @@ _080B1FBC:
mov r3, #0
bl arm_CheckBitsEU
mov r5, #0
ldr r4, _080B2194 @ =0x03003DF8
ldr r4, _080B2194 @ =gInteractableObjects
_080B1FECEU:
ldr r0, [r4, #8]
cmp r0, #0
@ -1940,8 +1941,8 @@ _080B2A64: .4byte gOAMControls
_080B2A68: .4byte ram_0x80b2be8
_080B2A6C: .4byte 0x3E003F00
.ifdef EU
_080B2194: .4byte 0x03003DF8 @TODO pointer?
_080B2194: .4byte gInteractableObjects
.endif
.ifdef DEMO_JP @ TODO deduplicate same as EU
_080B2194: .4byte 0x03003DF8 @TODO pointer?
_080B2194: .4byte gInteractableObjects
.endif

View File

@ -205,7 +205,7 @@ sub_080086D8: @ 0x080086D8
movs r3, #0x38
ldrb r3, [r2, r3]
lsls r3, r3, #2
ldr r1, _080088C4 @ =gUnk_08000248
ldr r1, _080088C4 @ =gCollisionDataPtrs
ldr r1, [r1, r3]
ldrb r2, [r0, r1]
push {r2}
@ -451,7 +451,7 @@ _080088B4: .4byte gRoomControls + 6
_080088B8: .4byte gRoomControls + 8
_080088BC: .4byte gPlayerEntity
_080088C0: .4byte 0x000003F0
_080088C4: .4byte gUnk_08000248
_080088C4: .4byte gCollisionDataPtrs
_080088C8: .4byte gPlayerState
_080088CC: .4byte gUnk_0800823C
_080088D0: .4byte gUnk_08007DF4

View File

@ -11,13 +11,13 @@ UpdateScrollVram: @ 0x08000108
ldr r0, _080001E8 @ =gUpdateVisibleTiles
ldrb r1, [r0]
lsls r1, r1, #2
beq _08000136
add r4, pc, #0x20
ldr r4, [r4, r1]
beq _08000136 @ jump if gUpdateVisibleTiles == 0
add r4, pc, #0x20 @ r4 = 0x8000134
ldr r4, [r4, r1] @ r4 = r4[gUpdateVisibleTiles] (1: _08000138, 2: _0800013C, 3: _08000140, 4:_08000144)
ldr r0, _080001EC @ =gMapBottom
ldr r0, [r0]
cmp r0, #0
beq _08000126
beq _08000126 @ jump if gMapBottom.bgSettings == NULL
ldr r0, _080001F0 @ =gMapDataBottomSpecial
ldr r1, _080001F4 @ =gBG1Buffer+0x40
bl _call_via_r4
@ -25,7 +25,7 @@ _08000126:
ldr r0, _080001F8 @ =gMapTop
ldr r0, [r0]
cmp r0, #0
beq _08000136
beq _08000136 @ jump if gMapTop.bgSettings == NULL
ldr r0, _080001FC @ =gMapDataTopSpecial
ldr r1, _08000200 @ =gBG2Buffer+0x40
bl _call_via_r4
@ -37,10 +37,10 @@ _0800013C: .4byte sub_0807D280 @ layer 1, 2, 3?
_08000140: .4byte sub_0807D46C
_08000144: .4byte sub_0807D6D8
thumb_func_start sub_08000148
sub_08000148: @ 0x08000148
thumb_func_start SetCollisionData
SetCollisionData: @ 0x08000148
lsls r2, r2, #2
ldr r3, _08000204 @ =gUnk_08000248
ldr r3, _08000204 @ =gCollisionDataPtrs
ldr r2, [r3, r2]
strb r0, [r2, r1]
bx lr
@ -58,7 +58,7 @@ CloneTile: @ 0x08000152
SetTile: @ r0 = tile type, r1, = tile position, r2 = layer
push {r4-r7, lr}
lsls r3, r2, #3
ldr r4, _08000208 @ =gUnk_08000228
ldr r4, _08000208 @ =gMapDataPtrs
ldr r5, [r4, r3]
lsls r6, r1, #1
ldrh r7, [r5, r6]
@ -74,7 +74,7 @@ SetTile: @ r0 = tile type, r1, = tile position, r2 = layer
ldr r3, _08000214 @ =gUnk_080B79A7
ldrb r0, [r3, r4]
lsrs r2, r2, #2
bl sub_08000148
bl SetCollisionData
pop {r0, r1} @ tilepos, layer
push {r0, r1}
bl DeleteLoadedTileEntity
@ -94,7 +94,7 @@ _0800019A:
ldr r3, _0800021C @ =gUnk_080B3E80
ldrb r0, [r3, r4]
lsrs r2, r2, #2
bl sub_08000148
bl SetCollisionData
pop {r0, r1}
bl DeleteLoadedTileEntity
pop {r4, r5, r6, r7, pc}
@ -115,7 +115,7 @@ sub_080001D0: @ 0x080001D0
non_word_aligned_thumb_func_start GetTileIndex
GetTileIndex: @ 0x080001DA
lsls r1, r1, #3
ldr r2, _08000224 @ =gUnk_08000228
ldr r2, _08000224 @ =gMapDataPtrs
ldr r1, [r2, r1]
lsls r0, r0, #1
ldrh r0, [r1, r0]
@ -128,44 +128,45 @@ _080001F4: .4byte gBG1Buffer+0x40
_080001F8: .4byte gMapTop
_080001FC: .4byte gMapDataTopSpecial
_08000200: .4byte gBG2Buffer+0x40
_08000204: .4byte gUnk_08000248
_08000208: .4byte gUnk_08000228
_08000204: .4byte gCollisionDataPtrs
_08000208: .4byte gMapDataPtrs
_0800020C: .4byte 0x00004000
_08000210: .4byte gUnk_080B7910
_08000214: .4byte gUnk_080B79A7
_08000218: .4byte gUnk_080B37A0
_0800021C: .4byte gUnk_080B3E80
_08000220: .4byte gUnk_08000278
_08000224: .4byte gUnk_08000228
gUnk_08000228::
.4byte gMapBottom+0x0004
gUnk_0800022C::
_08000224: .4byte gMapDataPtrs
gMapDataPtrs::
.4byte gMapBottom+0x0004 @ layer 0
gMetatileTypesPtrs::
.4byte gMapBottom+0x5004
.4byte gMapBottom+0x0004
.4byte gMapBottom+0x0004 @ layer 1
.4byte gMapBottom+0x5004
.4byte gMapTop+0x0004
.4byte gMapTop+0x0004 @ layer 2
.4byte gMapTop+0x5004
.4byte gMapBottom+0x0004
.4byte gMapBottom+0x0004 @ layer 3
.4byte gMapBottom+0x5004
gUnk_08000248::
.4byte gMapBottom+0x2004
.4byte gMapBottom+0x2004
.4byte gMapTop+0x2004
.4byte gMapBottom+0x2004
gUnk_08000258::
.4byte gMapBottom+0x3004
gCollisionDataPtrs::
.4byte gMapBottom+0x2004 @ layer 0
.4byte gMapBottom+0x2004 @ layer 1
.4byte gMapTop+0x2004 @ layer 2
.4byte gMapBottom+0x2004 @ layer 3
gUnk_08000258:: @ mapDataClone and metatileTypes
.4byte gMapBottom+0x3004 @ layer 0
.4byte gMapBottom+0x5004
.4byte gMapBottom+0x3004
.4byte gMapBottom+0x3004 @ layer 1
.4byte gMapBottom+0x5004
.4byte gMapTop+0x3004
.4byte gMapTop+0x3004 @ layer 2
.4byte gMapTop+0x5004
.4byte gMapBottom+0x3004
.4byte gMapBottom+0x3004 @ layer 3
.4byte gMapBottom+0x5004
gUnk_08000278:: @ unkData3 for layers
.4byte gMapBottom+0xb004
.4byte gMapBottom+0xb004
.4byte gMapTop+0xb004
.4byte gMapBottom+0xb004
.4byte gMapBottom+0xb004 @ layer 0
.4byte gMapBottom+0xb004 @ layer 1
.4byte gMapTop+0xb004 @ layer 2
.4byte gMapBottom+0xb004 @ layer 3
@ call 0x80B19CC
@ ========
@ -364,9 +365,9 @@ sub_080B1B3C: @ 0x080002DC
@ call 0x080B1B44
@ ========
@ Unused? Doesn't seem to be called by anything in Ghidra.
thumb_func_start sub_080B1B44
sub_080B1B44: @ 0x080002E0
ldr r3, _0800034C @ =ram_sub_080B1B44
thumb_func_start GetCollisionData
GetCollisionData: @ 0x080002E0
ldr r3, _0800034C @ =ram_GetCollisionData
bx r3
@ call 0x080B1B54
@ -423,7 +424,7 @@ _0800033C: .4byte ram_sub_080B1B0C
_08000340: .4byte ram_sub_080B1B18
_08000344: .4byte ram_sub_080B1B2C
_08000348: .4byte ram_sub_080B1B3C
_0800034C: .4byte ram_sub_080B1B44
_0800034C: .4byte ram_GetCollisionData
_08000350: .4byte ram_sub_080B1B54
_08000354: .4byte ram_sub_080B1B68
_08000358: .4byte ram_sub_080B1B84

View File

@ -13324,814 +13324,6 @@
"start": 1085024,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108E6C.bin",
"start": 1085036,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108E78_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1082828
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108E78_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085048,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108E98_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1082860
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108E98_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085080,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108EA4.bin",
"start": 1085092,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108EC4_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1082904
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108EC4_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085124,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108ED0_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1082916
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108ED0_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085136,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108EF0_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1082948
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108EF0_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085168,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108EFC_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1082960
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108EFC_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085180,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108F1C_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1082992
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108F1C_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085212,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108F28_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083004
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108F28_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085224,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108F48_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083036
},
"size": 4
},
{
"path": "data_08108E6C/gUnk_08108F48_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085256,
"size": 4
},
{
"path": "data_08108E6C/gUnk_08108F48_2_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083040
},
"size": 8
},
{
"path": "data_08108E6C/gUnk_08108F48_3_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085260,
"size": 8
},
{
"path": "data_08108E6C/gUnk_08108F54_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083048
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108F54_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085268,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108F74_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083080
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108F74_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085300,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108F80_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083092
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108F80_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085312,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108FA0_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083124
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108FA0_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085344,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108FAC_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083136
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108FAC_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085356,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108FCC_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083168
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108FCC_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085388,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108FD8_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083180
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108FD8_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085400,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08108FF8_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083212
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08108FF8_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085432,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109004_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083224
},
"size": 1
},
{
"path": "data_08108E6C/gUnk_08109004_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085444,
"size": 1
},
{
"path": "data_08108E6C/gUnk_08109004_2_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083225
},
"size": 20
},
{
"path": "data_08108E6C/gUnk_08109004_3_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085445,
"size": 20
},
{
"path": "data_08108E6C/gUnk_08109004_4_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083245
},
"size": 3
},
{
"path": "data_08108E6C/gUnk_08109004_5_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085465,
"size": 3
},
{
"path": "data_08108E6C/gUnk_08109024_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083256
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109024_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085476,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109030_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083268
},
"size": 3
},
{
"path": "data_08108E6C/gUnk_08109030_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085488,
"size": 3
},
{
"path": "data_08108E6C/gUnk_08109030_2_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083271
},
"size": 21
},
{
"path": "data_08108E6C/gUnk_08109030_3_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085491,
"size": 21
},
{
"path": "data_08108E6C/gUnk_08109050_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083300
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109050_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085520,
"size": 12
},
{
"path": "data_08108E6C/gUnk_0810905C_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083312
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_0810905C_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085532,
"size": 24
},
{
"path": "data_08108E6C/gUnk_0810907C_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083344
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_0810907C_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085564,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109088_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083356
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08109088_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085576,
"size": 24
},
{
"path": "data_08108E6C/gUnk_081090A8_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083388
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_081090A8_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085608,
"size": 12
},
{
"path": "data_08108E6C/gUnk_081090B4_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083400
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_081090B4_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085620,
"size": 24
},
{
"path": "data_08108E6C/gUnk_081090D4_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083432
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_081090D4_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085652,
"size": 12
},
{
"path": "data_08108E6C/gUnk_081090E0_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083444
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_081090E0_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085664,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08109100_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083476
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109100_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085696,
"size": 12
},
{
"path": "data_08108E6C/gUnk_0810910C_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083488
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_0810910C_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085708,
"size": 24
},
{
"path": "data_08108E6C/gUnk_0810912C_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083520
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_0810912C_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085740,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109140_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083540
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08109140_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085760,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08109160_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083572
},
"size": 24
},
{
"path": "data_08108E6C/gUnk_08109160_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085792,
"size": 24
},
{
"path": "data_08108E6C/gUnk_08109180_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1083604
},
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109180_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1085824,
"size": 12
},
{
"path": "data_08108E6C/gUnk_08109230.bin",
"start": 1086000,

View File

@ -72,11 +72,16 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_0.bin",
"path": "maps/areas/000_MinishWoods/rooms/00_Main/gCaveBorder_LakeWoods_outside.bin.lz",
"start": 3344536,
"size": 2176,
"type": "unknown",
"TODO": "Two metatilemaps of size 63x63"
"size": 1010,
"type": "metatilemap"
},
{
"path": "maps/areas/000_MinishWoods/rooms/00_Main/gCaveBorder_LakeWoods_unused.bin.lz",
"start": 3345546,
"size": 1166,
"type": "metatilemap"
},
{
"path": "maps/areas/011_LakeHylia/tilesets/0/gAreaTileset_LakeHylia_0_0.4bpp.lz",
@ -133,11 +138,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_1.bin",
"path": "maps/areas/011_LakeHylia/rooms/00_Main/gCaveBorder_LakeHyliaNorth_outside.bin.lz",
"start": 3388144,
"size": 760,
"type": "unknown",
"TODO": "1 metatilemap 48x60"
"type": "metatilemap"
},
{
"path": "maps/areas/011_LakeHylia/rooms/01_Beanstalk/gAreaRoomMap_LakeHylia_Beanstalk_bottom.bin.lz",
@ -226,11 +230,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_2.bin",
"path": "maps/areas/004_CastorWilds/rooms/00_Main/gCaveBorder_CastorWilds_outside.bin.lz",
"start": 3434608,
"size": 964,
"type": "unknown",
"TODO": "metatilemap 63x60"
"type": "metatilemap"
},
{
"path": "maps/areas/005_Ruins/rooms/00_Entrance/gAreaRoomMap_Ruins_Entrance_bottom.bin.lz",
@ -384,11 +387,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_4.bin",
"path": "maps/areas/002_HyruleTown/rooms/00_Main/gCaveBorder_HyruleTown_outside.bin.lz",
"start": 3541432,
"size": 956,
"type": "unknown",
"TODO": "metatilemap 63x60"
"type": "metatilemap"
},
{
"path": "maps/areas/021_FestivalTown/rooms/00_Main/gAreaRoomMap_FestivalTown_Main_bottom.bin.lz",
@ -469,11 +471,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_5.bin",
"path": "maps/areas/006_MtCrenel/rooms/01_WallClimb/gCaveBorder_Crenel_outside.bin.lz",
"start": 3589952,
"size": 264,
"type": "unknown",
"TODO": "metatilemap 24x38"
"type": "metatilemap"
},
{
"path": "maps/areas/006_MtCrenel/rooms/02_CavernOfFlamesEntrance/gAreaRoomMap_MtCrenel_CavernOfFlamesEntrance_bottom.bin.lz",
@ -620,47 +621,46 @@
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/02_EasternHilllsSouth/gAreaRoomMap_HyruleField_EasternHilllsSouth_bottom.bin.lz",
"path": "maps/areas/003_HyruleField/rooms/02_EasternHillsSouth/gAreaRoomMap_HyruleField_EasternHillsSouth_bottom.bin.lz",
"start": 3698280,
"size": 564,
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/02_EasternHilllsSouth/gAreaRoomMap_HyruleField_EasternHilllsSouth_top.bin.lz",
"path": "maps/areas/003_HyruleField/rooms/02_EasternHillsSouth/gAreaRoomMap_HyruleField_EasternHillsSouth_top.bin.lz",
"start": 3698844,
"size": 208,
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/03_EasternHilllsCenter/gAreaRoomMap_HyruleField_EasternHilllsCenter_bottom.bin.lz",
"path": "maps/areas/003_HyruleField/rooms/03_EasternHillsCenter/gAreaRoomMap_HyruleField_EasternHillsCenter_bottom.bin.lz",
"start": 3699052,
"size": 584,
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/03_EasternHilllsCenter/gAreaRoomMap_HyruleField_EasternHilllsCenter_top.bin.lz",
"path": "maps/areas/003_HyruleField/rooms/03_EasternHillsCenter/gAreaRoomMap_HyruleField_EasternHillsCenter_top.bin.lz",
"start": 3699636,
"size": 216,
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/04_EasternHilllsNorth/gAreaRoomMap_HyruleField_EasternHilllsNorth_bottom.bin.lz",
"path": "maps/areas/003_HyruleField/rooms/04_EasternHillsNorth/gAreaRoomMap_HyruleField_EasternHillsNorth_bottom.bin.lz",
"start": 3699852,
"size": 1228,
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/04_EasternHilllsNorth/gAreaRoomMap_HyruleField_EasternHilllsNorth_top.bin.lz",
"path": "maps/areas/003_HyruleField/rooms/04_EasternHillsNorth/gAreaRoomMap_HyruleField_EasternHillsNorth_top.bin.lz",
"start": 3701080,
"size": 424,
"type": "metatilemap"
},
{
"path": "assets/unknown_6.bin",
"path": "maps/areas/003_HyruleField/rooms/04_EasternHillsNorth/gCaveBorder_EasternHills_outside.bin.lz",
"start": 3701504,
"size": 296,
"type": "unknown",
"TODO": "metatilemap 30x34"
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/05_LonLonRanch/gAreaRoomMap_HyruleField_LonLonRanch_bottom.bin.lz",
@ -675,11 +675,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_7.bin",
"path": "maps/areas/003_HyruleField/rooms/05_LonLonRanch/gCaveBorder_LonLonRanch_outside.bin.lz",
"start": 3705976,
"size": 684,
"type": "unknown",
"TODO": "metatilemap 45x60"
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/06_NorthHyruleField/gAreaRoomMap_HyruleField_NorthHyruleField_bottom.bin.lz",
@ -706,11 +705,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_8.bin",
"path": "maps/areas/003_HyruleField/rooms/07_TrilbyHighlands/gCaveBorder_TrilbyHighlands_outside.bin.lz",
"start": 3713808,
"size": 480,
"type": "unknown",
"TODO": "metatilemap 30x60"
"type": "metatilemap"
},
{
"path": "maps/areas/003_HyruleField/rooms/08_WesternWoodsNorth/gAreaRoomMap_HyruleField_WesternWoodsNorth_bottom.bin.lz",
@ -978,11 +976,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_10.bin",
"path": "maps/areas/010_VeilFalls/rooms/00_Main/gCaveBorder_VeilFalls_outside.bin.lz",
"start": 3846752,
"size": 520,
"type": "unknown",
"TODO": "metatilemap 30x63"
"type": "metatilemap"
},
{
"path": "maps/areas/026_VeilFallsTop/tilesets/0/gAreaTileset_VeilFallsTop_0_2.4bpp.lz",
@ -2504,11 +2501,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_12.bin",
"path": "maps/areas/012_LakeWoodsCave/rooms/00_Main/gCaveBorder_LakeWoods_inside.bin.lz",
"start": 4139404,
"size": 1028,
"type": "unknown",
"TODO": "metatilemap 63x63"
"type": "metatilemap"
},
{
"path": "maps/areas/012_LakeWoodsCave/rooms/00_Main/gAreaRoomMap_LakeWoodsCave_Main_top.bin.lz",
@ -2523,11 +2519,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_13.bin",
"path": "maps/areas/025_HyliaDigCaves/rooms/00_0/gCaveBorder_LakeHyliaCenter_inside.bin.lz",
"start": 4141884,
"size": 116,
"type": "unknown",
"TODO": "metatilemap 17x16"
"type": "metatilemap"
},
{
"path": "maps/areas/025_HyliaDigCaves/rooms/00_0/gAreaRoomMap_HyliaDigCaves_0_top.bin.lz",
@ -2542,11 +2537,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_14.bin",
"path": "maps/areas/025_HyliaDigCaves/rooms/01_1/gCaveBorder_LakeHyliaNorth_inside.bin.lz",
"start": 4143120,
"size": 460,
"type": "unknown",
"TODO": "metatilemap 63x27"
"type": "metatilemap"
},
{
"path": "maps/areas/025_HyliaDigCaves/rooms/01_1/gAreaRoomMap_HyliaDigCaves_1_top.bin.lz",
@ -2561,11 +2555,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_15.bin",
"path": "maps/areas/023_CastorWildsDigCave/rooms/00_0/gCaveBorder_CastorWilds_inside.bin.lz",
"start": 4145644,
"size": 964,
"type": "unknown",
"TODO": "metatilemap 63x60"
"type": "metatilemap"
},
{
"path": "maps/areas/023_CastorWildsDigCave/rooms/00_0/gAreaRoomMap_CastorWildsDigCave_0_top.bin.lz",
@ -2580,11 +2573,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_16.bin",
"path": "maps/areas/015_HyruleDigCaves/rooms/00_Town/gCaveBorder_HyruleTown_inside.bin.lz",
"start": 4148968,
"size": 956,
"type": "unknown",
"TODO": "metatilemap 63x60"
"type": "metatilemap"
},
{
"path": "maps/areas/015_HyruleDigCaves/rooms/00_Town/gAreaRoomMap_HyruleDigCaves_Town_top.bin.lz",
@ -2599,11 +2591,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_17.bin",
"path": "maps/areas/020_CrenelDigCave/rooms/00_0/gCaveBorder_Crenel_inside.bin.lz",
"start": 4152076,
"size": 280,
"type": "unknown",
"TODO": "metatilemap 31x32"
"type": "metatilemap"
},
{
"path": "maps/areas/020_CrenelDigCave/rooms/00_0/gAreaRoomMap_CrenelDigCave_0_top.bin.lz",
@ -2618,11 +2609,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_18.bin",
"path": "maps/areas/019_DigCaves/rooms/00_EasternHills/gCaveBorder_EasternHills_inside.bin.lz",
"start": 4153476,
"size": 296,
"type": "unknown",
"TODO": "metatilemap 30x34"
"type": "metatilemap"
},
{
"path": "maps/areas/019_DigCaves/rooms/00_EasternHills/gAreaRoomMap_DigCaves_EasternHills_top.bin.lz",
@ -2637,11 +2627,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_19.bin",
"path": "maps/areas/019_DigCaves/rooms/03_TrilbyHighlands/gCaveBorder_TrilbyHighlands_inside.bin.lz",
"start": 4154928,
"size": 480,
"type": "unknown",
"TODO": "metatilemap 30x60"
"type": "metatilemap"
},
{
"path": "maps/areas/019_DigCaves/rooms/03_TrilbyHighlands/gAreaRoomMap_DigCaves_TrilbyHighlands_top.bin.lz",
@ -2656,11 +2645,10 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_20.bin",
"path": "maps/areas/022_VeilFallsDigCave/rooms/00_0/gCaveBorder_VeilFalls_inside.bin.lz",
"start": 4156888,
"size": 520,
"type": "unknown",
"TODO": "metatilemap 30x63"
"type": "metatilemap"
},
{
"path": "maps/areas/022_VeilFallsDigCave/rooms/00_0/gAreaRoomMap_VeilFallsDigCave_0_top.bin.lz",
@ -8692,11 +8680,28 @@
"type": "metatileset_types"
},
{
"path": "assets/unknown_134.bin",
"path": "maps/areas/113_PalaceOfWindsBoss/mappings/gyorgMapping_2_bottom.bin.lz",
"start": 5538132,
"size": 3628,
"type": "unknown",
"TODO": "4 mappings?"
"size": 916,
"type": "map_mapping2"
},
{
"path": "maps/areas/113_PalaceOfWindsBoss/mappings/gyorgMapping_3_bottom.bin.lz",
"start": 5539048,
"size": 900,
"type": "map_mapping2"
},
{
"path": "maps/areas/113_PalaceOfWindsBoss/mappings/gyorgMapping_1_bottom.bin.lz",
"start": 5539948,
"size": 896,
"type": "map_mapping2"
},
{
"path": "maps/areas/113_PalaceOfWindsBoss/mappings/gyorgMapping_0_bottom.bin.lz",
"start": 5540844,
"size": 916,
"type": "map_mapping2"
},
{
"path": "maps/areas/113_PalaceOfWindsBoss/tilesets/0/gAreaTileset_PalaceOfWindsBoss_0_2.4bpp.lz",
@ -9899,11 +9904,22 @@
"type": "metatilemap"
},
{
"path": "assets/unknown_186.bin",
"path": "maps/areas/113_PalaceOfWindsBoss/rooms/00_0/gyorgRoomMap_1_top.bin.lz",
"start": 5579112,
"size": 2904,
"type": "unknown",
"TODO": "3* 0x1f80 10 00"
"size": 968,
"type": "metatilemap"
},
{
"path": "maps/areas/113_PalaceOfWindsBoss/rooms/00_0/gyorgRoomMap_2_top.bin.lz",
"start": 5580080,
"size": 968,
"type": "metatilemap"
},
{
"path": "maps/areas/113_PalaceOfWindsBoss/rooms/00_0/gyorgRoomMap_3_top.bin.lz",
"start": 5581048,
"size": 968,
"type": "metatilemap"
},
{
"path": "maps/areas/120_Sanctuary/tilesets/0/gAreaTileset_Sanctuary_0_0.4bpp.lz",

View File

@ -1,380 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08108E6C:: @ 08108E6C
.incbin "data_08108E6C/gUnk_08108E6C.bin"
gUnk_08108E78:: @ 08108E78
.ifdef EU
@ TODO only small differences
.incbin "data_08108E6C/gUnk_08108E78_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108E78_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108E90:: @ 08108E90
.4byte gUnk_08108E6C
.4byte gUnk_08108E78
gUnk_08108E98:: @ 08108E98
.ifdef EU
@ TODO only small differences
.incbin "data_08108E6C/gUnk_08108E98_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108E98_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108EA4:: @ 08108EA4
.incbin "data_08108E6C/gUnk_08108EA4.bin"
gUnk_08108EBC:: @ 08108EBC
.4byte gUnk_08108E98
.4byte gUnk_08108EA4
gUnk_08108EC4:: @ 08108EC4
.ifdef EU
@ TODO only small differences
.incbin "data_08108E6C/gUnk_08108EC4_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108EC4_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108ED0:: @ 08108ED0
.ifdef EU
@ TODO only small differences
.incbin "data_08108E6C/gUnk_08108ED0_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108ED0_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108EE8:: @ 08108EE8
.4byte gUnk_08108EC4
.4byte gUnk_08108ED0
gUnk_08108EF0:: @ 08108EF0
.ifdef EU
@ TODO only small differences
.incbin "data_08108E6C/gUnk_08108EF0_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108EF0_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108EFC:: @ 08108EFC
.ifdef EU
.incbin "data_08108E6C/gUnk_08108EFC_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108EFC_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108F14:: @ 08108F14
.4byte gUnk_08108EF0
.4byte gUnk_08108EFC
gUnk_08108F1C:: @ 08108F1C
.ifdef EU
@ TODO only small differences
.incbin "data_08108E6C/gUnk_08108F1C_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108F1C_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108F28:: @ 08108F28
.ifdef EU
@ TODO only small differences
.incbin "data_08108E6C/gUnk_08108F28_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108F28_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108F40:: @ 08108F40
.4byte gUnk_08108F1C
.4byte gUnk_08108F28
gUnk_08108F48:: @ 08108F48
.ifdef EU
.incbin "data_08108E6C/gUnk_08108F48_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108F48_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
.ifdef EU
.incbin "data_08108E6C/gUnk_08108F48_2_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108F48_3_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108F54:: @ 08108F54
.ifdef EU
.incbin "data_08108E6C/gUnk_08108F54_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108F54_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108F6C:: @ 08108F6C
.4byte gUnk_08108F48
.4byte gUnk_08108F54
gUnk_08108F74:: @ 08108F74
.ifdef EU
.incbin "data_08108E6C/gUnk_08108F74_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108F74_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108F80:: @ 08108F80
.ifdef EU
.incbin "data_08108E6C/gUnk_08108F80_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108F80_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108F98:: @ 08108F98
.4byte gUnk_08108F74
.4byte gUnk_08108F80
gUnk_08108FA0:: @ 08108FA0
.ifdef EU
.incbin "data_08108E6C/gUnk_08108FA0_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108FA0_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108FAC:: @ 08108FAC
.ifdef EU
.incbin "data_08108E6C/gUnk_08108FAC_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108FAC_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108FC4:: @ 08108FC4
.4byte gUnk_08108FA0
.4byte gUnk_08108FAC
gUnk_08108FCC:: @ 08108FCC
.ifdef EU
.incbin "data_08108E6C/gUnk_08108FCC_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108FCC_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108FD8:: @ 08108FD8
.ifdef EU
.incbin "data_08108E6C/gUnk_08108FD8_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108FD8_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08108FF0:: @ 08108FF0
.4byte gUnk_08108FCC
.4byte gUnk_08108FD8
gUnk_08108FF8:: @ 08108FF8
.ifdef EU
.incbin "data_08108E6C/gUnk_08108FF8_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08108FF8_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109004:: @ 08109004
.ifdef EU
.incbin "data_08108E6C/gUnk_08109004_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109004_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
.ifdef EU
.incbin "data_08108E6C/gUnk_08109004_2_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109004_3_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
.ifdef EU
.incbin "data_08108E6C/gUnk_08109004_4_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109004_5_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_0810901C:: @ 0810901C
.4byte gUnk_08108FF8
.4byte gUnk_08109004
gUnk_08109024:: @ 08109024
.ifdef EU
.incbin "data_08108E6C/gUnk_08109024_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109024_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109030:: @ 08109030
.ifdef EU
.incbin "data_08108E6C/gUnk_08109030_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109030_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
.ifdef EU
.incbin "data_08108E6C/gUnk_08109030_2_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109030_3_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109048:: @ 08109048
.4byte gUnk_08109024
.4byte gUnk_08109030
gUnk_08109050:: @ 08109050
.ifdef EU
.incbin "data_08108E6C/gUnk_08109050_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109050_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_0810905C:: @ 0810905C
.ifdef EU
.incbin "data_08108E6C/gUnk_0810905C_EU.bin"
.else
.incbin "data_08108E6C/gUnk_0810905C_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109074:: @ 08109074
.4byte gUnk_08109050
.4byte gUnk_0810905C
gUnk_0810907C:: @ 0810907C
.ifdef EU
.incbin "data_08108E6C/gUnk_0810907C_EU.bin"
.else
.incbin "data_08108E6C/gUnk_0810907C_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109088:: @ 08109088
.ifdef EU
.incbin "data_08108E6C/gUnk_08109088_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109088_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_081090A0:: @ 081090A0
.4byte gUnk_0810907C
.4byte gUnk_08109088
gUnk_081090A8:: @ 081090A8
.ifdef EU
.incbin "data_08108E6C/gUnk_081090A8_EU.bin"
.else
.incbin "data_08108E6C/gUnk_081090A8_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_081090B4:: @ 081090B4
.ifdef EU
.incbin "data_08108E6C/gUnk_081090B4_EU.bin"
.else
.incbin "data_08108E6C/gUnk_081090B4_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_081090CC:: @ 081090CC
.4byte gUnk_081090A8
.4byte gUnk_081090B4
gUnk_081090D4:: @ 081090D4
.ifdef EU
.incbin "data_08108E6C/gUnk_081090D4_EU.bin"
.else
.incbin "data_08108E6C/gUnk_081090D4_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_081090E0:: @ 081090E0
.ifdef EU
.incbin "data_08108E6C/gUnk_081090E0_EU.bin"
.else
.incbin "data_08108E6C/gUnk_081090E0_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_081090F8:: @ 081090F8
.4byte gUnk_081090D4
.4byte gUnk_081090E0
gUnk_08109100:: @ 08109100
.ifdef EU
.incbin "data_08108E6C/gUnk_08109100_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109100_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_0810910C:: @ 0810910C
.ifdef EU
.incbin "data_08108E6C/gUnk_0810910C_EU.bin"
.else
.incbin "data_08108E6C/gUnk_0810910C_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109124:: @ 08109124
.4byte gUnk_08109100
.4byte gUnk_0810910C
gUnk_0810912C:: @ 0810912C
.ifdef EU
.incbin "data_08108E6C/gUnk_0810912C_EU.bin"
.else
.incbin "data_08108E6C/gUnk_0810912C_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109138:: @ 08109138
.4byte gUnk_0810912C
.4byte gUnk_081090E0
gUnk_08109140:: @ 08109140
.ifdef EU
.incbin "data_08108E6C/gUnk_08109140_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109140_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109158:: @ 08109158
.4byte gUnk_08109100
.4byte gUnk_08109140
gUnk_08109160:: @ 08109160
.ifdef EU
@ TODO only small differences
.incbin "data_08108E6C/gUnk_08109160_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109160_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_08109178:: @ 08109178
.4byte gUnk_081090D4
.4byte gUnk_08109160
gUnk_08109180:: @ 08109180
.ifdef EU
.incbin "data_08108E6C/gUnk_08109180_EU.bin"
.else
.incbin "data_08108E6C/gUnk_08109180_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_0810918C:: @ 0810918C
.4byte gUnk_08109180
.4byte gUnk_0810910C
@ scroll.c
gUnk_08109194:: @ 08109194
.4byte gUnk_08108E90
.4byte gUnk_08108EBC
.4byte gUnk_08108EE8
.4byte gUnk_08108F14
.4byte gUnk_08108F40
.4byte gUnk_08108F6C
.4byte gUnk_08108F98
.4byte gUnk_08108FC4
.4byte gUnk_08108FF0
.4byte gUnk_0810901C
.4byte gUnk_08109048
.4byte gUnk_08109074
.4byte gUnk_081090A0
.4byte gUnk_081090CC
.4byte gUnk_081090F8
.4byte gUnk_08109124
.4byte gUnk_08109138
.4byte gUnk_08109158
.4byte gUnk_08109178
.4byte gUnk_0810918C

View File

@ -27,8 +27,10 @@ gAreaRoomMap_MinishWoods_Main_bottom::
.incbin "maps/areas/000_MinishWoods/rooms/00_Main/gAreaRoomMap_MinishWoods_Main_bottom.bin.lz"
gAreaRoomMap_MinishWoods_Main_top::
.incbin "maps/areas/000_MinishWoods/rooms/00_Main/gAreaRoomMap_MinishWoods_Main_top.bin.lz"
unknown_0::
.incbin "assets/unknown_0.bin"
gCaveBorder_LakeWoods_outside::
.incbin "maps/areas/000_MinishWoods/rooms/00_Main/gCaveBorder_LakeWoods_outside.bin.lz"
gCaveBorder_LakeWoods_unused::
.incbin "maps/areas/000_MinishWoods/rooms/00_Main/gCaveBorder_LakeWoods_unused.bin.lz"
gAreaTileset_LakeHylia_0_0::
.incbin "maps/areas/011_LakeHylia/tilesets/0/gAreaTileset_LakeHylia_0_0.4bpp.lz"
gAreaTileset_LakeHylia_0_1::
@ -47,8 +49,8 @@ gAreaRoomMap_LakeHylia_Main_bottom::
.incbin "maps/areas/011_LakeHylia/rooms/00_Main/gAreaRoomMap_LakeHylia_Main_bottom.bin.lz"
gAreaRoomMap_LakeHylia_Main_top::
.incbin "maps/areas/011_LakeHylia/rooms/00_Main/gAreaRoomMap_LakeHylia_Main_top.bin.lz"
unknown_1::
.incbin "assets/unknown_1.bin"
gCaveBorder_LakeHyliaNorth_outside::
.incbin "maps/areas/011_LakeHylia/rooms/00_Main/gCaveBorder_LakeHyliaNorth_outside.bin.lz"
gAreaRoomMap_LakeHylia_Beanstalk_bottom::
.incbin "maps/areas/011_LakeHylia/rooms/01_Beanstalk/gAreaRoomMap_LakeHylia_Beanstalk_bottom.bin.lz"
gAreaRoomMap_LakeHylia_Beanstalk_top::
@ -71,8 +73,8 @@ gAreaRoomMap_CastorWilds_Main_bottom::
.incbin "maps/areas/004_CastorWilds/rooms/00_Main/gAreaRoomMap_CastorWilds_Main_bottom.bin.lz"
gAreaRoomMap_CastorWilds_Main_top::
.incbin "maps/areas/004_CastorWilds/rooms/00_Main/gAreaRoomMap_CastorWilds_Main_top.bin.lz"
unknown_2::
.incbin "assets/unknown_2.bin"
gCaveBorder_CastorWilds_outside::
.incbin "maps/areas/004_CastorWilds/rooms/00_Main/gCaveBorder_CastorWilds_outside.bin.lz"
gAreaRoomMap_Ruins_Entrance_bottom::
.incbin "maps/areas/005_Ruins/rooms/00_Entrance/gAreaRoomMap_Ruins_Entrance_bottom.bin.lz"
gAreaRoomMap_Ruins_Entrance_top::
@ -123,8 +125,8 @@ gAreaRoomMap_HyruleTown_Main_bottom::
.incbin "maps/areas/002_HyruleTown/rooms/00_Main/gAreaRoomMap_HyruleTown_Main_bottom.bin.lz"
gAreaRoomMap_HyruleTown_Main_top::
.incbin "maps/areas/002_HyruleTown/rooms/00_Main/gAreaRoomMap_HyruleTown_Main_top.bin.lz"
unknown_4::
.incbin "assets/unknown_4.bin"
gCaveBorder_HyruleTown_outside::
.incbin "maps/areas/002_HyruleTown/rooms/00_Main/gCaveBorder_HyruleTown_outside.bin.lz"
gAreaRoomMap_FestivalTown_Main_bottom::
.incbin "maps/areas/021_FestivalTown/rooms/00_Main/gAreaRoomMap_FestivalTown_Main_bottom.bin.lz"
gAreaRoomMap_FestivalTown_Main_top::
@ -151,8 +153,8 @@ gAreaRoomMap_MtCrenel_WallClimb_bottom::
.incbin "maps/areas/006_MtCrenel/rooms/01_WallClimb/gAreaRoomMap_MtCrenel_WallClimb_bottom.bin.lz"
gAreaRoomMap_MtCrenel_WallClimb_top::
.incbin "maps/areas/006_MtCrenel/rooms/01_WallClimb/gAreaRoomMap_MtCrenel_WallClimb_top.bin.lz"
unknown_5::
.incbin "assets/unknown_5.bin"
gCaveBorder_Crenel_outside::
.incbin "maps/areas/006_MtCrenel/rooms/01_WallClimb/gCaveBorder_Crenel_outside.bin.lz"
gAreaRoomMap_MtCrenel_CavernOfFlamesEntrance_bottom::
.incbin "maps/areas/006_MtCrenel/rooms/02_CavernOfFlamesEntrance/gAreaRoomMap_MtCrenel_CavernOfFlamesEntrance_bottom.bin.lz"
gAreaRoomMap_MtCrenel_CavernOfFlamesEntrance_top::
@ -201,26 +203,26 @@ gAreaRoomMap_HyruleField_SouthHyruleField_bottom::
.incbin "maps/areas/003_HyruleField/rooms/01_SouthHyruleField/gAreaRoomMap_HyruleField_SouthHyruleField_bottom.bin.lz"
gAreaRoomMap_HyruleField_SouthHyruleField_top::
.incbin "maps/areas/003_HyruleField/rooms/01_SouthHyruleField/gAreaRoomMap_HyruleField_SouthHyruleField_top.bin.lz"
gAreaRoomMap_HyruleField_EasternHilllsSouth_bottom::
.incbin "maps/areas/003_HyruleField/rooms/02_EasternHilllsSouth/gAreaRoomMap_HyruleField_EasternHilllsSouth_bottom.bin.lz"
gAreaRoomMap_HyruleField_EasternHilllsSouth_top::
.incbin "maps/areas/003_HyruleField/rooms/02_EasternHilllsSouth/gAreaRoomMap_HyruleField_EasternHilllsSouth_top.bin.lz"
gAreaRoomMap_HyruleField_EasternHilllsCenter_bottom::
.incbin "maps/areas/003_HyruleField/rooms/03_EasternHilllsCenter/gAreaRoomMap_HyruleField_EasternHilllsCenter_bottom.bin.lz"
gAreaRoomMap_HyruleField_EasternHilllsCenter_top::
.incbin "maps/areas/003_HyruleField/rooms/03_EasternHilllsCenter/gAreaRoomMap_HyruleField_EasternHilllsCenter_top.bin.lz"
gAreaRoomMap_HyruleField_EasternHilllsNorth_bottom::
.incbin "maps/areas/003_HyruleField/rooms/04_EasternHilllsNorth/gAreaRoomMap_HyruleField_EasternHilllsNorth_bottom.bin.lz"
gAreaRoomMap_HyruleField_EasternHilllsNorth_top::
.incbin "maps/areas/003_HyruleField/rooms/04_EasternHilllsNorth/gAreaRoomMap_HyruleField_EasternHilllsNorth_top.bin.lz"
unknown_6::
.incbin "assets/unknown_6.bin"
gAreaRoomMap_HyruleField_EasternHillsSouth_bottom::
.incbin "maps/areas/003_HyruleField/rooms/02_EasternHillsSouth/gAreaRoomMap_HyruleField_EasternHillsSouth_bottom.bin.lz"
gAreaRoomMap_HyruleField_EasternHillsSouth_top::
.incbin "maps/areas/003_HyruleField/rooms/02_EasternHillsSouth/gAreaRoomMap_HyruleField_EasternHillsSouth_top.bin.lz"
gAreaRoomMap_HyruleField_EasternHillsCenter_bottom::
.incbin "maps/areas/003_HyruleField/rooms/03_EasternHillsCenter/gAreaRoomMap_HyruleField_EasternHillsCenter_bottom.bin.lz"
gAreaRoomMap_HyruleField_EasternHillsCenter_top::
.incbin "maps/areas/003_HyruleField/rooms/03_EasternHillsCenter/gAreaRoomMap_HyruleField_EasternHillsCenter_top.bin.lz"
gAreaRoomMap_HyruleField_EasternHillsNorth_bottom::
.incbin "maps/areas/003_HyruleField/rooms/04_EasternHillsNorth/gAreaRoomMap_HyruleField_EasternHillsNorth_bottom.bin.lz"
gAreaRoomMap_HyruleField_EasternHillsNorth_top::
.incbin "maps/areas/003_HyruleField/rooms/04_EasternHillsNorth/gAreaRoomMap_HyruleField_EasternHillsNorth_top.bin.lz"
gCaveBorder_EasternHills_outside::
.incbin "maps/areas/003_HyruleField/rooms/04_EasternHillsNorth/gCaveBorder_EasternHills_outside.bin.lz"
gAreaRoomMap_HyruleField_LonLonRanch_bottom::
.incbin "maps/areas/003_HyruleField/rooms/05_LonLonRanch/gAreaRoomMap_HyruleField_LonLonRanch_bottom.bin.lz"
gAreaRoomMap_HyruleField_LonLonRanch_top::
.incbin "maps/areas/003_HyruleField/rooms/05_LonLonRanch/gAreaRoomMap_HyruleField_LonLonRanch_top.bin.lz"
unknown_7::
.incbin "assets/unknown_7.bin"
gCaveBorder_LonLonRanch_outside::
.incbin "maps/areas/003_HyruleField/rooms/05_LonLonRanch/gCaveBorder_LonLonRanch_outside.bin.lz"
gAreaRoomMap_HyruleField_NorthHyruleField_bottom::
.incbin "maps/areas/003_HyruleField/rooms/06_NorthHyruleField/gAreaRoomMap_HyruleField_NorthHyruleField_bottom.bin.lz"
gAreaRoomMap_HyruleField_NorthHyruleField_top::
@ -229,8 +231,8 @@ gAreaRoomMap_HyruleField_TrilbyHighlands_bottom::
.incbin "maps/areas/003_HyruleField/rooms/07_TrilbyHighlands/gAreaRoomMap_HyruleField_TrilbyHighlands_bottom.bin.lz"
gAreaRoomMap_HyruleField_TrilbyHighlands_top::
.incbin "maps/areas/003_HyruleField/rooms/07_TrilbyHighlands/gAreaRoomMap_HyruleField_TrilbyHighlands_top.bin.lz"
unknown_8::
.incbin "assets/unknown_8.bin"
gCaveBorder_TrilbyHighlands_outside::
.incbin "maps/areas/003_HyruleField/rooms/07_TrilbyHighlands/gCaveBorder_TrilbyHighlands_outside.bin.lz"
gAreaRoomMap_HyruleField_WesternWoodsNorth_bottom::
.incbin "maps/areas/003_HyruleField/rooms/08_WesternWoodsNorth/gAreaRoomMap_HyruleField_WesternWoodsNorth_bottom.bin.lz"
gAreaRoomMap_HyruleField_WesternWoodsNorth_top::
@ -319,8 +321,8 @@ gAreaRoomMap_VeilFalls_Main_bottom::
.incbin "maps/areas/010_VeilFalls/rooms/00_Main/gAreaRoomMap_VeilFalls_Main_bottom.bin.lz"
gAreaRoomMap_VeilFalls_Main_top::
.incbin "maps/areas/010_VeilFalls/rooms/00_Main/gAreaRoomMap_VeilFalls_Main_top.bin.lz"
unknown_10::
.incbin "assets/unknown_10.bin"
gCaveBorder_VeilFalls_outside::
.incbin "maps/areas/010_VeilFalls/rooms/00_Main/gCaveBorder_VeilFalls_outside.bin.lz"
gAreaTileset_VeilFallsTop_0_2::
.incbin "maps/areas/026_VeilFallsTop/tilesets/0/gAreaTileset_VeilFallsTop_0_2.4bpp.lz"
gAreaRoomMap_VeilFallsTop_0_bottom::
@ -827,56 +829,56 @@ gAreaTileset_HyliaDigCaves_0_4::
.incbin "maps/areas/025_HyliaDigCaves/tilesets/0/gAreaTileset_HyliaDigCaves_0_4.4bpp.lz"
gAreaRoomMap_LakeWoodsCave_Main_bottom::
.incbin "maps/areas/012_LakeWoodsCave/rooms/00_Main/gAreaRoomMap_LakeWoodsCave_Main_bottom.bin.lz"
unknown_12::
.incbin "assets/unknown_12.bin"
gCaveBorder_LakeWoods_inside::
.incbin "maps/areas/012_LakeWoodsCave/rooms/00_Main/gCaveBorder_LakeWoods_inside.bin.lz"
gAreaRoomMap_LakeWoodsCave_Main_top::
.incbin "maps/areas/012_LakeWoodsCave/rooms/00_Main/gAreaRoomMap_LakeWoodsCave_Main_top.bin.lz"
gAreaRoomMap_HyliaDigCaves_0_bottom::
.incbin "maps/areas/025_HyliaDigCaves/rooms/00_0/gAreaRoomMap_HyliaDigCaves_0_bottom.bin.lz"
unknown_13::
.incbin "assets/unknown_13.bin"
gCaveBorder_LakeHyliaCenter_inside::
.incbin "maps/areas/025_HyliaDigCaves/rooms/00_0/gCaveBorder_LakeHyliaCenter_inside.bin.lz"
gAreaRoomMap_HyliaDigCaves_0_top::
.incbin "maps/areas/025_HyliaDigCaves/rooms/00_0/gAreaRoomMap_HyliaDigCaves_0_top.bin.lz"
gAreaRoomMap_HyliaDigCaves_1_bottom::
.incbin "maps/areas/025_HyliaDigCaves/rooms/01_1/gAreaRoomMap_HyliaDigCaves_1_bottom.bin.lz"
unknown_14::
.incbin "assets/unknown_14.bin"
gCaveBorder_LakeHyliaNorth_inside::
.incbin "maps/areas/025_HyliaDigCaves/rooms/01_1/gCaveBorder_LakeHyliaNorth_inside.bin.lz"
gAreaRoomMap_HyliaDigCaves_1_top::
.incbin "maps/areas/025_HyliaDigCaves/rooms/01_1/gAreaRoomMap_HyliaDigCaves_1_top.bin.lz"
gAreaRoomMap_CastorWildsDigCave_0_bottom::
.incbin "maps/areas/023_CastorWildsDigCave/rooms/00_0/gAreaRoomMap_CastorWildsDigCave_0_bottom.bin.lz"
unknown_15::
.incbin "assets/unknown_15.bin"
gCaveBorder_CastorWilds_inside::
.incbin "maps/areas/023_CastorWildsDigCave/rooms/00_0/gCaveBorder_CastorWilds_inside.bin.lz"
gAreaRoomMap_CastorWildsDigCave_0_top::
.incbin "maps/areas/023_CastorWildsDigCave/rooms/00_0/gAreaRoomMap_CastorWildsDigCave_0_top.bin.lz"
gAreaRoomMap_HyruleDigCaves_Town_bottom::
.incbin "maps/areas/015_HyruleDigCaves/rooms/00_Town/gAreaRoomMap_HyruleDigCaves_Town_bottom.bin.lz"
unknown_16::
.incbin "assets/unknown_16.bin"
gCaveBorder_HyruleTown_inside::
.incbin "maps/areas/015_HyruleDigCaves/rooms/00_Town/gCaveBorder_HyruleTown_inside.bin.lz"
gAreaRoomMap_HyruleDigCaves_Town_top::
.incbin "maps/areas/015_HyruleDigCaves/rooms/00_Town/gAreaRoomMap_HyruleDigCaves_Town_top.bin.lz"
gAreaRoomMap_CrenelDigCave_0_bottom::
.incbin "maps/areas/020_CrenelDigCave/rooms/00_0/gAreaRoomMap_CrenelDigCave_0_bottom.bin.lz"
unknown_17::
.incbin "assets/unknown_17.bin"
gCaveBorder_Crenel_inside::
.incbin "maps/areas/020_CrenelDigCave/rooms/00_0/gCaveBorder_Crenel_inside.bin.lz"
gAreaRoomMap_CrenelDigCave_0_top::
.incbin "maps/areas/020_CrenelDigCave/rooms/00_0/gAreaRoomMap_CrenelDigCave_0_top.bin.lz"
gAreaRoomMap_DigCaves_EasternHills_bottom::
.incbin "maps/areas/019_DigCaves/rooms/00_EasternHills/gAreaRoomMap_DigCaves_EasternHills_bottom.bin.lz"
unknown_18::
.incbin "assets/unknown_18.bin"
gCaveBorder_EasternHills_inside::
.incbin "maps/areas/019_DigCaves/rooms/00_EasternHills/gCaveBorder_EasternHills_inside.bin.lz"
gAreaRoomMap_DigCaves_EasternHills_top::
.incbin "maps/areas/019_DigCaves/rooms/00_EasternHills/gAreaRoomMap_DigCaves_EasternHills_top.bin.lz"
gAreaRoomMap_DigCaves_TrilbyHighlands_bottom::
.incbin "maps/areas/019_DigCaves/rooms/03_TrilbyHighlands/gAreaRoomMap_DigCaves_TrilbyHighlands_bottom.bin.lz"
unknown_19::
.incbin "assets/unknown_19.bin"
gCaveBorder_TrilbyHighlands_inside::
.incbin "maps/areas/019_DigCaves/rooms/03_TrilbyHighlands/gCaveBorder_TrilbyHighlands_inside.bin.lz"
gAreaRoomMap_DigCaves_TrilbyHighlands_top::
.incbin "maps/areas/019_DigCaves/rooms/03_TrilbyHighlands/gAreaRoomMap_DigCaves_TrilbyHighlands_top.bin.lz"
gAreaRoomMap_VeilFallsDigCave_0_bottom::
.incbin "maps/areas/022_VeilFallsDigCave/rooms/00_0/gAreaRoomMap_VeilFallsDigCave_0_bottom.bin.lz"
unknown_20::
.incbin "assets/unknown_20.bin"
gCaveBorder_VeilFalls_inside::
.incbin "maps/areas/022_VeilFallsDigCave/rooms/00_0/gCaveBorder_VeilFalls_inside.bin.lz"
gAreaRoomMap_VeilFallsDigCave_0_top::
.incbin "maps/areas/022_VeilFallsDigCave/rooms/00_0/gAreaRoomMap_VeilFallsDigCave_0_top.bin.lz"
gAreaRoomMap_OuterFortressOfWinds_EntranceHall_bottom::
@ -2685,8 +2687,14 @@ gAreaMetaTileset_PalaceOfWindsBoss_top::
.incbin "maps/areas/113_PalaceOfWindsBoss/metatileset/gAreaMetaTileset_PalaceOfWindsBoss_top.bin.lz"
gAreaMetaTilesetTypes_PalaceOfWindsBoss_top::
.incbin "maps/areas/113_PalaceOfWindsBoss/metatileset/gAreaMetaTilesetTypes_PalaceOfWindsBoss_top.bin.lz"
unknown_134::
.incbin "assets/unknown_134.bin"
gyorgMapping_2_bottom::
.incbin "maps/areas/113_PalaceOfWindsBoss/mappings/gyorgMapping_2_bottom.bin.lz"
gyorgMapping_3_bottom::
.incbin "maps/areas/113_PalaceOfWindsBoss/mappings/gyorgMapping_3_bottom.bin.lz"
gyorgMapping_1_bottom::
.incbin "maps/areas/113_PalaceOfWindsBoss/mappings/gyorgMapping_1_bottom.bin.lz"
gyorgMapping_0_bottom::
.incbin "maps/areas/113_PalaceOfWindsBoss/mappings/gyorgMapping_0_bottom.bin.lz"
gAreaTileset_PalaceOfWindsBoss_0_2::
.incbin "maps/areas/113_PalaceOfWindsBoss/tilesets/0/gAreaTileset_PalaceOfWindsBoss_0_2.4bpp.lz"
gAreaRoomMap_PalaceOfWinds_GyorgTornado_bottom::
@ -2997,8 +3005,12 @@ gAreaRoomMap_PalaceOfWinds_DarkCompassHall_top::
.incbin "maps/areas/112_PalaceOfWinds/rooms/50_DarkCompassHall/dungeon_map.bin"
gAreaRoomMap_PalaceOfWindsBoss_0_top::
.incbin "maps/areas/113_PalaceOfWindsBoss/rooms/00_0/gAreaRoomMap_PalaceOfWindsBoss_0_top.bin.lz"
unknown_186::
.incbin "assets/unknown_186.bin"
gyorgRoomMap_1_top::
.incbin "maps/areas/113_PalaceOfWindsBoss/rooms/00_0/gyorgRoomMap_1_top.bin.lz"
gyorgRoomMap_2_top::
.incbin "maps/areas/113_PalaceOfWindsBoss/rooms/00_0/gyorgRoomMap_2_top.bin.lz"
gyorgRoomMap_3_top::
.incbin "maps/areas/113_PalaceOfWindsBoss/rooms/00_0/gyorgRoomMap_3_top.bin.lz"
gAreaTileset_Sanctuary_0_0::
.incbin "maps/areas/120_Sanctuary/tilesets/0/gAreaTileset_Sanctuary_0_0.4bpp.lz"
gAreaTileset_Sanctuary_0_1::

View File

@ -117,22 +117,22 @@ gAreaRoomMap_HyruleField_1:: @ 081034D0
map_top offset_gAreaRoomMap_HyruleField_SouthHyruleField_top, 0x152A, 1, 1
gAreaRoomMap_HyruleField_2:: @ 0810350C
map_bottom offset_gAreaRoomMap_HyruleField_EasternHilllsSouth_bottom, 0x30C, 1
map_top offset_gAreaRoomMap_HyruleField_EasternHilllsSouth_top, 0x30C, 1, 1
map_bottom offset_gAreaRoomMap_HyruleField_EasternHillsSouth_bottom, 0x30C, 1
map_top offset_gAreaRoomMap_HyruleField_EasternHillsSouth_top, 0x30C, 1, 1
gAreaRoomMap_HyruleField_3:: @ 08103524
tileset_tiles offset_gAreaTileset_HyruleField_0_0, 0x6000000, 0x4000, 1
tileset_tiles offset_gAreaTileset_HyruleField_0_2, 0x6008000, 0x4000, 1
.4byte 0x80000010, 0x0, 0x0
map_bottom offset_gAreaRoomMap_HyruleField_EasternHilllsCenter_bottom, 0x3C0, 1
map_top offset_gAreaRoomMap_HyruleField_EasternHilllsCenter_top, 0x3C0, 1, 1
map_bottom offset_gAreaRoomMap_HyruleField_EasternHillsCenter_bottom, 0x3C0, 1
map_top offset_gAreaRoomMap_HyruleField_EasternHillsCenter_top, 0x3C0, 1, 1
gAreaRoomMap_HyruleField_4:: @ 08103560
tileset_tiles offset_gAreaTileset_HyruleField_1_0, 0x6000000, 0x4000, 1
tileset_tiles offset_gAreaTileset_HyruleField_1_2, 0x6008000, 0x4000, 1
.4byte 0x80000043, 0x0, 0x0
map_bottom offset_gAreaRoomMap_HyruleField_EasternHilllsNorth_bottom, 0x7F8, 1
map_top offset_gAreaRoomMap_HyruleField_EasternHilllsNorth_top, 0x7F8, 1, 1
map_bottom offset_gAreaRoomMap_HyruleField_EasternHillsNorth_bottom, 0x7F8, 1
map_top offset_gAreaRoomMap_HyruleField_EasternHillsNorth_top, 0x7F8, 1, 1
gAreaRoomMap_HyruleField_5:: @ 0810359C
tileset_tiles offset_gAreaTileset_HyruleField_1_0, 0x6000000, 0x4000, 1

View File

@ -11,7 +11,6 @@ extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer);
extern u32 GetTileType(u32 position, u32 layer);
extern void SetTile(u32 index, u32 position, u32 layer);
extern void UpdateScrollVram(void);
extern u32 sub_080B1B0C(struct Entity_*);
extern u32 sub_080B1BA4(u32, u32, u32);
extern void LoadResourceAsync(const void* src, u32 dest, u32 size);
extern void GenericConfused(struct Entity_*);
@ -37,9 +36,34 @@ extern u32 sub_0800442E(struct Entity_*);
extern u32 sub_08007DD6(u32, const u16*);
extern void SoundReqClipped(struct Entity_*, u32);
extern u32 sub_0800132C(struct Entity_*, struct Entity_*);
extern u32 sub_080B1B44(u32, u32);
/**
* Sets the collision data for one metatile.
*/
extern void SetCollisionData(u32 collisionData, u32 metaTilePos, u32 layer);
/**
* Returns the collision data for one metatile.
*/
extern u32 GetCollisionData(u32 metaTilePos, u32 layer);
/**
* Returns the collision data for one metatile. (x, y in metatiles relative to the room)
*/
extern u32 sub_080B1B3C(u32 x, u32 y, u32 layer);
/**
* Returns the collision data for one metatile. (x, y in pixels relative to the room)
*/
extern u32 sub_080B1B2C(u32 x, u32 y, u32 layer);
/**
* Returns the collision data for one metatile. (x, y in pixels relative to the world)
*/
extern u32 sub_080B1B18(u32 x, u32 y, u32 layer);
extern u32 sub_080B1B0C(struct Entity_* entity);
// Get CollisionData for entity (relative to entity?)
extern u32 sub_080B1AF0(struct Entity_*, s32 xOffset, s32 yOffset);
extern u32 sub_080B1A48(u32, u32, u32);
extern u32 sub_080B1B18(s32, s32, u32);
extern u32 sub_080B1AE0(u16, u8);
extern u32 GetTileUnderEntity(struct Entity_*);
extern u32 sub_0800445C(struct Entity_*);

View File

@ -135,7 +135,6 @@ typedef struct {
extern const DungeonFloorMetadata gDungeonFloorMetadatas[];
typedef struct {
u8 area;
u8 room;

View File

@ -519,6 +519,8 @@ extern u8 gManagerCount;
/** @name Tile Macros */ /// @{
#define TILE(x, y) (((((x)-gRoomControls.origin_x) >> 4) & 0x3F) | ((((y)-gRoomControls.origin_y) >> 4) & 0x3F) << 6)
// Calculate metatilePosition from x and y coordinates where x and y are already relative to the current room.
#define TILE_LOCAL(x, y) ((((x) >> 4) & 0x3F) | (((y) >> 4) & 0x3F) << 6)
#define TILE_POS(x, y) (x + (y << 6))
#define TILE_POS_X_COMPONENT 0x3f
#define TILE_POS_Y_COMPONENT 0xfc0

View File

@ -23,7 +23,6 @@ extern void CreateMinishEntrance(u32 tile);
extern u32 CreateRandomItemDrop(Entity*, u32);
extern void DrawDirect(u32 spriteIndex, u32 frameIndex);
extern void DrawEntities(void);
extern bool32 EntityWithinDistance(Entity*, s32, s32, s32);
extern void FlushSprites(void);
extern LayerStruct* GetLayerByIndex(u32);
extern u32 GetTileIndex(u32 tilePos, u32 layer);
@ -49,12 +48,8 @@ extern void ClearBgAnimations(void);
extern void SetBGDefaults(void);
// Unidentified
extern void sub_08000148(u32, u32, u32);
extern u32 sub_080B1A0C(Entity*, s32, s32);
extern u32 sub_080B1AE0(u16, u8);
extern u32 sub_080B1AF0(Entity*, s32, s32);
extern u32 sub_080B1B18(s32, s32, u32);
extern u32 sub_080B1B44(u32, u32);
extern s32 sub_080012DC(Entity*);
extern void sub_08001318(Entity*);
extern void sub_080027EA(Entity*, u32, u32);

View File

@ -295,7 +295,7 @@ typedef struct {
u8 maxX;
u8 maxY;
u8 windcrestId; /**< Id to set in gSave.windcrests when the user entered a room in the boundaries specified above.*/
//u8 pad;
// u8 pad;
u16 textIndex; /**< The text to show for this area.*/
} OverworldLocation;
extern const OverworldLocation gOverworldLocations[];

View File

@ -78,10 +78,8 @@
#if NON_MATCHING
#define ASM_FUNC(path, decl)
#else
#define ASM_FUNC(path, decl) \
NAKED decl { \
asm(".include " #path); \
}
#define ASM_FUNC(path, decl) \
NAKED decl { asm(".include " #path); }
#endif
#if NON_MATCHING

View File

@ -64,8 +64,8 @@ typedef struct {
u8 pauseFrames; /**< Number of frames to pause. */
u8 pauseCount; /**< Number of pauses to make. */
u8 pauseInterval; /**< Number of frames to play between each pause. */
u8 pad;
u16 ticks; /**< Current time. */
u8 pad; // TODO actually used in CopyOAM()
u16 ticks; /**< Current time. */
} Main;
/**

View File

@ -7,12 +7,35 @@ typedef struct {
Manager base;
} DiggingCaveEntranceManager;
enum DiggingCaveEntranceType {
CAVE_LAKE_WOODS_ENTER,
CAVE_LAKE_WOODS_LEAVE,
CAVE_HYRULE_TOWN_ENTER,
CAVE_HYRULE_TOWN_LEAVE,
CAVE_EASTERN_HILL_ENTER,
CAVE_EASTERN_HILL_LEAVE,
CAVE_CRENEL_ENTER,
CAVE_CRENEL_LEAVE,
CAVE_VEIL_FALLS_ENTER,
CAVE_VEIL_FALLS_LEAVE,
CAVE_TRILBY_HIGHLANDS_ENTER,
CAVE_TRILBY_HIGHLANDS_LEAVE,
CAVE_CASTOR_WILDS_ENTER,
CAVE_CASTOR_WILDS_LEAVE,
CAVE_LAKE_HYLIA_NORTH_ENTER,
CAVE_LAKE_HYLIA_NORTH_LEAVE,
CAVE_LON_LON_RANCH_ENTER,
CAVE_LON_LON_RANCH_LEAVE,
CAVE_LAKE_HYLIA_CENTER_ENTER,
CAVE_LAKE_HYLIA_CENTER_LEAVE,
};
typedef struct {
u16 sourceTilePosition; /**< Tile position for the entrance in the source room. */
u8 sourceRoom;
u8 type; // TODO some sort of type that is used to index gUnk_08109194
u8 targetArea;
u8 targetRoom;
u8 sourceRoom; /**< @see RoomID */
u8 type; /**< @see DiggingCaveEntranceType */
u8 targetArea; /**< @see AreaID */
u8 targetRoom; /**< @see RoomID */
u16 targetTilePosition; /**< Tile position for the entrance in the target room. */
} DiggingCaveEntrance;

View File

@ -9,7 +9,7 @@ typedef struct {
u16* unk_28;
u16* unk_2c;
u8 filler[0x4];
u8 unk_34;
u8 layer;
u8 unk_35;
u8 unk_36;
u8 unk_37;

View File

@ -6,8 +6,8 @@
typedef struct {
Manager base;
u8 unk_20[0x18];
s16 unk_38;
s16 unk_3a;
s16 x;
s16 y;
u16 unk_3c;
u16 flags;
} MiscManager;

View File

@ -6,14 +6,18 @@
typedef struct {
/*0x0000*/ BgSettings* bgSettings;
/*0x0004*/ u16 mapData[0x40*0x40]; /**< MetaTileIndex for each tile on the current layer. */ // tilemap data? <-- gMapDataTop / gMapDataBottom
/*0x2004*/ u8 collisionData[0x40*0x40]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4
/*0x3004*/ u16 mapDataClone[0x40*0x40]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4
// Tileset
/*0x5004*/ u16 metatileTypes[0x800]; /**< Maps from the MetaTileIndex to the MetaTileType. */ // gMetatileTypesTop, gMetatileTypesBottom
/*0x6004*/ u16 unkData2[0x800]; /**< Maps from a MetaTileType to a MetaTileIndex. */ // gUnk_02011654,gUnk_0202BEB4 // TODO metatile index for the metatile type??
/*0x7004*/ u16 metatiles[0x800 * 4]; /**< Mapping from a metatile to the four tile_attrs it consists of.*/ // gMetatilesTop, gMetatilesBottom
/*0x0004*/ u16 mapData[0x40 * 0x40];
/**< MetaTileIndex for each tile on the current layer. */ // tilemap data? <-- gMapDataTop / gMapDataBottom
/*0x2004*/ u8 collisionData[0x40 * 0x40]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4
/*0x3004*/ u16 mapDataClone[0x40 * 0x40]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4
// Tileset
/*0x5004*/ u16 metatileTypes[0x800];
/**< Maps from the MetaTileIndex to the MetaTileType. */ // gMetatileTypesTop, gMetatileTypesBottom
/*0x6004*/ u16 unkData2[0x800];
/**< Maps from a MetaTileType to a MetaTileIndex. */ // gUnk_02011654,gUnk_0202BEB4 // TODO metatile index for
// the metatile type??
/*0x7004*/ u16 metatiles[0x800 * 4];
/**< Mapping from a metatile to the four tile_attrs it consists of.*/ // gMetatilesTop, gMetatilesBottom
/*0xb004*/ u8 unkData3[0x40*0x40]; /**< Some sort of special behavior for tiles? Falling into holes or jumping off walls does not work when this is all zero.*/ // gUnk_02016654, gUnk_02030EB4
// TODO check with debugger what accesses this
@ -33,12 +37,11 @@ extern LayerStruct gMapTop;
extern LayerStruct gMapBottom;
// Rendered tilemaps https://www.coranac.com/tonc/text/regbg.htm#sec-map
//extern u16 gMapDataTopSpecial[0x4000];
//extern u16 gMapDataBottomSpecial[0x4000];
// extern u16 gMapDataTopSpecial[0x4000];
// extern u16 gMapDataBottomSpecial[0x4000];
LayerStruct* GetLayerByIndex(u32);
/*
Definition where some map data is found and where it should be copied to.
Defined using the map_data asm macro, e.g. in map_headers.s
@ -49,5 +52,9 @@ typedef struct {
u32 size;
} MapDataDefinition;
// There is another map data definition following.
#define MAP_MULTIPLE 0x80000000
// The src is compressed.
#define MAP_COMPRESSED 0x80000000
#endif // MAP_H

View File

@ -21,7 +21,7 @@ void SortEntityBelow(Entity* above_ent, Entity* below_ent);
void LinearMoveDirection(Entity* ent, u32 a, u32 b);
void LinearMoveAngle(Entity* ent, u32 a, u32 b);
bool32 EntityWithinDistance(Entity*, s32, s32, s32);
bool32 EntityWithinDistance(Entity* entity, s32 x, s32 y, s32 distance);
u32 sub_0806FCA0(Entity*, Entity*);
u32 sub_0806F58C(Entity*, Entity*);
u32 PointInsideRadius(s32 x, s32 y, s32 radius);

View File

@ -45,8 +45,8 @@ typedef struct {
/*0x18*/ u16 unk_18; // progress during transition in same area?
/*0x1A*/ u16 unk_1a; // calculated from unk_18
/*0x1C*/ u16 unk_1c; // 0, 0xff
/*0x1E*/ u16 width;
/*0x20*/ u16 height;
/*0x1E*/ u16 width; /**< Width in pixels. */
/*0x20*/ u16 height; /**< Height in pixels. */
/*0x22*/ u16 unk_22; // so far always 0xffff
/*0x24*/ s8 aff_x;
/*0x25*/ s8 aff_y;
@ -91,7 +91,8 @@ typedef struct {
u8 area;
u8 room;
u16 unk_02;
u32 flags; /**< Flags that can be set on the tracked rooms. Used e.g. by the door mimic. (TODO probably to start in the discovered state?)*/
u32 flags; /**< Flags that can be set on the tracked rooms. Used e.g. by the door mimic. (TODO probably to start in
the discovered state?)*/
} RoomMemory;
extern RoomMemory* gRoomMemoryPtr;

View File

@ -14,9 +14,9 @@ typedef enum {
// AREA_HYRULE_FIELD
ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH = 0,
ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD,
ROOM_HYRULE_FIELD_EASTERN_HILLLS_SOUTH,
ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER,
ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH,
ROOM_HYRULE_FIELD_EASTERN_HILLS_SOUTH,
ROOM_HYRULE_FIELD_EASTERN_HILLS_CENTER,
ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH,
ROOM_HYRULE_FIELD_LON_LON_RANCH,
ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD,
ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS,

View File

@ -44,7 +44,8 @@ typedef struct {
/*0x009*/ u8 field_0x9[0x17];
/*0x020*/ u16 field_0x20;
/*0x022*/ u8 field_0x22[0x1e];
/*0x040*/ u32 windcrests; /**< Windcrest flags. bits 0 - 0x10: Visited area of the overworld. Above 0x18: windcrest activated. */
/*0x040*/ u32 windcrests; /**< Windcrest flags. bits 0 - 0x10: Visited area of the overworld. Above 0x18: windcrest
activated. */
/*0x044*/ u8 filler44[0xC];
/*0x050*/ u32 unk50;
/*0x054*/ u8 filler54[0x8];

View File

@ -40,11 +40,7 @@ SECTIONS {
. = 0x00017654; gCurrentRoomProperties = .;
. = 0x00017660; gSmallChests = .;
. = 0x000176A0; gPaletteBuffer = .;
. = 0x000176E0; gUnk_020176E0 = .;
. = 0x00017700; gUnk_02017700 = .;
. = 0x00017760; gUnk_02017760 = .;
. = 0x00017830; gUnk_02017830 = .;
. = 0x000178E0; gUnk_020178E0 = .;
. = 0x00017AA0; gUnk_02017AA0 = .;
. = 0x00017BA0; gUnk_02017BA0 = .;
. = 0x00018EA0; gUnk_02018EA0 = .;
@ -180,7 +176,7 @@ SECTIONS {
. = 0x0000588C; ram_sub_080B1B18 = .;
. = 0x000058A0; ram_sub_080B1B2C = .;
. = 0x000058B0; ram_sub_080B1B3C = .;
. = 0x000058B8; ram_sub_080B1B44 = .;
. = 0x000058B8; ram_GetCollisionData = .;
. = 0x000058C8; ram_sub_080B1B54 = .;
. = 0x000058DC; ram_sub_080B1B68 = .;
. = 0x000058F8; ram_sub_080B1B84 = .;
@ -1172,7 +1168,7 @@ SECTIONS {
src/manager/floatingPlatformManager.o(.rodata);
src/manager/enterRoomTextboxManager.o(.rodata);
data/const/manager/enterRoomTextboxManager.o(.rodata);
data/const/entity.o(.rodata);
src/data/caveBorderMapData.o(.rodata);
src/entity.o(.rodata);
src/code_0805EC04.o(.rodata);
data/const/text.o(.rodata);

View File

@ -141,7 +141,7 @@ void LoadMapData(MapDataDefinition* dataDefinition) {
dest = dataDefinition->dest;
if (dest != NULL) {
src = &gMapData + (dataDefinition->src & 0x7fffffff);
if ((dataDefinition->size & 0x80000000) != 0) {
if ((dataDefinition->size & MAP_COMPRESSED) != 0) {
if ((u32)dest >> 0x18 == 6) {
LZ77UnCompVram(src, dest);
} else {
@ -155,7 +155,7 @@ void LoadMapData(MapDataDefinition* dataDefinition) {
sub_080533CC();
}
dataDefinition++;
} while (((dataDefinition - 1)->src & 0x80000000) != 0);
} while (((dataDefinition - 1)->src & MAP_MULTIPLE) != 0);
}
// Has ifdefs for other variants
@ -202,8 +202,8 @@ u32 UpdatePlayerCollision(void) {
index = sub_0807BDB8(&gPlayerEntity, direction >> 2);
if (index != 0xff && (gRoomControls.scroll_flags & 4) == 0) {
ptr1 = &gUnk_080B4490[index * 2];
if (sub_080B1B44(COORD_TO_TILE_OFFSET(&gPlayerEntity, -ptr1[0], -ptr1[1]), gPlayerEntity.collisionLayer) ==
0xff) {
if (GetCollisionData(COORD_TO_TILE_OFFSET(&gPlayerEntity, -ptr1[0], -ptr1[1]),
gPlayerEntity.collisionLayer) == 0xff) {
if ((((gPlayerState.flags & (PL_FLAGS10000 | PL_FLAGS2)) != 0) ||
((gPlayerState.sword_state & 0x10) != 0)) ||
((sub_080806BC(gPlayerEntity.x.HALF.HI - gRoomControls.origin_x,
@ -260,7 +260,7 @@ u32 UpdatePlayerCollision(void) {
if ((gPlayerEntity.direction & 0x80) != 0) {
return 0;
}
if (sub_080B1B44(position, gPlayerEntity.collisionLayer) != 0xf) {
if (GetCollisionData(position, gPlayerEntity.collisionLayer) != 0xf) {
return 0;
}
if (sub_08079778() == 0) {

View File

@ -240,18 +240,18 @@ void ChangeObjPalette(Entity* entity, u32 objPaletteId) {
void LoadObjPaletteAtIndex(u32 objPaletteId, u32 a2) {
u16* buffer;
gUsedPalettes |= 1 << (a2 + 0x10);
gUsedPalettes |= 1 << (a2 + 16);
if (objPaletteId > 5) {
if (objPaletteId == 0x15) {
buffer = gPaletteBuffer;
MemFill16(buffer[0x3C], buffer + (a2 + 0x10) * 0x10, 0x20);
MemFill16(buffer[0x3C], buffer + (a2 + 16) * 16, 0x20);
} else if (objPaletteId < 0x15) {
LoadPalettes((u8*)(gPaletteBuffer + (objPaletteId - 6) * 0x10), a2 + 0x10, 1);
LoadPalettes((u8*)(gPaletteBuffer + (objPaletteId - 6) * 16), a2 + 16, 1);
} else {
u32 offset = gUnk_08133368[(objPaletteId - 0x16)].WORD_U;
u32 numPalettes = (offset >> 0x18) & 0xf;
offset &= 0xffffff;
LoadPalettes(gGlobalGfxAndPalettes + offset, a2 + 0x10, numPalettes);
LoadPalettes(gGlobalGfxAndPalettes + offset, a2 + 16, numPalettes);
}
}
}
@ -361,5 +361,6 @@ void sub_0801D48C(u32 a1, u32 a2) {
} while (iVar2 != -1);
}
gUsedPalettes |= 0xffff0000;
gUsedPalettes |= 1 << 16 | 1 << 17 | 1 << 18 | 1 << 19 | 1 << 20 | 1 << 21 | 1 << 22 | 1 << 23 | 1 << 24 | 1 << 25 |
1 << 26 | 1 << 27 | 1 << 28 | 1 << 29 | 1 << 30 | 1 << 31;
}

View File

@ -17,7 +17,6 @@
#include "sound.h"
#include "structures.h"
extern u8 gUnk_03003DE0;
extern u8 gzHeap[0x1000];
extern u32 gDungeonMap[0x800];
@ -344,8 +343,7 @@ void sub_0801D898(void* dest, void* src, u32 word, u32 size) {
ASM_FUNC("asm/non_matching/common/zMalloc.inc", void* zMalloc(u32 size));
typedef struct {
typedef struct {
u16 start; // chunk start (offset from gzHeap)
u16 end; // chunk end (offset from gzHeap)
} HEAP_ENTRY;
@ -353,12 +351,11 @@ typedef struct {
typedef struct {
u16 num_entries; // allocated HEAP_ENTRYs in entries
// maybe union, HEAP_ENTRY and heap space share the same space
// maybe union, HEAP_ENTRY and heap space share the same space
HEAP_ENTRY entries[0];
u8 buf[4096 - 4]; // pads to 0x1000
u8 buf[4096 - 4]; // pads to 0x1000
} HEAP;
void zFree(void* ptr) {
u32 uVar1;
u32 i;
@ -1124,49 +1121,445 @@ KinstoneId GetFusionToOffer(Entity* entity) {
return offeredFusion;
}
const u16 gUnk_080C93E0[] = { 3, 9, 16, 22, 28, 35, 41, 48, 54, 61, 67, 74, 81, 88, 95, 102, 110, 117, 125, 133, 141, 149, 158, 167, 176, 185, 195, 205, 215, 226, 238, 250, 262, 276, 290, 304, 320, 336, 354, 373, 394, 415, 439, 465, 493, 525, 559, 597, 640, 689, 744, 808, 883, 971, 1078, 1209, 1375, 1591, 1885, 2308, 2973, 4167, 6950, 20860 };
const u16 gUnk_080C93E0[] = {
3, 9, 16, 22, 28, 35, 41, 48, 54, 61, 67, 74, 81, 88, 95, 102,
110, 117, 125, 133, 141, 149, 158, 167, 176, 185, 195, 205, 215, 226, 238, 250,
262, 276, 290, 304, 320, 336, 354, 373, 394, 415, 439, 465, 493, 525, 559, 597,
640, 689, 744, 808, 883, 971, 1078, 1209, 1375, 1591, 1885, 2308, 2973, 4167, 6950, 20860
};
const u32 gUnk_080C9460[] = {
0xfffffff0, 0xffffff0f, 0xfffff0ff, 0xffff0fff, 0xfff0ffff, 0xff0fffff, 0xf0ffffff, 0xfffffff,
};
const DungeonLayout gDungeonLayouts_None_None[] = { { 0, 0, 0, 0, 0 }, };
const DungeonLayout* const gDungeonLayouts_None[] = {gDungeonLayouts_None_None, };
const DungeonLayout gDungeonLayouts_None_None[] = {
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout* const gDungeonLayouts_None[] = {
gDungeonLayouts_None_None,
};
const DungeonLayout gDungeonLayouts_DeepwoodShrine_1F[] = { { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BOSS_DOOR, 0, 0, offset_gDungeonMaps_DeepwoodShrine_BossDoor }, { AREA_DEEPWOOD_SHRINE_BOSS, ROOM_DEEPWOOD_SHRINE_BOSS_MAIN, 2, 0, offset_gDungeonMaps_DeepwoodShrineBoss_Main }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_DeepwoodShrine_B1[] = { { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_MADDERPILLAR, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Madderpillar }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BLUE_PORTAL, 0, 0, offset_gDungeonMaps_DeepwoodShrine_BluePortal }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_STAIRS_TO_B1, 0, 0, offset_gDungeonMaps_DeepwoodShrine_StairsToB1 }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_POT_BRIDGE, 0, 0, offset_gDungeonMaps_DeepwoodShrine_PotBridge }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_DOUBLE_STATUE, 0, 0, offset_gDungeonMaps_DeepwoodShrine_DoubleStatue }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_MAP, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Map }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BARREL, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Barrel }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BUTTON, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Button }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_MULLDOZER, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Mulldozer }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_PILLARS, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Pillars }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_LEVER, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Lever }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_ENTRANCE, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Entrance }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_TORCHES, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Torches }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_DeepwoodShrine_B2[] = { { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BOSS_KEY, 0, 0, offset_gDungeonMaps_DeepwoodShrine_BossKey }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_COMPASS, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Compass }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_LILY_PAD_WEST, 0, 0, offset_gDungeonMaps_DeepwoodShrine_LilyPadWest }, { AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_LILY_PAD_EAST, 0, 0, offset_gDungeonMaps_DeepwoodShrine_LilyPadEast }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout* const gDungeonLayouts_DeepwoodShrine[] = {gDungeonLayouts_DeepwoodShrine_1F, gDungeonLayouts_DeepwoodShrine_B1, gDungeonLayouts_DeepwoodShrine_B2, };
const DungeonLayout gDungeonLayouts_DeepwoodShrine_1F[] = {
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BOSS_DOOR, 0, 0, offset_gDungeonMaps_DeepwoodShrine_BossDoor },
{ AREA_DEEPWOOD_SHRINE_BOSS, ROOM_DEEPWOOD_SHRINE_BOSS_MAIN, 2, 0, offset_gDungeonMaps_DeepwoodShrineBoss_Main },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_DeepwoodShrine_B1[] = {
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_MADDERPILLAR, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Madderpillar },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BLUE_PORTAL, 0, 0, offset_gDungeonMaps_DeepwoodShrine_BluePortal },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_STAIRS_TO_B1, 0, 0, offset_gDungeonMaps_DeepwoodShrine_StairsToB1 },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_POT_BRIDGE, 0, 0, offset_gDungeonMaps_DeepwoodShrine_PotBridge },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_DOUBLE_STATUE, 0, 0, offset_gDungeonMaps_DeepwoodShrine_DoubleStatue },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_MAP, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Map },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BARREL, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Barrel },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BUTTON, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Button },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_MULLDOZER, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Mulldozer },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_PILLARS, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Pillars },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_LEVER, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Lever },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_ENTRANCE, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Entrance },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_TORCHES, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Torches },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_DeepwoodShrine_B2[] = {
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_BOSS_KEY, 0, 0, offset_gDungeonMaps_DeepwoodShrine_BossKey },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_COMPASS, 0, 0, offset_gDungeonMaps_DeepwoodShrine_Compass },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_LILY_PAD_WEST, 0, 0, offset_gDungeonMaps_DeepwoodShrine_LilyPadWest },
{ AREA_DEEPWOOD_SHRINE, ROOM_DEEPWOOD_SHRINE_LILY_PAD_EAST, 0, 0, offset_gDungeonMaps_DeepwoodShrine_LilyPadEast },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout* const gDungeonLayouts_DeepwoodShrine[] = {
gDungeonLayouts_DeepwoodShrine_1F,
gDungeonLayouts_DeepwoodShrine_B1,
gDungeonLayouts_DeepwoodShrine_B2,
};
const DungeonLayout gDungeonLayouts_CaveOfFlames_1F[] = { { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_ENTRANCE, 0, 0, offset_gDungeonMaps_CaveOfFlames_Entrance }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_NORTH_ENTRANCE, 0, 0, offset_gDungeonMaps_CaveOfFlames_NorthEntrance }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_COMPASS, 0, 0, offset_gDungeonMaps_CaveOfFlames_Compass }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BOB_OMB_WALL, 0, 0, offset_gDungeonMaps_CaveOfFlames_BobOmbWall }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_CaveOfFlames_B1[] = { { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_AFTER_CANE, 0, 0, offset_gDungeonMaps_CaveOfFlames_AfterCane }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_SPINY_CHU, 0, 0, offset_gDungeonMaps_CaveOfFlames_SpinyChu }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_CART_TO_SPINY_CHU, 0, 0, offset_gDungeonMaps_CaveOfFlames_CartToSpinyChu }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_MAIN_CART, 0, 0, offset_gDungeonMaps_CaveOfFlames_MainCart }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_CART_WEST, 0, 0, offset_gDungeonMaps_CaveOfFlames_CartWest }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_HELMASAUR_FIGHT, 0, 0, offset_gDungeonMaps_CaveOfFlames_HelmasaurFight }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_ROLLOBITE_LAVA_ROOM, 0, 0, offset_gDungeonMaps_CaveOfFlames_RollobiteLavaRoom }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_MINISH_LAVA_ROOM, 0, 0, offset_gDungeonMaps_CaveOfFlames_MinishLavaRoom }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_CaveOfFlames_B2[] = { { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_MINISH_SPIKES, 0, 0, offset_gDungeonMaps_CaveOfFlames_MinishSpikes }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_TOMPAS_DOOM, 0, 0, offset_gDungeonMaps_CaveOfFlames_TompasDoom }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BEFORE_GLEEROK, 0, 0, offset_gDungeonMaps_CaveOfFlames_BeforeGleerok }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BOSSKEY_PATH1, 0, 0, offset_gDungeonMaps_CaveOfFlames_BosskeyPath1 }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BOSSKEY_PATH2, 0, 0, offset_gDungeonMaps_CaveOfFlames_BosskeyPath2 }, { AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BOSS_DOOR, 0, 0, offset_gDungeonMaps_CaveOfFlames_BossDoor }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_CaveOfFlames_B3[] = { { AREA_CAVE_OF_FLAMES_BOSS, ROOM_CAVE_OF_FLAMES_BOSS_0, 2, 0, offset_gDungeonMaps_CaveOfFlamesBoss_0 }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout* const gDungeonLayouts_CaveOfFlames[] = {gDungeonLayouts_CaveOfFlames_1F, gDungeonLayouts_CaveOfFlames_B1, gDungeonLayouts_CaveOfFlames_B2, gDungeonLayouts_CaveOfFlames_B3, };
const DungeonLayout gDungeonLayouts_CaveOfFlames_1F[] = {
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_ENTRANCE, 0, 0, offset_gDungeonMaps_CaveOfFlames_Entrance },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_NORTH_ENTRANCE, 0, 0, offset_gDungeonMaps_CaveOfFlames_NorthEntrance },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_COMPASS, 0, 0, offset_gDungeonMaps_CaveOfFlames_Compass },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BOB_OMB_WALL, 0, 0, offset_gDungeonMaps_CaveOfFlames_BobOmbWall },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_CaveOfFlames_B1[] = {
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_AFTER_CANE, 0, 0, offset_gDungeonMaps_CaveOfFlames_AfterCane },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_SPINY_CHU, 0, 0, offset_gDungeonMaps_CaveOfFlames_SpinyChu },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_CART_TO_SPINY_CHU, 0, 0,
offset_gDungeonMaps_CaveOfFlames_CartToSpinyChu },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_MAIN_CART, 0, 0, offset_gDungeonMaps_CaveOfFlames_MainCart },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_CART_WEST, 0, 0, offset_gDungeonMaps_CaveOfFlames_CartWest },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_HELMASAUR_FIGHT, 0, 0, offset_gDungeonMaps_CaveOfFlames_HelmasaurFight },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_ROLLOBITE_LAVA_ROOM, 0, 0,
offset_gDungeonMaps_CaveOfFlames_RollobiteLavaRoom },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_MINISH_LAVA_ROOM, 0, 0,
offset_gDungeonMaps_CaveOfFlames_MinishLavaRoom },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_CaveOfFlames_B2[] = {
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_MINISH_SPIKES, 0, 0, offset_gDungeonMaps_CaveOfFlames_MinishSpikes },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_TOMPAS_DOOM, 0, 0, offset_gDungeonMaps_CaveOfFlames_TompasDoom },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BEFORE_GLEEROK, 0, 0, offset_gDungeonMaps_CaveOfFlames_BeforeGleerok },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BOSSKEY_PATH1, 0, 0, offset_gDungeonMaps_CaveOfFlames_BosskeyPath1 },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BOSSKEY_PATH2, 0, 0, offset_gDungeonMaps_CaveOfFlames_BosskeyPath2 },
{ AREA_CAVE_OF_FLAMES, ROOM_CAVE_OF_FLAMES_BOSS_DOOR, 0, 0, offset_gDungeonMaps_CaveOfFlames_BossDoor },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_CaveOfFlames_B3[] = {
{ AREA_CAVE_OF_FLAMES_BOSS, ROOM_CAVE_OF_FLAMES_BOSS_0, 2, 0, offset_gDungeonMaps_CaveOfFlamesBoss_0 },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout* const gDungeonLayouts_CaveOfFlames[] = {
gDungeonLayouts_CaveOfFlames_1F,
gDungeonLayouts_CaveOfFlames_B1,
gDungeonLayouts_CaveOfFlames_B2,
gDungeonLayouts_CaveOfFlames_B3,
};
const DungeonLayout gDungeonLayouts_FortressOfWinds_3F[] = {
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_DOUBLE_EYEGORE, 0, 0,
offset_gDungeonMaps_FortressOfWinds_DoubleEyegore },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_EAST_KEY_LEVER, 0, 0,
offset_gDungeonMaps_FortressOfWinds_EastKeyLever },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_PIT_PLATFORMS, 0, 0,
offset_gDungeonMaps_FortressOfWinds_PitPlatforms },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WEST_KEY_LEVER, 0, 0,
offset_gDungeonMaps_FortressOfWinds_WestKeyLever },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_MAZAAL, 2, 0, offset_gDungeonMaps_FortressOfWinds_Mazaal },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_BEFORE_MAZAAL, 0, 0,
offset_gDungeonMaps_FortressOfWinds_BeforeMazaal },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_FortressOfWinds_2F[] = {
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_DARKNUT_ROOM, 0, 0,
offset_gDungeonMaps_FortressOfWinds_DarknutRoom },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_ARROW_EYE_BRIDGE, 0, 0,
offset_gDungeonMaps_FortressOfWinds_ArrowEyeBridge },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_NORTH_SPLIT_PATH_PIT, 0, 0,
offset_gDungeonMaps_FortressOfWinds_NorthSplitPathPit },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WALLMASTER_MINISH_PORTAL, 0, 0,
offset_gDungeonMaps_FortressOfWinds_WallmasterMinishPortal },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_PILLAR_CLONE_BUTTONS, 0, 0,
offset_gDungeonMaps_FortressOfWinds_PillarCloneButtons },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_ROTATING_SPIKE_TRAPS, 0, 0,
offset_gDungeonMaps_FortressOfWinds_RotatingSpikeTraps },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_STALFOS, 0, 0, offset_gDungeonMaps_FortressOfWinds_Stalfos },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_ENTRANCE_MOLE_MITTS, 0, 0,
offset_gDungeonMaps_FortressOfWinds_EntranceMoleMitts },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_MAIN_2F, 0, 0, offset_gDungeonMaps_FortressOfWinds_Main2f },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_MINISH_HOLE, 0, 0,
offset_gDungeonMaps_FortressOfWinds_MinishHole },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_BOSS_KEY, 0, 0, offset_gDungeonMaps_FortressOfWinds_BossKey },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WEST_STAIRS_2F, 0, 0,
offset_gDungeonMaps_FortressOfWinds_WestStairs2f },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_EAST_STAIRS_2F, 0, 0,
offset_gDungeonMaps_FortressOfWinds_EastStairs2f },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_5, 1, 1, offset_gDungeonMaps_FortressOfWinds_5 },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_6, 1, 1, offset_gDungeonMaps_FortressOfWinds_6 },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_FortressOfWinds_1F[] = {
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WEST_STAIRS_1F, 0, 0,
offset_gDungeonMaps_FortressOfWinds_WestStairs1f },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_CENTER_STAIRS_1F, 0, 0,
offset_gDungeonMaps_FortressOfWinds_CenterStairs1f },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_EAST_STAIRS_1F, 0, 0,
offset_gDungeonMaps_FortressOfWinds_EastStairs1f },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WIZZROBE, 0, 0, offset_gDungeonMaps_FortressOfWinds_Wizzrobe },
{ AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_HEART_PIECE, 0, 0,
offset_gDungeonMaps_FortressOfWinds_HeartPiece },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout* const gDungeonLayouts_FortressOfWinds[] = {
gDungeonLayouts_FortressOfWinds_3F,
gDungeonLayouts_FortressOfWinds_2F,
gDungeonLayouts_FortressOfWinds_1F,
};
const DungeonLayout gDungeonLayouts_FortressOfWinds_3F[] = { { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_DOUBLE_EYEGORE, 0, 0, offset_gDungeonMaps_FortressOfWinds_DoubleEyegore }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_EAST_KEY_LEVER, 0, 0, offset_gDungeonMaps_FortressOfWinds_EastKeyLever }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_PIT_PLATFORMS, 0, 0, offset_gDungeonMaps_FortressOfWinds_PitPlatforms }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WEST_KEY_LEVER, 0, 0, offset_gDungeonMaps_FortressOfWinds_WestKeyLever }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_MAZAAL, 2, 0, offset_gDungeonMaps_FortressOfWinds_Mazaal }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_BEFORE_MAZAAL, 0, 0, offset_gDungeonMaps_FortressOfWinds_BeforeMazaal }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_FortressOfWinds_2F[] = { { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_DARKNUT_ROOM, 0, 0, offset_gDungeonMaps_FortressOfWinds_DarknutRoom }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_ARROW_EYE_BRIDGE, 0, 0, offset_gDungeonMaps_FortressOfWinds_ArrowEyeBridge }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_NORTH_SPLIT_PATH_PIT, 0, 0, offset_gDungeonMaps_FortressOfWinds_NorthSplitPathPit }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WALLMASTER_MINISH_PORTAL, 0, 0, offset_gDungeonMaps_FortressOfWinds_WallmasterMinishPortal }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_PILLAR_CLONE_BUTTONS, 0, 0, offset_gDungeonMaps_FortressOfWinds_PillarCloneButtons }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_ROTATING_SPIKE_TRAPS, 0, 0, offset_gDungeonMaps_FortressOfWinds_RotatingSpikeTraps }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_STALFOS, 0, 0, offset_gDungeonMaps_FortressOfWinds_Stalfos }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_ENTRANCE_MOLE_MITTS, 0, 0, offset_gDungeonMaps_FortressOfWinds_EntranceMoleMitts }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_MAIN_2F, 0, 0, offset_gDungeonMaps_FortressOfWinds_Main2f }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_MINISH_HOLE, 0, 0, offset_gDungeonMaps_FortressOfWinds_MinishHole }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_BOSS_KEY, 0, 0, offset_gDungeonMaps_FortressOfWinds_BossKey }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WEST_STAIRS_2F, 0, 0, offset_gDungeonMaps_FortressOfWinds_WestStairs2f }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_EAST_STAIRS_2F, 0, 0, offset_gDungeonMaps_FortressOfWinds_EastStairs2f }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_5, 1, 1, offset_gDungeonMaps_FortressOfWinds_5 }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_6, 1, 1, offset_gDungeonMaps_FortressOfWinds_6 }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_FortressOfWinds_1F[] = { { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WEST_STAIRS_1F, 0, 0, offset_gDungeonMaps_FortressOfWinds_WestStairs1f }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_CENTER_STAIRS_1F, 0, 0, offset_gDungeonMaps_FortressOfWinds_CenterStairs1f }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_EAST_STAIRS_1F, 0, 0, offset_gDungeonMaps_FortressOfWinds_EastStairs1f }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WIZZROBE, 0, 0, offset_gDungeonMaps_FortressOfWinds_Wizzrobe }, { AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_HEART_PIECE, 0, 0, offset_gDungeonMaps_FortressOfWinds_HeartPiece }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout* const gDungeonLayouts_FortressOfWinds[] = {gDungeonLayouts_FortressOfWinds_3F, gDungeonLayouts_FortressOfWinds_2F, gDungeonLayouts_FortressOfWinds_1F, };
const DungeonLayout gDungeonLayouts_TempleOfDroplets_B1[] = {
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WEST_HOLE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_WestHole },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_NORTH_SPLIT_ROOM, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_NorthSplitRoom },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_EAST_HOLE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_EastHole },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ENTRANCE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_Entrance },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_NORTHWEST_STAIRS, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_NorthwestStairs },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_SCISSORS_MINIBOSS, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_ScissorsMiniboss },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WATERFALL_NORTHWEST, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_WaterfallNorthwest },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WATERFALL_NORTHEAST, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_WaterfallNortheast },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ELEMENT, 0, 0, offset_gDungeonMaps_TempleOfDroplets_Element },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ICE_CORNER, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_IceCorner },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ICE_PIT_MAZE, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_IcePitMaze },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_HOLE_TO_BLUE_CHU_KEY, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_HoleToBlueChuKey },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WEST_WATERFALL_SOUTHEAST, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_WestWaterfallSoutheast },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WEST_WATERFALL_SOUTHWEST, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_WestWaterfallSouthwest },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BIG_OCTO, 2, 0, offset_gDungeonMaps_TempleOfDroplets_BigOcto },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_TO_BLUE_CHU, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_ToBlueChu },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLUE_CHU, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BlueChu },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_TempleOfDroplets_B2[] = {
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BOSS_KEY, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BossKey },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_NORTH_SMALL_KEY, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_NorthSmallKey },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLOCK_CLONE_BUTTON_PUZZLE, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_BlockCloneButtonPuzzle },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLOCK_CLONE_PUZZLE, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_BlockClonePuzzle },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLOCK_CLONE_ICE_BRIDGE, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_BlockCloneIceBridge },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_STAIRS_TO_SCISSORS_MINIBOSS, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_StairsToScissorsMiniboss },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_SPIKE_BAR_FLIPPER_ROOM, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_SpikeBarFlipperRoom },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_9_LANTERNS, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_9Lanterns },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_LILYPAD_ICE_BLOCKS, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_LilypadIceBlocks },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_29, 0, 0, offset_gDungeonMaps_TempleOfDroplets_29 },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_MULLDOZERS_FIRE_BARS, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_MulldozersFireBars },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_DARK_MAZE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_DarkMaze },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_TWIN_MADDERPILLARS, 1, 0,
offset_gDungeonMaps_TempleOfDroplets_TwinMadderpillars },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_AFTER_TWIN_MADDERPILLARS, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_AfterTwinMadderpillars },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLUE_CHU_KEY_LEVER, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_BlueChuKeyLever },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_MULLDOZER_KEY, 1, 0,
offset_gDungeonMaps_TempleOfDroplets_MulldozerKey },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BEFORE_TWIN_MADDERPILLARS, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_BeforeTwinMadderpillars },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_LILYPAD_B2_WEST, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_LilypadB2West },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_COMPASS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_Compass },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_DARK_SCISSOR_BEETLES, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_DarkScissorBeetles },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_LILYPAD_B2_MIDDLE, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_LilypadB2Middle },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ICE_MADDERPILLAR, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_IceMadderpillar },
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_FLAMEBAR_BLOCK_PUZZLE, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_FlamebarBlockPuzzle },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_TempleOfDroplets_B3[] = {
{ AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLUE_CHU_KEY, 0, 0,
offset_gDungeonMaps_TempleOfDroplets_BlueChuKey },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout* const gDungeonLayouts_TempleOfDroplets[] = {
gDungeonLayouts_TempleOfDroplets_B1,
gDungeonLayouts_TempleOfDroplets_B2,
gDungeonLayouts_TempleOfDroplets_B3,
};
const DungeonLayout gDungeonLayouts_PalaceOfWinds_5F[] = {
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GYORG_TORNADO, 2, 0, offset_gDungeonMaps_PalaceOfWinds_GyorgTornado },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BOSS_KEY, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BossKey },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BEFORE_BALL_AND_CHAIN_SOLDIERS, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_BeforeBallAndChainSoldiers },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GYORG_BOSS_DOOR, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_GyorgBossDoor },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_EAST_CHEST_FROM_GYORG_BOSS_DOOR, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_EastChestFromGyorgBossDoor },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_MOBLIN_AND_WIZZROBE_FIGHT, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_MoblinAndWizzrobeFight },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FOUR_BUTTON_STALFOS, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_FourButtonStalfos },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FAN_AND_KEY_TO_BOSS_KEY, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_FanAndKeyToBossKey },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BALL_AND_CHAIN_SOLDIERS, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_BallAndChainSoldiers },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BOMBAROSSA_PATH, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_BombarossaPath },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_HOLE_TO_DARKNUT, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_HoleToDarknut },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_TO_BOMBAROSSA_PATH, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_ToBombarossaPath },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BOMB_WALL_INSIDE, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_BombWallInside },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BOMB_WALL_OUTSIDE, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_BombWallOutside },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_PalaceOfWinds_4F[] = {
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_CLOUD_JUMPS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_CloudJumps },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BLOCK_MAZE_TO_BOSS_DOOR, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_BlockMazeToBossDoor },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_CRACKED_FLOOR_LAKITU, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_CrackedFloorLakitu },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_HEART_PIECE_BRIDGE, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_HeartPieceBridge },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FAN_BRIDGE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_FanBridge },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_TO_FAN_BRIDGE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_ToFanBridge },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_RED_WARP_HALL, 0, 0, offset_gDungeonMaps_PalaceOfWinds_RedWarpHall },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_PalaceOfWinds_3F[] = {
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PLATFORM_CLONE_RIDE, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_PlatformCloneRide },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PIT_CORNER_AFTER_KEY, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_PitCornerAfterKey },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PLATFORM_CROW_RIDE, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_PlatformCrowRide },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GRATE_PLATFORM_RIDE, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_GratePlatformRide },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_POT_PUSH, 0, 0, offset_gDungeonMaps_PalaceOfWinds_PotPush },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FLOORMASTER_LEVER, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_FloormasterLever },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_MAP, 0, 0, offset_gDungeonMaps_PalaceOfWinds_Map },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_CORNER_TO_MAP, 0, 0, offset_gDungeonMaps_PalaceOfWinds_CornerToMap },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_STAIRS_AFTER_FLOORMASTER, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_StairsAfterFloormaster },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_HOLE_TO_KINSTONE_WIZZROBE, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_HoleToKinstoneWizzrobe },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_KEY_ARROW_BUTTON, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_KeyArrowButton },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_PalaceOfWinds_2F[] = {
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GRATES_TO_3F, 0, 0, offset_gDungeonMaps_PalaceOfWinds_GratesTo3f },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_SPINY_FIGHT, 0, 0, offset_gDungeonMaps_PalaceOfWinds_SpinyFight },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PEAHAT_SWITCH, 0, 0, offset_gDungeonMaps_PalaceOfWinds_PeahatSwitch },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_WHIRLWIND_BOMBAROSSA, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_WhirlwindBombarossa },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_DOOR_TO_STALFOS_FIREBAR, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_DoorToStalfosFirebar },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_STALFOS_FIREBAR_HOLE, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_StalfosFirebarHole },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_SHORTCUT_DOOR_BUTTONS, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_ShortcutDoorButtons },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_TO_PEAHAT_SWITCH, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_ToPeahatSwitch },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_KINSTONE_WIZZROBE_FIGHT, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_KinstoneWizzrobeFight },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GIBDO_STAIRS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_GibdoStairs },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_SPIKE_BAR_SMALL_KEY, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_SpikeBarSmallKey },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_PalaceOfWinds_1F[] = {
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_DARKNUT_MINIBOSS, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_DarknutMiniboss },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_ROC_CAPE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_RocCape },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FIRE_BAR_GRATES, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_FireBarGrates },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PLATFORM_RIDE_BOMBAROSSAS, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_PlatformRideBombarossas },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BRIDGE_AFTER_DARKNUT, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_BridgeAfterDarknut },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BRIDGE_SWITCHES_CLONE_BLOCK, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_BridgeSwitchesCloneBlock },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_ENTRANCE_ROOM, 0, 0, offset_gDungeonMaps_PalaceOfWinds_EntranceRoom },
{ AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_DARK_COMPASS_HALL, 0, 0,
offset_gDungeonMaps_PalaceOfWinds_DarkCompassHall },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout* const gDungeonLayouts_PalaceOfWinds[] = {
gDungeonLayouts_PalaceOfWinds_5F, gDungeonLayouts_PalaceOfWinds_4F, gDungeonLayouts_PalaceOfWinds_3F,
gDungeonLayouts_PalaceOfWinds_2F, gDungeonLayouts_PalaceOfWinds_1F,
};
const DungeonLayout gDungeonLayouts_TempleOfDroplets_B1[] = { { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WEST_HOLE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_WestHole }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_NORTH_SPLIT_ROOM, 0, 0, offset_gDungeonMaps_TempleOfDroplets_NorthSplitRoom }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_EAST_HOLE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_EastHole }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ENTRANCE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_Entrance }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_NORTHWEST_STAIRS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_NorthwestStairs }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_SCISSORS_MINIBOSS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_ScissorsMiniboss }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WATERFALL_NORTHWEST, 0, 0, offset_gDungeonMaps_TempleOfDroplets_WaterfallNorthwest }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WATERFALL_NORTHEAST, 0, 0, offset_gDungeonMaps_TempleOfDroplets_WaterfallNortheast }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ELEMENT, 0, 0, offset_gDungeonMaps_TempleOfDroplets_Element }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ICE_CORNER, 0, 0, offset_gDungeonMaps_TempleOfDroplets_IceCorner }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ICE_PIT_MAZE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_IcePitMaze }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_HOLE_TO_BLUE_CHU_KEY, 0, 0, offset_gDungeonMaps_TempleOfDroplets_HoleToBlueChuKey }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WEST_WATERFALL_SOUTHEAST, 0, 0, offset_gDungeonMaps_TempleOfDroplets_WestWaterfallSoutheast }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_WEST_WATERFALL_SOUTHWEST, 0, 0, offset_gDungeonMaps_TempleOfDroplets_WestWaterfallSouthwest }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BIG_OCTO, 2, 0, offset_gDungeonMaps_TempleOfDroplets_BigOcto }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_TO_BLUE_CHU, 0, 0, offset_gDungeonMaps_TempleOfDroplets_ToBlueChu }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLUE_CHU, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BlueChu }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_TempleOfDroplets_B2[] = { { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BOSS_KEY, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BossKey }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_NORTH_SMALL_KEY, 0, 0, offset_gDungeonMaps_TempleOfDroplets_NorthSmallKey }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLOCK_CLONE_BUTTON_PUZZLE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BlockCloneButtonPuzzle }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLOCK_CLONE_PUZZLE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BlockClonePuzzle }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLOCK_CLONE_ICE_BRIDGE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BlockCloneIceBridge }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_STAIRS_TO_SCISSORS_MINIBOSS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_StairsToScissorsMiniboss }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_SPIKE_BAR_FLIPPER_ROOM, 0, 0, offset_gDungeonMaps_TempleOfDroplets_SpikeBarFlipperRoom }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_9_LANTERNS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_9Lanterns }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_LILYPAD_ICE_BLOCKS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_LilypadIceBlocks }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_29, 0, 0, offset_gDungeonMaps_TempleOfDroplets_29 }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_MULLDOZERS_FIRE_BARS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_MulldozersFireBars }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_DARK_MAZE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_DarkMaze }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_TWIN_MADDERPILLARS, 1, 0, offset_gDungeonMaps_TempleOfDroplets_TwinMadderpillars }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_AFTER_TWIN_MADDERPILLARS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_AfterTwinMadderpillars }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLUE_CHU_KEY_LEVER, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BlueChuKeyLever }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_MULLDOZER_KEY, 1, 0, offset_gDungeonMaps_TempleOfDroplets_MulldozerKey }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BEFORE_TWIN_MADDERPILLARS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BeforeTwinMadderpillars }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_LILYPAD_B2_WEST, 0, 0, offset_gDungeonMaps_TempleOfDroplets_LilypadB2West }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_COMPASS, 0, 0, offset_gDungeonMaps_TempleOfDroplets_Compass }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_DARK_SCISSOR_BEETLES, 0, 0, offset_gDungeonMaps_TempleOfDroplets_DarkScissorBeetles }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_LILYPAD_B2_MIDDLE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_LilypadB2Middle }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_ICE_MADDERPILLAR, 0, 0, offset_gDungeonMaps_TempleOfDroplets_IceMadderpillar }, { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_FLAMEBAR_BLOCK_PUZZLE, 0, 0, offset_gDungeonMaps_TempleOfDroplets_FlamebarBlockPuzzle }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_TempleOfDroplets_B3[] = { { AREA_TEMPLE_OF_DROPLETS, ROOM_TEMPLE_OF_DROPLETS_BLUE_CHU_KEY, 0, 0, offset_gDungeonMaps_TempleOfDroplets_BlueChuKey }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout* const gDungeonLayouts_TempleOfDroplets[] = {gDungeonLayouts_TempleOfDroplets_B1, gDungeonLayouts_TempleOfDroplets_B2, gDungeonLayouts_TempleOfDroplets_B3, };
const DungeonLayout gDungeonLayouts_PalaceOfWinds_5F[] = { { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GYORG_TORNADO, 2, 0, offset_gDungeonMaps_PalaceOfWinds_GyorgTornado }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BOSS_KEY, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BossKey }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BEFORE_BALL_AND_CHAIN_SOLDIERS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BeforeBallAndChainSoldiers }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GYORG_BOSS_DOOR, 0, 0, offset_gDungeonMaps_PalaceOfWinds_GyorgBossDoor }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_EAST_CHEST_FROM_GYORG_BOSS_DOOR, 0, 0, offset_gDungeonMaps_PalaceOfWinds_EastChestFromGyorgBossDoor }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_MOBLIN_AND_WIZZROBE_FIGHT, 0, 0, offset_gDungeonMaps_PalaceOfWinds_MoblinAndWizzrobeFight }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FOUR_BUTTON_STALFOS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_FourButtonStalfos }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FAN_AND_KEY_TO_BOSS_KEY, 0, 0, offset_gDungeonMaps_PalaceOfWinds_FanAndKeyToBossKey }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BALL_AND_CHAIN_SOLDIERS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BallAndChainSoldiers }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BOMBAROSSA_PATH, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BombarossaPath }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_HOLE_TO_DARKNUT, 0, 0, offset_gDungeonMaps_PalaceOfWinds_HoleToDarknut }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_TO_BOMBAROSSA_PATH, 0, 0, offset_gDungeonMaps_PalaceOfWinds_ToBombarossaPath }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BOMB_WALL_INSIDE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BombWallInside }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BOMB_WALL_OUTSIDE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BombWallOutside }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_PalaceOfWinds_4F[] = { { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_CLOUD_JUMPS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_CloudJumps }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BLOCK_MAZE_TO_BOSS_DOOR, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BlockMazeToBossDoor }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_CRACKED_FLOOR_LAKITU, 0, 0, offset_gDungeonMaps_PalaceOfWinds_CrackedFloorLakitu }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_HEART_PIECE_BRIDGE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_HeartPieceBridge }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FAN_BRIDGE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_FanBridge }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_TO_FAN_BRIDGE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_ToFanBridge }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_RED_WARP_HALL, 0, 0, offset_gDungeonMaps_PalaceOfWinds_RedWarpHall }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_PalaceOfWinds_3F[] = { { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PLATFORM_CLONE_RIDE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_PlatformCloneRide }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PIT_CORNER_AFTER_KEY, 0, 0, offset_gDungeonMaps_PalaceOfWinds_PitCornerAfterKey }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PLATFORM_CROW_RIDE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_PlatformCrowRide }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GRATE_PLATFORM_RIDE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_GratePlatformRide }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_POT_PUSH, 0, 0, offset_gDungeonMaps_PalaceOfWinds_PotPush }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FLOORMASTER_LEVER, 0, 0, offset_gDungeonMaps_PalaceOfWinds_FloormasterLever }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_MAP, 0, 0, offset_gDungeonMaps_PalaceOfWinds_Map }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_CORNER_TO_MAP, 0, 0, offset_gDungeonMaps_PalaceOfWinds_CornerToMap }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_STAIRS_AFTER_FLOORMASTER, 0, 0, offset_gDungeonMaps_PalaceOfWinds_StairsAfterFloormaster }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_HOLE_TO_KINSTONE_WIZZROBE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_HoleToKinstoneWizzrobe }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_KEY_ARROW_BUTTON, 0, 0, offset_gDungeonMaps_PalaceOfWinds_KeyArrowButton }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_PalaceOfWinds_2F[] = { { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GRATES_TO_3F, 0, 0, offset_gDungeonMaps_PalaceOfWinds_GratesTo3f }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_SPINY_FIGHT, 0, 0, offset_gDungeonMaps_PalaceOfWinds_SpinyFight }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PEAHAT_SWITCH, 0, 0, offset_gDungeonMaps_PalaceOfWinds_PeahatSwitch }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_WHIRLWIND_BOMBAROSSA, 0, 0, offset_gDungeonMaps_PalaceOfWinds_WhirlwindBombarossa }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_DOOR_TO_STALFOS_FIREBAR, 0, 0, offset_gDungeonMaps_PalaceOfWinds_DoorToStalfosFirebar }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_STALFOS_FIREBAR_HOLE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_StalfosFirebarHole }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_SHORTCUT_DOOR_BUTTONS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_ShortcutDoorButtons }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_TO_PEAHAT_SWITCH, 0, 0, offset_gDungeonMaps_PalaceOfWinds_ToPeahatSwitch }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_KINSTONE_WIZZROBE_FIGHT, 0, 0, offset_gDungeonMaps_PalaceOfWinds_KinstoneWizzrobeFight }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_GIBDO_STAIRS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_GibdoStairs }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_SPIKE_BAR_SMALL_KEY, 0, 0, offset_gDungeonMaps_PalaceOfWinds_SpikeBarSmallKey }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_PalaceOfWinds_1F[] = { { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_DARKNUT_MINIBOSS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_DarknutMiniboss }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_ROC_CAPE, 0, 0, offset_gDungeonMaps_PalaceOfWinds_RocCape }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_FIRE_BAR_GRATES, 0, 0, offset_gDungeonMaps_PalaceOfWinds_FireBarGrates }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_PLATFORM_RIDE_BOMBAROSSAS, 0, 0, offset_gDungeonMaps_PalaceOfWinds_PlatformRideBombarossas }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BRIDGE_AFTER_DARKNUT, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BridgeAfterDarknut }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_BRIDGE_SWITCHES_CLONE_BLOCK, 0, 0, offset_gDungeonMaps_PalaceOfWinds_BridgeSwitchesCloneBlock }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_ENTRANCE_ROOM, 0, 0, offset_gDungeonMaps_PalaceOfWinds_EntranceRoom }, { AREA_PALACE_OF_WINDS, ROOM_PALACE_OF_WINDS_DARK_COMPASS_HALL, 0, 0, offset_gDungeonMaps_PalaceOfWinds_DarkCompassHall }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout* const gDungeonLayouts_PalaceOfWinds[] = {gDungeonLayouts_PalaceOfWinds_5F, gDungeonLayouts_PalaceOfWinds_4F, gDungeonLayouts_PalaceOfWinds_3F, gDungeonLayouts_PalaceOfWinds_2F, gDungeonLayouts_PalaceOfWinds_1F, };
const DungeonLayout gDungeonLayouts_DarkHyruleCastle_3F[] = { { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_TOP_LEFT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_3fTopLeftTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_TOP_RIGHT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_3fTopRightTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_BOTTOM_LEFT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_3fBottomLeftTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_BOTTOM_RIGHT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_3fBottomRightTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_KEATON_HALL_TO_VAATI, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_3fKeatonHallToVaati }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_TRIPLE_DARKNUT, 2, 0, offset_gDungeonMaps_DarkHyruleCastle_3fTripleDarknut }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_DarkHyruleCastle_2F[] = { { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_LEFT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fTopLeftTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_LEFT_CORNER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fTopLeftCorner }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOSS_KEY, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBossKey }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BLUE_WARP, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBlueWarp }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_CORNER_GHINI, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fTopRightCornerGhini }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_CORNER_TORCHES, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fTopRightCornerTorches }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fTopRightTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_LEFT_DARKNUT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fTopLeftDarknut }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_SPARKS, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fSparks }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_DARKNUTS, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fTopRightDarknuts }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_LEFT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fLeft }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_RIGHT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fRight }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_DARKNUTS, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBottomLeftDarknuts }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOSS_DOOR, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBossDoor }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_RIGHT_DARKNUT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBottomRightDarknut }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_CORNER_PUZZLE, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBottomLeftCornerPuzzle }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_ENTRANCE, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fEntrance }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_RIGHT_CORNER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBottomRightCorner }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBottomLeftTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_GHINI, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBottomLeftGhini }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_RIGHT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fBottomRightTower }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_DarkHyruleCastle_1F[] = { { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_ENTRANCE, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fEntrance }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_TOP_LEFT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fTopLeftTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_THRONE_ROOM, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fThroneRoom }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_COMPASS, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fCompass }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_TOP_RIGHT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fTopRightTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_BEFORE_THRONE, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fBeforeThrone }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_TOP_LEFT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fLoopTopLeft }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_TOP, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fLoopTop }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_TOP_RIGHT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fLoopTopRight }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_LEFT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fLoopLeft }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_RIGHT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fLoopRight }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_BOTTOM_LEFT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fLoopBottomLeft }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_BOTTOM, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fLoopBottom }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_BOTTOM_RIGHT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fLoopBottomRight }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_BOTTOM_LEFT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fBottomLeftTower }, { AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_BOTTOM_RIGHT_TOWER, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_1fBottomRightTower }, { 0, 0, 0, 0, 0 }, };
const DungeonLayout gDungeonLayouts_DarkHyruleCastle_3F[] = {
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_TOP_LEFT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_3fTopLeftTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_TOP_RIGHT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_3fTopRightTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_BOTTOM_LEFT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_3fBottomLeftTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_BOTTOM_RIGHT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_3fBottomRightTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_KEATON_HALL_TO_VAATI, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_3fKeatonHallToVaati },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_3F_TRIPLE_DARKNUT, 2, 0,
offset_gDungeonMaps_DarkHyruleCastle_3fTripleDarknut },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_DarkHyruleCastle_2F[] = {
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_LEFT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fTopLeftTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_LEFT_CORNER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fTopLeftCorner },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOSS_KEY, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBossKey },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BLUE_WARP, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBlueWarp },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_CORNER_GHINI, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fTopRightCornerGhini },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_CORNER_TORCHES, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fTopRightCornerTorches },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fTopRightTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_LEFT_DARKNUT, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fTopLeftDarknut },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_SPARKS, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fSparks },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_DARKNUTS, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fTopRightDarknuts },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_LEFT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fLeft },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_RIGHT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_2fRight },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_DARKNUTS, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBottomLeftDarknuts },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOSS_DOOR, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBossDoor },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_RIGHT_DARKNUT, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBottomRightDarknut },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_CORNER_PUZZLE, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBottomLeftCornerPuzzle },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_ENTRANCE, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fEntrance },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_RIGHT_CORNER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBottomRightCorner },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBottomLeftTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_GHINI, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBottomLeftGhini },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_RIGHT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_2fBottomRightTower },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_DarkHyruleCastle_1F[] = {
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_ENTRANCE, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fEntrance },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_TOP_LEFT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fTopLeftTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_THRONE_ROOM, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fThroneRoom },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_COMPASS, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fCompass },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_TOP_RIGHT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fTopRightTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_BEFORE_THRONE, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fBeforeThrone },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_TOP_LEFT, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fLoopTopLeft },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_TOP, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fLoopTop },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_TOP_RIGHT, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fLoopTopRight },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_LEFT, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fLoopLeft },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_RIGHT, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fLoopRight },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_BOTTOM_LEFT, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fLoopBottomLeft },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_BOTTOM, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fLoopBottom },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_LOOP_BOTTOM_RIGHT, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fLoopBottomRight },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_BOTTOM_LEFT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fBottomLeftTower },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_1F_BOTTOM_RIGHT_TOWER, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_1fBottomRightTower },
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout gDungeonLayouts_DarkHyruleCastle_B1[] = {
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_B1_ENTRANCE, 0, 0,
@ -1185,8 +1578,13 @@ const DungeonLayout gDungeonLayouts_DarkHyruleCastle_B1[] = {
offset_gDungeonMaps_DarkHyruleCastle_B1Keatons },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_B1_TO_PRISON_FIREBAR, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_B1ToPrisonFirebar },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_B1_CANNONS, 0, 0,
offset_gDungeonMaps_DarkHyruleCastle_B1Cannons, },
{
AREA_DARK_HYRULE_CASTLE,
ROOM_DARK_HYRULE_CASTLE_B1_CANNONS,
0,
0,
offset_gDungeonMaps_DarkHyruleCastle_B1Cannons,
},
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_B1_LEFT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_B1Left },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_B1_RIGHT, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_B1Right },
{ AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_B1_MAP, 0, 0, offset_gDungeonMaps_DarkHyruleCastle_B1Map },
@ -1201,12 +1599,20 @@ const DungeonLayout gDungeonLayouts_DarkHyruleCastle_B2[] = {
{ 0, 0, 0, 0, 0 },
};
const DungeonLayout* const gDungeonLayouts_DarkHyruleCastle[] = {gDungeonLayouts_DarkHyruleCastle_3F, gDungeonLayouts_DarkHyruleCastle_2F, gDungeonLayouts_DarkHyruleCastle_1F, gDungeonLayouts_DarkHyruleCastle_B1, gDungeonLayouts_DarkHyruleCastle_B2, };
const DungeonLayout* const* const gDungeonLayouts[] = {gDungeonLayouts_None, gDungeonLayouts_DeepwoodShrine, gDungeonLayouts_CaveOfFlames, gDungeonLayouts_FortressOfWinds, gDungeonLayouts_TempleOfDroplets, gDungeonLayouts_PalaceOfWinds, gDungeonLayouts_DarkHyruleCastle, };
const DungeonLayout* const gDungeonLayouts_DarkHyruleCastle[] = {
gDungeonLayouts_DarkHyruleCastle_3F, gDungeonLayouts_DarkHyruleCastle_2F, gDungeonLayouts_DarkHyruleCastle_1F,
gDungeonLayouts_DarkHyruleCastle_B1, gDungeonLayouts_DarkHyruleCastle_B2,
};
const DungeonLayout* const* const gDungeonLayouts[] = {
gDungeonLayouts_None,
gDungeonLayouts_DeepwoodShrine,
gDungeonLayouts_CaveOfFlames,
gDungeonLayouts_FortressOfWinds,
gDungeonLayouts_TempleOfDroplets,
gDungeonLayouts_PalaceOfWinds,
gDungeonLayouts_DarkHyruleCastle,
};
const DungeonFloorMetadata gDungeonFloorMetadatas[] = {
{ 1, 2, 2 }, { 3, 3, 3 }, { 4, 3, 0 }, { 3, 5, 5 }, { 3, 2, 2 }, { 5, 7, 7 }, { 5, 5, 5 }, { 1, 3, 3 },

View File

@ -165,7 +165,6 @@ const AreaHeader gAreaMetadata[] = {
{ 0, 0, 0, 0 },
};
const OverworldLocation gOverworldLocations[] = {
{ 0, 0, 62, 74, 0, TEXT_INDEX(TEXT_WINDCRESTS, 0x0b) },
{ 0, 75, 62, 104, 1, TEXT_INDEX(TEXT_WINDCRESTS, 0x0c) },

View File

@ -0,0 +1,247 @@
#include "assets/map_offsets.h"
#include "map.h"
/*
Tiles for the borders of the cave that are loaded during the transition.
When the player goes inside a cave during the start of the enter transition the border metatilemap is loaded and at the
end the metatilemap for the cave is loaded. When the player goes out of a cave during the start of the leave transition
the border metatilemap is loaded and at the end the metatilemap for the outside is loaded.
*/
const MapDataDefinition gCaveBorder_LakeWoods_enter_start[] = {
{ offset_gCaveBorder_LakeWoods_outside, gMapTop.mapData, MAP_COMPRESSED | 7938 },
};
const MapDataDefinition gCaveBorder_LakeWoods_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_LakeWoodsCave_Main_bottom, gMapBottom.mapData, MAP_COMPRESSED | 7938 },
{ offset_gAreaRoomMap_LakeWoodsCave_Main_top, gMapTop.mapData, MAP_COMPRESSED | 7938 },
};
const MapDataDefinition* const gCaveBorder_LakeWoods_enter[] = {
gCaveBorder_LakeWoods_enter_start,
gCaveBorder_LakeWoods_enter_end,
};
const MapDataDefinition gCaveBorder_LakeWoods_leave_start[] = {
{ offset_gCaveBorder_LakeWoods_inside, gMapTop.mapData, MAP_COMPRESSED | 7938 },
};
const MapDataDefinition gCaveBorder_LakeWoods_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_MinishWoods_Main_bottom, gMapBottom.mapData, MAP_COMPRESSED | 7938 },
{ offset_gAreaRoomMap_MinishWoods_Main_top, gMapTop.mapData, MAP_COMPRESSED | 7938 },
};
const MapDataDefinition* const gCaveBorder_LakeWoods_leave[] = {
gCaveBorder_LakeWoods_leave_start,
gCaveBorder_LakeWoods_leave_end,
};
const MapDataDefinition gCaveBorder_HyruleTown_enter_start[] = {
{ offset_gCaveBorder_HyruleTown_outside, gMapTop.mapData, MAP_COMPRESSED | 7560 },
};
const MapDataDefinition gCaveBorder_HyruleTown_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_HyruleDigCaves_Town_bottom, gMapBottom.mapData, MAP_COMPRESSED | 7560 },
{ offset_gAreaRoomMap_HyruleDigCaves_Town_top, gMapTop.mapData, MAP_COMPRESSED | 7560 },
};
const MapDataDefinition* const gCaveBorder_HyruleTown_enter[] = {
gCaveBorder_HyruleTown_enter_start,
gCaveBorder_HyruleTown_enter_end,
};
const MapDataDefinition gCaveBorder_HyruleTown_leave_start[] = {
{ offset_gCaveBorder_HyruleTown_inside, gMapTop.mapData, MAP_COMPRESSED | 7560 },
};
const MapDataDefinition gCaveBorder_HyruleTown_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_HyruleTown_Main_bottom, gMapBottom.mapData, MAP_COMPRESSED | 7560 },
{ offset_gAreaRoomMap_HyruleTown_Main_top, gMapTop.mapData, MAP_COMPRESSED | 7560 },
};
const MapDataDefinition* const gCaveBorder_HyruleTown_leave[] = {
gCaveBorder_HyruleTown_leave_start,
gCaveBorder_HyruleTown_leave_end,
};
const MapDataDefinition gCaveBorder_EasternHills_enter_start[] = {
{ offset_gCaveBorder_EasternHills_outside, gMapTop.mapData, MAP_COMPRESSED | 2040 },
};
const MapDataDefinition gCaveBorder_EasternHills_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_DigCaves_EasternHills_bottom, gMapBottom.mapData, MAP_COMPRESSED | 2040 },
{ offset_gAreaRoomMap_DigCaves_EasternHills_top, gMapTop.mapData, MAP_COMPRESSED | 2040 },
};
const MapDataDefinition* const gCaveBorder_EasternHills_enter[] = {
gCaveBorder_EasternHills_enter_start,
gCaveBorder_EasternHills_enter_end,
};
const MapDataDefinition gCaveBorder_EasternHills_leave_start[] = {
{ offset_gCaveBorder_EasternHills_inside, gMapTop.mapData, MAP_COMPRESSED | 2040 },
};
const MapDataDefinition gCaveBorder_EasternHills_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_HyruleField_EasternHillsNorth_bottom, gMapBottom.mapData,
MAP_COMPRESSED | 2040 },
{ offset_gAreaRoomMap_HyruleField_EasternHillsNorth_top, gMapTop.mapData, MAP_COMPRESSED | 2040 },
};
const MapDataDefinition* const gCaveBorder_EasternHills_leave[] = {
gCaveBorder_EasternHills_leave_start,
gCaveBorder_EasternHills_leave_end,
};
const MapDataDefinition gCaveBorder_Crenel_enter_start[] = {
{ offset_gCaveBorder_Crenel_outside, gMapTop.mapData, MAP_COMPRESSED | 1824 },
};
const MapDataDefinition gCaveBorder_Crenel_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_CrenelDigCave_0_bottom, gMapBottom.mapData, MAP_COMPRESSED | 1984 },
{ offset_gAreaRoomMap_CrenelDigCave_0_top, gMapTop.mapData, MAP_COMPRESSED | 1984 },
};
const MapDataDefinition* const gCaveBorder_Crenel_enter[] = {
gCaveBorder_Crenel_enter_start,
gCaveBorder_Crenel_enter_end,
};
const MapDataDefinition gCaveBorder_Crenel_leave_start[] = {
{ offset_gCaveBorder_Crenel_inside, gMapTop.mapData, MAP_COMPRESSED | 1984 },
};
const MapDataDefinition gCaveBorder_Crenel_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_MtCrenel_WallClimb_bottom, gMapBottom.mapData, MAP_COMPRESSED | 1824 },
{ offset_gAreaRoomMap_MtCrenel_WallClimb_top, gMapTop.mapData, MAP_COMPRESSED | 1824 },
};
const MapDataDefinition* const gCaveBorder_Crenel_leave[] = {
gCaveBorder_Crenel_leave_start,
gCaveBorder_Crenel_leave_end,
};
const MapDataDefinition gCaveBorder_VeilFalls_enter_start[] = {
{ offset_gCaveBorder_VeilFalls_outside, gMapTop.mapData, MAP_COMPRESSED | 3780 },
};
const MapDataDefinition gCaveBorder_VeilFalls_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_VeilFallsDigCave_0_bottom, gMapBottom.mapData, MAP_COMPRESSED | 3780 },
{ offset_gAreaRoomMap_VeilFallsDigCave_0_top, gMapTop.mapData, MAP_COMPRESSED | 3780 },
};
const MapDataDefinition* const gCaveBorder_VeilFalls_enter[] = {
gCaveBorder_VeilFalls_enter_start,
gCaveBorder_VeilFalls_enter_end,
};
const MapDataDefinition gCaveBorder_VeilFalls_leave_start[] = {
{ offset_gCaveBorder_VeilFalls_inside, gMapTop.mapData, MAP_COMPRESSED | 3780 },
};
const MapDataDefinition gCaveBorder_VeilFalls_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_VeilFalls_Main_bottom, gMapBottom.mapData, MAP_COMPRESSED | 3780 },
{ offset_gAreaRoomMap_VeilFalls_Main_top, gMapTop.mapData, MAP_COMPRESSED | 3780 },
};
const MapDataDefinition* const gCaveBorder_VeilFalls_leave[] = {
gCaveBorder_VeilFalls_leave_start,
gCaveBorder_VeilFalls_leave_end,
};
const MapDataDefinition gCaveBorder_TrilbyHighlands_enter_start[] = {
{ offset_gCaveBorder_TrilbyHighlands_outside, gMapTop.mapData, MAP_COMPRESSED | 3600 },
};
const MapDataDefinition gCaveBorder_TrilbyHighlands_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_DigCaves_TrilbyHighlands_bottom, gMapBottom.mapData, MAP_COMPRESSED | 3600 },
{ offset_gAreaRoomMap_DigCaves_TrilbyHighlands_top, gMapTop.mapData, MAP_COMPRESSED | 3600 },
};
const MapDataDefinition* const gCaveBorder_TrilbyHighlands_enter[] = {
gCaveBorder_TrilbyHighlands_enter_start,
gCaveBorder_TrilbyHighlands_enter_end,
};
const MapDataDefinition gCaveBorder_TrilbyHighlands_leave_start[] = {
{ offset_gCaveBorder_TrilbyHighlands_inside, gMapTop.mapData, MAP_COMPRESSED | 3600 },
};
const MapDataDefinition gCaveBorder_TrilbyHighlands_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_HyruleField_TrilbyHighlands_bottom, gMapBottom.mapData,
MAP_COMPRESSED | 3600 },
{ offset_gAreaRoomMap_HyruleField_TrilbyHighlands_top, gMapTop.mapData, MAP_COMPRESSED | 3600 },
};
const MapDataDefinition* const gCaveBorder_TrilbyHighlands_leave[] = {
gCaveBorder_TrilbyHighlands_leave_start,
gCaveBorder_TrilbyHighlands_leave_end,
};
const MapDataDefinition gCaveBorder_CastorWilds_enter_start[] = {
{ offset_gCaveBorder_CastorWilds_outside, gMapTop.mapData, MAP_COMPRESSED | 7560 },
};
const MapDataDefinition gCaveBorder_CastorWilds_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_CastorWildsDigCave_0_bottom, gMapBottom.mapData, MAP_COMPRESSED | 7560 },
{ offset_gAreaRoomMap_CastorWildsDigCave_0_top, gMapTop.mapData, MAP_COMPRESSED | 7560 },
};
const MapDataDefinition* const gCaveBorder_CastorWilds_enter[] = {
gCaveBorder_CastorWilds_enter_start,
gCaveBorder_CastorWilds_enter_end,
};
const MapDataDefinition gCaveBorder_CastorWilds_leave_start[] = {
{ offset_gCaveBorder_CastorWilds_inside, gMapTop.mapData, MAP_COMPRESSED | 7560 },
};
const MapDataDefinition gCaveBorder_CastorWilds_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_CastorWilds_Main_bottom, gMapBottom.mapData, MAP_COMPRESSED | 7560 },
{ offset_gAreaRoomMap_CastorWilds_Main_top, gMapTop.mapData, MAP_COMPRESSED | 7560 },
};
const MapDataDefinition* const gCaveBorder_CastorWilds_leave[] = {
gCaveBorder_CastorWilds_leave_start,
gCaveBorder_CastorWilds_leave_end,
};
const MapDataDefinition gCaveBorder_LakeHyliaNorth_enter_start[] = {
{ offset_gCaveBorder_LakeHyliaNorth_outside, gMapTop.mapData, MAP_COMPRESSED | 5760 },
};
const MapDataDefinition gCaveBorder_LakeHyliaNorth_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_HyliaDigCaves_1_bottom, gMapBottom.mapData, MAP_COMPRESSED | 3402 },
{ offset_gAreaRoomMap_HyliaDigCaves_1_top, gMapTop.mapData, MAP_COMPRESSED | 3402 },
};
const MapDataDefinition* const gCaveBorder_LakeHyliaNorth_enter[] = {
gCaveBorder_LakeHyliaNorth_enter_start,
gCaveBorder_LakeHyliaNorth_enter_end,
};
const MapDataDefinition gCaveBorder_LakeHyliaNorth_leave_start[] = {
{ offset_gCaveBorder_LakeHyliaNorth_inside, gMapTop.mapData, MAP_COMPRESSED | 3402 },
};
const MapDataDefinition gCaveBorder_LakeHyliaNorth_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_LakeHylia_Main_bottom, gMapBottom.mapData, MAP_COMPRESSED | 5760 },
{ offset_gAreaRoomMap_LakeHylia_Main_top, gMapTop.mapData, MAP_COMPRESSED | 5760 },
};
const MapDataDefinition* const gCaveBorder_LakeHyliaNorth_leave[] = {
gCaveBorder_LakeHyliaNorth_leave_start,
gCaveBorder_LakeHyliaNorth_leave_end,
};
const MapDataDefinition gCaveBorder_LonLonRanch_enter_start[] = {
{ offset_gCaveBorder_LonLonRanch_outside, gMapTop.mapData, MAP_COMPRESSED | 7938 },
};
const MapDataDefinition* const gCaveBorder_LonLonRanch_enter[] = {
gCaveBorder_LonLonRanch_enter_start,
gCaveBorder_LakeHyliaNorth_enter_end,
};
const MapDataDefinition gCaveBorder_LonLonRanch_leave_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_HyruleField_LonLonRanch_bottom, gMapBottom.mapData, MAP_COMPRESSED | 5400 },
{ offset_gAreaRoomMap_HyruleField_LonLonRanch_top, gMapTop.mapData, MAP_COMPRESSED | 5400 },
};
const MapDataDefinition* const gCaveBorder_LonLonRanch_leave[] = {
gCaveBorder_LakeHyliaNorth_leave_start,
gCaveBorder_LonLonRanch_leave_end,
};
const MapDataDefinition gCaveBorder_LakeHyliaCenter_enter_end[] = {
{ MAP_MULTIPLE | offset_gAreaRoomMap_HyliaDigCaves_0_bottom, gMapBottom.mapData, MAP_COMPRESSED | 544 },
{ offset_gAreaRoomMap_HyliaDigCaves_0_top, gMapTop.mapData, MAP_COMPRESSED | 544 },
};
const MapDataDefinition* const gCaveBorder_LakeHyliaCenter_enter[] = {
gCaveBorder_LakeHyliaNorth_enter_start,
gCaveBorder_LakeHyliaCenter_enter_end,
};
const MapDataDefinition gCaveBorder_LakeHyliaCenter_leave_start[] = {
{ offset_gCaveBorder_LakeHyliaCenter_inside, gMapTop.mapData, MAP_COMPRESSED | 544 },
};
const MapDataDefinition* const gCaveBorder_LakeHyliaCenter_leave[] = {
gCaveBorder_LakeHyliaCenter_leave_start,
gCaveBorder_LakeHyliaNorth_leave_end,
};
const MapDataDefinition* const* const gCaveBorderMapData[] = {
gCaveBorder_LakeWoods_enter, gCaveBorder_LakeWoods_leave, gCaveBorder_HyruleTown_enter,
gCaveBorder_HyruleTown_leave, gCaveBorder_EasternHills_enter, gCaveBorder_EasternHills_leave,
gCaveBorder_Crenel_enter, gCaveBorder_Crenel_leave, gCaveBorder_VeilFalls_enter,
gCaveBorder_VeilFalls_leave, gCaveBorder_TrilbyHighlands_enter, gCaveBorder_TrilbyHighlands_leave,
gCaveBorder_CastorWilds_enter, gCaveBorder_CastorWilds_leave, gCaveBorder_LakeHyliaNorth_enter,
gCaveBorder_LakeHyliaNorth_leave, gCaveBorder_LonLonRanch_enter, gCaveBorder_LonLonRanch_leave,
gCaveBorder_LakeHyliaCenter_enter, gCaveBorder_LakeHyliaCenter_leave,
};

View File

@ -46,9 +46,9 @@ const Transition gExitList_MinishWoods_Main[] = {
{ WARP_TYPE_AREA, 0x00, 0x0088, 0x0218, 0x0218, 0x0118, 0x00, AREA_MINISH_CAVES,
ROOM_MINISH_CAVES_MINISH_WOODS_SOUTHWEST, 1, TRANSITION_TYPE_NORMAL, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ WARP_TYPE_BORDER, 0x00, 0x0000, 0x0000, 0x01d8, 0x0fff, 0x40, AREA_HYRULE_FIELD,
ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH, 1, TRANSITION_TYPE_NORMAL, 0x06, 0x00, 0x00, 0x00, 0x00 },
ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH, 1, TRANSITION_TYPE_NORMAL, 0x06, 0x00, 0x00, 0x00, 0x00 },
{ WARP_TYPE_BORDER, 0x00, 0x0000, 0x0000, 0x01d8, 0x00a0, 0x80, AREA_HYRULE_FIELD,
ROOM_HYRULE_FIELD_EASTERN_HILLLS_SOUTH, 1, TRANSITION_TYPE_NORMAL, 0x06, 0x00, 0x00, 0x00, 0x00 },
ROOM_HYRULE_FIELD_EASTERN_HILLS_SOUTH, 1, TRANSITION_TYPE_NORMAL, 0x06, 0x00, 0x00, 0x00, 0x00 },
{ WARP_TYPE_BORDER, 0x00, 0x0000, 0x0000, 0x0fff, 0x03b8, 0x01, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN, 1,
TRANSITION_TYPE_NORMAL, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ WARP_TYPE_BORDER, 0x00, 0x0000, 0x0000, 0x0fff, 0x03ac, 0x02, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN, 1,
@ -446,9 +446,9 @@ const Transition gExitList_HyruleField_WesternWoodsCenter[] = {
const Transition* const gExitLists_HyruleField[] = {
[ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH] = gExitList_HyruleField_WesternWoodSouth,
[ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD] = gExitList_HyruleField_SouthHyruleField,
[ROOM_HYRULE_FIELD_EASTERN_HILLLS_SOUTH] = gExitList_HyruleField_EasternHillsSouth,
[ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER] = gExitList_HyruleField_EasternHillsCenter,
[ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH] = gExitList_HyruleField_EasternHillsNorth,
[ROOM_HYRULE_FIELD_EASTERN_HILLS_SOUTH] = gExitList_HyruleField_EasternHillsSouth,
[ROOM_HYRULE_FIELD_EASTERN_HILLS_CENTER] = gExitList_HyruleField_EasternHillsCenter,
[ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH] = gExitList_HyruleField_EasternHillsNorth,
[ROOM_HYRULE_FIELD_LON_LON_RANCH] = gExitList_HyruleField_LonLonRanch,
[ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD] = gExitList_HyruleField_NorthHyruleField,
[ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS] = gExitList_HyruleField_TrilbyHighlands,
@ -628,7 +628,7 @@ const Transition gExitList_Beanstalks_RuinsClimb[] = {
const Transition gExitList_Beanstalks_EasternHillsClimb[] = {
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x58, 0x68, 0x3, AREA_BEANSTALKS, ROOM_BEANSTALKS_EASTERN_HILLS, 1,
TRANSITION_TYPE_NORMAL, 0x0, 0x0, 0x0, 0x0, 0x0 },
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x48, 0x18, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER,
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x48, 0x18, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_CENTER,
1, TRANSITION_TYPE_NORMAL, 0x0, 0x0, 0x0, 0x0, 0x0 },
TransitionListEnd,
};
@ -923,7 +923,7 @@ const Transition gExitList_MinishHouseInteriors_Librari[] = {
TransitionListEnd,
};
const Transition gExitList_MinishHouseInteriors_HyruleFieldExit[] = {
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x38, 0x35, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_SOUTH,
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x38, 0x35, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_SOUTH,
1, TRANSITION_TYPE_INSTANT_MINISH, 0x4, 0x0, 0x0, 0x0, 0x0 },
TransitionListEnd,
};
@ -1108,7 +1108,7 @@ const Transition gExitList_HouseInteriors2_DrLeft[] = {
TransitionListEnd,
};
const Transition gExitList_HouseInteriors2_NULL1[] = {
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x40, 0x5c, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH,
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x40, 0x5c, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH,
1, TRANSITION_TYPE_NORMAL, 0x4, 0x0, 0x0, 0x0, 0x0 },
TransitionListEnd,
};
@ -1244,7 +1244,7 @@ const Transition gExitList_HouseInteriors4_RanchHouseEast[] = {
TransitionListEnd,
};
const Transition gExitList_HouseInteriors4_FarmHouse[] = {
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x40, 0x5c, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH,
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0x40, 0x5c, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH,
1, TRANSITION_TYPE_NORMAL, 0x4, 0x0, 0x0, 0x0, 0x0 },
TransitionListEnd,
};
@ -2273,7 +2273,7 @@ const Transition gExitList_Caves_TrilbyMittsFairyFountain[] = {
TransitionListEnd,
};
const Transition gExitList_Caves_HillsKeeseChest[] = {
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0xa8, 0xa8, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER,
{ WARP_TYPE_BORDER, 0x0, 0x0, 0x0, 0xa8, 0xa8, 0x30, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_CENTER,
1, TRANSITION_TYPE_NORMAL, 0x4, 0x0, 0x0, 0x0, 0x0 },
TransitionListEnd,
};

View File

@ -24,7 +24,6 @@ void sub_080A2F8C(void);
extern u8 gUnk_02000004;
void sub_080A3198(u32, u32);
extern u8 gUnk_02017760[];
extern u8 gUnk_08A05751[];
// sprite_table
@ -59,8 +58,8 @@ void sub_080A2E40(void) {
LoadGfxGroups();
LoadPaletteGroup(0xb5);
LoadGfxGroup(0x56);
MemCopy(&gUnk_089FD1B4, &gUnk_02017760[0], 0x100);
MemCopy(&gUnk_089FD1B4, &gUnk_02017760[0x200], 0x100);
MemCopy(&gUnk_089FD1B4, gPaletteBuffer + 96, 0x100);
MemCopy(&gUnk_089FD1B4, gPaletteBuffer + 352, 0x100);
MemCopy(&gUnk_089FD2F4, (void*)0x6000000, 0x8000);
MemCopy(&gUnk_089FD2F4, (void*)0x6010000, 0x8000);
MemCopy(&gUnk_08A05751, &gBG1Buffer, 0x800);

View File

@ -171,7 +171,7 @@ void AcroBandit_Type0Action1(Entity* this) {
if (this->timer != 0) {
this->timer--;
} else {
if (sub_08049FDC(this, 1)) {
if (sub_08049FDC(this, 1) != 0) {
rand = Random();
x = this->field_0x74.HWORD + ((s32)rand % 5) * 0x10 - 0x20;
y = this->field_0x76.HWORD + ((s32)(rand >> 4) % 5) * 0x10 - 0x20;

View File

@ -200,7 +200,7 @@ void sub_0802AAC0(Entity* this) {
this->child = NULL;
#ifdef EU
} else if (ent->timer == 0) {
if (sub_080B1B44(COORD_TO_TILE(this), 1) == 0) {
if (GetCollisionData(COORD_TO_TILE(this), 1) == 0) {
if (EntityInRectRadius(this, &gPlayerEntity, 0x10, 0x10) && ent->subtimer <= 0x50) {
this->field_0x80.HALF.HI = 0;
}

View File

@ -245,7 +245,7 @@ void sub_080387F0(CloudPiranhaEntity* this) {
const s8* ptr;
if ((super->action != 4) && (this->unk_82 == 0)) {
iVar4 = sub_080B1B44(COORD_TO_TILE(super), super->collisionLayer);
iVar4 = GetCollisionData(COORD_TO_TILE(super), super->collisionLayer);
if ((iVar4 == 0xf) || (iVar4 == 0x2a)) {
this->unk_82 = 0x20;
}

View File

@ -294,7 +294,7 @@ void Enemy64_Action3(Enemy64Entity* this) {
void Enemy64_Action3_SubAction0(Enemy64Entity* this) {
u32 tmp = CalculateDirectionFromOffsets(gRoomControls.origin_x + 0xa8 - super->x.HALF.HI,
gRoomControls.origin_y + 0x80 - super->y.HALF.HI);
gRoomControls.origin_y + 0x80 - super->y.HALF.HI);
if (tmp != super->direction) {
if (((tmp - super->direction) & 0x80) != 0) {
super->direction--;
@ -494,7 +494,7 @@ void sub_080499F0(Enemy64Entity* this) {
if (EntityWithinDistance(&gPlayerEntity, super->x.HALF.HI, super->y.HALF.HI, 0x24) &&
((this->unk_7c & 2) == 0)) {
tmp = CalculateDirectionFromOffsets((s32)gPlayerEntity.x.HALF.HI - super->x.HALF.HI,
(s32)gPlayerEntity.y.HALF.HI - super->y.HALF.HI);
(s32)gPlayerEntity.y.HALF.HI - super->y.HALF.HI);
gPlayerEntity.x.WORD = super->x.WORD + gSineTable[tmp] * 0x2400;
gPlayerEntity.y.WORD = super->y.WORD + gSineTable[tmp + 0x40] * -0x2400;
}

View File

@ -7,6 +7,7 @@
#include "entity.h"
#include "functions.h"
#include "sound.h"
#include "assets/map_offsets.h"
extern u8 gEntCount;
extern u8 gMapDataTopSpecial[];
@ -29,10 +30,10 @@ void sub_080467DC(GyorgFemaleEntity*);
extern u8 gUpdateVisibleTiles;
extern u8 gUnk_080B3E80[];
extern const u8 gUnk_080D1A94[];
extern const u8 gUnk_080D1AAC[];
extern const u8 gUnk_080D1AC4[];
extern const u8 gUnk_080D1ADC[];
extern const MapDataDefinition gGyorgMapping0[];
extern const MapDataDefinition gGyorgMapping1[];
extern const MapDataDefinition gGyorgMapping2[];
extern const MapDataDefinition gGyorgMapping3[];
void GyorgFemale_Setup(GyorgFemaleEntity* this);
void GyorgFemale_Action1(GyorgFemaleEntity* this);
@ -219,16 +220,16 @@ void sub_08046498(GyorgFemaleEntity* this) {
#endif
void sub_080464C0(GyorgFemaleEntity* this) {
static const void* const gUnk_080D1A74[] = {
gUnk_080D1A94,
gUnk_080D1AAC,
gUnk_080D1AC4,
gUnk_080D1ADC,
static const MapDataDefinition* const gyorgMappings[] = {
gGyorgMapping0,
gGyorgMapping1,
gGyorgMapping2,
gGyorgMapping3,
};
s32 i;
u8* src;
u8* dst;
LoadMapData((MapDataDefinition*)gUnk_080D1A74[super->animationState >> 6]);
LoadMapData((MapDataDefinition*)gyorgMappings[super->animationState >> 6]);
sub_08046518();
for (i = 0x20, src = ((u8*)&gMapDataBottomSpecial), dst = ((u8*)&gMapDataBottomSpecial) + 0x3260; i != 0; i--) {
MemCopy(src, dst, 0x40);
@ -284,81 +285,24 @@ void sub_0804660C(GyorgFemaleEntity* this, u32 unk1) {
super->y.HALF.HI = p[1] + gRoomControls.origin_y;
}
// todo: correct type
const u8 gUnk_080D1A94[] = {
#if defined(JP) || defined(DEMO_JP)
0x7C,
#elif defined(EU)
0x50,
#else
0x08,
#endif
0x41, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80,
#if defined(JP) || defined(DEMO_JP)
0x2C, 0xD3,
#elif defined(EU)
0x00, 0xD3,
#else
0xB8, 0xD2,
#endif
0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80,
const MapDataDefinition gGyorgMapping0[] = {
{ MAP_MULTIPLE | offset_gyorgMapping_0_bottom, gMapDataBottomSpecial, MAP_COMPRESSED | 2048 },
{ offset_gAreaRoomMap_PalaceOfWindsBoss_0_top, gMapTop.mapData, MAP_COMPRESSED | 8064 },
};
const u8 gUnk_080D1AAC[] = {
#if defined(JP) || defined(DEMO_JP)
0xFC,
#elif defined(EU)
0xD0,
#else
0x88,
#endif
0x3D, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80,
#if defined(JP) || defined(DEMO_JP)
0xF8,
#elif defined(EU)
0xCC,
#else
0x84,
#endif
0xD6, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80,
const MapDataDefinition gGyorgMapping1[] = {
{ MAP_MULTIPLE | offset_gyorgMapping_1_bottom, gMapDataBottomSpecial, MAP_COMPRESSED | 2048 },
{ offset_gyorgRoomMap_1_top, gMapTop.mapData, MAP_COMPRESSED | 8064 },
};
const u8 gUnk_080D1AC4[] = {
#if defined(JP) || defined(DEMO_JP)
0xE4,
#elif defined(EU)
0xB8,
#else
0x70,
#endif
0x36, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80,
#if defined(JP) || defined(DEMO_JP)
0xC0,
#elif defined(EU)
0x94,
#else
0x4C,
#endif
0xDA, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80,
const MapDataDefinition gGyorgMapping2[] = {
{ MAP_MULTIPLE | offset_gyorgMapping_2_bottom, gMapDataBottomSpecial, MAP_COMPRESSED | 2048 },
{ offset_gyorgRoomMap_2_top, gMapTop.mapData, MAP_COMPRESSED | 8064 },
};
const u8 gUnk_080D1ADC[] = {
#if defined(JP) || defined(DEMO_JP)
0x78,
#elif defined(EU)
0x4C,
#else
0x04,
#endif
0x3A, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80,
#if defined(JP) || defined(DEMO_JP)
0x88,
#elif defined(EU)
0x5C,
#else
0x14,
#endif
0xDE, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80,
const MapDataDefinition gGyorgMapping3[] = {
{ MAP_MULTIPLE | offset_gyorgMapping_3_bottom, gMapDataBottomSpecial, MAP_COMPRESSED | 2048 },
{ offset_gyorgRoomMap_3_top, gMapTop.mapData, MAP_COMPRESSED | 8064 },
};
void GyorgFemale_SpawnChildren(GyorgFemaleEntity* this, bool32 unlimit_tmp) {

View File

@ -286,7 +286,8 @@ void sub_08046B8C(GyorgMaleEntity* this) {
this->unk_82 = gRoomControls.origin_y + 0x210;
sub_08047D88(this);
} else {
super->direction = CalculateDirectionFromOffsets(this->unk_80 - super->x.HALF.HI, this->unk_82 - super->y.HALF.HI);
super->direction =
CalculateDirectionFromOffsets(this->unk_80 - super->x.HALF.HI, this->unk_82 - super->y.HALF.HI);
sub_08047DF0(this, ((0x100 - super->direction) & 0xFF) << 8);
}
}
@ -314,7 +315,8 @@ void sub_08046C88(GyorgMaleEntity* this) {
sub_08048178(this, sub_08048158(this->unk_70));
sub_08047D88(this);
} else {
super->direction = CalculateDirectionFromOffsets(this->unk_80 - super->x.HALF.HI, this->unk_82 - super->y.HALF.HI);
super->direction =
CalculateDirectionFromOffsets(this->unk_80 - super->x.HALF.HI, this->unk_82 - super->y.HALF.HI);
sub_08047DF0(this, ((0x100 - super->direction) & 0xFF) << 8);
}
}
@ -372,7 +374,8 @@ void sub_08046E0C(GyorgMaleEntity* this) {
this->unk_76 = super->direction << 8;
sub_08047D88(this);
} else {
super->direction = CalculateDirectionFromOffsets(this->unk_80 - super->x.HALF.HI, this->unk_82 - super->y.HALF.HI);
super->direction =
CalculateDirectionFromOffsets(this->unk_80 - super->x.HALF.HI, this->unk_82 - super->y.HALF.HI);
sub_08047DF0(this, ((0x100 - super->direction) & 0xFF) << 8);
}
}
@ -1069,7 +1072,8 @@ void sub_08047EA4(GyorgMaleEntity* this, u32 unk1) {
return;
if (this->unk_7c & 1) {
tmp2 = sub_08047F68(this) << 8;
dir = CalculateDirectionFromOffsets(gPlayerEntity.x.HALF.HI - super->x.HALF.HI, gPlayerEntity.y.HALF.HI - super->y.HALF.HI);
dir = CalculateDirectionFromOffsets(gPlayerEntity.x.HALF.HI - super->x.HALF.HI,
gPlayerEntity.y.HALF.HI - super->y.HALF.HI);
tmp = dir - (tmp / 256);
tmp &= 0xFF;
gPlayerEntity.x.WORD += (gSineTable[tmp] - gSineTable[dir]) * tmp2;
@ -1152,7 +1156,7 @@ void sub_08048004(GyorgMaleEntity* this) {
if (EntityWithinDistance(&gPlayerEntity, super->x.HALF.HI, super->y.HALF.HI, 0x24)) {
if (!(this->unk_7c & 2)) {
u32 tmp = CalculateDirectionFromOffsets(gPlayerEntity.x.HALF.HI - super->x.HALF.HI,
gPlayerEntity.y.HALF.HI - super->y.HALF.HI);
gPlayerEntity.y.HALF.HI - super->y.HALF.HI);
gPlayerEntity.x.WORD = super->x.WORD + (gSineTable[tmp] * 9216);
gPlayerEntity.y.WORD = super->y.WORD - (gSineTable[tmp + 0x40] * 9216);
}

View File

@ -8,7 +8,6 @@
#include "enemy.h"
#include "physics.h"
extern u32 sub_080B1B18(s32, s32, u32);
extern u32 sub_080B1AB4(s32, s32, u32);
extern Entity* gUnk_020000B0;

View File

@ -340,7 +340,7 @@ void sub_08029E0C(Entity* this) {
tile = COORD_TO_TILE(this);
for (i = 0; i < 3; i++) {
dir = ptr[iVar3];
if (sub_080B1B44(gUnk_080B4488[dir >> 3] + tile, this->collisionLayer) == 0) {
if (GetCollisionData(gUnk_080B4488[dir >> 3] + tile, this->collisionLayer) == 0) {
local_24 = dir;
if (this->direction - this->field_0x74.HALF.LO != dir - this->direction)
break;

View File

@ -168,12 +168,13 @@ void OctorokBoss_Hit_SubAction1(OctorokBossEntity* this) {
if (diffX > 8 || diffY > 8) {
this->heap->field_0x2 = 1;
#if defined(JP) || defined(DEMO_JP) || defined(EU)
super->direction = ((s32)CalculateDirectionFromOffsets((((gRoomControls.origin_x + 0x108) << 0x10) - super->x.WORD),
(((gRoomControls.origin_y + 0x88) << 0x10) - super->y.WORD))) >>
3;
super->direction =
((s32)CalculateDirectionFromOffsets((((gRoomControls.origin_x + 0x108) << 0x10) - super->x.WORD),
(((gRoomControls.origin_y + 0x88) << 0x10) - super->y.WORD))) >>
3;
#else
super->direction = ((s32)CalculateDirectionFromOffsets(gRoomControls.origin_x + 0x108 - super->x.HALF.HI,
gRoomControls.origin_y + 0x88 - super->y.HALF.HI)) >>
gRoomControls.origin_y + 0x88 - super->y.HALF.HI)) >>
3;
#endif
super->speed = 0x100;
@ -690,8 +691,9 @@ void OctorokBoss_Action1_AimTowardsPlayer(OctorokBossEntity* this) {
s32 tmp1;
s32 tmp2;
tmp1 = (u8)(CalculateDirectionFromOffsets(gPlayerEntity.x.WORD - super->x.WORD, gPlayerEntity.y.WORD - super->y.WORD) -
(((u8)(-this->angle.HALF.HI) ^ 0x80)));
tmp1 =
(u8)(CalculateDirectionFromOffsets(gPlayerEntity.x.WORD - super->x.WORD, gPlayerEntity.y.WORD - super->y.WORD) -
(((u8)(-this->angle.HALF.HI) ^ 0x80)));
if (IS_FROZEN(this) == FALSE) {
tmp2 = 8;
} else {
@ -898,7 +900,8 @@ void OctorokBoss_ExecuteAttackVacuum(OctorokBossEntity* this) {
s32 tmp;
if (this->unk_80 == 0) {
super->direction = CalculateDirectionFromOffsets(gPlayerEntity.x.WORD - super->x.WORD, gPlayerEntity.y.WORD - super->y.WORD);
super->direction =
CalculateDirectionFromOffsets(gPlayerEntity.x.WORD - super->x.WORD, gPlayerEntity.y.WORD - super->y.WORD);
tmp = ((u8) - (this->angle.HALF.HI + 0x80)) - super->direction;
if (tmp < 0) {
tmp = -tmp;
@ -911,9 +914,9 @@ void OctorokBoss_ExecuteAttackVacuum(OctorokBossEntity* this) {
if (sub_0806FC80(super, &gPlayerEntity, 0x48) != 0) {
this->unk_80 = 1;
this->timer = 2;
this->heap->targetAngle =
CalculateDirectionFromOffsets((gRoomControls.origin_x + 0x108) * 0x10000 - super->x.WORD,
(gRoomControls.origin_y + 0x88) * 0x10000 - super->y.WORD);
this->heap->targetAngle = CalculateDirectionFromOffsets(
(gRoomControls.origin_x + 0x108) * 0x10000 - super->x.WORD,
(gRoomControls.origin_y + 0x88) * 0x10000 - super->y.WORD);
this->heap->targetAngle = (u8) - (this->heap->targetAngle + 0x80);
SoundReq(SFX_ED);
}
@ -956,7 +959,8 @@ void OctorokBoss_ExecuteAttackVacuum(OctorokBossEntity* this) {
} else {
this->timer--;
if ((gPlayerState.flags == PL_FROZEN) && (this->timer == 0x3c)) {
tmp = CalculateDirectionFromOffsets(gPlayerEntity.x.WORD - super->x.WORD, gPlayerEntity.y.WORD - super->y.WORD);
tmp = CalculateDirectionFromOffsets(gPlayerEntity.x.WORD - super->x.WORD,
gPlayerEntity.y.WORD - super->y.WORD);
if ((u8)((tmp - ((u8) - this->angle.HALF.HI ^ 0x80))) > 0x80) {
this->heap->targetAngle = this->angle.HALF.HI + 0x30;
} else {
@ -1177,9 +1181,9 @@ void sub_08036AF0(OctorokBossEntity* this, s32 radius, s32 angleSpeed) {
heap->tailObjects[index - 1]->base.y.HALF.HI)) {
continue;
} else {
heap->tailObjects[index - 1]->angle.HALF.HI =
CalculateDirectionFromOffsets(heap->tailObjects[index - 1]->base.x.WORD - heap->tailObjects[index]->base.x.WORD,
heap->tailObjects[index - 1]->base.y.WORD - heap->tailObjects[index]->base.y.WORD);
heap->tailObjects[index - 1]->angle.HALF.HI = CalculateDirectionFromOffsets(
heap->tailObjects[index - 1]->base.x.WORD - heap->tailObjects[index]->base.x.WORD,
heap->tailObjects[index - 1]->base.y.WORD - heap->tailObjects[index]->base.y.WORD);
tmp = FixedMul(gSineTable[heap->tailObjects[index - 1]->angle.HALF.HI], radius << 4);
tmp = FixedDiv(tmp, 0x100);
heap->tailObjects[index - 1]->base.x.WORD = heap->tailObjects[index]->base.x.WORD + ((s32)tmp << 8);

View File

@ -336,7 +336,7 @@ void sub_080244E8(Entity* this) {
switch (this->field_0x80.HALF.LO) {
case 0:
if (--this->timer == 0) {
if (sub_080B1B44(COORD_TO_TILE(this), 1) == 0) {
if (GetCollisionData(COORD_TO_TILE(this), 1) == 0) {
this->field_0x80.HALF.LO++;
this->field_0x82.HALF.LO++;
this->subtimer = 0;

View File

@ -510,7 +510,7 @@ void sub_08025A54(Entity* this) {
}
bool32 sub_08025AB8(u32 tile, u32 layer) {
if (sub_080B1B44(tile, layer))
if (GetCollisionData(tile, layer))
return FALSE;
if (sub_080B1AE0(tile, layer) == 10) {

View File

@ -323,7 +323,7 @@ void sub_08033D78(SpinyBeetleEntity* this) {
case 0x1c5:
break;
default:
if (sub_080B1B44(tile, super->collisionLayer) - 1 > 0x3e)
if (GetCollisionData(tile, super->collisionLayer) - 1 > 0x3e)
ProcessMovement0(super);
break;
}

View File

@ -230,7 +230,7 @@ void sub_0802EFB8(Entity* this) {
uVar3 = GetFacingDirection(&gPlayerEntity, this);
uVar1 = (uVar3 + 4) & 0x18;
}
iVar4 = sub_080B1B44(TILE(this->x.HALF.HI, this->y.HALF.HI) + gUnk_080B4488[((uVar1) >> 3)], 1);
iVar4 = GetCollisionData(TILE(this->x.HALF.HI, this->y.HALF.HI) + gUnk_080B4488[((uVar1) >> 3)], 1);
if (iVar4 != 0) {
this->direction = 0xff;
} else {

View File

@ -276,7 +276,7 @@ void sub_0803E4D8(Entity* this) {
u32 tile;
tile = TILE(this->x.HALF.HI, this->y.HALF.HI + 8);
if (sub_080B1B44(tile, gPlayerEntity.collisionLayer) != 0xff) {
if (GetCollisionData(tile, gPlayerEntity.collisionLayer) != 0xff) {
SetTile(0x4074, tile, gPlayerEntity.collisionLayer);
}
}

View File

@ -236,7 +236,7 @@ void sub_0802F8E4(WizzrobeEntity* this) {
iVar4 = ((s32)(rand)&0x7ff0) % (this->unk_6f << 3);
uVar7 = (uVar1 + iVar4) | 8;
uVar6 = TILE(uVar8, uVar7);
if ((sub_080B1B44(uVar6, super->collisionLayer) == 0) &&
if ((GetCollisionData(uVar6, super->collisionLayer) == 0) &&
(GetTileIndex(uVar6, super->collisionLayer) != 0x4071)) {
super->x.HALF.HI = (s16)uVar8;
super->y.HALF.HI = (s16)uVar7;

View File

@ -20,8 +20,6 @@
extern void ClearArmosData(void);
extern void sub_080300C4(void);
extern u8 gUnk_02017700[];
bool32 sub_0804AD18(void);
void sub_0804AD6C(RoomControls*);
bool32 sub_0804ACA8(void);
@ -185,8 +183,8 @@ void Subtask_PortalCutscene_0(void) {
ptr = &gUnk_080D4138[portalId];
LoadPaletteGroup(ptr->paletteGroup);
LoadGfxGroup(ptr->gfxGroup);
MemCopy(&gUnk_02017700, gUnk_02017700 + 0x240, 0x20);
gUsedPalettes |= 0x200000;
MemCopy(gPaletteBuffer + 3 * 16, gPaletteBuffer + 21 * 16, 16 * 2);
gUsedPalettes |= 1 << 21;
EraseAllEntities();
LoadRoomEntityList(gUnk_080D4110[portalId]);
ResetSystemPriority();

View File

@ -350,7 +350,7 @@ void LoadOptionsFromSave(u32 idx) {
gSaveHeader->msg_speed = msg_speed;
gSaveHeader->brightness = brightness;
gUsedPalettes = 0xFFFFFFFF;
gUsedPalettes = 0xffffffff;
}
void SetActiveSave(u32 idx) {

View File

@ -85,7 +85,7 @@ const WorldEvent gWorldEvents[] = {
OUGONTEKI_B },
{ WORLD_EVENT_TYPE_1, 2, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 480, 80, 600, 168, 600, 1848, CND_1,
LOCAL_BANK_0, OUGONTEKI_C },
{ WORLD_EVENT_TYPE_1, 3, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH, 0, 352, 120, 440, 2616, 2600,
{ WORLD_EVENT_TYPE_1, 3, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH, 0, 352, 120, 440, 2616, 2600,
CND_1, LOCAL_BANK_0, OUGONTEKI_D },
{ WORLD_EVENT_TYPE_1, 4, AREA_CASTLE_GARDEN, ROOM_CASTLE_GARDEN_MAIN, 768, 160, 936, 248, 2424, 440, CND_1,
LOCAL_BANK_0, OUGONTEKI_E },
@ -97,7 +97,7 @@ const WorldEvent gWorldEvents[] = {
LOCAL_BANK_0, OUGONTEKI_H },
{ WORLD_EVENT_TYPE_1, 8, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_CENTER, 176, 0, 312, 88, 1320, 2888,
CND_1, LOCAL_BANK_0, OUGONTEKI_I },
{ WORLD_EVENT_TYPE_2, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH, 80, 288, 200, 376, 2696, 2536,
{ WORLD_EVENT_TYPE_2, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH, 80, 288, 200, 376, 2696, 2536,
CND_1, LOCAL_BANK_1, KAKERA_TAKARA_A },
{ WORLD_EVENT_TYPE_2, 0, AREA_CRENEL_MINISH_PATHS, ROOM_CRENEL_MINISH_PATHS_RAIN, 272, 16, 392, 88, 744, 152, CND_1,
LOCAL_BANK_3, KAKERA_TAKARA_B },
@ -228,7 +228,7 @@ const WorldEvent gWorldEvents[] = {
LOCAL_BANK_1, BEANDEMO_01 }, // uses different flags due to CND_6
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_RUINS, ROOM_RUINS_BEANSTALK, 0, 0, 72, 72, 312, 2712, CND_7, LOCAL_BANK_1,
BEANDEMO_02 }, // uses different flags due to CND_7
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER, 0, 0, 72, 56, 2568,
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_CENTER, 0, 0, 72, 56, 2568,
2760, CND_8, LOCAL_BANK_1, BEANDEMO_03 }, // uses different flags due to CND_8
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH, 0, 0, 56, 56, 1064, 3016,
CND_9, LOCAL_BANK_1, BEANDEMO_04 }, // uses different flags due to CND_9
@ -245,7 +245,7 @@ const WorldEvent gWorldEvents[] = {
LOCAL_BANK_1, BEANDEMO_01 }, // uses different flags due to CND_6
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_RUINS, ROOM_RUINS_BEANSTALK, 0, 0, 72, 72, 312, 2712, CND_0, LOCAL_BANK_1,
BEANDEMO_02 }, // uses different flags due to CND_7
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER, 0, 0, 72, 56, 2568,
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_CENTER, 0, 0, 72, 56, 2568,
2760, CND_0, LOCAL_BANK_1, BEANDEMO_03 }, // uses different flags due to CND_8
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH, 0, 0, 56, 56, 1064, 3016,
CND_0, LOCAL_BANK_1, BEANDEMO_04 }, // uses different flags due to CND_9
@ -341,7 +341,7 @@ const WorldEvent gWorldEvents[] = {
LOCAL_BANK_1, BEANDEMO_01 }, // uses different flags due to CND_6
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_RUINS, ROOM_RUINS_BEANSTALK, 0, 0, 72, 72, 312, 2712, CND_7, LOCAL_BANK_1,
BEANDEMO_02 }, // uses different flags due to CND_7
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER, 0, 0, 72, 56, 2568,
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLS_CENTER, 0, 0, 72, 56, 2568,
2760, CND_8, LOCAL_BANK_1, BEANDEMO_03 }, // uses different flags due to CND_8
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH, 0, 0, 56, 56, 1064, 3016,
CND_9, LOCAL_BANK_1, BEANDEMO_04 }, // uses different flags due to CND_9

View File

@ -824,16 +824,15 @@ void LoadItemGfx(void) {
LoadGfxGroup(GetInventoryValue(ITEM_MAGIC_BOOMERANG) ? 28 : 27);
}
extern u16 gUnk_020178E0[];
void sub_080533CC(void) {
u16* p1 = gUnk_020178E0;
u16* p2 = gUnk_020178E0 - 0x100;
u16* p1 = gPaletteBuffer + 288;
u16* p2 = gPaletteBuffer + 32;
*p2++ = *p1++;
*p2++ = *p1++;
*p2++ = *p1++;
*p2++ = *p1++;
*p2++ = *p1++;
gUsedPalettes |= 8;
gUsedPalettes |= 1 << 3;
}
void UpdateTimerCallbacks(void) {

View File

@ -181,7 +181,7 @@ s32 sub_080774A0(void) {
uVar3 = COORD_TO_TILE_OFFSET((&gPlayerEntity), -gUnk_0811BE1E[gPlayerEntity.animationState & 6],
-gUnk_0811BE1E[(gPlayerEntity.animationState & 6) + 1]);
iVar2 = sub_080B1B44(uVar3, gPlayerEntity.collisionLayer);
iVar2 = GetCollisionData(uVar3, gPlayerEntity.collisionLayer);
if (iVar2 > 0x16)
return 0;

View File

@ -1,64 +1,66 @@
#include "manager.h"
// TODO: change all manager arguments to be Entity* and cast to specific type later.
void (*const gMiscManagerunctions[])() = { NULL,
LightRayManager_Main,
VerticalMinishPathBackgroundManager_Main,
MinishPortalManager_Main,
DiggingCaveEntranceManager_Main,
BridgeManager_Main,
SpecialWarpManager_Main,
MinishVillageTilesetManager_Main,
HorizontalMinishPathBackgroundManager_Main,
MinishRaftersBackgroundManager_Main,
EzloHintManager_Main,
FightManager_Main,
RollingBarrelManager_Main,
TileChangeObserveManager_Main,
EntitySpawnManager_Main,
MiscManager_Main,
WeatherChangeManager_Main,
FlagAndOperatorManager_Main,
HyruleTownTilesetManager_Main,
HouseSignManager_Main,
SteamOverlayManager_Main,
TempleOfDropletsManager_Main,
DelayedEntityLoadManager_Main,
FallingItemManager_Main,
CloudOverlayManager_Main,
PowBackgroundManager_Main,
HoleManager_Main,
StaticBackgroundManager_Main,
RainfallManager_Main,
AnimatedBackgroundManager_Main,
RegionTriggerManager_Main,
RailIntersectionManager_Main,
MoveableObjectManager_Main,
MinishSizedEntranceManager_Main,
LightManager_Main,
LightLevelSetManager_Main,
BombableWallManager_Main,
FlameManager_Main,
PushableFurnitureManager_Main,
ArmosInteriorManager_Main,
EnemyInteractionManager_Main,
Manager29_Main,
DestructibleTileObserveManager_Main,
AngryStatueManager_Main,
CloudStaircaseTransitionManager_Main,
WaterfallBottomManager_Main,
SecretManager_Main,
Vaati3BackgroundManager_Main,
TilePuzzleManager_Main,
GoronMerchantShopManager_Main,
VaatiAppearingManager_Main,
HyruleTownBellManager_Main,
Vaati3InsideArmManager_Main,
CameraTargetManager_Main,
RepeatedSoundManager_Main,
Vaati3StartManager_Main,
FloatingPlatformManager_Main,
EnterRoomTextboxManager_Main };
void (*const gMiscManagerunctions[])() = {
NULL,
LightRayManager_Main,
VerticalMinishPathBackgroundManager_Main,
MinishPortalManager_Main,
DiggingCaveEntranceManager_Main,
BridgeManager_Main,
SpecialWarpManager_Main,
MinishVillageTilesetManager_Main,
HorizontalMinishPathBackgroundManager_Main,
MinishRaftersBackgroundManager_Main,
EzloHintManager_Main,
FightManager_Main,
RollingBarrelManager_Main,
TileChangeObserveManager_Main,
EntitySpawnManager_Main,
MiscManager_Main,
WeatherChangeManager_Main,
FlagAndOperatorManager_Main,
HyruleTownTilesetManager_Main,
HouseSignManager_Main,
SteamOverlayManager_Main,
TempleOfDropletsManager_Main,
DelayedEntityLoadManager_Main,
FallingItemManager_Main,
CloudOverlayManager_Main,
PowBackgroundManager_Main,
HoleManager_Main,
StaticBackgroundManager_Main,
RainfallManager_Main,
AnimatedBackgroundManager_Main,
RegionTriggerManager_Main,
RailIntersectionManager_Main,
MoveableObjectManager_Main,
MinishSizedEntranceManager_Main,
LightManager_Main,
LightLevelSetManager_Main,
BombableWallManager_Main,
FlameManager_Main,
PushableFurnitureManager_Main,
ArmosInteriorManager_Main,
EnemyInteractionManager_Main,
Manager29_Main,
DestructibleTileObserveManager_Main,
AngryStatueManager_Main,
CloudStaircaseTransitionManager_Main,
WaterfallBottomManager_Main,
SecretManager_Main,
Vaati3BackgroundManager_Main,
TilePuzzleManager_Main,
GoronMerchantShopManager_Main,
VaatiAppearingManager_Main,
HyruleTownBellManager_Main,
Vaati3InsideArmManager_Main,
CameraTargetManager_Main,
RepeatedSoundManager_Main,
Vaati3StartManager_Main,
FloatingPlatformManager_Main,
EnterRoomTextboxManager_Main,
};
void ManagerUpdate(Entity* this) {
if (!EntityIsDeleted(this))

View File

@ -141,85 +141,94 @@ const DiggingCaveEntrance* GetDiggingCaveEntranceForRoom(const DiggingCaveEntran
static const DiggingCaveEntrance diggingCaveEntrancesEmpty[] = { END_OF_LIST };
static const DiggingCaveEntrance diggingCaveEntrancesMinishWoods[] = {
{ TILE_POS(37, 19), ROOM_MINISH_WOODS_MAIN, 0x0, AREA_LAKE_WOODS_CAVE, ROOM_LAKE_WOODS_CAVE_MAIN,
{ TILE_POS(37, 19), ROOM_MINISH_WOODS_MAIN, CAVE_LAKE_WOODS_ENTER, AREA_LAKE_WOODS_CAVE, ROOM_LAKE_WOODS_CAVE_MAIN,
TILE_POS(37, 51) },
{ TILE_POS(31, 15), ROOM_MINISH_WOODS_MAIN, 0x0, AREA_LAKE_WOODS_CAVE, ROOM_LAKE_WOODS_CAVE_MAIN,
{ TILE_POS(31, 15), ROOM_MINISH_WOODS_MAIN, CAVE_LAKE_WOODS_ENTER, AREA_LAKE_WOODS_CAVE, ROOM_LAKE_WOODS_CAVE_MAIN,
TILE_POS(31, 47) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesHyruleField[] = {
{ TILE_POS(3, 11), ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH, 0x4, AREA_DIG_CAVES, ROOM_DIG_CAVES_EASTERN_HILLS,
TILE_POS(3, 11) },
{ TILE_POS(35, 5), ROOM_HYRULE_FIELD_LON_LON_RANCH, 0x10, AREA_HYLIA_DIG_CAVES, ROOM_HYLIA_DIG_CAVES_1,
TILE_POS(8, 17) },
{ TILE_POS(5, 14), ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, 0xa, AREA_DIG_CAVES, ROOM_DIG_CAVES_TRILBY_HIGHLANDS,
TILE_POS(5, 14) },
{ TILE_POS(16, 14), ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, 0xa, AREA_DIG_CAVES, ROOM_DIG_CAVES_TRILBY_HIGHLANDS,
TILE_POS(16, 14) },
{ TILE_POS(3, 11), ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH, CAVE_EASTERN_HILL_ENTER, AREA_DIG_CAVES,
ROOM_DIG_CAVES_EASTERN_HILLS, TILE_POS(3, 11) },
{ TILE_POS(35, 5), ROOM_HYRULE_FIELD_LON_LON_RANCH, CAVE_LON_LON_RANCH_ENTER, AREA_HYLIA_DIG_CAVES,
ROOM_HYLIA_DIG_CAVES_1, TILE_POS(8, 17) },
{ TILE_POS(5, 14), ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, CAVE_TRILBY_HIGHLANDS_ENTER, AREA_DIG_CAVES,
ROOM_DIG_CAVES_TRILBY_HIGHLANDS, TILE_POS(5, 14) },
{ TILE_POS(16, 14), ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, CAVE_TRILBY_HIGHLANDS_ENTER, AREA_DIG_CAVES,
ROOM_DIG_CAVES_TRILBY_HIGHLANDS, TILE_POS(16, 14) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesHyruleTown[] = { { TILE_POS(45, 24), ROOM_HYRULE_TOWN_MAIN, 0x2,
AREA_HYRULE_DIG_CAVES,
static const DiggingCaveEntrance diggingCaveEntrancesHyruleTown[] = { { TILE_POS(45, 24), ROOM_HYRULE_TOWN_MAIN,
CAVE_HYRULE_TOWN_ENTER, AREA_HYRULE_DIG_CAVES,
ROOM_HYRULE_DIG_CAVES_TOWN, TILE_POS(45, 40) },
END_OF_LIST };
static const DiggingCaveEntrance diggingCaveEntrancesMtCrenel[] = {
{ TILE_POS(3, 5), ROOM_MT_CRENEL_WALL_CLIMB, 0x6, AREA_CRENEL_DIG_CAVE, ROOM_CRENEL_DIG_CAVE_0, TILE_POS(3, 25) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesMtCrenel[] = { { TILE_POS(3, 5), ROOM_MT_CRENEL_WALL_CLIMB,
CAVE_CRENEL_ENTER, AREA_CRENEL_DIG_CAVE,
ROOM_CRENEL_DIG_CAVE_0, TILE_POS(3, 25) },
END_OF_LIST };
static const DiggingCaveEntrance diggingCaveEntrancesVeilFalls[] = {
{ TILE_POS(26, 37), ROOM_VEIL_FALLS_MAIN, 0x8, AREA_VEIL_FALLS_DIG_CAVE, ROOM_VEIL_FALLS_DIG_CAVE_0,
TILE_POS(26, 37) },
{ TILE_POS(14, 39), ROOM_VEIL_FALLS_MAIN, 0x8, AREA_VEIL_FALLS_DIG_CAVE, ROOM_VEIL_FALLS_DIG_CAVE_0,
TILE_POS(14, 39) },
{ TILE_POS(26, 37), ROOM_VEIL_FALLS_MAIN, CAVE_VEIL_FALLS_ENTER, AREA_VEIL_FALLS_DIG_CAVE,
ROOM_VEIL_FALLS_DIG_CAVE_0, TILE_POS(26, 37) },
{ TILE_POS(14, 39), ROOM_VEIL_FALLS_MAIN, CAVE_VEIL_FALLS_ENTER, AREA_VEIL_FALLS_DIG_CAVE,
ROOM_VEIL_FALLS_DIG_CAVE_0, TILE_POS(14, 39) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesCastorWilds[] = {
{ TILE_POS(48, 25), ROOM_CASTOR_WILDS_MAIN, 0xc, AREA_CASTOR_WILDS_DIG_CAVE, ROOM_CASTOR_WILDS_DIG_CAVE_0,
TILE_POS(48, 25) },
{ TILE_POS(48, 25), ROOM_CASTOR_WILDS_MAIN, CAVE_CASTOR_WILDS_ENTER, AREA_CASTOR_WILDS_DIG_CAVE,
ROOM_CASTOR_WILDS_DIG_CAVE_0, TILE_POS(48, 25) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesLakeHylia[] = {
{ TILE_POS(30, 5), ROOM_LAKE_HYLIA_MAIN, 0xe, AREA_HYLIA_DIG_CAVES, ROOM_HYLIA_DIG_CAVES_1, TILE_POS(46, 17) },
{ TILE_POS(30, 30), ROOM_LAKE_HYLIA_MAIN, 0x12, AREA_HYLIA_DIG_CAVES, ROOM_HYLIA_DIG_CAVES_0, TILE_POS(8, 9) },
{ TILE_POS(30, 5), ROOM_LAKE_HYLIA_MAIN, CAVE_LAKE_HYLIA_NORTH_ENTER, AREA_HYLIA_DIG_CAVES, ROOM_HYLIA_DIG_CAVES_1,
TILE_POS(46, 17) },
{ TILE_POS(30, 30), ROOM_LAKE_HYLIA_MAIN, CAVE_LAKE_HYLIA_CENTER_ENTER, AREA_HYLIA_DIG_CAVES,
ROOM_HYLIA_DIG_CAVES_0, TILE_POS(8, 9) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesLakeWoodsCave[] = {
{ TILE_POS(37, 51), ROOM_LAKE_WOODS_CAVE_MAIN, 0x1, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, TILE_POS(37, 19) },
{ TILE_POS(31, 47), ROOM_LAKE_WOODS_CAVE_MAIN, 0x1, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, TILE_POS(31, 15) },
{ TILE_POS(37, 51), ROOM_LAKE_WOODS_CAVE_MAIN, CAVE_LAKE_WOODS_LEAVE, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN,
TILE_POS(37, 19) },
{ TILE_POS(31, 47), ROOM_LAKE_WOODS_CAVE_MAIN, CAVE_LAKE_WOODS_LEAVE, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN,
TILE_POS(31, 15) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesHyruleDigCaves[] = {
{ TILE_POS(45, 40), ROOM_HYRULE_DIG_CAVES_TOWN, 0x3, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, TILE_POS(45, 24) },
{ TILE_POS(45, 40), ROOM_HYRULE_DIG_CAVES_TOWN, CAVE_HYRULE_TOWN_LEAVE, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN,
TILE_POS(45, 24) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesAreaDigCaves[] = {
{ TILE_POS(3, 11), ROOM_DIG_CAVES_EASTERN_HILLS, 0x5, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH,
TILE_POS(3, 11) },
{ TILE_POS(5, 14), ROOM_DIG_CAVES_TRILBY_HIGHLANDS, 0xb, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS,
TILE_POS(5, 14) },
{ TILE_POS(16, 14), ROOM_DIG_CAVES_TRILBY_HIGHLANDS, 0xb, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS,
TILE_POS(16, 14) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesCrenelDigCave[] = {
{ TILE_POS(3, 25), ROOM_CRENEL_DIG_CAVE_0, 0x7, AREA_MT_CRENEL, ROOM_MT_CRENEL_WALL_CLIMB, TILE_POS(3, 5) },
{ TILE_POS(3, 11), ROOM_DIG_CAVES_EASTERN_HILLS, CAVE_EASTERN_HILL_LEAVE, AREA_HYRULE_FIELD,
ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH, TILE_POS(3, 11) },
{ TILE_POS(5, 14), ROOM_DIG_CAVES_TRILBY_HIGHLANDS, CAVE_TRILBY_HIGHLANDS_LEAVE, AREA_HYRULE_FIELD,
ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, TILE_POS(5, 14) },
{ TILE_POS(16, 14), ROOM_DIG_CAVES_TRILBY_HIGHLANDS, CAVE_TRILBY_HIGHLANDS_LEAVE, AREA_HYRULE_FIELD,
ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, TILE_POS(16, 14) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesCrenelDigCave[] = { { TILE_POS(3, 25), ROOM_CRENEL_DIG_CAVE_0,
CAVE_CRENEL_LEAVE, AREA_MT_CRENEL,
ROOM_MT_CRENEL_WALL_CLIMB, TILE_POS(3, 5) },
END_OF_LIST };
static const DiggingCaveEntrance diggingCaveEntrancesVeilFallsDigCave[] = {
{ TILE_POS(26, 37), ROOM_VEIL_FALLS_DIG_CAVE_0, 0x9, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, TILE_POS(26, 37) },
{ TILE_POS(14, 39), ROOM_VEIL_FALLS_DIG_CAVE_0, 0x9, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, TILE_POS(14, 39) },
{ TILE_POS(26, 37), ROOM_VEIL_FALLS_DIG_CAVE_0, CAVE_VEIL_FALLS_LEAVE, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN,
TILE_POS(26, 37) },
{ TILE_POS(14, 39), ROOM_VEIL_FALLS_DIG_CAVE_0, CAVE_VEIL_FALLS_LEAVE, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN,
TILE_POS(14, 39) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesCastorWildsDigCave[] = {
{ TILE_POS(48, 25), ROOM_CASTOR_WILDS_DIG_CAVE_0, 0xd, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN,
TILE_POS(48, 25) },
{ TILE_POS(48, 25), ROOM_CASTOR_WILDS_DIG_CAVE_0, CAVE_CASTOR_WILDS_LEAVE, AREA_CASTOR_WILDS,
ROOM_CASTOR_WILDS_MAIN, TILE_POS(48, 25) },
END_OF_LIST
};
static const DiggingCaveEntrance diggingCaveEntrancesHyliaDigCaves[] = {
{ TILE_POS(46, 17), ROOM_HYLIA_DIG_CAVES_1, 0xf, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN, TILE_POS(30, 5) },
{ TILE_POS(8, 17), ROOM_HYLIA_DIG_CAVES_1, 0x11, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_LON_LON_RANCH,
TILE_POS(35, 5) },
{ TILE_POS(8, 9), ROOM_HYLIA_DIG_CAVES_0, 0x13, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN, TILE_POS(30, 30) },
{ TILE_POS(46, 17), ROOM_HYLIA_DIG_CAVES_1, CAVE_LAKE_HYLIA_NORTH_LEAVE, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN,
TILE_POS(30, 5) },
{ TILE_POS(8, 17), ROOM_HYLIA_DIG_CAVES_1, CAVE_LON_LON_RANCH_LEAVE, AREA_HYRULE_FIELD,
ROOM_HYRULE_FIELD_LON_LON_RANCH, TILE_POS(35, 5) },
{ TILE_POS(8, 9), ROOM_HYLIA_DIG_CAVES_0, CAVE_LAKE_HYLIA_CENTER_LEAVE, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN,
TILE_POS(30, 30) },
END_OF_LIST
};

View File

@ -37,14 +37,14 @@ typedef struct struct_08108764 {
u16 unk_06;
u16 unk_08;
u16 unk_0a;
} * unk_0c;
}* unk_0c;
struct {
u8 unk_00;
u8 unk_01;
u8 unk_02[2];
u16 unk_04;
u16 unk_06;
} * unk_10;
}* unk_10;
} struct_08108764;
extern struct_08108764 gUnk_08108764[];

View File

@ -113,15 +113,15 @@ void sub_08059B18(void) {
if (CheckGlobalFlag(TATEKAKE_HOUSE) != 0) {
for (loopVar = 0; loopVar < 4; ++loopVar) {
for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
SetMetaTileByIndex(loopVar * 0x10 + 0x4ab + innerLoopVar, COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10),
1);
SetMetaTileByIndex(loopVar * 0x10 + 0x4ab + innerLoopVar,
COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1);
}
}
for (loopVar = 0; loopVar < 3; ++loopVar) {
for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
SetMetaTileByIndex(loopVar * 0x10 + 0x440 + innerLoopVar, COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10),
2);
SetMetaTileByIndex(loopVar * 0x10 + 0x440 + innerLoopVar,
COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 2);
}
}
SetMetaTileByIndex(0xd6, 0x5c2, 2);
@ -132,7 +132,7 @@ void sub_08059B18(void) {
for (loopVar = 0; loopVar < 5; ++loopVar) {
for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
SetMetaTileByIndex(loopVar * 0x10 + 0x4a6 + innerLoopVar,
COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1);
COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1);
}
}
SetMetaTileByIndex(0x444, 0x602, 2);

View File

@ -32,8 +32,8 @@ void sub_0805CBD0(Manager29* this) {
super->action = 1;
this->unk_38 = (this->unk_38 >> 4 & 0x3fU) | (((this->unk_3a << 0x10) >> 0x14 & 0x3fU) << 6);
this->unk_3a = (this->unk_3c >> 4 & 0x3f) | (((this->unk_36 + this->unk_37 * 0x100) >> 4 & 0x3fU) << 6);
this->unk_3c = GetTileType(this->unk_38, this->unk_34);
layer = GetLayerByIndex(this->unk_34);
this->unk_3c = GetTileType(this->unk_38, this->layer);
layer = GetLayerByIndex(this->layer);
this->unk_28 = (u16*)layer->metatileTypes;
this->unk_2c = &layer->mapData[(s16)this->unk_3a];
}
@ -46,7 +46,7 @@ void sub_0805CC3C(Manager29* this) {
iVar3 = this->unk_38;
iVar2 = (short)this->unk_3a;
if (this->unk_34 == 1) {
if (this->layer == 1) {
uVar4 = 0x321;
} else {
uVar4 = 0x322;
@ -54,74 +54,74 @@ void sub_0805CC3C(Manager29* this) {
switch (super->type) {
default:
sub_0807B7D8(uVar4, iVar3, this->unk_34);
sub_0807B7D8(0x365, iVar2, this->unk_34);
sub_0807B7D8(uVar4, iVar3, this->layer);
sub_0807B7D8(0x365, iVar2, this->layer);
break;
case 1:
sub_0807B7D8(uVar4, iVar3, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 1, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x40, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x41, this->unk_34);
sub_0807B7D8(this->unk_3c, iVar2, this->unk_34);
sub_0807B7D8(0x36f, iVar2 + 1, this->unk_34);
sub_0807B7D8(0x370, iVar2 + 0x40, this->unk_34);
sub_0807B7D8(0x371, iVar2 + 0x41, this->unk_34);
sub_0807B7D8(uVar4, iVar3, this->layer);
sub_0807B7D8(uVar4, iVar3 + 1, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x40, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x41, this->layer);
sub_0807B7D8(this->unk_3c, iVar2, this->layer);
sub_0807B7D8(0x36f, iVar2 + 1, this->layer);
sub_0807B7D8(0x370, iVar2 + 0x40, this->layer);
sub_0807B7D8(0x371, iVar2 + 0x41, this->layer);
break;
case 2:
sub_0807B7D8(uVar4, iVar3, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 1, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 2, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x40, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x41, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x42, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x80, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x81, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x82, this->unk_34);
sub_0807B7D8(this->unk_3c, iVar2, this->unk_34);
sub_0807B7D8(0x372, iVar2 + 1, this->unk_34);
sub_0807B7D8(0x36f, iVar2 + 2, this->unk_34);
sub_0807B7D8(0x374, iVar2 + 0x40, this->unk_34);
sub_0807B7D8(0x376, iVar2 + 0x41, this->unk_34);
sub_0807B7D8(0x375, iVar2 + 0x42, this->unk_34);
sub_0807B7D8(0x370, iVar2 + 0x80, this->unk_34);
sub_0807B7D8(0x373, iVar2 + 0x81, this->unk_34);
sub_0807B7D8(0x371, iVar2 + 0x82, this->unk_34);
sub_0807B7D8(uVar4, iVar3, this->layer);
sub_0807B7D8(uVar4, iVar3 + 1, this->layer);
sub_0807B7D8(uVar4, iVar3 + 2, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x40, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x41, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x42, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x80, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x81, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x82, this->layer);
sub_0807B7D8(this->unk_3c, iVar2, this->layer);
sub_0807B7D8(0x372, iVar2 + 1, this->layer);
sub_0807B7D8(0x36f, iVar2 + 2, this->layer);
sub_0807B7D8(0x374, iVar2 + 0x40, this->layer);
sub_0807B7D8(0x376, iVar2 + 0x41, this->layer);
sub_0807B7D8(0x375, iVar2 + 0x42, this->layer);
sub_0807B7D8(0x370, iVar2 + 0x80, this->layer);
sub_0807B7D8(0x373, iVar2 + 0x81, this->layer);
sub_0807B7D8(0x371, iVar2 + 0x82, this->layer);
break;
case 3:
sub_0807B7D8(uVar4, iVar3, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 1, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 2, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 3, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x40, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x41, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x42, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x43, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x80, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x81, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x82, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0x83, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0xc0, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0xc1, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0xc2, this->unk_34);
sub_0807B7D8(uVar4, iVar3 + 0xc3, this->unk_34);
sub_0807B7D8(this->unk_3c, iVar2, this->unk_34);
sub_0807B7D8(0x372, iVar2 + 1, this->unk_34);
sub_0807B7D8(0x372, iVar2 + 2, this->unk_34);
sub_0807B7D8(0x36f, iVar2 + 3, this->unk_34);
sub_0807B7D8(0x374, iVar2 + 0x40, this->unk_34);
sub_0807B7D8(0x376, iVar2 + 0x41, this->unk_34);
sub_0807B7D8(0x376, iVar2 + 0x42, this->unk_34);
sub_0807B7D8(0x375, iVar2 + 0x43, this->unk_34);
sub_0807B7D8(0x374, iVar2 + 0x80, this->unk_34);
sub_0807B7D8(0x376, iVar2 + 0x81, this->unk_34);
sub_0807B7D8(0x376, iVar2 + 0x82, this->unk_34);
sub_0807B7D8(0x375, iVar2 + 0x83, this->unk_34);
sub_0807B7D8(0x370, iVar2 + 0xc0, this->unk_34);
sub_0807B7D8(0x373, iVar2 + 0xc1, this->unk_34);
sub_0807B7D8(0x373, iVar2 + 0xc2, this->unk_34);
sub_0807B7D8(0x371, iVar2 + 0xc3, this->unk_34);
sub_0807B7D8(uVar4, iVar3, this->layer);
sub_0807B7D8(uVar4, iVar3 + 1, this->layer);
sub_0807B7D8(uVar4, iVar3 + 2, this->layer);
sub_0807B7D8(uVar4, iVar3 + 3, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x40, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x41, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x42, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x43, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x80, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x81, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x82, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0x83, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0xc0, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0xc1, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0xc2, this->layer);
sub_0807B7D8(uVar4, iVar3 + 0xc3, this->layer);
sub_0807B7D8(this->unk_3c, iVar2, this->layer);
sub_0807B7D8(0x372, iVar2 + 1, this->layer);
sub_0807B7D8(0x372, iVar2 + 2, this->layer);
sub_0807B7D8(0x36f, iVar2 + 3, this->layer);
sub_0807B7D8(0x374, iVar2 + 0x40, this->layer);
sub_0807B7D8(0x376, iVar2 + 0x41, this->layer);
sub_0807B7D8(0x376, iVar2 + 0x42, this->layer);
sub_0807B7D8(0x375, iVar2 + 0x43, this->layer);
sub_0807B7D8(0x374, iVar2 + 0x80, this->layer);
sub_0807B7D8(0x376, iVar2 + 0x81, this->layer);
sub_0807B7D8(0x376, iVar2 + 0x82, this->layer);
sub_0807B7D8(0x375, iVar2 + 0x83, this->layer);
sub_0807B7D8(0x370, iVar2 + 0xc0, this->layer);
sub_0807B7D8(0x373, iVar2 + 0xc1, this->layer);
sub_0807B7D8(0x373, iVar2 + 0xc2, this->layer);
sub_0807B7D8(0x371, iVar2 + 0xc3, this->layer);
break;
}
}

View File

@ -179,13 +179,13 @@ void MiscManager_Type1(MiscManager* this) {
}
void sub_08059064(MiscManager* this) {
Entity* tmp;
tmp = CreateObject(GROUND_ITEM, ITEM_SMALL_KEY, 0);
if (!tmp)
Entity* key;
key = CreateObject(GROUND_ITEM, ITEM_SMALL_KEY, 0);
if (!key)
return;
tmp->timer = 2;
tmp->x.HALF.HI = this->unk_38 + gRoomControls.origin_x;
tmp->y.HALF.HI = this->unk_3a + gRoomControls.origin_y;
key->timer = 2;
key->x.HALF.HI = this->x + gRoomControls.origin_x;
key->y.HALF.HI = this->y + gRoomControls.origin_y;
}
void MiscManager_Type3(MiscManager* this) {
@ -229,8 +229,8 @@ void MiscManager_Type5(MiscManager* this) {
switch (super->action) {
default:
if (!--super->timer) {
CreateDustAt(this->unk_38, this->unk_3a, super->type2);
RestorePrevTileEntity(((this->unk_38 >> 4) & 0x3f) | ((this->unk_3a >> 4) & 0x3f) << 6, super->type2);
CreateDustAt(this->x, this->y, super->type2);
RestorePrevTileEntity(TILE_LOCAL(this->x, this->y), super->type2);
SoundReq(SFX_TASK_COMPLETE);
DeleteThisEntity();
}
@ -240,7 +240,7 @@ void MiscManager_Type5(MiscManager* this) {
DeleteThisEntity();
}
super->action = 1;
SetTileType(0x365, ((this->unk_38 >> 4) & 0x3f) | ((this->unk_3a >> 4) & 0x3f) << 6, super->type2);
SetTileType(0x365, TILE_LOCAL(this->x, this->y), super->type2);
break;
case 1:
if (CheckFlags(this->flags)) {
@ -256,18 +256,18 @@ void MiscManager_Type6(MiscManager* this) {
super->action = 1;
super->type2 = CheckFlags(this->flags);
if (super->type2) {
gRoomVars.lightLevel = this->unk_3a;
gRoomVars.lightLevel = this->y;
} else {
gRoomVars.lightLevel = this->unk_38;
gRoomVars.lightLevel = this->x;
}
} else {
u32 tmp = CheckFlags(this->flags);
if (super->type2 != tmp) {
super->type2 = tmp;
if (tmp) {
gRoomVars.lightLevel = this->unk_3a;
gRoomVars.lightLevel = this->y;
} else {
gRoomVars.lightLevel = this->unk_38;
gRoomVars.lightLevel = this->x;
}
}
}
@ -321,7 +321,7 @@ void MiscManager_Type9(MiscManager* this) {
}
void sub_080592EC(MiscManager* this) {
SetDirtTile(((this->unk_38 >> 4) & 0x3F) | (((this->unk_3a >> 4) & 0x3F) << 6));
SetDirtTile(TILE_LOCAL(this->x, this->y));
}
void sub_0805930C(MiscManager* this) {
@ -333,8 +333,8 @@ void sub_0805930C(MiscManager* this) {
#endif
if (!tmp)
return;
tmp->x.HALF.HI = this->unk_38 + gRoomControls.origin_x;
tmp->y.HALF.HI = this->unk_3a + gRoomControls.origin_y;
tmp->x.HALF.HI = this->x + gRoomControls.origin_x;
tmp->y.HALF.HI = this->y + gRoomControls.origin_y;
tmp->collisionLayer = 1;
}
@ -355,7 +355,7 @@ void MiscManager_TypeA(MiscManager* this) {
void MiscManager_TypeB(MiscManager* this) {
if (sub_080593CC(this)) {
if (++super->timer >= 8) {
sub_080806BC(this->unk_38 - gRoomControls.origin_x, this->unk_3a - gRoomControls.origin_y, 0xFF, 0xA);
sub_080806BC(this->x - gRoomControls.origin_x, this->y - gRoomControls.origin_y, 0xFF, 0xA);
}
} else {
super->timer = 0;
@ -365,7 +365,7 @@ void MiscManager_TypeB(MiscManager* this) {
bool32 sub_080593CC(MiscManager* this) {
if (!(gPlayerState.flags & PL_MINISH) && gPlayerState.swim_state != 0 && gPlayerEntity.animationState == 0 &&
(gPlayerState.playerInput.heldInput & PLAYER_INPUT_ANY_DIRECTION) == PLAYER_INPUT_UP) {
return EntityWithinDistance(&gPlayerEntity, this->unk_38, this->unk_3a + 0xC, 6);
return EntityWithinDistance(&gPlayerEntity, this->x, this->y + 12, 6);
}
return FALSE;
}
@ -381,8 +381,8 @@ void MiscManager_TypeC(MiscManager* this) {
if (!tmp)
return;
tmp->collisionLayer = 2;
tmp->x.HALF.HI = this->unk_38 + gRoomControls.origin_x;
tmp->y.HALF.HI = this->unk_3a + gRoomControls.origin_y;
tmp->x.HALF.HI = this->x + gRoomControls.origin_x;
tmp->y.HALF.HI = this->y + gRoomControls.origin_y;
EnqueueSFX(SFX_1B0);
DeleteThisEntity();
}

View File

@ -19,7 +19,6 @@
extern struct BgAffineDstData gUnk_02017AA0[];
extern struct BgAffineDstData gUnk_02017BA0[];
extern u8 gUnk_02017700[];
extern u8 gUpdateVisibleTiles;
extern u32 gUsedPalettes;
@ -261,8 +260,8 @@ void sub_08058D34(void) {
u16 tmp;
u32 tmp2;
LoadPaletteGroup(0x28);
MemCopy(gUnk_02017700, gUnk_02017700 + 0x240, 0x20);
gUsedPalettes |= 0x200000;
MemCopy(gPaletteBuffer + 3 * 16, gPaletteBuffer + 21 * 16, 16 * 2);
gUsedPalettes |= 1 << 21;
LoadGfxGroup(0x16);
tmp = gScreen.lcd.displayControl;
tmp2 = 0;

View File

@ -488,7 +488,9 @@ void sub_0805A9CC(TempleOfDropletsManager* this) {
gScreen.bg3.updated = 1;
}
extern struct { u8 unk_00[0x20]; } gUnk_085A97A0[];
extern struct {
u8 unk_00[0x20];
} gUnk_085A97A0[];
void sub_0805AA58(TempleOfDropletsManager* this) {
if (--super->timer == 0) {

View File

@ -10,6 +10,7 @@
#include "common.h"
#include "fileselect.h"
#include "functions.h"
#include "main.h"
#include "room.h"
#include "screen.h"
#include "sound.h"
@ -21,16 +22,13 @@ void sub_080596E0(WeatherChangeManager*);
u32 sub_08059844(void);
u32 sub_0805986C(void);
void sub_08059894(const u16*, const u16*, u32);
u32 sub_080598F8(u32, u32, u32);
void sub_08059960(const u16*, const u16*, u16*, u8);
u32 MixColors(u32, u32, u32);
void MixPalettes(const u16*, const u16*, u16*, u8);
const u8 gUnk_08108390[6] = {
0x0F, 0x1E, 0x2D, 0x3C, 0x01, 0x01,
};
extern u16 gUnk_020176E0[];
extern u8 gUnk_02017700[];
extern const u16 gPalette_549[];
void WeatherChangeManager_Main(WeatherChangeManager* this) {
@ -160,54 +158,56 @@ u32 sub_0805986C(void) {
return gPlayerEntity.x.HALF.HI - gRoomControls.origin_x > 0x200;
}
void sub_08059894(const u16* unk1, const u16* unk2, u32 unk3) {
void sub_08059894(const u16* palette1, const u16* palette2, u32 factor) {
const u16* tmp1;
const u16* tmp2;
u16* tmp3;
u32 tmp4;
u32 i;
tmp1 = unk1;
tmp2 = unk2;
tmp3 = gUnk_020176E0;
tmp1 = palette1;
tmp2 = palette2;
tmp3 = gPaletteBuffer + 2 * 16;
for (i = 0; i < 13; i++) {
sub_08059960(tmp1, tmp2, tmp3, unk3);
MixPalettes(tmp1, tmp2, tmp3, factor);
tmp1 += 0x10;
tmp2 += 0x10;
tmp3 += 0x10;
}
MemCopy(gUnk_02017700, gUnk_02017700 + 0x240, 0x20);
gUsedPalettes |= 0x207ffc;
MemCopy(gPaletteBuffer + 3 * 16, gPaletteBuffer + 21 * 16, 16 * 2);
// Use palettes 2 to 14 and 21.
gUsedPalettes |= 1 << 2 | 1 << 3 | 1 << 4 | 1 << 5 | 1 << 6 | 1 << 7 | 1 << 8 | 1 << 9 | 1 << 10 | 1 << 11 |
1 << 12 | 1 << 13 | 1 << 14 | 1 << 21;
}
u32 sub_080598F8(u32 unk1, u32 unk2, u32 unk3) {
u32 MixColors(u32 color1, u32 color2, u32 factor) {
u32 tmp1, tmp2, tmp3;
u32 tmp4, tmp5, tmp6;
tmp1 = (unk1 & 0x1F) << 8;
tmp1 = (tmp1 * unk3) >> 5;
tmp4 = (unk2 & 0x1F) << 8;
tmp4 = (tmp4 * (0x20 - unk3)) >> 5;
tmp1 = (color1 & 0x1F) << 8;
tmp1 = (tmp1 * factor) >> 5;
tmp4 = (color2 & 0x1F) << 8;
tmp4 = (tmp4 * (0x20 - factor)) >> 5;
tmp1 = (tmp1 + tmp4) >> 8;
tmp2 = (unk1 & 0x3E0) << 3;
tmp2 = (tmp2 * unk3) >> 5;
tmp5 = (unk2 & 0x3E0) << 3;
tmp5 = (tmp5 * (0x20 - unk3)) >> 5;
tmp2 = (color1 & 0x3E0) << 3;
tmp2 = (tmp2 * factor) >> 5;
tmp5 = (color2 & 0x3E0) << 3;
tmp5 = (tmp5 * (0x20 - factor)) >> 5;
tmp2 = (tmp2 + tmp5) >> 8;
tmp3 = (unk1 & 0x7C00) >> 2;
tmp3 = (tmp3 * unk3) >> 5;
tmp6 = (unk2 & 0x7C00) >> 2;
tmp6 = (tmp6 * (0x20 - unk3)) >> 5;
tmp3 = (color1 & 0x7C00) >> 2;
tmp3 = (tmp3 * factor) >> 5;
tmp6 = (color2 & 0x7C00) >> 2;
tmp6 = (tmp6 * (0x20 - factor)) >> 5;
tmp3 = (tmp3 + tmp6) >> 8;
return tmp1 | (tmp2 << 5) | (tmp3 << 10);
}
void sub_08059960(const u16* unk1, const u16* unk2, u16* unk3, u8 unk4) {
void MixPalettes(const u16* srcPalette1, const u16* srcPalette2, u16* destPalette, u8 factor) {
u32 i;
for (i = 0; i < 0x10; i++) {
*unk3++ = sub_080598F8(*unk1++, *unk2++, unk4);
*destPalette++ = MixColors(*srcPalette1++, *srcPalette2++, factor);
}
}

View File

@ -98,8 +98,8 @@ void FigurineMenu_080A4608(void) {
SetBgmVolume(0x80);
sub_080A4DA8(3);
SetColor(0, gPaletteBuffer[0xfb]);
SetColor(0x15c, gPaletteBuffer[0xd3]);
SetColor(0, gPaletteBuffer[251]);
SetColor(0x15c, gPaletteBuffer[211]);
MemClear(&gBG0Buffer, sizeof(gBG0Buffer));
MemClear(&gBG3Buffer, sizeof(gBG3Buffer));
gScreen.controls.window0HorizontalDimensions = DISPLAY_WIDTH;

View File

@ -57,7 +57,6 @@ void Subtask_PauseMenu(void) {
}
}
extern u8 gUnk_02034492[];
void UpdateVisibleFusionMapMarkers(void);
s32 sub_080A50A0(s32);
@ -74,7 +73,7 @@ void PauseMenu_Variant0(void) {
r1++;
} while (r1 <= 0xd);
location = GetOverworldLocation((u16)gRoomTransition.player_status.overworld_map_x,
(u16)gRoomTransition.player_status.overworld_map_y);
(u16)gRoomTransition.player_status.overworld_map_y);
gPauseMenuOptions.unk2[4] = location->windcrestId;
gPauseMenuOptions.unk2[5] = sub_0801DB94();
if (IsItemEquipped(ITEM_LANTERN_ON) != EQUIP_SLOT_NONE) {
@ -1062,17 +1061,19 @@ void sub_080A5BB8(void) {
void PauseMenu_Screen_5(void) {
extern void (*const gUnk_08128D30[])(void);
u32 uVar1;
u32 temp;
u32 paletteColor;
u32 ticks;
gUnk_08128D30[gMenu.menuType]();
DrawDungeonMapActually();
temp = gMain.ticks;
if ((temp & 7) == 0) {
uVar1 = *gUnk_02017830;
MemCopy(gUnk_02017830 + 1, gUnk_02017830, 0xe);
gUnk_02017830[7] = uVar1;
gUsedPalettes |= 0x1000;
ticks = gMain.ticks;
// TODO gUnk_02017830 is gPaletteBuffer[200]
if ((ticks & 7) == 0) {
// Rotate these 8 palette colors.
paletteColor = *gUnk_02017830;
MemCopy(gUnk_02017830 + 1, gUnk_02017830, 7 * 2);
gUnk_02017830[7] = paletteColor;
gUsedPalettes |= 1 << 12;
}
}

View File

@ -217,7 +217,7 @@ void sub_080A698C(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
int iVar1;
iVar1 = sub_080A69E0(param_1, param_2);
if (iVar1 > 0) {
if (iVar1 > 0) {
((struct_sub_080A698C*)&gMapDataBottomSpecial)[gGenericMenu.unk2d].unk0 = param_4 >> 8;
((struct_sub_080A698C*)&gMapDataBottomSpecial)[gGenericMenu.unk2d].unk1 = param_4;
((struct_sub_080A698C*)&gMapDataBottomSpecial)[gGenericMenu.unk2d].unk2 = param_3;

View File

@ -551,7 +551,8 @@ void sub_080626E0(Entity* this, ScriptExecutionContext* context) {
}
if (--context->unk_19 == 0) {
context->unk_19 = 10;
uVar4 = CalculateDirectionFromOffsets(context->x.HALF.HI - this->x.HALF.HI, context->y.HALF.HI - this->y.HALF.HI);
uVar4 =
CalculateDirectionFromOffsets(context->x.HALF.HI - this->x.HALF.HI, context->y.HALF.HI - this->y.HALF.HI);
this->direction = (u8)uVar4;
uVar4 = Random();
this->direction = (this->direction + uVar4 % 0xb) - 5;

View File

@ -180,11 +180,9 @@ const NPCDefinition gNPCDefinition_52[] = {
};
#endif
#define MULTI_FORM(definition_ptr) \
{ \
{ 2, 0, 0, 0, 0, 0, 0 }, { \
.definition = (definition_ptr) \
} \
#define MULTI_FORM(definition_ptr) \
{ \
{ 2, 0, 0, 0, 0, 0, 0 }, { .definition = (definition_ptr) } \
}
const NPCDefinition gNPCDefinitions[] = {

View File

@ -5,6 +5,7 @@
* @brief Bench object
*/
#define NENT_DEPRECATED
#include "asm.h"
#include "entity.h"
#include "functions.h"
#include "player.h"
@ -38,7 +39,7 @@ void Bench_Init(BenchEntity* this) {
super->collisionLayer = 1;
}
UpdateSpriteForCollisionLayer(super);
sub_08000148(0x47, this->tilePos - 0x40, 1);
SetCollisionData(0x47, this->tilePos - 0x40, 1);
}
void Bench_Action1(BenchEntity* this) {

View File

@ -95,7 +95,7 @@ void sub_0808B3AC(BollardEntity* this) {
super->spritePriority.b0 = 4;
this->tile = COORD_TO_TILE(super);
this->tileIndex = GetTileIndex(this->tile, super->collisionLayer);
this->unk74 = sub_080B1B44(this->tile, super->collisionLayer);
this->unk74 = GetCollisionData(this->tile, super->collisionLayer);
SetTile(0x400b, this->tile, super->collisionLayer);
}

View File

@ -154,7 +154,7 @@ u32 sub_08081E0C(Entity*);
Entity* sub_08081D74(Entity* this) {
Entity* ent;
if (sub_080B1B44(this->field_0x74.HWORD, this->collisionLayer) == 0xF) {
if (GetCollisionData(this->field_0x74.HWORD, this->collisionLayer) == 0xF) {
return 0;
}
ent = 0;
@ -233,7 +233,7 @@ void sub_08081E6C(Entity* this) {
// Are the two tiles already set to the correct one
bool32 sub_08081F00(u32* screenblock, u32* metatileList) {
if (screenblock[0] != metatileList[0])
if (screenblock[0] != metatileList[0])
return FALSE;
if (screenblock[0x40] != metatileList[1])
return FALSE;

View File

@ -714,7 +714,8 @@ void sub_0809567C(CutsceneMiscObjectEntity* this) {
super->action = 3;
super->subAction = 1;
super->speed = 0x400;
super->direction = CalculateDirectionFromOffsets(super->x.WORD - ((s16)this->px << 16), super->y.WORD - ((s16)this->py << 16));
super->direction =
CalculateDirectionFromOffsets(super->x.WORD - ((s16)this->px << 16), super->y.WORD - ((s16)this->py << 16));
}
void sub_080956B4(CutsceneMiscObjectEntity* this) {

View File

@ -61,7 +61,7 @@ void Mask_Init(Entity* this) {
this->field_0x7c.HALF_U.HI = COORD_TO_TILE(this);
this->field_0x7c.HALF_U.LO = GetTileIndex(this->field_0x7c.HALF_U.HI, 1);
this->field_0x7a.HWORD = sub_080B1B44((u16)this->field_0x7c.HALF.HI, 1);
this->field_0x7a.HWORD = GetCollisionData((u16)this->field_0x7c.HALF.HI, 1);
SetTile(0x4022, this->field_0x7c.HALF_U.HI, 1);
}
@ -90,7 +90,7 @@ void Mask_Action1(Entity* this) {
// Presumably, make the mask fall
SetTile(this->field_0x7c.HALF_U.LO, this->field_0x7c.HALF_U.HI, 1);
sub_08000148(this->field_0x7a.HWORD, (u16)this->field_0x7c.HALF.HI, 1);
SetCollisionData(this->field_0x7a.HWORD, (u16)this->field_0x7c.HALF.HI, 1);
this->action = 2;

View File

@ -171,8 +171,9 @@ void OctorokBossObject_Action1(Entity* this) {
return;
}
case 1:
this->direction = CalculateDirectionFromOffsets(GET_HELPER(this)->tailObjects[this->timer]->x.WORD - this->x.WORD,
GET_HELPER(this)->tailObjects[this->timer]->y.WORD - this->y.WORD);
this->direction =
CalculateDirectionFromOffsets(GET_HELPER(this)->tailObjects[this->timer]->x.WORD - this->x.WORD,
GET_HELPER(this)->tailObjects[this->timer]->y.WORD - this->y.WORD);
LinearMoveAngle(this, this->speed, this->direction);
if (EntityInRectRadius(this, GET_HELPER(this)->tailObjects[this->timer], 2, 2) == 0) {
return;
@ -197,7 +198,8 @@ void OctorokBossObject_Action1(Entity* this) {
case 2:
if (this->parent->type2 == 3) {
Entity* object = GET_HELPER(this->parent)->mouthObject;
this->direction = CalculateDirectionFromOffsets(object->x.WORD - this->x.WORD, object->y.WORD - this->y.WORD);
this->direction =
CalculateDirectionFromOffsets(object->x.WORD - this->x.WORD, object->y.WORD - this->y.WORD);
LinearMoveAngle(this, 0x280, this->direction);
if (sub_0806FC80(this, this->parent, 0x48) == 0) {
return;

View File

@ -312,27 +312,27 @@ void sub_0808FDE8(PushableFurnitureEntity* this) {
u32 uVar3;
uVar3 = (u32)this->unk_70;
uVar1 = sub_080B1B44(uVar3 - 1, 1);
uVar1 = GetCollisionData(uVar3 - 1, 1);
iVar2 = GetTileIndex(uVar3, 1);
if (iVar2 == 0x402e) {
if ((((uVar1 & 0xf0) != 0) && ((uVar1 & 0xf0) != 0x50)) || ((uVar1 & 5) == 0)) {
SetTile(0x402c, uVar3, 1);
}
} else {
iVar2 = sub_080B1B44(uVar3, 1);
iVar2 = GetCollisionData(uVar3, 1);
if ((iVar2 == 5) && ((((uVar1 & 0xf0) == 0 || ((uVar1 & 0xf0) == 0x50)) && ((uVar1 & 5) != 0)))) {
SetTile(0x402e, uVar3, 1);
}
}
uVar3 = (u32)this->unk_72;
uVar1 = sub_080B1B44(uVar3 + 1, 1);
uVar1 = GetCollisionData(uVar3 + 1, 1);
iVar2 = GetTileIndex(uVar3, 1);
if (iVar2 == 0x402f) {
if ((((uVar1 & 0xf0) != 0) && ((uVar1 & 0xf0) != 0x50)) || ((uVar1 & 10) == 0)) {
SetTile(0x402d, uVar3, 1);
}
} else {
iVar2 = sub_080B1B44(uVar3, 1);
iVar2 = GetCollisionData(uVar3, 1);
if (((iVar2 == 10) && (((uVar1 & 0xf0) == 0 || ((uVar1 & 0xf0) == 0x50)))) && ((uVar1 & 10) != 0)) {
SetTile(0x402f, uVar3, 1);
}
@ -411,7 +411,7 @@ void sub_08090094(PushableFurnitureEntity* this, u32 param_2, u32 tilePos) {
u32 index;
u32 tmp2;
tmp1 = sub_080B1B44(tilePos, 1);
tmp1 = GetCollisionData(tilePos, 1);
index = GetTileIndex(tilePos, 1);
if ((index & 0x4000) == 0) {
index = param_2;
@ -599,12 +599,12 @@ void sub_08090498(PushableFurnitureEntity* this) {
u32 tmp = this->unk_70 - 0x80;
RestorePrevTileEntity(tmp, 1);
if (((this->unk_83 & 1) != 0) && (GetTileType(tmp, 2) == 0x306)) {
sub_08000148(0x62, tmp, 1);
SetCollisionData(0x62, tmp, 1);
}
tmp = this->unk_72 - 0x80;
RestorePrevTileEntity(tmp, 1);
if (((this->unk_83 & 2) != 0) && (GetTileType(tmp, 2) == 0x308)) {
sub_08000148(99, tmp, 1);
SetCollisionData(99, tmp, 1);
}
}

View File

@ -92,7 +92,7 @@ void sub_0808A644(PushableRockEntity* this) {
u32 tmp;
this->tilePosition = COORD_TO_TILE(super);
this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer);
this->unk_72 = sub_080B1B44(this->tilePosition, super->collisionLayer);
this->unk_72 = GetCollisionData(this->tilePosition, super->collisionLayer);
tmp = sub_080B1AE0(this->tilePosition, super->collisionLayer);
if ((tmp == 0x19) || (tmp == 0xf0)) {
SetTile(0x4015, this->tilePosition, super->collisionLayer);

View File

@ -201,7 +201,8 @@ void sub_080845DC(SpecialFxObject* this) {
void sub_080845F8(SpecialFxObject* this) {
if (((8 - (super->x.HALF.HI & 0xF)) | (8 - (super->y.HALF.HI & 0xF))) != 0) {
super->direction = CalculateDirectionFromOffsets((8 - (super->x.HALF.HI & 0xF)), (8 - (super->y.HALF.HI & 0xF))) >> 3;
super->direction =
CalculateDirectionFromOffsets((8 - (super->x.HALF.HI & 0xF)), (8 - (super->y.HALF.HI & 0xF))) >> 3;
LinearMoveUpdate(super);
}
sub_08084630(this);

View File

@ -1431,11 +1431,9 @@ const ObjectDefinition gObjectDefinition_0[] = {
};
#endif
#define MULTI_FORM(definition_ptr) \
{ \
{ 2, 0, 0, 0, 0, 0, 0 }, { \
.definition = definition_ptr \
} \
#define MULTI_FORM(definition_ptr) \
{ \
{ 2, 0, 0, 0, 0, 0, 0 }, { .definition = definition_ptr } \
}
const ObjectDefinition gObjectDefinitions[] = {
MULTI_FORM(gObjectDefinition_0),

View File

@ -442,8 +442,8 @@ u32 sub_0806FCAC(Entity* this, Entity* other) {
return sub_0806F5B0(GetFacingDirection(this, other));
}
bool32 EntityWithinDistance(Entity* ent, s32 x, s32 y, s32 distance) {
return PointInsideRadius(ent->x.HALF.HI - x, ent->y.HALF.HI - y, distance);
bool32 EntityWithinDistance(Entity* entity, s32 x, s32 y, s32 distance) {
return PointInsideRadius(entity->x.HALF.HI - x, entity->y.HALF.HI - y, distance);
}
bool32 PointInsideRadius(s32 x, s32 y, s32 distance) {

View File

@ -10,6 +10,7 @@
#include "global.h"
#include "item.h"
#include "kinstone.h"
#include "main.h"
#include "manager/diggingCaveEntranceManager.h"
#include "message.h"
#include "new_player.h"
@ -33,7 +34,6 @@ void sub_080790E4(Entity* this);
void sub_08079064(Entity*);
extern u8 gMapData;
extern const u8 gUnk_020176E0[];
extern const u8 gUnk_0800851C[];
extern const u8 gUnk_080084BC[];
extern const u8 gUnk_0800845C[];
@ -126,8 +126,6 @@ extern const u8 gUnk_080B3E80[];
// collisions for tiles > 0x4000
extern const u8 gUnk_080B79A7[];
extern void RenderTilemapToScreenblock(u16*, LayerStruct*);
extern u16 gUnk_080B77C0[];
void sub_0807BFA8(void);
@ -1736,7 +1734,7 @@ void RespawnPlayer(void) {
index = 0;
if (gPlayerState.path_memory[0] != 0xffffffff) {
ptr1 = gPlayerState.path_memory;
while (sub_080B1B44((u16)*ptr1, *ptr1 >> 0x1e) == 0xf) {
while (GetCollisionData((u16)*ptr1, *ptr1 >> 0x1e) == 0xf) {
ptr1++;
index++;
if ((index > 0xf) || (*ptr1 == -1)) {
@ -1886,7 +1884,7 @@ void sub_080797EC(void) {
} else {
animation = 0x16c;
if (sub_080793E4(0)) {
if (sub_080B1B44(GetPlayerTilePos(), gPlayerEntity.collisionLayer) != 0xff) {
if (GetCollisionData(GetPlayerTilePos(), gPlayerEntity.collisionLayer) != 0xff) {
gPlayerState.sword_state &= ~8;
animation = 0x170;
}
@ -1920,7 +1918,7 @@ void sub_080797EC(void) {
} else if (gPlayerState.sword_state != 0) {
animation = 0x16c;
if (sub_080793E4(0)) {
if (sub_080B1B44(GetPlayerTilePos(), (u32)gPlayerEntity.collisionLayer) != 0xff) {
if (GetCollisionData(GetPlayerTilePos(), (u32)gPlayerEntity.collisionLayer) != 0xff) {
gPlayerState.sword_state &= ~8;
animation = 0x170;
}
@ -2476,7 +2474,7 @@ void sub_0807A750(u32 param_1, u32 param_2, const u8* param_3, u32 param_4) {
index = param_1 % 16;
}
if ((index != 0) && (index != 0xf)) {
uVar2 = sub_080B1B44((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, gPlayerEntity.collisionLayer);
uVar2 = GetCollisionData((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, gPlayerEntity.collisionLayer);
if (uVar2 > 0xf) {
if (uVar2 != 0xff) {
uVar2 = param_3[uVar2 - 0x10];
@ -2957,7 +2955,6 @@ void sub_0807B2F8(PlayerEntity* this) {
}
}
// tileType < 0x800 : set the MetaTileType
// tileType >= 0x4000 : call SetTile directly
// else : restore the previous tile entity
@ -3095,10 +3092,10 @@ u32 sub_0807B600(u32 param_1) {
} else {
if (GetTileType(param_1, 2) != 0) {
SetTileType(0x2f2, param_1, 1);
if (sub_080B1B44(tile, 1) == 3) {
if (GetCollisionData(tile, 1) == 3) {
SetTileType(0x2f4, tile, 1);
}
if (sub_080B1B44(param_1 + 0x40, 1) == 3) {
if (GetCollisionData(param_1 + 0x40, 1) == 3) {
SetTileType(0x2f4, param_1, 1);
}
} else {
@ -3630,18 +3627,20 @@ void sub_0807C460(void) {
}
void sub_0807C4F8(void) {
// TODO convert to MapDataDefinition*
u32* puVar1;
u32* ptr;
if (gRoomControls.area != 0x71) {
if (gRoomControls.area != AREA_PALACE_OF_WINDS_BOSS) {
MemClear(gMapDataBottomSpecial, 0x8000);
MemClear(&gMapDataTopSpecial, 0x8000);
MemClear(gMapDataTopSpecial, 0x8000);
ptr = gUnk_02022830;
puVar1 = (u32*)(gArea.pCurrentRoomInfo)->map;
puVar1 -= 3;
do {
puVar1 += 3;
if (((u16*)puVar1[1] == gMapDataBottomSpecial) || ((u16*)puVar1[1] == (u16*)&gMapDataTopSpecial)) {
// only store the map data definitions for bitmap backgrounds in gUnk_02022830?
ptr[0] = puVar1[0] & 0x7fffffff;
ptr[1] = puVar1[1];
ptr[2] = puVar1[2];
@ -3895,8 +3894,8 @@ void sub_0807C9D8(u32* a1) {
LoadCompressedMapData((u8*)0x6004000, *a1);
LoadCompressedMapData((u8*)0x6000000, v1[1]);
LoadCompressedMapData((u8*)0x6008000, v1[2]);
LoadCompressedMapData((u8*)gUnk_020176E0, v1[3]);
LoadPalettes(gUnk_020176E0, 2, 13);
LoadCompressedMapData((u8*)(gPaletteBuffer + 32), v1[3]);
LoadPalettes((u8*)(gPaletteBuffer + 32), 2, 13);
}
u32 FinalizeSave(void) {

View File

@ -4,7 +4,7 @@
#include "room.h"
#include "physics.h"
extern u32 sub_080B1B44(u32, u32);
extern u32 GetCollisionData(u32, u32);
extern void (*const Projectile5_Functions[])(Entity*);
extern void (*const Projectile5_Actions[])(Entity*);
@ -28,7 +28,7 @@ void sub_080A86F0(Entity* this) {
pbVar2 = &this->parent->field_0x82.HALF.HI;
if ((this->parent->field_0x82.HALF.HI & 0x3f) == 3) {
if (gPlayerState.hurtBlinkSpeed != 0) {
if (sub_080B1B44(TILE(this->x.HALF.HI, this->y.HALF.HI), gPlayerEntity.collisionLayer) == 0) {
if (GetCollisionData(TILE(this->x.HALF.HI, this->y.HALF.HI), gPlayerEntity.collisionLayer) == 0) {
if (this->contactFlags == 0x80) {
*pbVar2 = *pbVar2 & 0x7f;
DeleteThisEntity();

View File

@ -194,10 +194,12 @@ static void sub_0804B058(EntityData* dat) {
uVar2 = 0;
do {
if ((uVar2 < 0x20) && ((dat->kind & 0xF) == 3)) {
if (IsRoomTrackerFlagSet(uVar2) ) {
if (IsRoomTrackerFlagSet(uVar2)) {
ent = LoadRoomEntity(dat);
if ((ent != NULL) && (ent->kind == ENEMY)) {
ent->field_0x6c.HALF.LO = uVar2 | 0x80; // TODO Set the room tracker flag that can be set by the enemy so it does not appear next time the room is visited?
ent->field_0x6c.HALF.LO =
uVar2 | 0x80; // TODO Set the room tracker flag that can be set by the enemy so it does not
// appear next time the room is visited?
}
}
} else {

View File

@ -1,7 +1,10 @@
#include "global.h"
// Called when gUpdateVisibleTiles == 2
ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D280.inc", void sub_0807D280(u32 unk_1, u32 unk_2))
// Called when gUpdateVisibleTiles == 3
ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D46C.inc", void sub_0807D46C(u32 unk_1, u32 unk_2))
// Called when gUpdateVisibleTiles == 4
ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D6D8.inc", void sub_0807D6D8(u32 unk_1, u32 unk_2))

View File

@ -1382,7 +1382,7 @@ void ScriptCommand_MoveTo(Entity* entity, ScriptExecutionContext* context) {
void ScriptCommand_LookAt(Entity* entity, ScriptExecutionContext* context) {
LookAt(entity, context, context->scriptInstructionPointer[1] + gRoomControls.origin_x,
context->scriptInstructionPointer[2] + gRoomControls.origin_y);
context->scriptInstructionPointer[2] + gRoomControls.origin_y);
gActiveScriptInfo.flags |= 1;
}
@ -1390,8 +1390,8 @@ void ScriptCommand_MoveTowardsTarget(Entity* entity, ScriptExecutionContext* con
s32 tmp, tmp2;
if (!--context->unk_19) {
context->unk_19 = 8;
entity->direction =
CalculateDirectionFromOffsets(context->x.HALF.HI - entity->x.HALF.HI, context->y.HALF.HI - entity->y.HALF.HI);
entity->direction = CalculateDirectionFromOffsets(context->x.HALF.HI - entity->x.HALF.HI,
context->y.HALF.HI - entity->y.HALF.HI);
}
tmp = entity->x.HALF.HI - context->x.HALF.HI;
tmp2 = entity->y.HALF.HI - context->y.HALF.HI;
@ -1423,7 +1423,7 @@ void ScriptCommand_MoveToOffset(Entity* entity, ScriptExecutionContext* context)
if (!context->unk_18) {
context->unk_18 = 1;
LookAt(entity, context, entity->x.HALF.HI + ((s16)context->scriptInstructionPointer[1]),
entity->y.HALF.HI + ((s16)context->scriptInstructionPointer[2]));
entity->y.HALF.HI + ((s16)context->scriptInstructionPointer[2]));
}
ScriptCommand_MoveTowardsTarget(entity, context);
// Repeat this command until we are at the target.

View File

@ -27,29 +27,29 @@ extern void sub_0805E248();
extern u8 gUpdateVisibleTiles;
extern u16 gUnk_0200B640;
extern u32** gUnk_08109194[];
extern MapDataDefinition** gCaveBorderMapData[];
extern u32 gUnk_02022830[];
extern u16 gUnk_020246B0[];
extern u8 gUnk_080B7910[];
void sub_0807FC64(RoomControls*);
void sub_0807FC7C(RoomControls*);
void sub_0807FDB0(RoomControls*);
void sub_0807FEF0(RoomControls*);
void sub_0807FF54(RoomControls*);
void sub_0807FDC8(RoomControls*);
void sub_0807FDE4(RoomControls*);
void sub_0807FDF8(RoomControls*);
void Scroll0(RoomControls*);
void Scroll1(RoomControls*);
void Scroll2(RoomControls*);
void Scroll4(RoomControls*);
void Scroll5(RoomControls*);
void Scroll2Sub0(RoomControls*);
void Scroll2Sub1(RoomControls*);
void Scroll2Sub2(RoomControls*);
void sub_0807FEC8(RoomControls*);
void sub_0807FF08(RoomControls*);
void sub_0807FF1C(RoomControls*);
void Scroll4Sub0(RoomControls*);
void Scroll4Sub1(RoomControls*);
void sub_0807FF6C(RoomControls*);
void sub_0807FFE4(RoomControls*);
void sub_08080040(RoomControls*);
void sub_08080108(RoomControls*);
void sub_08080198(RoomControls*);
void sub_080801BC(RoomControls*);
void Scroll5Sub0(RoomControls*);
void Scroll5Sub1(RoomControls*);
void Scroll5Sub2(RoomControls*);
void Scroll5Sub3(RoomControls*);
void Scroll5Sub4(RoomControls*);
void Scroll5Sub5(RoomControls*);
u32 sub_080803D0();
u32 sub_08080278();
void sub_08080C80(MapDataDefinition*);
@ -68,32 +68,32 @@ extern const s8 gScreenShakeOffsets[];
void UpdateScroll(void) {
static void (*const gUnk_0811E768[])(RoomControls*) = {
sub_0807FC64, sub_0807FC7C, sub_0807FDB0, NULL, sub_0807FEF0, sub_0807FF54,
Scroll0, Scroll1, Scroll2, NULL, Scroll4, Scroll5,
};
gRoomControls.scroll_flags &= 0xfb;
gUnk_0811E768[gRoomControls.scrollAction](&gRoomControls);
}
void sub_0807FC64(RoomControls* controls) {
void Scroll0(RoomControls* controls) {
controls->scrollAction = 1;
controls->reload_flags = 0;
controls->scrollSpeed = 4;
sub_0807FC7C(controls);
Scroll1(controls);
UpdateIsDiggingCave();
}
// Scroll until target is at the center of the screen.
void sub_0807FC7C(RoomControls* controls) {
void Scroll1(RoomControls* controls) {
s32 uVar2;
s32 diff;
s32 iVar4;
s32 unused;
s32 uVar5;
s32 targetValue;
if (controls->camera_target != NULL) {
// Scroll in x direction.
iVar4 = controls->scroll_x;
unused = controls->scroll_x;
targetValue = controls->camera_target->x.HALF.HI - 0x78;
diff = controls->scroll_x - targetValue;
if (diff != 0) {
@ -131,7 +131,7 @@ void sub_0807FC7C(RoomControls* controls) {
}
// Scroll in y direction.
iVar4 = controls->scroll_y;
unused = controls->scroll_y;
targetValue = controls->camera_target->y.HALF.HI - 0x50;
diff = controls->scroll_y - (targetValue);
if (diff != 0) {
@ -171,41 +171,39 @@ void sub_0807FC7C(RoomControls* controls) {
UpdateScreenShake();
}
void sub_0807FDB0(RoomControls* controls) {
static void (*const gUnk_0811E780[])(RoomControls*) = {
sub_0807FDC8,
sub_0807FDE4,
sub_0807FDF8,
void Scroll2(RoomControls* controls) {
static void (*const Scroll2_SubActions[])(RoomControls*) = {
Scroll2Sub0,
Scroll2Sub1,
Scroll2Sub2,
};
gUnk_0811E780[controls->scrollSubAction](controls);
Scroll2_SubActions[controls->scrollSubAction](controls);
}
void sub_0807FDC8(RoomControls* controls) {
void Scroll2Sub0(RoomControls* controls) {
gUpdateVisibleTiles = 1;
UpdateScrollVram();
controls->scrollSubAction = 1;
gUpdateVisibleTiles = 0;
}
void sub_0807FDE4(RoomControls* controls) {
void Scroll2Sub1(RoomControls* controls) {
controls->scrollSubAction = 2;
controls->unk_18 = 0;
gUpdateVisibleTiles = 2;
}
void sub_0807FDF8(RoomControls* controls) {
u32 bVar1;
Entity* pEVar2;
s32 iVar3;
void Scroll2Sub2(RoomControls* controls) {
Entity* target;
gUpdateVisibleTiles = 2;
controls->unk_18++;
switch (controls->scroll_direction) {
case 0:
controls->scroll_y -= 4;
pEVar2 = controls->camera_target;
if (pEVar2 == &gPlayerEntity) {
pEVar2->y.WORD = gPlayerEntity.y.WORD - Q_16_16(0.375);
target = controls->camera_target;
if (target == &gPlayerEntity) {
target->y.WORD = gPlayerEntity.y.WORD - Q_16_16(0.375);
}
if (controls->unk_18 == 0x28) {
sub_0807FEC8(controls);
@ -222,9 +220,9 @@ void sub_0807FDF8(RoomControls* controls) {
break;
case 2:
controls->scroll_y = controls->scroll_y + 4;
pEVar2 = controls->camera_target;
if (pEVar2 == &gPlayerEntity) {
pEVar2->y.WORD = gPlayerEntity.y.WORD + Q_16_16(0.375);
target = controls->camera_target;
if (target == &gPlayerEntity) {
target->y.WORD = gPlayerEntity.y.WORD + Q_16_16(0.375);
}
if (controls->unk_18 == 0x28) {
sub_0807FEC8(controls);
@ -252,21 +250,21 @@ void sub_0807FEC8(RoomControls* controls) {
gPlayerState.startPosY = controls->camera_target->y.HALF.HI;
}
void sub_0807FEF0(RoomControls* controls) {
static void (*const gUnk_0811E78C[])(RoomControls*) = {
sub_0807FF08,
sub_0807FF1C,
void Scroll4(RoomControls* controls) {
static void (*const Scroll4_SubActions[])(RoomControls*) = {
Scroll4Sub0,
Scroll4Sub1,
};
gUnk_0811E78C[controls->scrollSubAction](controls);
Scroll4_SubActions[controls->scrollSubAction](controls);
}
void sub_0807FF08(RoomControls* controls) {
void Scroll4Sub0(RoomControls* controls) {
controls->scrollSubAction = 1;
controls->unk_18 = 0;
gUpdateVisibleTiles = 3;
}
void sub_0807FF1C(RoomControls* controls) {
void Scroll4Sub1(RoomControls* controls) {
if ((gRoomTransition.frameCount & 1U) == 0) {
gUpdateVisibleTiles = 3;
if (++controls->unk_18 > 0x13) {
@ -276,14 +274,15 @@ void sub_0807FF1C(RoomControls* controls) {
}
}
void sub_0807FF54(RoomControls* controls) {
static void (*const gUnk_0811E794[])(RoomControls*) = {
sub_0807FF6C, sub_0807FFE4, sub_08080040, sub_08080108, sub_08080198, sub_080801BC,
// Circular screen transition when entering a diggingCaveEntrance.
void Scroll5(RoomControls* controls) {
static void (*const Scroll5_SubActions[])(RoomControls*) = {
Scroll5Sub0, Scroll5Sub1, Scroll5Sub2, Scroll5Sub3, Scroll5Sub4, Scroll5Sub5,
};
gUnk_0811E794[controls->scrollSubAction](controls);
Scroll5_SubActions[controls->scrollSubAction](controls);
}
void sub_0807FF6C(RoomControls* controls) {
void Scroll5Sub0(RoomControls* controls) {
controls->scrollSubAction = 1;
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON;
gScreen.controls.windowInsideControl = (u8)gScreen.controls.windowInsideControl | 0x1700;
@ -300,58 +299,58 @@ void sub_0807FF6C(RoomControls* controls) {
sub_080809D4();
}
void sub_0807FFE4(RoomControls* controls) {
void Scroll5Sub1(RoomControls* controls) {
controls->scrollSubAction = 2;
controls->unk_18 = sub_080803D0() + 6;
gUnk_0200B640 = sub_08080278();
LoadMapData((MapDataDefinition*)*gUnk_08109194[gDiggingCaveEntranceTransition.entrance->type]);
LoadMapData(gCaveBorderMapData[gDiggingCaveEntranceTransition.entrance->type][0]);
sub_0807C8B0(gMapTop.mapData, controls->width >> 4, controls->height >> 4);
RenderTilemapToScreenblock(gMapDataTopSpecial, &gMapTop);
}
void sub_08080040(RoomControls* controls) {
s32 iVar2;
s32 iVar3;
s32 uVar5;
s32 uVar6;
s32 iVar7;
s32 temp;
void Scroll5Sub2(RoomControls* controls) {
s32 diffX;
s32 diffY;
s32 left;
s32 right;
s32 bottom;
s32 top;
controls->unk_18 -= 6;
controls->unk_1a = (controls->unk_18 << 1) / 3;
if (0x2a < controls->unk_18) {
iVar2 = controls->camera_target->x.HALF.HI - controls->scroll_x;
uVar6 = (iVar2 - controls->unk_18) + 8;
if (uVar6 < 0) {
uVar6 = 0;
controls->unk_1a = (controls->unk_18 * 2) / 3;
if (controls->unk_18 > 0x2a) {
diffX = controls->camera_target->x.HALF.HI - controls->scroll_x;
left = (diffX - controls->unk_18) + 8;
if (left < 0) {
left = 0;
}
iVar7 = iVar2 + controls->unk_18 - 8;
if (DISPLAY_WIDTH < iVar7) {
iVar7 = DISPLAY_WIDTH;
right = diffX + controls->unk_18 - 8;
if (right > DISPLAY_WIDTH) {
right = DISPLAY_WIDTH;
}
temp = controls->camera_target->y.HALF.HI - controls->scroll_y;
uVar5 = (temp - controls->unk_1a) + 8;
if (uVar5 < 0) {
uVar5 = 0;
diffY = controls->camera_target->y.HALF.HI - controls->scroll_y;
bottom = (diffY - controls->unk_1a) + 8;
if (bottom < 0) {
bottom = 0;
}
iVar3 = temp + controls->unk_1a - 8;
if (DISPLAY_HEIGHT < iVar3) {
iVar3 = DISPLAY_HEIGHT;
top = diffY + controls->unk_1a - 8;
if (top > DISPLAY_HEIGHT) {
top = DISPLAY_HEIGHT;
}
gScreen.controls.window1HorizontalDimensions = ((uVar6 & 0xff) << 8) | (iVar7 & 0xff);
gScreen.controls.window1VerticalDimensions = ((uVar5 & 0xff) << 8) | (iVar3 & 0xff);
gScreen.controls.window1HorizontalDimensions = ((left & 0xff) << 8) | (right & 0xff);
gScreen.controls.window1VerticalDimensions = ((bottom & 0xff) << 8) | (top & 0xff);
}
if (controls->unk_18 == 0) {
controls->scrollSubAction = 3;
DeleteSleepingEntities();
sub_0807C810();
sub_08080C80((MapDataDefinition*)*(gUnk_08109194[gDiggingCaveEntranceTransition.entrance->type] + 1));
sub_08080C80(gCaveBorderMapData[gDiggingCaveEntranceTransition.entrance->type][1]);
} else {
gUpdateVisibleTiles = 4;
}
}
void sub_08080108(RoomControls* controls) {
void Scroll5Sub3(RoomControls* controls) {
controls->scrollSubAction = 4;
MemCopy(gMapBottom.mapData, gMapBottom.mapDataClone, sizeof(gMapBottom.mapData));
MemCopy(gMapTop.mapData, gMapTop.mapDataClone, sizeof(gMapTop.mapData));
@ -367,7 +366,7 @@ void sub_08080108(RoomControls* controls) {
RenderTilemapToScreenblock(gMapDataTopSpecial, &gMapTop);
}
void sub_08080198(RoomControls* controls) {
void Scroll5Sub4(RoomControls* controls) {
controls->scrollSubAction = 5;
controls->unk_1c = 0xff;
LoadRoom();
@ -376,37 +375,37 @@ void sub_08080198(RoomControls* controls) {
UpdateIsDiggingCave();
}
void sub_080801BC(RoomControls* controls) {
s32 iVar2;
s32 iVar3;
s32 uVar5;
s32 uVar6;
s32 iVar7;
s32 temp;
void Scroll5Sub5(RoomControls* controls) {
s32 diffX;
s32 diffY;
s32 left;
s32 right;
s32 bottom;
s32 top;
controls->unk_18 += 6;
controls->unk_1a = (controls->unk_18 << 1) / 3;
if (0x1e < controls->unk_18) {
iVar2 = controls->camera_target->x.HALF.HI - controls->scroll_x;
uVar6 = (iVar2 - controls->unk_18);
if (uVar6 < 0) {
uVar6 = 0;
controls->unk_1a = (controls->unk_18 * 2) / 3;
if (controls->unk_18 > 0x1e) {
diffX = controls->camera_target->x.HALF.HI - controls->scroll_x;
left = (diffX - controls->unk_18);
if (left < 0) {
left = 0;
}
iVar7 = iVar2 + controls->unk_18;
if (DISPLAY_WIDTH < iVar7) {
iVar7 = DISPLAY_WIDTH;
right = diffX + controls->unk_18;
if (right > DISPLAY_WIDTH) {
right = DISPLAY_WIDTH;
}
temp = controls->camera_target->y.HALF.HI - controls->scroll_y;
uVar5 = (temp - controls->unk_1a);
if (uVar5 < 0) {
uVar5 = 0;
diffY = controls->camera_target->y.HALF.HI - controls->scroll_y;
bottom = (diffY - controls->unk_1a);
if (bottom < 0) {
bottom = 0;
}
iVar3 = temp + controls->unk_1a;
if (DISPLAY_HEIGHT < iVar3) {
iVar3 = DISPLAY_HEIGHT;
top = diffY + controls->unk_1a;
if (top > DISPLAY_HEIGHT) {
top = DISPLAY_HEIGHT;
}
gScreen.controls.window1HorizontalDimensions = ((uVar6 & 0xff) << 8) | (iVar7 & 0xff);
gScreen.controls.window1VerticalDimensions = ((uVar5 & 0xff) << 8) | (iVar3 & 0xff);
gScreen.controls.window1HorizontalDimensions = ((left & 0xff) << 8) | (right & 0xff);
gScreen.controls.window1VerticalDimensions = ((bottom & 0xff) << 8) | (top & 0xff);
}
if (controls->unk_1c == 0) {
controls->scrollAction = 0;
@ -532,7 +531,7 @@ void ClearTilemaps(void) {
MemClear(&gMapDataTopSpecial, 0x8000);
}
bool32 sub_080806BC(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
bool32 sub_080806BC(u32 x, u32 y, u32 param_3, u32 param_4) {
static bool32 (*const gUnk_0811E7AC[])(const Transition*, u32, u32, u32) = {
sub_08080794,
sub_08080808,
@ -546,7 +545,7 @@ bool32 sub_080806BC(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
puVar3 = (gArea.pCurrentRoomInfo->exits);
while (*(u16*)puVar3 != 0xffff) {
u32 uVar3 = *(u16*)puVar3;
if ((((1 << uVar3) & param_4) != 0) && (gUnk_0811E7AC[uVar3](puVar3, param_1, param_2, param_3))) {
if ((((1 << uVar3) & param_4) != 0) && (gUnk_0811E7AC[uVar3](puVar3, x, y, param_3))) {
DoExitTransition((const ScreenTransitionData*)puVar3);
return 1;
}
@ -572,49 +571,49 @@ const Transition* sub_08080734(u32 param_1, u32 param_2) {
return NULL;
}
bool32 sub_08080794(const Transition* transition, u32 param_2, u32 param_3, u32 param_4) {
u32 bVar1;
bool32 sub_08080794(const Transition* transition, u32 x, u32 y, u32 param_4) {
u32 shapeBitmask;
switch (param_4) {
default:
return 0;
case 0:
if (gRoomControls.width >> 1 < param_2) {
bVar1 = 2;
if (gRoomControls.width / 2 < x) {
shapeBitmask = 2;
} else {
bVar1 = 1;
shapeBitmask = 1;
}
break;
case 1:
if (gRoomControls.height >> 1 < param_3) {
bVar1 = 8;
if (gRoomControls.height / 2 < y) {
shapeBitmask = 8;
} else {
bVar1 = 4;
shapeBitmask = 4;
}
break;
case 2:
if (gRoomControls.width >> 1 < param_2) {
bVar1 = 0x20;
if (gRoomControls.width / 2 < x) {
shapeBitmask = 0x20;
} else {
bVar1 = 0x10;
shapeBitmask = 0x10;
}
break;
case 3:
if (gRoomControls.height >> 1 < param_3) {
bVar1 = 0x80;
if (gRoomControls.height / 2 < y) {
shapeBitmask = 0x80;
} else {
bVar1 = 0x40;
shapeBitmask = 0x40;
}
break;
}
if ((transition->shape & bVar1) != 0) {
return 1;
if ((transition->shape & shapeBitmask) != 0) {
return TRUE;
}
return 0;
return FALSE;
}
bool32 sub_08080808(const Transition* param_1, u32 param_2, u32 param_3, u32 param_4) {
bool32 sub_08080808(const Transition* param_1, u32 x, u32 y, u32 param_4) {
static const u8 gUnk_0811E7BC[] = { 6, 6, 6, 14, 14, 6, 22, 6 };
const u8* ptr;
u32 temp;
@ -623,10 +622,10 @@ bool32 sub_08080808(const Transition* param_1, u32 param_2, u32 param_3, u32 par
u32 temp4;
ptr = &gUnk_0811E7BC[param_1->shape * 2];
temp = ptr[0];
temp2 = param_2 - param_1->startX;
temp2 = x - param_1->startX;
if ((temp2 + temp <= ptr[0] * 2)) {
temp3 = ptr[1];
temp4 = param_3 - param_1->startY;
temp4 = y - param_1->startY;
if (temp4 + temp3 <= ptr[1] * 2) {
return TRUE;
} else {
@ -842,7 +841,8 @@ void UpdateScreenShake(void) {
s32 roomOffsetY = ((gRoomControls.scroll_y - gRoomControls.origin_y) & 0xf) + 8;
if (gRoomControls.shake_duration != 0) {
gRoomControls.shake_duration--;
screenShakeOffset = &gScreenShakeOffsets[gRoomControls.shake_magnitude * 0x10 + (gRoomControls.shake_duration & 0xe)];
screenShakeOffset =
&gScreenShakeOffsets[gRoomControls.shake_magnitude * 0x10 + (gRoomControls.shake_duration & 0xe)];
if (gMapBottom.bgSettings != NULL) {
gMapBottom.bgSettings->xOffset = screenShakeOffset[0] + roomOffsetX;
gMapBottom.bgSettings->yOffset = screenShakeOffset[1] + roomOffsetY;

View File

@ -30,9 +30,6 @@ typedef struct {
} StaffrollMenu;
#define gStaffrollMenu (*(StaffrollMenu*)&gMenu)
const Font gUnk_08127280 = {
&gBG1Buffer[0x21], BG_TILE_ADDR(0x188), gTextGfxBuffer, 0, 61472, 240, 0, 0, 0, 0, 0, 5, 0, 1, 0
};
@ -53,8 +50,6 @@ const Font* const gStaffrollFonts[] = {
&gUnk_081272C8,
};
// TODO figure out structure of gStaffrollMenu.base.field_0xc
extern StaffrollEntry gUnk_081272F0[];
extern StaffrollEntry gUnk_08127644[];

View File

@ -36,7 +36,7 @@ void Subtask_MapHint_0(void) {
sub_080A4DB8(4);
sub_080A6290();
gScreen.lcd.displayControl = gScreen.lcd.displayControl & 0xf7ff;
SetColor(0, gPaletteBuffer[0x51]);
SetColor(0, gPaletteBuffer[81]);
val = gUnk_08128F4C[gUI.field_0x3];
gSave.field_0x20 |= val;
gGenericMenu.unk10.h[1] = val & gGenericMenu.unk10.h[0];

View File

@ -257,8 +257,7 @@ void DrawRupees(void) {
SoundReq(SFX_RUPEE_GET);
}
case 1:
RenderDigits(0x70, gHUD.rupees,
gWalletSizes[(u32)gSave.stats.walletType].size <= gHUD.rupees, 3);
RenderDigits(0x70, gHUD.rupees, gWalletSizes[(u32)gSave.stats.walletType].size <= gHUD.rupees, 3);
cVar1 = gHUD.unk_c + 1;
default:
gHUD.unk_c = cVar1;
@ -384,7 +383,7 @@ void DrawHearts(void) {
}
if ((gHUD.unk_2 == 0) || (maxHealth != 0)) {
gHUD.unk_2 = 2;
uVar2 = gHUD.health >> 2;
uVar2 = gHUD.health / 4;
if (uVar2 > 10) {
tmp1 = 10;
uVar6 = uVar2 - 10;
@ -393,7 +392,7 @@ void DrawHearts(void) {
uVar6 = 0;
}
maxHealth = gHUD.maxHealth >> 2;
maxHealth = gHUD.maxHealth / 4;
uVar1 = maxHealth;
if (maxHealth > 10) {
maxHealth = 10;
@ -503,7 +502,7 @@ void DrawKeys(void) {
u16* row2;
u32 temp;
if (!(((gHUD.hideFlags & HUD_HIDE_KEYS) == 0)&& (AreaHasKeys()))) {
if (!(((gHUD.hideFlags & HUD_HIDE_KEYS) == 0) && (AreaHasKeys()))) {
if (gHUD.unk_10 != 0) {
gHUD.unk_10 = 0;
row1 = &gBG0Buffer[0x219];