yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
special_routines.h
Go to the documentation of this file.
1#ifndef YAZE_ZELDA3_DUNGEON_DRAW_ROUTINES_SPECIAL_ROUTINES_H
2#define YAZE_ZELDA3_DUNGEON_DRAW_ROUTINES_SPECIAL_ROUTINES_H
3
5
6namespace yaze {
7namespace zelda3 {
8namespace draw_routines {
9
21void DrawChest(const DrawContext& ctx, int chest_index);
22
32void DrawNothing(const DrawContext& ctx);
33
42void CustomDraw(const DrawContext& ctx);
43
53void DrawDoorSwitcherer(const DrawContext& ctx);
54
65void DrawSomariaLine(const DrawContext& ctx);
66
76void DrawWaterFace(const DrawContext& ctx);
77
88void DrawLargeCanvasObject(const DrawContext& ctx, int width, int height);
89
95void DrawBed4x5(const DrawContext& ctx);
96
102void DrawRightwards3x6(const DrawContext& ctx);
103
109void DrawUtility6x3(const DrawContext& ctx);
110
116void DrawBigWallDecor(const DrawContext& ctx);
117
123void DrawTableBowl(const DrawContext& ctx);
124
130void DrawSmithyFurnace(const DrawContext& ctx);
131
137void DrawBigGrayRock(const DrawContext& ctx);
138
144void DrawAgahnimsAltar(const DrawContext& ctx);
145
151void DrawFortuneTellerRoom(const DrawContext& ctx);
152
158void DrawMagicBatAltar(const DrawContext& ctx);
159
165void DrawUtility3x5(const DrawContext& ctx);
166
172void DrawVerticalTurtleRockPipe(const DrawContext& ctx);
173
179void DrawHorizontalTurtleRockPipe(const DrawContext& ctx);
180
186void DrawLightBeamOnFloor(const DrawContext& ctx);
187
193void DrawBigLightBeamOnFloor(const DrawContext& ctx);
194
200void DrawFloorLight(const DrawContext& ctx);
201
207void DrawBossShell4x4(const DrawContext& ctx);
208
214void DrawVitreousGooDamage(const DrawContext& ctx);
215
221void DrawSolidWallDecor3x4(const DrawContext& ctx);
222
228void DrawArcheryGameTargetDoor(const DrawContext& ctx);
229
235void DrawGanonTriforceFloorDecor(const DrawContext& ctx);
236
242void DrawSingle2x2(const DrawContext& ctx);
243
249void DrawSingle4x4(const DrawContext& ctx);
250
256void DrawSingle4x3(const DrawContext& ctx);
257
263void DrawRupeeFloor(const DrawContext& ctx);
264
270void DrawActual4x4(const DrawContext& ctx);
271
277void DrawWaterfall47(const DrawContext& ctx);
278
284void DrawWaterfall48(const DrawContext& ctx);
285
286// ============================================================================
287// SuperSquare Routines (Phase 4)
288// ============================================================================
289
299void Draw4x4BlocksIn4x4SuperSquare(const DrawContext& ctx);
300
309void Draw3x3FloorIn4x4SuperSquare(const DrawContext& ctx);
310
320void Draw4x4FloorIn4x4SuperSquare(const DrawContext& ctx);
321
330void Draw4x4FloorOneIn4x4SuperSquare(const DrawContext& ctx);
331
340void Draw4x4FloorTwoIn4x4SuperSquare(const DrawContext& ctx);
341
350void DrawBigHole4x4_1to16(const DrawContext& ctx);
351
360void DrawSpike2x2In4x4SuperSquare(const DrawContext& ctx);
361
370void DrawTableRock4x4_1to16(const DrawContext& ctx);
371
381void DrawWaterOverlay8x8_1to16(const DrawContext& ctx);
382
383// ============================================================================
384// Stair Routines (matching assembly)
385// ============================================================================
386
396void DrawInterRoomFatStairsUp(const DrawContext& ctx);
397
406void DrawInterRoomFatStairsDownA(const DrawContext& ctx);
407
415void DrawInterRoomFatStairsDownB(const DrawContext& ctx);
416
427void DrawSpiralStairs(const DrawContext& ctx, bool going_up, bool is_upper);
428
437void DrawAutoStairs(const DrawContext& ctx);
438
447void DrawStraightInterRoomStairs(const DrawContext& ctx);
448
449// ============================================================================
450// Interactive Object Routines
451// ============================================================================
452
462void DrawPrisonCell(const DrawContext& ctx);
463
473void DrawBigKeyLock(const DrawContext& ctx);
474
483void DrawBombableFloor(const DrawContext& ctx);
484
494void DrawMovingWallWest(const DrawContext& ctx);
495
504void DrawMovingWallEast(const DrawContext& ctx);
505
506// ============================================================================
507// Water Face Variants (based on room state)
508// ============================================================================
509
517void DrawEmptyWaterFace(const DrawContext& ctx);
518
526void DrawSpittingWaterFace(const DrawContext& ctx);
527
535void DrawDrenchingWaterFace(const DrawContext& ctx);
536
537// ============================================================================
538// Chest Platform Multi-Part Routines
539// ============================================================================
540
549void DrawClosedChestPlatform(const DrawContext& ctx);
550
558void DrawOpenChestPlatform(const DrawContext& ctx);
559
567void DrawChestPlatformHorizontalWall(const DrawContext& ctx);
568
576void DrawChestPlatformVerticalWall(const DrawContext& ctx);
577
583void RegisterSpecialRoutines(std::vector<DrawRoutineInfo>& registry);
584
585} // namespace draw_routines
586} // namespace zelda3
587} // namespace yaze
588
589#endif // YAZE_ZELDA3_DUNGEON_DRAW_ROUTINES_SPECIAL_ROUTINES_H
void DrawTableRock4x4_1to16(const DrawContext &ctx)
Draw 4x4 table rock pattern.
void DrawInterRoomFatStairsDownA(const DrawContext &ctx)
Draw inter-room fat stairs going down A (Type 2 object 0x12E)
void DrawSingle2x2(const DrawContext &ctx)
Draw a single 2x2 block (column-major order)
void DrawWaterfall47(const DrawContext &ctx)
Draw waterfall object 0x47 pattern.
void DrawHorizontalTurtleRockPipe(const DrawContext &ctx)
Draw horizontal Turtle Rock pipe (6x4)
void DrawAutoStairs(const DrawContext &ctx)
Draw auto stairs (Type 2/3 objects 0x130-0x133, 0x21B-0x21D, 0x233)
void DrawSpittingWaterFace(const DrawContext &ctx)
Draw spitting water face (Type 3 object 0x201)
void DrawAgahnimsAltar(const DrawContext &ctx)
Draw the fixed 14x14 Agahnim altar with mirrored right half.
void DrawLargeCanvasObject(const DrawContext &ctx, int width, int height)
Draw large canvas object with arbitrary dimensions.
void DrawMovingWallEast(const DrawContext &ctx)
Draw the east-moving wall (Type 1 object 0xCE)
void DrawBigGrayRock(const DrawContext &ctx)
Draw the fixed 4x4 big gray rock as two column-major 4x2 bands.
void DrawChest(const DrawContext &ctx, int chest_index)
Draw a small chest with open/closed state support.
void DrawMovingWallWest(const DrawContext &ctx)
Draw the west-moving wall (Type 1 object 0xCD)
void DrawBed4x5(const DrawContext &ctx)
Draw a 4x5 bed pattern (row-major)
void DrawSingle4x4(const DrawContext &ctx)
Draw a single 4x4 block (column-major order)
void DrawUtility3x5(const DrawContext &ctx)
Draw utility 3x5 pattern (special row pattern)
void DrawDoorSwitcherer(const DrawContext &ctx)
Draw door switcher object with state-based graphics.
void Draw4x4BlocksIn4x4SuperSquare(const DrawContext &ctx)
Draw 4x4 solid blocks in a super square grid.
void DrawBigHole4x4_1to16(const DrawContext &ctx)
Draw 4x4 big hole pattern.
void DrawFloorLight(const DrawContext &ctx)
Draw unconditional floor light (8x8 footprint)
void Draw4x4FloorTwoIn4x4SuperSquare(const DrawContext &ctx)
Draw two 4x4 floor pattern variant.
void DrawSolidWallDecor3x4(const DrawContext &ctx)
Draw solid wall decor 3x4.
void DrawLightBeamOnFloor(const DrawContext &ctx)
Draw floor light beam composed of three 4x4 blocks.
void DrawWaterFace(const DrawContext &ctx)
Draw a generic 2x2 water-face helper pattern.
void DrawTableBowl(const DrawContext &ctx)
Draw a fixed 4x2 table bowl in row-major order.
void DrawChestPlatformVerticalWall(const DrawContext &ctx)
Draw chest platform vertical wall section.
void DrawClosedChestPlatform(const DrawContext &ctx)
Draw closed chest platform (Type 1 object 0xC1)
void DrawSmithyFurnace(const DrawContext &ctx)
Draw the fixed 6x8 smithy furnace in row-major order.
void DrawVitreousGooDamage(const DrawContext &ctx)
Draw the fixed 5x2 grid of repeated 4x4 Vitreous goo stamps.
void DrawSpike2x2In4x4SuperSquare(const DrawContext &ctx)
Draw 2x2 spike pattern in super square units.
void DrawSingle4x3(const DrawContext &ctx)
Draw a single 4x3 block (column-major order)
void DrawBigLightBeamOnFloor(const DrawContext &ctx)
Draw state-gated big floor light beam active variant (8x8 footprint)
void DrawOpenChestPlatform(const DrawContext &ctx)
Draw open chest platform (Type 1 object 0xDC)
void DrawSpiralStairs(const DrawContext &ctx, bool going_up, bool is_upper)
Draw spiral stairs (Type 2 objects 0x138-0x13B)
void DrawFortuneTellerRoom(const DrawContext &ctx)
Draw the fixed 14x14 fortune teller room on BG1.
void DrawSomariaLine(const DrawContext &ctx)
Draw one Somaria path tile at the object anchor.
void DrawWaterfall48(const DrawContext &ctx)
Draw waterfall object 0x48 pattern.
void DrawVerticalTurtleRockPipe(const DrawContext &ctx)
Draw vertical Turtle Rock pipe (two stacked 4x3 sections)
void DrawBombableFloor(const DrawContext &ctx)
Draw bombable floor (Type 3 object 0xFC7 / ASM object 0x247)
void DrawDrenchingWaterFace(const DrawContext &ctx)
Draw drenching water face (Type 3 object 0x202)
void DrawEmptyWaterFace(const DrawContext &ctx)
Draw empty water face (Type 3 object 0x200)
void DrawBossShell4x4(const DrawContext &ctx)
Draw boss shell 4x4.
void CustomDraw(const DrawContext &ctx)
Custom draw routine for special objects.
void DrawBigWallDecor(const DrawContext &ctx)
Draw fixed 8x3 big wall decor in column-major order.
void Draw4x4FloorIn4x4SuperSquare(const DrawContext &ctx)
Draw 4x4 floor pattern in super square units.
void DrawInterRoomFatStairsUp(const DrawContext &ctx)
Draw inter-room fat stairs going up (Type 2 object 0x12D)
void Draw3x3FloorIn4x4SuperSquare(const DrawContext &ctx)
Draw 3x3 floor pattern in super square units.
void DrawArcheryGameTargetDoor(const DrawContext &ctx)
Draw archery game target door (two 3x3 sections)
void DrawStraightInterRoomStairs(const DrawContext &ctx)
Draw straight inter-room stairs (Type 3 objects 0x21E-0x229)
void DrawGanonTriforceFloorDecor(const DrawContext &ctx)
Draw Ganon triforce floor decor (three 4x4 sections)
void RegisterSpecialRoutines(std::vector< DrawRoutineInfo > &registry)
Register all special/miscellaneous draw routines to the registry.
void DrawInterRoomFatStairsDownB(const DrawContext &ctx)
Draw inter-room fat stairs going down B (Type 2 object 0x12F)
void DrawUtility6x3(const DrawContext &ctx)
Draw utility 6x3 pattern via RoomDraw_1x3N_rightwards.
void DrawRightwards3x6(const DrawContext &ctx)
Draw a 6x3 pattern via RoomDraw_1x3N_rightwards semantics.
void DrawMagicBatAltar(const DrawContext &ctx)
Draw the fixed 8x7 Magic Bat altar in column-major order.
void DrawChestPlatformHorizontalWall(const DrawContext &ctx)
Draw chest platform horizontal wall section.
void DrawWaterOverlay8x8_1to16(const DrawContext &ctx)
Draw water overlay 8x8 pattern.
void DrawRupeeFloor(const DrawContext &ctx)
Draw the blue rupee floor pattern (5x8 bounds with gaps)
void Draw4x4FloorOneIn4x4SuperSquare(const DrawContext &ctx)
Draw single 4x4 floor pattern variant.
void DrawNothing(const DrawContext &ctx)
Draw nothing - represents invisible logic objects or placeholders.
void DrawActual4x4(const DrawContext &ctx)
Draw an actual 4x4 tile8 pattern (column-major order)
void DrawBigKeyLock(const DrawContext &ctx)
Draw a closed big key lock (Yaze 0xF98 / ASM object 0x218)
void DrawPrisonCell(const DrawContext &ctx)
Draw prison cell with bars (Type 3 objects 0x20D, 0x217)