sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

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