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
69void DrawSomariaLine(const DrawContext& ctx);
70
80void DrawWaterFace(const DrawContext& ctx);
81
92void DrawLargeCanvasObject(const DrawContext& ctx, int width, int height);
93
99void DrawBed4x5(const DrawContext& ctx);
100
106void DrawRightwards3x6(const DrawContext& ctx);
107
113void DrawUtility6x3(const DrawContext& ctx);
114
120void DrawUtility3x5(const DrawContext& ctx);
121
127void DrawVerticalTurtleRockPipe(const DrawContext& ctx);
128
134void DrawHorizontalTurtleRockPipe(const DrawContext& ctx);
135
141void DrawLightBeamOnFloor(const DrawContext& ctx);
142
148void DrawBigLightBeamOnFloor(const DrawContext& ctx);
149
155void DrawBossShell4x4(const DrawContext& ctx);
156
162void DrawSolidWallDecor3x4(const DrawContext& ctx);
163
169void DrawArcheryGameTargetDoor(const DrawContext& ctx);
170
176void DrawGanonTriforceFloorDecor(const DrawContext& ctx);
177
183void DrawSingle2x2(const DrawContext& ctx);
184
190void DrawSingle4x4(const DrawContext& ctx);
191
197void DrawSingle4x3(const DrawContext& ctx);
198
204void DrawRupeeFloor(const DrawContext& ctx);
205
211void DrawActual4x4(const DrawContext& ctx);
212
218void DrawWaterfall47(const DrawContext& ctx);
219
225void DrawWaterfall48(const DrawContext& ctx);
226
227// ============================================================================
228// SuperSquare Routines (Phase 4)
229// ============================================================================
230
240void Draw4x4BlocksIn4x4SuperSquare(const DrawContext& ctx);
241
250void Draw3x3FloorIn4x4SuperSquare(const DrawContext& ctx);
251
261void Draw4x4FloorIn4x4SuperSquare(const DrawContext& ctx);
262
271void Draw4x4FloorOneIn4x4SuperSquare(const DrawContext& ctx);
272
281void Draw4x4FloorTwoIn4x4SuperSquare(const DrawContext& ctx);
282
291void DrawBigHole4x4_1to16(const DrawContext& ctx);
292
301void DrawSpike2x2In4x4SuperSquare(const DrawContext& ctx);
302
311void DrawTableRock4x4_1to16(const DrawContext& ctx);
312
322void DrawWaterOverlay8x8_1to16(const DrawContext& ctx);
323
324// ============================================================================
325// Stair Routines (matching assembly)
326// ============================================================================
327
337void DrawInterRoomFatStairsUp(const DrawContext& ctx);
338
347void DrawInterRoomFatStairsDownA(const DrawContext& ctx);
348
356void DrawInterRoomFatStairsDownB(const DrawContext& ctx);
357
368void DrawSpiralStairs(const DrawContext& ctx, bool going_up, bool is_upper);
369
378void DrawAutoStairs(const DrawContext& ctx);
379
388void DrawStraightInterRoomStairs(const DrawContext& ctx);
389
390// ============================================================================
391// Interactive Object Routines
392// ============================================================================
393
403void DrawPrisonCell(const DrawContext& ctx);
404
414void DrawBigKeyLock(const DrawContext& ctx);
415
425void DrawBombableFloor(const DrawContext& ctx);
426
436void DrawMovingWall(const DrawContext& ctx, bool is_west);
437
438// ============================================================================
439// Water Face Variants (based on room state)
440// ============================================================================
441
449void DrawEmptyWaterFace(const DrawContext& ctx);
450
458void DrawSpittingWaterFace(const DrawContext& ctx);
459
467void DrawDrenchingWaterFace(const DrawContext& ctx);
468
469// ============================================================================
470// Chest Platform Multi-Part Routines
471// ============================================================================
472
481void DrawClosedChestPlatform(const DrawContext& ctx);
482
490void DrawChestPlatformHorizontalWall(const DrawContext& ctx);
491
499void DrawChestPlatformVerticalWall(const DrawContext& ctx);
500
506void RegisterSpecialRoutines(std::vector<DrawRoutineInfo>& registry);
507
508} // namespace draw_routines
509} // namespace zelda3
510} // namespace yaze
511
512#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 DrawLargeCanvasObject(const DrawContext &ctx, int width, int height)
Draw large canvas object with arbitrary dimensions.
void DrawChest(const DrawContext &ctx, int chest_index)
Draw chest object (big or small) with open/closed state support.
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 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 DrawChestPlatformVerticalWall(const DrawContext &ctx)
Draw chest platform vertical wall section.
void DrawClosedChestPlatform(const DrawContext &ctx)
Draw closed chest platform (Type 1 object 0xC1)
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 big floor light beam (8x8 footprint)
void DrawSpiralStairs(const DrawContext &ctx, bool going_up, bool is_upper)
Draw spiral stairs (Type 2 objects 0x138-0x13B)
void DrawSomariaLine(const DrawContext &ctx)
Draw Somaria line in various directions.
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 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 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 DrawMovingWall(const DrawContext &ctx, bool is_west)
Draw moving wall (Type 1 objects 0xCD, 0xCE)
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 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 (6x8 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 big key lock (Type 3 object 0x218)
void DrawPrisonCell(const DrawContext &ctx)
Draw prison cell with bars (Type 3 objects 0x20D, 0x217)