Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
special_presets.h
Go to the documentation of this file.
1 #ifndef _SPECIAL_PRESETS_H
2 #define _SPECIAL_PRESETS_H
3 
4 #include "special_preset_names.h"
5 #include "behavior_data.h"
6 #include "model_ids.h"
7 
8 // Special Preset types
9 #define SPTYPE_NO_YROT_OR_PARAMS 0 // object is 8-bytes long, no y-rotation or any behavior params
10 #define SPTYPE_YROT_NO_PARAMS 1 // object is 10-bytes long, has y-rotation but no params
11 #define SPTYPE_PARAMS_AND_YROT 2 // object is 12-bytes long, has y-rotation and params
12 #define SPTYPE_UNKNOWN 3 // object is 14-bytes long, has 3 extra shorts that get converted to floats.
13 #define SPTYPE_DEF_PARAM_AND_YROT 4 // object is 10-bytes long, has y-rotation and uses the default param
14 
16 {
17  /*00*/ u8 preset_id;
18  /*01*/ u8 type; // Determines whether object is 8, 10, 12 or 14 bytes long.
19  /*02*/ u8 defParam; // Default parameter, only used when type is SPTYPE_DEF_PARAM_AND_YROT
20  /*03*/ u8 model;
21  /*04*/ u32 *behavior;
22 };
23 
24 // Some Models ID's are missing their names because they are probably unused
25 
27 {
28  {0x00, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_NONE, NULL},
30  {0x02, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_YELLOW_COIN, bhvYellowCoin},
37  {0x09, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
49  {0x15, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
50  {0x16, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
51  {0x17, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
52  {0x18, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
53  {0x19, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
58  {0x1E, SPTYPE_UNKNOWN , 0x00, MODEL_NONE, bhvStaticObject},
59  {0x1F, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
69  {0x65, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_03, bhvStaticObject},
70  {0x66, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_04, bhvStaticObject},
71  {0x67, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_05, bhvStaticObject},
72  {0x68, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_06, bhvStaticObject},
73  {0x69, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_07, bhvStaticObject},
74  {0x6A, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_08, bhvStaticObject},
75  {0x6B, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_09, bhvStaticObject},
76  {0x6C, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0A, bhvStaticObject},
77  {0x6D, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0B, bhvStaticObject},
78  {0x6E, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0C, bhvStaticObject},
79  {0x6F, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0D, bhvStaticObject},
80  {0x70, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0E, bhvStaticObject},
81  {0x71, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0F, bhvStaticObject},
82  {0x72, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_10, bhvStaticObject},
83  {0x73, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_11, bhvStaticObject},
84  {0x74, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_12, bhvStaticObject},
85  {0x75, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_13, bhvStaticObject},
86  {0x76, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_14, bhvStaticObject},
87  {0x77, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_15, bhvStaticObject},
88  {0x78, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_16, bhvStaticObject},
91  {0x7B, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_CCM_SNOW_TREE, bhvTree},
92  {0x7C, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_UNKNOWN_TREE_1A, bhvTree},
93  {0x7D, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_SSL_PALM_TREE, bhvTree},
96  {0x7F, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_UNKNOWN_DOOR_1E, bhvDoor},
97  {0x80, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_HMC_METAL_DOOR, bhvDoor},
98  {0x81, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_HMC_HAZY_MAZE_DOOR, bhvDoor},
99  {0x82, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_UNKNOWN_DOOR_21, bhvDoor},
101  {0x8B, SPTYPE_DEF_PARAM_AND_YROT, 0x01, MODEL_CASTLE_DOOR_1_STAR, bhvDoor},
103  {0x8D, SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_KEY_DOOR, bhvDoor},
105  {0x83, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_CASTLE_WOODEN_DOOR, bhvDoorWarp},
106  {0x84, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_UNKNOWN_DOOR_28, bhvDoorWarp},
107  {0x85, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_CASTLE_METAL_DOOR, bhvDoorWarp},
108  {0x86, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_UNKNOWN_DOOR_2A, bhvDoorWarp},
109  {0x87, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_UNKNOWN_DOOR_2B, bhvDoorWarp},
110  {0xFF, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, NULL}
111 };
112 
113 #endif // _SPECIAL_PRESETS_H
#define MODEL_UNKNOWN_B8
Definition: model_ids.h:513
#define MODEL_LEVEL_GEOMETRY_12
Definition: model_ids.h:35
#define MODEL_UNKNOWN_DOOR_28
Definition: model_ids.h:68
#define MODEL_LLL_ROTATING_BLOCK_FIRE_BARS
Definition: model_ids.h:242
#define MODEL_COURTYARD_SPIKY_TREE
Definition: model_ids.h:46
u32 bhvSmallBully[]
u32 bhvWfSlidingPlatform[]
u32 * behavior
Definition: special_presets.h:21
#define MODEL_WATER_MINE
Definition: model_ids.h:508
u32 bhvYellowCoin[]
#define MODEL_LLL_TILTING_SQUARE_PLATFORM
Definition: model_ids.h:246
#define MODEL_LEVEL_GEOMETRY_05
Definition: model_ids.h:22
u32 bhvWfTumblingBridge[]
#define MODEL_UNKNOWN_DOOR_2A
Definition: model_ids.h:71
#define MODEL_CCM_SNOW_TREE
Definition: model_ids.h:47
#define MODEL_LEVEL_GEOMETRY_0F
Definition: model_ids.h:32
#define MODEL_CASTLE_CASTLE_DOOR
Definition: model_ids.h:63
u32 bhvLllDrawbridgeSpawner[]
#define MODEL_WF_TUMBLING_BRIDGE
Definition: model_ids.h:506
#define MODEL_LEVEL_GEOMETRY_14
Definition: model_ids.h:37
u32 bhvStaticObject[]
#define MODEL_CASTLE_DOOR_0_STARS
Definition: model_ids.h:59
u32 bhvBigBully[]
#define MODEL_CASTLE_METAL_DOOR
Definition: model_ids.h:69
#define MODEL_YELLOW_COIN
Definition: model_ids.h:444
#define MODEL_BULLY
Definition: model_ids.h:335
u8 defParam
Definition: special_presets.h:19
#define MODEL_WF_SMALL_BOMP
Definition: model_ids.h:502
#define MODEL_LLL_ROTATING_HEXAGONAL_RING
Definition: model_ids.h:243
#define MODEL_LEVEL_GEOMETRY_0D
Definition: model_ids.h:30
#define MODEL_LEVEL_GEOMETRY_0A
Definition: model_ids.h:27
#define SPTYPE_YROT_NO_PARAMS
Definition: special_presets.h:10
#define MODEL_WF_LARGE_BOMP
Definition: model_ids.h:505
u32 bhvMovingBlueCoin[]
u32 bhvLllSinkingRectangularPlatform[]
u32 bhvLllSinkingSquarePlatforms[]
#define MODEL_BOO
Definition: model_ids.h:376
#define MODEL_CASTLE_CASTLE_DOOR_UNUSED
Definition: model_ids.h:51
#define MODEL_UNKNOWN_AC
Definition: model_ids.h:500
#define MODEL_LEVEL_GEOMETRY_08
Definition: model_ids.h:25
#define MODEL_LEVEL_GEOMETRY_13
Definition: model_ids.h:36
#define MODEL_NONE
Definition: model_ids.h:11
#define MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM
Definition: model_ids.h:261
#define MODEL_LLL_SINKING_SQUARE_PLATFORMS
Definition: model_ids.h:245
u32 bhvTree[]
u32 bhvWfRotatingWoodenPlatform[]
#define MODEL_CASTLE_KEY_DOOR
Definition: model_ids.h:62
#define MODEL_UNKNOWN_DOOR_1E
Definition: model_ids.h:55
u32 bhvMrI[]
#define MODEL_LEVEL_GEOMETRY_03
Definition: model_ids.h:20
#define MODEL_UNKNOWN_DOOR_2B
Definition: model_ids.h:72
#define MODEL_BOWSER
Definition: model_ids.h:402
#define MODEL_LEVEL_GEOMETRY_09
Definition: model_ids.h:26
u32 bhvLllTiltingSquarePlatform[]
#define MODEL_BOB_BUBBLY_TREE
Definition: model_ids.h:41
u32 bhvLllRotatingBlockWithFireBars[]
u8 model
Definition: special_presets.h:20
#define MODEL_BULLY_BOSS
Definition: model_ids.h:336
u8 type
Definition: special_presets.h:18
#define MODEL_LEVEL_GEOMETRY_0E
Definition: model_ids.h:31
u32 bhvCastleFloorTrap[]
#define MODEL_CASTLE_DOOR_1_STAR
Definition: model_ids.h:60
u32 bhvLllFloatingWoodBridge[]
#define MODEL_WF_ROTATING_WOODEN_PLATFORM
Definition: model_ids.h:503
#define MODEL_CCM_SNOWMAN_HEAD
Definition: model_ids.h:92
#define MODEL_BUTTERFLY
Definition: model_ids.h:516
u32 bhvLllRotatingHexagonalRing[]
#define MODEL_UNKNOWN_TREE_1A
Definition: model_ids.h:49
#define SPTYPE_PARAMS_AND_YROT
Definition: special_presets.h:11
u32 bhvJetStreamRingSpawner[]
#define MODEL_TREASURE_CHEST_BASE
Definition: model_ids.h:411
#define SPTYPE_UNKNOWN
Definition: special_presets.h:12
#define MODEL_WATER_RING
Definition: model_ids.h:414
#define SPTYPE_DEF_PARAM_AND_YROT
Definition: special_presets.h:13
#define MODEL_LLL_SINKING_RECTANGULAR_PLATFORM
Definition: model_ids.h:244
#define MODEL_CASTLE_WOODEN_DOOR
Definition: model_ids.h:65
#define MODEL_LEVEL_GEOMETRY_11
Definition: model_ids.h:34
u32 bhvLargeBomp[]
u32 bhvDoorWarp[]
u32 bhvBetaChestBottom[]
unsigned char u8
Definition: ultratypes.h:12
static struct SpecialPreset SpecialObjectPresets[]
Definition: special_presets.h:26
Definition: special_presets.h:15
u32 bhvLllMovingOctagonalMeshPlatform[]
#define MODEL_LEVEL_GEOMETRY_16
Definition: model_ids.h:39
#define SPTYPE_NO_YROT_OR_PARAMS
Definition: special_presets.h:9
#define MODEL_LLL_DRAWBRIDGE_PART
Definition: model_ids.h:241
u32 bhvButterfly[]
#define MODEL_LEVEL_GEOMETRY_10
Definition: model_ids.h:33
u32 bhvSnowBall[]
u32 bhvLllBowserPuzzle[]
#define NULL
Definition: mbi.h:101
#define MODEL_SSL_PALM_TREE
Definition: model_ids.h:50
#define MODEL_LEVEL_GEOMETRY_0B
Definition: model_ids.h:28
#define MODEL_LEVEL_GEOMETRY_04
Definition: model_ids.h:21
#define MODEL_LEVEL_GEOMETRY_07
Definition: model_ids.h:24
u32 bhvCourtyardBooTriplet[]
u32 bhvTowerPlatformGroup[]
#define MODEL_HMC_HAZY_MAZE_DOOR
Definition: model_ids.h:57
#define MODEL_HMC_METAL_DOOR
Definition: model_ids.h:56
#define MODEL_WF_SLIDING_PLATFORM
Definition: model_ids.h:501
#define MODEL_LEVEL_GEOMETRY_0C
Definition: model_ids.h:29
unsigned int u32
Definition: ultratypes.h:16
#define MODEL_LEVEL_GEOMETRY_06
Definition: model_ids.h:23
u32 bhvBowserBomb[]
#define MODEL_LEVEL_GEOMETRY_15
Definition: model_ids.h:38
u32 bhvDoor[]
#define MODEL_CASTLE_WOODEN_DOOR_UNUSED
Definition: model_ids.h:52
#define MODEL_UNKNOWN_DOOR_21
Definition: model_ids.h:58
u8 preset_id
Definition: special_presets.h:17
#define MODEL_CASTLE_DOOR_3_STARS
Definition: model_ids.h:61
u32 bhvSmallBomp[]
u32 bhvLllTumblingBridge[]
u32 bhvBowser[]
u32 bhvRotatingCounterClockwise[]