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 DrawUtility3x5(const DrawContext& ctx);
159
165void DrawVerticalTurtleRockPipe(const DrawContext& ctx);
166
172void DrawHorizontalTurtleRockPipe(const DrawContext& ctx);
173
179void DrawLightBeamOnFloor(const DrawContext& ctx);
180
186void DrawBigLightBeamOnFloor(const DrawContext& ctx);
187
193void DrawFloorLight(const DrawContext& ctx);
194
200void DrawBossShell4x4(const DrawContext& ctx);
201
207void DrawSolidWallDecor3x4(const DrawContext& ctx);
208
214void DrawArcheryGameTargetDoor(const DrawContext& ctx);
215
221void DrawGanonTriforceFloorDecor(const DrawContext& ctx);
222
228void DrawSingle2x2(const DrawContext& ctx);
229
235void DrawSingle4x4(const DrawContext& ctx);
236
242void DrawSingle4x3(const DrawContext& ctx);
243
249void DrawRupeeFloor(const DrawContext& ctx);
250
256void DrawActual4x4(const DrawContext& ctx);
257
263void DrawWaterfall47(const DrawContext& ctx);
264
270void DrawWaterfall48(const DrawContext& ctx);
271
272// ============================================================================
273// SuperSquare Routines (Phase 4)
274// ============================================================================
275
285void Draw4x4BlocksIn4x4SuperSquare(const DrawContext& ctx);
286
295void Draw3x3FloorIn4x4SuperSquare(const DrawContext& ctx);
296
306void Draw4x4FloorIn4x4SuperSquare(const DrawContext& ctx);
307
316void Draw4x4FloorOneIn4x4SuperSquare(const DrawContext& ctx);
317
326void Draw4x4FloorTwoIn4x4SuperSquare(const DrawContext& ctx);
327
336void DrawBigHole4x4_1to16(const DrawContext& ctx);
337
346void DrawSpike2x2In4x4SuperSquare(const DrawContext& ctx);
347
356void DrawTableRock4x4_1to16(const DrawContext& ctx);
357
367void DrawWaterOverlay8x8_1to16(const DrawContext& ctx);
368
369// ============================================================================
370// Stair Routines (matching assembly)
371// ============================================================================
372
382void DrawInterRoomFatStairsUp(const DrawContext& ctx);
383
392void DrawInterRoomFatStairsDownA(const DrawContext& ctx);
393
401void DrawInterRoomFatStairsDownB(const DrawContext& ctx);
402
413void DrawSpiralStairs(const DrawContext& ctx, bool going_up, bool is_upper);
414
423void DrawAutoStairs(const DrawContext& ctx);
424
433void DrawStraightInterRoomStairs(const DrawContext& ctx);
434
435// ============================================================================
436// Interactive Object Routines
437// ============================================================================
438
448void DrawPrisonCell(const DrawContext& ctx);
449
459void DrawBigKeyLock(const DrawContext& ctx);
460
469void DrawBombableFloor(const DrawContext& ctx);
470
480void DrawMovingWallWest(const DrawContext& ctx);
481
490void DrawMovingWallEast(const DrawContext& ctx);
491
492// ============================================================================
493// Water Face Variants (based on room state)
494// ============================================================================
495
503void DrawEmptyWaterFace(const DrawContext& ctx);
504
512void DrawSpittingWaterFace(const DrawContext& ctx);
513
521void DrawDrenchingWaterFace(const DrawContext& ctx);
522
523// ============================================================================
524// Chest Platform Multi-Part Routines
525// ============================================================================
526
535void DrawClosedChestPlatform(const DrawContext& ctx);
536
544void DrawOpenChestPlatform(const DrawContext& ctx);
545
553void DrawChestPlatformHorizontalWall(const DrawContext& ctx);
554
562void DrawChestPlatformVerticalWall(const DrawContext& ctx);
563
569void RegisterSpecialRoutines(std::vector<DrawRoutineInfo>& registry);
570
571} // namespace draw_routines
572} // namespace zelda3
573} // namespace yaze
574
575#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 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 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)