Add Overworld locations.

Refactor dungeon module to locations to reflect what it contains.
This commit is contained in:
Lyle Mantooth 2022-06-12 15:17:54 -04:00
parent 5500d628f1
commit b343a0cb80
Signed by: IslandUsurper
GPG key ID: 6DB52EAE123A5789

View file

@ -5,8 +5,8 @@ use lazy_static::lazy_static;
use super::item::ItemId;
#[derive(Debug, thiserror::Error)]
#[error("{0} is not a dungeon room")]
pub struct NotADungeonRoom(u8);
#[error("{0} is not a dungeon super tile")]
pub struct NotADungeonSuperTile(u8);
#[derive(Clone, Copy, Eq, Hash, PartialEq)]
pub enum Dungeon {
@ -25,14 +25,14 @@ pub enum Dungeon {
GanonsTower,
}
pub fn get_dungeon_from_room(room_id: u8) -> Result<Dungeon, NotADungeonRoom> {
pub fn get_dungeon_from_room(room_id: u8) -> Result<Dungeon, NotADungeonSuperTile> {
for (dungeon, rooms) in DUNGEON_ROOMS.iter() {
if let Ok(_) = rooms.binary_search(&room_id) {
return Ok(*dungeon);
}
}
Err(NotADungeonRoom(room_id))
Err(NotADungeonSuperTile(room_id))
}
const HYRULE_CASTLE_ROOMS: [u8; 21] = [
@ -145,309 +145,391 @@ lazy_static! {
#[derive(Clone, Copy, Eq, PartialEq, Hash)]
#[repr(u16)]
pub enum Room {
Ganon = 0,
HyruleCastleNorthCorridor,
HyruleCastleSwitchRoom,
HoulihanRoom,
TurtleRockCrystalRollerRoom,
EmptyCloneRoom0x05,
SwampPalaceArrghus,
TowerOfHeraMoldorm,
CaveHealingFairy,
PalaceOfDarknessMedusaChestRoom,
PalaceOfDarknessStalfossTrapRoom,
PalaceOfDarknessTurtleRoom,
GanonsTowerEntranceRoom,
GanonsTowerAgahnim2,
IcePalaceEntranceRoom,
EmptyCloneRoom0x0F,
GanonEvacuationRoute,
HyruleCastleBombableStockRoom,
Sanctuary,
TurtleRockHokkuBokkuKeyRoom2,
TurtleRockBigKeyRoom,
TurtleRockUselessTubes,
SwampPalaceSwimmingTreadmill,
TowerOfHeraMoldormFallRoom,
Cave0x18BigFairyDropEntrance,
PalaceOfDarknessDarkMaze,
PalaceOfDarknessBigChestRoom,
PalaceOfDarknessMimicsMovingWallRoom,
GanonsTowerIceArmos,
GanonsTowerFinalHallway,
IcePalaceBombFloorBariRoom,
IcePalacePengatorBigKeyRoom,
AgahnimsTowerAgahnim,
HyruleCastleKeyRatRoom,
HyruleCastleSewerTextTriggerRoom,
TurtleRockWestExitToBalcony,
TurtleRockDoubleHokkuBokkuBigChestRoom,
EmptyCloneRoom0x25,
SwampPalaceStatueRoom,
TowerOfHeraBigChest,
SwampPalaceEntranceRoom,
SkullWoodsMothula,
PalaceOfDarknessBigHubRoom,
PalaceOfDarknessMapChestFairyRoom,
CaveHookshotCaveBackdoor,
EmptyCloneRoom0x2D,
IcePalaceCompassRoom,
CaveKakarikoWellHP,
AgahnimsTowerMaidenSacrificeChamber,
TowerOfHeraHardhatBeetleRoom,
HyruleCastleSewerKeyChestRoom,
DesertPalaceLanmolas,
SwampPalacePushBlockPuzzlePreBigKeyRoom,
SwampPalaceBigKeyBsRoom,
SwampPalaceBigChestRoom,
SwampPalaceMapChestWaterFillRoom,
SwampPalaceKeyPotRoom,
SkullWoodsGibdoKeyMothulaHoleRoom,
PalaceOfDarknessBombableFloorRoom,
PalaceOfDarknessSpikeBlockConveyorRoom,
CaveHookshotCave,
GanonsTowerTorchRoom2,
IcePalaceStalfosKnightConveyorHellway,
IcePalaceMapChestRoom,
AgahnimsTowerFinalBridgeRoom,
HyruleCastleFirstDarkRoom,
HyruleCastle6RopesRoom,
DesertPalaceTorchPuzzleMovingWallRoom,
ThievesTownBigChestRoom,
ThievesTownJailCellsRoom,
SwampPalaceCompassChestRoom,
EmptyCloneRoom0x47,
EmptyCloneRoom0x48,
SkullWoodsGibdoTorchPuzzleRoom,
PalaceOfDarknessEntranceRoom,
PalaceOfDarknessWarpsSouthMimicRoom,
GanonsTowerMiniHelmasaurConveyorRoom,
GanonsTowerMoldormRoom,
IcePalaceBombJumpRoom,
IcePalaceCloneRoomFairyRoom,
HyruleCastleWestCorridor,
HyruleCastleThroneRoom,
HyruleCastleEastCorridor,
DesertPalacePopos2BeamosHellwayRoom,
SwampPalaceUpstairsPitsRoom,
CastleSecretEntranceUncleRoom,
SkullWoodsKeyPotTrapRoom,
SkullWoodsBigKeyRoom,
SkullWoodsBigChestRoom,
SkullWoodsFinalSectionEntranceRoom,
PalaceOfDarknessHelmasaurKing,
GanonsTowerSpikePitRoom,
GanonsTowerGanonBallZ,
GanonsTowerGauntlet123,
IcePalaceLonelyFirebar,
IcePalaceHiddenChestSpikeFloorRoom,
HyruleCastleWestEntranceRoom,
HyruleCastleMainEntranceRoom,
HyruleCastleEastEntranceRoom,
DesertPalaceFinalSectionEntranceRoom,
ThievesTownWestAtticRoom,
ThievesTownEastAtticRoom,
SwampPalaceHiddenChestHiddenDoorRoom,
SkullWoodsCompassChestRoom,
SkullWoodsKeyChestTrapRoom,
EmptyCloneRoom0x69,
PalaceOfDarknessRupeeRoom,
GanonsTowerMimicsRoom,
GanonsTowerLanmolasRoom,
GanonsTowerGauntlet45,
IcePalacePengatorsRoom,
EmptyCloneRoom0x6F,
HyruleCastleSmallCorridorToJailCells,
HyruleCastleBoomerangChestRoom,
HyruleCastleMapChestRoom,
DesertPalaceBigChestRoom,
DesertPalaceMapChestRoom,
DesertPalaceBigKeyChestRoom,
SwampPalaceWaterDrainRoom,
TowerOfHeraEntranceRoom,
EmptyCloneRoom0x78,
EmptyCloneRoom0x79,
EmptyCloneRoom0x7A,
GanonsTowerMisc,
GanonsTowerEastSideCollapsingBridgeExplodingWallRoom,
GanonsTowerWinderWarpMazeRoom,
IcePalaceHiddenChestBombableFloorRoom,
IcePalaceBigSpikeTrapsRoom,
HyruleCastleJailCellRoom,
HyruleCastleNextToChasmRoom,
HyruleCastleBasementChasmRoom,
DesertPalaceWestEntranceRoom,
DesertPalaceMainEntranceRoom,
DesertPalaceEastEntranceRoom,
EmptyCloneRoom0x86,
TowerOfHeraTileRoom,
EmptyCloneRoom0x88,
EasternPalaceFairyRoom,
EmptyCloneRoom0x8A,
GanonsTowerBlockPuzzleSpikeSkipMapChestRoom,
GanonsTowerEastAndWestDownstairsBigChestRoom,
GanonsTowerTileTorchPuzzleRoom,
IcePalaceBlobsWithTetrisBarrier,
EmptyCloneRoom0x8F,
MiseryMireVitreous,
MiseryMireFinalSwitchRoom,
MiseryMireDarkBombWallSwitchesRoom,
MiseryMireDarkCaneFLoorSwitchPuzzleRoom,
EmptyCloneRoom0x94,
GanonsTowerFinalCollapsingBridgeRoom,
GanonsTowerTorches1Room,
MiseryMireTorchPuzzleMovingWallRoom,
MiseryMireEntranceRoom,
EasternPalaceEyegoreKeyRoom,
EmptyCloneRoom0x9A,
GanonsTowerManySpikesWarpMazeRoom,
GanonsTowerInvisibleFloorMazeRoom,
GanonsTowerCompassChestInvisibleFloorRoom,
IcePalaceBigChestRoom,
IcePalaceIceFloorPotsKeyAndSwitch,
MiseryMirePreVitreousRoom,
MiseryMireFishRoom,
MiseryMireBridgeKeyChestRoom,
MiseryMireEmptyLConnectingRoom,
TurtleRockTrinexx,
GanonsTowerWizzrobesRooms,
GanonsTowerMoldormFallRoom,
TowerOfHeraFairyRoom,
EasternPalaceStalfosSpawnRoom,
EasternPalaceBigChestRoom,
EasternPalaceMapChestRoom,
ThievesTownMovingSpikesKeyPotRoom,
ThievesTownBlindTheThief,
EmptyCloneRoom0xAD,
IcePalaceIceTRoom,
IcePalaceIceBridgeRoom,
AgahnimsTowerCircleOfPots,
MiseryMireHourglassRoom,
MiseryMireSlugRoom,
MiseryMireSpikeKeyChestRoom,
TurtleRockPreTrinexxRoom,
TurtleRockDarkMaze,
TurtleRockChainChompsRoom,
TurtleRockMapChestKeyChestRollerRoom,
EasternPalaceBigKeyRoom,
EasternPalaceLobbyCannonballsRoom,
EasternPalaceDarkAntifairyKeyPotRoom,
ThievesTownHellway,
ThievesTownConveyorToilet,
EmptyCloneRoom0xBD,
IcePalaceBlockPuzzleRoom,
IcePalaceCloneRoomSwitchRoom,
AgahnimsTowerDarkBridgeRoom,
MiseryMireCompassChestTileRoom,
MiseryMireBigHubRoom,
MiseryMireBigChestRoom,
TurtleRockFinalCrystalSwitchPuzzleRoom,
TurtleRockLaserBridge,
TurtleRockSomariaHub,
TurtleRockTorchPuzzle,
EasternPalaceArmosKnights,
EasternPalaceEntranceRoom,
UnknownRoom,
ThievesTownNorthWestEntranceRoom,
ThievesTownNorthEastEntranceRoom,
EmptyCloneRoom0xCD,
IcePalaceHoleToKholdstareRoom,
EmptyCloneRoom0xCF,
AgahnimsTowerDarkMaze,
MiseryMireConveyorSlugBigKeyRoom,
MiseryMireWizzrobesRoom,
EmptyCloneRoom0xD3,
EmptyCloneRoom0xD4,
TurtleRockLaserKeyRoom,
TurtleRockEntranceRoom,
EmptyCloneRoom0xD7,
EasternPalacePreArmosKnightsRoom,
EasternPalaceCannonballRoom,
EasternPalacePotSwitchRoom,
ThievesTownSouthWestEntranceRoom,
ThievesTownSouthEastEntranceRoom,
EmptyCloneRoom0xDD,
IcePalaceKholdstare,
CaveBackwardsDeathMountainTopFloor,
AgahnimsTowerEntranceRoom,
CaveLostWoodsHP,
CaveLumberjacksTreeHP,
CaveMagicBat,
CaveLostOldManHouse,
CaveLostOldManHouseBack,
Cave0xE6,
Cave0xE7,
CaveSuperBunnyTop,
EmptyCloneRoom0xE9,
CaveSpectacleRockHP,
CaveBumperCaveTop,
EmptyCloneRoom0xEC,
Cave0xED,
CaveSpiralCave,
CaveCrystalSwitch5ChestsRoom,
CaveLostOldManStartingCaveBottom,
CaveLostOldManStartingCaveTop,
HouseOldWomanNextDoor,
HouseOldWomanSahasrahlasWifeMaybe,
HouseAngryBrothersWest,
HouseAngryBrothersEast,
EmptyCloneRoom0xF6,
EmptyCloneRoom0xF7,
CaveSuperBunnyBottom,
CaveSpectacleRockExit,
CaveSpectacleRockPrizeEntrance,
CaveBumperCaveBottom,
EmptyCloneRoom0xFC,
Cave0xFD,
CaveSpiralCaveExit,
CaveParadoxCaveMiddleEntrance,
ShopInLostWoods0x100,
ScaredLadyHouses,
SickKid,
InnBushHouse,
LinksHouse,
ShabadooHouse,
ChestGameBombHouse,
LibraryBombFarmRoom,
ChickenHouse,
WitchHut,
Aginah,
Dam,
MimicCave,
CaveOutsideMiseryMire,
CaveDarkHyliaLedgeHint,
ShopDarkWorldShops,
ShopFireShieldShop,
ArcherGame,
CaveShop,
KingsTomb,
WaterfallCaveMireHint,
BigFairy,
FatFairy,
SpikeCave,
ChestGamblingGame,
BlindsHouse,
Mutant,
MirrorCaveGroveAndTomb,
BombShop,
BlindsBasement,
HypeCave,
KakarikoShopLumberjackHouse,
IceRodCave,
SmithHouse,
FortuneTellers,
MiniMoldormCave,
FiftyRupeeCaveBonkCave,
TwentyRupeeCaveDarkHyliaSpikeHintCave,
CheckerBoardCave,
HammerPegCave,
pub enum SuperTile {
Ganon = 0x0,
HyruleCastleNorthCorridor = 0x1,
HyruleCastleSwitchRoom = 0x2,
HoulihanRoom = 0x3,
TurtleRockCrystalRollerRoom = 0x4,
EmptyCloneRoom0x05 = 0x5,
SwampPalaceArrghus = 0x6,
TowerOfHeraMoldorm = 0x7,
CaveHealingFairy = 0x8,
PalaceOfDarknessMedusaChestRoom = 0x9,
PalaceOfDarknessStalfossTrapRoom = 0xa,
PalaceOfDarknessTurtleRoom = 0xb,
GanonsTowerEntranceRoom = 0xc,
GanonsTowerAgahnim2 = 0xd,
IcePalaceEntranceRoom = 0xe,
EmptyCloneRoom0x0F = 0xf,
GanonEvacuationRoute = 0x10,
HyruleCastleBombableStockRoom = 0x11,
InsideSanctuary = 0x12,
TurtleRockHokkuBokkuKeyRoom2 = 0x13,
TurtleRockBigKeyRoom = 0x14,
TurtleRockUselessTubes = 0x15,
SwampPalaceSwimmingTreadmill = 0x16,
TowerOfHeraMoldormFallRoom = 0x17,
Cave0x18BigFairyDropEntrance = 0x18,
PalaceOfDarknessDarkMaze = 0x19,
PalaceOfDarknessBigChestRoom = 0x1a,
PalaceOfDarknessMimicsMovingWallRoom = 0x1b,
GanonsTowerIceArmos = 0x1c,
GanonsTowerFinalHallway = 0x1d,
IcePalaceBombFloorBariRoom = 0x1e,
IcePalacePengatorBigKeyRoom = 0x1f,
AgahnimsTowerAgahnim = 0x20,
HyruleCastleKeyRatRoom = 0x21,
HyruleCastleSewerTextTriggerRoom = 0x22,
TurtleRockWestExitToBalcony = 0x23,
TurtleRockDoubleHokkuBokkuBigChestRoom = 0x24,
EmptyCloneRoom0x25 = 0x25,
SwampPalaceStatueRoom = 0x26,
TowerOfHeraBigChest = 0x27,
SwampPalaceEntranceRoom = 0x28,
SkullWoodsMothula = 0x29,
PalaceOfDarknessBigHubRoom = 0x2a,
PalaceOfDarknessMapChestFairyRoom = 0x2b,
CaveHookshotCaveBackdoor = 0x2c,
EmptyCloneRoom0x2D = 0x2d,
IcePalaceCompassRoom = 0x2e,
CaveKakarikoWellHP = 0x2f,
AgahnimsTowerMaidenSacrificeChamber = 0x30,
TowerOfHeraHardhatBeetleRoom = 0x31,
HyruleCastleSewerKeyChestRoom = 0x32,
DesertPalaceLanmolas = 0x33,
SwampPalacePushBlockPuzzlePreBigKeyRoom = 0x34,
SwampPalaceBigKeyBsRoom = 0x35,
SwampPalaceBigChestRoom = 0x36,
SwampPalaceMapChestWaterFillRoom = 0x37,
SwampPalaceKeyPotRoom = 0x38,
SkullWoodsGibdoKeyMothulaHoleRoom = 0x39,
PalaceOfDarknessBombableFloorRoom = 0x3a,
PalaceOfDarknessSpikeBlockConveyorRoom = 0x3b,
CaveHookshotCave = 0x3c,
GanonsTowerTorchRoom2 = 0x3d,
IcePalaceStalfosKnightConveyorHellway = 0x3e,
IcePalaceMapChestRoom = 0x3f,
AgahnimsTowerFinalBridgeRoom = 0x40,
HyruleCastleFirstDarkRoom = 0x41,
HyruleCastle6RopesRoom = 0x42,
DesertPalaceTorchPuzzleMovingWallRoom = 0x43,
ThievesTownBigChestRoom = 0x44,
ThievesTownJailCellsRoom = 0x45,
SwampPalaceCompassChestRoom = 0x46,
EmptyCloneRoom0x47 = 0x47,
EmptyCloneRoom0x48 = 0x48,
SkullWoodsGibdoTorchPuzzleRoom = 0x49,
PalaceOfDarknessEntranceRoom = 0x4a,
PalaceOfDarknessWarpsSouthMimicRoom = 0x4b,
GanonsTowerMiniHelmasaurConveyorRoom = 0x4c,
GanonsTowerMoldormRoom = 0x4d,
IcePalaceBombJumpRoom = 0x4e,
IcePalaceCloneRoomFairyRoom = 0x4f,
HyruleCastleWestCorridor = 0x50,
HyruleCastleThroneRoom = 0x51,
HyruleCastleEastCorridor = 0x52,
DesertPalacePopos2BeamosHellwayRoom = 0x53,
SwampPalaceUpstairsPitsRoom = 0x54,
CastleSecretEntranceUncleRoom = 0x55,
SkullWoodsKeyPotTrapRoom = 0x56,
SkullWoodsBigKeyRoom = 0x57,
SkullWoodsBigChestRoom = 0x58,
SkullWoodsFinalSectionEntranceRoom = 0x59,
PalaceOfDarknessHelmasaurKing = 0x5a,
GanonsTowerSpikePitRoom = 0x5b,
GanonsTowerGanonBallZ = 0x5c,
GanonsTowerGauntlet123 = 0x5d,
IcePalaceLonelyFirebar = 0x5e,
IcePalaceHiddenChestSpikeFloorRoom = 0x5f,
HyruleCastleWestEntranceRoom = 0x60,
HyruleCastleMainEntranceRoom = 0x61,
HyruleCastleEastEntranceRoom = 0x62,
DesertPalaceFinalSectionEntranceRoom = 0x63,
ThievesTownWestAtticRoom = 0x64,
ThievesTownEastAtticRoom = 0x65,
SwampPalaceHiddenChestHiddenDoorRoom = 0x66,
SkullWoodsCompassChestRoom = 0x67,
SkullWoodsKeyChestTrapRoom = 0x68,
EmptyCloneRoom0x69 = 0x69,
PalaceOfDarknessRupeeRoom = 0x6a,
GanonsTowerMimicsRoom = 0x6b,
GanonsTowerLanmolasRoom = 0x6c,
GanonsTowerGauntlet45 = 0x6d,
IcePalacePengatorsRoom = 0x6e,
EmptyCloneRoom0x6F = 0x6f,
HyruleCastleSmallCorridorToJailCells = 0x70,
HyruleCastleBoomerangChestRoom = 0x71,
HyruleCastleMapChestRoom = 0x72,
DesertPalaceBigChestRoom = 0x73,
DesertPalaceMapChestRoom = 0x74,
DesertPalaceBigKeyChestRoom = 0x75,
SwampPalaceWaterDrainRoom = 0x76,
TowerOfHeraEntranceRoom = 0x77,
EmptyCloneRoom0x78 = 0x78,
EmptyCloneRoom0x79 = 0x79,
EmptyCloneRoom0x7A = 0x7a,
GanonsTowerMisc = 0x7b,
GanonsTowerEastSideCollapsingBridgeExplodingWallRoom = 0x7c,
GanonsTowerWinderWarpMazeRoom = 0x7d,
IcePalaceHiddenChestBombableFloorRoom = 0x7e,
IcePalaceBigSpikeTrapsRoom = 0x7f,
HyruleCastleJailCellRoom = 0x80,
HyruleCastleNextToChasmRoom = 0x81,
HyruleCastleBasementChasmRoom = 0x82,
DesertPalaceWestEntranceRoom = 0x83,
DesertPalaceMainEntranceRoom = 0x84,
DesertPalaceEastEntranceRoom = 0x85,
EmptyCloneRoom0x86 = 0x86,
TowerOfHeraTileRoom = 0x87,
EmptyCloneRoom0x88 = 0x88,
EasternPalaceFairyRoom = 0x89,
EmptyCloneRoom0x8A = 0x8a,
GanonsTowerBlockPuzzleSpikeSkipMapChestRoom = 0x8b,
GanonsTowerEastAndWestDownstairsBigChestRoom = 0x8c,
GanonsTowerTileTorchPuzzleRoom = 0x8d,
IcePalaceBlobsWithTetrisBarrier = 0x8e,
EmptyCloneRoom0x8F = 0x8f,
MiseryMireVitreous = 0x90,
MiseryMireFinalSwitchRoom = 0x91,
MiseryMireDarkBombWallSwitchesRoom = 0x92,
MiseryMireDarkCaneFLoorSwitchPuzzleRoom = 0x93,
EmptyCloneRoom0x94 = 0x94,
GanonsTowerFinalCollapsingBridgeRoom = 0x95,
GanonsTowerTorches1Room = 0x96,
MiseryMireTorchPuzzleMovingWallRoom = 0x97,
MiseryMireEntranceRoom = 0x98,
EasternPalaceEyegoreKeyRoom = 0x99,
EmptyCloneRoom0x9A = 0x9a,
GanonsTowerManySpikesWarpMazeRoom = 0x9b,
GanonsTowerInvisibleFloorMazeRoom = 0x9c,
GanonsTowerCompassChestInvisibleFloorRoom = 0x9d,
IcePalaceBigChestRoom = 0x9e,
IcePalaceIceFloorPotsKeyAndSwitch = 0x9f,
MiseryMirePreVitreousRoom = 0xa0,
MiseryMireFishRoom = 0xa1,
MiseryMireBridgeKeyChestRoom = 0xa2,
MiseryMireEmptyLConnectingRoom = 0xa3,
TurtleRockTrinexx = 0xa4,
GanonsTowerWizzrobesRooms = 0xa5,
GanonsTowerMoldormFallRoom = 0xa6,
TowerOfHeraFairyRoom = 0xa7,
EasternPalaceStalfosSpawnRoom = 0xa8,
EasternPalaceBigChestRoom = 0xa9,
EasternPalaceMapChestRoom = 0xaa,
ThievesTownMovingSpikesKeyPotRoom = 0xab,
ThievesTownBlindTheThief = 0xac,
EmptyCloneRoom0xAD = 0xad,
IcePalaceIceTRoom = 0xae,
IcePalaceIceBridgeRoom = 0xaf,
AgahnimsTowerCircleOfPots = 0xb0,
MiseryMireHourglassRoom = 0xb1,
MiseryMireSlugRoom = 0xb2,
MiseryMireSpikeKeyChestRoom = 0xb3,
TurtleRockPreTrinexxRoom = 0xb4,
TurtleRockDarkMaze = 0xb5,
TurtleRockChainChompsRoom = 0xb6,
TurtleRockMapChestKeyChestRollerRoom = 0xb7,
EasternPalaceBigKeyRoom = 0xb8,
EasternPalaceLobbyCannonballsRoom = 0xb9,
EasternPalaceDarkAntifairyKeyPotRoom = 0xba,
ThievesTownHellway = 0xbb,
ThievesTownConveyorToilet = 0xbc,
EmptyCloneRoom0xBD = 0xbd,
IcePalaceBlockPuzzleRoom = 0xbe,
IcePalaceCloneRoomSwitchRoom = 0xbf,
AgahnimsTowerDarkBridgeRoom = 0xc0,
MiseryMireCompassChestTileRoom = 0xc1,
MiseryMireBigHubRoom = 0xc2,
MiseryMireBigChestRoom = 0xc3,
TurtleRockFinalCrystalSwitchPuzzleRoom = 0xc4,
TurtleRockLaserBridge = 0xc5,
TurtleRockSomariaHub = 0xc6,
TurtleRockTorchPuzzle = 0xc7,
EasternPalaceArmosKnights = 0xc8,
EasternPalaceEntranceRoom = 0xc9,
UnknownRoom = 0xca,
ThievesTownNorthWestEntranceRoom = 0xcb,
ThievesTownNorthEastEntranceRoom = 0xcc,
EmptyCloneRoom0xCD = 0xcd,
IcePalaceHoleToKholdstareRoom = 0xce,
EmptyCloneRoom0xCF = 0xcf,
AgahnimsTowerDarkMaze = 0xd0,
MiseryMireConveyorSlugBigKeyRoom = 0xd1,
MiseryMireWizzrobesRoom = 0xd2,
EmptyCloneRoom0xD3 = 0xd3,
EmptyCloneRoom0xD4 = 0xd4,
TurtleRockLaserKeyRoom = 0xd5,
TurtleRockEntranceRoom = 0xd6,
EmptyCloneRoom0xD7 = 0xd7,
EasternPalacePreArmosKnightsRoom = 0xd8,
EasternPalaceCannonballRoom = 0xd9,
EasternPalacePotSwitchRoom = 0xda,
ThievesTownSouthWestEntranceRoom = 0xdb,
ThievesTownSouthEastEntranceRoom = 0xdc,
EmptyCloneRoom0xDD = 0xdd,
IcePalaceKholdstare = 0xde,
CaveBackwardsDeathMountainTopFloor = 0xdf,
AgahnimsTowerEntranceRoom = 0xe0,
CaveLostWoodsHP = 0xe1,
CaveLumberjacksTreeHP = 0xe2,
CaveMagicBat = 0xe3,
CaveLostOldManHouse = 0xe4,
CaveLostOldManHouseBack = 0xe5,
Cave0xE6 = 0xe6,
Cave0xE7 = 0xe7,
CaveSuperBunnyTop = 0xe8,
EmptyCloneRoom0xE9 = 0xe9,
CaveSpectacleRockHP = 0xea,
CaveBumperCaveTop = 0xeb,
EmptyCloneRoom0xEC = 0xec,
Cave0xED = 0xed,
CaveSpiralCave = 0xee,
CaveCrystalSwitch5ChestsRoom = 0xef,
CaveLostOldManStartingCaveBottom = 0xf0,
CaveLostOldManStartingCaveTop = 0xf1,
HouseOldWomanNextDoor = 0xf2,
HouseOldWomanSahasrahlasWifeMaybe = 0xf3,
HouseAngryBrothersWest = 0xf4,
HouseAngryBrothersEast = 0xf5,
EmptyCloneRoom0xF6 = 0xf6,
EmptyCloneRoom0xF7 = 0xf7,
CaveSuperBunnyBottom = 0xf8,
CaveSpectacleRockExit = 0xf9,
CaveSpectacleRockPrizeEntrance = 0xfa,
CaveBumperCaveBottom = 0xfb,
EmptyCloneRoom0xFC = 0xfc,
Cave0xFD = 0xfd,
CaveSpiralCaveExit = 0xfe,
CaveParadoxCaveMiddleEntrance = 0xff,
ShopInLostWoods0x100 = 0x100,
ScaredLadyHouses = 0x101,
SickKid = 0x102,
InnBushHouse = 0x103,
InsideLinksHouse = 0x104,
ShabadooHouse = 0x105,
ChestGameBombHouse = 0x106,
LibraryBombFarmRoom = 0x107,
ChickenHouse = 0x108,
InsideWitchHut = 0x109,
Aginah = 0x10a,
Dam = 0x10b,
MimicCave = 0x10c,
CaveOutsideMiseryMire = 0x10d,
CaveDarkHyliaLedgeHint = 0x10e,
ShopDarkWorldShops = 0x10f,
ShopFireShieldShop = 0x110,
ArcherGame = 0x111,
CaveShop = 0x112,
KingsTomb = 0x113,
WaterfallCaveMireHint = 0x114,
BigFairy = 0x115,
FatFairy = 0x116,
SpikeCave = 0x117,
ChestGamblingGame = 0x118,
BlindsHouse = 0x119,
Mutant = 0x11a,
MirrorCaveGroveAndTomb = 0x11b,
InsideBombShop = 0x11c,
BlindsBasement = 0x11d,
HypeCave = 0x11e,
KakarikoShopLumberjackHouse = 0x11f,
IceRodCave = 0x120,
SmithHouse = 0x121,
FortuneTellers = 0x122,
MiniMoldormCave = 0x123,
FiftyRupeeCaveBonkCave = 0x124,
TwentyRupeeCaveDarkHyliaSpikeHintCave = 0x125,
CheckerBoardCave = 0x126,
HammerPegCave = 0x127,
LostWoods = 0x8000,
LumberjackHouse = 0x8002,
DeathMountainWest = 0x8003,
DeathMountainEast = 0x8005,
DeathMountainTurtleWarp = 0x8007,
EntranceDeathMountain = 0x800a,
EntranceZorasDomain = 0x800f,
PathFromLostWoodsToKakariko = 0x8010,
KakarikoFortuneTeller = 0x8011,
NorthWestWhirlpoolWarp = 0x8012,
Sanctuary = 0x8013,
Graveyard = 0x8014,
River = 0x8015,
WitchHut = 0x8016,
EastOfWitchHut = 0x8017,
Kakariko = 0x8018,
CastleWoods = 0x801a,
HyruleCastle = 0x801b,
WitchGraveyardBridge = 0x801d,
EasternPalace = 0x801e,
Smithy = 0x8022,
StonyFieldNorth = 0x8025,
KakarikoMazeRace = 0x8028,
KakarikoLibrary = 0x8029,
HauntedGrove = 0x802a,
BetweenGroveAndLinksHouse = 0x802b,
LinksHouse = 0x802c,
StonyFieldSouth = 0x802d,
BetweenLakeHyliaAndEasternPalace = 0x802e,
FluteSpot5 = 0x802f,
Desert = 0x8030,
SouthOfHauntedGrove = 0x8032,
NorthwestSwamp = 0x8033,
NortheastSwamp = 0x8034,
LakeHylia = 0x8035,
IceCave = 0x8037,
DesertPass = 0x803a,
SouthwestSwamp = 0x803b,
SoutheastSwamp = 0x803c,
SouthShore = 0x803f,
ShullWoods = 0x8040,
DarkLumberjackShop = 0x8042,
DarkDeathMountainWest = 0x8043,
DarkDeathMountainEast = 0x8045,
TurtleRock = 0x8047,
BumperCave = 0x804a,
Catfish = 0x804f,
PathFromSkullWoodsToVillage = 0x8050,
OutcastFortuneTeller = 0x8051,
NorthWestPond = 0x8052,
DarkChapel = 0x8053,
DarkGraveyard = 0x8054,
DarkRiver = 0x8055,
DarkWitchHut = 0x8056,
EastOfDarkWitchHut = 0x8057,
VillageOfOutcasts = 0x8058,
FireShieldShopForest = 0x805a,
Pyramid = 0x805b,
BrokenBridge = 0x805d,
PalaceOfDarkness = 0x805e,
PurpleChestHouse = 0x8062,
DarkStonyFieldNorth = 0x8065,
DiggingGame = 0x8068,
TrappedFrog = 0x8069,
StumpysGrove = 0x806a,
BetweenGroveAndBombShop = 0x806b,
BombShop = 0x806c,
HammerPegBridge = 0x806d,
BetweenPODAndIceLake = 0x806e,
DarkFluteSpot5 = 0x806f,
MiseryMire = 0x8070,
SouthOfStumpysGrove = 0x8072,
DarkNorthwestSwamp = 0x8073,
DarkNortheastSwamp = 0x8074,
IceLake = 0x8075,
DarkIceCave = 0x8077,
BoxCanyonBetweenMireAndSwamp = 0x807a,
DarkSouthwestSwamp = 0x807b,
DarkSoutheastSwamp = 0x807c,
DarkSouthShore = 0x807f,
MasterSwordGladeAndUnderBridge = 0x8080,
ZorasDomain = 0x8081,
}
use Room::*;
use SuperTile::*;
lazy_static! {
pub static ref ROOM_NAMES: HashMap<Room, &'static str> = {
pub static ref ROOM_NAMES: HashMap<SuperTile, &'static str> = {
let names = [
(Ganon, "Ganon"),
@ -752,7 +834,7 @@ lazy_static! {
};
}
pub const NEED_KILLABLE_ROOMS: [Room; 39] = [
pub const NEED_KILLABLE_ROOMS: [SuperTile; 39] = [
EasternPalaceBigKeyRoom, // For anti-fairy circle around pot switch
PalaceOfDarknessTurtleRoom,
PalaceOfDarknessMimicsMovingWallRoom,
@ -797,7 +879,7 @@ pub const NEED_KILLABLE_ROOMS: [Room; 39] = [
// All the rooms that require special handling.
/// These rooms need to be locked to GFX ID 28.
pub const FREEZOR_ROOMS: [Room; 5] = [
pub const FREEZOR_ROOMS: [SuperTile; 5] = [
IcePalaceEntranceRoom,
IcePalaceHiddenChestBombableFloorRoom,
IcePalaceBlobsWithTetrisBarrier,
@ -806,7 +888,7 @@ pub const FREEZOR_ROOMS: [Room; 5] = [
];
/// These rooms need to be locked to GFX ID 17.
pub const WATER_ROOMS: [Room; 33] = [
pub const WATER_ROOMS: [SuperTile; 33] = [
GanonsTowerEntranceRoom,
GanonsTowerAgahnim2,
SwampPalaceSwimmingTreadmill,
@ -842,12 +924,12 @@ pub const WATER_ROOMS: [Room; 33] = [
GanonsTowerMoldormFallRoom,
];
pub const SHADOW_ROOMS: [Room; 2] = [
pub const SHADOW_ROOMS: [SuperTile; 2] = [
IcePalaceStalfosKnightConveyorHellway,
IcePalaceIceFloorPotsKeyAndSwitch,
];
pub const WALL_MASTER_ROOMS: [Room; 5] = [
pub const WALL_MASTER_ROOMS: [SuperTile; 5] = [
SkullWoodsGibdoKeyMothulaHoleRoom,
SkullWoodsGibdoTorchPuzzleRoom,
SkullWoodsKeyPotTrapRoom,
@ -855,7 +937,7 @@ pub const WALL_MASTER_ROOMS: [Room; 5] = [
GanonsTowerTileTorchPuzzleRoom,
];
pub const BUMPER_CRYSTAL_LASER_ROOMS: [Room; 42] = [
pub const BUMPER_CRYSTAL_LASER_ROOMS: [SuperTile; 42] = [
TurtleRockCrystalRollerRoom,
PalaceOfDarknessTurtleRoom,
TurtleRockHokkuBokkuKeyRoom2,
@ -900,14 +982,14 @@ pub const BUMPER_CRYSTAL_LASER_ROOMS: [Room; 42] = [
CaveCrystalSwitch5ChestsRoom,
];
pub const PULL_SWITCH_ROOMS: [Room; 4] = [
pub const PULL_SWITCH_ROOMS: [SuperTile; 4] = [
HyruleCastleSwitchRoom,
SkullWoodsBigChestRoom,
ThievesTownWestAtticRoom,
Dam,
];
pub const TONGUE_ROOMS: [Room; 7] = [
pub const TONGUE_ROOMS: [SuperTile; 7] = [
TurtleRockCrystalRollerRoom,
TurtleRockWestExitToBalcony,
SwampPalaceBigKeyBsRoom,
@ -917,7 +999,7 @@ pub const TONGUE_ROOMS: [Room; 7] = [
IcePalaceHoleToKholdstareRoom,
];
pub const NO_STATUE_ROOMS: [Room; 12] = [
pub const NO_STATUE_ROOMS: [SuperTile; 12] = [
SwampPalaceSwimmingTreadmill,
SwampPalaceStatueRoom,
SwampPalaceEntranceRoom,
@ -932,19 +1014,19 @@ pub const NO_STATUE_ROOMS: [Room; 12] = [
AgahnimsTowerDarkMaze,
];
pub const MOVING_CANNONS_ROOMS: [Room; 2] = [
pub const MOVING_CANNONS_ROOMS: [SuperTile; 2] = [
GanonsTowerGanonBallZ,
DesertPalaceBigKeyChestRoom,
];
pub const CANNON_ROOMS: [Room; 3] = [
pub const CANNON_ROOMS: [SuperTile; 3] = [
EasternPalaceLobbyCannonballsRoom,
EasternPalaceCannonballRoom,
MimicCave, // ???
];
/// These rooms have no enemies to randomize, or are special bosses that can't be switched out.
pub const DONT_RANDOMIZE_ROOMS: [Room; 8] = [
pub const DONT_RANDOMIZE_ROOMS: [SuperTile; 8] = [
Ganon,
HyruleCastleNorthCorridor,
HoulihanRoom,
@ -955,7 +1037,7 @@ pub const DONT_RANDOMIZE_ROOMS: [Room; 8] = [
IcePalaceBigSpikeTrapsRoom, // Anything else would be too easy?
];
pub const NO_SPECIAL_ENEMIES_IN_STANDARD_MODE_ROOMS: [Room; 21] = [
pub const NO_SPECIAL_ENEMIES_IN_STANDARD_MODE_ROOMS: [SuperTile; 21] = [
HyruleCastleNorthCorridor,
HyruleCastleSwitchRoom,
HyruleCastleBombableStockRoom,
@ -979,7 +1061,7 @@ pub const NO_SPECIAL_ENEMIES_IN_STANDARD_MODE_ROOMS: [Room; 21] = [
HyruleCastleBasementChasmRoom,
];
pub const BOSS_ROOMS: [Room; 16] = [
pub const BOSS_ROOMS: [SuperTile; 16] = [
Ganon,
SwampPalaceArrghus,
TowerOfHeraMoldorm,
@ -998,7 +1080,7 @@ pub const BOSS_ROOMS: [Room; 16] = [
IcePalaceKholdstare,
];
pub const DONT_USE_IMMOVABLE_ENEMIES: [Room; 57] = [
pub const DONT_USE_IMMOVABLE_ENEMIES: [SuperTile; 57] = [
PalaceOfDarknessTurtleRoom, // for single terrorpin in L shaped section
SwampPalaceSwimmingTreadmill,
PalaceOfDarknessDarkMaze, // top placement will probably block maze
@ -1058,7 +1140,7 @@ pub const DONT_USE_IMMOVABLE_ENEMIES: [Room; 57] = [
MimicCave,
];
pub const DONT_USE_FLYING_ENEMIES: [Room; 2] = [
pub const DONT_USE_FLYING_ENEMIES: [SuperTile; 2] = [
MiseryMireWizzrobesRoom,
MimicCave,
];