This commit is contained in:
Philip Dubé 2026-04-18 05:29:53 +00:00 committed by GitHub
commit fe8a568e33
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 3010 additions and 37 deletions

View file

@ -2948,7 +2948,34 @@ typedef enum {
// ```
// #### `args`
// - `*int32_t (camId)`
VB_SHOULD_LOAD_BG_IMAGE
VB_SHOULD_LOAD_BG_IMAGE,
// #### `result`
// ```c
// true
// ```
// #### `args`
// - `*DoorShutter`
// - `*Vec3f (relPlayerPos)`
VB_DOOR_SHUTTER_HANDLE_ROOM_TRANSITION,
// #### `result`
// ```c
// true
// ```
// #### `args`
// - `*DoorShutter`
VB_DOOR_SHUTTER_WALK_THROUGH_CS,
// #### `result`
// ```c
// true
// ```
// #### `args`
// - `*Player`
// - `*Actor (doorActor: DoorShutter, EnDoor)`
// - `s32 (doorDirection)`
VB_PLAYER_DOOR_SETUP
} GIVanillaBehavior;
#endif

View file

@ -1251,7 +1251,7 @@ int Fill() {
auto ctx = Rando::Context::GetInstance();
int retries = 0;
SPDLOG_INFO("Starting seed generation...");
while (retries < 5) {
while (retries < 10) {
SPDLOG_INFO("Attempt {}...", retries + 1);
placementFailure = false;
// showItemProgress = false;
@ -1468,7 +1468,7 @@ int Fill() {
return 1;
}
// Unsuccessful placement
if (retries < 4) {
if (retries < 9) {
SPDLOG_DEBUG("Failed to generate a beatable seed. Retrying...");
Regions::ResetAllLocations();
logic->Reset();

View file

@ -48,8 +48,8 @@ bool GenerateRandomizer(std::set<RandomizerCheck> excludedLocations, std::set<Ra
ctx->ClearItemLocations();
int ret = Playthrough::Playthrough_Init(ctx->GetSeed(), excludedLocations, enabledTricks);
if (ret < 0) {
if (ret == -1) { // Failed to generate after 5 tries
SPDLOG_ERROR("Failed to generate after 5 tries.");
if (ret == -1) { // Failed to generate after 10 tries
SPDLOG_ERROR("Failed to generate after 10 tries.");
return false;
} else {
SPDLOG_ERROR("Error {} with fill.", ret);

View file

@ -24,7 +24,6 @@ namespace Rando {
std::weak_ptr<Context> Context::mContext;
Context::Context() {
for (int i = 0; i < RC_MAX; i++) {
itemLocationTable[i] = ItemLocation(static_cast<RandomizerCheck>(i));
}
@ -98,6 +97,10 @@ std::shared_ptr<Context> Context::GetInstance() {
return mContext.lock();
}
const Door* Context::MapDoor(s16 scene, s8 srcRoom, s8 dstRoom, s16 linkX, s16 linkY, s16 linkZ) {
return GetEntranceShuffler()->MapDoor(scene, srcRoom, dstRoom, linkX, linkY, linkZ);
}
Hint* Context::GetHint(const RandomizerHint hintKey) {
return &hintTable[hintKey];
}

View file

@ -8,6 +8,7 @@
#include "hint.h"
#include "fishsanity.h"
#include "trial.h"
#include "ShuffleDoors.h"
#include <memory>
#include <array>
@ -40,6 +41,8 @@ class Context {
static std::shared_ptr<Context> CreateInstance();
static std::shared_ptr<Context> GetInstance();
void InitStaticData();
const Door* MapDoor(s16 scene, s8 srcRoom, s8 dstRoom, s16 linkX, s16 linkY, s16 linkZ);
void ShuffleDoors();
Hint* GetHint(RandomizerHint hintKey);
void AddHint(const RandomizerHint hintId, const Hint hint);
ItemLocation* GetItemLocation(RandomizerCheck locKey);

View file

@ -0,0 +1,66 @@
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp"
#include "soh/Enhancements/randomizer/SeedContext.h"
extern "C" {
#include <z64.h>
#include "functions.h"
#include "variables.h"
#include "src/overlays/actors/ovl_En_Door/z_en_door.h"
#include "src/overlays/actors/ovl_Door_Shutter/z_door_shutter.h"
extern PlayState* gPlayState;
}
void RegisterShuffleDoors() {
bool shouldRegister = IS_RANDO && RAND_GET_OPTION(RSK_SHUFFLE_DUNGEON_DOORS);
// Teleport through doors instead of playing animation.
// OTRfunc_8009728C's MapDoor redirect resolves actual destination.
COND_VB_SHOULD(VB_PLAYER_DOOR_SETUP, shouldRegister, {
Player* player = va_arg(args, Player*);
Actor* doorActor = va_arg(args, Actor*);
s32 doorDirection = va_arg(args, s32);
uint8_t mapIndex = gSaveContext.mapIndex;
if (doorActor->id == ACTOR_EN_DOOR) {
EnDoor* enDoor = reinterpret_cast<EnDoor*>(doorActor);
if (enDoor->lockTimer != 0) {
gSaveContext.inventory.dungeonKeys[mapIndex]--;
Flags_SetSwitch(gPlayState, doorActor->params & 0x3F);
Audio_PlayActorSound2(doorActor, NA_SE_EV_CHAIN_KEY_UNLOCK);
GameInteractor_ExecuteOnDungeonKeyUsedHooks(mapIndex);
enDoor->lockTimer = 0;
doorActor->params = (doorActor->params & ~0x380) | (DOOR_SCENEEXIT << 7);
}
} else if (doorActor->id == ACTOR_DOOR_SHUTTER) {
DoorShutter* shutter = reinterpret_cast<DoorShutter*>(doorActor);
if (shutter->doorType == SHUTTER_KEY_LOCKED &&
shutter->unlockTimer != 0) {
if (shutter->doorType != SHUTTER_BOSS) {
gSaveContext.inventory.dungeonKeys[mapIndex]--;
}
Flags_SetSwitch(gPlayState, shutter->dyna.actor.params & 0x3F);
Audio_PlayActorSound2(doorActor, NA_SE_EV_CHAIN_KEY_UNLOCK);
GameInteractor_ExecuteOnDungeonKeyUsedHooks(mapIndex);
shutter->unlockTimer = 0;
shutter->unk_164 = 1;
}
}
s32 frontRoom =
gPlayState->transiActorCtx.list[(u16)doorActor->params >> 10].sides[(doorDirection > 0) ? 0 : 1].room;
if (frontRoom != gPlayState->roomCtx.curRoom.num) {
func_8009728C(gPlayState, &gPlayState->roomCtx, frontRoom);
// Clean up previous room's actors. Vanilla calls func_80097534 after the door animation/cutscene
// completes, which kills actors not in the current or previous room (func_80031B14)
func_80097534(gPlayState, &gPlayState->roomCtx);
}
player->doorType = PLAYER_DOORTYPE_NONE;
player->doorActor = NULL;
*should = false;
});
}
static RegisterShipInitFunc initFunc(RegisterShuffleDoors, { "IS_RANDO" });

View file

@ -0,0 +1,11 @@
#pragma once
struct Door {
s16 scene;
s8 srcRoom;
s8 dstRoom;
s16 linkX;
s16 linkY;
s16 linkZ;
s16 rotY;
};

File diff suppressed because it is too large Load diff

View file

@ -35,6 +35,19 @@ enum class EntranceType {
GrottoGrave,
GrottoGraveReverse,
Overworld,
DoorDekuTree,
DoorDodongosCavern,
DoorJabuJabu,
DoorForest,
DoorFire,
DoorWater,
DoorShadow,
DoorSpirit,
DoorBottomOfTheWell,
DoorIceCavern,
DoorGerudoTrainingGround,
DoorGanonsCastle,
DoorGanonsTower,
Extra,
Mixed,
All,
@ -135,6 +148,7 @@ class EntranceShuffler {
void SetNoRandomEntrances(bool noRandomEntrances);
int ShuffleAllEntrances();
void CreateEntranceOverrides();
const Door* MapDoor(s16 scene, s8 srcRoom, s8 dstRoom, s16 linkX, s16 linkY, s16 linkZ);
void UnshuffleAllEntrances();
void ParseJson(nlohmann::json spoilerFileJson);
void ApplyEntranceOverrides();
@ -151,19 +165,21 @@ class EntranceShuffler {
EntrancePools oneWayEntrancePools, EntrancePools oneWayTargetEntrancePools);
bool ReplaceEntrance(Entrance* entrance, Entrance* target, std::vector<EntrancePair>& rollbacks);
void ShuffleEntrancePool(std::vector<Entrance*>& entrancePool, std::vector<Entrance*>& targetEntrances,
int retryCount = 20);
int retryCount = 50);
bool ShuffleEntrances(std::vector<Entrance*>& entrances, std::vector<Entrance*>& targetEntrances,
std::vector<EntrancePair>& rollbacks);
bool mNoRandomEntrances;
int mTotalRandomizableEntrances = 0;
int mCurNumRandomizedEntrances = 0;
bool mEntranceShuffleFailure = false;
std::vector<int16_t> mDoorTable;
};
} // namespace Rando
extern "C" {
#endif
EntranceOverride* Randomizer_GetEntranceOverrides();
void Randomizer_SetDoorOverride(int, int);
#ifdef __cplusplus
}
#endif

View file

@ -233,7 +233,7 @@ class Region {
bool pastAdult = logic->IsAdult;
bool pastChild = logic->IsChild;
// set age access as this areas ages
// set age access as this area's ages
logic->IsChild = Child();
logic->IsAdult = Adult();

View file

@ -1574,6 +1574,12 @@ bool Logic::SmallKeys(s16 scene, uint8_t requiredAmount) {
if (HasItem(RG_SKELETON_KEY)) {
return true;
}
if (ctx->GetOption(RSK_SHUFFLE_DUNGEON_DOORS)) {
DungeonInfo* dungeon = ctx->GetDungeons()->GetDungeonFromScene(scene);
if (dungeon != nullptr) {
return GetSmallKeyCount(scene) >= dungeon->GetSmallKeyCount();
}
}
return GetSmallKeyCount(scene) >= requiredAmount;
}

View file

@ -36,6 +36,8 @@ class Logic {
bool CalculatingAvailableChecks = false;
bool ACProcessUndiscoveredExits = false;
/* --- END OF HELPERS AND LOCATION ACCESS --- */
SaveContext* mSaveContext = nullptr;
Logic();
bool CanUse(RandomizerGet itemName);

View file

@ -186,6 +186,7 @@ void Settings::CreateOptionDescriptions() {
"\n"
"Keep in mind you may need to temporarily disable the \"Remember Save Location\" time saver to "
"be able use the spawn positions, especially if they are the only logical way to get to certain areas.";
mOptionDescriptions[RSK_SHUFFLE_DUNGEON_DOORS] = "Shuffle where doors lead to in dungeons.";
mOptionDescriptions[RSK_DECOUPLED_ENTRANCES] =
"Decouple entrances when shuffling them. This means you are no longer guaranteed "
"to end up back where you came from when you go back through an entrance.\n"

View file

@ -227,6 +227,7 @@ RANDO_ENUM_ITEM(LOGIC_DEKU_TREE_PUSHED_BASEMENT_BLOCK)
RANDO_ENUM_ITEM(LOGIC_DEKU_TREE_MQ_CLEARED_SE_ROOM)
RANDO_ENUM_ITEM(LOGIC_DEKU_TREE_MQ_WATER_ROOM_TORCHES)
RANDO_ENUM_ITEM(LOGIC_DEKU_TREE_MQ_2F_BURNED_WEB)
RANDO_ENUM_ITEM(LOGIC_DEKU_TREE_MQ_3F_SWITCH)
RANDO_ENUM_ITEM(LOGIC_DC_EYES_LIT)
RANDO_ENUM_ITEM(LOGIC_DC_STAIRS_ROOM_DOOR)
RANDO_ENUM_ITEM(LOGIC_DC_LIFT_PLATFORM)

View file

@ -471,6 +471,12 @@ RANDO_ENUM_ITEM(RO_MQ_SET_MQ)
RANDO_ENUM_ITEM(RO_MQ_SET_RANDOM)
RANDO_ENUM_END(RandoOptionMQSet)
RANDO_ENUM_BEGIN(RandoOptionShuffleDungeonDoors)
RANDO_ENUM_ITEM(RO_SHUFFLE_DUNGEON_DOORS_OFF)
RANDO_ENUM_ITEM(RO_SHUFFLE_DUNGEON_DOORS_ON)
RANDO_ENUM_ITEM(RO_SHUFFLE_DUNGEON_DOORS_MIX)
RANDO_ENUM_END(RandoOptionShuffleDungeonDoors)
#ifdef RANDO_ENUM_BEGIN_CLEANUP
#undef RANDO_ENUM_BEGIN
#undef RANDO_ENUM_BEGIN_CLEANUP

View file

@ -250,6 +250,7 @@ RANDO_ENUM_ITEM(RSK_SHUFFLE_SIGNS)
RANDO_ENUM_ITEM(RSK_ROCS_FEATHER)
RANDO_ENUM_ITEM(RSK_SHUFFLE_ICICLES)
RANDO_ENUM_ITEM(RSK_SHUFFLE_RED_ICE)
RANDO_ENUM_ITEM(RSK_SHUFFLE_DUNGEON_DOORS)
RANDO_ENUM_ITEM(RSK_MAX)
RANDO_ENUM_END(RandomizerSettingKey)

View file

@ -46,6 +46,8 @@ typedef struct ShopItemIdentity {
#define ENTRANCE_GROTTO_LOAD_START 0x0700
#define ENTRANCE_GROTTO_EXIT_START 0x0800
#define ENTRANCE_DOOR_START 0x0900
#define ENTRANCE_GROTTO_LOAD(index) ENTRANCE_GROTTO_LOAD_START + index
#define ENTRANCE_GROTTO_EXIT(index) ENTRANCE_GROTTO_EXIT_START + index
#define ENTRANCE_DOOR(index) (ENTRANCE_DOOR_START + index)

View file

@ -220,6 +220,10 @@ void Entrance_Init(void) {
continue;
}
if (originalIndex >= ENTRANCE_DOOR_START && originalIndex < ENTRANCE_DOOR_START + 512) {
continue;
}
// Overwrite the indices which we want to shuffle, leaving the rest as they are
entranceOverrideTable[originalIndex] = overrideIndex;

View file

@ -9,7 +9,8 @@
#define ENTRANCE_TABLE_SIZE ENTR_MAX
#define MAX_ENTRANCE_RANDO_USED_INDEX 0x0820
#define ENTRANCE_OVERRIDES_MAX_COUNT 296 // 20 one-way entrances + 125 two-way entrances (x2) + 26 Thieves' Hideout
#define ENTRANCE_OVERRIDES_MAX_COUNT \
696 // 20 one-way entrances + 125 two-way entrances (x2) + 26 Thieves' Hideout + ~200 doors (x2)
#define SHUFFLEABLE_BOSS_COUNT 8
#define SAVEFILE_ENTRANCES_DISCOVERED_IDX_COUNT 66 // Max entrance rando index is 0x0820, (2080 / 32 == 65) + 1

View file

@ -75,7 +75,7 @@ static std::string spoilerEntranceGroupNames[] = {
};
static std::string groupTypeNames[] = {
"One Way", "Overworld", "Interior", "Fortress", "Grotto", "Dungeon",
"One Way", "Overworld", "Interior", "Fortress", "Grotto", "Dungeon", "Door",
};
// Entrance data for the tracker taken from the 3ds rando entrance tracker, and supplemented with scene/spawn info and
@ -418,8 +418,403 @@ const EntranceData entranceData[] = {
{ ENTR_GANONS_TOWER_0, ENTR_INSIDE_GANONS_CASTLE_1, SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "Inside Ganon's Castle", "Ganon's Tower Entrance", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DUNGEON, "gc"},
{ ENTR_OUTSIDE_GANONS_CASTLE_1_2, -1, SINGLE_SCENE_INFO(SCENE_OUTSIDE_GANONS_CASTLE), "Ganon's Blue Warp", "Ganon's Castle Blue Warp", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_ONE_WAY, "gc,bw", 1},
// clang-format on
// Doors
{ ENTRANCE_DOOR(0), ENTRANCE_DOOR(1), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Lobby 2F", "Deku Tree 2F Middle Room", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(1), ENTRANCE_DOOR(0), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree 2F Middle Room", "Deku Tree Lobby 2F", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(2), ENTRANCE_DOOR(3), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree 2F Middle Room", "Deku Tree Falling Platform", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(3), ENTRANCE_DOOR(2), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Falling Platform", "Deku Tree 2F Middle Room", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(4), ENTRANCE_DOOR(5), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Lobby 3F", "Deku Tree Raising Platforms", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(5), ENTRANCE_DOOR(4), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Raising Platforms", "Deku Tree Lobby 3F", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(6), ENTRANCE_DOOR(7), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement", "Deku Tree Basement Scrub", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(7), ENTRANCE_DOOR(6), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Scrub", "Deku Tree Basement", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(8), ENTRANCE_DOOR(9), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Scrub", "Deku Tree Basement Water Room", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(9), ENTRANCE_DOOR(8), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Water Room", "Deku Tree Basement Scrub", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(10), ENTRANCE_DOOR(11), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Water Room", "Deku Tree Basement Torch Room", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(11), ENTRANCE_DOOR(10), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Torch Room", "Deku Tree Basement Water Room", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(12), ENTRANCE_DOOR(13), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Torch Room", "Deku Tree Basement Back Lobby", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(13), ENTRANCE_DOOR(12), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Back Lobby", "Deku Tree Basement Torch Room", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(14), ENTRANCE_DOOR(15), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Back Lobby", "Deku Tree Basement Back Room", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(15), ENTRANCE_DOOR(14), SINGLE_SCENE_INFO(SCENE_DEKU_TREE), "Deku Tree Basement Back Room", "Deku Tree Basement Back Lobby", ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_GROUP_KOKIRI_FOREST, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(16), ENTRANCE_DOOR(17), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Lobby", "DC Behind Mouth", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(17), ENTRANCE_DOOR(16), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Behind Mouth", "DC Lobby", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(18), ENTRANCE_DOOR(19), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Behind Mouth", "DC Back Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(19), ENTRANCE_DOOR(18), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Back Room", "DC Behind Mouth", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(20), ENTRANCE_DOOR(21), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Lobby", "DC Blue Cave", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(21), ENTRANCE_DOOR(20), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Blue Cave", "DC Lobby", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(22), ENTRANCE_DOOR(23), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Blue Cave", "DC Blue Cave Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(23), ENTRANCE_DOOR(22), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Blue Cave Room", "DC Blue Cave", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(24), ENTRANCE_DOOR(25), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Blue Cave", "DC Lower Lizalfos", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(25), ENTRANCE_DOOR(24), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Lower Lizalfos", "DC Blue Cave", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(26), ENTRANCE_DOOR(27), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Lower Lizalfos", "DC Baby Dodongos", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(27), ENTRANCE_DOOR(26), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Baby Dodongos", "DC Lower Lizalfos", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(28), ENTRANCE_DOOR(29), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Baby Dodongos", "DC Baby Dodongos Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(29), ENTRANCE_DOOR(28), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Baby Dodongos Room", "DC Baby Dodongos", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(30), ENTRANCE_DOOR(31), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Lobby", "DC Stairs", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(31), ENTRANCE_DOOR(30), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Stairs", "DC Lobby", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(32), ENTRANCE_DOOR(33), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Stairs", "DC Room Below Stairs", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(33), ENTRANCE_DOOR(32), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Room Below Stairs", "DC Stairs", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(34), ENTRANCE_DOOR(35), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Above Stairs", "DC Room Above Stairs", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(35), ENTRANCE_DOOR(34), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Room Above Stairs", "DC Above Stairs", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(36), ENTRANCE_DOOR(37), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Room Above Stairs", "DC Front Bridge", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(37), ENTRANCE_DOOR(36), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Front Bridge", "DC Room Above Stairs", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(38), ENTRANCE_DOOR(39), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Front Bridge", "DC Spikes", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(39), ENTRANCE_DOOR(38), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Spikes", "DC Front Bridge", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(40), ENTRANCE_DOOR(41), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Spikes", "DC Upper Lizalfos", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(41), ENTRANCE_DOOR(40), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Upper Lizalfos", "DC Spikes", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(42), ENTRANCE_DOOR(43), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Upper Lizalfos", "DC Two Flames", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(43), ENTRANCE_DOOR(42), SINGLE_SCENE_INFO(SCENE_DODONGOS_CAVERN), "DC Two Flames", "DC Upper Lizalfos", ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_GROUP_DEATH_MOUNTAIN_TRAIL, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(44), ENTRANCE_DOOR(45), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Beginning", "JJB Lift", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(45), ENTRANCE_DOOR(44), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Lift", "JJB Beginning", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(46), ENTRANCE_DOOR(47), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Lift", "JJB Holes", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(47), ENTRANCE_DOOR(46), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Holes", "JJB Lift", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(48), ENTRANCE_DOOR(49), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Holes", "JJB Pool", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(49), ENTRANCE_DOOR(48), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Pool", "JJB Holes", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(50), ENTRANCE_DOOR(51), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Holes", "JJB Water Switch", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(51), ENTRANCE_DOOR(50), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Water Switch", "JJB Holes", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(52), ENTRANCE_DOOR(53), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Water Switch", "JJB Lift", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(53), ENTRANCE_DOOR(52), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Lift", "JJB Water Switch", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(54), ENTRANCE_DOOR(55), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Holes", "JJB Fork", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(55), ENTRANCE_DOOR(54), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Fork", "JJB Holes", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(56), ENTRANCE_DOOR(57), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Fork", "JJB West", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(57), ENTRANCE_DOOR(56), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB West", "JJB Fork", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(58), ENTRANCE_DOOR(59), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Fork", "JJB North West", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(59), ENTRANCE_DOOR(58), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB North West", "JJB Fork", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(60), ENTRANCE_DOOR(61), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Fork", "JJB East", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(61), ENTRANCE_DOOR(60), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB East", "JJB Fork", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(62), ENTRANCE_DOOR(63), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Fork", "JJB North East", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(63), ENTRANCE_DOOR(62), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB North East", "JJB Fork", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(64), ENTRANCE_DOOR(65), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Fork", "JJB North", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(65), ENTRANCE_DOOR(64), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB North", "JJB Fork", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(66), ENTRANCE_DOOR(67), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Holes", "JJB Big Octo", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(67), ENTRANCE_DOOR(66), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Big Octo", "JJB Holes", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(68), ENTRANCE_DOOR(69), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Above Big Octo", "JJB Cubes", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(69), ENTRANCE_DOOR(68), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Cubes", "JJB Above Big Octo", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(70), ENTRANCE_DOOR(71), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Cubes", "JJB Above Lift", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(71), ENTRANCE_DOOR(70), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Above Lift", "JJB Cubes", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(72), ENTRANCE_DOOR(73), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB Lift Edge", "JJB East of Lift", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(73), ENTRANCE_DOOR(72), SINGLE_SCENE_INFO(SCENE_JABU_JABU), "JJB East of Lift", "JJB Lift Edge", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(74), ENTRANCE_DOOR(75), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Entrance", "Forest South Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(75), ENTRANCE_DOOR(74), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest South Hall", "Forest Entrance", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(76), ENTRANCE_DOOR(77), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest South Hall", "Forest Lobby", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(77), ENTRANCE_DOOR(76), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Lobby", "Forest South Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(78), ENTRANCE_DOOR(79), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Lobby", "Forest West Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(79), ENTRANCE_DOOR(78), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest West Hall", "Forest Lobby", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(80), ENTRANCE_DOOR(81), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest West Hall", "Forest Block Puzzle", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(81), ENTRANCE_DOOR(80), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Block Puzzle", "Forest West Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(82), ENTRANCE_DOOR(83), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Block Puzzle", "Forest NW Courtyard", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(83), ENTRANCE_DOOR(82), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest NW Courtyard", "Forest Block Puzzle", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(84), ENTRANCE_DOOR(85), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest NW Courtyard", "Forest Floormaster", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(85), ENTRANCE_DOOR(84), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Floormaster", "Forest NW Courtyard", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(86), ENTRANCE_DOOR(87), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest NW Courtyard", "Forest Below Boss Key Chest", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(87), ENTRANCE_DOOR(86), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Below Boss Key Chest", "Forest NW Courtyard", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(88), ENTRANCE_DOOR(89), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest NW Courtyard", "Forest Courtyard Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(89), ENTRANCE_DOOR(88), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Courtyard Hall", "Forest NW Courtyard", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(90), ENTRANCE_DOOR(91), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Courtyard Hall", "Forest NE Courtyard", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(91), ENTRANCE_DOOR(90), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest NE Courtyard", "Forest Courtyard Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(92), ENTRANCE_DOOR(93), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest NW Courtyard", "Forest Lobby", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(93), ENTRANCE_DOOR(92), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Lobby", "Forest NW Courtyard", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(94), ENTRANCE_DOOR(95), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest NE Courtyard", "Forest Falling Floor", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(95), ENTRANCE_DOOR(94), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Falling Floor", "Forest NE Courtyard", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(96), ENTRANCE_DOOR(97), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest NE Courtyard", "Forest Lobby", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(97), ENTRANCE_DOOR(96), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Lobby", "Forest NE Courtyard", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(98), ENTRANCE_DOOR(99), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Falling Floor", "Forest Green Poe", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(99), ENTRANCE_DOOR(98), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Green Poe", "Forest Falling Floor", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(100), ENTRANCE_DOOR(101), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Green Poe", "Forest East Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(101), ENTRANCE_DOOR(100), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest East Hall", "Forest Green Poe", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(102), ENTRANCE_DOOR(103), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest East Hall", "Forest Lobby", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(103), ENTRANCE_DOOR(102), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Lobby", "Forest East Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(104), ENTRANCE_DOOR(105), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Lobby", "Forest North Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(105), ENTRANCE_DOOR(104), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest North Hall", "Forest Lobby", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(106), ENTRANCE_DOOR(107), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest North Hall", "Forest North Room F1", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(107), ENTRANCE_DOOR(106), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest North Room F1", "Forest North Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(108), ENTRANCE_DOOR(109), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Block Puzzle", "Forest Twisted Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(109), ENTRANCE_DOOR(108), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Twisted Hall", "Forest Block Puzzle", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(110), ENTRANCE_DOOR(111), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Twisted Hall", "Forest Red Poe", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(111), ENTRANCE_DOOR(110), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Red Poe", "Forest Twisted Hall", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(112), ENTRANCE_DOOR(113), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Red Poe", "Forest North Room F2", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(113), ENTRANCE_DOOR(112), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest North Room F2", "Forest Red Poe", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(114), ENTRANCE_DOOR(115), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest North Room F2", "Forest Blue Poe", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(115), ENTRANCE_DOOR(114), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Blue Poe", "Forest North Room F2", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(116), ENTRANCE_DOOR(117), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Blue Poe", "Forest Twisted Room", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(117), ENTRANCE_DOOR(116), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Twisted Room", "Forest Blue Poe", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(118), ENTRANCE_DOOR(119), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Twisted Room", "Forest Frozen Eye", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(119), ENTRANCE_DOOR(118), SINGLE_SCENE_INFO(SCENE_FOREST_TEMPLE), "Forest Frozen Eye", "Forest Twisted Room", ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_GROUP_LOST_WOODS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(120), ENTRANCE_DOOR(121), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Lobby", "Fire Near Boss Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(121), ENTRANCE_DOOR(120), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Near Boss Room", "Fire Lobby", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(122), ENTRANCE_DOOR(123), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Lobby", "Fire West Loop Entrance", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(123), ENTRANCE_DOOR(122), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire West Loop Entrance", "Fire Lobby", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(124), ENTRANCE_DOOR(125), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Lobby", "Fire East Loop Entrance", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(125), ENTRANCE_DOOR(124), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire East Loop Entrance", "Fire Lobby", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(126), ENTRANCE_DOOR(127), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire East Loop", "Fire East Loop Entrance", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(127), ENTRANCE_DOOR(126), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire East Loop Entrance", "Fire East Loop", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(128), ENTRANCE_DOOR(129), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire East Loop", "Fire West Loop", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(129), ENTRANCE_DOOR(128), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire West Loop", "Fire East Loop", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(130), ENTRANCE_DOOR(131), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire West Loop", "Fire West Loop Entrance Switch", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(131), ENTRANCE_DOOR(130), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire West Loop Entrance Switch", "Fire West Loop", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(132), ENTRANCE_DOOR(133), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Lobby", "Fire Big Lava Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(133), ENTRANCE_DOOR(132), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Big Lava Room", "Fire Lobby", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(134), ENTRANCE_DOOR(135), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Big Lava Room", "Fire Big Lava Room North Goron", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(135), ENTRANCE_DOOR(134), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Big Lava Room North Goron", "Fire Big Lava Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(136), ENTRANCE_DOOR(137), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Big Lava Room", "Fire Above Big Lava Room North Goron", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(137), ENTRANCE_DOOR(136), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Above Big Lava Room North Goron", "Fire Big Lava Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(138), ENTRANCE_DOOR(139), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Big Lava Room", "Fire Big Lava Room South Goron", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(139), ENTRANCE_DOOR(138), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Big Lava Room South Goron", "Fire Big Lava Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(140), ENTRANCE_DOOR(141), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Big Lava Room", "Fire Fire Pillar", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(141), ENTRANCE_DOOR(140), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Fire Pillar", "Fire Big Lava Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(142), ENTRANCE_DOOR(143), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Above Fire Pillar", "Fire Below Boulder Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(143), ENTRANCE_DOOR(142), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Below Boulder Maze", "Fire Above Fire Pillar", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(144), ENTRANCE_DOOR(145), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Below Boulder Maze", "Fire Boulder Maze Start", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(145), ENTRANCE_DOOR(144), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Boulder Maze Start", "Fire Below Boulder Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(146), ENTRANCE_DOOR(147), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Above Boulder Maze", "Fire Room Above Boulder Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(147), ENTRANCE_DOOR(146), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Room Above Boulder Maze", "Fire Above Boulder Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(148), ENTRANCE_DOOR(149), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Room Above Boulder Maze", "Fire East Peak", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(149), ENTRANCE_DOOR(148), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire East Peak", "Fire Room Above Boulder Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(150), ENTRANCE_DOOR(151), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Boulder Maze Lower", "Fire Bridge Above Bridge", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(151), ENTRANCE_DOOR(150), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Bridge Above Bridge", "Fire Boulder Maze Lower", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(152), ENTRANCE_DOOR(153), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Boulder Maze Lower", "Fire Boulder Maze Side Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(153), ENTRANCE_DOOR(152), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Boulder Maze Side Room", "Fire Boulder Maze Lower", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(154), ENTRANCE_DOOR(155), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Boulder Maze", "Fire Wall Chase", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(155), ENTRANCE_DOOR(154), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Chase", "Fire Boulder Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(156), ENTRANCE_DOOR(157), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Chase Cage", "Fire Bridge Above Bridge", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(157), ENTRANCE_DOOR(156), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Bridge Above Bridge", "Fire Wall Chase Cage", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(158), ENTRANCE_DOOR(159), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Bridge Above Bridge", "Fire Wall Chase", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(159), ENTRANCE_DOOR(158), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Chase", "Fire Bridge Above Bridge", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(160), ENTRANCE_DOOR(161), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Chase", "Fire Corridor", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(161), ENTRANCE_DOOR(160), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Corridor", "Fire Wall Chase", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(162), ENTRANCE_DOOR(163), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Corridor", "Fire Wall Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(163), ENTRANCE_DOOR(162), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze", "Fire Corridor", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(164), ENTRANCE_DOOR(165), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze Upper", "Fire Wall Maze Core Upper", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(165), ENTRANCE_DOOR(164), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze Core Upper", "Fire Wall Maze Upper", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(166), ENTRANCE_DOOR(167), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze", "Fire Wall Maze Side Room", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(167), ENTRANCE_DOOR(166), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze Side Room", "Fire Wall Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(168), ENTRANCE_DOOR(169), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze", "Fire Wall Maze Core", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(169), ENTRANCE_DOOR(168), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze Core", "Fire Wall Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(170), ENTRANCE_DOOR(171), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze Core", "Fire Wall Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(171), ENTRANCE_DOOR(170), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze", "Fire Wall Maze Core", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(172), ENTRANCE_DOOR(173), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Wall Maze End", "Fire Upper Flare Dancer", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(173), ENTRANCE_DOOR(172), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Upper Flare Dancer", "Fire Wall Maze End", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(174), ENTRANCE_DOOR(175), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Above Upper Flare Dancer", "Fire West Climb", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(175), ENTRANCE_DOOR(174), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire West Climb", "Fire Above Upper Flare Dancer", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(176), ENTRANCE_DOOR(177), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire West Climb", "Fire West Peak", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(177), ENTRANCE_DOOR(176), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire West Peak", "Fire West Climb", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(178), ENTRANCE_DOOR(179), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire West Peak Basement", "Fire Hammer Stairs Top", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(179), ENTRANCE_DOOR(178), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Hammer Stairs Top", "Fire West Peak Basement", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(180), ENTRANCE_DOOR(181), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Hammer Stairs Bottom", "Fire Above Fire Wall Maze", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(181), ENTRANCE_DOOR(180), SINGLE_SCENE_INFO(SCENE_FIRE_TEMPLE), "Fire Above Fire Wall Maze", "Fire Hammer Stairs Bottom", ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_GROUP_DEATH_MOUNTAIN_CRATER, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(182), ENTRANCE_DOOR(183), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 3F North", "Water Boss Ramp", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(183), ENTRANCE_DOOR(182), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Boss Ramp", "Water 3F North", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(184), ENTRANCE_DOOR(185), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 3F West", "Water Waterfall Front", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(185), ENTRANCE_DOOR(184), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Waterfall Front", "Water 3F West", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(186), ENTRANCE_DOOR(187), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Waterfall Back", "Water Skinny Pillar", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(187), ENTRANCE_DOOR(186), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Skinny Pillar", "Water Waterfall Back", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(188), ENTRANCE_DOOR(189), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Skinny Pillar Upper", "Water Dark Link", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(189), ENTRANCE_DOOR(188), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Dark Link", "Water Skinny Pillar Upper", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(190), ENTRANCE_DOOR(191), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Dark Link", "Water Past Dark Link", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(191), ENTRANCE_DOOR(190), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Past Dark Link", "Water Dark Link", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(192), ENTRANCE_DOOR(193), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Whirlpool", "Water 1F West", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(193), ENTRANCE_DOOR(192), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 1F West", "Water Whirlpool", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(194), ENTRANCE_DOOR(195), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 1F North", "Water Boulders Front", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(195), ENTRANCE_DOOR(194), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Boulders Front", "Water 1F North", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(196), ENTRANCE_DOOR(197), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Boulders Upper", "Water Boulders Hidden Room", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(197), ENTRANCE_DOOR(196), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Boulders Hidden Room", "Water Boulders Upper", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(198), ENTRANCE_DOOR(199), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Boulders Back", "Water Past Boulders", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(199), ENTRANCE_DOOR(198), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Past Boulders", "Water Boulders Back", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(200), ENTRANCE_DOOR(201), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Past Boulders", "Water Jets Past Boulders", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(201), ENTRANCE_DOOR(200), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Jets Past Boulders", "Wate Past Bouldersr", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(202), ENTRANCE_DOOR(203), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Jets Past Boulders", "Water Boulders Upper", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(203), ENTRANCE_DOOR(202), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water Boulders Upper", "Water Jets Past Boulders", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(204), ENTRANCE_DOOR(205), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 3F East", "Water 3F East Side Room", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(205), ENTRANCE_DOOR(204), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 3F East Side Room", "Water 3F East", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(206), ENTRANCE_DOOR(207), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 1F East", "Water 1F East Side Room", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(207), ENTRANCE_DOOR(206), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 1F East Side Room", "Water 1F East", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(208), ENTRANCE_DOOR(209), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 1F", "Water 1F Central", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(209), ENTRANCE_DOOR(208), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 1F Central", "Water 1F", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(210), ENTRANCE_DOOR(211), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 2F", "Water 2F Central", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(211), ENTRANCE_DOOR(210), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 2F Central", "Water 2F", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(212), ENTRANCE_DOOR(213), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 2F", "Water 2F East", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(213), ENTRANCE_DOOR(212), SINGLE_SCENE_INFO(SCENE_WATER_TEMPLE), "Water 2F East", "Water 2F", ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_GROUP_LAKE_HYLIA, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(214), ENTRANCE_DOOR(215), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Beginning", "Shadow Whispering Walls", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(215), ENTRANCE_DOOR(214), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Whispering Walls", "Shadow Beginning", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(216), ENTRANCE_DOOR(217), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Whispering Walls", "Shadow Whispering Walls Side Room", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(217), ENTRANCE_DOOR(216), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Whispering Walls Side Room", "Shadow Whispering Walls", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(218), ENTRANCE_DOOR(219), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Whispering Walls", "Shadow Deadhand", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(219), ENTRANCE_DOOR(218), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Deadhand", "Shadow Whispering Walls", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(220), ENTRANCE_DOOR(221), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow First Beamos", "Shadow First Beamos Right", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(221), ENTRANCE_DOOR(220), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow First Beamos Right", "Shadow First Beamos", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(222), ENTRANCE_DOOR(223), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow First Beamos", "Shadow First Beamos Left", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(223), ENTRANCE_DOOR(222), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow First Beamos Left", "Shadow First Beamos", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(224), ENTRANCE_DOOR(225), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow First Beamos", "Shadow Hall to Huge Pit", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(225), ENTRANCE_DOOR(224), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Hall to Huge Pit", "Shadow First Beamos", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(226), ENTRANCE_DOOR(227), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Huge Pit Upper", "Shadow Invisible Blades", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(227), ENTRANCE_DOOR(226), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Invisible Blades", "Shadow Huge Pit Upper", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(228), ENTRANCE_DOOR(229), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Huge Pit Lower", "Shadow Invisible Spikes", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(229), ENTRANCE_DOOR(228), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Invisible Spikes", "Shadow Huge Pit Lower", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(230), ENTRANCE_DOOR(231), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Invisible Spikes", "Shadow Skull Jar", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(231), ENTRANCE_DOOR(230), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Skull Jar", "Shadow Invisible Spikes", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(232), ENTRANCE_DOOR(233), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Invisible Spikes", "Shadow Wind Tunnel Upper", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(233), ENTRANCE_DOOR(232), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Wind Tunnel Upper", "Shadow Invisible Spikes", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(234), ENTRANCE_DOOR(235), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Wind Tunnel Lower", "Shadow Wind Hint", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(235), ENTRANCE_DOOR(234), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Wind Hint", "Shadow Wind Tunnel Lower", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(236), ENTRANCE_DOOR(237), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Wind Tunnel Lower", "Shadow Room to Boat", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(237), ENTRANCE_DOOR(236), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Room to Boat", "Shado Wind Tunnel Lowerw", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(238), ENTRANCE_DOOR(239), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Room to Boat", "Shadow Dock", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(239), ENTRANCE_DOOR(238), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Dock", "Shadow Room to Boat", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(240), ENTRANCE_DOOR(241), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Past Chasm", "Shadow Near Boss Room", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(241), ENTRANCE_DOOR(240), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Near Boss Room", "Shadow Past Chasm", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(242), ENTRANCE_DOOR(243), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Beyond Boat", "Shadow Maze", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(243), ENTRANCE_DOOR(242), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Maze", "Shadow Beyond Boat", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(244), ENTRANCE_DOOR(245), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Maze", "Shadow X-Cross", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(245), ENTRANCE_DOOR(244), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow X-Cross", "Shadow Maze", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(246), ENTRANCE_DOOR(247), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Maze", "Shadow Three Skull Jars", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(247), ENTRANCE_DOOR(246), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Three Skull Jars", "Shadow Maze", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(248), ENTRANCE_DOOR(249), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Maze", "Shadow Wooden Spikes", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(249), ENTRANCE_DOOR(248), SINGLE_SCENE_INFO(SCENE_SHADOW_TEMPLE), "Shadow Wooden Spikes", "Shadow Maze", ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_GROUP_GRAVEYARD, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(250), ENTRANCE_DOOR(251), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Adult Lobby", "Spirit Adult Sand Pit", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(251), ENTRANCE_DOOR(250), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Adult Sand Pit", "Spirit Adult Lobby", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(252), ENTRANCE_DOOR(253), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Adult Lobby", "Spirit Boulders", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(253), ENTRANCE_DOOR(252), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Boulders", "Spirit Adult Lobby", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(254), ENTRANCE_DOOR(255), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Boulders", "Spirit Past Boulders", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(255), ENTRANCE_DOOR(254), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Past Boulders", "Spirit Boulders", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(256), ENTRANCE_DOOR(257), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Adult Lobby", "Spirit Adult Climb", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(257), ENTRANCE_DOOR(256), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Adult Climb", "Spirit Adult Lobby", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(258), ENTRANCE_DOOR(259), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Statue East", "Spirit Adult Climb", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(259), ENTRANCE_DOOR(258), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Adult Climb", "Spirit Statue East", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(260), ENTRANCE_DOOR(261), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Statue East", "Spirit Stairs to Beamos Pits", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(261), ENTRANCE_DOOR(260), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Stairs to Beamos Pits", "Spirit Statue East", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(262), ENTRANCE_DOOR(263), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Stairs to Beamos Pits", "Spirit Beamos Pits", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(263), ENTRANCE_DOOR(262), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Beamos Pits", "Spirit Stairs to Beamos Pits", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(264), ENTRANCE_DOOR(265), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Beamos Pits", "Spirit Big Wall Lower", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(265), ENTRANCE_DOOR(264), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Big Wall Lower", "Spirit Beamos Pits", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(266), ENTRANCE_DOOR(267), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Beamos Pits", "Spirit Four Armos", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(267), ENTRANCE_DOOR(266), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Four Armos", "Spirit Beamos Pits", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(268), ENTRANCE_DOOR(269), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Four Armos", "Spirit Four Armos Side Room", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(269), ENTRANCE_DOOR(268), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Four Armos Side Room", "Spirit Four Armos", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(270), ENTRANCE_DOOR(271), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Four Armos", "Spirit Stairs to East Hand", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(271), ENTRANCE_DOOR(270), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Stairs to East Hand", "Spirit Four Armos", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(272), ENTRANCE_DOOR(273), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Stairs to East Hand", "Spirit East Iron Knuckle", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(273), ENTRANCE_DOOR(272), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit East Iron Knuckle", "Spirit Stairs to East Hand", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(274), ENTRANCE_DOOR(275), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit East Iron Knuckle", "Spirit Exit to East Hand", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(275), ENTRANCE_DOOR(274), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Exit to East Hand", "Spirit East Iron Knuckle", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(276), ENTRANCE_DOOR(277), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Big Wall Upper", "Spirit 4F Central", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(277), ENTRANCE_DOOR(276), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit 4F Central", "Spiri Big Wall Uppert", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(278), ENTRANCE_DOOR(279), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit 4F Central", "Spirit 4F Side Room", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(279), ENTRANCE_DOOR(278), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit 4F Side Room", "Spirit 4F Central", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(280), ENTRANCE_DOOR(281), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit 4F Central", "Spirit Big Mirror", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(281), ENTRANCE_DOOR(280), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Big Mirror", "Spirit 4F Central", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(282), ENTRANCE_DOOR(283), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Big Mirror", "Spirit Big Mirror Cave", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(283), ENTRANCE_DOOR(282), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Big Mirror Cave", "Spirit Big Mirror", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(284), ENTRANCE_DOOR(285), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Lobby", "Spirit Child Left", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(285), ENTRANCE_DOOR(284), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Left", "Spirit Child Lobby", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(286), ENTRANCE_DOOR(287), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Left Across Bridge", "Spirit Child Back Room", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(287), ENTRANCE_DOOR(286), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Back Room", "Spirit Child Left Across Bridge", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(288), ENTRANCE_DOOR(289), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Back Room", "Spirit Child Right Across Bridge", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(289), ENTRANCE_DOOR(288), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Right Across Bridge", "Spirit Child Back Room", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(290), ENTRANCE_DOOR(291), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Right", "Spirit Child Lobby", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(291), ENTRANCE_DOOR(290), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Lobby", "Spirit Child Right", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(292), ENTRANCE_DOOR(293), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Before Climb", "Spirit Child Climb", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(293), ENTRANCE_DOOR(292), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Climb", "Spirit Child Before Climb", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(294), ENTRANCE_DOOR(295), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Child Climb", "Spirit Statue", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(295), ENTRANCE_DOOR(294), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Statue", "Spirit Child Climb", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(296), ENTRANCE_DOOR(297), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Statue", "Spirit Stairs to Block Puzzle", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(297), ENTRANCE_DOOR(296), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Stairs to Block Puzzle", "Spirit Statue", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(298), ENTRANCE_DOOR(299), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Stairs to Block Puzzle", "Spirit Block Puzzle", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(299), ENTRANCE_DOOR(298), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Block Puzzle", "Spirit Stairs to Block Puzzle", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(300), ENTRANCE_DOOR(301), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Block Puzzle", "Spirit Stairs to West Hand", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(301), ENTRANCE_DOOR(300), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Stairs to West Hand", "Spirit Block Puzzle", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(302), ENTRANCE_DOOR(303), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Stairs to West Hand", "Spirit West Iron Knuckle", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(303), ENTRANCE_DOOR(302), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit West Iron Knuckle", "Spirit Stairs to West Hand", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(304), ENTRANCE_DOOR(305), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit West Iron Knuckle", "Spirit Exit to West Hand", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(305), ENTRANCE_DOOR(304), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Exit to West Hand", "Spirit West Iron Knuckle", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(306), ENTRANCE_DOOR(307), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Statue", "Spirit Shortcut", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(307), ENTRANCE_DOOR(306), SINGLE_SCENE_INFO(SCENE_SPIRIT_TEMPLE), "Spirit Shortcut", "Spirit Statue", ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_GROUP_DESERT_COLOSSUS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(308), ENTRANCE_DOOR(309), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well", "Bottom of the Well West Inner Room", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(309), ENTRANCE_DOOR(310), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well West Inner Room", "Bottom of the Well", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(310), ENTRANCE_DOOR(311), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well", "Bottom of the Well East Inner Room", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(311), ENTRANCE_DOOR(310), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well East Inner Room", "Bottom of the Well", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(312), ENTRANCE_DOOR(313), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well", "Bottom of the Well Coffins", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(313), ENTRANCE_DOOR(312), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well Coffins", "Bottom of the Well", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(314), ENTRANCE_DOOR(315), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well", "Bottom of the Well Dead Hand", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(315), ENTRANCE_DOOR(314), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well Dead Hand", "Bottom of the Well", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(316), ENTRANCE_DOOR(317), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well", "Bottom of the Well Pits", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(317), ENTRANCE_DOOR(316), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well Pits", "Bottom of the Well", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(318), ENTRANCE_DOOR(319), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well", "Bottom of the Well Cage", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(319), ENTRANCE_DOOR(318), SINGLE_SCENE_INFO(SCENE_BOTTOM_OF_THE_WELL), "Bottom of the Well Cage", "Bottom of the Well", ENTRANCE_GROUP_KAKARIKO, ENTRANCE_GROUP_KAKARIKO, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(320), ENTRANCE_DOOR(321), SINGLE_SCENE_INFO(SCENE_ICE_CAVERN), "Ice Cavern", "Ice Cavern Final Room", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(321), ENTRANCE_DOOR(320), SINGLE_SCENE_INFO(SCENE_ICE_CAVERN), "Ice Cavern Final Room", "Ice Cavern", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(322), ENTRANCE_DOOR(323), SINGLE_SCENE_INFO(SCENE_ICE_CAVERN), "Ice Cavern Final Room", "Ice Cavern Shortcut", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(323), ENTRANCE_DOOR(322), SINGLE_SCENE_INFO(SCENE_ICE_CAVERN), "Ice Cavern Shortcut", "Ice Cavern Final Room", ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_GROUP_ZORAS_FOUNTAIN, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(324), ENTRANCE_DOOR(325), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Lobby", "GTG Maze", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(325), ENTRANCE_DOOR(324), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Maze", "GTG Lobby", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(326), ENTRANCE_DOOR(327), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Lobby", "GTG Sand Room", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(327), ENTRANCE_DOOR(326), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Sand Room", "GTG Lobby", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(328), ENTRANCE_DOOR(329), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Sand Room", "GTG West Lower", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(329), ENTRANCE_DOOR(328), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG West Lower", "GTG Sand Room", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(330), ENTRANCE_DOOR(331), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG West Upper", "GTG Heavy Block", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(331), ENTRANCE_DOOR(330), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Heavy Block", "GTG West Upper", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(332), ENTRANCE_DOOR(333), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Heavy Block", "GTG Room Behind Heavy Block", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(333), ENTRANCE_DOOR(332), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Room Behind Heavy Block", "GTG Heavy Block", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(334), ENTRANCE_DOOR(335), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Heavy Block Upper", "GTG Eye Statue Upper", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(335), ENTRANCE_DOOR(334), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Eye Statue Upper", "GTG Heavy Block Upper", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(336), ENTRANCE_DOOR(337), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Eye Statue Upper", "GTG Above Maze", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(337), ENTRANCE_DOOR(336), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Above Maze", "GTG Eye Statue Upper", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(338), ENTRANCE_DOOR(339), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Eye Statue", "GTG Hammer Room", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(339), ENTRANCE_DOOR(338), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Hammer Room", "GTG Eye Statue", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(340), ENTRANCE_DOOR(341), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Hammer Room", "GTG Lava Room", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(341), ENTRANCE_DOOR(340), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Lava Room", "GTG Hammer Room", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(342), ENTRANCE_DOOR(343), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Lava Room", "GTG Underwater Room", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(343), ENTRANCE_DOOR(342), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Underwater Room", "GTG Lava Room", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(344), ENTRANCE_DOOR(345), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Lava Room", "GTG Dinalfos", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(345), ENTRANCE_DOOR(344), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Dinalfos", "GTG Lava Room", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(346), ENTRANCE_DOOR(347), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Dinalfos", "GTG Lobby", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(347), ENTRANCE_DOOR(346), SINGLE_SCENE_INFO(SCENE_GERUDO_TRAINING_GROUND), "GTG Lobby", "GTG Dinalfos", ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_GROUP_GERUDO_FORTRESS, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(348), ENTRANCE_DOOR(349), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Entrance", "GC Lobby", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(349), ENTRANCE_DOOR(348), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Lobby", "GC Entrance", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(350), ENTRANCE_DOOR(351), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Lobby", "GC Spirit", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(351), ENTRANCE_DOOR(350), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Spirit", "GC Lobby", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(352), ENTRANCE_DOOR(353), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Spirit", "GC Spirit Before Switch", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(353), ENTRANCE_DOOR(352), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Spirit Before Switch", "GC Spirit", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(354), ENTRANCE_DOOR(355), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Spirit After Switch", "GC Spirit Final", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(355), ENTRANCE_DOOR(354), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Spirit Final", "GC Spirit After Switch", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(356), ENTRANCE_DOOR(357), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Lobby", "GC Light", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(357), ENTRANCE_DOOR(356), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Light", "GC Lobby", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(358), ENTRANCE_DOOR(359), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Light Triforce", "GC Light Boulders", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(359), ENTRANCE_DOOR(358), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Light Boulders", "GC Light Triforce", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(360), ENTRANCE_DOOR(361), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Light Boulders", "GC Light Final", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(361), ENTRANCE_DOOR(360), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Light Final", "GC Light Boulders", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(362), ENTRANCE_DOOR(363), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Lobby", "GC Fire Front", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(363), ENTRANCE_DOOR(362), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Fire Front", "GC Lobby", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(364), ENTRANCE_DOOR(365), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Fire Back", "GC Final", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(365), ENTRANCE_DOOR(364), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Final", "GC Fire Back", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(366), ENTRANCE_DOOR(367), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Lobby", "GC Shadow Front", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(367), ENTRANCE_DOOR(366), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Shadow Front", "GC Lobby", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(368), ENTRANCE_DOOR(369), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Shadow Back", "GC Shadow Trial", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(369), ENTRANCE_DOOR(368), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Shadow Trial", "GC Shadow Back", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(370), ENTRANCE_DOOR(371), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Lobby", "GC Water", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(371), ENTRANCE_DOOR(370), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Water", "GC Lobby", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(372), ENTRANCE_DOOR(373), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Water Back", "GC Water Block Front", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(373), ENTRANCE_DOOR(372), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Water Block Front", "GC Water Back", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(374), ENTRANCE_DOOR(375), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Water Block Back", "GC Water Final", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(375), ENTRANCE_DOOR(374), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Water Final", "GC Water Block Back", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(376), ENTRANCE_DOOR(377), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Lobby", "GC Forest", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(377), ENTRANCE_DOOR(376), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Forest", "GC Lobby", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(378), ENTRANCE_DOOR(379), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Forest Back", "GC Forest Wind Front", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(379), ENTRANCE_DOOR(378), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Forest Wind Front", "GC Forest Back", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(380), ENTRANCE_DOOR(381), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Forest Wind Back", "GC Forest Final", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(381), ENTRANCE_DOOR(380), SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "GC Forest Final", "GC Forest Wind Back", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(382), ENTRANCE_DOOR(383), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Stairs 1", "Ganon's Tower Floor 1", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(383), ENTRANCE_DOOR(382), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Floor 1", "Ganon's Tower Stairs 1", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(384), ENTRANCE_DOOR(385), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Floor 1", "Ganon's Tower Stairs 2", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(385), ENTRANCE_DOOR(384), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Stairs 2", "Ganon's Tower Floor 1", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(386), ENTRANCE_DOOR(387), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Stairs 2", "Ganon's Tower Floor 2", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(387), ENTRANCE_DOOR(386), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Floor 2", "Ganon's Tower Stairs 2", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(388), ENTRANCE_DOOR(389), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Floor 2", "Ganon's Tower Stairs 3", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(389), ENTRANCE_DOOR(388), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Stairs 3", "Ganon's Tower Floor 2", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(390), ENTRANCE_DOOR(391), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Stairs 3", "Ganon's Tower Floor 3", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(391), ENTRANCE_DOOR(390), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Floor 3", "Ganon's Tower Floor 4", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(392), ENTRANCE_DOOR(393), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Floor 3", "Ganon's Tower Stairs 4", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
{ ENTRANCE_DOOR(393), ENTRANCE_DOOR(392), SINGLE_SCENE_INFO(SCENE_GANONS_TOWER), "Ganon's Tower Stairs 4", "Ganon's Tower Floor 3", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DOOR },
};
// clang-format on
// Check if Link is in the area and return that scene/entrance for tracking
int16_t LinkIsInArea(const EntranceData* entrance) {

View file

@ -41,6 +41,7 @@ typedef enum {
ENTRANCE_TYPE_FORTRESS,
ENTRANCE_TYPE_GROTTO,
ENTRANCE_TYPE_DUNGEON,
ENTRANCE_TYPE_DOOR,
ENTRANCE_TYPE_COUNT,
} TrackerEntranceType;

View file

@ -383,6 +383,7 @@ void Settings::CreateOptions() {
OPT_CALLBACK(RSK_SHUFFLE_OVERWORLD_SPAWNS, {
HandleStartingAgeUI();
});
OPT_U8(RSK_SHUFFLE_DUNGEON_DOORS, "Dungeon Doors", {"Off", "On", "Mix"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleDungeonDoors"), mOptionDescriptions[RSK_SHUFFLE_DUNGEON_DOORS], WIDGET_CVAR_COMBOBOX, RO_SHUFFLE_DUNGEON_DOORS_OFF);
OPT_BOOL(RSK_MIXED_ENTRANCE_POOLS, "Mixed Entrance Pools", CVAR_RANDOMIZER_SETTING("MixedEntrances"), mOptionDescriptions[RSK_MIXED_ENTRANCE_POOLS]);
OPT_CALLBACK(RSK_MIXED_ENTRANCE_POOLS, {
// Show mixed entrance pool options if mixed entrance pools are enabled, but only the ones that aren't off
@ -1786,10 +1787,11 @@ void Settings::CreateOptions() {
&mOptions[RSK_SHUFFLE_GANONS_TOWER_ENTRANCE], &mOptions[RSK_SHUFFLE_OVERWORLD_ENTRANCES],
&mOptions[RSK_SHUFFLE_INTERIOR_ENTRANCES], &mOptions[RSK_SHUFFLE_THIEVES_HIDEOUT_ENTRANCES],
&mOptions[RSK_SHUFFLE_GROTTO_ENTRANCES], &mOptions[RSK_SHUFFLE_OWL_DROPS], &mOptions[RSK_SHUFFLE_WARP_SONGS],
&mOptions[RSK_SHUFFLE_OVERWORLD_SPAWNS], &mOptions[RSK_DECOUPLED_ENTRANCES],
&mOptions[RSK_MIXED_ENTRANCE_POOLS], &mOptions[RSK_MIX_DUNGEON_ENTRANCES], &mOptions[RSK_MIX_BOSS_ENTRANCES],
&mOptions[RSK_MIX_OVERWORLD_ENTRANCES], &mOptions[RSK_MIX_INTERIOR_ENTRANCES],
&mOptions[RSK_MIX_THIEVES_HIDEOUT_ENTRANCES], &mOptions[RSK_MIX_GROTTO_ENTRANCES] },
&mOptions[RSK_SHUFFLE_DUNGEON_DOORS], &mOptions[RSK_SHUFFLE_OVERWORLD_SPAWNS],
&mOptions[RSK_DECOUPLED_ENTRANCES], &mOptions[RSK_MIXED_ENTRANCE_POOLS], &mOptions[RSK_MIX_DUNGEON_ENTRANCES],
&mOptions[RSK_MIX_BOSS_ENTRANCES], &mOptions[RSK_MIX_OVERWORLD_ENTRANCES],
&mOptions[RSK_MIX_INTERIOR_ENTRANCES], &mOptions[RSK_MIX_THIEVES_HIDEOUT_ENTRANCES],
&mOptions[RSK_MIX_GROTTO_ENTRANCES] },
WidgetContainerType::SECTION);
mOptionGroups[RSG_MENU_COLUMN_ENTRANCES] =
OptionGroup::SubGroup("", { &mOptionGroups[RSG_MENU_SECTION_ENTRANCES] }, WidgetContainerType::COLUMN);
@ -2093,6 +2095,7 @@ void Settings::CreateOptions() {
&mOptions[RSK_SHUFFLE_OWL_DROPS],
&mOptions[RSK_SHUFFLE_WARP_SONGS],
&mOptions[RSK_SHUFFLE_OVERWORLD_SPAWNS],
&mOptions[RSK_SHUFFLE_DUNGEON_DOORS],
&mOptions[RSK_MIXED_ENTRANCE_POOLS],
&mOptions[RSK_MIX_DUNGEON_ENTRANCES],
&mOptions[RSK_MIX_BOSS_ENTRANCES],
@ -2514,7 +2517,8 @@ void Context::FinalizeSettings(const std::set<RandomizerCheck>& excludedLocation
mOptions[RSK_SHUFFLE_OVERWORLD_ENTRANCES] ||
mOptions[RSK_SHUFFLE_INTERIOR_ENTRANCES].IsNot(RO_INTERIOR_ENTRANCE_SHUFFLE_OFF) ||
mOptions[RSK_SHUFFLE_THIEVES_HIDEOUT_ENTRANCES] || mOptions[RSK_SHUFFLE_GROTTO_ENTRANCES] ||
mOptions[RSK_SHUFFLE_OWL_DROPS] || mOptions[RSK_SHUFFLE_WARP_SONGS] || mOptions[RSK_SHUFFLE_OVERWORLD_SPAWNS]) {
mOptions[RSK_SHUFFLE_OWL_DROPS] || mOptions[RSK_SHUFFLE_WARP_SONGS] || mOptions[RSK_SHUFFLE_OVERWORLD_SPAWNS] ||
mOptions[RSK_SHUFFLE_DUNGEON_DOORS]) {
mOptions[RSK_SHUFFLE_ENTRANCES].Set(RO_GENERIC_ON);
} else {
mOptions[RSK_SHUFFLE_ENTRANCES].Set(RO_GENERIC_OFF);

View file

@ -1088,8 +1088,9 @@ void TimeSaverOnActorInitHandler(void* actorRef) {
// So for now we're just going to set the flag before they get to the room the cutscene is in
if (gPlayState->sceneNum == SCENE_FOREST_TEMPLE && actor->id == ACTOR_EN_DOOR &&
!Flags_GetSwitch(gPlayState, 0x1B) && !Flags_GetSwitch(gPlayState, 0x1C)) {
if (CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.Story"), IS_RANDO) &&
!CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.GlitchAiding"), 0)) {
if ((IS_RANDO && RAND_GET_OPTION(RSK_SHUFFLE_DUNGEON_DOORS)) ||
(CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.Story"), IS_RANDO) &&
!CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.GlitchAiding"), 0))) {
Flags_SetSwitch(gPlayState, 0x1B);
}
}

View file

@ -1,4 +1,6 @@
#include "OTRGlobals.h"
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/Enhancements/randomizer/ShuffleDoors.h"
#include "ResourceManagerHelpers.h"
#include <libultraship/libultraship.h>
#include "soh/resource/type/Scene.h"
@ -35,10 +37,16 @@
#include "soh/resource/type/scenecommand/SetEchoSettings.h"
#include "soh/resource/type/scenecommand/SetAlternateHeaders.h"
extern "C" {
#include "overlays/actors/ovl_En_Ru1/z_en_ru1.h"
#include "assets/objects/object_ru1/object_ru1.h"
}
extern Ship::IResource* OTRPlay_LoadFile(PlayState* play, const char* fileName);
extern "C" s32 Object_Spawn(ObjectContext* objectCtx, s16 objectId);
extern "C" RomFile sNaviMsgFiles[];
s32 OTRScene_ExecuteCommands(PlayState* play, SOH::Scene* scene);
extern "C" void func_8083C0E8(Player*, PlayState*); // used by doorsanity to prevent cutscene softlock
bool Scene_CommandSpawnList(PlayState* play, SOH::ISceneCommand* cmd) {
// SOH::SetStartPositionList* cmdStartPos = std::static_pointer_cast<SOH::SetStartPositionList>(cmd);
@ -488,7 +496,96 @@ extern "C" s32 OTRfunc_800973FC(PlayState* play, RoomContext* roomCtx) {
}
extern "C" s32 OTRfunc_8009728C(PlayState* play, RoomContext* roomCtx, s32 roomNum) {
u32 size;
if (play->sceneNum >= SCENE_DEKU_TREE && play->sceneNum <= SCENE_INSIDE_GANONS_CASTLE && play->state.frames != 0) {
Player* player = GET_PLAYER(play);
if (player != NULL) {
SPDLOG_WARN("DOOR {}\t{}\t({},{},{},{})", roomCtx->curRoom.num, roomNum, (s32)player->actor.world.pos.x,
(s32)player->actor.world.pos.y, (s32)player->actor.world.pos.z, (s32)player->actor.world.rot.y);
if (IS_RANDO && OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_DUNGEON_DOORS)) {
const Door* newDoor = OTRGlobals::Instance->gRandoContext->MapDoor(
play->sceneNum, roomCtx->curRoom.num, roomNum, (s32)player->actor.world.pos.x,
(s32)player->actor.world.pos.y, (s32)player->actor.world.pos.z);
if (newDoor != NULL) {
roomNum = newDoor->srcRoom;
player->actor.world.pos.x = newDoor->linkX;
player->actor.world.pos.y = newDoor->linkY;
player->actor.world.pos.z = newDoor->linkZ;
player->actor.world.rot.y = newDoor->rotY;
player->actor.shape.rot.y = newDoor->rotY;
player->skelAnime.movementFlags = 0;
player->skelAnime.endFrame = 0;
player->doorTimer = 0;
player->linearVelocity = 0;
player->unk_450 = player->actor.world.pos;
player->unk_45C = player->actor.world.pos;
Camera_InitPlayerSettings(&play->mainCamera, player);
func_8083C0E8(player, play); // prevent cutscene softlock
if (play->sceneNum != newDoor->scene) {
gSaveContext.respawnFlag = 1;
gSaveContext.subTimerSeconds = 1;
switch (newDoor->scene) {
case SCENE_DEKU_TREE:
play->nextEntranceIndex = ENTR_DEKU_TREE_ENTRANCE;
break;
case SCENE_DODONGOS_CAVERN:
play->nextEntranceIndex = ENTR_DODONGOS_CAVERN_ENTRANCE;
break;
case SCENE_JABU_JABU:
play->nextEntranceIndex = ENTR_JABU_JABU_ENTRANCE;
break;
case SCENE_FOREST_TEMPLE:
play->nextEntranceIndex = ENTR_FOREST_TEMPLE_ENTRANCE;
break;
case SCENE_FIRE_TEMPLE:
play->nextEntranceIndex = ENTR_FIRE_TEMPLE_ENTRANCE;
break;
case SCENE_WATER_TEMPLE:
play->nextEntranceIndex = ENTR_WATER_TEMPLE_ENTRANCE;
break;
case SCENE_SHADOW_TEMPLE:
play->nextEntranceIndex = ENTR_SHADOW_TEMPLE_ENTRANCE;
break;
case SCENE_SPIRIT_TEMPLE:
play->nextEntranceIndex = ENTR_SPIRIT_TEMPLE_ENTRANCE;
break;
case SCENE_BOTTOM_OF_THE_WELL:
play->nextEntranceIndex = ENTR_BOTTOM_OF_THE_WELL_ENTRANCE;
break;
case SCENE_ICE_CAVERN:
play->nextEntranceIndex = ENTR_ICE_CAVERN_ENTRANCE;
break;
case SCENE_GERUDO_TRAINING_GROUND:
play->nextEntranceIndex = ENTR_GERUDO_TRAINING_GROUND_ENTRANCE;
break;
case SCENE_INSIDE_GANONS_CASTLE:
play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_ENTRANCE;
break;
case SCENE_GANONS_TOWER:
play->nextEntranceIndex = ENTR_GANONS_TOWER_0;
break;
}
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = play->nextEntranceIndex;
gSaveContext.respawn[RESPAWN_MODE_DOWN].roomIndex = roomNum;
gSaveContext.respawn[RESPAWN_MODE_DOWN].pos = player->actor.world.pos;
gSaveContext.respawn[RESPAWN_MODE_DOWN].yaw = player->actor.world.rot.y;
gSaveContext.respawn[RESPAWN_MODE_DOWN].playerParams = 0xDFF;
gSaveContext.nextTransitionType = TRANS_TYPE_INSTANT;
play->transitionTrigger = TRANS_TRIGGER_START;
play->transitionType = TRANS_TYPE_INSTANT;
static HOOK_ID hookId;
hookId = REGISTER_VB_SHOULD(VB_INFLICT_VOID_DAMAGE, {
*should = false;
GameInteractor::Instance->UnregisterGameHookForID<GameInteractor::OnVanillaBehavior>(
hookId);
});
return 0;
} else if (play->interfaceCtx.mapRoomNum != roomNum) {
Map_InitRoomData(play, roomNum);
}
}
}
}
}
if (roomCtx->status == 0) {
roomCtx->prevRoom = roomCtx->curRoom;
@ -501,7 +598,7 @@ extern "C" s32 OTRfunc_8009728C(PlayState* play, RoomContext* roomCtx, s32 roomN
if (roomNum >= play->numRooms)
return 0; // UH OH
size = play->roomList[roomNum].vromEnd - play->roomList[roomNum].vromStart;
u32 size = play->roomList[roomNum].vromEnd - play->roomList[roomNum].vromStart;
roomCtx->unk_34 =
(void*)ALIGN16((uintptr_t)roomCtx->bufPtrs[roomCtx->unk_30] - ((size + 8) * roomCtx->unk_30 + 7));

View file

@ -558,14 +558,16 @@ void func_80997220(DoorShutter* this, PlayState* play) {
Vec3f vec;
Actor_WorldToActorCoords(&this->dyna.actor, &vec, &player->actor.world.pos);
this->dyna.actor.room =
play->transiActorCtx.list[(u16)this->dyna.actor.params >> 0xA].sides[(vec.z < 0.0f) ? 0 : 1].room;
if (room != this->dyna.actor.room) {
Room tempRoom = play->roomCtx.curRoom;
if (GameInteractor_Should(VB_DOOR_SHUTTER_HANDLE_ROOM_TRANSITION, true, this, &vec)) {
this->dyna.actor.room =
play->transiActorCtx.list[(u16)this->dyna.actor.params >> 0xA].sides[(vec.z < 0.0f) ? 0 : 1].room;
if (room != this->dyna.actor.room) {
Room tempRoom = play->roomCtx.curRoom;
play->roomCtx.curRoom = play->roomCtx.prevRoom;
play->roomCtx.prevRoom = tempRoom;
play->roomCtx.unk_30 ^= 1;
play->roomCtx.curRoom = play->roomCtx.prevRoom;
play->roomCtx.prevRoom = tempRoom;
play->roomCtx.unk_30 ^= 1;
}
}
func_80097534(play, &play->roomCtx);
Play_SetupRespawnPoint(play, RESPAWN_MODE_DOWN, 0x0EFF);
@ -573,8 +575,10 @@ void func_80997220(DoorShutter* this, PlayState* play) {
this->unk_164 = 0;
this->dyna.actor.velocity.y = 0.0f;
if (DoorShutter_SetupDoor(this, play) && !(player->stateFlags1 & PLAYER_STATE1_CARRYING_ACTOR)) {
DoorShutter_SetupAction(this, func_80997568);
Player_SetCsActionWithHaltedActors(play, NULL, 2);
if (GameInteractor_Should(VB_DOOR_SHUTTER_WALK_THROUGH_CS, true, this)) {
DoorShutter_SetupAction(this, func_80997568);
Player_SetCsActionWithHaltedActors(play, NULL, 2);
}
}
}

View file

@ -5346,6 +5346,12 @@ s32 Player_ActionHandler_1(Player* this, PlayState* play) {
}
doorDirection = this->doorDirection;
if (this->doorType != PLAYER_DOORTYPE_FAKE &&
!GameInteractor_Should(VB_PLAYER_DOOR_SETUP, true, this, doorActor, doorDirection)) {
return 1;
}
sp78 = Math_CosS(doorActor->shape.rot.y);
sp74 = Math_SinS(doorActor->shape.rot.y);