shithub: zelda3

ref: 02754b2f0937d94bb90f7f742f4f7aa6dad06bd4
dir: /src/dungeon.h/

View raw version
#pragma once

typedef struct RoomBounds RoomBounds;

enum {
  kDoorType_Regular = 0,
  kDoorType_Regular2 = 2,
  kDoorType_4 = 4,
  kDoorType_EntranceDoor = 6,
  kDoorType_WaterfallTunnel = 8,
  kDoorType_EntranceLarge = 10,
  kDoorType_EntranceLarge2 = 12,
  kDoorType_EntranceCave = 14,
  kDoorType_EntranceCave2 = 16,
  kDoorType_ExitToOw = 18,
  kDoorType_ThroneRoom = 20,
  kDoorType_PlayerBgChange = 22,
  kDoorType_ShuttersTwoWay = 24,
  kDoorType_InvisibleDoor = 26,
  kDoorType_SmallKeyDoor = 0x1c,
  kDoorType_1E = 0x1e,
  kDoorType_StairMaskLocked0 = 32,
  kDoorType_StairMaskLocked1 = 34,
  kDoorType_StairMaskLocked2 = 36,
  kDoorType_StairMaskLocked3 = 38,
  kDoorType_BreakableWall = 0x28,
  kDoorType_LgExplosion = 48,
  kDoorType_Slashable = 50,
  kDoorType_36 = 0x36,
  kDoorType_38 = 0x38,

  kDoorType_RegularDoor33 = 64,
  kDoorType_Shutter = 68,
  kDoorType_WarpRoomDoor = 70,
  kDoorType_ShutterTrapUR = 72,
  kDoorType_ShutterTrapDL = 74,
};

typedef struct DungPalInfo {
  uint8 pal0;
  uint8 pal1;
  uint8 pal2;
  uint8 pal3;
} DungPalInfo;

