Add a container to animation tables so that we can track their length and stay in bounds

This commit is contained in:
MysterD 2023-05-10 15:20:52 -07:00
parent e666719baf
commit d30b1e61a6
98 changed files with 864 additions and 643 deletions

View file

@ -1,4 +1,5 @@
// 0x08004034
const struct Animation *const amp_seg8_anims_08004034[] = {
&amp_seg8_anim_0800401C,
const struct AnimationTable amp_seg8_anims_08004034 = {
.anims = { &amp_seg8_anim_0800401C, },
.count = 1
};

View file

@ -1,5 +1,8 @@
// 0x050009E8
const struct Animation *const birds_seg5_anims_050009E8[] = {
&birds_seg5_anim_050008D0,
&birds_seg5_anim_050009D0,
const struct AnimationTable birds_seg5_anims_050009E8 = {
.anims = {
&birds_seg5_anim_050008D0,
&birds_seg5_anim_050009D0,
},
.count = 2
};

View file

@ -1,7 +1,10 @@
// unreferenced
// 0x0500616C
const struct Animation *const blargg_seg5_anims_0500616C[] = {
&blargg_seg5_anim_05006154,
&blargg_seg5_anim_05006070,
NULL,
const struct AnimationTable blargg_seg5_anims_0500616C = {
.anims = {
&blargg_seg5_anim_05006154,
&blargg_seg5_anim_05006070,
NULL,
},
.count = 2
};

View file

@ -1,5 +1,5 @@
// 0x0301C2B0
const struct Animation *const blue_fish_seg3_anims_0301C2B0[] = {
&blue_fish_seg3_anim_0301C298,
NULL,
const struct AnimationTable blue_fish_seg3_anims_0301C2B0 = {
.anims = { &blue_fish_seg3_anim_0301C298, NULL },
.count = 1
};

View file

@ -1,6 +1,9 @@
// 0x0802396C
const struct Animation *const bobomb_seg8_anims_0802396C[] = {
&bobomb_seg8_anim_080237FC,
&bobomb_seg8_anim_08023954,
NULL,
const struct AnimationTable bobomb_seg8_anims_0802396C = {
.anims = {
&bobomb_seg8_anim_080237FC,
&bobomb_seg8_anim_08023954,
NULL,
},
.count = 2
};

View file

@ -1,7 +1,10 @@
// 0x05002540
const struct Animation *const bookend_seg5_anims_05002540[] = {
&bookend_seg5_anim_05002528,
&bookend_seg5_anim_050023F4,
&bookend_seg5_anim_05002510,
NULL,
const struct AnimationTable bookend_seg5_anims_05002540 = {
.anims = {
&bookend_seg5_anim_05002528,
&bookend_seg5_anim_050023F4,
&bookend_seg5_anim_05002510,
NULL,
},
.count = 3
};

View file

@ -1,30 +1,33 @@
// 0x06057690
const struct Animation *const bowser_seg6_anims_06057690[] = {
&bowser_seg6_anim_060445EC,
&bowser_seg6_anim_060453C8,
&bowser_seg6_anim_06045D28,
&bowser_seg6_anim_0604671C,
&bowser_seg6_anim_0604675C,
&bowser_seg6_anim_06048200,
&bowser_seg6_anim_06049880,
&bowser_seg6_anim_0604A8E4,
&bowser_seg6_anim_0604B178,
&bowser_seg6_anim_0604B8CC,
&bowser_seg6_anim_0604D184,
&bowser_seg6_anim_0604E5A0,
&bowser_seg6_anim_0604F030,
&bowser_seg6_anim_0604FF4C,
&bowser_seg6_anim_06050530,
&bowser_seg6_anim_060514E8,
&bowser_seg6_anim_06051C68,
&bowser_seg6_anim_06052680,
&bowser_seg6_anim_06054290,
&bowser_seg6_anim_06052D94,
&bowser_seg6_anim_060534F4,
&bowser_seg6_anim_06053B8C,
&bowser_seg6_anim_06054950,
&bowser_seg6_anim_06055210,
&bowser_seg6_anim_06055984,
&bowser_seg6_anim_06056774,
&bowser_seg6_anim_06057678,
const struct AnimationTable bowser_seg6_anims_06057690 = {
.anims = {
&bowser_seg6_anim_060445EC,
&bowser_seg6_anim_060453C8,
&bowser_seg6_anim_06045D28,
&bowser_seg6_anim_0604671C,
&bowser_seg6_anim_0604675C,
&bowser_seg6_anim_06048200,
&bowser_seg6_anim_06049880,
&bowser_seg6_anim_0604A8E4,
&bowser_seg6_anim_0604B178,
&bowser_seg6_anim_0604B8CC,
&bowser_seg6_anim_0604D184,
&bowser_seg6_anim_0604E5A0,
&bowser_seg6_anim_0604F030,
&bowser_seg6_anim_0604FF4C,
&bowser_seg6_anim_06050530,
&bowser_seg6_anim_060514E8,
&bowser_seg6_anim_06051C68,
&bowser_seg6_anim_06052680,
&bowser_seg6_anim_06054290,
&bowser_seg6_anim_06052D94,
&bowser_seg6_anim_060534F4,
&bowser_seg6_anim_06053B8C,
&bowser_seg6_anim_06054950,
&bowser_seg6_anim_06055210,
&bowser_seg6_anim_06055984,
&bowser_seg6_anim_06056774,
&bowser_seg6_anim_06057678,
},
.count = 27
};

View file

@ -1,5 +1,8 @@
// 0x030172D0
const struct Animation *const bowser_key_seg3_anims_list[] = {
&bowser_key_seg3_anim_unlock_door, // id 0
&bowser_key_seg3_anim_course_exit, // id 1
const struct AnimationTable bowser_key_seg3_anims_list = {
.anims = {
&bowser_key_seg3_anim_unlock_door, // id 0
&bowser_key_seg3_anim_course_exit, // id 1
},
.count = 2
};

View file

@ -1,6 +1,9 @@
// 0x06012354
const struct Animation *const bub_seg6_anims_06012354[] = {
&bub_seg6_anim_0601233C,
NULL,
NULL,
const struct AnimationTable bub_seg6_anims_06012354 = {
.anims = {
&bub_seg6_anim_0601233C,
NULL,
NULL,
},
.count = 1
};

View file

@ -1,8 +1,11 @@
// 0x0500470C
const struct Animation *const bully_seg5_anims_0500470C[] = {
&bully_seg5_anim_05004598,
&bully_seg5_anim_050043D8,
&bully_seg5_anim_050042A4,
&bully_seg5_anim_050046F4,
NULL,
const struct AnimationTable bully_seg5_anims_0500470C = {
.anims = {
&bully_seg5_anim_05004598,
&bully_seg5_anim_050043D8,
&bully_seg5_anim_050042A4,
&bully_seg5_anim_050046F4,
NULL,
},
.count = 4
};

View file

@ -1,5 +1,8 @@
// 0x030056B0
const struct Animation *const butterfly_seg3_anims_030056B0[] = {
&butterfly_seg3_anim_030055B0,
&butterfly_seg3_anim_03005698,
const struct AnimationTable butterfly_seg3_anims_030056B0 = {
.anims = {
&butterfly_seg3_anim_030055B0,
&butterfly_seg3_anim_03005698,
},
.count = 2
};

View file

@ -1,5 +1,8 @@
// 0x06025178
const struct Animation *const chain_chomp_seg6_anims_06025178[] = {
&chain_chomp_seg6_anim_06025160,
NULL,
const struct AnimationTable chain_chomp_seg6_anims_06025178 = {
.anims = {
&chain_chomp_seg6_anim_06025160,
NULL,
},
.count = 1
};

View file

@ -1,4 +1,7 @@
// 0x05005784
const struct Animation *const chair_seg5_anims_05005784[] = {
&chair_seg5_anim_0500576C,
const struct AnimationTable chair_seg5_anims_05005784 = {
.anims = {
&chair_seg5_anim_0500576C,
},
.count = 1
};

View file

@ -1,8 +1,11 @@
// 0x06003994
const struct Animation *const chilly_chief_seg6_anims_06003994[] = {
&chilly_chief_seg6_anim_060035E0,
&chilly_chief_seg6_anim_06003420,
&chilly_chief_seg6_anim_060032EC,
&chilly_chief_seg6_anim_0600373C,
NULL,
const struct AnimationTable chilly_chief_seg6_anims_06003994 = {
.anims = {
&chilly_chief_seg6_anim_060035E0,
&chilly_chief_seg6_anim_06003420,
&chilly_chief_seg6_anim_060032EC,
&chilly_chief_seg6_anim_0600373C,
NULL,
},
.count = 4
};

View file

@ -1,9 +1,12 @@
// 0x0800C070
const struct Animation *const chuckya_seg8_anims_0800C070[] = {
&chuckya_seg8_anim_0800AF68,
&chuckya_seg8_anim_0800B1A8,
&chuckya_seg8_anim_0800B4A8,
&chuckya_seg8_anim_0800B9F8,
&chuckya_seg8_anim_0800BBEC,
&chuckya_seg8_anim_0800C058,
const struct AnimationTable chuckya_seg8_anims_0800C070 = {
.anims = {
&chuckya_seg8_anim_0800AF68,
&chuckya_seg8_anim_0800B1A8,
&chuckya_seg8_anim_0800B4A8,
&chuckya_seg8_anim_0800B9F8,
&chuckya_seg8_anim_0800BBEC,
&chuckya_seg8_anim_0800C058,
},
.count = 6
};

View file

@ -1,6 +1,9 @@
// 0x05001744
const struct Animation *const clam_shell_seg5_anims_05001744[] = {
&clam_shell_seg5_anim_05001654,
&clam_shell_seg5_anim_0500172C,
NULL,
const struct AnimationTable clam_shell_seg5_anims_05001744 = {
.anims = {
&clam_shell_seg5_anim_05001654,
&clam_shell_seg5_anim_0500172C,
NULL,
},
.count = 2
};

View file

@ -21,7 +21,7 @@ extern const Gfx amp_seg8_dl_080039D0[];
extern const Gfx amp_seg8_dl_08003DA8[];
extern const Gfx amp_seg8_dl_08003DD8[];
extern const Gfx amp_seg8_dl_08003E00[];
extern const struct Animation *const amp_seg8_anims_08004034[];
extern const struct AnimationTable amp_seg8_anims_08004034;
// blue_coin_switch
extern const GeoLayout blue_coin_switch_geo[];
@ -44,7 +44,7 @@ extern const Gfx bobomb_seg8_dl_08022D78[];
extern const Gfx bobomb_seg8_dl_08023270[];
extern const Gfx bobomb_seg8_dl_08023378[];
extern const Gfx bobomb_seg8_dl_08023480[];
extern const struct Animation *const bobomb_seg8_anims_0802396C[];
extern const struct AnimationTable bobomb_seg8_anims_0802396C;
// bowling_ball
extern const GeoLayout bowling_ball_geo[];
@ -108,7 +108,7 @@ extern const Gfx chuckya_seg8_dl_0800A958[];
extern const Gfx chuckya_seg8_dl_0800A998[];
extern const Gfx chuckya_seg8_dl_0800AB70[];
extern const Gfx chuckya_seg8_dl_0800ABE8[];
extern const struct Animation *const chuckya_seg8_anims_0800C070[];
extern const struct AnimationTable chuckya_seg8_anims_0800C070;
// exclamation_box
extern const GeoLayout exclamation_box_geo[];
@ -149,7 +149,7 @@ extern const Gfx flyguy_seg8_dl_080113A8[];
extern const Gfx flyguy_seg8_dl_08011420[];
extern const Gfx flyguy_seg8_dl_080116D0[];
extern const Gfx flyguy_seg8_dl_08011710[];
extern const struct Animation *const flyguy_seg8_anims_08011A64[];
extern const struct AnimationTable flyguy_seg8_anims_08011A64;
// goomba
extern const GeoLayout goomba_geo[];
@ -165,7 +165,7 @@ extern const Gfx goomba_seg8_dl_0801CF78[];
extern const Gfx goomba_seg8_dl_0801D0D0[];
extern const Gfx goomba_seg8_dl_0801D360[];
extern const Gfx goomba_seg8_dl_0801D760[];
extern const struct Animation *const goomba_seg8_anims_0801DA4C[];
extern const struct AnimationTable goomba_seg8_anims_0801DA4C;
// heart
extern const GeoLayout heart_geo[];

View file

@ -10,19 +10,19 @@ extern const Gfx blue_fish_seg3_dl_0301BEC0[];
extern const Gfx blue_fish_seg3_dl_0301BFB8[];
extern const Gfx blue_fish_seg3_dl_0301C0A8[];
extern const Gfx blue_fish_seg3_dl_0301C150[];
extern const struct Animation *const blue_fish_seg3_anims_0301C2B0[];
extern const struct AnimationTable blue_fish_seg3_anims_0301C2B0;
// bowser_key
extern const GeoLayout bowser_key_geo[];
extern const GeoLayout bowser_key_cutscene_geo[];
extern const Gfx bowser_key_dl[];
extern const struct Animation *const bowser_key_seg3_anims_list[];
extern const struct AnimationTable bowser_key_seg3_anims_list;
// butterfly
extern const GeoLayout butterfly_geo[];
extern const Gfx butterfly_seg3_dl_03005408[];
extern const Gfx butterfly_seg3_dl_030054A0[];
extern const struct Animation *const butterfly_seg3_anims_030056B0[];
extern const struct AnimationTable butterfly_seg3_anims_030056B0;
// coin
extern const GeoLayout yellow_coin_geo[];
@ -112,7 +112,7 @@ extern const Gfx door_seg3_dl_03015008[];
extern const Gfx door_seg3_dl_03015078[];
extern const Gfx door_seg3_dl_030150E8[];
extern const Gfx door_seg3_dl_03015158[];
extern const struct Animation *const door_seg3_anims_030156C0[];
extern const struct AnimationTable door_seg3_anims_030156C0;
// explosion
extern const GeoLayout explosion_geo[];

View file

@ -1,6 +1,9 @@
// 0x0600E264
const struct Animation *const cyan_fish_seg6_anims_0600E264[] = {
&cyan_fish_seg6_anim_0600E24C,
NULL,
NULL,
const struct AnimationTable cyan_fish_seg6_anims_0600E264 = {
.anims = {
&cyan_fish_seg6_anim_0600E24C,
NULL,
NULL,
},
.count = 1
};

View file

@ -1,9 +1,12 @@
// 0x030156C0
const struct Animation *const door_seg3_anims_030156C0[] = {
&door_seg3_anim_03015208,
&door_seg3_anim_03015440,
&door_seg3_anim_03015690,
&door_seg3_anim_03015458,
&door_seg3_anim_030156A8,
NULL,
const struct AnimationTable door_seg3_anims_030156C0 = {
.anims = {
&door_seg3_anim_03015208,
&door_seg3_anim_03015440,
&door_seg3_anim_03015690,
&door_seg3_anim_03015458,
&door_seg3_anim_030156A8,
NULL,
},
.count = 5
};

View file

@ -1,6 +1,9 @@
// 0x0600F638
const struct Animation *const dorrie_seg6_anims_0600F638[] = {
&dorrie_seg6_anim_0600E18C,
&dorrie_seg6_anim_0600E9BC,
&dorrie_seg6_anim_0600F620,
const struct AnimationTable dorrie_seg6_anims_0600F638 = {
.anims = {
&dorrie_seg6_anim_0600E18C,
&dorrie_seg6_anim_0600E9BC,
&dorrie_seg6_anim_0600F620,
},
.count = 3
};

View file

@ -1,12 +1,15 @@
// 0x050116E4
const struct Animation *const eyerok_seg5_anims_050116E4[] = {
&eyerok_seg5_anim_0500D270,
&eyerok_seg5_anim_0500DF50,
&eyerok_seg5_anim_0500E1D8,
&eyerok_seg5_anim_0500E99C,
&eyerok_seg5_anim_0500F3D8,
&eyerok_seg5_anim_0500FCCC,
&eyerok_seg5_anim_050116CC,
&eyerok_seg5_anim_0500F3F0,
NULL,
const struct AnimationTable eyerok_seg5_anims_050116E4 = {
.anims = {
&eyerok_seg5_anim_0500D270,
&eyerok_seg5_anim_0500DF50,
&eyerok_seg5_anim_0500E1D8,
&eyerok_seg5_anim_0500E99C,
&eyerok_seg5_anim_0500F3D8,
&eyerok_seg5_anim_0500FCCC,
&eyerok_seg5_anim_050116CC,
&eyerok_seg5_anim_0500F3F0,
NULL,
},
.count = 8
};

View file

@ -1,6 +1,9 @@
// 0x08011A64
const struct Animation *const flyguy_seg8_anims_08011A64[] = {
&flyguy_seg8_anim_08011A4C,
NULL,
NULL,
const struct AnimationTable flyguy_seg8_anims_08011A64 = {
.anims = {
&flyguy_seg8_anim_08011A4C,
NULL,
NULL,
},
.count = 1
};

View file

@ -1,6 +1,9 @@
// 0x0801DA4C
const struct Animation *const goomba_seg8_anims_0801DA4C[] = {
&goomba_seg8_anim_0801DA34,
NULL,
NULL,
const struct AnimationTable goomba_seg8_anims_0801DA4C = {
.anims = {
&goomba_seg8_anim_0801DA34,
NULL,
NULL,
},
.count = 1
};

View file

@ -35,7 +35,7 @@ extern const Gfx heave_ho_seg5_dl_05014560[];
extern const Gfx heave_ho_seg5_dl_050145D0[];
extern const Gfx heave_ho_seg5_dl_050149A8[];
extern const Gfx heave_ho_seg5_dl_05014D80[];
extern const struct Animation *const heave_ho_seg5_anims_0501534C[];
extern const struct AnimationTable heave_ho_seg5_anims_0501534C;
// hoot
extern const GeoLayout hoot_geo[];
@ -63,7 +63,7 @@ extern const Gfx hoot_seg5_dl_05004A98[];
extern const Gfx hoot_seg5_dl_05004B38[];
extern const Gfx hoot_seg5_dl_05004CA8[];
extern const Gfx hoot_seg5_dl_05004D48[];
extern const struct Animation *const hoot_seg5_anims_05005768[];
extern const struct AnimationTable hoot_seg5_anims_05005768;
// thwomp
extern const GeoLayout thwomp_geo[];

View file

@ -9,7 +9,7 @@ extern const Gfx birds_seg5_dl_05000528[];
extern const Gfx birds_seg5_dl_05000598[];
extern const Gfx birds_seg5_dl_05000600[];
extern const Gfx birds_seg5_dl_05000670[];
extern const struct Animation *const birds_seg5_anims_050009E8[];
extern const struct AnimationTable birds_seg5_anims_050009E8;
// peach
extern const GeoLayout peach_geo_000098[];
@ -65,7 +65,7 @@ extern const Gfx peach_seg5_dl_05009940[];
extern const Gfx peach_seg5_dl_05009E20[];
extern const Gfx peach_seg5_dl_0500A0A8[];
extern const Gfx peach_seg5_us_dl_0500A188[];
extern const struct Animation *const peach_seg5_anims_0501C41C[];
extern const struct AnimationTable peach_seg5_anims_0501C41C;
// yoshi
extern const GeoLayout yoshi_geo[];
@ -92,6 +92,6 @@ extern const Gfx yoshi_seg5_dl_05022160[];
extern const Gfx yoshi_seg5_dl_050222A8[];
extern const Gfx yoshi_seg5_dl_05022408[];
extern const Gfx yoshi_seg5_dl_05022608[];
extern const struct Animation *const yoshi_seg5_anims_05024100[];
extern const struct AnimationTable yoshi_seg5_anims_05024100;
#endif

View file

@ -34,7 +34,7 @@ extern const Gfx lakitu_enemy_seg5_dl_050134A8[];
extern const Gfx lakitu_enemy_seg5_dl_050136A0[];
extern const Gfx lakitu_enemy_seg5_dl_05013860[];
extern const Gfx lakitu_enemy_seg5_dl_050138B0[];
extern const struct Animation *const lakitu_enemy_seg5_anims_050144D4[];
extern const struct AnimationTable lakitu_enemy_seg5_anims_050144D4;
// spiny
extern const GeoLayout spiny_geo[];
@ -44,7 +44,7 @@ extern const Gfx spiny_seg5_dl_050165A8[];
extern const Gfx spiny_seg5_dl_05016670[];
extern const Gfx spiny_seg5_dl_05016738[];
extern const Gfx spiny_seg5_dl_05016A48[];
extern const struct Animation *const spiny_seg5_anims_05016EAC[];
extern const struct AnimationTable spiny_seg5_anims_05016EAC;
// spiny_egg
extern const GeoLayout spiny_ball_geo[];
@ -58,7 +58,7 @@ extern const Gfx spiny_egg_seg5_dl_050152F8[];
extern const Gfx spiny_egg_seg5_dl_05015330[];
extern const Gfx spiny_egg_seg5_dl_05015368[];
extern const Gfx spiny_egg_seg5_dl_05015740[];
extern const struct Animation *const spiny_egg_seg5_anims_050157E4[];
extern const struct AnimationTable spiny_egg_seg5_anims_050157E4;
// wiggler_body
extern const Gfx wiggler_seg5_dl_0500BCB8[];
@ -71,7 +71,7 @@ extern const Gfx wiggler_seg5_dl_0500C208[];
extern const Gfx wiggler_seg5_dl_0500C240[];
extern const Gfx wiggler_seg5_dl_0500C278[];
extern const GeoLayout wiggler_body_geo[];
extern const struct Animation *const wiggler_seg5_anims_0500C874[];
extern const struct AnimationTable wiggler_seg5_anims_0500C874;
// wiggler_head
extern const GeoLayout wiggler_head_geo[];
@ -93,6 +93,6 @@ extern const Gfx wiggler_seg5_dl_0500E518[];
extern const Gfx wiggler_seg5_dl_0500E608[];
extern const Gfx wiggler_seg5_dl_0500E640[];
extern const Gfx wiggler_seg5_dl_0500E678[];
extern const struct Animation *const wiggler_seg5_anims_0500EC8C[];
extern const struct AnimationTable wiggler_seg5_anims_0500EC8C;
#endif

View file

@ -89,7 +89,7 @@ extern const Gfx bowser_seg6_dl_060431F0[];
extern const Gfx bowser_seg6_dl_06043548[];
extern const Gfx bowser_seg6_dl_06043648[];
extern const Gfx bowser_seg6_dl_06043698[];
extern const struct Animation *const bowser_seg6_anims_06057690[];
extern const struct AnimationTable bowser_seg6_anims_06057690;
extern const s16 bowser_seg6_unkmoveshorts_060576FC[];
// bowser_flame

View file

@ -17,7 +17,7 @@ extern const Gfx bub_seg6_dl_06011DC0[];
extern const Gfx bub_seg6_dl_06011E48[];
extern const Gfx bub_seg6_dl_06011F18[];
extern const Gfx bub_seg6_dl_06011FA0[];
extern const struct Animation *const bub_seg6_anims_06012354[];
extern const struct AnimationTable bub_seg6_anims_06012354;
// cyan_fish
extern const GeoLayout cyan_fish_geo[];
@ -27,7 +27,7 @@ extern const Gfx cyan_fish_seg6_dl_0600DE90[];
extern const Gfx cyan_fish_seg6_dl_0600DED8[];
extern const Gfx cyan_fish_seg6_dl_0600DFC0[];
extern const Gfx cyan_fish_seg6_dl_0600E038[];
extern const struct Animation *const cyan_fish_seg6_anims_0600E264[];
extern const struct AnimationTable cyan_fish_seg6_anims_0600E264;
// seaweed
extern const GeoLayout seaweed_geo[];
@ -39,7 +39,7 @@ extern const Gfx seaweed_seg6_dl_0600A040[];
extern const Gfx seaweed_seg6_dl_0600A088[];
extern const Gfx seaweed_seg6_dl_0600A138[];
extern const Gfx seaweed_seg6_dl_0600A180[];
extern const struct Animation *const seaweed_seg6_anims_0600A4D4[];
extern const struct AnimationTable seaweed_seg6_anims_0600A4D4;
// skeeter
extern const GeoLayout skeeter_geo[];
@ -72,7 +72,7 @@ extern const Gfx skeeter_seg6_dl_06004678[];
extern const Gfx skeeter_seg6_dl_06004A40[];
extern const Gfx skeeter_seg6_dl_06005328[];
extern const Gfx skeeter_seg6_dl_06005358[];
extern const struct Animation *const skeeter_seg6_anims_06007DE0[];
extern const struct AnimationTable skeeter_seg6_anims_06007DE0;
// treasure_chest
extern const GeoLayout treasure_chest_base_geo[];
@ -98,6 +98,6 @@ extern const Gfx water_mine_seg6_dl_0600D3F8[];
// water_ring
extern const GeoLayout water_ring_geo[];
extern const Gfx water_ring_seg6_dl_06013AC0[];
extern const struct Animation *const water_ring_seg6_anims_06013F7C[];
extern const struct AnimationTable water_ring_seg6_anims_06013F7C;
#endif

View file

@ -21,7 +21,7 @@ extern const Gfx chain_chomp_seg6_dl_06024CF0[];
extern const Gfx chain_chomp_seg6_dl_06024D60[];
extern const Gfx chain_chomp_seg6_dl_06024F50[];
extern const Gfx chain_chomp_seg6_dl_06024FC0[];
extern const struct Animation *const chain_chomp_seg6_anims_06025178[];
extern const struct AnimationTable chain_chomp_seg6_anims_06025178;
// koopa
extern const GeoLayout koopa_without_shell_geo[];
@ -57,7 +57,7 @@ extern const Gfx koopa_seg6_dl_0600BE10[];
extern const Gfx koopa_seg6_dl_0600BE80[];
extern const Gfx koopa_seg6_dl_0600C240[];
extern const Gfx koopa_seg6_dl_0600C498[];
extern const struct Animation *const koopa_seg6_anims_06011364[];
extern const struct AnimationTable koopa_seg6_anims_06011364;
// koopa_flag
extern const GeoLayout koopa_flag_geo[];
@ -74,7 +74,7 @@ extern const Gfx koopa_flag_seg6_dl_06000D90[];
extern const Gfx koopa_flag_seg6_dl_06000DB0[];
extern const Gfx koopa_flag_seg6_dl_06000E20[];
extern const Gfx koopa_flag_seg6_dl_06000E38[];
extern const struct Animation *const koopa_flag_seg6_anims_06001028[];
extern const struct AnimationTable koopa_flag_seg6_anims_06001028;
// piranha_plant
extern const GeoLayout piranha_plant_geo[];
@ -103,7 +103,7 @@ extern const Gfx piranha_plant_seg6_dl_06016D30[];
extern const Gfx piranha_plant_seg6_dl_06016D98[];
extern const Gfx piranha_plant_seg6_dl_06016EB8[];
extern const Gfx piranha_plant_seg6_dl_06016F20[];
extern const struct Animation *const piranha_plant_seg6_anims_0601C31C[];
extern const struct AnimationTable piranha_plant_seg6_anims_0601C31C;
// poundable_pole
extern const GeoLayout wooden_post_geo[];
@ -130,7 +130,7 @@ extern const Gfx whomp_seg6_dl_0601FE10[];
extern const Gfx whomp_seg6_dl_0601FEA8[];
extern const Gfx whomp_seg6_dl_0601FFA0[];
extern const Gfx whomp_seg6_dl_06020038[];
extern const struct Animation *const whomp_seg6_anims_06020A04[];
extern const struct AnimationTable whomp_seg6_anims_06020A04;
extern const Collision whomp_seg6_collision_06020A0C[];
#endif

View file

@ -30,7 +30,7 @@ extern const Gfx lakitu_seg6_dl_06005360[];
extern const Gfx lakitu_seg6_dl_06005598[];
extern const Gfx lakitu_seg6_dl_060055E8[];
extern const Gfx lakitu_seg6_dl_06005610[];
extern const struct Animation *const lakitu_seg6_anims_060058F8[];
extern const struct AnimationTable lakitu_seg6_anims_060058F8;
// mips
extern const GeoLayout mips_geo[];
@ -59,7 +59,7 @@ extern const Gfx mips_seg6_dl_06011E88[];
extern const Gfx mips_seg6_dl_06011ED8[];
extern const Gfx mips_seg6_dl_06011F70[];
extern const Gfx mips_seg6_dl_06011FC0[];
extern const struct Animation *const mips_seg6_anims_06015634[];
extern const struct AnimationTable mips_seg6_anims_06015634;
// toad
extern const GeoLayout toad_geo_000114[];
@ -84,6 +84,6 @@ extern const Gfx toad_seg6_dl_06008748[];
extern const Gfx toad_seg6_dl_06008890[];
extern const Gfx toad_seg6_dl_06008A90[];
extern const Gfx toad_seg6_dl_06008BD8[];
extern const struct Animation *const toad_seg6_anims_0600FB58[];
extern const struct AnimationTable toad_seg6_anims_0600FB58;
#endif

View file

@ -17,7 +17,7 @@ extern const Gfx chilly_chief_seg6_dl_06002FC8[];
extern const Gfx chilly_chief_seg6_dl_06003010[];
extern const GeoLayout chilly_chief_geo[];
extern const GeoLayout chilly_chief_big_geo[];
extern const struct Animation *const chilly_chief_seg6_anims_06003994[];
extern const struct AnimationTable chilly_chief_seg6_anims_06003994;
// moneybag
extern const GeoLayout moneybag_geo_000000[];
@ -33,6 +33,6 @@ extern const Gfx moneybag_seg6_dl_06005708[];
extern const Gfx moneybag_seg6_dl_06005750[];
extern const Gfx moneybag_seg6_dl_06005980[];
extern const Gfx moneybag_seg6_dl_060059F0[];
extern const struct Animation *const moneybag_seg6_anims_06005E5C[];
extern const struct AnimationTable moneybag_seg6_anims_06005E5C;
#endif

View file

@ -31,7 +31,7 @@ extern const Gfx dorrie_seg6_dl_0600DDA0[];
extern const Gfx dorrie_seg6_dl_0600DE38[];
extern const Gfx dorrie_seg6_dl_0600DF60[];
extern const Gfx dorrie_seg6_dl_0600DFA8[];
extern const struct Animation *const dorrie_seg6_anims_0600F638[];
extern const struct AnimationTable dorrie_seg6_anims_0600F638;
extern const Collision dorrie_seg6_collision_0600F644[];
extern const Collision dorrie_seg6_collision_0600FBB8[];
@ -68,7 +68,7 @@ extern const Gfx scuttlebug_seg6_dl_06014238[];
extern const Gfx scuttlebug_seg6_dl_06014270[];
extern const Gfx scuttlebug_seg6_dl_06014338[];
extern const Gfx scuttlebug_seg6_dl_06014378[];
extern const struct Animation *const scuttlebug_seg6_anims_06015064[];
extern const struct AnimationTable scuttlebug_seg6_anims_06015064;
// snufit
extern const GeoLayout snufit_geo[];
@ -100,6 +100,6 @@ extern const Gfx swoop_seg6_dl_06006B98[];
extern const Gfx swoop_seg6_dl_06006BD0[];
extern const Gfx swoop_seg6_dl_06006CC8[];
extern const Gfx swoop_seg6_dl_06006D00[];
extern const struct Animation *const swoop_seg6_anims_060070D0[];
extern const struct AnimationTable swoop_seg6_anims_060070D0;
#endif

View file

@ -8,7 +8,7 @@ extern const GeoLayout blargg_geo[];
extern const Gfx blargg_seg5_dl_050058D0[];
extern const Gfx blargg_seg5_dl_05005A60[];
extern const Gfx blargg_seg5_dl_05005D00[];
extern const struct Animation *const blargg_seg5_anims_0500616C[];
extern const struct AnimationTable blargg_seg5_anims_0500616C;
// bully
extern const GeoLayout bully_geo[];
@ -27,6 +27,6 @@ extern const Gfx bully_seg5_dl_05003E70[];
extern const Gfx bully_seg5_dl_05003EA8[];
extern const Gfx bully_seg5_dl_05003F80[];
extern const Gfx bully_seg5_dl_05003FC8[];
extern const struct Animation *const bully_seg5_anims_0500470C[];
extern const struct AnimationTable bully_seg5_anims_0500470C;
#endif

View file

@ -30,7 +30,7 @@ extern const Gfx king_bobomb_seg5_dl_0500B3C8[];
extern const Gfx king_bobomb_seg5_dl_0500B418[];
extern const Gfx king_bobomb_seg5_dl_0500B5F0[];
extern const Gfx king_bobomb_seg5_dl_0500B6C0[];
extern const struct Animation *const king_bobomb_seg5_anims_0500FE30[];
extern const struct AnimationTable king_bobomb_seg5_anims_0500FE30;
// water_bubble
extern const GeoLayout water_bomb_geo[];

View file

@ -11,7 +11,7 @@ extern const Gfx clam_shell_seg5_dl_050012B8[];
extern const Gfx clam_shell_seg5_dl_05001478[];
extern const Gfx clam_shell_seg5_dl_050014F8[];
extern const Gfx clam_shell_seg5_dl_05001568[];
extern const struct Animation *const clam_shell_seg5_anims_05001744[];
extern const struct AnimationTable clam_shell_seg5_anims_05001744;
// manta
extern const Gfx manta_seg5_dl_05004960[];
@ -55,7 +55,7 @@ extern const Gfx manta_seg5_dl_05006B08[];
extern const Gfx manta_seg5_dl_05006B70[];
extern const Gfx manta_seg5_dl_05006C08[];
extern const GeoLayout manta_seg5_geo_05008D14[];
extern const struct Animation *const manta_seg5_anims_05008EB4[];
extern const struct AnimationTable manta_seg5_anims_05008EB4;
// sushi
extern const GeoLayout sushi_geo[];
@ -72,7 +72,7 @@ extern const Gfx sushi_seg5_dl_0500A860[];
extern const Gfx sushi_seg5_dl_0500A8A8[];
extern const Gfx sushi_seg5_dl_0500A958[];
extern const Gfx sushi_seg5_dl_0500A990[];
extern const struct Animation *const sushi_seg5_anims_0500AE54[];
extern const struct AnimationTable sushi_seg5_anims_0500AE54;
// unagi
extern const GeoLayout unagi_geo[];
@ -99,7 +99,7 @@ extern const Gfx unagi_seg5_dl_0500E030[];
extern const Gfx unagi_seg5_dl_0500E088[];
extern const Gfx unagi_seg5_dl_0500E200[];
extern const Gfx unagi_seg5_dl_0500E258[];
extern const struct Animation *const unagi_seg5_anims_05012824[];
extern const struct AnimationTable unagi_seg5_anims_05012824;
// whirlpool
extern const Gfx whirlpool_seg5_dl_05013B58[];

View file

@ -29,7 +29,7 @@ extern const Gfx eyerok_seg5_dl_0500CAE8[];
extern const Gfx eyerok_seg5_dl_0500CB80[];
extern const Gfx eyerok_seg5_dl_0500CC18[];
extern const Gfx eyerok_seg5_dl_0500CC30[];
extern const struct Animation *const eyerok_seg5_anims_050116E4[];
extern const struct AnimationTable eyerok_seg5_anims_050116E4;
// klepto
extern const GeoLayout klepto_geo[];
@ -65,7 +65,7 @@ extern const Gfx klepto_seg5_dl_05005020[];
extern const Gfx klepto_seg5_dl_05005068[];
extern const Gfx klepto_seg5_dl_05005130[];
extern const Gfx klepto_seg5_dl_05005178[];
extern const struct Animation *const klepto_seg5_anims_05008CFC[];
extern const struct AnimationTable klepto_seg5_anims_05008CFC;
// pokey
extern const GeoLayout pokey_head_geo[];

View file

@ -36,7 +36,7 @@ extern const Gfx monty_mole_seg5_dl_05004BE0[];
extern const Gfx monty_mole_seg5_dl_05004C00[];
extern const Gfx monty_mole_seg5_dl_05004CE8[];
extern const Gfx monty_mole_seg5_dl_05004D30[];
extern const struct Animation *const monty_mole_seg5_anims_05007248[];
extern const struct AnimationTable monty_mole_seg5_anims_05007248;
// monty_mole_hole
extern const Gfx monty_mole_hole_seg5_dl_05000840[];
@ -82,6 +82,6 @@ extern const Gfx ukiki_seg5_dl_0500CF68[];
extern const Gfx ukiki_seg5_dl_0500CFF0[];
extern const Gfx ukiki_seg5_dl_0500D078[];
extern const Gfx ukiki_seg5_dl_0500D108[];
extern const struct Animation *const ukiki_seg5_anims_05015784[];
extern const struct AnimationTable ukiki_seg5_anims_05015784;
#endif

View file

@ -21,7 +21,7 @@ extern const Gfx penguin_seg5_dl_05007238[];
extern const Gfx penguin_seg5_dl_050072C8[];
extern const Gfx penguin_seg5_dl_05007358[];
extern const Gfx penguin_seg5_dl_05007540[];
extern const struct Animation *const penguin_seg5_anims_05008B74[];
extern const struct AnimationTable penguin_seg5_anims_05008B74;
extern const Collision penguin_seg5_collision_05008B88[];
// snowman
@ -41,7 +41,7 @@ extern const Gfx snowman_seg5_dl_0500CBC0[];
extern const Gfx snowman_seg5_dl_0500CBF8[];
extern const Gfx snowman_seg5_dl_0500CCB0[];
extern const Gfx snowman_seg5_dl_0500CCE8[];
extern const struct Animation *const snowman_seg5_anims_0500D118[];
extern const struct AnimationTable snowman_seg5_anims_0500D118;
// spindrift
extern const GeoLayout spindrift_geo[];
@ -59,6 +59,6 @@ extern const Gfx spindrift_seg5_dl_05002AD8[];
extern const Gfx spindrift_seg5_dl_05002B30[];
extern const Gfx spindrift_seg5_dl_05002C98[];
extern const Gfx spindrift_seg5_dl_05002D08[];
extern const struct Animation *const spindrift_seg5_anims_05002D68[];
extern const struct AnimationTable spindrift_seg5_anims_05002D68;
#endif

View file

@ -34,7 +34,7 @@ extern const Gfx bookend_seg5_dl_050020E8[];
extern const Gfx bookend_seg5_dl_05002140[];
extern const Gfx bookend_seg5_dl_05002288[];
extern const Gfx bookend_seg5_dl_050022E0[];
extern const struct Animation *const bookend_seg5_anims_05002540[];
extern const struct AnimationTable bookend_seg5_anims_05002540;
// chair
extern const GeoLayout haunted_chair_geo[];
@ -46,7 +46,7 @@ extern const Gfx chair_seg5_dl_05005378[];
extern const Gfx chair_seg5_dl_05005408[];
extern const Gfx chair_seg5_dl_050055F0[];
extern const Gfx chair_seg5_dl_05005680[];
extern const struct Animation *const chair_seg5_anims_05005784[];
extern const struct AnimationTable chair_seg5_anims_05005784;
// haunted_cage
extern const GeoLayout haunted_cage_geo[];
@ -71,7 +71,7 @@ extern const Gfx mad_piano_seg5_dl_050097F8[];
extern const Gfx mad_piano_seg5_dl_05009840[];
extern const Gfx mad_piano_seg5_dl_05009888[];
extern const Gfx mad_piano_seg5_dl_050098E8[];
extern const struct Animation *const mad_piano_seg5_anims_05009B14[];
extern const struct AnimationTable mad_piano_seg5_anims_05009B14;
// small_key
extern const GeoLayout small_key_geo[];

View file

@ -1,6 +1,9 @@
// 0x0501534C
const struct Animation *const heave_ho_seg5_anims_0501534C[] = {
&heave_ho_seg5_anim_05015118,
&heave_ho_seg5_anim_05015334,
&heave_ho_seg5_anim_05014F28,
const struct AnimationTable heave_ho_seg5_anims_0501534C = {
.anims = {
&heave_ho_seg5_anim_05015118,
&heave_ho_seg5_anim_05015334,
&heave_ho_seg5_anim_05014F28,
},
.count = 3
};

View file

@ -1,5 +1,8 @@
// 0x05005768
const struct Animation *const hoot_seg5_anims_05005768[] = {
&hoot_seg5_anim_050053EC,
&hoot_seg5_anim_05005750,
const struct AnimationTable hoot_seg5_anims_05005768 = {
.anims = {
&hoot_seg5_anim_050053EC,
&hoot_seg5_anim_05005750,
},
.count = 2
};

View file

@ -1,15 +1,18 @@
// 0x0500FE30
const struct Animation *const king_bobomb_seg5_anims_0500FE30[] = {
&king_bobomb_seg5_anim_0500BDFC,
&king_bobomb_seg5_anim_0500C2AC,
&king_bobomb_seg5_anim_0500C520,
&king_bobomb_seg5_anim_0500C774,
&king_bobomb_seg5_anim_0500CFCC,
&king_bobomb_seg5_anim_0500D5B0,
&king_bobomb_seg5_anim_0500D978,
&king_bobomb_seg5_anim_0500DDD8,
&king_bobomb_seg5_anim_0500E10C,
&king_bobomb_seg5_anim_0500F078,
&king_bobomb_seg5_anim_0500F6C8,
&king_bobomb_seg5_anim_0500FE18,
const struct AnimationTable king_bobomb_seg5_anims_0500FE30 = {
.anims = {
&king_bobomb_seg5_anim_0500BDFC,
&king_bobomb_seg5_anim_0500C2AC,
&king_bobomb_seg5_anim_0500C520,
&king_bobomb_seg5_anim_0500C774,
&king_bobomb_seg5_anim_0500CFCC,
&king_bobomb_seg5_anim_0500D5B0,
&king_bobomb_seg5_anim_0500D978,
&king_bobomb_seg5_anim_0500DDD8,
&king_bobomb_seg5_anim_0500E10C,
&king_bobomb_seg5_anim_0500F078,
&king_bobomb_seg5_anim_0500F6C8,
&king_bobomb_seg5_anim_0500FE18,
},
.count = 12
};

View file

@ -1,12 +1,15 @@
// 0x05008CFC
const struct Animation *const klepto_seg5_anims_05008CFC[] = {
&klepto_seg5_anim_05005E44,
&klepto_seg5_anim_05007574,
&klepto_seg5_anim_050079B0,
&klepto_seg5_anim_05007E34,
&klepto_seg5_anim_050086C0,
&klepto_seg5_anim_05008A18,
&klepto_seg5_anim_05008CE4,
NULL,
NULL,
const struct AnimationTable klepto_seg5_anims_05008CFC = {
.anims = {
&klepto_seg5_anim_05005E44,
&klepto_seg5_anim_05007574,
&klepto_seg5_anim_050079B0,
&klepto_seg5_anim_05007E34,
&klepto_seg5_anim_050086C0,
&klepto_seg5_anim_05008A18,
&klepto_seg5_anim_05008CE4,
NULL,
NULL,
},
.count = 7
};

View file

@ -1,20 +1,23 @@
// 0x06011364
const struct Animation *const koopa_seg6_anims_06011364[] = {
&koopa_seg6_anim_0600CC24,
&koopa_seg6_anim_0600CFB8,
&koopa_seg6_anim_0600D518,
&koopa_seg6_anim_0600D804,
&koopa_seg6_anim_0600DD90,
&koopa_seg6_anim_0600E32C,
&koopa_seg6_anim_0600E928,
&koopa_seg6_anim_0600F3EC,
&koopa_seg6_anim_0600FB1C,
&koopa_seg6_anim_06010258,
&koopa_seg6_anim_06010634,
&koopa_seg6_anim_06010E48,
&koopa_seg6_anim_0601134C, // Hmm.. these last 2 are swapped.
&koopa_seg6_anim_060110D8,
NULL,
NULL,
NULL,
const struct AnimationTable koopa_seg6_anims_06011364 = {
.anims = {
&koopa_seg6_anim_0600CC24,
&koopa_seg6_anim_0600CFB8,
&koopa_seg6_anim_0600D518,
&koopa_seg6_anim_0600D804,
&koopa_seg6_anim_0600DD90,
&koopa_seg6_anim_0600E32C,
&koopa_seg6_anim_0600E928,
&koopa_seg6_anim_0600F3EC,
&koopa_seg6_anim_0600FB1C,
&koopa_seg6_anim_06010258,
&koopa_seg6_anim_06010634,
&koopa_seg6_anim_06010E48,
&koopa_seg6_anim_0601134C, // Hmm.. these last 2 are swapped.
&koopa_seg6_anim_060110D8,
NULL,
NULL,
NULL,
},
.count = 14
};

View file

@ -1,5 +1,8 @@
// 0x06001028
const struct Animation *const koopa_flag_seg6_anims_06001028[] = {
&koopa_flag_seg6_anim_06001010,
NULL,
const struct AnimationTable koopa_flag_seg6_anims_06001028 = {
.anims = {
&koopa_flag_seg6_anim_06001010,
NULL,
},
.count = 1
};

View file

@ -1,5 +1,8 @@
// 0x060058F8
const struct Animation *const lakitu_seg6_anims_060058F8[] = {
&lakitu_seg6_anim_060058E0,
NULL,
const struct AnimationTable lakitu_seg6_anims_060058F8 = {
.anims = {
&lakitu_seg6_anim_060058E0,
NULL,
},
.count = 1
};

View file

@ -1,10 +1,13 @@
// 0x050144D4
const struct Animation *const lakitu_enemy_seg5_anims_050144D4[] = {
&lakitu_enemy_seg5_anim_05013EDC,
&lakitu_enemy_seg5_anim_050140E8,
&lakitu_enemy_seg5_anim_050142E0,
&lakitu_enemy_seg5_anim_050144BC,
NULL,
NULL,
NULL,
const struct AnimationTable lakitu_enemy_seg5_anims_050144D4 = {
.anims = {
&lakitu_enemy_seg5_anim_05013EDC,
&lakitu_enemy_seg5_anim_050140E8,
&lakitu_enemy_seg5_anim_050142E0,
&lakitu_enemy_seg5_anim_050144BC,
NULL,
NULL,
NULL,
},
.count = 4
};

View file

@ -1,6 +1,9 @@
// 0x05009B14
const struct Animation *const mad_piano_seg5_anims_05009B14[] = {
&mad_piano_seg5_anim_05009A04,
&mad_piano_seg5_anim_05009AFC,
NULL,
const struct AnimationTable mad_piano_seg5_anims_05009B14 = {
.anims = {
&mad_piano_seg5_anim_05009A04,
&mad_piano_seg5_anim_05009AFC,
NULL,
},
.count = 2
};

View file

@ -1,6 +1,9 @@
// 0x05008EB4
const struct Animation *const manta_seg5_anims_05008EB4[] = {
&manta_seg5_anim_05008CFC,
NULL,
NULL,
const struct AnimationTable manta_seg5_anims_05008EB4 = {
.anims = {
&manta_seg5_anim_05008CFC,
NULL,
NULL,
},
.count = 1
};

View file

@ -1,10 +1,13 @@
// 0x06015634
const struct Animation *const mips_seg6_anims_06015634[] = {
&mips_seg6_anim_06014B94,
&mips_seg6_anim_060139F8,
&mips_seg6_anim_06013248,
&mips_seg6_anim_0601561C,
&mips_seg6_anim_0601369C,
NULL,
NULL,
const struct AnimationTable mips_seg6_anims_06015634 = {
.anims = {
&mips_seg6_anim_06014B94,
&mips_seg6_anim_060139F8,
&mips_seg6_anim_06013248,
&mips_seg6_anim_0601561C,
&mips_seg6_anim_0601369C,
NULL,
NULL,
},
.count = 5
};

View file

@ -1,8 +1,11 @@
// 0x06005E5C
const struct Animation *const moneybag_seg6_anims_06005E5C[] = {
&moneybag_seg6_anim_06005AD8,
&moneybag_seg6_anim_06005BEC,
&moneybag_seg6_anim_06005C98,
&moneybag_seg6_anim_06005D3C,
&moneybag_seg6_anim_06005E44,
const struct AnimationTable moneybag_seg6_anims_06005E5C = {
.anims = {
&moneybag_seg6_anim_06005AD8,
&moneybag_seg6_anim_06005BEC,
&moneybag_seg6_anim_06005C98,
&moneybag_seg6_anim_06005D3C,
&moneybag_seg6_anim_06005E44,
},
.count = 5
};

View file

@ -1,15 +1,18 @@
// 0x05007248
const struct Animation *const monty_mole_seg5_anims_05007248[] = {
&monty_mole_seg5_anim_05004FEC,
&monty_mole_seg5_anim_0500527C,
&monty_mole_seg5_anim_050054B0,
&monty_mole_seg5_anim_050062B0,
&monty_mole_seg5_anim_050065C0,
&monty_mole_seg5_anim_05006880,
&monty_mole_seg5_anim_05006B10,
&monty_mole_seg5_anim_05006DB8,
&monty_mole_seg5_anim_05007230,
&monty_mole_seg5_anim_050065D8,
NULL,
NULL,
const struct AnimationTable monty_mole_seg5_anims_05007248 = {
.anims = {
&monty_mole_seg5_anim_05004FEC,
&monty_mole_seg5_anim_0500527C,
&monty_mole_seg5_anim_050054B0,
&monty_mole_seg5_anim_050062B0,
&monty_mole_seg5_anim_050065C0,
&monty_mole_seg5_anim_05006880,
&monty_mole_seg5_anim_05006B10,
&monty_mole_seg5_anim_05006DB8,
&monty_mole_seg5_anim_05007230,
&monty_mole_seg5_anim_050065D8,
NULL,
NULL,
},
.count = 10
};

View file

@ -1,16 +1,19 @@
// 0x0501C41C
const struct Animation *const peach_seg5_anims_0501C41C[] = {
&peach_seg5_anim_0500C638,
&peach_seg5_anim_0500E6B4,
&peach_seg5_anim_0500ED94,
&peach_seg5_anim_0500F474,
&peach_seg5_anim_0500FE84,
&peach_seg5_anim_05011050,
&peach_seg5_anim_05012F40,
&peach_seg5_anim_05015468,
&peach_seg5_anim_05016798,
&peach_seg5_anim_05018664,
&peach_seg5_anim_0501B328,
&peach_seg5_anim_0501C404,
NULL,
const struct AnimationTable peach_seg5_anims_0501C41C = {
.anims = {
&peach_seg5_anim_0500C638,
&peach_seg5_anim_0500E6B4,
&peach_seg5_anim_0500ED94,
&peach_seg5_anim_0500F474,
&peach_seg5_anim_0500FE84,
&peach_seg5_anim_05011050,
&peach_seg5_anim_05012F40,
&peach_seg5_anim_05015468,
&peach_seg5_anim_05016798,
&peach_seg5_anim_05018664,
&peach_seg5_anim_0501B328,
&peach_seg5_anim_0501C404,
NULL,
},
.count = 12
};

View file

@ -1,8 +1,11 @@
// 0x05008B74
const struct Animation *const penguin_seg5_anims_05008B74[] = {
&penguin_seg5_anim_05008B5C,
&penguin_seg5_anim_050079E4,
&penguin_seg5_anim_05007DCC,
&penguin_seg5_anim_050087C0,
&penguin_seg5_anim_05008B5C, // duplicate pointer?
const struct AnimationTable penguin_seg5_anims_05008B74 = {
.anims = {
&penguin_seg5_anim_05008B5C,
&penguin_seg5_anim_050079E4,
&penguin_seg5_anim_05007DCC,
&penguin_seg5_anim_050087C0,
&penguin_seg5_anim_05008B5C, // duplicate pointer?
},
.count = 5
};

View file

@ -1,16 +1,19 @@
// 0x0601C31C
const struct Animation *const piranha_plant_seg6_anims_0601C31C[] = {
&piranha_plant_seg6_anim_06017C38,
&piranha_plant_seg6_anim_06017D88,
&piranha_plant_seg6_anim_060187B0,
&piranha_plant_seg6_anim_06018BA8,
&piranha_plant_seg6_anim_06019854,
&piranha_plant_seg6_anim_0601A014,
&piranha_plant_seg6_anim_0601AF34,
&piranha_plant_seg6_anim_0601AAE4,
&piranha_plant_seg6_anim_0601B634,
&piranha_plant_seg6_anim_0601C304,
NULL,
const struct AnimationTable piranha_plant_seg6_anims_0601C31C = {
.anims = {
&piranha_plant_seg6_anim_06017C38,
&piranha_plant_seg6_anim_06017D88,
&piranha_plant_seg6_anim_060187B0,
&piranha_plant_seg6_anim_06018BA8,
&piranha_plant_seg6_anim_06019854,
&piranha_plant_seg6_anim_0601A014,
&piranha_plant_seg6_anim_0601AF34,
&piranha_plant_seg6_anim_0601AAE4,
&piranha_plant_seg6_anim_0601B634,
&piranha_plant_seg6_anim_0601C304,
NULL,
},
.count = 10
};
// huh? this isnt following the Bin ID format?

View file

@ -1,4 +1,7 @@
// 0x06015064
const struct Animation *const scuttlebug_seg6_anims_06015064[] = {
&scuttlebug_seg6_anim_0601504C,
const struct AnimationTable scuttlebug_seg6_anims_06015064 = {
.anims = {
&scuttlebug_seg6_anim_0601504C,
},
.count = 1
};

View file

@ -1,4 +1,7 @@
// 0x0600A4D4
const struct Animation *const seaweed_seg6_anims_0600A4D4[] = {
&seaweed_seg6_anim_0600A4BC,
const struct AnimationTable seaweed_seg6_anims_0600A4D4 = {
.anims = {
&seaweed_seg6_anim_0600A4BC,
},
.count = 1
};

View file

@ -1,7 +1,10 @@
// 0x06007DE0
const struct Animation *const skeeter_seg6_anims_06007DE0[] = {
&skeeter_seg6_anim_06005D44,
&skeeter_seg6_anim_06006B70,
&skeeter_seg6_anim_060071E0,
&skeeter_seg6_anim_06007DC8,
const struct AnimationTable skeeter_seg6_anims_06007DE0 = {
.anims = {
&skeeter_seg6_anim_06005D44,
&skeeter_seg6_anim_06006B70,
&skeeter_seg6_anim_060071E0,
&skeeter_seg6_anim_06007DC8,
},
.count = 4
};

View file

@ -1,7 +1,10 @@
// 0x0500D118
const struct Animation *const snowman_seg5_anims_0500D118[] = {
&snowman_seg5_anim_0500CED8,
&snowman_seg5_anim_0500D100,
NULL,
NULL,
const struct AnimationTable snowman_seg5_anims_0500D118 = {
.anims = {
&snowman_seg5_anim_0500CED8,
&snowman_seg5_anim_0500D100,
NULL,
NULL,
},
.count = 2
};

View file

@ -1,7 +1,10 @@
// 0x05002D68
const struct Animation *const spindrift_seg5_anims_05002D68[] = {
&spindrift_seg5_anim_050006AC,
NULL,
NULL,
NULL,
const struct AnimationTable spindrift_seg5_anims_05002D68 = {
.anims = {
&spindrift_seg5_anim_050006AC,
NULL,
NULL,
NULL,
},
.count = 1
};

View file

@ -1,6 +1,9 @@
// 0x05016EAC
const struct Animation *const spiny_seg5_anims_05016EAC[] = {
&spiny_seg5_anim_05016E94,
NULL,
NULL,
const struct AnimationTable spiny_seg5_anims_05016EAC = {
.anims = {
&spiny_seg5_anim_05016E94,
NULL,
NULL,
},
.count = 1
};

View file

@ -1,6 +1,9 @@
// 0x050157E4
const struct Animation *const spiny_egg_seg5_anims_050157E4[] = {
&spiny_egg_seg5_anim_050157CC,
NULL,
NULL,
const struct AnimationTable spiny_egg_seg5_anims_050157E4 = {
.anims = {
&spiny_egg_seg5_anim_050157CC,
NULL,
NULL,
},
.count = 1
};

View file

@ -1,4 +1,7 @@
// 0x0500AE54
const struct Animation *const sushi_seg5_anims_0500AE54[] = {
&sushi_seg5_anim_0500AE3C,
const struct AnimationTable sushi_seg5_anims_0500AE54 = {
.anims = {
&sushi_seg5_anim_0500AE3C,
},
.count = 1
};

View file

@ -1,5 +1,8 @@
// 0x060070D0
const struct Animation *const swoop_seg6_anims_060070D0[] = {
&swoop_seg6_anim_06006E88,
&swoop_seg6_anim_060070B8,
const struct AnimationTable swoop_seg6_anims_060070D0 = {
.anims = {
&swoop_seg6_anim_06006E88,
&swoop_seg6_anim_060070B8,
},
.count = 2
};

View file

@ -1,11 +1,14 @@
// 0x0600FB58
const struct Animation *const toad_seg6_anims_0600FB58[] = {
&toad_seg6_anim_0600B66C,
&toad_seg6_anim_0600CE78,
&toad_seg6_anim_0600E414,
&toad_seg6_anim_0600FB40,
&toad_seg6_anim_060099F0,
&toad_seg6_anim_0600A0D0,
&toad_seg6_anim_06008F7C,
&toad_seg6_anim_06009310,
const struct AnimationTable toad_seg6_anims_0600FB58 = {
.anims = {
&toad_seg6_anim_0600B66C,
&toad_seg6_anim_0600CE78,
&toad_seg6_anim_0600E414,
&toad_seg6_anim_0600FB40,
&toad_seg6_anim_060099F0,
&toad_seg6_anim_0600A0D0,
&toad_seg6_anim_06008F7C,
&toad_seg6_anim_06009310,
},
.count = 8
};

View file

@ -1,18 +1,21 @@
// 0x05015784
const struct Animation *const ukiki_seg5_anims_05015784[] = {
&ukiki_seg5_anim_0500D658,
&ukiki_seg5_anim_0500DC80,
&ukiki_seg5_anim_0500DDEC,
&ukiki_seg5_anim_0500EACC,
&ukiki_seg5_anim_0500EEA8,
&ukiki_seg5_anim_0500F530,
&ukiki_seg5_anim_0500FC84,
&ukiki_seg5_anim_0501006C,
&ukiki_seg5_anim_050103F4,
&ukiki_seg5_anim_05012ABC,
&ukiki_seg5_anim_05014BE4,
&ukiki_seg5_anim_050153C4,
&ukiki_seg5_anim_0501576C,
NULL,
NULL,
const struct AnimationTable ukiki_seg5_anims_05015784 = {
.anims = {
&ukiki_seg5_anim_0500D658,
&ukiki_seg5_anim_0500DC80,
&ukiki_seg5_anim_0500DDEC,
&ukiki_seg5_anim_0500EACC,
&ukiki_seg5_anim_0500EEA8,
&ukiki_seg5_anim_0500F530,
&ukiki_seg5_anim_0500FC84,
&ukiki_seg5_anim_0501006C,
&ukiki_seg5_anim_050103F4,
&ukiki_seg5_anim_05012ABC,
&ukiki_seg5_anim_05014BE4,
&ukiki_seg5_anim_050153C4,
&ukiki_seg5_anim_0501576C,
NULL,
NULL,
},
.count = 13
};

View file

@ -1,10 +1,13 @@
// 0x05012824
const struct Animation *const unagi_seg5_anims_05012824[] = {
&unagi_seg5_anim_0500FBF4,
&unagi_seg5_anim_05010488,
&unagi_seg5_anim_05010B54,
&unagi_seg5_anim_05011488,
&unagi_seg5_anim_05011890,
&unagi_seg5_anim_05011D40,
&unagi_seg5_anim_0501280C,
const struct AnimationTable unagi_seg5_anims_05012824 = {
.anims = {
&unagi_seg5_anim_0500FBF4,
&unagi_seg5_anim_05010488,
&unagi_seg5_anim_05010B54,
&unagi_seg5_anim_05011488,
&unagi_seg5_anim_05011890,
&unagi_seg5_anim_05011D40,
&unagi_seg5_anim_0501280C,
},
.count = 7
};

View file

@ -1,6 +1,9 @@
// 0x06013F7C
const struct Animation *const water_ring_seg6_anims_06013F7C[] = {
&water_ring_seg6_anim_06013F64,
NULL,
NULL,
const struct AnimationTable water_ring_seg6_anims_06013F7C = {
.anims = {
&water_ring_seg6_anim_06013F64,
NULL,
NULL,
},
.count = 1
};

View file

@ -1,5 +1,8 @@
// 0x06020A04
const struct Animation *const whomp_seg6_anims_06020A04[] = {
&whomp_seg6_anim_060209EC,
&whomp_seg6_anim_060202DC,
const struct AnimationTable whomp_seg6_anims_06020A04 = {
.anims = {
&whomp_seg6_anim_060209EC,
&whomp_seg6_anim_060202DC,
},
.count = 2
};

View file

@ -1,4 +1,7 @@
// 0x0500C874
const struct Animation *const wiggler_seg5_anims_0500C874[] = {
&wiggler_seg5_anim_0500C760,
const struct AnimationTable wiggler_seg5_anims_0500C874 = {
.anims = {
&wiggler_seg5_anim_0500C760,
},
.count = 1
};

View file

@ -1,4 +1,7 @@
// 0x0500EC8C
const struct Animation *const wiggler_seg5_anims_0500EC8C[] = {
&wiggler_seg5_anim_0500EC74,
const struct AnimationTable wiggler_seg5_anims_0500EC8C = {
.anims = {
&wiggler_seg5_anim_0500EC74,
},
.count = 1
};

View file

@ -1,7 +1,10 @@
// 0x05024100
const struct Animation *const yoshi_seg5_anims_05024100[] = {
&yoshi_seg5_anim_050233A4,
&yoshi_seg5_anim_05023E4C,
&yoshi_seg5_anim_050240E8,
NULL,
const struct AnimationTable yoshi_seg5_anims_05024100 = {
.anims = {
&yoshi_seg5_anim_050233A4,
&yoshi_seg5_anim_05023E4C,
&yoshi_seg5_anim_050240E8,
NULL,
},
.count = 3
};

View file

@ -786,6 +786,32 @@ def process_files():
processed_files.append(process_file(f))
return processed_files
############################################################################
def output_nuke_function(fname, function):
first = True
comment = ''
fid = function['identifier']
print(fid + '(', end='')
for param in function['params']:
if first:
first = False
else:
print(', ', end='')
comment += ', '
pid = param['identifier']
ptype = param['type']
ptype, plink = translate_type_to_lua(ptype)
if ptype == '`integer`' or ptype == '`number`' or 'enum' in ptype:
print('0', end='')
else:
print('nil', end='')
comment += ptype
print(') -- ' + comment)
############################################################################
def doc_should_document(fname, identifier):
@ -847,6 +873,9 @@ def doc_function(fname, function):
if not function['implemented']:
return ''
# debug print out lua nuke functions
# output_nuke_function(fname, function)
if not doc_should_document(fname, function['identifier']):
return ''

View file

@ -102,6 +102,8 @@ override_field_immutable = {
"GraphNode": [ "next", "prev", "parent" ],
"ObjectWarpNode": [ "next "],
"SpawnInfo": [ "next" ],
"Animation": [ "length" ],
"AnimationTable": [ "count" ],
}
override_field_version_excludes = {

View file

@ -24,6 +24,9 @@
--- @field public unusedBoneCount integer
--- @field public values Pointer_integer
--- @class AnimationTable
--- @field public count integer
--- @class Area
--- @field public camera Camera
--- @field public flags integer

View file

@ -202,7 +202,7 @@ const BehaviorScript bhvKingBobomb[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvKingBobomb),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, king_bobomb_seg5_anims_0500FE30),
LOAD_ANIMATIONS(oAnimations, &king_bobomb_seg5_anims_0500FE30),
SET_INT(oInteractType, INTERACT_GRABBABLE),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 100),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
@ -432,7 +432,7 @@ const BehaviorScript bhvChuckya[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvChuckya),
OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, chuckya_seg8_anims_0800C070),
LOAD_ANIMATIONS(oAnimations, &chuckya_seg8_anims_0800C070),
ANIMATE(5),
SET_INT(oInteractType, INTERACT_GRABBABLE),
SET_HITBOX(/*Radius*/ 150, /*Height*/ 100),
@ -879,7 +879,7 @@ const BehaviorScript bhvDoor[] = {
SET_INT(oInteractType, INTERACT_DOOR),
// Door - common:
OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, door_seg3_anims_030156C0),
LOAD_ANIMATIONS(oAnimations, &door_seg3_anims_030156C0),
ANIMATE(0),
LOAD_COLLISION_DATA(door_seg3_collision_0301CE78),
SET_HITBOX(/*Radius*/ 80, /*Height*/ 100),
@ -1139,7 +1139,7 @@ const BehaviorScript bhvEndToad[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvEndToad),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, toad_seg6_anims_0600FB58),
LOAD_ANIMATIONS(oAnimations, &toad_seg6_anims_0600FB58),
ANIMATE(0),
BEGIN_LOOP(),
CALL_NATIVE(bhv_end_toad_loop),
@ -1150,7 +1150,7 @@ const BehaviorScript bhvEndPeach[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvEndPeach),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, peach_seg5_anims_0501C41C),
LOAD_ANIMATIONS(oAnimations, &peach_seg5_anims_0501C41C),
ANIMATE(0),
BEGIN_LOOP(),
CALL_NATIVE(bhv_end_peach_loop),
@ -1440,7 +1440,7 @@ const BehaviorScript bhvSpindrift[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvSpindrift),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, spindrift_seg5_anims_05002D68),
LOAD_ANIMATIONS(oAnimations, &spindrift_seg5_anims_05002D68),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_HOME(),
@ -1649,7 +1649,7 @@ const BehaviorScript bhvHeaveHo[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvHeaveHo),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, heave_ho_seg5_anims_0501534C),
LOAD_ANIMATIONS(oAnimations, &heave_ho_seg5_anims_0501534C),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 200, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 600, /*Unused*/ 0, 0),
SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvHeaveHoThrowMario),
@ -1864,7 +1864,7 @@ const BehaviorScript bhvBowser[] = {
SET_HITBOX(/*Radius*/ 400, /*Height*/ 400),
DROP_TO_FLOOR(),
SET_HOME(),
LOAD_ANIMATIONS(oAnimations, bowser_seg6_anims_06057690),
LOAD_ANIMATIONS(oAnimations, &bowser_seg6_anims_06057690),
SPAWN_CHILD(/*Model*/ MODEL_NONE, /*Behavior*/ bhvBowserBodyAnchor),
SPAWN_CHILD(/*Model*/ MODEL_BOWSER_BOMB_CHILD_OBJ, /*Behavior*/ bhvBowserFlameSpawn),
SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvBowserTailAnchor),
@ -2031,7 +2031,7 @@ const BehaviorScript bhvBlueFish[] = {
ID(id_bhvBlueFish),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_HOME(),
LOAD_ANIMATIONS(oAnimations, blue_fish_seg3_anims_0301C2B0),
LOAD_ANIMATIONS(oAnimations, &blue_fish_seg3_anims_0301C2B0),
ANIMATE(0),
BEGIN_LOOP(),
CALL_NATIVE(bhv_blue_fish_movement_loop),
@ -2074,7 +2074,7 @@ const BehaviorScript bhvCheckerboardPlatformSub[] = {
const BehaviorScript bhvBowserKeyUnlockDoor[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvBowserKeyUnlockDoor),
LOAD_ANIMATIONS(oAnimations, bowser_key_seg3_anims_list),
LOAD_ANIMATIONS(oAnimations, &bowser_key_seg3_anims_list),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BEGIN_LOOP(),
CALL_NATIVE(bhv_bowser_key_unlock_door_loop),
@ -2084,7 +2084,7 @@ const BehaviorScript bhvBowserKeyUnlockDoor[] = {
const BehaviorScript bhvBowserKeyCourseExit[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvBowserKeyCourseExit),
LOAD_ANIMATIONS(oAnimations, bowser_key_seg3_anims_list),
LOAD_ANIMATIONS(oAnimations, &bowser_key_seg3_anims_list),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BEGIN_LOOP(),
CALL_NATIVE(bhv_bowser_key_course_exit_loop),
@ -2163,7 +2163,7 @@ const BehaviorScript bhvMacroUkiki[] = {
SET_HITBOX(/*Radius*/ 40, /*Height*/ 40),
SET_INT(oIntangibleTimer, 0),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, ukiki_seg5_anims_05015784),
LOAD_ANIMATIONS(oAnimations, &ukiki_seg5_anims_05015784),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_HOME(),
@ -2383,7 +2383,7 @@ const BehaviorScript bhvPiranhaPlant[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvPiranhaPlant),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, piranha_plant_seg6_anims_0601C31C),
LOAD_ANIMATIONS(oAnimations, &piranha_plant_seg6_anims_0601C31C),
ANIMATE(0),
SET_INTERACT_TYPE(INTERACT_DAMAGE),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 200),
@ -2436,7 +2436,7 @@ const BehaviorScript bhvTuxiesMother[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvTuxiesMother),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),
LOAD_ANIMATIONS(oAnimations, &penguin_seg5_anims_05008B74),
ANIMATE(3),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),
SET_HOME(),
@ -2465,7 +2465,7 @@ const BehaviorScript bhvSmallPenguin[] = {
ID(id_bhvSmallPenguin),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),
LOAD_ANIMATIONS(oAnimations, &penguin_seg5_anims_05008B74),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_INT(oInteractType, INTERACT_GRABBABLE),
@ -2555,7 +2555,7 @@ const BehaviorScript bhvBub[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvBub),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, bub_seg6_anims_06012354),
LOAD_ANIMATIONS(oAnimations, &bub_seg6_anims_06012354),
ANIMATE(0),
SET_HITBOX_WITH_OFFSET(/*Radius*/ 20, /*Height*/ 10, /*Downwards offset*/ 10),
SET_INTERACT_TYPE(INTERACT_DAMAGE),
@ -2642,7 +2642,7 @@ const BehaviorScript bhvSushiShark[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvSushiShark),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, sushi_seg5_anims_0500AE54),
LOAD_ANIMATIONS(oAnimations, &sushi_seg5_anims_0500AE54),
SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvSushiSharkCollisionChild),
SET_HITBOX_WITH_OFFSET(/*Radius*/ 100, /*Height*/ 50, /*Downwards offset*/ 50),
SET_INTERACT_TYPE(INTERACT_DAMAGE),
@ -3269,7 +3269,7 @@ const BehaviorScript bhvScuttlebug[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvScuttlebug),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, scuttlebug_seg6_anims_06015064),
LOAD_ANIMATIONS(oAnimations, &scuttlebug_seg6_anims_06015064),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 80, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_HOME(),
@ -3302,7 +3302,7 @@ const BehaviorScript bhvSmallWhomp[] = {
SET_INT(oNumLootCoins, 5),
// Whomp - common:
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, whomp_seg6_anims_06020A04),
LOAD_ANIMATIONS(oAnimations, &whomp_seg6_anims_06020A04),
LOAD_COLLISION_DATA(whomp_seg6_collision_06020A0C),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
@ -3537,7 +3537,7 @@ const BehaviorScript bhvSLWalkingPenguin[] = {
ID(id_bhvSLWalkingPenguin),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(penguin_seg5_collision_05008B88),
LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),
LOAD_ANIMATIONS(oAnimations, &penguin_seg5_anims_05008B74),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SCALE(/*Unused*/ 0, /*Field*/ 600),
@ -3576,7 +3576,7 @@ const BehaviorScript bhvToadMessage[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvToadMessage),
OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, toad_seg6_anims_0600FB58),
LOAD_ANIMATIONS(oAnimations, &toad_seg6_anims_0600FB58),
ANIMATE(6),
SET_INTERACT_TYPE(INTERACT_TEXT),
SET_HITBOX(/*Radius*/ 80, /*Height*/ 100),
@ -3782,7 +3782,7 @@ const BehaviorScript bhvSeaweed[] = {
BEGIN(OBJ_LIST_LEVEL),
ID(id_bhvSeaweed),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, seaweed_seg6_anims_0600A4D4),
LOAD_ANIMATIONS(oAnimations, &seaweed_seg6_anims_0600A4D4),
ANIMATE(0),
CALL_NATIVE(bhv_seaweed_init),
BEGIN_LOOP(),
@ -3803,7 +3803,7 @@ const BehaviorScript bhvBobomb[] = {
BEGIN(OBJ_LIST_DESTRUCTIVE),
ID(id_bhvBobomb),
OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, bobomb_seg8_anims_0802396C),
LOAD_ANIMATIONS(oAnimations, &bobomb_seg8_anims_0802396C),
DROP_TO_FLOOR(),
ANIMATE(0),
SET_INT(oIntangibleTimer, 0),
@ -3832,7 +3832,7 @@ const BehaviorScript bhvBobombBuddy[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvBobombBuddy),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, bobomb_seg8_anims_0802396C),
LOAD_ANIMATIONS(oAnimations, &bobomb_seg8_anims_0802396C),
SET_INTERACT_TYPE(INTERACT_TEXT),
DROP_TO_FLOOR(),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 60),
@ -3851,7 +3851,7 @@ const BehaviorScript bhvBobombBuddyOpensCannon[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvBobombBuddyOpensCannon),
OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, bobomb_seg8_anims_0802396C),
LOAD_ANIMATIONS(oAnimations, &bobomb_seg8_anims_0802396C),
SET_INTERACT_TYPE(INTERACT_TEXT),
DROP_TO_FLOOR(),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 60),
@ -3932,7 +3932,7 @@ const BehaviorScript bhvHomingAmp[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvHomingAmp),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, amp_seg8_anims_08004034),
LOAD_ANIMATIONS(oAnimations, &amp_seg8_anims_08004034),
ANIMATE(0),
SET_FLOAT(oGraphYOffset, 40),
SET_INT(oIntangibleTimer, 0),
@ -3946,7 +3946,7 @@ const BehaviorScript bhvCirclingAmp[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvCirclingAmp),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, amp_seg8_anims_08004034),
LOAD_ANIMATIONS(oAnimations, &amp_seg8_anims_08004034),
ANIMATE(0),
SET_FLOAT(oGraphYOffset, 40),
SET_INT(oIntangibleTimer, 0),
@ -3960,7 +3960,7 @@ const BehaviorScript bhvButterfly[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvButterfly),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, butterfly_seg3_anims_030056B0),
LOAD_ANIMATIONS(oAnimations, &butterfly_seg3_anims_030056B0),
DROP_TO_FLOOR(),
SET_FLOAT(oGraphYOffset, 5),
CALL_NATIVE(bhv_butterfly_init),
@ -3973,7 +3973,7 @@ const BehaviorScript bhvHoot[] = {
BEGIN(OBJ_LIST_POLELIKE),
ID(id_bhvHoot),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, hoot_seg5_anims_05005768),
LOAD_ANIMATIONS(oAnimations, &hoot_seg5_anims_05005768),
SET_INT(oInteractType, INTERACT_HOOT),
SET_HITBOX(/*Radius*/ 75, /*Height*/ 75),
CALL_NATIVE(bhv_hoot_init),
@ -4148,7 +4148,7 @@ const BehaviorScript bhvSmallBully[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvSmallBully),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, bully_seg5_anims_0500470C),
LOAD_ANIMATIONS(oAnimations, &bully_seg5_anims_0500470C),
DROP_TO_FLOOR(),
SET_HOME(),
CALL_NATIVE(bhv_small_bully_init),
@ -4162,7 +4162,7 @@ const BehaviorScript bhvBigBully[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvBigBully),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, bully_seg5_anims_0500470C),
LOAD_ANIMATIONS(oAnimations, &bully_seg5_anims_0500470C),
DROP_TO_FLOOR(),
SET_HOME(),
CALL_NATIVE(bhv_big_bully_init),
@ -4176,7 +4176,7 @@ const BehaviorScript bhvBigBullyWithMinions[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvBigBullyWithMinions),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, bully_seg5_anims_0500470C),
LOAD_ANIMATIONS(oAnimations, &bully_seg5_anims_0500470C),
SET_HOME(),
CALL_NATIVE(bhv_big_bully_init),
CALL_NATIVE(bhv_big_bully_with_minions_init),
@ -4189,7 +4189,7 @@ const BehaviorScript bhvSmallChillBully[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvSmallChillBully),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, chilly_chief_seg6_anims_06003994),
LOAD_ANIMATIONS(oAnimations, &chilly_chief_seg6_anims_06003994),
DROP_TO_FLOOR(),
SET_HOME(),
SET_INT(oBullySubtype, 0x0010),
@ -4204,7 +4204,7 @@ const BehaviorScript bhvBigChillBully[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvBigChillBully),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, chilly_chief_seg6_anims_06003994),
LOAD_ANIMATIONS(oAnimations, &chilly_chief_seg6_anims_06003994),
DROP_TO_FLOOR(),
SET_HOME(),
SET_INT(oBullySubtype, 0x0010),
@ -4228,7 +4228,7 @@ const BehaviorScript bhvJetStreamWaterRing[] = {
BEGIN(OBJ_LIST_LEVEL),
ID(id_bhvJetStreamWaterRing),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, water_ring_seg6_anims_06013F7C),
LOAD_ANIMATIONS(oAnimations, &water_ring_seg6_anims_06013F7C),
SET_HITBOX_WITH_OFFSET(/*Radius*/ 75, /*Height*/ 20, /*Downwards offset*/ 20),
SET_INTERACT_TYPE(INTERACT_WATER_RING),
SET_INT(oDamageOrCoinValue, 2),
@ -4244,7 +4244,7 @@ const BehaviorScript bhvMantaRayWaterRing[] = {
BEGIN(OBJ_LIST_LEVEL),
ID(id_bhvMantaRayWaterRing),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, water_ring_seg6_anims_06013F7C),
LOAD_ANIMATIONS(oAnimations, &water_ring_seg6_anims_06013F7C),
SET_HITBOX_WITH_OFFSET(/*Radius*/ 75, /*Height*/ 20, /*Downwards offset*/ 20),
SET_INTERACT_TYPE(INTERACT_WATER_RING),
SET_INT(oDamageOrCoinValue, 2),
@ -4393,7 +4393,7 @@ const BehaviorScript bhvMoneybag[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvMoneybag),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, moneybag_seg6_anims_06005E5C),
LOAD_ANIMATIONS(oAnimations, &moneybag_seg6_anims_06005E5C),
DROP_TO_FLOOR(),
SET_HOME(),
SET_INT(oIntangibleTimer, -1),
@ -4598,7 +4598,7 @@ const BehaviorScript bhvCastleFlagWaving[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvCastleFlagWaving),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, castle_grounds_seg7_anims_flags),
LOAD_ANIMATIONS(oAnimations, &castle_grounds_seg7_anims_flags),
ANIMATE(0),
CALL_NATIVE(bhv_castle_flag_init),
BEGIN_LOOP(),
@ -5128,7 +5128,7 @@ const BehaviorScript bhvMantaRay[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvMantaRay),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, manta_seg5_anims_05008EB4),
LOAD_ANIMATIONS(oAnimations, &manta_seg5_anims_05008EB4),
ANIMATE(0),
CALL_NATIVE(bhv_manta_ray_init),
BEGIN_LOOP(),
@ -5249,7 +5249,7 @@ const BehaviorScript bhvMips[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvMips),
OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, mips_seg6_anims_06015634),
LOAD_ANIMATIONS(oAnimations, &mips_seg6_anims_06015634),
SET_INT(oInteractType, INTERACT_GRABBABLE),
DROP_TO_FLOOR(),
SET_HITBOX(/*Radius*/ 50, /*Height*/ 75),
@ -5264,7 +5264,7 @@ const BehaviorScript bhvYoshi[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvYoshi),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, yoshi_seg5_anims_05024100),
LOAD_ANIMATIONS(oAnimations, &yoshi_seg5_anims_05024100),
SET_INTERACT_TYPE(INTERACT_TEXT),
DROP_TO_FLOOR(),
SET_HITBOX(/*Radius*/ 160, /*Height*/ 150),
@ -5282,7 +5282,7 @@ const BehaviorScript bhvKoopa[] = {
ID(id_bhvKoopa),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, koopa_seg6_anims_06011364),
LOAD_ANIMATIONS(oAnimations, &koopa_seg6_anims_06011364),
ANIMATE(9),
SET_HOME(),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 50, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
@ -5313,7 +5313,7 @@ const BehaviorScript bhvKoopaFlag[] = {
SET_INT(oIntangibleTimer, 0),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, koopa_flag_seg6_anims_06001028),
LOAD_ANIMATIONS(oAnimations, &koopa_flag_seg6_anims_06001028),
ANIMATE(0),
BEGIN_LOOP(),
CALL_NATIVE(bhv_pole_base_loop),
@ -5347,7 +5347,7 @@ const BehaviorScript bhvSwoop[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvSwoop),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, swoop_seg6_anims_060070D0),
LOAD_ANIMATIONS(oAnimations, &swoop_seg6_anims_060070D0),
SET_HOME(),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 50, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),
CALL_NATIVE(bhv_init_room),
@ -5361,7 +5361,7 @@ const BehaviorScript bhvFlyGuy[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvFlyGuy),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, flyguy_seg8_anims_08011A64),
LOAD_ANIMATIONS(oAnimations, &flyguy_seg8_anims_08011A64),
ANIMATE(0),
SET_HOME(),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 50, /*Gravity*/ 0, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 600, /*Unused*/ 0, 0),
@ -5379,7 +5379,7 @@ const BehaviorScript bhvGoomba[] = {
ID(id_bhvGoomba),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, goomba_seg8_anims_0801DA4C),
LOAD_ANIMATIONS(oAnimations, &goomba_seg8_anims_0801DA4C),
SET_HOME(),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 0, /*Unused*/ 0, 0),
CALL_NATIVE(bhv_goomba_init),
@ -5403,7 +5403,7 @@ const BehaviorScript bhvChainChomp[] = {
ID(id_bhvChainChomp),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, chain_chomp_seg6_anims_06025178),
LOAD_ANIMATIONS(oAnimations, &chain_chomp_seg6_anims_06025178),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
HIDE(),
@ -5462,7 +5462,7 @@ const BehaviorScript bhvWigglerHead[] = {
ID(id_bhvWigglerHead),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, wiggler_seg5_anims_0500EC8C),
LOAD_ANIMATIONS(oAnimations, &wiggler_seg5_anims_0500EC8C),
SET_HOME(),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 60, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
HIDE(),
@ -5477,7 +5477,7 @@ const BehaviorScript bhvWigglerBody[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvWigglerBody),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, wiggler_seg5_anims_0500C874),
LOAD_ANIMATIONS(oAnimations, &wiggler_seg5_anims_0500C874),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SCALE(/*Unused*/ 0, /*Field*/ 400),
BEGIN_LOOP(),
@ -5489,7 +5489,7 @@ const BehaviorScript bhvEnemyLakitu[] = {
BEGIN(OBJ_LIST_PUSHABLE),
ID(id_bhvEnemyLakitu),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, lakitu_enemy_seg5_anims_050144D4),
LOAD_ANIMATIONS(oAnimations, &lakitu_enemy_seg5_anims_050144D4),
ANIMATE(0),
SET_HOME(),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
@ -5502,7 +5502,7 @@ const BehaviorScript bhvCameraLakitu[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvCameraLakitu),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, lakitu_seg6_anims_060058F8),
LOAD_ANIMATIONS(oAnimations, &lakitu_seg6_anims_060058F8),
ANIMATE(0),
CALL_NATIVE(bhv_init_room),
CALL_NATIVE(bhv_camera_lakitu_init),
@ -5537,7 +5537,7 @@ const BehaviorScript bhvSpiny[] = {
BEGIN(OBJ_LIST_PUSHABLE),
ID(id_bhvSpiny),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, spiny_seg5_anims_05016EAC),
LOAD_ANIMATIONS(oAnimations, &spiny_seg5_anims_05016EAC),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
BEGIN_LOOP(),
@ -5550,7 +5550,7 @@ const BehaviorScript bhvMontyMole[] = {
ID(id_bhvMontyMole),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, monty_mole_seg5_anims_05007248),
LOAD_ANIMATIONS(oAnimations, &monty_mole_seg5_anims_05007248),
ANIMATE(3),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
HIDE(),
@ -5801,7 +5801,7 @@ const BehaviorScript bhvMrBlizzard[] = {
ID(id_bhvMrBlizzard),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, snowman_seg5_anims_0500D118),
LOAD_ANIMATIONS(oAnimations, &snowman_seg5_anims_0500D118),
ANIMATE(0),
SET_HOME(),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
@ -5906,7 +5906,7 @@ const BehaviorScript bhvUnagi[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvUnagi),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, unagi_seg5_anims_05012824),
LOAD_ANIMATIONS(oAnimations, &unagi_seg5_anims_05012824),
ANIMATE(6),
SET_HOME(),
SCALE(/*Unused*/ 0, /*Field*/ 300),
@ -5931,7 +5931,7 @@ const BehaviorScript bhvDorrie[] = {
ID(id_bhvDorrie),
LOAD_COLLISION_DATA(dorrie_seg6_collision_0600F644),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, dorrie_seg6_anims_0600F638),
LOAD_ANIMATIONS(oAnimations, &dorrie_seg6_anims_0600F638),
SET_HOME(),
SET_FLOAT(oCollisionDistance, 30000),
ADD_FLOAT(oPosX, 2000),
@ -5947,7 +5947,7 @@ const BehaviorScript bhvHauntedChair[] = {
ID(id_bhvHauntedChair),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, chair_seg5_anims_05005784),
LOAD_ANIMATIONS(oAnimations, &chair_seg5_anims_05005784),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_HOME(),
@ -5963,7 +5963,7 @@ const BehaviorScript bhvMadPiano[] = {
ID(id_bhvMadPiano),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, mad_piano_seg5_anims_05009B14),
LOAD_ANIMATIONS(oAnimations, &mad_piano_seg5_anims_05009B14),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_HOME(),
ADD_INT(oMoveAngleYaw, 0x4000),
@ -5977,7 +5977,7 @@ const BehaviorScript bhvFlyingBookend[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvFlyingBookend),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, bookend_seg5_anims_05002540),
LOAD_ANIMATIONS(oAnimations, &bookend_seg5_anims_05002540),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 60, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_INT(oMoveFlags, 0),
@ -6026,7 +6026,7 @@ const BehaviorScript bhvFirePiranhaPlant[] = {
ID(id_bhvFirePiranhaPlant),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, piranha_plant_seg6_anims_0601C31C),
LOAD_ANIMATIONS(oAnimations, &piranha_plant_seg6_anims_0601C31C),
ANIMATE(0),
SET_HOME(),
HIDE(),
@ -6130,7 +6130,7 @@ const BehaviorScript bhvEyerokHand[] = {
BEGIN(OBJ_LIST_SURFACE),
ID(id_bhvEyerokHand),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, eyerok_seg5_anims_050116E4),
LOAD_ANIMATIONS(oAnimations, &eyerok_seg5_anims_050116E4),
ANIMATE(6),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 150, /*Gravity*/ 0, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_HOME(),
@ -6144,7 +6144,7 @@ const BehaviorScript bhvKlepto[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvKlepto),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, klepto_seg5_anims_05008CFC),
LOAD_ANIMATIONS(oAnimations, &klepto_seg5_anims_05008CFC),
ANIMATE(0),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 100, /*Gravity*/ 0, /*Bounciness*/ -20, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
SET_HOME(),
@ -6158,7 +6158,7 @@ const BehaviorScript bhvBird[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvBird),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, birds_seg5_anims_050009E8),
LOAD_ANIMATIONS(oAnimations, &birds_seg5_anims_050009E8),
ANIMATE(0),
HIDE(),
SCALE(/*Unused*/ 0, /*Field*/ 70),
@ -6171,7 +6171,7 @@ const BehaviorScript bhvRacingPenguin[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvRacingPenguin),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),
LOAD_ANIMATIONS(oAnimations, &penguin_seg5_anims_05008B74),
ANIMATE(3),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 300, /*Gravity*/ -800, /*Bounciness*/ -5, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),
SCALE(/*Unused*/ 0, /*Field*/ 400),
@ -6226,7 +6226,7 @@ const BehaviorScript bhvClamShell[] = {
ID(id_bhvClamShell),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_TO_FLOOR(),
LOAD_ANIMATIONS(oAnimations, clam_shell_seg5_anims_05001744),
LOAD_ANIMATIONS(oAnimations, &clam_shell_seg5_anims_05001744),
SET_FLOAT(oGraphYOffset, 10),
BEGIN_LOOP(),
CALL_NATIVE(bhv_clam_loop),
@ -6237,7 +6237,7 @@ const BehaviorScript bhvSkeeter[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvSkeeter),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, skeeter_seg6_anims_06007DE0),
LOAD_ANIMATIONS(oAnimations, &skeeter_seg6_anims_06007DE0),
SET_HOME(),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 180, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 1200, /*Unused*/ 0, 0),
BEGIN_LOOP(),
@ -6320,7 +6320,7 @@ const BehaviorScript bhvTripletButterfly[] = {
BEGIN(OBJ_LIST_GENACTOR),
ID(id_bhvTripletButterfly),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, butterfly_seg3_anims_030056B0),
LOAD_ANIMATIONS(oAnimations, &butterfly_seg3_anims_030056B0),
ANIMATE(0),
HIDE(),
SET_HOME(),
@ -6347,7 +6347,7 @@ const BehaviorScript bhvBeginningLakitu[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvBeginningLakitu),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, lakitu_seg6_anims_060058F8),
LOAD_ANIMATIONS(oAnimations, &lakitu_seg6_anims_060058F8),
ANIMATE(0),
SET_FLOAT(oOpacity, 0),
BEGIN_LOOP(),
@ -6359,7 +6359,7 @@ const BehaviorScript bhvBeginningPeach[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvBeginningPeach),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_ANIMATIONS(oAnimations, peach_seg5_anims_0501C41C),
LOAD_ANIMATIONS(oAnimations, &peach_seg5_anims_0501C41C),
ANIMATE(0),
BEGIN_LOOP(),
CALL_NATIVE(bhv_intro_peach_loop),
@ -6370,7 +6370,7 @@ const BehaviorScript bhvEndBirds1[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvEndBirds1),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, birds_seg5_anims_050009E8),
LOAD_ANIMATIONS(oAnimations, &birds_seg5_anims_050009E8),
ANIMATE(0),
BEGIN_LOOP(),
CALL_NATIVE(bhv_end_birds_1_loop),
@ -6381,7 +6381,7 @@ const BehaviorScript bhvEndBirds2[] = {
BEGIN(OBJ_LIST_DEFAULT),
ID(id_bhvEndBirds2),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_ANIMATIONS(oAnimations, birds_seg5_anims_050009E8),
LOAD_ANIMATIONS(oAnimations, &birds_seg5_anims_050009E8),
ANIMATE(0),
BEGIN_LOOP(),
CALL_NATIVE(bhv_end_birds_2_loop),

View file

@ -29,8 +29,9 @@ static s32 RetrieveCurrentAnimationIndex(struct Object *aObject) {
if (!aObject->oAnimations || !aObject->header.gfx.animInfo.curAnim || smlua_anim_util_get_current_animation_name(aObject)) {
return -1;
}
for (s32 i = 0; aObject->oAnimations[i] != NULL; ++i) {
if (aObject->oAnimations[i] == aObject->header.gfx.animInfo.curAnim) {
struct AnimationTable* animations = aObject->oAnimations;
for (s32 i = 0; i < animations->count; ++i) {
if (animations->anims[i] == aObject->header.gfx.animInfo.curAnim) {
return i;
}
}

View file

@ -88,6 +88,7 @@ extern "C" {
}
#define define_builtin(_ptr) (const void*)#_ptr, (const void*)_ptr
#define define_builtin_ptr(_ptr) (const void*)#_ptr, (const void*)&_ptr
#define define_animation_builtin(_ptr) (const void*)#_ptr, (const void*)_ptr
@ -1206,61 +1207,61 @@ const char* DynOS_Builtin_Col_GetFromData(const Collision* aData) {
////////////////
static const void* sDynosBuiltinAnims[] = {
define_builtin(amp_seg8_anims_08004034),
define_builtin(bobomb_seg8_anims_0802396C),
define_builtin(chuckya_seg8_anims_0800C070),
define_builtin(flyguy_seg8_anims_08011A64),
define_builtin(goomba_seg8_anims_0801DA4C),
define_builtin(blue_fish_seg3_anims_0301C2B0),
define_builtin(bowser_key_seg3_anims_list),
define_builtin(butterfly_seg3_anims_030056B0),
define_builtin(door_seg3_anims_030156C0),
define_builtin(heave_ho_seg5_anims_0501534C),
define_builtin(hoot_seg5_anims_05005768),
define_builtin(blargg_seg5_anims_0500616C),
define_builtin(bully_seg5_anims_0500470C),
define_builtin(king_bobomb_seg5_anims_0500FE30),
define_builtin(clam_shell_seg5_anims_05001744),
define_builtin(manta_seg5_anims_05008EB4),
define_builtin(sushi_seg5_anims_0500AE54),
define_builtin(unagi_seg5_anims_05012824),
define_builtin(eyerok_seg5_anims_050116E4),
define_builtin(klepto_seg5_anims_05008CFC),
define_builtin(monty_mole_seg5_anims_05007248),
define_builtin(ukiki_seg5_anims_05015784),
define_builtin(penguin_seg5_anims_05008B74),
define_builtin(snowman_seg5_anims_0500D118),
define_builtin(spindrift_seg5_anims_05002D68),
define_builtin(bookend_seg5_anims_05002540),
define_builtin(chair_seg5_anims_05005784),
define_builtin(mad_piano_seg5_anims_05009B14),
define_builtin(birds_seg5_anims_050009E8),
define_builtin(peach_seg5_anims_0501C41C),
define_builtin(yoshi_seg5_anims_05024100),
define_builtin(lakitu_enemy_seg5_anims_050144D4),
define_builtin(spiny_seg5_anims_05016EAC),
define_builtin(spiny_egg_seg5_anims_050157E4),
define_builtin(wiggler_seg5_anims_0500C874),
define_builtin(wiggler_seg5_anims_0500EC8C),
define_builtin(bowser_seg6_anims_06057690),
define_builtin(bub_seg6_anims_06012354),
define_builtin(cyan_fish_seg6_anims_0600E264),
define_builtin(seaweed_seg6_anims_0600A4D4),
define_builtin(skeeter_seg6_anims_06007DE0),
define_builtin(water_ring_seg6_anims_06013F7C),
define_builtin(chain_chomp_seg6_anims_06025178),
define_builtin(koopa_seg6_anims_06011364),
define_builtin(koopa_flag_seg6_anims_06001028),
define_builtin(piranha_plant_seg6_anims_0601C31C),
define_builtin(whomp_seg6_anims_06020A04),
define_builtin(lakitu_seg6_anims_060058F8),
define_builtin(mips_seg6_anims_06015634),
define_builtin(toad_seg6_anims_0600FB58),
define_builtin(chilly_chief_seg6_anims_06003994),
define_builtin(moneybag_seg6_anims_06005E5C),
define_builtin(dorrie_seg6_anims_0600F638),
define_builtin(scuttlebug_seg6_anims_06015064),
define_builtin(swoop_seg6_anims_060070D0),
define_builtin_ptr(amp_seg8_anims_08004034),
define_builtin_ptr(bobomb_seg8_anims_0802396C),
define_builtin_ptr(chuckya_seg8_anims_0800C070),
define_builtin_ptr(flyguy_seg8_anims_08011A64),
define_builtin_ptr(goomba_seg8_anims_0801DA4C),
define_builtin_ptr(blue_fish_seg3_anims_0301C2B0),
define_builtin_ptr(bowser_key_seg3_anims_list),
define_builtin_ptr(butterfly_seg3_anims_030056B0),
define_builtin_ptr(door_seg3_anims_030156C0),
define_builtin_ptr(heave_ho_seg5_anims_0501534C),
define_builtin_ptr(hoot_seg5_anims_05005768),
define_builtin_ptr(blargg_seg5_anims_0500616C),
define_builtin_ptr(bully_seg5_anims_0500470C),
define_builtin_ptr(king_bobomb_seg5_anims_0500FE30),
define_builtin_ptr(clam_shell_seg5_anims_05001744),
define_builtin_ptr(manta_seg5_anims_05008EB4),
define_builtin_ptr(sushi_seg5_anims_0500AE54),
define_builtin_ptr(unagi_seg5_anims_05012824),
define_builtin_ptr(eyerok_seg5_anims_050116E4),
define_builtin_ptr(klepto_seg5_anims_05008CFC),
define_builtin_ptr(monty_mole_seg5_anims_05007248),
define_builtin_ptr(ukiki_seg5_anims_05015784),
define_builtin_ptr(penguin_seg5_anims_05008B74),
define_builtin_ptr(snowman_seg5_anims_0500D118),
define_builtin_ptr(spindrift_seg5_anims_05002D68),
define_builtin_ptr(bookend_seg5_anims_05002540),
define_builtin_ptr(chair_seg5_anims_05005784),
define_builtin_ptr(mad_piano_seg5_anims_05009B14),
define_builtin_ptr(birds_seg5_anims_050009E8),
define_builtin_ptr(peach_seg5_anims_0501C41C),
define_builtin_ptr(yoshi_seg5_anims_05024100),
define_builtin_ptr(lakitu_enemy_seg5_anims_050144D4),
define_builtin_ptr(spiny_seg5_anims_05016EAC),
define_builtin_ptr(spiny_egg_seg5_anims_050157E4),
define_builtin_ptr(wiggler_seg5_anims_0500C874),
define_builtin_ptr(wiggler_seg5_anims_0500EC8C),
define_builtin_ptr(bowser_seg6_anims_06057690),
define_builtin_ptr(bub_seg6_anims_06012354),
define_builtin_ptr(cyan_fish_seg6_anims_0600E264),
define_builtin_ptr(seaweed_seg6_anims_0600A4D4),
define_builtin_ptr(skeeter_seg6_anims_06007DE0),
define_builtin_ptr(water_ring_seg6_anims_06013F7C),
define_builtin_ptr(chain_chomp_seg6_anims_06025178),
define_builtin_ptr(koopa_seg6_anims_06011364),
define_builtin_ptr(koopa_flag_seg6_anims_06001028),
define_builtin_ptr(piranha_plant_seg6_anims_0601C31C),
define_builtin_ptr(whomp_seg6_anims_06020A04),
define_builtin_ptr(lakitu_seg6_anims_060058F8),
define_builtin_ptr(mips_seg6_anims_06015634),
define_builtin_ptr(toad_seg6_anims_0600FB58),
define_builtin_ptr(chilly_chief_seg6_anims_06003994),
define_builtin_ptr(moneybag_seg6_anims_06005E5C),
define_builtin_ptr(dorrie_seg6_anims_0600F638),
define_builtin_ptr(scuttlebug_seg6_anims_06015064),
define_builtin_ptr(swoop_seg6_anims_060070D0),
};
const Animation *DynOS_Builtin_Anim_GetFromName(const char *aDataName) {

View file

@ -3,6 +3,7 @@
# Supported Structs
- [AnimInfo](#AnimInfo)
- [Animation](#Animation)
- [AnimationTable](#AnimationTable)
- [Area](#Area)
- [BassAudio](#BassAudio)
- [BehaviorDialogs](#BehaviorDialogs)
@ -107,7 +108,7 @@
| animYTransDivisor | `integer` | |
| flags | `integer` | |
| index | `Pointer` <`integer`> | |
| length | `integer` | |
| length | `integer` | read-only |
| loopEnd | `integer` | |
| loopStart | `integer` | |
| startFrame | `integer` | |
@ -118,6 +119,16 @@
<br />
## [AnimationTable](#AnimationTable)
| Field | Type | Access |
| ----- | ---- | ------ |
| count | `integer` | read-only |
[:arrow_up_small:](#)
<br />
## [Area](#Area)
| Field | Type | Access |

View file

@ -105,6 +105,11 @@ struct Animation {
/*0x14*/ u32 length; // only used with Mario animations to determine how much to load. 0 otherwise.
};
struct AnimationTable {
u32 count;
const struct Animation* const anims[];
};
#define ANIMINDEX_NUMPARTS(animindex) (sizeof(animindex) / sizeof(u16) / 6 - 1)
struct GraphNode
@ -195,7 +200,7 @@ struct Object
union {
s16 *asS16P[0x50];
s32 *asS32P[0x50];
struct Animation **asAnims[0x50];
struct AnimationTable *asAnims[0x50];
struct Waypoint *asWaypoint[0x50];
struct ChainSegment *asChainSegment[0x50];
struct Object *asObject[0x50];

View file

@ -36,6 +36,9 @@ static const struct Animation castle_grounds_seg7_anim_flags = {
};
// 0x0700C95C - 0x0700C960
const struct Animation *const castle_grounds_seg7_anims_flags[] = {
&castle_grounds_seg7_anim_flags, // 0x0700C944
const struct AnimationTable castle_grounds_seg7_anims_flags = {
.anims = {
&castle_grounds_seg7_anim_flags, // 0x0700C944
},
.count = 1
};

View file

@ -27,7 +27,7 @@ extern const Gfx castle_grounds_seg7_dl_0700C6A8[];
extern const Gfx castle_grounds_seg7_dl_0700C6E8[];
extern const Gfx castle_grounds_seg7_dl_0700C728[];
extern const Gfx castle_grounds_seg7_dl_0700C768[];
extern const struct Animation *const castle_grounds_seg7_anims_flags[];
extern const struct AnimationTable castle_grounds_seg7_anims_flags;
extern const Gfx castle_grounds_seg7_dl_0700EA58[];
extern const Gfx castle_grounds_seg7_us_dl_0700F2E8[];
extern const Collision castle_grounds_seg7_collision_level[];

View file

@ -585,9 +585,11 @@ static s32 bhv_cmd_load_animations(void) {
// Usage: ANIMATE(animIndex)
static s32 bhv_cmd_animate(void) {
s32 animIndex = BHV_CMD_GET_2ND_U8(0);
struct Animation **animations = gCurrentObject->oAnimations;
struct AnimationTable *animations = gCurrentObject->oAnimations;
geo_obj_init_animation(&gCurrentObject->header.gfx, &animations[animIndex]);
if (animations && (u32)animIndex < animations->count) {
geo_obj_init_animation(&gCurrentObject->header.gfx, (struct Animation*)animations->anims[animIndex]);
}
gCurBhvCommand++;
return BHV_PROC_CONTINUE;

View file

@ -775,16 +775,12 @@ void geo_obj_init_spawninfo(struct GraphNodeObject *graphNode, struct SpawnInfo
/**
* Initialize the animation of an object node
*/
void geo_obj_init_animation(struct GraphNodeObject *graphNode, struct Animation **animPtrAddr) {
if (graphNode == NULL) { return; }
if (animPtrAddr == NULL) { return; }
if (*animPtrAddr == NULL) { return; }
struct Animation **animSegmented = segmented_to_virtual(animPtrAddr);
struct Animation *anim = segmented_to_virtual(*animSegmented);
void geo_obj_init_animation(struct GraphNodeObject *graphNode, const struct Animation * const anim) {
if (!graphNode) { return; }
if (!anim) { return; }
if (graphNode->animInfo.curAnim != anim) {
graphNode->animInfo.curAnim = anim;
graphNode->animInfo.curAnim = (struct Animation*)anim;
graphNode->animInfo.animFrame = anim->startFrame + ((anim->flags & ANIM_FLAG_FORWARD) ? 1 : -1);
graphNode->animInfo.animAccel = 0;
graphNode->animInfo.animYTrans = 0;
@ -794,16 +790,12 @@ void geo_obj_init_animation(struct GraphNodeObject *graphNode, struct Animation
/**
* Initialize the animation of an object node
*/
void geo_obj_init_animation_accel(struct GraphNodeObject *graphNode, struct Animation **animPtrAddr, u32 animAccel) {
if (graphNode == NULL) { return; }
if (animPtrAddr == NULL) { return; }
if (*animPtrAddr == NULL) { return; }
struct Animation **animSegmented = segmented_to_virtual(animPtrAddr);
struct Animation *anim = segmented_to_virtual(*animSegmented);
void geo_obj_init_animation_accel(struct GraphNodeObject *graphNode, const struct Animation * const anim, u32 animAccel) {
if (!graphNode) { return; }
if (!anim) { return; }
if (graphNode->animInfo.curAnim != anim) {
graphNode->animInfo.curAnim = anim;
graphNode->animInfo.curAnim = (struct Animation*)anim;
graphNode->animInfo.animYTrans = 0;
graphNode->animInfo.animFrameAccelAssist =
(anim->startFrame << 16) + ((anim->flags & ANIM_FLAG_FORWARD) ? animAccel : -animAccel);

View file

@ -438,8 +438,8 @@ void geo_call_global_function_nodes(struct GraphNode *graphNode, s32 callContext
void geo_reset_object_node(struct GraphNodeObject *graphNode);
void geo_obj_init(struct GraphNodeObject *graphNode, void *sharedChild, Vec3f pos, Vec3s angle);
void geo_obj_init_spawninfo(struct GraphNodeObject *graphNode, struct SpawnInfo *spawn);
void geo_obj_init_animation(struct GraphNodeObject *graphNode, struct Animation **animPtrAddr);
void geo_obj_init_animation_accel(struct GraphNodeObject *graphNode, struct Animation **animPtrAddr, u32 animAccel);
void geo_obj_init_animation(struct GraphNodeObject *graphNode, const struct Animation * const anim);
void geo_obj_init_animation_accel(struct GraphNodeObject *graphNode, const struct Animation * const anim, u32 animAccel);
s32 retrieve_animation_index(s32 frame, u16 **attributes);

View file

@ -1287,14 +1287,16 @@ void bhv_bowser_loop(void) {
s32 angleToPlayer = player ? obj_angle_to_object(o, player) : 0;
// look for animation difference and override
struct AnimationTable *animations = o->oAnimations;
struct Animation* anim = NULL;
if (o->oAnimations != NULL && networkBowserAnimationIndex <= 26) {
anim = o->oAnimations[networkBowserAnimationIndex];
if (anim != NULL && o->header.gfx.animInfo.curAnim != anim) {
geo_obj_init_animation(&o->header.gfx, &anim);
if (animations && networkBowserAnimationIndex < animations->count) {
anim = (struct Animation*)animations->anims[networkBowserAnimationIndex];
if (o->header.gfx.animInfo.curAnim != anim) {
geo_obj_init_animation(&o->header.gfx, anim);
}
}
// If Bowser isn't in a cutscene, It's been played already.
if (!bowserCutscenePlayed && (o->oAction != 5 && o->oAction != 6 && o->oAction != 20)) {
bowserCutscenePlayed = TRUE;
@ -1345,11 +1347,13 @@ void bhv_bowser_loop(void) {
}
// update animation index
anim = o->oAnimations[networkBowserAnimationIndex];
if (o->header.gfx.animInfo.curAnim != anim) {
for (s32 i = 0; i < 32; i++) {
if (o->header.gfx.animInfo.curAnim == o->oAnimations[i]) {
networkBowserAnimationIndex = i;
if (animations) {
anim = (struct Animation*)animations->anims[networkBowserAnimationIndex];
if (o->header.gfx.animInfo.curAnim != anim) {
for (u32 i = 0; i < animations->count; i++) {
if (o->header.gfx.animInfo.curAnim == o->oAnimations->anims[i]) {
networkBowserAnimationIndex = i;
}
}
}
}

View file

@ -127,7 +127,7 @@ static void enemy_lakitu_sub_act_no_spiny(void) {
if (spiny != NULL) {
o->prevObj = spiny;
spiny->oAction = SPINY_ACT_HELD_BY_LAKITU;
obj_init_animation_with_sound(spiny, spiny_egg_seg5_anims_050157E4, 0);
obj_init_animation_with_sound(spiny, &spiny_egg_seg5_anims_050157E4, 0);
o->oEnemyLakituNumSpinies += 1;
o->oSubAction = ENEMY_LAKITU_SUB_ACT_HOLD_SPINY;

View file

@ -11,26 +11,26 @@ static void fish_spawner_act_spawn(void) {
s32 i = 0;
s32 schoolQuantity = 0;
s16 model = MODEL_ERROR_MODEL;
const struct Animation * const *fishAnimation = NULL;
const struct AnimationTable* fishAnimation = NULL;
struct Object *fishObject;
switch (o->oBehParams2ndByte) {
// Cases need to be on one line to match with and without optimizations.
case FISH_SPAWNER_BP_MANY_BLUE:
model = MODEL_FISH; schoolQuantity = 20; fishAnimation = blue_fish_seg3_anims_0301C2B0;
model = MODEL_FISH; schoolQuantity = 20; fishAnimation = &blue_fish_seg3_anims_0301C2B0;
break;
case FISH_SPAWNER_BP_FEW_BLUE:
model = MODEL_FISH; schoolQuantity = 5; fishAnimation = blue_fish_seg3_anims_0301C2B0;
model = MODEL_FISH; schoolQuantity = 5; fishAnimation = &blue_fish_seg3_anims_0301C2B0;
break;
case FISH_SPAWNER_BP_MANY_CYAN:
model = MODEL_CYAN_FISH; schoolQuantity = 20; fishAnimation = cyan_fish_seg6_anims_0600E264;
model = MODEL_CYAN_FISH; schoolQuantity = 20; fishAnimation = &cyan_fish_seg6_anims_0600E264;
break;
case FISH_SPAWNER_BP_FEW_CYAN:
model = MODEL_CYAN_FISH; schoolQuantity = 5; fishAnimation = cyan_fish_seg6_anims_0600E264;
model = MODEL_CYAN_FISH; schoolQuantity = 5; fishAnimation = &cyan_fish_seg6_anims_0600E264;
break;
}
@ -41,7 +41,7 @@ static void fish_spawner_act_spawn(void) {
fishObject = spawn_object(o, model, bhvFish);
if (fishObject == NULL) { continue; }
fishObject->oBehParams2ndByte = o->oBehParams2ndByte;
obj_init_animation_with_sound(fishObject, fishAnimation, 0);
obj_init_animation_with_sound(fishObject, (struct AnimationTable*)fishAnimation, 0);
obj_translate_xyz_random(fishObject, 700.0f);
}
o->oAction = FISH_SPAWNER_ACT_IDLE;

View file

@ -36,28 +36,28 @@ static u8 sSpinyWalkAttackHandlers[] = {
static u32 spinyAnimCache = 0;
static void spiny_to_anim_cache(void) {
if (o->oAnimations == (struct Animation**)spiny_egg_seg5_anims_050157E4) {
if (o->oAnimations == &spiny_egg_seg5_anims_050157E4) {
spinyAnimCache = 0;
} else if (o->oAnimations == (struct Animation**)spiny_seg5_anims_05016EAC) {
} else if (o->oAnimations == &spiny_seg5_anims_05016EAC) {
spinyAnimCache = 1;
}
}
static void spiny_from_anim_cache(void) {
struct Animation** anim = NULL;
struct AnimationTable* anim = NULL;
switch (spinyAnimCache) {
case 0:
anim = (struct Animation**)spiny_egg_seg5_anims_050157E4;
anim = (struct AnimationTable*)&spiny_egg_seg5_anims_050157E4;
break;
case 1:
anim = (struct Animation**)spiny_seg5_anims_05016EAC;
anim = (struct AnimationTable*)&spiny_seg5_anims_05016EAC;
break;
default:
break;
}
if (anim != o->oAnimations) {
obj_init_animation_with_sound(o, (const struct Animation* const*)anim, 0);
obj_init_animation_with_sound(o, anim, 0);
}
}
@ -203,7 +203,7 @@ static void spiny_act_thrown_by_lakitu(void) {
if (o->oMoveFlags & OBJ_MOVE_LANDED) {
cur_obj_play_sound_2(SOUND_OBJ_SPINY_UNK59);
cur_obj_set_model(smlua_model_util_load(E_MODEL_SPINY));
obj_init_animation_with_sound(o, spiny_seg5_anims_05016EAC, 0);
obj_init_animation_with_sound(o, (struct AnimationTable*)&spiny_seg5_anims_05016EAC, 0);
o->oGraphYOffset = -17.0f;
o->oFaceAnglePitch = 0;
@ -259,7 +259,7 @@ void bhv_spiny_update(void) {
if ((lakitu->oSubAction == ENEMY_LAKITU_SUB_ACT_HOLD_SPINY) && (o->oAction == SPINY_ACT_HELD_BY_LAKITU)) {
lakitu->prevObj = o;
o->oAction = SPINY_ACT_HELD_BY_LAKITU;
obj_init_animation_with_sound(o, spiny_egg_seg5_anims_050157E4, 0);
obj_init_animation_with_sound(o, (struct AnimationTable*)&spiny_egg_seg5_anims_050157E4, 0);
}
}
}

View file

@ -123,7 +123,7 @@ void bhv_shallow_water_splash_init(void) {
{
fishObj = spawn_water_droplet(o, &sWaterDropletFishParams);
if (fishObj != NULL) {
obj_init_animation_with_sound(fishObj, blue_fish_seg3_anims_0301C2B0, 0);
obj_init_animation_with_sound(fishObj, &blue_fish_seg3_anims_0301C2B0, 0);
}
}
}

View file

@ -151,7 +151,7 @@ void wiggler_init_segments(void) {
for (s32 i = 1; i <= 3; i++) {
struct Object *bodyPart = spawn_object_relative(i, 0, 0, 0, o, MODEL_WIGGLER_BODY, bhvWigglerBody);
if (bodyPart != NULL) {
obj_init_animation_with_sound(bodyPart, wiggler_seg5_anims_0500C874, 0);
obj_init_animation_with_sound(bodyPart, (struct AnimationTable*)&wiggler_seg5_anims_0500C874, 0);
bodyPart->header.gfx.animInfo.animFrame = (23 * i) % 26 - 1;
}
}

View file

@ -790,8 +790,10 @@ void obj_set_gfx_pos_from_pos(struct Object *obj) {
}
void obj_init_animation(struct Object *obj, s32 animIndex) {
struct Animation **anims = o->oAnimations;
geo_obj_init_animation(&obj->header.gfx, &anims[animIndex]);
struct AnimationTable *animations = o->oAnimations;
if (animations && (u32)animIndex < animations->count) {
geo_obj_init_animation(&obj->header.gfx, animations->anims[animIndex]);
}
}
/**
@ -871,46 +873,44 @@ void cur_obj_scale(f32 scale) {
}
void cur_obj_init_animation(s32 animIndex) {
struct Animation **anims = o->oAnimations;
if (anims != NULL) {
geo_obj_init_animation(&o->header.gfx, &anims[animIndex]);
struct AnimationTable *animations = o->oAnimations;
if (animations && (u32)animIndex < animations->count) {
geo_obj_init_animation(&o->header.gfx, animations->anims[animIndex]);
}
}
void cur_obj_init_animation_with_sound(s32 animIndex) {
struct Animation **anims = o->oAnimations;
if (anims != NULL) {
geo_obj_init_animation(&o->header.gfx, &anims[animIndex]);
struct AnimationTable *animations = o->oAnimations;
if (animations && (u32)animIndex < animations->count) {
geo_obj_init_animation(&o->header.gfx, animations->anims[animIndex]);
}
o->oSoundStateID = animIndex;
}
void obj_init_animation_with_accel_and_sound(struct Object *obj, s32 animIndex, f32 accel) {
if (obj != NULL) {
struct Animation **anims = obj->oAnimations;
if (anims != NULL) {
struct AnimationTable *animations = o->oAnimations;
if (animations && (u32)animIndex < animations->count) {
s32 animAccel = (s32)(accel * 65536.0f);
geo_obj_init_animation_accel(&obj->header.gfx, &anims[animIndex], animAccel);
geo_obj_init_animation_accel(&obj->header.gfx, animations->anims[animIndex], animAccel);
}
obj->oSoundStateID = animIndex;
}
}
void cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel) {
struct Animation **anims = o->oAnimations;
if (anims != NULL) {
struct AnimationTable *animations = o->oAnimations;
if (animations && (u32)animIndex < animations->count) {
s32 animAccel = (s32)(accel * 65536.0f);
geo_obj_init_animation_accel(&o->header.gfx, &anims[animIndex], animAccel);
geo_obj_init_animation_accel(&o->header.gfx, animations->anims[animIndex], animAccel);
}
o->oSoundStateID = animIndex;
}
void obj_init_animation_with_sound(struct Object *obj, const struct Animation * const* animations, s32 animIndex) {
void obj_init_animation_with_sound(struct Object *obj, const struct AnimationTable* animations, s32 animIndex) {
if (obj == NULL) { return; }
struct Animation **anims = (struct Animation **)animations;
obj->oAnimations = (struct Animation **)animations;
if (anims != NULL) {
geo_obj_init_animation(&obj->header.gfx, &anims[animIndex]);
if (animations && (u32)animIndex < animations->count) {
geo_obj_init_animation(&obj->header.gfx, animations->anims[animIndex]);
}
obj->oSoundStateID = animIndex;
}

View file

@ -138,7 +138,7 @@ void cur_obj_init_animation_with_sound(s32 animIndex);
void obj_init_animation_with_accel_and_sound(struct Object *obj, s32 animIndex, f32 accel);
void cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel);
void cur_obj_init_animation(s32 animIndex);
void obj_init_animation_with_sound(struct Object *obj, const struct Animation * const* animations, s32 animIndex);
void obj_init_animation_with_sound(struct Object *obj, const struct AnimationTable* animations, s32 animIndex);
void cur_obj_enable_rendering(void);
void cur_obj_disable_rendering(void);
void cur_obj_unhide(void);

View file

@ -43,7 +43,7 @@ static struct LuaObjectField sAnimationFields[LUA_ANIMATION_FIELD_COUNT] = {
{ "animYTransDivisor", LVT_S16, offsetof(struct Animation, animYTransDivisor), false, LOT_NONE },
{ "flags", LVT_S16, offsetof(struct Animation, flags), false, LOT_NONE },
{ "index", LVT_U16_P, offsetof(struct Animation, index), false, LOT_POINTER },
{ "length", LVT_U32, offsetof(struct Animation, length), false, LOT_NONE },
{ "length", LVT_U32, offsetof(struct Animation, length), true, LOT_NONE },
{ "loopEnd", LVT_S16, offsetof(struct Animation, loopEnd), false, LOT_NONE },
{ "loopStart", LVT_S16, offsetof(struct Animation, loopStart), false, LOT_NONE },
{ "startFrame", LVT_S16, offsetof(struct Animation, startFrame), false, LOT_NONE },
@ -51,6 +51,12 @@ static struct LuaObjectField sAnimationFields[LUA_ANIMATION_FIELD_COUNT] = {
{ "values", LVT_S16_P, offsetof(struct Animation, values), false, LOT_POINTER },
};
#define LUA_ANIMATION_TABLE_FIELD_COUNT 1
static struct LuaObjectField sAnimationTableFields[LUA_ANIMATION_TABLE_FIELD_COUNT] = {
// { "const anims", LOT_???, offsetof(struct AnimationTable, const anims), true, LOT_??? }, <--- UNIMPLEMENTED
{ "count", LVT_U32, offsetof(struct AnimationTable, count), true, LOT_NONE },
};
#define LUA_AREA_FIELD_COUNT 18
static struct LuaObjectField sAreaFields[LUA_AREA_FIELD_COUNT] = {
{ "camera", LVT_COBJECT_P, offsetof(struct Area, camera), false, LOT_CAMERA },
@ -2111,6 +2117,7 @@ static struct LuaObjectField sstruct802A1230Fields[LUA_STRUCT802_A1230_FIELD_COU
struct LuaObjectTable sLuaObjectAutogenTable[LOT_AUTOGEN_MAX - LOT_AUTOGEN_MIN] = {
{ LOT_ANIMINFO, sAnimInfoFields, LUA_ANIM_INFO_FIELD_COUNT },
{ LOT_ANIMATION, sAnimationFields, LUA_ANIMATION_FIELD_COUNT },
{ LOT_ANIMATIONTABLE, sAnimationTableFields, LUA_ANIMATION_TABLE_FIELD_COUNT },
{ LOT_AREA, sAreaFields, LUA_AREA_FIELD_COUNT },
{ LOT_BASSAUDIO, sBassAudioFields, LUA_BASS_AUDIO_FIELD_COUNT },
{ LOT_BEHAVIORDIALOGS, sBehaviorDialogsFields, LUA_BEHAVIOR_DIALOGS_FIELD_COUNT },

View file

@ -7,6 +7,7 @@ enum LuaObjectAutogenType {
LOT_AUTOGEN_MIN = 1000,
LOT_ANIMINFO,
LOT_ANIMATION,
LOT_ANIMATIONTABLE,
LOT_AREA,
LOT_BASSAUDIO,
LOT_BEHAVIORDIALOGS,

View file

@ -30,62 +30,62 @@
#include "levels/castle_grounds/header.h"
struct GlobalObjectAnimations gGlobalObjectAnimations = {
.amp_seg8_anims_08004034 = (struct Animation**) amp_seg8_anims_08004034,
.birds_seg5_anims_050009E8 = (struct Animation**) birds_seg5_anims_050009E8,
.blargg_seg5_anims_0500616C = (struct Animation**) blargg_seg5_anims_0500616C,
.blue_fish_seg3_anims_0301C2B0 = (struct Animation**) blue_fish_seg3_anims_0301C2B0,
.bobomb_seg8_anims_0802396C = (struct Animation**) bobomb_seg8_anims_0802396C,
.bookend_seg5_anims_05002540 = (struct Animation**) bookend_seg5_anims_05002540,
.bowser_key_seg3_anims_list = (struct Animation**) bowser_key_seg3_anims_list,
.bowser_seg6_anims_06057690 = (struct Animation**) bowser_seg6_anims_06057690,
.bub_seg6_anims_06012354 = (struct Animation**) bub_seg6_anims_06012354,
.bully_seg5_anims_0500470C = (struct Animation**) bully_seg5_anims_0500470C,
.butterfly_seg3_anims_030056B0 = (struct Animation**) butterfly_seg3_anims_030056B0,
.castle_grounds_seg7_anims_flags = (struct Animation**) castle_grounds_seg7_anims_flags,
.chain_chomp_seg6_anims_06025178 = (struct Animation**) chain_chomp_seg6_anims_06025178,
.chair_seg5_anims_05005784 = (struct Animation**) chair_seg5_anims_05005784,
.chilly_chief_seg6_anims_06003994 = (struct Animation**) chilly_chief_seg6_anims_06003994,
.chuckya_seg8_anims_0800C070 = (struct Animation**) chuckya_seg8_anims_0800C070,
.clam_shell_seg5_anims_05001744 = (struct Animation**) clam_shell_seg5_anims_05001744,
.cyan_fish_seg6_anims_0600E264 = (struct Animation**) cyan_fish_seg6_anims_0600E264,
.door_seg3_anims_030156C0 = (struct Animation**) door_seg3_anims_030156C0,
.dorrie_seg6_anims_0600F638 = (struct Animation**) dorrie_seg6_anims_0600F638,
.eyerok_seg5_anims_050116E4 = (struct Animation**) eyerok_seg5_anims_050116E4,
.flyguy_seg8_anims_08011A64 = (struct Animation**) flyguy_seg8_anims_08011A64,
.goomba_seg8_anims_0801DA4C = (struct Animation**) goomba_seg8_anims_0801DA4C,
.heave_ho_seg5_anims_0501534C = (struct Animation**) heave_ho_seg5_anims_0501534C,
.hoot_seg5_anims_05005768 = (struct Animation**) hoot_seg5_anims_05005768,
.king_bobomb_seg5_anims_0500FE30 = (struct Animation**) king_bobomb_seg5_anims_0500FE30,
.klepto_seg5_anims_05008CFC = (struct Animation**) klepto_seg5_anims_05008CFC,
.koopa_flag_seg6_anims_06001028 = (struct Animation**) koopa_flag_seg6_anims_06001028,
.koopa_seg6_anims_06011364 = (struct Animation**) koopa_seg6_anims_06011364,
.lakitu_enemy_seg5_anims_050144D4 = (struct Animation**) lakitu_enemy_seg5_anims_050144D4,
.lakitu_seg6_anims_060058F8 = (struct Animation**) lakitu_seg6_anims_060058F8,
.mad_piano_seg5_anims_05009B14 = (struct Animation**) mad_piano_seg5_anims_05009B14,
.manta_seg5_anims_05008EB4 = (struct Animation**) manta_seg5_anims_05008EB4,
.mips_seg6_anims_06015634 = (struct Animation**) mips_seg6_anims_06015634,
.moneybag_seg6_anims_06005E5C = (struct Animation**) moneybag_seg6_anims_06005E5C,
.monty_mole_seg5_anims_05007248 = (struct Animation**) monty_mole_seg5_anims_05007248,
.peach_seg5_anims_0501C41C = (struct Animation**) peach_seg5_anims_0501C41C,
.penguin_seg5_anims_05008B74 = (struct Animation**) penguin_seg5_anims_05008B74,
.piranha_plant_seg6_anims_0601C31C= (struct Animation**) piranha_plant_seg6_anims_0601C31C,
.scuttlebug_seg6_anims_06015064 = (struct Animation**) scuttlebug_seg6_anims_06015064,
.seaweed_seg6_anims_0600A4D4 = (struct Animation**) seaweed_seg6_anims_0600A4D4,
.skeeter_seg6_anims_06007DE0 = (struct Animation**) skeeter_seg6_anims_06007DE0,
.snowman_seg5_anims_0500D118 = (struct Animation**) snowman_seg5_anims_0500D118,
.spindrift_seg5_anims_05002D68 = (struct Animation**) spindrift_seg5_anims_05002D68,
.spiny_seg5_anims_05016EAC = (struct Animation**) spiny_seg5_anims_05016EAC,
.spiny_egg_seg5_anims_050157E4 = (struct Animation**) spiny_egg_seg5_anims_050157E4,
.sushi_seg5_anims_0500AE54 = (struct Animation**) sushi_seg5_anims_0500AE54,
.swoop_seg6_anims_060070D0 = (struct Animation**) swoop_seg6_anims_060070D0,
.toad_seg6_anims_0600FB58 = (struct Animation**) toad_seg6_anims_0600FB58,
.ukiki_seg5_anims_05015784 = (struct Animation**) ukiki_seg5_anims_05015784,
.unagi_seg5_anims_05012824 = (struct Animation**) unagi_seg5_anims_05012824,
.water_ring_seg6_anims_06013F7C = (struct Animation**) water_ring_seg6_anims_06013F7C,
.whomp_seg6_anims_06020A04 = (struct Animation**) whomp_seg6_anims_06020A04,
.wiggler_seg5_anims_0500C874 = (struct Animation**) wiggler_seg5_anims_0500C874,
.wiggler_seg5_anims_0500EC8C = (struct Animation**) wiggler_seg5_anims_0500EC8C,
.yoshi_seg5_anims_05024100 = (struct Animation**) yoshi_seg5_anims_05024100,
.amp_seg8_anims_08004034 = (struct AnimationTable*) &amp_seg8_anims_08004034,
.birds_seg5_anims_050009E8 = (struct AnimationTable*) &birds_seg5_anims_050009E8,
.blargg_seg5_anims_0500616C = (struct AnimationTable*) &blargg_seg5_anims_0500616C,
.blue_fish_seg3_anims_0301C2B0 = (struct AnimationTable*) &blue_fish_seg3_anims_0301C2B0,
.bobomb_seg8_anims_0802396C = (struct AnimationTable*) &bobomb_seg8_anims_0802396C,
.bookend_seg5_anims_05002540 = (struct AnimationTable*) &bookend_seg5_anims_05002540,
.bowser_key_seg3_anims_list = (struct AnimationTable*) &bowser_key_seg3_anims_list,
.bowser_seg6_anims_06057690 = (struct AnimationTable*) &bowser_seg6_anims_06057690,
.bub_seg6_anims_06012354 = (struct AnimationTable*) &bub_seg6_anims_06012354,
.bully_seg5_anims_0500470C = (struct AnimationTable*) &bully_seg5_anims_0500470C,
.butterfly_seg3_anims_030056B0 = (struct AnimationTable*) &butterfly_seg3_anims_030056B0,
.castle_grounds_seg7_anims_flags = (struct AnimationTable*) &castle_grounds_seg7_anims_flags,
.chain_chomp_seg6_anims_06025178 = (struct AnimationTable*) &chain_chomp_seg6_anims_06025178,
.chair_seg5_anims_05005784 = (struct AnimationTable*) &chair_seg5_anims_05005784,
.chilly_chief_seg6_anims_06003994 = (struct AnimationTable*) &chilly_chief_seg6_anims_06003994,
.chuckya_seg8_anims_0800C070 = (struct AnimationTable*) &chuckya_seg8_anims_0800C070,
.clam_shell_seg5_anims_05001744 = (struct AnimationTable*) &clam_shell_seg5_anims_05001744,
.cyan_fish_seg6_anims_0600E264 = (struct AnimationTable*) &cyan_fish_seg6_anims_0600E264,
.door_seg3_anims_030156C0 = (struct AnimationTable*) &door_seg3_anims_030156C0,
.dorrie_seg6_anims_0600F638 = (struct AnimationTable*) &dorrie_seg6_anims_0600F638,
.eyerok_seg5_anims_050116E4 = (struct AnimationTable*) &eyerok_seg5_anims_050116E4,
.flyguy_seg8_anims_08011A64 = (struct AnimationTable*) &flyguy_seg8_anims_08011A64,
.goomba_seg8_anims_0801DA4C = (struct AnimationTable*) &goomba_seg8_anims_0801DA4C,
.heave_ho_seg5_anims_0501534C = (struct AnimationTable*) &heave_ho_seg5_anims_0501534C,
.hoot_seg5_anims_05005768 = (struct AnimationTable*) &hoot_seg5_anims_05005768,
.king_bobomb_seg5_anims_0500FE30 = (struct AnimationTable*) &king_bobomb_seg5_anims_0500FE30,
.klepto_seg5_anims_05008CFC = (struct AnimationTable*) &klepto_seg5_anims_05008CFC,
.koopa_flag_seg6_anims_06001028 = (struct AnimationTable*) &koopa_flag_seg6_anims_06001028,
.koopa_seg6_anims_06011364 = (struct AnimationTable*) &koopa_seg6_anims_06011364,
.lakitu_enemy_seg5_anims_050144D4 = (struct AnimationTable*) &lakitu_enemy_seg5_anims_050144D4,
.lakitu_seg6_anims_060058F8 = (struct AnimationTable*) &lakitu_seg6_anims_060058F8,
.mad_piano_seg5_anims_05009B14 = (struct AnimationTable*) &mad_piano_seg5_anims_05009B14,
.manta_seg5_anims_05008EB4 = (struct AnimationTable*) &manta_seg5_anims_05008EB4,
.mips_seg6_anims_06015634 = (struct AnimationTable*) &mips_seg6_anims_06015634,
.moneybag_seg6_anims_06005E5C = (struct AnimationTable*) &moneybag_seg6_anims_06005E5C,
.monty_mole_seg5_anims_05007248 = (struct AnimationTable*) &monty_mole_seg5_anims_05007248,
.peach_seg5_anims_0501C41C = (struct AnimationTable*) &peach_seg5_anims_0501C41C,
.penguin_seg5_anims_05008B74 = (struct AnimationTable*) &penguin_seg5_anims_05008B74,
.piranha_plant_seg6_anims_0601C31C= (struct AnimationTable*) &piranha_plant_seg6_anims_0601C31C,
.scuttlebug_seg6_anims_06015064 = (struct AnimationTable*) &scuttlebug_seg6_anims_06015064,
.seaweed_seg6_anims_0600A4D4 = (struct AnimationTable*) &seaweed_seg6_anims_0600A4D4,
.skeeter_seg6_anims_06007DE0 = (struct AnimationTable*) &skeeter_seg6_anims_06007DE0,
.snowman_seg5_anims_0500D118 = (struct AnimationTable*) &snowman_seg5_anims_0500D118,
.spindrift_seg5_anims_05002D68 = (struct AnimationTable*) &spindrift_seg5_anims_05002D68,
.spiny_seg5_anims_05016EAC = (struct AnimationTable*) &spiny_seg5_anims_05016EAC,
.spiny_egg_seg5_anims_050157E4 = (struct AnimationTable*) &spiny_egg_seg5_anims_050157E4,
.sushi_seg5_anims_0500AE54 = (struct AnimationTable*) &sushi_seg5_anims_0500AE54,
.swoop_seg6_anims_060070D0 = (struct AnimationTable*) &swoop_seg6_anims_060070D0,
.toad_seg6_anims_0600FB58 = (struct AnimationTable*) &toad_seg6_anims_0600FB58,
.ukiki_seg5_anims_05015784 = (struct AnimationTable*) &ukiki_seg5_anims_05015784,
.unagi_seg5_anims_05012824 = (struct AnimationTable*) &unagi_seg5_anims_05012824,
.water_ring_seg6_anims_06013F7C = (struct AnimationTable*) &water_ring_seg6_anims_06013F7C,
.whomp_seg6_anims_06020A04 = (struct AnimationTable*) &whomp_seg6_anims_06020A04,
.wiggler_seg5_anims_0500C874 = (struct AnimationTable*) &wiggler_seg5_anims_0500C874,
.wiggler_seg5_anims_0500EC8C = (struct AnimationTable*) &wiggler_seg5_anims_0500EC8C,
.yoshi_seg5_anims_05024100 = (struct AnimationTable*) &yoshi_seg5_anims_05024100,
};
///////////////////////

View file

@ -3,7 +3,7 @@
#include "types.h"
typedef struct Animation* ObjectAnimPointer;
typedef struct AnimationTable ObjectAnimPointer;
struct GlobalObjectAnimations {
ObjectAnimPointer* amp_seg8_anims_08004034;