sm64

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

special_presets.inc.c (11300B)


      1 #include "special_presets.h"
      2 
      3 // Special Preset types
      4 #define SPTYPE_NO_YROT_OR_PARAMS  0 // object is 8-bytes long, no y-rotation or any behavior params
      5 #define SPTYPE_YROT_NO_PARAMS     1 // object is 10-bytes long, has y-rotation but no params
      6 #define SPTYPE_PARAMS_AND_YROT    2 // object is 12-bytes long, has y-rotation and params
      7 #define SPTYPE_UNKNOWN            3 // object is 14-bytes long, has 3 extra shorts that get converted to floats.
      8 #define SPTYPE_DEF_PARAM_AND_YROT 4 // object is 10-bytes long, has y-rotation and uses the default param
      9 
     10 struct SpecialPreset {
     11     /* 0x00 */ u8  presetID;
     12     /* 0x01 */ u8  type;      // Determines whether object is 8, 10, 12 or 14 bytes long.
     13     /* 0x02 */ u8  defParam;  // Default parameter, only used when type is SPTYPE_DEF_PARAM_AND_YROT
     14     /* 0x03 */ u8  model;
     15     /* 0x04 */ const BehaviorScript *behavior;
     16 };
     17 
     18 // Some Models ID's are missing their names because they are probably unused
     19 
     20 static struct SpecialPreset sSpecialObjectPresets[] = {
     21     { special_null_start,                         SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_NONE, NULL },
     22     { special_yellow_coin,                        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_YELLOW_COIN, bhvYellowCoin },
     23     { special_yellow_coin_2,                      SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_YELLOW_COIN, bhvYellowCoin },
     24     { special_unknown_3,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_UNKNOWN_B8, bhvStaticObject },
     25     { special_boo,                                SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BOO, bhvCourtyardBooTriplet },
     26     { special_unknown_5,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_UNKNOWN_AC, bhvCastleFloorTrap },
     27     { special_lll_moving_octagonal_mesh_platform, SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM, bhvLLLMovingOctagonalMeshPlatform },
     28     { special_snow_ball,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_CCM_SNOWMAN_HEAD, bhvSnowBall },
     29     { special_lll_drawbridge_spawner,             SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LLL_DRAWBRIDGE_PART, bhvLLLDrawbridgeSpawner },
     30     { special_empty_9,                            SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },
     31     { special_lll_rotating_block_with_fire_bars,  SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_ROTATING_BLOCK_FIRE_BARS, bhvLLLRotatingBlockWithFireBars },
     32     { special_lll_floating_wood_bridge,           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvLLLFloatingWoodBridge },
     33     { special_tumbling_platform,                  SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvLLLTumblingBridge },
     34     { special_lll_rotating_hexagonal_ring,        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_ROTATING_HEXAGONAL_RING , bhvLLLRotatingHexagonalRing },
     35     { special_lll_sinking_rectangular_platform,   SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LLL_SINKING_RECTANGULAR_PLATFORM, bhvLLLSinkingRectangularPlatform },
     36     { special_lll_sinking_square_platforms,       SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_SINKING_SQUARE_PLATFORMS, bhvLLLSinkingSquarePlatforms },
     37     { special_lll_tilting_square_platform,        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_TILTING_SQUARE_PLATFORM, bhvLLLTiltingInvertedPyramid },
     38     { special_lll_bowser_puzzle,                  SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvLLLBowserPuzzle },
     39     { special_mr_i,                               SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvMrI },
     40     { special_small_bully,                        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BULLY, bhvSmallBully },
     41     { special_big_bully,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BULLY_BOSS, bhvBigBully },
     42     { special_empty_21,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },
     43     { special_empty_22,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },
     44     { special_empty_23,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },
     45     { special_empty_24,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },
     46     { special_empty_25,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },
     47     { special_moving_blue_coin,                   SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_YELLOW_COIN, bhvMovingBlueCoin },
     48     { special_jrb_chest,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_TREASURE_CHEST_BASE, bhvBetaChestBottom },
     49     { special_water_ring,                         SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WATER_RING, bhvJetStreamRingSpawner },
     50     { special_mine,                               SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WATER_MINE, bhvBowserBomb },
     51     { special_empty_30,                           SPTYPE_UNKNOWN,            0x00, MODEL_NONE, bhvStaticObject },
     52     { special_empty_31,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },
     53     { special_butterfly,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BUTTERFLY, bhvButterfly },
     54     { special_bowser,                             SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BOWSER, bhvBowser },
     55     { special_wf_rotating_wooden_platform,        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WF_ROTATING_WOODEN_PLATFORM, bhvWFRotatingWoodenPlatform },
     56     { special_small_bomp,                         SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_WF_SMALL_BOMP, bhvSmallBomp },
     57     { special_wf_sliding_platform,                SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_WF_SLIDING_PLATFORM, bhvWFSlidingPlatform },
     58     { special_tower_platform_group,               SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvTowerPlatformGroup },
     59     { special_rotating_counter_clockwise,         SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvRotatingCounterClockwise },
     60     { special_wf_tumbling_bridge,                 SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WF_TUMBLING_BRIDGE, bhvTumblingBridge },
     61     { special_large_bomp,                         SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WF_LARGE_BOMP, bhvLargeBomp },
     62     { special_level_geo_03,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_03, bhvStaticObject },
     63     { special_level_geo_04,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_04, bhvStaticObject },
     64     { special_level_geo_05,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_05, bhvStaticObject },
     65     { special_level_geo_06,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_06, bhvStaticObject },
     66     { special_level_geo_07,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_07, bhvStaticObject },
     67     { special_level_geo_08,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_08, bhvStaticObject },
     68     { special_level_geo_09,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_09, bhvStaticObject },
     69     { special_level_geo_0A,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0A, bhvStaticObject },
     70     { special_level_geo_0B,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0B, bhvStaticObject },
     71     { special_level_geo_0C,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0C, bhvStaticObject },
     72     { special_level_geo_0D,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0D, bhvStaticObject },
     73     { special_level_geo_0E,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0E, bhvStaticObject },
     74     { special_level_geo_0F,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0F, bhvStaticObject },
     75     { special_level_geo_10,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_10, bhvStaticObject },
     76     { special_level_geo_11,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_11, bhvStaticObject },
     77     { special_level_geo_12,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_12, bhvStaticObject },
     78     { special_level_geo_13,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_13, bhvStaticObject },
     79     { special_level_geo_14,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_14, bhvStaticObject },
     80     { special_level_geo_15,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_15, bhvStaticObject },
     81     { special_level_geo_16,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_16, bhvStaticObject },
     82     { special_bubble_tree,                        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BOB_BUBBLY_TREE, bhvTree },
     83     { special_spiky_tree,                         SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_COURTYARD_SPIKY_TREE, bhvTree },
     84     { special_snow_tree,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_CCM_SNOW_TREE, bhvTree },
     85     { special_unknown_tree,                       SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_UNKNOWN_TREE_1A, bhvTree },
     86     { special_palm_tree,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_SSL_PALM_TREE, bhvTree },
     87     { special_castle_door,                        SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_CASTLE_CASTLE_DOOR_UNUSED, bhvDoor },
     88     { special_wooden_door,                        SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_CASTLE_WOODEN_DOOR_UNUSED, bhvDoor },
     89     { special_unknown_door,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_UNKNOWN_DOOR_1E, bhvDoor },
     90     { special_metal_door,                         SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_HMC_METAL_DOOR, bhvDoor },
     91     { special_hmc_door,                           SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_HMC_HAZY_MAZE_DOOR, bhvDoor },
     92     { special_unknown2_door,                      SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_UNKNOWN_DOOR_21, bhvDoor },
     93     { special_0stars_door,                        SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_DOOR_0_STARS, bhvDoor },
     94     { special_1star_door,                         SPTYPE_DEF_PARAM_AND_YROT, 0x01, MODEL_CASTLE_DOOR_1_STAR, bhvDoor },
     95     { special_3star_door,                         SPTYPE_DEF_PARAM_AND_YROT, 0x03, MODEL_CASTLE_DOOR_3_STARS, bhvDoor },
     96     { special_key_door,                           SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_KEY_DOOR, bhvDoor },
     97     { special_castle_door_warp,                   SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_CASTLE_CASTLE_DOOR, bhvDoorWarp },
     98     { special_wooden_door_warp,                   SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_CASTLE_WOODEN_DOOR, bhvDoorWarp },
     99     { special_unknown1_door_warp,                 SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_UNKNOWN_DOOR_28, bhvDoorWarp },
    100     { special_metal_door_warp,                    SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_CASTLE_METAL_DOOR, bhvDoorWarp },
    101     { special_unknown2_door_warp,                 SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_UNKNOWN_DOOR_2A, bhvDoorWarp },
    102     { special_unknown3_door_warp,                 SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_UNKNOWN_DOOR_2B, bhvDoorWarp },
    103     { special_null_end,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, NULL },
    104 };