moving_texture.h (6273B)
1 #ifndef MOVING_TEXTURE_H 2 #define MOVING_TEXTURE_H 3 4 #include <PR/ultratypes.h> 5 6 #include "macros.h" 7 #include "types.h" 8 9 #define ROTATE_CLOCKWISE 0 10 #define ROTATE_COUNTER_CLOCKWISE 1 11 12 /// Ids for textures used for moving textures 13 enum MovtexRectTextureId { 14 TEXTURE_WATER, 15 TEXTURE_MIST, 16 TEXTURE_JRB_WATER, 17 TEXTURE_UNK_WATER, 18 TEXTURE_LAVA, 19 TEX_QUICKSAND_SSL, 20 TEX_PYRAMID_SAND_SSL, 21 TEX_YELLOW_TRI_TTC 22 }; 23 24 /** 25 * Contains an id and an array of MovtexQuad structs. 26 */ 27 struct MovtexQuadCollection { 28 /// identifier for geo nodes to refer to this MovtexQuad collection 29 s16 id; 30 /// points to a short 'n' followed by an array of n MovtexQuad structs 31 Movtex *quadArraySegmented; 32 }; 33 34 extern f32 gPaintingMarioYEntry; 35 36 // Moving texture mesh ids have for bits 8-16 a course identifier. 37 // This corresponds to the numbers used in debug level select, except they are 38 // re-interpreted as hexadecimal numbers. TTM is course 36, so the id is 0x36 39 // and the first water quad collection in TTM has id 0x3601. 40 #define MOVTEX_AREA_BBH (0x04 << 8) 41 #define MOVTEX_AREA_CCM (0x05 << 8) 42 #define MOVTEX_AREA_INSIDE_CASTLE (0x06 << 8) 43 #define MOVTEX_AREA_HMC (0x07 << 8) 44 #define MOVTEX_AREA_SSL (0x08 << 8) 45 #define MOVTEX_AREA_SL (0x10 << 8) 46 #define MOVTEX_AREA_WDW (0x11 << 8) 47 #define MOVTEX_AREA_JRB (0x12 << 8) 48 #define MOVTEX_AREA_THI (0x13 << 8) 49 #define MOVTEX_AREA_TTC (0x14 << 8) 50 #define MOVTEX_AREA_CASTLE_GROUNDS (0x16 << 8) 51 #define MOVTEX_AREA_BITFS (0x19 << 8) 52 #define MOVTEX_AREA_LLL (0x22 << 8) 53 #define MOVTEX_AREA_DDD (0x23 << 8) 54 #define MOVTEX_AREA_WF (0x24 << 8) 55 #define MOVTEX_AREA_CASTLE_COURTYARD (0x26 << 8) 56 #define MOVTEX_AREA_COTMC (0x28 << 8) 57 #define MOVTEX_AREA_TTM (0x36 << 8) 58 59 // Quad collections 60 #define BBH_MOVTEX_MERRY_GO_ROUND_WATER_ENTRANCE ( 0 | MOVTEX_AREA_BBH) 61 #define BBH_MOVTEX_MERRY_GO_ROUND_WATER_SIDE ( 1 | MOVTEX_AREA_BBH) 62 #define CCM_MOVTEX_PENGUIN_PUDDLE_WATER ( 1 | MOVTEX_AREA_CCM) 63 #define INSIDE_CASTLE_MOVTEX_GREEN_ROOM_WATER ( 0 | MOVTEX_AREA_INSIDE_CASTLE) 64 #define INSIDE_CASTLE_MOVTEX_MOAT_WATER (0x12 | MOVTEX_AREA_INSIDE_CASTLE) 65 #define HMC_MOVTEX_DORRIE_POOL_WATER ( 1 | MOVTEX_AREA_HMC) 66 #define HMC_MOVTEX_TOXIC_MAZE_MIST ( 2 | MOVTEX_AREA_HMC) 67 #define SSL_MOVTEX_PUDDLE_WATER ( 1 | MOVTEX_AREA_SSL) 68 #define SSL_MOVTEX_TOXBOX_QUICKSAND_MIST (0x51 | MOVTEX_AREA_SSL) 69 #define SL_MOVTEX_WATER ( 1 | MOVTEX_AREA_SL) 70 #define WDW_MOVTEX_AREA1_WATER ( 1 | MOVTEX_AREA_WDW) 71 #define WDW_MOVTEX_AREA2_WATER ( 2 | MOVTEX_AREA_WDW) 72 #define JRB_MOVTEX_WATER ( 1 | MOVTEX_AREA_JRB) 73 #define JRB_MOVTEX_INITIAL_MIST ( 5 | MOVTEX_AREA_JRB) 74 #define JRB_MOVTEX_SUNKEN_SHIP_WATER ( 2 | MOVTEX_AREA_JRB) 75 #define THI_MOVTEX_AREA1_WATER ( 1 | MOVTEX_AREA_THI) 76 #define THI_MOVTEX_AREA2_WATER ( 2 | MOVTEX_AREA_THI) 77 #define CASTLE_GROUNDS_MOVTEX_WATER ( 1 | MOVTEX_AREA_CASTLE_GROUNDS) 78 #define LLL_MOVTEX_VOLCANO_FLOOR_LAVA ( 2 | MOVTEX_AREA_LLL) 79 #define DDD_MOVTEX_AREA1_WATER ( 1 | MOVTEX_AREA_DDD) 80 #define DDD_MOVTEX_AREA2_WATER ( 2 | MOVTEX_AREA_DDD) 81 #define WF_MOVTEX_WATER ( 1 | MOVTEX_AREA_WF) 82 #define CASTLE_COURTYARD_MOVTEX_STAR_STATUE_WATER ( 1 | MOVTEX_AREA_CASTLE_COURTYARD) 83 #define TTM_MOVTEX_PUDDLE ( 1 | MOVTEX_AREA_TTM) 84 85 // Non-colored, unique movtex meshes (drawn in level geo) 86 #define MOVTEX_PYRAMID_SAND_PATHWAY_FRONT (1 | MOVTEX_AREA_SSL) 87 #define MOVTEX_PYRAMID_SAND_PATHWAY_FLOOR (2 | MOVTEX_AREA_SSL) 88 #define MOVTEX_PYRAMID_SAND_PATHWAY_SIDE (3 | MOVTEX_AREA_SSL) 89 #define MOVTEX_CASTLE_WATERFALL (1 | MOVTEX_AREA_CASTLE_GROUNDS) 90 #define MOVTEX_BITFS_LAVA_FIRST (1 | MOVTEX_AREA_BITFS) 91 #define MOVTEX_BITFS_LAVA_SECOND (2 | MOVTEX_AREA_BITFS) 92 #define MOVTEX_BITFS_LAVA_FLOOR (3 | MOVTEX_AREA_BITFS) 93 #define MOVTEX_LLL_LAVA_FLOOR (1 | MOVTEX_AREA_LLL) 94 #define MOVTEX_VOLCANO_LAVA_FALL (2 | MOVTEX_AREA_LLL) 95 #define MOVTEX_COTMC_WATER (1 | MOVTEX_AREA_COTMC) 96 #define MOVTEX_TTM_BEGIN_WATERFALL (1 | MOVTEX_AREA_TTM) 97 #define MOVTEX_TTM_END_WATERFALL (2 | MOVTEX_AREA_TTM) 98 #define MOVTEX_TTM_BEGIN_PUDDLE_WATERFALL (3 | MOVTEX_AREA_TTM) 99 #define MOVTEX_TTM_END_PUDDLE_WATERFALL (4 | MOVTEX_AREA_TTM) 100 #define MOVTEX_TTM_PUDDLE_WATERFALL (5 | MOVTEX_AREA_TTM) 101 102 // Colored, unique movtex meshes (drawn in level geo) 103 #define MOVTEX_SSL_PYRAMID_SIDE (1 | MOVTEX_AREA_SSL) 104 #define MOVTEX_SSL_PYRAMID_CORNER (2 | MOVTEX_AREA_SSL) 105 #define MOVTEX_SSL_COURSE_EDGE (3 | MOVTEX_AREA_SSL) 106 107 // Shared movtex meshes (drawn in object geo) 108 #define MOVTEX_SSL_SAND_PIT_OUTSIDE (1 | MOVTEX_AREA_SSL) 109 #define MOVTEX_SSL_SAND_PIT_PYRAMID (2 | MOVTEX_AREA_SSL) 110 #define MOVTEX_TREADMILL_BIG (0 | MOVTEX_AREA_TTC) 111 #define MOVTEX_TREADMILL_SMALL (1 | MOVTEX_AREA_TTC) 112 113 Gfx *geo_wdw_set_initial_water_level(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 mtx); 114 Gfx *geo_movtex_pause_control(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 mtx); 115 Gfx *geo_movtex_draw_water_regions(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx); 116 Gfx *geo_movtex_draw_nocolor(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx); 117 Gfx *geo_movtex_draw_colored(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx); 118 Gfx *geo_movtex_draw_colored_no_update(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx); 119 Gfx *geo_movtex_draw_colored_2_no_update(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx); 120 Gfx *geo_movtex_update_horizontal(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx); 121 Gfx *geo_movtex_draw_colored_no_update(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx); 122 123 #endif // MOVING_TEXTURE_H