extern const uint8 kDungAnimatedTiles[24];
uint16 *DstoPtr(uint16 d);
void Object_Fill_Nx1(int n, const uint16 *src, uint16 *dst);
void Object_Draw_5x4(const uint16 *src, uint16 *dst);
void Object_Draw_4x2_BothBgs(const uint16 *src, uint16 dsto);
void Object_ChestPlatform_Helper(const uint16 *src, int dsto);
void Object_Hole(const uint16 *src, uint16 *dst);
void LoadType1ObjectSubtype1(uint8 idx, uint16 *dst, uint16 dsto);
void Object_DrawNx3_BothBgs(int n, const uint16 *src, int dsto);
void LoadType1ObjectSubtype2(uint8 idx, uint16 *dst, uint16 dsto);
void Object_BombableFloorHelper(uint16 a, const uint16 *src, const uint16 *src_below, uint16 *dst, uint16 dsto);
void LoadType1ObjectSubtype3(uint8 idx, uint16 *dst, uint16 dsto);
void RoomBounds_AddA(RoomBounds *r);
void RoomBounds_AddB(RoomBounds *r);
void RoomBounds_SubB(RoomBounds *r);
void RoomBounds_SubA(RoomBounds *r);
void Dungeon_StartInterRoomTrans_Left(void);
void Dung_StartInterRoomTrans_Left_Plus(void);
void Dungeon_StartInterRoomTrans_Up(void);
void Dungeon_StartInterRoomTrans_Down(void);
void Dungeon_Store2x2(uint16 pos, uint16 t0, uint16 t1, uint16 t2, uint16 t3, uint8 attr);
uint16 Dungeon_MapVramAddr(uint16 pos);
uint16 Dungeon_MapVramAddrNoSwap(uint16 pos);
void Door_Up_EntranceDoor(uint16 dsto);
void Door_Down_EntranceDoor(uint16 dsto);
void Door_Left_EntranceDoor(uint16 dsto);
void Door_Right_EntranceDoor(uint16 dsto);
void Door_Draw_Helper4(uint8 door_type, uint16 dsto);
const uint16 *GetRoomDoorInfo(int room);
const uint8 *GetRoomHeaderPtr(int room);
const uint8 *GetDefaultRoomLayout(int i);
const uint8 *GetDungeonRoomLayout(int i);
void Dung_TagRoutine_0x22_0x3B(int k, uint8 j);
void Sprite_HandlePushedBlocks_One(int i);
void Object_Draw_DoorLeft_3x4(uint16 src, int door);
void Object_Draw_DoorRight_3x4(uint16 src, int door);
void Dungeon_OpeningLockedDoor_Combined(bool skip_anim);
const DungPalInfo *GetDungPalInfo(int idx);
uint16 Dungeon_GetTeleMsg(int room);
bool Dungeon_IsPitThatHurtsPlayer(void);
void Dungeon_PrepareNextRoomQuadrantUpload(void);
void WaterFlood_BuildOneQuadrantForVRAM(void);
void TileMapPrep_NotWaterOnTag(void);
void OrientLampLightCone(void);
void PrepareDungeonExitFromBossFight(void);
void SavePalaceDeaths(void);
void Dungeon_LoadRoom(void);
void RoomDraw_DrawAllObjects(const uint8 *level_data);
void RoomData_DrawObject_Door(uint16 a);
void RoomData_DrawObject(uint16 r0, const uint8 *level_data);
void RoomDraw_DrawFloors(const uint8 *level_data);
void RoomDraw_FloorChunks(const uint16 *src);
void RoomDraw_A_Many32x32Blocks(int n, const uint16 *src, uint16 *dst);
void RoomDraw_1x3_rightwards(int n, const uint16 *src, uint16 *dst);
bool RoomDraw_CheckIfWallIsMoved(void);
void MovingWall_FillReplacementBuffer(int dsto);
void Object_Table_Helper(const uint16 *src, uint16 *dst);
void DrawWaterThing(uint16 *dst, const uint16 *src);
void RoomDraw_4x4(const uint16 *src, uint16 *dst);
void RoomDraw_Object_Nx4(int n, const uint16 *src, uint16 *dst);
void Object_DrawNx4_BothBgs(int n, const uint16 *src, int dsto);
void RoomDraw_Rightwards2x2(const uint16 *src, uint16 *dst);
void Object_Draw_3x2(const uint16 *src, uint16 *dst);
void RoomDraw_WaterHoldingObject(int n, const uint16 *src, uint16 *dst);
void RoomDraw_SomeBigDecors(int n, const uint16 *src, uint16 dsto);
void RoomDraw_SingleLampCone(uint16 a, uint16 y);
void RoomDraw_AgahnimsWindows(uint16 dsto);
void RoomDraw_FortuneTellerRoom(uint16 dsto);
void Object_Draw8x8(const uint16 *src, uint16 *dst);
void RoomDraw_Door_North(int type, int pos_enum);
void Door_Up_StairMaskLocked(uint8 door_type, uint16 dsto);
void Door_PrioritizeCurDoor(void);
void RoomDraw_NormalRangedDoors_North(uint8 door_type, uint16 dsto, int pos_enum);
void RoomDraw_OneSidedShutters_North(uint8 door_type, uint16 dsto);
void RoomDraw_Door_South(int type, int pos_enum);
void RoomDraw_CheckIfLowerLayerDoors_Y(uint8 door_type, uint16 dsto);
void RoomDraw_Door_West(int type, int pos_enum);
void RoomDraw_NormalRangedDoors_West(uint8 door_type, uint16 dsto, int pos_enum);
void RoomDraw_Door_East(int type, int pos_enum);
void RoomDraw_NormalRangedDoors_East(uint8 door_type, uint16 dsto);
void RoomDraw_OneSidedShutters_East(uint8 door_type, uint16 dsto);
void RoomDraw_NorthCurtainDoor(uint16 dsto);
void RoomDraw_Door_ExplodingWall(int pos_enum);
void RoomDraw_ExplodingWallSegment(const uint16 *src, uint16 dsto);
void RoomDraw_ExplodingWallColumn(const uint16 *src, uint16 *dst);
void RoomDraw_HighRangeDoor_North(uint8 door_type, uint16 dsto, int pos_enum);
void RoomDraw_OneSidedLowerShutters_South(uint8 door_type, uint16 dsto);
void RoomDraw_HighRangeDoor_West(uint8 door_type, uint16 dsto, int pos_enum);
void RoomDraw_OneSidedLowerShutters_East(uint8 door_type, uint16 dsto);
void RoomDraw_MakeDoorHighPriority_North(uint16 dsto);
void RoomDraw_MakeDoorHighPriority_South(uint16 dsto);
void RoomDraw_MakeDoorHighPriority_West(uint16 dsto);
void RoomDraw_MakeDoorHighPriority_East(uint16 dsto);
void RoomDraw_MarkDungeonToggleDoor(uint16 dsto);
void RoomDraw_MarkLayerToggleDoor(uint16 dsto);
void RoomDraw_GetObjectSize_1to16(void);
void Object_SizeAtoAplus15(uint8 a);
void RoomDraw_GetObjectSize_1to15or26(void);
void RoomDraw_GetObjectSize_1to15or32(void);
int RoomDraw_FlagDoorsAndGetFinalType(uint8 direction, uint8 door_type, uint16 dsto);
void RoomDraw_MakeDoorPartsHighPriority_Y(uint16 dsto);
void RoomDraw_MakeDoorPartsHighPriority_X(uint16 dsto);
void RoomDraw_Downwards4x2VariableSpacing(int increment, const uint16 *src, uint16 *dst);
uint16 *RoomDraw_DrawObject2x2and1(const uint16 *src, uint16 *dst);
uint16 *RoomDraw_RightwardShelfEnd(const uint16 *src, uint16 *dst);
uint16 *RoomDraw_RightwardBarSegment(const uint16 *src, uint16 *dst);
void DrawBigGraySegment(uint16 a, const uint16 *src, uint16 *dst, uint16 dsto);
void RoomDraw_SinglePot(const uint16 *src, uint16 *dst, uint16 dsto);
void RoomDraw_BombableFloor(const uint16 *src, uint16 *dst, uint16 dsto);
void RoomDraw_HammerPegSingle(const uint16 *src, uint16 *dst, uint16 dsto);
void DrawObjects_PushableBlock(uint16 dsto_x2, uint16 slot);
void DrawObjects_LightableTorch(uint16 dsto_x2, uint16 slot);
void Dungeon_LoadHeader(void);
void Dungeon_CheckAdjacentRoomsForOpenDoors(int idx, int room);
void Dungeon_LoadAdjacentRoomDoors(int room);
void Dungeon_LoadAttribute_Selectable(void);
void Dungeon_LoadAttributeTable(void);
void Dungeon_LoadBasicAttribute_full(uint16 loops);
void Dungeon_LoadObjectAttribute(void);
void Dungeon_LoadDoorAttribute(void);
void Dungeon_LoadSingleDoorAttribute(int k);
void Door_LoadBlastWallAttr(int k);
void ChangeDoorToSwitch(void);
void Dungeon_FlipCrystalPegAttribute(void);
void Dungeon_HandleRoomTags(void);
void Dung_TagRoutine_0x00(int k);
void Dungeon_DetectStaircase(void);
void RoomTag_NorthWestTrigger(int k);
void Dung_TagRoutine_0x2A(int k);
void Dung_TagRoutine_0x2B(int k);
void Dung_TagRoutine_0x2C(int k);
void Dung_TagRoutine_0x2D(int k);
void Dung_TagRoutine_0x2E(int k);
void Dung_TagRoutine_0x2F(int k);
void Dung_TagRoutine_0x30(int k);
void RoomTag_QuadrantTrigger(int k);
void Dung_TagRoutine_TrapdoorsUp(void);
void RoomTag_RoomTrigger(int k);
void RoomTag_RekillableBoss(int k);
void RoomTag_RoomTrigger_BlockDoor(int k);
void RoomTag_PrizeTriggerDoorDoor(int k);
void RoomTag_SwitchTrigger_HoldDoor(int k);
void RoomTag_SwitchTrigger_ToggleDoor(int k);
void PushPressurePlate(uint8 attr);
void RoomTag_TorchPuzzleDoor(int k);
void RoomTag_Switch_ExplodingWall(int k);
void RoomTag_PullSwitchExplodingWall(int k);
void Dung_TagRoutine_BlastWallStuff(int k);
void RoomTag_GetHeartForPrize(int k);
void RoomTag_Agahnim(int k);
void RoomTag_GanonDoor(int tagidx);
void RoomTag_KillRoomBlock(int k);
void RoomTag_PushBlockForChest(int k);
void RoomTag_TriggerChest(int k);
void RoomTag_OperateChestReveal(int k);
void RoomTag_TorchPuzzleChest(int k);
void RoomTag_MovingWall_East(int k);
void RoomTag_MovingWallShakeItUp(int k);
void RoomTag_MovingWall_West(int k);
void RoomTag_MovingWallTorchesCheck(int k);
int MovingWall_MoveALittle(void);
int RoomTag_AdvanceGiganticWall(int k);
void RoomTag_WaterOff(int k);
void RoomTag_WaterOn(int k);
void RoomTag_WaterGate(int k);
void Dung_TagRoutine_0x1B(int k);
void RoomTag_Holes0(int k);
void Dung_TagRoutine_0x23(int k);
void Dung_TagRoutine_0x34(int k);
void Dung_TagRoutine_0x35(int k);
void Dung_TagRoutine_0x36(int k);
void Dung_TagRoutine_0x37(int k);
void Dung_TagRoutine_0x39(int k);
void Dung_TagRoutine_0x3A(int k);
void Dung_TagRoutine_Func2(uint8 av);
void RoomTag_ChestHoles0(int k);
void Dung_TagRoutine_0x3B(int k);
void RoomTag_Holes2(int k);
void RoomTag_OperateWaterFlooring(void);
bool RoomTag_MaybeCheckShutters(uint8 *attr_out);
int RoomTag_GetTilemapCoords(void);
bool RoomTag_CheckForPressedSwitch(uint8 *y_out);
void Dungeon_ProcessTorchesAndDoors(void);
void Bomb_CheckForDestructibles(uint16 x, uint16 y, uint8 r14);
int DrawDoorOpening_Step1(int door, int dma_ptr);
void DrawShutterDoorSteps(int door);
void DrawEyeWatchDoor(int door);
void Door_BlastWallExploding_Draw(int dsto);
void OperateShutterDoors(void);
void OpenCrackedDoor(void);
void Dungeon_LoadToggleDoorAttr_OtherEntry(int door);
void Dungeon_LoadSingleDoorTileAttribute(void);
void DrawCompletelyOpenDoor(void);
void Dungeon_ClearAwayExplodingWall(void);
uint16 Dungeon_CheckForAndIDLiftableTile(void);
void Dungeon_PushBlock_Handler(void);
void RoomDraw_16x16Single(uint8 index);
void PushBlock_CheckForPit(uint8 y);
uint8 Dungeon_LiftAndReplaceLiftable(Point16U *pt);
uint8 ThievesAttic_DrawLightenedHole(uint16 pos6, uint16 a, Point16U *pt);
uint8 HandleItemTileAction_Dungeon(uint16 x, uint16 y);
void ManipBlock_Something(Point16U *pt);
void RevealPotItem(uint16 pos6, uint16 pos4);
void Dungeon_UpdateTileMapWithCommonTile(int x, int y, uint8 v);
void Dungeon_PrepSpriteInducedDma(int x, int y, uint8 v);
void Dungeon_DeleteRupeeTile(uint16 x, uint16 y);
uint8 OpenChestForItem(uint8 tile, int *chest_position);
void OpenBigChest(uint16 loc, int *chest_position);
uint8 OpenMiniGameChest(int *chest_position);
uint16 RoomTag_BuildChestStripes(uint16 pos, uint16 y);
void Dungeon_SetAttrForActivatedWaterOff(void);
void Dungeon_FloodSwampWater_PrepTileMap(void);
void Dungeon_AdjustWaterVomit(const uint16 *src, int depth);
void Dungeon_SetAttrForActivatedWater(void);
void FloodDam_Expand(void);
void FloodDam_PrepTiles_init(void);
void Watergate_Main_State1(void);
void FloodDam_Fill(void);
void Ganon_ExtinguishTorch_adjust_translucency(void);
void Ganon_ExtinguishTorch(void);
void Dungeon_ExtinguishTorch(void);
void SpiralStairs_MakeNearbyWallsHighPriority_Entering(void);
void SpiralStairs_MakeNearbyWallsLowPriority(void);
void ClearAndStripeExplodingWall(uint16 dsto);
void Dungeon_DrawRoomOverlay(const uint8 *src);
void GetDoorDrawDataIndex_North_clean_door_index(int door);
int DoorDoorStep1_North(int door, int dma_ptr);
void GetDoorDrawDataIndex_North(int door, int r4_door);
void DrawDoorToTileMap_North(int door, int r4_door);
void Object_Draw_DoorUp_4x3(uint16 src, int door);
void GetDoorDrawDataIndex_South_clean_door_index(int door);
int DoorDoorStep1_South(int door, int dma_ptr);
void GetDoorDrawDataIndex_South(int door, int r4_door);
void DrawDoorToTileMap_South(int door, int r4_door);
void Object_Draw_DoorDown_4x3(uint16 src, int door);
void GetDoorDrawDataIndex_West_clean_door_index(int door);
int DoorDoorStep1_West(int door, int dma_ptr);
void GetDoorDrawDataIndex_West(int door, int r4_door);
void DrawDoorToTileMap_West(int door, int r4_door);
void GetDoorDrawDataIndex_East_clean_door_index(int door);
int DoorDoorStep1_East(int door, int dma_ptr);
void GetDoorDrawDataIndex_East(int door, int r4_door);
void DrawDoorToTileMap_East(int door, int r4_door);
uint8 GetDoorGraphicsIndex(int door, int r4_door);
void ClearExplodingWallFromTileMap_ClearOnePair(uint16 *dst, const uint16 *src);
void Dungeon_DrawRoomOverlay_Apply(int p);
void ApplyGrayscaleFixed_Incremental(void);
void Dungeon_ApproachFixedColor_variable(uint8 a);
void Module_PreDungeon(void);
void Module_PreDungeon_setAmbientSfx(void);
void LoadOWMusicIfNeeded(void);
void Module07_Dungeon(void);
void Dungeon_TryScreenEdgeTransition(void);
void Dungeon_HandleEdgeTransitionMovement(int dir);
void Module07_00_PlayerControl(void);
void Module07_01_SubtileTransition(void);
void DungeonTransition_Subtile_ResetShutters(void);
void DungeonTransition_Subtile_PrepTransition(void);
void DungeonTransition_Subtile_ApplyFilter(void);
void DungeonTransition_Subtile_TriggerShutters(void);
void Module07_02_SupertileTransition(void);
void Module07_02_00_InitializeTransition(void);
void Module07_02_01_LoadNextRoom(void);
void Dungeon_InterRoomTrans_State3(void);
void Dungeon_InterRoomTrans_State10(void);
void Dungeon_SpiralStaircase11(void);
void Dungeon_InterRoomTrans_notDarkRoom(void);
void Dungeon_InterRoomTrans_State9(void);
void Dungeon_SpiralStaircase12(void);
void Dungeon_InterRoomTrans_State4(void);
void Dungeon_InterRoomTrans_State12(void);
void Dungeon_Staircase14(void);
void Dungeon_ResetTorchBackgroundAndPlayer(void);
void Dungeon_ResetTorchBackgroundAndPlayerInner(void);
void Dungeon_InterRoomTrans_State7(void);
void DungeonTransition_RunFiltering(void);
void Module07_02_FadedFilter(void);
void Dungeon_InterRoomTrans_State15(void);
void Dungeon_PlayMusicIfDefeated(void);
void Module07_03_OverlayChange(void);
void Module07_04_UnlockDoor(void);
void Module07_05_ControlShutters(void);
void Module07_06_FatInterRoomStairs(void);
void Module07_0E_01_HandleMusicAndResetProps(void);
void ResetTransitionPropsAndAdvance_ResetInterface(void);
void ResetTransitionPropsAndAdvanceSubmodule(void);
void Dungeon_InitializeRoomFromSpecial(void);
void DungeonTransition_LoadSpriteGFX(void);
void DungeonTransition_AdjustForFatStairScroll(void);
void ResetThenCacheRoomEntryProperties(void);
void DungeonTransition_TriggerBGC34UpdateAndAdvance(void);
void DungeonTransition_TriggerBGC56UpdateAndAdvance(void);
void Module07_07_FallingTransition(void);
void Module07_07_00_HandleMusicAndResetRoom(void);
void Module07_07_06_SyncBG1and2(void);
void Module07_07_0F_FallingFadeIn(void);
void Dungeon_PlayBlipAndCacheQuadrantVisits(void);
void Module07_07_10_LandLinkFromFalling(void);
void Module07_07_11_CacheRoomAndSetMusic(void);
void Module07_08_NorthIntraRoomStairs(void);
void Module07_08_00_InitStairs(void);
void Module07_08_01_ClimbStairs(void);
void Module07_10_SouthIntraRoomStairs(void);
void Module07_10_00_InitStairs(void);
void Module07_10_01_ClimbStairs(void);
void Module07_09_OpenCrackedDoor(void);
void Module07_0A_ChangeBrightness(void);
void Module07_0B_DrainSwampPool(void);
void Module07_0C_FloodSwampWater(void);
void Module07_0D_FloodDam(void);
void Module07_0E_SpiralStairs(void);
void Dungeon_DoubleApplyAndIncrementGrayscale(void);
void Module07_0E_02_ApplyFilterIf(void);
void Dungeon_SyncBackgroundsFromSpiralStairs(void);
void Dungeon_AdvanceThenSetBossMusicUnorthodox(void);
void Dungeon_SetBossMusicUnorthodox(void);
void Dungeon_SpiralStaircase17(void);
void Dungeon_SpiralStaircase18(void);
void Module07_0E_00_InitPriorityAndScreens(void);
void Module07_0E_13_SetRoomAndLayerAndCache(void);
void RepositionLinkAfterSpiralStairs(void);
void SpiralStairs_MakeNearbyWallsHighPriority_Exiting(void);
void Module07_0F_LandingWipe(void);
void Module07_0F_00_InitSpotlight(void);
void Module07_0F_01_OperateSpotlight(void);
void Module07_11_StraightInterroomStairs(void);
void Module07_11_00_PrepAndReset(void);
void Module07_11_01_FadeOut(void);
void Module07_11_02_LoadAndPrepRoom(void);
void Module07_11_03_FilterAndLoadBGChars(void);
void Module07_11_04_FilterDoBGAndResetSprites(void);
void Module07_11_0B_PrepDestination(void);
void Module07_11_09_LoadSpriteGraphics(void);
void Module07_11_19_SetSongAndFilter(void);
void Module07_11_11_KeepSliding(void);
void Module07_14_RecoverFromFall(void);
void Module07_14_00_ScrollCamera(void);
void Module07_15_WarpPad(void);
void Module07_15_01_ApplyMosaicAndFilter(void);
void Module07_15_04_SyncRoomPropsAndBuildOverlay(void);
void Module07_15_0E_FadeInFromWarp(void);
void Module07_15_0F_FinalizeAndCacheEntry(void);
void Module07_16_UpdatePegs(void);
void Module07_17_PressurePlate(void);
void Module07_18_RescuedMaiden(void);
void Module07_19_MirrorFade(void);
void Module07_1A_RoomDraw_OpenTriforceDoor_bounce(void);
void Module11_DungeonFallingEntrance(void);
void Module11_02_LoadEntrance(void);
void Dungeon_LoadSongBankIfNeeded(void);
void Mirror_SaveRoomData(void);
void SaveDungeonKeys(void);
void Dungeon_AdjustAfterSpiralStairs(void);
void Dungeon_AdjustForTeleportDoors(uint8 room, uint8 flag);
void Dungeon_AdjustForRoomLayout(void);
void HandleEdgeTransitionMovementEast_RightBy8(void);
void Dungeon_StartInterRoomTrans_Right(void);
void HandleEdgeTransitionMovementSouth_DownBy16(void);
void Dung_HandleExitToOverworld(void);
void AdjustQuadrantAndCamera_right(void);
void SetAndSaveVisitedQuadrantFlags(void);
void SaveQuadrantsToSram(void);
void AdjustQuadrantAndCamera_left(void);
void AdjustQuadrantAndCamera_down(void);
void AdjustQuadrantAndCamera_up(void);
void Dungeon_FlagRoomData_Quadrants(void);
void Dung_SaveDataForCurrentRoom(void);
void HandleEdgeTransition_AdjustCameraBoundaries(uint8 arg);
void Dungeon_AdjustQuadrant(void);
void Dungeon_HandleCamera(void);
void MirrorBg1Bg2Offs(void);
void DungeonTransition_AdjustCamera_X(uint8 arg);
void DungeonTransition_AdjustCamera_Y(uint8 arg);
void DungeonTransition_ScrollRoom(void);
void Module07_11_0A_ScrollCamera(void);
void DungeonTransition_FindSubtileLanding(void);
void SubtileTransitionCalculateLanding(void);
void Dungeon_InterRoomTrans_State13(void);
void Dungeon_IntraRoomTrans_State5(void);
bool DungeonTransition_MoveLinkOutDoor(void);
uint8 CalculateTransitionLanding(void);
void Dungeon_LoadAndDrawRoom(void);
void Dungeon_LoadEntrance(void);
void PushBlock_Slide(uint8 j);
void PushBlock_HandleFalling(uint8 y);
void PushBlock_ApplyVelocity(uint8 i);
void PushBlock_HandleCollision(uint8 i, uint16 x, uint16 y);
void Sprite_Dungeon_DrawAllPushBlocks(void);
void UsedForStraightInterRoomStaircase(void);
void HandleLinkOnSpiralStairs(void);
void SpiralStairs_FindLandingSpot(void);
void Dungeon_HandleLayerEffect(void);
void LayerEffect_Nothing(void);
void LayerEffect_Scroll(void);
void LayerEffect_Trinexx(void);
void LayerEffect_Agahnim2(void);
void LayerEffect_InvisibleFloor(void);
void LayerEffect_Ganon(void);
void LayerEffect_WaterRapids(void);
void Dungeon_LoadCustomTileAttr(void);
void Link_CheckBunnyStatus(void);
void CrystalCutscene_Initialize(void);
void CrystalCutscene_SpawnMaiden(void);