forked from snesrev/zelda3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dungeon.h
449 lines (444 loc) · 19 KB
/
dungeon.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
#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 Dung_StartInterRoomTrans_Left_Plus();
void Dungeon_StartInterRoomTrans_Up();
void Dungeon_StartInterRoomTrans_Down();
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);
uint8 GetEntranceMusicTrack(int entrance);
bool Dungeon_IsPitThatHurtsPlayer();
void Dungeon_PrepareNextRoomQuadrantUpload();
void WaterFlood_BuildOneQuadrantForVRAM();
void TileMapPrep_NotWaterOnTag();
void OrientLampLightCone();
void PrepareDungeonExitFromBossFight();
void SavePalaceDeaths();
void Dungeon_LoadRoom();
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 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 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 Object_SizeAtoAplus15(uint8 a);
void RoomDraw_GetObjectSize_1to15or26();
void RoomDraw_GetObjectSize_1to15or32();
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 Dungeon_CheckAdjacentRoomsForOpenDoors(int idx, int room);
void Dungeon_LoadAdjacentRoomDoors(int room);
void Dungeon_LoadAttribute_Selectable();
void Dungeon_LoadAttributeTable();
void Dungeon_LoadBasicAttribute_full(uint16 loops);
void Dungeon_LoadObjectAttribute();
void Dungeon_LoadDoorAttribute();
void Dungeon_LoadSingleDoorAttribute(int k);
void Door_LoadBlastWallAttr(int k);
void ChangeDoorToSwitch();
void Dungeon_FlipCrystalPegAttribute();
void Dungeon_HandleRoomTags();
void Dung_TagRoutine_0x00(int k);
void Dungeon_DetectStaircase();
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 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();
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();
bool RoomTag_MaybeCheckShutters(uint8 *attr_out);
int RoomTag_GetTilemapCoords();
bool RoomTag_CheckForPressedSwitch(uint8 *y_out);
void Dungeon_ProcessTorchesAndDoors();
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 OpenCrackedDoor();
void Dungeon_LoadToggleDoorAttr_OtherEntry(int door);
void Dungeon_LoadSingleDoorTileAttribute();
void DrawCompletelyOpenDoor();
void Dungeon_ClearAwayExplodingWall();
uint16 Dungeon_CheckForAndIDLiftableTile();
void Dungeon_PushBlock_Handler();
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 Dungeon_FloodSwampWater_PrepTileMap();
void Dungeon_AdjustWaterVomit(const uint16 *src, int depth);
void Dungeon_SetAttrForActivatedWater();
void FloodDam_Expand();
void FloodDam_PrepTiles_init();
void Watergate_Main_State1();
void FloodDam_Fill();
void Ganon_ExtinguishTorch_adjust_translucency();
void Ganon_ExtinguishTorch();
void Dungeon_ExtinguishTorch();
void SpiralStairs_MakeNearbyWallsHighPriority_Entering();
void SpiralStairs_MakeNearbyWallsLowPriority();
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 Dungeon_ApproachFixedColor_variable(uint8 a);
void Module_PreDungeon();
void Module_PreDungeon_setAmbientSfx();
void LoadOWMusicIfNeeded();
void Module07_Dungeon();
void Dungeon_TryScreenEdgeTransition();
void Dungeon_HandleEdgeTransitionMovement(int dir);
void Module07_00_PlayerControl();
void Module07_01_SubtileTransition();
void DungeonTransition_Subtile_ResetShutters();
void DungeonTransition_Subtile_PrepTransition();
void DungeonTransition_Subtile_ApplyFilter();
void DungeonTransition_Subtile_TriggerShutters();
void Module07_02_SupertileTransition();
void Module07_02_00_InitializeTransition();
void Module07_02_01_LoadNextRoom();
void Dungeon_InterRoomTrans_State3();
void Dungeon_InterRoomTrans_State10();
void Dungeon_SpiralStaircase11();
void Dungeon_InterRoomTrans_notDarkRoom();
void Dungeon_InterRoomTrans_State9();
void Dungeon_SpiralStaircase12();
void Dungeon_InterRoomTrans_State4();
void Dungeon_InterRoomTrans_State12();
void Dungeon_Staircase14();
void Dungeon_ResetTorchBackgroundAndPlayer();
void Dungeon_ResetTorchBackgroundAndPlayerInner();
void Dungeon_InterRoomTrans_State7();
void DungeonTransition_RunFiltering();
void Module07_02_FadedFilter();
void Dungeon_InterRoomTrans_State15();
void Dungeon_PlayMusicIfDefeated();
void Module07_03_OverlayChange();
void Module07_04_UnlockDoor();
void Module07_05_ControlShutters();
void Module07_06_FatInterRoomStairs();
void Module07_0E_01_HandleMusicAndResetProps();
void ResetTransitionPropsAndAdvance_ResetInterface();
void ResetTransitionPropsAndAdvanceSubmodule();
void Dungeon_InitializeRoomFromSpecial();
void DungeonTransition_LoadSpriteGFX();
void DungeonTransition_AdjustForFatStairScroll();
void ResetThenCacheRoomEntryProperties();
void DungeonTransition_TriggerBGC34UpdateAndAdvance();
void DungeonTransition_TriggerBGC56UpdateAndAdvance();
void Module07_07_FallingTransition();
void Module07_07_00_HandleMusicAndResetRoom();
void Module07_07_06_SyncBG1and2();
void Module07_07_0F_FallingFadeIn();
void Dungeon_PlayBlipAndCacheQuadrantVisits();
void Module07_07_10_LandLinkFromFalling();
void Module07_07_11_CacheRoomAndSetMusic();
void Module07_08_NorthIntraRoomStairs();
void Module07_08_00_InitStairs();
void Module07_08_01_ClimbStairs();
void Module07_10_SouthIntraRoomStairs();
void Module07_10_00_InitStairs();
void Module07_10_01_ClimbStairs();
void Module07_09_OpenCrackedDoor();
void Module07_0A_ChangeBrightness();
void Module07_0B_DrainSwampPool();
void Module07_0C_FloodSwampWater();
void Module07_0D_FloodDam();
void Module07_0E_SpiralStairs();
void Dungeon_DoubleApplyAndIncrementGrayscale();
void Module07_0E_02_ApplyFilterIf();
void Dungeon_SyncBackgroundsFromSpiralStairs();
void Dungeon_AdvanceThenSetBossMusicUnorthodox();
void Dungeon_SetBossMusicUnorthodox();
void Dungeon_SpiralStaircase17();
void Dungeon_SpiralStaircase18();
void Module07_0E_00_InitPriorityAndScreens();
void Module07_0E_13_SetRoomAndLayerAndCache();
void RepositionLinkAfterSpiralStairs();
void SpiralStairs_MakeNearbyWallsHighPriority_Exiting();
void Module07_0F_LandingWipe();
void Module07_0F_00_InitSpotlight();
void Module07_0F_01_OperateSpotlight();
void Module07_11_StraightInterroomStairs();
void Module07_11_00_PrepAndReset();
void Module07_11_01_FadeOut();
void Module07_11_02_LoadAndPrepRoom();
void Module07_11_03_FilterAndLoadBGChars();
void Module07_11_04_FilterDoBGAndResetSprites();
void Module07_11_0B_PrepDestination();
void Module07_11_09_LoadSpriteGraphics();
void Module07_11_19_SetSongAndFilter();
void Module07_11_11_KeepSliding();
void Module07_14_RecoverFromFall();
void Module07_14_00_ScrollCamera();
void Module07_15_WarpPad();
void Module07_15_01_ApplyMosaicAndFilter();
void Module07_15_04_SyncRoomPropsAndBuildOverlay();
void Module07_15_0E_FadeInFromWarp();
void Module07_15_0F_FinalizeAndCacheEntry();
void Module07_16_UpdatePegs();
void Module07_17_PressurePlate();
void Module07_18_RescuedMaiden();
void Module07_19_MirrorFade();
void Module07_1A_RoomDraw_OpenTriforceDoor_bounce();
void Module11_DungeonFallingEntrance();
void Module11_02_LoadEntrance();
void Dungeon_LoadSongBankIfNeeded();
void Mirror_SaveRoomData();
void SaveDungeonKeys();
void Dungeon_AdjustAfterSpiralStairs();
void Dungeon_AdjustForTeleportDoors(uint8 room, uint8 flag);
void Dungeon_AdjustForRoomLayout();
void HandleEdgeTransitionMovementEast_RightBy8();
void Dungeon_StartInterRoomTrans_Right();
void HandleEdgeTransitionMovementSouth_DownBy16();
void Dung_HandleExitToOverworld();
void AdjustQuadrantAndCamera_right();
void SetAndSaveVisitedQuadrantFlags();
void SaveQuadrantsToSram();
void AdjustQuadrantAndCamera_left();
void AdjustQuadrantAndCamera_down();
void AdjustQuadrantAndCamera_up();
void Dungeon_FlagRoomData_Quadrants();
void Dung_SaveDataForCurrentRoom();
void HandleEdgeTransition_AdjustCameraBoundaries(uint8 arg);
void Dungeon_AdjustQuadrant();
void Dungeon_HandleCamera();
void MirrorBg1Bg2Offs();
void DungeonTransition_AdjustCamera_X(uint8 arg);
void DungeonTransition_AdjustCamera_Y(uint8 arg);
void DungeonTransition_ScrollRoom();
void Module07_11_0A_ScrollCamera();
void DungeonTransition_FindSubtileLanding();
void SubtileTransitionCalculateLanding();
void Dungeon_InterRoomTrans_State13();
void Dungeon_IntraRoomTrans_State5();
bool DungeonTransition_MoveLinkOutDoor();
uint8 CalculateTransitionLanding();
void Dungeon_LoadAndDrawRoom();
void Dungeon_LoadEntrance();
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 UsedForStraightInterRoomStaircase();
void HandleLinkOnSpiralStairs();
void SpiralStairs_FindLandingSpot();
void Dungeon_HandleLayerEffect();
void LayerEffect_Nothing();
void LayerEffect_Scroll();
void LayerEffect_Trinexx();
void LayerEffect_Agahnim2();
void LayerEffect_InvisibleFloor();
void LayerEffect_Ganon();
void LayerEffect_WaterRapids();
void Dungeon_LoadCustomTileAttr();
void Link_CheckBunnyStatus();
void CrystalCutscene_Initialize();
void CrystalCutscene_SpawnMaiden();