sm64

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

model_ids.h (35778B)


      1 #ifndef MODEL_IDS_H
      2 #define MODEL_IDS_H
      3 
      4 #define ACT_1 (1 << 0)
      5 #define ACT_2 (1 << 1)
      6 #define ACT_3 (1 << 2)
      7 #define ACT_4 (1 << 3)
      8 #define ACT_5 (1 << 4)
      9 #define ACT_6 (1 << 5)
     10 
     11 // If an object is set as active for the first 5 acts only, it is treated as always active.
     12 // It's possible that there were only planned to be 5 acts per level early in development.
     13 // Hence, they added a macro so they wouldn't have to change the acts for every object.
     14 #define ALL_ACTS_MACRO ACT_1 | ACT_2 | ACT_3 | ACT_4 | ACT_5
     15 #define ALL_ACTS       ACT_1 | ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6
     16 
     17 #define MODEL_NONE                        0x00
     18 
     19 /* Global models that are loaded for every level */
     20 
     21 #define MODEL_MARIO                       0x01        // mario_geo
     22 #define MODEL_LUIGI                       0x02        // unused
     23 
     24 /* Various static level geometry, the geo layout differs but terrain object presets treat them the same.*/
     25 
     26 #define MODEL_LEVEL_GEOMETRY_03                0x03
     27 #define MODEL_LEVEL_GEOMETRY_04                0x04
     28 #define MODEL_LEVEL_GEOMETRY_05                0x05
     29 #define MODEL_LEVEL_GEOMETRY_06                0x06
     30 #define MODEL_LEVEL_GEOMETRY_07                0x07
     31 #define MODEL_LEVEL_GEOMETRY_08                0x08
     32 #define MODEL_LEVEL_GEOMETRY_09                0x09
     33 #define MODEL_LEVEL_GEOMETRY_0A                0x0A
     34 #define MODEL_LEVEL_GEOMETRY_0B                0x0B
     35 #define MODEL_LEVEL_GEOMETRY_0C                0x0C
     36 #define MODEL_LEVEL_GEOMETRY_0D                0x0D
     37 #define MODEL_LEVEL_GEOMETRY_0E                0x0E
     38 #define MODEL_LEVEL_GEOMETRY_0F                0x0F
     39 #define MODEL_LEVEL_GEOMETRY_10                0x10
     40 #define MODEL_LEVEL_GEOMETRY_11                0x11
     41 #define MODEL_LEVEL_GEOMETRY_12                0x12
     42 #define MODEL_LEVEL_GEOMETRY_13                0x13
     43 #define MODEL_LEVEL_GEOMETRY_14                0x14
     44 #define MODEL_LEVEL_GEOMETRY_15                0x15
     45 #define MODEL_LEVEL_GEOMETRY_16                0x16
     46 
     47 #define MODEL_BOB_BUBBLY_TREE                  0x17        // bubbly_tree_geo
     48 #define MODEL_WDW_BUBBLY_TREE                  0x17        // bubbly_tree_geo
     49 #define MODEL_CASTLE_GROUNDS_BUBBLY_TREE       0x17        // bubbly_tree_geo
     50 #define MODEL_WF_BUBBLY_TREE                   0x17        // bubbly_tree_geo
     51 #define MODEL_THI_BUBBLY_TREE                  0x17        // bubbly_tree_geo
     52 #define MODEL_COURTYARD_SPIKY_TREE             0x18        // spiky_tree_geo
     53 #define MODEL_CCM_SNOW_TREE                    0x19        // snow_tree_geo
     54 #define MODEL_SL_SNOW_TREE                     0x19        // snow_tree_geo
     55 #define MODEL_UNKNOWN_TREE_1A                  0x1A        // referenced in special presets, undefined
     56 #define MODEL_SSL_PALM_TREE                    0x1B        // palm_tree_geo
     57 #define MODEL_CASTLE_CASTLE_DOOR_UNUSED        0x1C        // castle_door_geo - unused, original id
     58 #define MODEL_CASTLE_WOODEN_DOOR_UNUSED        0x1D        // wooden_door_geo - unused, original id
     59 #define MODEL_BBH_HAUNTED_DOOR                 0x1D        // haunted_door_geo
     60 #define MODEL_HMC_WOODEN_DOOR                  0x1D        // wooden_door_geo
     61 #define MODEL_UNKNOWN_DOOR_1E                  0x1E        // referenced in special presets, undefined
     62 #define MODEL_HMC_METAL_DOOR                   0x1F        // metal_door_geo
     63 #define MODEL_HMC_HAZY_MAZE_DOOR               0x20        // hazy_maze_door_geo
     64 #define MODEL_UNKNOWN_DOOR_21                  0x21        // referenced in special presets, undefined
     65 #define MODEL_CASTLE_DOOR_0_STARS              0x22        // castle_door_0_star_geo
     66 #define MODEL_CASTLE_DOOR_1_STAR               0x23        // castle_door_1_star_geo
     67 #define MODEL_CASTLE_DOOR_3_STARS              0x24        // castle_door_3_stars_geo
     68 #define MODEL_CASTLE_KEY_DOOR                  0x25        // key_door_geo
     69 #define MODEL_CASTLE_CASTLE_DOOR               0x26        // castle_door_geo - used duplicate
     70 #define MODEL_CASTLE_GROUNDS_CASTLE_DOOR       0x26        // castle_door_geo - used duplicate
     71 #define MODEL_CASTLE_WOODEN_DOOR               0x27        // wooden_door_geo
     72 #define MODEL_COURTYARD_WOODEN_DOOR            0x27        // wooden_door_geo
     73 #define MODEL_CCM_CABIN_DOOR                   0x27        // cabin_door_geo
     74 #define MODEL_UNKNOWN_DOOR_28                  0x28        // referenced in special presets, undefined
     75 #define MODEL_CASTLE_METAL_DOOR                0x29        // metal_door_geo
     76 #define MODEL_CASTLE_GROUNDS_METAL_DOOR        0x29        // metal_door_geo
     77 #define MODEL_UNKNOWN_DOOR_2A                  0x2A        // referenced in special presets, undefined
     78 #define MODEL_UNKNOWN_DOOR_2B                  0x2B        // referenced in special presets, undefined
     79 #define MODEL_WF_TOWER_TRAPEZOID_PLATORM       0x2C        // wf_geo_000AF8 - unused
     80 #define MODEL_WF_TOWER_SQUARE_PLATORM          0x2D        // wf_geo_000B10
     81 #define MODEL_WF_TOWER_SQUARE_PLATORM_UNUSED   0x2E        // wf_geo_000B38 - unused & duplicated
     82 #define MODEL_WF_TOWER_SQUARE_PLATORM_ELEVATOR 0x2F        // wf_geo_000B60 - elevator platorm
     83 
     84 // Level model IDs
     85 
     86 // bbh
     87 #define MODEL_BBH_STAIRCASE_STEP               0x35        // geo_bbh_0005B0
     88 #define MODEL_BBH_TILTING_FLOOR_PLATFORM       0x36        // geo_bbh_0005C8
     89 #define MODEL_BBH_TUMBLING_PLATFORM            0x37        // geo_bbh_0005E0
     90 #define MODEL_BBH_TUMBLING_PLATFORM_PART       0x38        // geo_bbh_0005F8
     91 #define MODEL_BBH_MOVING_BOOKSHELF             0x39        // geo_bbh_000610
     92 #define MODEL_BBH_MESH_ELEVATOR                0x3A        // geo_bbh_000628
     93 #define MODEL_BBH_MERRY_GO_ROUND               0x3B        // geo_bbh_000640
     94 #define MODEL_BBH_WOODEN_TOMB                  0x3C        // geo_bbh_000658
     95 
     96 // ccm
     97 #define MODEL_CCM_ROPEWAY_LIFT                 0x36        // ccm_geo_0003D0
     98 #define MODEL_CCM_SNOWMAN_HEAD                 0x37        // ccm_geo_00040C
     99 
    100 // castle
    101 #define MODEL_CASTLE_BOWSER_TRAP               0x35        // castle_geo_000F18
    102 #define MODEL_CASTLE_WATER_LEVEL_PILLAR        0x36        // castle_geo_001940
    103 #define MODEL_CASTLE_CLOCK_MINUTE_HAND         0x37        // castle_geo_001530
    104 #define MODEL_CASTLE_CLOCK_HOUR_HAND           0x38        // castle_geo_001548
    105 #define MODEL_CASTLE_CLOCK_PENDULUM            0x39        // castle_geo_001518
    106 
    107 // hmc
    108 #define MODEL_HMC_METAL_PLATFORM               0x36        // hmc_geo_0005A0
    109 #define MODEL_HMC_METAL_ARROW_PLATFORM         0x37        // hmc_geo_0005B8
    110 #define MODEL_HMC_ELEVATOR_PLATFORM            0x38        // hmc_geo_0005D0
    111 #define MODEL_HMC_ROLLING_ROCK                 0x39        // hmc_geo_000548
    112 #define MODEL_HMC_ROCK_PIECE                   0x3A        // hmc_geo_000570 - unused
    113 #define MODEL_HMC_ROCK_SMALL_PIECE             0x3B        // hmc_geo_000588 - unused
    114 #define MODEL_HMC_RED_GRILLS                   0x3C        // hmc_geo_000530
    115 
    116 // ssl
    117 #define MODEL_SSL_PYRAMID_TOP                  0x3A        // ssl_geo_000618
    118 #define MODEL_SSL_GRINDEL                      0x36        // ssl_geo_000734
    119 #define MODEL_SSL_SPINDEL                      0x37        // ssl_geo_000764
    120 #define MODEL_SSL_MOVING_PYRAMID_WALL          0x38        // ssl_geo_000794
    121 #define MODEL_SSL_PYRAMID_ELEVATOR             0x39        // ssl_geo_0007AC
    122 
    123 // bob
    124 #define MODEL_BOB_CHAIN_CHOMP_GATE             0x36        // bob_geo_000440
    125 #define MODEL_BOB_SEESAW_PLATFORM              0x37        // bob_geo_000458
    126 #define MODEL_BOB_BARS_GRILLS                  0x38        // bob_geo_000470
    127 
    128 // sl
    129 #define MODEL_SL_SNOW_TRIANGLE                 0x36        // sl_geo_000390
    130 #define MODEL_SL_CRACKED_ICE                   0x37        // sl_geo_000360 - unused
    131 #define MODEL_SL_CRACKED_ICE_CHUNK             0x38        // sl_geo_000378 - unused
    132 
    133 // wdw
    134 #define MODEL_WDW_SQUARE_FLOATING_PLATFORM        0x36        // wdw_geo_000580
    135 #define MODEL_WDW_ARROW_LIFT                      0x37        // wdw_geo_000598
    136 #define MODEL_WDW_WATER_LEVEL_DIAMOND             0x38        // wdw_geo_0005C0
    137 #define MODEL_WDW_HIDDEN_PLATFORM                 0x39        // wdw_geo_0005E8
    138 #define MODEL_WDW_EXPRESS_ELEVATOR                0x3A        // wdw_geo_000610
    139 #define MODEL_WDW_RECTANGULAR_FLOATING_PLATFORM   0x3B        // wdw_geo_000628
    140 #define MODEL_WDW_ROTATING_PLATFORM               0x3C        // wdw_geo_000640
    141 
    142 // jrb
    143 #define MODEL_JRB_SHIP_LEFT_HALF_PART             0x35        // jrb_geo_000978
    144 #define MODEL_JRB_SHIP_BACK_LEFT_PART             0x36        // jrb_geo_0009B0
    145 #define MODEL_JRB_SHIP_RIGHT_HALF_PART            0x37        // jrb_geo_0009E8
    146 #define MODEL_JRB_SHIP_BACK_RIGHT_PART            0x38        // jrb_geo_000A00
    147 #define MODEL_JRB_SUNKEN_SHIP                     0x39        // jrb_geo_000990
    148 #define MODEL_JRB_SUNKEN_SHIP_BACK                0x3A        // jrb_geo_0009C8
    149 #define MODEL_JRB_ROCK                            0x3B        // jrb_geo_000930
    150 #define MODEL_JRB_SLIDING_BOX                     0x3C        // jrb_geo_000960
    151 #define MODEL_JRB_FALLING_PILLAR                  0x3D        // jrb_geo_000900
    152 #define MODEL_JRB_FALLING_PILLAR_BASE             0x3E        // jrb_geo_000918
    153 #define MODEL_JRB_FLOATING_PLATFORM               0x3F        // jrb_geo_000948
    154 
    155 // thi
    156 #define MODEL_THI_HUGE_ISLAND_TOP                 0x36        // thi_geo_0005B0
    157 #define MODEL_THI_TINY_ISLAND_TOP                 0x37        // thi_geo_0005C8
    158 
    159 // ttc
    160 #define MODEL_TTC_ROTATING_CUBE                   0x36        // ttc_geo_000240
    161 #define MODEL_TTC_ROTATING_PRISM                  0x37        // ttc_geo_000258
    162 #define MODEL_TTC_PENDULUM                        0x38        // ttc_geo_000270
    163 #define MODEL_TTC_LARGE_TREADMILL                 0x39        // ttc_geo_000288
    164 #define MODEL_TTC_SMALL_TREADMILL                 0x3A        // ttc_geo_0002A8
    165 #define MODEL_TTC_PUSH_BLOCK                      0x3B        // ttc_geo_0002C8
    166 #define MODEL_TTC_ROTATING_HEXAGON                0x3C        // ttc_geo_0002E0
    167 #define MODEL_TTC_ROTATING_TRIANGLE               0x3D        // ttc_geo_0002F8
    168 #define MODEL_TTC_PIT_BLOCK                       0x3E        // ttc_geo_000310 - has 2 vertical stripes
    169 #define MODEL_TTC_PIT_BLOCK_UNUSED                0x3F        // ttc_geo_000328 - has 3 vertical stripes, unused
    170 #define MODEL_TTC_ELEVATOR_PLATFORM               0x40        // ttc_geo_000340
    171 #define MODEL_TTC_CLOCK_HAND                      0x41        // ttc_geo_000358
    172 #define MODEL_TTC_SPINNER                         0x42        // ttc_geo_000370
    173 #define MODEL_TTC_SMALL_GEAR                      0x43        // ttc_geo_000388
    174 #define MODEL_TTC_LARGE_GEAR                      0x44        // ttc_geo_0003A0
    175 
    176 // rr
    177 #define MODEL_RR_SLIDING_PLATFORM                 0x36        // rr_geo_0008C0
    178 #define MODEL_RR_FLYING_CARPET                    0x37        // rr_geo_000848
    179 #define MODEL_RR_OCTAGONAL_PLATFORM               0x38        // rr_geo_0008A8
    180 #define MODEL_RR_ROTATING_BRIDGE_PLATFORM         0x39        // rr_geo_000878
    181 #define MODEL_RR_TRIANGLE_PLATFORM                0x3A        // rr_geo_0008D8 - unused
    182 #define MODEL_RR_CRUISER_WING                     0x3B        // rr_geo_000890
    183 #define MODEL_RR_SEESAW_PLATFORM                  0x3C        // rr_geo_000908
    184 #define MODEL_RR_L_SHAPED_PLATFORM                0x3D        // rr_geo_000940 - unused
    185 #define MODEL_RR_SWINGING_PLATFORM                0x3E        // rr_geo_000860
    186 #define MODEL_RR_DONUT_PLATFORM                   0x3F        // rr_geo_000920
    187 #define MODEL_RR_ELEVATOR_PLATFORM                0x40        // rr_geo_0008F0
    188 #define MODEL_RR_TRICKY_TRIANGLES                 0x41        // rr_geo_000958
    189 #define MODEL_RR_TRICKY_TRIANGLES_FRAME1          0x42        // rr_geo_000970
    190 #define MODEL_RR_TRICKY_TRIANGLES_FRAME2          0x43        // rr_geo_000988
    191 #define MODEL_RR_TRICKY_TRIANGLES_FRAME3          0x44        // rr_geo_0009A0
    192 #define MODEL_RR_TRICKY_TRIANGLES_FRAME4          0x45        // rr_geo_0009B8
    193 
    194 // castle grounds
    195 
    196 // bitdw
    197 #define MODEL_BITDW_SQUARE_PLATFORM               0x36        // geo_bitdw_000558
    198 #define MODEL_BITDW_SEESAW_PLATFORM               0x37        // geo_bitdw_000540
    199 #define MODEL_BITDW_SLIDING_PLATFORM              0x38        // geo_bitdw_000528
    200 #define MODEL_BITDW_FERRIS_WHEEL_AXLE             0x39        // geo_bitdw_000570
    201 #define MODEL_BITDW_BLUE_PLATFORM                 0x3A        // geo_bitdw_000588
    202 #define MODEL_BITDW_STAIRCASE_FRAME4              0x3B        // geo_bitdw_0005A0
    203 #define MODEL_BITDW_STAIRCASE_FRAME3              0x3C        // geo_bitdw_0005B8
    204 #define MODEL_BITDW_STAIRCASE_FRAME2              0x3D        // geo_bitdw_0005D0
    205 #define MODEL_BITDW_STAIRCASE_FRAME1              0x3E        // geo_bitdw_0005E8
    206 #define MODEL_BITDW_STAIRCASE                     0x3F        // geo_bitdw_000600
    207 
    208 // vcutm
    209 #define MODEL_VCUTM_SEESAW_PLATFORM               0x36        // vcutm_geo_0001F0
    210 #define MODEL_VCUTM_CHECKERBOARD_PLATFORM_SPAWNER 0x37        //! @bug this object doesn't have a geo associated with it, yet is placed in vcutm.
    211                                                               //  This causes a crash when the player quickly looks towards the
    212                                                               //  checkerboard platforms after spawning but before it is unloaded.
    213 
    214 // bitfs
    215 #define MODEL_BITFS_PLATFORM_ON_TRACK             0x36        // bitfs_geo_000758
    216 #define MODEL_BITFS_TILTING_SQUARE_PLATFORM       0x37        // bitfs_geo_0006C0
    217 #define MODEL_BITFS_SINKING_PLATFORMS             0x38        // bitfs_geo_000770
    218 #define MODEL_BITFS_BLUE_POLE                     0x39        // bitfs_geo_0006A8
    219 #define MODEL_BITFS_SINKING_CAGE_PLATFORM         0x3A        // bitfs_geo_000690
    220 #define MODEL_BITFS_ELEVATOR                      0x3B        // bitfs_geo_000678
    221 #define MODEL_BITFS_STRETCHING_PLATFORMS          0x3C        // bitfs_geo_000708
    222 #define MODEL_BITFS_SEESAW_PLATFORM               0x3D        // bitfs_geo_000788
    223 #define MODEL_BITFS_MOVING_SQUARE_PLATFORM        0x3E        // bitfs_geo_000728
    224 #define MODEL_BITFS_SLIDING_PLATFORM              0x3F        // bitfs_geo_000740
    225 #define MODEL_BITFS_TUMBLING_PLATFORM_PART        0x40        // bitfs_geo_0006D8
    226 #define MODEL_BITFS_TUMBLING_PLATFORM             0x41        // bitfs_geo_0006F0
    227 
    228 // sa
    229 
    230 // bits
    231 #define MODEL_BITS_SLIDING_PLATFORM               0x36        // bits_geo_0005E0
    232 #define MODEL_BITS_TWIN_SLIDING_PLATFORMS         0x37        // bits_geo_0005F8
    233 #define MODEL_BITS_OCTAGONAL_PLATFORM             0x39        // bits_geo_000610
    234 #define MODEL_BITS_BLUE_PLATFORM                  0x3C        // bits_geo_000628
    235 #define MODEL_BITS_FERRIS_WHEEL_AXLE              0x3D        // bits_geo_000640
    236 #define MODEL_BITS_ARROW_PLATFORM                 0x3E        // bits_geo_000658
    237 #define MODEL_BITS_SEESAW_PLATFORM                0x3F        // bits_geo_000670
    238 #define MODEL_BITS_TILTING_W_PLATFORM             0x40        // bits_geo_000688
    239 #define MODEL_BITS_STAIRCASE                      0x41        // bits_geo_0006A0
    240 #define MODEL_BITS_STAIRCASE_FRAME1               0x42        // bits_geo_0006B8
    241 #define MODEL_BITS_STAIRCASE_FRAME2               0x43        // bits_geo_0006D0
    242 #define MODEL_BITS_STAIRCASE_FRAME3               0x44        // bits_geo_0006E8
    243 #define MODEL_BITS_STAIRCASE_FRAME4               0x45        // bits_geo_000700
    244 #define MODEL_BITS_WARP_PIPE                      0x49        // warp_pipe_geo
    245 
    246 // lll
    247 #define MODEL_LLL_DRAWBRIDGE_PART                 0x38        // lll_geo_000B20
    248 #define MODEL_LLL_ROTATING_BLOCK_FIRE_BARS        0x3A        // lll_geo_000B38
    249 #define MODEL_LLL_ROTATING_HEXAGONAL_RING         0x3E        // lll_geo_000BB0
    250 #define MODEL_LLL_SINKING_RECTANGULAR_PLATFORM    0x3F        // lll_geo_000BC8
    251 #define MODEL_LLL_SINKING_SQUARE_PLATFORMS        0x40        // lll_geo_000BE0
    252 #define MODEL_LLL_TILTING_SQUARE_PLATFORM         0x41        // lll_geo_000BF8
    253 #define MODEL_LLL_BOWSER_PIECE_1                  0x43        // lll_geo_000C10
    254 #define MODEL_LLL_BOWSER_PIECE_2                  0x44        // lll_geo_000C30
    255 #define MODEL_LLL_BOWSER_PIECE_3                  0x45        // lll_geo_000C50
    256 #define MODEL_LLL_BOWSER_PIECE_4                  0x46        // lll_geo_000C70
    257 #define MODEL_LLL_BOWSER_PIECE_5                  0x47        // lll_geo_000C90
    258 #define MODEL_LLL_BOWSER_PIECE_6                  0x48        // lll_geo_000CB0
    259 #define MODEL_LLL_BOWSER_PIECE_7                  0x49        // lll_geo_000CD0
    260 #define MODEL_LLL_BOWSER_PIECE_8                  0x4A        // lll_geo_000CF0
    261 #define MODEL_LLL_BOWSER_PIECE_9                  0x4B        // lll_geo_000D10
    262 #define MODEL_LLL_BOWSER_PIECE_10                 0x4C        // lll_geo_000D30
    263 #define MODEL_LLL_BOWSER_PIECE_11                 0x4D        // lll_geo_000D50
    264 #define MODEL_LLL_BOWSER_PIECE_12                 0x4E        // lll_geo_000D70
    265 #define MODEL_LLL_BOWSER_PIECE_13                 0x4F        // lll_geo_000D90
    266 #define MODEL_LLL_BOWSER_PIECE_14                 0x50        // lll_geo_000DB0
    267 #define MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM  0x36        // lll_geo_000B08
    268 #define MODEL_LLL_SINKING_ROCK_BLOCK              0x37        // lll_geo_000DD0
    269 #define MODEL_LLL_ROLLING_LOG                     0x39        // lll_geo_000DE8
    270 #define MODEL_LLL_WOOD_BRIDGE                     0x35        // lll_geo_000B50
    271 #define MODEL_LLL_LARGE_WOOD_BRIDGE               0x3B        // lll_geo_000B68
    272 #define MODEL_LLL_FALLING_PLATFORM                0x3C        // lll_geo_000B80
    273 #define MODEL_LLL_LARGE_FALLING_PLATFORM          0x3D        // lll_geo_000B98
    274 #define MODEL_LLL_VOLCANO_FALLING_TRAP            0x53        // lll_geo_000EA8
    275 
    276 // ddd
    277 #define MODEL_DDD_BOWSER_SUB_DOOR                 0x36        // ddd_geo_000478
    278 #define MODEL_DDD_BOWSER_SUB                      0x37        // ddd_geo_0004A0
    279 #define MODEL_DDD_POLE                            0x38        // ddd_geo_000450
    280 
    281 // wf
    282 #define MODEL_WF_BREAKABLE_WALL_RIGHT             0x36        // wf_geo_000B78
    283 #define MODEL_WF_BREAKABLE_WALL_LEFT              0x37        // wf_geo_000B90
    284 #define MODEL_WF_KICKABLE_BOARD                   0x38        // wf_geo_000BA8
    285 #define MODEL_WF_TOWER_DOOR                       0x39        // wf_geo_000BE0
    286 #define MODEL_WF_KICKABLE_BOARD_FELLED            0x3A        // wf_geo_000BC8
    287 
    288 // ending
    289 
    290 // castle grounds
    291 #define MODEL_CASTLE_GROUNDS_VCUTM_GRILL          0x36        // castle_grounds_geo_00070C
    292 #define MODEL_CASTLE_GROUNDS_FLAG                 0x37        // castle_grounds_geo_000660
    293 #define MODEL_CASTLE_GROUNDS_CANNON_GRILL         0x38        // castle_grounds_geo_000724
    294 
    295 // pss
    296 
    297 // cotmc
    298 
    299 // totwc
    300 
    301 // bowser 1
    302 
    303 // wmotr
    304 
    305 // bowser 2
    306 #define MODEL_BOWSER_2_TILTING_ARENA              0x36        // bowser_2_geo_000170
    307 
    308 // bowser 3
    309 #define MODEL_BOWSER_3_FALLING_PLATFORM_1         0x36        // bowser_3_geo_000290
    310 #define MODEL_BOWSER_3_FALLING_PLATFORM_2         0x37        // bowser_3_geo_0002A8
    311 #define MODEL_BOWSER_3_FALLING_PLATFORM_3         0x38        // bowser_3_geo_0002C0
    312 #define MODEL_BOWSER_3_FALLING_PLATFORM_4         0x39        // bowser_3_geo_0002D8
    313 #define MODEL_BOWSER_3_FALLING_PLATFORM_5         0x3A        // bowser_3_geo_0002F0
    314 #define MODEL_BOWSER_3_FALLING_PLATFORM_6         0x3B        // bowser_3_geo_000308
    315 #define MODEL_BOWSER_3_FALLING_PLATFORM_7         0x3C        // bowser_3_geo_000320
    316 #define MODEL_BOWSER_3_FALLING_PLATFORM_8         0x3D        // bowser_3_geo_000338
    317 #define MODEL_BOWSER_3_FALLING_PLATFORM_9         0x3E        // bowser_3_geo_000350
    318 #define MODEL_BOWSER_3_FALLING_PLATFORM_10        0x3F        // bowser_3_geo_000368
    319 
    320 // ttm
    321 #define MODEL_TTM_ROLLING_LOG                     0x35        // ttm_geo_000730
    322 #define MODEL_TTM_STAR_CAGE                       0x36        // ttm_geo_000710
    323 #define MODEL_TTM_BLUE_SMILEY                     0x37        // ttm_geo_000D14
    324 #define MODEL_TTM_YELLOW_SMILEY                   0x38        // ttm_geo_000D4C
    325 #define MODEL_TTM_STAR_SMILEY                     0x39        // ttm_geo_000D84
    326 #define MODEL_TTM_MOON_SMILEY                     0x3A        // ttm_geo_000DBC
    327 
    328 // actor model IDs
    329 
    330 // first set of actor bins (0x54-0x63)
    331 // group 1
    332 #define MODEL_BULLET_BILL                 0x54        // bullet_bill_geo
    333 #define MODEL_YELLOW_SPHERE               0x55        // yellow_sphere_geo
    334 #define MODEL_HOOT                        0x56        // hoot_geo
    335 #define MODEL_YOSHI_EGG                   0x57        // yoshi_egg_geo
    336 #define MODEL_THWOMP                      0x58        // thwomp_geo
    337 #define MODEL_HEAVE_HO                    0x59        // heave_ho_geo
    338 
    339 // group 2
    340 #define MODEL_BLARGG                      0x54        // blargg_geo
    341 #define MODEL_BULLY                       0x56        // bully_geo
    342 #define MODEL_BULLY_BOSS                  0x57        // bully_boss_geo
    343 
    344 // group 3
    345 #define MODEL_WATER_BOMB                  0x54        // water_bomb_geo
    346 #define MODEL_WATER_BOMB_SHADOW           0x55        // water_bomb_shadow_geo
    347 #define MODEL_KING_BOBOMB                 0x56        // king_bobomb_geo
    348 
    349 // group 4
    350 #define MODEL_MANTA_RAY                   0x54        // manta_seg5_geo_05008D14
    351 #define MODEL_UNAGI                       0x55        // unagi_geo
    352 #define MODEL_SUSHI                       0x56        // sushi_geo
    353 #define MODEL_DL_WHIRLPOOL                0x57        // whirlpool_seg5_dl_05013CB8
    354 #define MODEL_CLAM_SHELL                  0x58        // clam_shell_geo
    355 
    356 // group 5
    357 #define MODEL_POKEY_HEAD                  0x54        // pokey_head_geo
    358 #define MODEL_POKEY_BODY_PART             0x55        // pokey_body_part_geo
    359 #define MODEL_TWEESTER                    0x56        // tweester_geo
    360 #define MODEL_KLEPTO                      0x57        // klepto_geo
    361 #define MODEL_EYEROK_LEFT_HAND            0x58        // eyerok_left_hand_geo
    362 #define MODEL_EYEROK_RIGHT_HAND           0x59        // eyerok_right_hand_geo
    363 
    364 // group 6
    365 #define MODEL_DL_MONTY_MOLE_HOLE          0x54        // monty_mole_hole_seg5_dl_05000840
    366 #define MODEL_MONTY_MOLE                  0x55        // monty_mole_geo
    367 #define MODEL_UKIKI                       0x56        // ukiki_geo
    368 #define MODEL_FWOOSH                      0x57        // fwoosh_geo
    369 
    370 // group 7
    371 #define MODEL_SPINDRIFT                   0x54        // spindrift_geo
    372 #define MODEL_MR_BLIZZARD_HIDDEN          0x55        // mr_blizzard_hidden_geo
    373 #define MODEL_MR_BLIZZARD                 0x56        // mr_blizzard_geo
    374 #define MODEL_PENGUIN                     0x57        // penguin_geo
    375 
    376 // group 8
    377 #define MODEL_CAP_SWITCH_EXCLAMATION      0x54        // cap_switch_exclamation_seg5_dl_05002E00
    378 #define MODEL_CAP_SWITCH                  0x55        // cap_switch_geo
    379 #define MODEL_CAP_SWITCH_BASE             0x56        // cap_switch_base_seg5_dl_05003120
    380 
    381 // group 9
    382 #define MODEL_BOO                         0x54        // boo_geo
    383 #define MODEL_BETA_BOO_KEY                0x55        // small_key_geo
    384 #define MODEL_HAUNTED_CHAIR               0x56        // haunted_chair_geo
    385 #define MODEL_MAD_PIANO                   0x57        // mad_piano_geo
    386 #define MODEL_BOOKEND_PART                0x58        // bookend_part_geo
    387 #define MODEL_BOOKEND                     0x59        // bookend_geo
    388 #define MODEL_HAUNTED_CAGE                0x5A        // haunted_cage_geo
    389 
    390 // group 10
    391 #define MODEL_BIRDS                       0x54        // birds_geo
    392 #define MODEL_YOSHI                       0x55        // yoshi_geo
    393 
    394 // group 11
    395 #define MODEL_ENEMY_LAKITU                0x54        // enemy_lakitu_geo
    396 #define MODEL_SPINY_BALL                  0x55        // spiny_ball_geo
    397 #define MODEL_SPINY                       0x56        // spiny_geo
    398 #define MODEL_WIGGLER_HEAD                0x57        // wiggler_head_geo
    399 #define MODEL_WIGGLER_BODY                0x58        // wiggler_body_geo
    400 #define MODEL_BUBBA                       0x59        // bubba_geo
    401 
    402 // referenced in macro presets. Unknown usage.
    403 #define MODEL_UNKNOWN_54                  0x54
    404 #define MODEL_UNKNOWN_58                  0x58
    405 
    406 // second set of actor bins, (0x64-0x73)
    407 // group 12
    408 #define MODEL_BOWSER                      0x64        // bowser_geo
    409 #define MODEL_BOWSER_BOMB_CHILD_OBJ       0x65        // bowser_bomb_geo - Spawns as a chill object in bowser's behavior command, causing an explosion if it touches a bomb
    410 #define MODEL_BOWSER_SMOKE                0x66        // bowser_impact_smoke_geo
    411 #define MODEL_BOWSER_FLAMES               0x67        // bowser_flames_geo
    412 #define MODEL_BOWSER_WAVE                 0x68        // invisible_bowser_accessory_geo
    413 #define MODEL_BOWSER_NO_SHADOW            0x69        // bowser_geo_no_shadow
    414 
    415 // group 13
    416 #define MODEL_BUB                         0x64        // cheep_cheep_geo
    417 #define MODEL_TREASURE_CHEST_BASE         0x65        // treasure_chest_base_geo
    418 #define MODEL_TREASURE_CHEST_LID          0x66        // treasure_chest_lid_geo
    419 #define MODEL_CYAN_FISH                   0x67        // cyan_fish_geo
    420 #define MODEL_WATER_RING                  0x68        // water_ring_geo
    421 #define MODEL_SKEETER                     0x69        // skeeter_geo
    422 
    423 // group 14
    424 #define MODEL_PIRANHA_PLANT               0x64        // piranha_plant_geo
    425 #define MODEL_WHOMP                       0x67        // whomp_geo
    426 #define MODEL_KOOPA_WITH_SHELL            0x68        // koopa_with_shell_geo
    427 #define MODEL_METALLIC_BALL               0x65        // metallic_ball_geo
    428 #define MODEL_CHAIN_CHOMP                 0x66        // chain_chomp
    429 #define MODEL_KOOPA_FLAG                  0x6A        // koopa_flag_geo
    430 #define MODEL_WOODEN_POST                 0x6B        // wooden_post_geo
    431 
    432 // group 15
    433 #define MODEL_MIPS                        0x64        // mips_geo
    434 #define MODEL_BOO_CASTLE                  0x65        // boo_castle_geo
    435 #define MODEL_LAKITU                      0x66        // lakitu_geo
    436 
    437 // group 16
    438 #define MODEL_CHILL_BULLY                 0x64        // chilly_chief_geo
    439 #define MODEL_BIG_CHILL_BULLY             0x65        // chilly_chief_big_geo
    440 #define MODEL_MONEYBAG                    0x66        // moneybag_geo
    441 
    442 // group 17
    443 #define MODEL_SWOOP                       0x64        // swoop_geo
    444 #define MODEL_SCUTTLEBUG                  0x65        // scuttlebug_geo
    445 #define MODEL_MR_I_IRIS                   0x66        // mr_i_iris_geo
    446 #define MODEL_MR_I                        0x67        // mr_i_geo
    447 #define MODEL_DORRIE                      0x68        // dorrie_geo
    448 
    449 // other models
    450 #define MODEL_YELLOW_COIN                 0x74        // yellow_coin_geo
    451 #define MODEL_YELLOW_COIN_NO_SHADOW       0x75        // yellow_coin_no_shadow_geo
    452 #define MODEL_BLUE_COIN                   0x76        // blue_coin_geo
    453 #define MODEL_BLUE_COIN_NO_SHADOW         0x77        // blue_coin_no_shadow_geo
    454 #define MODEL_HEART                       0x78        // heart_geo
    455 #define MODEL_TRANSPARENT_STAR            0x79        // transparent_star_geo
    456 #define MODEL_STAR                        0x7A        // star_geo
    457 #define MODEL_TTM_SLIDE_EXIT_PODIUM       0x7B        // ttm_geo_000DF4
    458 #define MODEL_WOODEN_SIGNPOST             0x7C        // wooden_signpost_geo
    459 #define MODEL_UNKNOWN_7D                  0x7D        // referenced in macro presets. Unknown usage
    460 // find me
    461 #define MODEL_CANNON_BARREL               0x7F        // cannon_barrel_geo
    462 #define MODEL_CANNON_BASE                 0x80        // cannon_base_geo
    463 #define MODEL_BREAKABLE_BOX               0x81        // breakable_box_geo
    464 #define MODEL_BREAKABLE_BOX_SMALL         0x82        // breakable_box_small_geo
    465 #define MODEL_EXCLAMATION_BOX_OUTLINE     0x83        // exclamation_box_outline_geo
    466 #define MODEL_EXCLAMATION_POINT           0x84        // exclamation_point_seg8_dl_08025F08
    467 #define MODEL_MARIOS_WINGED_METAL_CAP     0x85        // marios_winged_metal_cap_geo
    468 #define MODEL_MARIOS_METAL_CAP            0x86        // marios_metal_cap_geo
    469 #define MODEL_MARIOS_WING_CAP             0x87        // marios_wing_cap_geo
    470 #define MODEL_MARIOS_CAP                  0x88        // marios_cap_geo
    471 #define MODEL_EXCLAMATION_BOX             0x89        // exclamation_box_geo
    472 #define MODEL_DIRT_ANIMATION              0x8A        // dirt_animation_geo
    473 #define MODEL_CARTOON_STAR                0x8B        // cartoon_star_geo
    474 #define MODEL_BLUE_COIN_SWITCH            0x8C        // blue_coin_switch_geo
    475 // find me
    476 #define MODEL_MIST                        0x8E        // mist_geo
    477 #define MODEL_SPARKLES_ANIMATION          0x8F        // sparkles_animation_geo
    478 #define MODEL_RED_FLAME                   0x90        // red_flame_geo
    479 #define MODEL_BLUE_FLAME                  0x91        // blue_flame_geo
    480 // find me
    481 // find me
    482 #define MODEL_BURN_SMOKE                  0x94        // burn_smoke_geo
    483 #define MODEL_SPARKLES                    0x95        // sparkles_geo
    484 #define MODEL_SMOKE                       0x96        // smoke_geo
    485 // find me
    486 // find me
    487 // find me
    488 // find me
    489 // find me
    490 #define MODEL_BURN_SMOKE_UNUSED           0x9C        // burn_smoke_geo - unused & duplicated
    491 // find me
    492 #define MODEL_WHITE_PARTICLE_DL           0x9E        // white_particle_dl
    493 #define MODEL_SAND_DUST                   0x9F        // sand_seg3_dl_0302BCD0
    494 #define MODEL_WHITE_PARTICLE              0xA0        // white_particle_dl
    495 #define MODEL_PEBBLE                      0xA1        // pebble_seg3_dl_0301CB00
    496 #define MODEL_LEAVES                      0xA2        // leaves_geo
    497 #define MODEL_WAVE_TRAIL                  0xA3        // wave_trail_geo
    498 #define MODEL_WHITE_PARTICLE_SMALL        0xA4        // white_particle_small_dl
    499 #define MODEL_SMALL_WATER_SPLASH          0xA5        // small_water_splash_geo
    500 #define MODEL_IDLE_WATER_WAVE             0xA6        // idle_water_wave_geo
    501 #define MODEL_WATER_SPLASH                0xA7        // water_splash_geo
    502 #define MODEL_BUBBLE                      0xA8        // bubble_geo
    503 // find me
    504 #define MODEL_PURPLE_MARBLE               0xAA        // purple_marble_geo
    505 // find me
    506 #define MODEL_UNKNOWN_AC                  0xAC        // according to an special preset, it was the original id of the castle floor trap
    507 #define MODEL_WF_SLIDING_PLATFORM         0xAD        // wf_geo_000A98
    508 #define MODEL_WF_SMALL_BOMP               0xAE        // wf_geo_000A00
    509 #define MODEL_WF_ROTATING_WOODEN_PLATFORM 0xAF        // wf_geo_000A58
    510 #define MODEL_WF_TUMBLING_BRIDGE_PART     0xB0        // wf_geo_000AB0
    511 #define MODEL_WF_LARGE_BOMP               0xB1        // wf_geo_000A40
    512 #define MODEL_WF_TUMBLING_BRIDGE          0xB2        // wf_geo_000AC8
    513 #define MODEL_BOWSER_BOMB                 0xB3        // bowser_bomb_geo
    514 #define MODEL_WATER_MINE                  0xB3        // water_mine_geo
    515 #define MODEL_BOWLING_BALL                0xB4        // bowling_ball_geo
    516 #define MODEL_TRAMPOLINE                  0xB5        // springboard_top_geo (unused)
    517 #define MODEL_TRAMPOLINE_CENTER           0xB6        // springboard_spring_geo (unused)
    518 #define MODEL_TRAMPOLINE_BASE             0xB7        // springboard_bottom_geo (unused)
    519 #define MODEL_UNKNOWN_B8                  0xB8        // referenced in special presets as a static object. Unknown usage
    520 #define MODEL_FISH                        0xB9        // fish_geo - fish without shadow, used
    521 #define MODEL_FISH_SHADOW                 0xBA        // fish_shadow_geo - fish with shadow, unused
    522 #define MODEL_BUTTERFLY                   0xBB        // butterfly_geo
    523 #define MODEL_BLACK_BOBOMB                0xBC        // black_bobomb_geo
    524 // find me
    525 #define MODEL_KOOPA_SHELL                 0xBE        // koopa_shell_geo
    526 #define MODEL_KOOPA_WITHOUT_SHELL         0xBF        // koopa_without_shell_geo
    527 #define MODEL_GOOMBA                      0xC0        // goomba_geo
    528 #define MODEL_SEAWEED                     0xC1        // seaweed_geo
    529 #define MODEL_AMP                         0xC2        // dAmpGeo
    530 #define MODEL_BOBOMB_BUDDY                0xC3        // bobomb_buddy_geo
    531 // find me
    532 // find me
    533 // find me
    534 #define MODEL_SSL_TOX_BOX                 0xC7        // ssl_geo_000630
    535 #define MODEL_BOWSER_KEY_CUTSCENE         0xC8        // bowser_key_cutscene_geo
    536 #define MODEL_DL_CANNON_LID               0xC9        // cannon_closed_seg8_dl_080048E0
    537 #define MODEL_CHECKERBOARD_PLATFORM       0xCA        // checkerboard_platform_geo
    538 #define MODEL_RED_FLAME_SHADOW            0xCB        // red_flame_shadow_geo
    539 #define MODEL_BOWSER_KEY                  0xCC        // bowser_key_geo
    540 #define MODEL_EXPLOSION                   0xCD        // explosion_geo
    541 #define MODEL_SNUFIT                      0xCE        // snufit_geo
    542 #define MODEL_PURPLE_SWITCH               0xCF        // purple_switch_geo
    543 #define MODEL_CASTLE_STAR_DOOR_30_STARS   0xD0        // castle_geo_000F00
    544 #define MODEL_CASTLE_STAR_DOOR_50_STARS   0xD1        // castle_geo_000F00
    545 #define MODEL_CCM_SNOWMAN_BASE            0xD2        // ccm_geo_0003F0
    546 // find me
    547 #define MODEL_1UP                         0xD4        // mushroom_1up_geo
    548 #define MODEL_CASTLE_STAR_DOOR_8_STARS    0xD5        // castle_geo_000F00
    549 #define MODEL_CASTLE_STAR_DOOR_70_STARS   0xD6        // castle_geo_000F00
    550 #define MODEL_RED_COIN                    0xD7        // red_coin_geo
    551 #define MODEL_RED_COIN_NO_SHADOW          0xD8        // red_coin_no_shadow_geo
    552 #define MODEL_METAL_BOX                   0xD9        // metal_box_geo
    553 #define MODEL_METAL_BOX_DL                0xDA        // metal_box_dl
    554 #define MODEL_NUMBER                      0xDB        // number_geo
    555 #define MODEL_FLYGUY                      0xDC        // shyguy_geo
    556 #define MODEL_TOAD                        0xDD        // toad_geo
    557 #define MODEL_PEACH                       0xDE        // peach_geo
    558 #define MODEL_CHUCKYA                     0xDF        // chuckya_geo
    559 #define MODEL_WHITE_PUFF                  0xE0        // white_puff_geo
    560 #define MODEL_TRAJECTORY_MARKER_BALL      0xE1        // bowling_ball_track_geo - duplicate used in SSL Pyramid small sized and as a track ball
    561 
    562 // Menu Models (overwrites Level Geometry IDs)
    563 #define MODEL_MAIN_MENU_MARIO_SAVE_BUTTON         MODEL_LEVEL_GEOMETRY_03   // main_menu_geo_0001D0
    564 #define MODEL_MAIN_MENU_RED_ERASE_BUTTON          MODEL_LEVEL_GEOMETRY_04   // main_menu_geo_000290
    565 #define MODEL_MAIN_MENU_BLUE_COPY_BUTTON          MODEL_LEVEL_GEOMETRY_05   // main_menu_geo_0002B8
    566 #define MODEL_MAIN_MENU_YELLOW_FILE_BUTTON        MODEL_LEVEL_GEOMETRY_06   // main_menu_geo_0002E0
    567 #define MODEL_MAIN_MENU_GREEN_SCORE_BUTTON        MODEL_LEVEL_GEOMETRY_07   // main_menu_geo_000308
    568 #define MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE    MODEL_LEVEL_GEOMETRY_08   // main_menu_geo_000200
    569 #define MODEL_MAIN_MENU_MARIO_NEW_BUTTON          MODEL_LEVEL_GEOMETRY_09   // main_menu_geo_000230
    570 #define MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE     MODEL_LEVEL_GEOMETRY_0A   // main_menu_geo_000260
    571 #define MODEL_MAIN_MENU_PURPLE_SOUND_BUTTON       MODEL_LEVEL_GEOMETRY_0B   // main_menu_geo_000330
    572 #define MODEL_MAIN_MENU_GENERIC_BUTTON            MODEL_LEVEL_GEOMETRY_0C   // main_menu_geo_000358
    573 
    574 // level model aliases to level geometry IDs. Possibly a relic from an older level
    575 // format that used to rely on level geometry objects. (seen in WF, LLL, etc)
    576 #define MODEL_LLL_ROTATING_HEXAGONAL_PLATFORM     MODEL_LEVEL_GEOMETRY_09   // lll_geo_000A78
    577 #define MODEL_WF_GIANT_POLE                       MODEL_LEVEL_GEOMETRY_0D   // wf_geo_000AE0
    578 #define MODEL_WF_ROTATING_PLATFORM                MODEL_LEVEL_GEOMETRY_10   // wf_geo_0009B8
    579 #define MODEL_BITDW_WARP_PIPE                     MODEL_LEVEL_GEOMETRY_12   // warp_pipe_geo
    580 #define MODEL_THI_WARP_PIPE                       MODEL_LEVEL_GEOMETRY_16   // warp_pipe_geo
    581 #define MODEL_VCUTM_WARP_PIPE                     MODEL_LEVEL_GEOMETRY_16   // warp_pipe_geo
    582 #define MODEL_CASTLE_GROUNDS_WARP_PIPE            MODEL_LEVEL_GEOMETRY_16   // warp_pipe_geo
    583 
    584 #endif // MODEL_IDS_H