diff --git a/enemize/src/graph/dungeons.rs b/enemize/src/graph/locations.rs similarity index 71% rename from enemize/src/graph/dungeons.rs rename to enemize/src/graph/locations.rs index e1d1fe4..1192e1a 100644 --- a/enemize/src/graph/dungeons.rs +++ b/enemize/src/graph/locations.rs @@ -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 { +pub fn get_dungeon_from_room(room_id: u8) -> Result { 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 = { + pub static ref ROOM_NAMES: HashMap = { 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, ];