sm64

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

scripts.c (17033B)


      1 #include <ultra64.h>
      2 #include "sm64.h"
      3 #include "game/level_update.h"
      4 #include "level_commands.h"
      5 #include "game/area.h"
      6 
      7 #include "make_const_nonconst.h"
      8 
      9 #include "segment_symbols.h"
     10 
     11 #include "actors/common0.h"
     12 #include "actors/common1.h"
     13 #include "actors/group0.h"
     14 #include "actors/group1.h"
     15 #include "actors/group2.h"
     16 #include "actors/group3.h"
     17 #include "actors/group4.h"
     18 #include "actors/group5.h"
     19 #include "actors/group6.h"
     20 #include "actors/group7.h"
     21 #include "actors/group8.h"
     22 #include "actors/group9.h"
     23 #include "actors/group10.h"
     24 #include "actors/group11.h"
     25 #include "actors/group12.h"
     26 #include "actors/group13.h"
     27 #include "actors/group14.h"
     28 #include "actors/group15.h"
     29 #include "actors/group16.h"
     30 #include "actors/group17.h"
     31 
     32 #include "levels/menu/header.h"
     33 #include "levels/intro/header.h"
     34 
     35 #include "level_headers.h"
     36 
     37 #include "level_table.h"
     38 
     39 #define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
     40 #define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) + 3
     41 static const LevelScript script_exec_level_table[2
     42   #include "level_defines.h"
     43 ];
     44 #undef DEFINE_LEVEL
     45 #undef STUB_LEVEL
     46 
     47 static const LevelScript script_L1[4];
     48 static const LevelScript script_L2[4];
     49 static const LevelScript goto_mario_head_regular[4];
     50 static const LevelScript goto_mario_head_dizzy[4];
     51 static const LevelScript script_L5[4];
     52 
     53 #define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
     54 #define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) static const LevelScript script_exec_ ## folder [4 + 1];
     55 
     56 #include "level_defines.h"
     57 
     58 #undef DEFINE_LEVEL
     59 #undef STUB_LEVEL
     60 
     61 const LevelScript level_main_scripts_entry[] = {
     62     LOAD_MIO0(/*seg*/ 0x04, _group0_mio0SegmentRomStart, _group0_mio0SegmentRomEnd),
     63     LOAD_MIO0(/*seg*/ 0x03, _common1_mio0SegmentRomStart, _common1_mio0SegmentRomEnd),
     64     LOAD_RAW (/*seg*/ 0x17, _group0_geoSegmentRomStart, _group0_geoSegmentRomEnd),
     65     LOAD_RAW (/*seg*/ 0x16, _common1_geoSegmentRomStart, _common1_geoSegmentRomEnd),
     66     LOAD_RAW (/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),
     67     ALLOC_LEVEL_POOL(),
     68     LOAD_MODEL_FROM_GEO(MODEL_MARIO,                   mario_geo),
     69     LOAD_MODEL_FROM_GEO(MODEL_SMOKE,                   smoke_geo),
     70     LOAD_MODEL_FROM_GEO(MODEL_SPARKLES,                sparkles_geo),
     71     LOAD_MODEL_FROM_GEO(MODEL_BUBBLE,                  bubble_geo),
     72     LOAD_MODEL_FROM_GEO(MODEL_SMALL_WATER_SPLASH,      small_water_splash_geo),
     73     LOAD_MODEL_FROM_GEO(MODEL_IDLE_WATER_WAVE,         idle_water_wave_geo),
     74     LOAD_MODEL_FROM_GEO(MODEL_WATER_SPLASH,            water_splash_geo),
     75     LOAD_MODEL_FROM_GEO(MODEL_WAVE_TRAIL,              wave_trail_geo),
     76     LOAD_MODEL_FROM_GEO(MODEL_YELLOW_COIN,             yellow_coin_geo),
     77     LOAD_MODEL_FROM_GEO(MODEL_STAR,                    star_geo),
     78     LOAD_MODEL_FROM_GEO(MODEL_TRANSPARENT_STAR,        transparent_star_geo),
     79     LOAD_MODEL_FROM_GEO(MODEL_WOODEN_SIGNPOST,         wooden_signpost_geo),
     80     LOAD_MODEL_FROM_DL (MODEL_WHITE_PARTICLE_SMALL,    white_particle_small_dl, LAYER_ALPHA),
     81     LOAD_MODEL_FROM_GEO(MODEL_RED_FLAME,               red_flame_geo),
     82     LOAD_MODEL_FROM_GEO(MODEL_BLUE_FLAME,              blue_flame_geo),
     83     LOAD_MODEL_FROM_GEO(MODEL_BURN_SMOKE,              burn_smoke_geo),
     84     LOAD_MODEL_FROM_GEO(MODEL_LEAVES,                  leaves_geo),
     85     LOAD_MODEL_FROM_GEO(MODEL_PURPLE_MARBLE,           purple_marble_geo),
     86     LOAD_MODEL_FROM_GEO(MODEL_FISH,                    fish_geo),
     87     LOAD_MODEL_FROM_GEO(MODEL_FISH_SHADOW,             fish_shadow_geo),
     88     LOAD_MODEL_FROM_GEO(MODEL_SPARKLES_ANIMATION,      sparkles_animation_geo),
     89     LOAD_MODEL_FROM_DL (MODEL_SAND_DUST,               sand_seg3_dl_0302BCD0,   LAYER_ALPHA),
     90     LOAD_MODEL_FROM_GEO(MODEL_BUTTERFLY,               butterfly_geo),
     91     LOAD_MODEL_FROM_GEO(MODEL_BURN_SMOKE_UNUSED,       burn_smoke_geo),
     92     LOAD_MODEL_FROM_DL (MODEL_PEBBLE,                  pebble_seg3_dl_0301CB00, LAYER_ALPHA),
     93     LOAD_MODEL_FROM_GEO(MODEL_MIST,                    mist_geo),
     94     LOAD_MODEL_FROM_GEO(MODEL_WHITE_PUFF,              white_puff_geo),
     95     LOAD_MODEL_FROM_DL (MODEL_WHITE_PARTICLE_DL,       white_particle_dl,       LAYER_ALPHA),
     96     LOAD_MODEL_FROM_GEO(MODEL_WHITE_PARTICLE,          white_particle_geo),
     97     LOAD_MODEL_FROM_GEO(MODEL_YELLOW_COIN_NO_SHADOW,   yellow_coin_no_shadow_geo),
     98     LOAD_MODEL_FROM_GEO(MODEL_BLUE_COIN,               blue_coin_geo),
     99     LOAD_MODEL_FROM_GEO(MODEL_BLUE_COIN_NO_SHADOW,     blue_coin_no_shadow_geo),
    100     LOAD_MODEL_FROM_GEO(MODEL_MARIOS_WINGED_METAL_CAP, marios_winged_metal_cap_geo),
    101     LOAD_MODEL_FROM_GEO(MODEL_MARIOS_METAL_CAP,        marios_metal_cap_geo),
    102     LOAD_MODEL_FROM_GEO(MODEL_MARIOS_WING_CAP,         marios_wing_cap_geo),
    103     LOAD_MODEL_FROM_GEO(MODEL_MARIOS_CAP,              marios_cap_geo),
    104     LOAD_MODEL_FROM_GEO(MODEL_MARIOS_CAP,              marios_cap_geo), // repeated
    105     LOAD_MODEL_FROM_GEO(MODEL_BOWSER_KEY_CUTSCENE,     bowser_key_cutscene_geo),
    106     LOAD_MODEL_FROM_GEO(MODEL_BOWSER_KEY,              bowser_key_geo),
    107     LOAD_MODEL_FROM_GEO(MODEL_RED_FLAME_SHADOW,        red_flame_shadow_geo),
    108     LOAD_MODEL_FROM_GEO(MODEL_1UP,                     mushroom_1up_geo),
    109     LOAD_MODEL_FROM_GEO(MODEL_RED_COIN,                red_coin_geo),
    110     LOAD_MODEL_FROM_GEO(MODEL_RED_COIN_NO_SHADOW,      red_coin_no_shadow_geo),
    111     LOAD_MODEL_FROM_GEO(MODEL_NUMBER,                  number_geo),
    112     LOAD_MODEL_FROM_GEO(MODEL_EXPLOSION,               explosion_geo),
    113     LOAD_MODEL_FROM_GEO(MODEL_DIRT_ANIMATION,          dirt_animation_geo),
    114     LOAD_MODEL_FROM_GEO(MODEL_CARTOON_STAR,            cartoon_star_geo),
    115     FREE_LEVEL_POOL(),
    116     CALL(/*arg*/ 0, /*func*/ lvl_init_from_save_file),
    117     LOOP_BEGIN(),
    118         EXECUTE(/*seg*/ 0x14, _menuSegmentRomStart, _menuSegmentRomEnd, level_main_menu_entry_2),
    119         JUMP_LINK(script_exec_level_table),
    120         SLEEP(/*frames*/ 1),
    121     LOOP_UNTIL(/*op*/ OP_LT, /*arg*/ 0),
    122     JUMP_IF(/*op*/ OP_EQ, /*arg*/ -1, script_L2),
    123     JUMP_IF(/*op*/ OP_EQ, /*arg*/ -2, goto_mario_head_regular),
    124     JUMP_IF(/*op*/ OP_EQ, /*arg*/ -3, goto_mario_head_dizzy),
    125     JUMP_IF(/*op*/ OP_EQ, /*arg*/ -8, script_L1),
    126     JUMP_IF(/*op*/ OP_EQ, /*arg*/ -9, script_L5),
    127 };
    128 
    129 static const LevelScript script_L1[] = {
    130     EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_splash_screen),
    131 };
    132 
    133 static const LevelScript script_L2[] = {
    134     EXIT_AND_EXECUTE(/*seg*/ 0x0E, _endingSegmentRomStart, _endingSegmentRomEnd, level_ending_entry),
    135 };
    136 
    137 static const LevelScript goto_mario_head_regular[] = {
    138     EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_mario_head_regular),
    139 };
    140 
    141 static const LevelScript goto_mario_head_dizzy[] = {
    142     EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_mario_head_dizzy),
    143 };
    144 
    145 static const LevelScript script_L5[] = {
    146     EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_entry_4),
    147 };
    148 
    149 // Include the level jumptable.
    150 
    151 #define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
    152 
    153 #define DEFINE_LEVEL(_0, levelenum, _2, folder, _4, _5, _6, _7, _8, _9, _10) JUMP_IF(OP_EQ, levelenum, script_exec_ ## folder),
    154 
    155 static const LevelScript script_exec_level_table[] = {
    156     GET_OR_SET(/*op*/ OP_GET, /*var*/ VAR_CURR_LEVEL_NUM),
    157     #include "levels/level_defines.h"
    158     EXIT(),
    159 };
    160 #undef DEFINE_LEVEL
    161 
    162 #define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) \
    163 static const LevelScript script_exec_ ## folder [] = { \
    164     EXECUTE(0x0E, _ ## folder ## SegmentRomStart, _ ## folder ## SegmentRomEnd, level_ ## folder ## _entry), \
    165     RETURN(), \
    166 };
    167 
    168 #include "levels/level_defines.h"
    169 #undef STUB_LEVEL
    170 #undef DEFINE_LEVEL
    171 
    172 const LevelScript script_func_global_1[] = {
    173     LOAD_MODEL_FROM_GEO(MODEL_BLUE_COIN_SWITCH,        blue_coin_switch_geo),
    174     LOAD_MODEL_FROM_GEO(MODEL_AMP,                     dAmpGeo),
    175     LOAD_MODEL_FROM_GEO(MODEL_PURPLE_SWITCH,           purple_switch_geo),
    176     LOAD_MODEL_FROM_GEO(MODEL_CHECKERBOARD_PLATFORM,   checkerboard_platform_geo),
    177     LOAD_MODEL_FROM_GEO(MODEL_BREAKABLE_BOX,           breakable_box_geo),
    178     LOAD_MODEL_FROM_GEO(MODEL_BREAKABLE_BOX_SMALL,     breakable_box_small_geo),
    179     LOAD_MODEL_FROM_GEO(MODEL_EXCLAMATION_BOX_OUTLINE, exclamation_box_outline_geo),
    180     LOAD_MODEL_FROM_GEO(MODEL_EXCLAMATION_BOX,         exclamation_box_geo),
    181     LOAD_MODEL_FROM_GEO(MODEL_GOOMBA,                  goomba_geo),
    182     LOAD_MODEL_FROM_DL (MODEL_EXCLAMATION_POINT,       exclamation_box_outline_seg8_dl_08025F08, LAYER_ALPHA),
    183     LOAD_MODEL_FROM_GEO(MODEL_KOOPA_SHELL,             koopa_shell_geo),
    184     LOAD_MODEL_FROM_GEO(MODEL_METAL_BOX,               metal_box_geo),
    185     LOAD_MODEL_FROM_DL (MODEL_METAL_BOX_DL,            metal_box_dl,                             LAYER_OPAQUE),
    186     LOAD_MODEL_FROM_GEO(MODEL_BLACK_BOBOMB,            black_bobomb_geo),
    187     LOAD_MODEL_FROM_GEO(MODEL_BOBOMB_BUDDY,            bobomb_buddy_geo),
    188     LOAD_MODEL_FROM_DL (MODEL_DL_CANNON_LID,           cannon_lid_seg8_dl_080048E0,              LAYER_OPAQUE),
    189     LOAD_MODEL_FROM_GEO(MODEL_BOWLING_BALL,            bowling_ball_geo),
    190     LOAD_MODEL_FROM_GEO(MODEL_CANNON_BARREL,           cannon_barrel_geo),
    191     LOAD_MODEL_FROM_GEO(MODEL_CANNON_BASE,             cannon_base_geo),
    192     LOAD_MODEL_FROM_GEO(MODEL_HEART,                   heart_geo),
    193     LOAD_MODEL_FROM_GEO(MODEL_FLYGUY,                  flyguy_geo),
    194     LOAD_MODEL_FROM_GEO(MODEL_CHUCKYA,                 chuckya_geo),
    195     LOAD_MODEL_FROM_GEO(MODEL_TRAJECTORY_MARKER_BALL,  bowling_ball_track_geo),
    196     RETURN(),
    197 };
    198 
    199 const LevelScript script_func_global_2[] = {
    200     LOAD_MODEL_FROM_GEO(MODEL_BULLET_BILL,             bullet_bill_geo),
    201     LOAD_MODEL_FROM_GEO(MODEL_YELLOW_SPHERE,           yellow_sphere_geo),
    202     LOAD_MODEL_FROM_GEO(MODEL_HOOT,                    hoot_geo),
    203     LOAD_MODEL_FROM_GEO(MODEL_YOSHI_EGG,               yoshi_egg_geo),
    204     LOAD_MODEL_FROM_GEO(MODEL_THWOMP,                  thwomp_geo),
    205     LOAD_MODEL_FROM_GEO(MODEL_HEAVE_HO,                heave_ho_geo),
    206     RETURN(),
    207 };
    208 
    209 const LevelScript script_func_global_3[] = {
    210     LOAD_MODEL_FROM_GEO(MODEL_BLARGG,                  blargg_geo),
    211     LOAD_MODEL_FROM_GEO(MODEL_BULLY,                   bully_geo),
    212     LOAD_MODEL_FROM_GEO(MODEL_BULLY_BOSS,              bully_boss_geo),
    213     RETURN(),
    214 };
    215 
    216 const LevelScript script_func_global_4[] = {
    217     LOAD_MODEL_FROM_GEO(MODEL_WATER_BOMB,              water_bomb_geo),
    218     LOAD_MODEL_FROM_GEO(MODEL_WATER_BOMB_SHADOW,       water_bomb_shadow_geo),
    219     LOAD_MODEL_FROM_GEO(MODEL_KING_BOBOMB,             king_bobomb_geo),
    220     RETURN(),
    221 };
    222 
    223 const LevelScript script_func_global_5[] = {
    224     LOAD_MODEL_FROM_GEO(MODEL_MANTA_RAY,               manta_seg5_geo_05008D14),
    225     LOAD_MODEL_FROM_GEO(MODEL_UNAGI,                   unagi_geo),
    226     LOAD_MODEL_FROM_GEO(MODEL_SUSHI,                   sushi_geo),
    227     LOAD_MODEL_FROM_DL (MODEL_DL_WHIRLPOOL,            whirlpool_seg5_dl_05013CB8, LAYER_TRANSPARENT),
    228     LOAD_MODEL_FROM_GEO(MODEL_CLAM_SHELL,              clam_shell_geo),
    229     RETURN(),
    230 };
    231 
    232 const LevelScript script_func_global_6[] = {
    233     LOAD_MODEL_FROM_GEO(MODEL_POKEY_HEAD,              pokey_head_geo),
    234     LOAD_MODEL_FROM_GEO(MODEL_POKEY_BODY_PART,         pokey_body_part_geo),
    235     LOAD_MODEL_FROM_GEO(MODEL_TWEESTER,                tweester_geo),
    236     LOAD_MODEL_FROM_GEO(MODEL_KLEPTO,                  klepto_geo),
    237     LOAD_MODEL_FROM_GEO(MODEL_EYEROK_LEFT_HAND,        eyerok_left_hand_geo),
    238     LOAD_MODEL_FROM_GEO(MODEL_EYEROK_RIGHT_HAND,       eyerok_right_hand_geo),
    239     RETURN(),
    240 };
    241 
    242 const LevelScript script_func_global_7[] = {
    243     LOAD_MODEL_FROM_DL (MODEL_DL_MONTY_MOLE_HOLE,      monty_mole_hole_seg5_dl_05000840, LAYER_TRANSPARENT_DECAL),
    244     LOAD_MODEL_FROM_GEO(MODEL_MONTY_MOLE,              monty_mole_geo),
    245     LOAD_MODEL_FROM_GEO(MODEL_UKIKI,                   ukiki_geo),
    246     LOAD_MODEL_FROM_GEO(MODEL_FWOOSH,                  fwoosh_geo),
    247     RETURN(),
    248 };
    249 
    250 const LevelScript script_func_global_8[] = {
    251     LOAD_MODEL_FROM_GEO(MODEL_SPINDRIFT,               spindrift_geo),
    252     LOAD_MODEL_FROM_GEO(MODEL_MR_BLIZZARD_HIDDEN,      mr_blizzard_hidden_geo),
    253     LOAD_MODEL_FROM_GEO(MODEL_MR_BLIZZARD,             mr_blizzard_geo),
    254     LOAD_MODEL_FROM_GEO(MODEL_PENGUIN,                 penguin_geo),
    255     RETURN(),
    256 };
    257 
    258 const LevelScript script_func_global_9[] = {
    259     LOAD_MODEL_FROM_DL (MODEL_CAP_SWITCH_EXCLAMATION,  cap_switch_exclamation_seg5_dl_05002E00, LAYER_ALPHA),
    260     LOAD_MODEL_FROM_GEO(MODEL_CAP_SWITCH,              cap_switch_geo),
    261     LOAD_MODEL_FROM_DL (MODEL_CAP_SWITCH_BASE,         cap_switch_base_seg5_dl_05003120,        LAYER_OPAQUE),
    262     RETURN(),
    263 };
    264 
    265 const LevelScript script_func_global_10[] = {
    266     LOAD_MODEL_FROM_GEO(MODEL_BOO,                     boo_geo),
    267     LOAD_MODEL_FROM_GEO(MODEL_BETA_BOO_KEY,            small_key_geo),
    268     LOAD_MODEL_FROM_GEO(MODEL_HAUNTED_CHAIR,           haunted_chair_geo),
    269     LOAD_MODEL_FROM_GEO(MODEL_MAD_PIANO,               mad_piano_geo),
    270     LOAD_MODEL_FROM_GEO(MODEL_BOOKEND_PART,            bookend_part_geo),
    271     LOAD_MODEL_FROM_GEO(MODEL_BOOKEND,                 bookend_geo),
    272     LOAD_MODEL_FROM_GEO(MODEL_HAUNTED_CAGE,            haunted_cage_geo),
    273     RETURN(),
    274 };
    275 
    276 const LevelScript script_func_global_11[] = {
    277     LOAD_MODEL_FROM_GEO(MODEL_BIRDS,                   birds_geo),
    278     LOAD_MODEL_FROM_GEO(MODEL_PEACH,                   peach_geo),
    279     LOAD_MODEL_FROM_GEO(MODEL_YOSHI,                   yoshi_geo),
    280     RETURN(),
    281 };
    282 
    283 const LevelScript script_func_global_12[] = {
    284     LOAD_MODEL_FROM_GEO(MODEL_ENEMY_LAKITU,            enemy_lakitu_geo),
    285     LOAD_MODEL_FROM_GEO(MODEL_SPINY_BALL,              spiny_ball_geo),
    286     LOAD_MODEL_FROM_GEO(MODEL_SPINY,                   spiny_geo),
    287     LOAD_MODEL_FROM_GEO(MODEL_WIGGLER_HEAD,            wiggler_head_geo),
    288     LOAD_MODEL_FROM_GEO(MODEL_WIGGLER_BODY,            wiggler_body_geo),
    289     LOAD_MODEL_FROM_GEO(MODEL_BUBBA,                   bubba_geo),
    290     RETURN(),
    291 };
    292 
    293 const LevelScript script_func_global_13[] = {
    294     LOAD_MODEL_FROM_GEO(MODEL_BOWSER,                  bowser_geo),
    295     LOAD_MODEL_FROM_GEO(MODEL_BOWSER_BOMB_CHILD_OBJ,   bowser_bomb_geo),
    296     LOAD_MODEL_FROM_GEO(MODEL_BOWSER_BOMB,             bowser_bomb_geo),
    297     LOAD_MODEL_FROM_GEO(MODEL_BOWSER_SMOKE,            bowser_impact_smoke_geo),
    298     LOAD_MODEL_FROM_GEO(MODEL_BOWSER_FLAMES,           bowser_flames_geo),
    299     LOAD_MODEL_FROM_GEO(MODEL_BOWSER_WAVE,             invisible_bowser_accessory_geo),
    300     LOAD_MODEL_FROM_GEO(MODEL_BOWSER_NO_SHADOW,        bowser_geo_no_shadow),
    301     RETURN(),
    302 };
    303 
    304 const LevelScript script_func_global_14[] = {
    305     LOAD_MODEL_FROM_GEO(MODEL_BUB,                     bub_geo),
    306     LOAD_MODEL_FROM_GEO(MODEL_TREASURE_CHEST_BASE,     treasure_chest_base_geo),
    307     LOAD_MODEL_FROM_GEO(MODEL_TREASURE_CHEST_LID,      treasure_chest_lid_geo),
    308     LOAD_MODEL_FROM_GEO(MODEL_CYAN_FISH,               cyan_fish_geo),
    309     LOAD_MODEL_FROM_GEO(MODEL_WATER_RING,              water_ring_geo),
    310     LOAD_MODEL_FROM_GEO(MODEL_WATER_MINE,              water_mine_geo),
    311     LOAD_MODEL_FROM_GEO(MODEL_SEAWEED,                 seaweed_geo),
    312     LOAD_MODEL_FROM_GEO(MODEL_SKEETER,                 skeeter_geo),
    313     RETURN(),
    314 };
    315 
    316 const LevelScript script_func_global_15[] = {
    317     LOAD_MODEL_FROM_GEO(MODEL_PIRANHA_PLANT,           piranha_plant_geo),
    318     LOAD_MODEL_FROM_GEO(MODEL_WHOMP,                   whomp_geo),
    319     LOAD_MODEL_FROM_GEO(MODEL_KOOPA_WITH_SHELL,        koopa_with_shell_geo),
    320     LOAD_MODEL_FROM_GEO(MODEL_KOOPA_WITHOUT_SHELL,     koopa_without_shell_geo),
    321     LOAD_MODEL_FROM_GEO(MODEL_METALLIC_BALL,           metallic_ball_geo),
    322     LOAD_MODEL_FROM_GEO(MODEL_CHAIN_CHOMP,             chain_chomp_geo),
    323     LOAD_MODEL_FROM_GEO(MODEL_KOOPA_FLAG,              koopa_flag_geo),
    324     LOAD_MODEL_FROM_GEO(MODEL_WOODEN_POST,             wooden_post_geo),
    325     RETURN(),
    326 };
    327 
    328 const LevelScript script_func_global_16[] = {
    329     LOAD_MODEL_FROM_GEO(MODEL_MIPS,                    mips_geo),
    330     LOAD_MODEL_FROM_GEO(MODEL_BOO_CASTLE,              boo_castle_geo),
    331     LOAD_MODEL_FROM_GEO(MODEL_LAKITU,                  lakitu_geo),
    332     LOAD_MODEL_FROM_GEO(MODEL_TOAD,                    toad_geo),
    333     RETURN(),
    334 };
    335 
    336 const LevelScript script_func_global_17[] = {
    337     LOAD_MODEL_FROM_GEO(MODEL_CHILL_BULLY,             chilly_chief_geo),
    338     LOAD_MODEL_FROM_GEO(MODEL_BIG_CHILL_BULLY,         chilly_chief_big_geo),
    339     LOAD_MODEL_FROM_GEO(MODEL_MONEYBAG,                moneybag_geo),
    340     RETURN(),
    341 };
    342 
    343 const LevelScript script_func_global_18[] = {
    344     LOAD_MODEL_FROM_GEO(MODEL_SWOOP,                   swoop_geo),
    345     LOAD_MODEL_FROM_GEO(MODEL_SCUTTLEBUG,              scuttlebug_geo),
    346     LOAD_MODEL_FROM_GEO(MODEL_MR_I_IRIS,               mr_i_iris_geo),
    347     LOAD_MODEL_FROM_GEO(MODEL_MR_I,                    mr_i_geo),
    348     LOAD_MODEL_FROM_GEO(MODEL_DORRIE,                  dorrie_geo),
    349     LOAD_MODEL_FROM_GEO(MODEL_SNUFIT,                  snufit_geo),
    350     RETURN(),
    351 };