diff --git a/actors/group0_geo.c b/actors/group0_geo.c index 09b623a9..d8e3ad31 100644 --- a/actors/group0_geo.c +++ b/actors/group0_geo.c @@ -16,6 +16,4 @@ #include "water_splash/geo.inc.c" #include "sparkle_animation/geo.inc.c" #include "mario/geo.inc.c" -#include "mario/geo2.inc.c" #include "luigi/geo.inc.c" -#include "luigi/geo2.inc.c" diff --git a/actors/luigi/geo2.inc.c b/actors/luigi/geo2.inc.c deleted file mode 100644 index 3e262bc4..00000000 --- a/actors/luigi/geo2.inc.c +++ /dev/null @@ -1,954 +0,0 @@ -#include "src/game/envfx_snow.h" - -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt1[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_1___eye_half_1), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt2[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt3[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt4[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt5[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt6[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt7[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_7___eye_X_3), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_armature_002_switch_option_002[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt1), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt2), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt3), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt4), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt5), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt6), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt7), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_right_hand_open_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_002_switch_option_right_hand_open_mesh), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_left_hand_open_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_002_switch_option_left_hand_open_mesh), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_left_hand_peace_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_004_switch_option_left_hand_peace_mesh), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_left_hand_cap_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_005_switch_option_left_hand_cap_mesh), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_left_hand_wing_cap_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_006_switch_option_left_hand_wing_cap_mesh), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(4, luigi_006_switch_option_left_hand_wing_cap_wings_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt1[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_1___eye_half_1), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt2[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt3[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt4[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt5[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt6[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt7[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_7___eye_X_3), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_armature_002_switch_option_002[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt1), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt2), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt3), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt4), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt5), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt6), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt7), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_right_hand_open_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_002_switch_option_right_hand_open_mesh), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_open_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_002_switch_option_left_hand_open_mesh), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_peace_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_004_switch_option_left_hand_peace_mesh), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_cap_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_005_switch_option_left_hand_cap_mesh), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_wing_cap_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_006_switch_option_left_hand_wing_cap_mesh), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_006_switch_option_left_hand_wing_cap_wings_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt1[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh_mat_override_face_1___eye_half_1), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt2[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt3[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh_mat_override_face_7___eye_X_3), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt1[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_mesh), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 74, 0, 0, luigi_000_offset_001_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt1), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt2), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt3), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_armature_002_switch_option_002), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 15, -33, -133), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_001_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -15, 33, -133), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_002_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 67, -10, 70, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_003_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 65, 0, 0, luigi_000_offset_004_mesh), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_003_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_right_hand_open_armature), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 68, -10, -70, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_006_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 65, 0, 0, luigi_000_offset_007_mesh), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_004_mesh), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_open_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_peace_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_cap_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_wing_cap_armature), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 13, -8, 38, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_009_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 89, 0, 0, luigi_000_offset_010_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 67, 0, 0, luigi_000_offset_011_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 13, -8, -38, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_012_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 89, 0, 0, luigi_000_offset_013_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_005_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_armature_002_switch_option_002[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_right_hand_open_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_002_switch_option_right_hand_open_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_open_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_002_switch_option_left_hand_open_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_peace_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_004_switch_option_left_hand_peace_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_cap_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_005_switch_option_left_hand_cap_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_wing_cap_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, luigi_006_switch_option_left_hand_wing_cap_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(4, luigi_006_switch_option_left_hand_wing_cap_wings_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt2[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 74, 0, 0, luigi_000_offset_001_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_armature_002_switch_option_002), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 15, -33, -133), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(4, luigi_000_displaylist_001_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -15, 33, -133), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(4, luigi_000_displaylist_002_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 67, -10, 70, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_003_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 65, 0, 0, luigi_000_offset_004_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_003_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi_002_switch_opt0_001_switch_opt2_jump_luigi_right_hand_open_armature), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 68, -10, -70, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_006_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 65, 0, 0, luigi_000_offset_007_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_004_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_open_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_peace_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_cap_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_wing_cap_armature), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 13, -8, 38, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_009_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 89, 0, 0, luigi_000_offset_010_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 67, 0, 0, luigi_000_offset_011_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 13, -8, -38, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_012_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 89, 0, 0, luigi_000_offset_013_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_005_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_armature_002_switch_option_002[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_right_hand_open_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_002_switch_option_right_hand_open_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_open_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_002_switch_option_left_hand_open_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_peace_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_004_switch_option_left_hand_peace_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_cap_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_005_switch_option_left_hand_cap_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_wing_cap_armature[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 60, 0, 0, luigi_006_switch_option_left_hand_wing_cap_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_006_switch_option_left_hand_wing_cap_wings_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt3[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 74, 0, 0, luigi_000_offset_001_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_armature_002_switch_option_002), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 15, -33, -133), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_001_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -15, 33, -133), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_002_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 67, -10, 70, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_003_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 65, 0, 0, luigi_000_offset_004_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_003_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi_002_switch_opt0_001_switch_opt3_jump_luigi_right_hand_open_armature), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 68, -10, -70, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_006_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 65, 0, 0, luigi_000_offset_007_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_004_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_open_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_peace_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_cap_armature), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_wing_cap_armature), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 13, -8, 38, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_009_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 89, 0, 0, luigi_000_offset_010_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 67, 0, 0, luigi_000_offset_011_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 13, -8, -38, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_012_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(5, 89, 0, 0, luigi_000_offset_013_mesh_mat_override_metal_0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(5, luigi_000_displaylist_005_mesh_mat_override_metal_0), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt1[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh_mat_override_face_1___eye_half_1), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt2[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh_mat_override_face_2___eye_closed_2), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt3[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh_mat_override_face_7___eye_X_3), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; -const GeoLayout luigi2_geo[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SHADOW(0, 180, 100), - GEO_OPEN_NODE(), - GEO_SCALE(0, 17202), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_mirror_mario_backface_culling), - GEO_ASM(0, geo_mirror_mario_set_alpha), - GEO_SWITCH_CASE(1, geo_switch_mario_stand_run), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_effect), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_mesh), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 74, 0, 0, luigi_000_offset_001_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt1), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt2), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt3), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_armature_002_switch_option_002), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 15, -33, -133), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(4, luigi_000_displaylist_001_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -15, 33, -133), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(4, luigi_000_displaylist_002_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 67, -10, 70, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_003_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 65, 0, 0, luigi_000_offset_004_mesh), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_003_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_right_hand_open_armature), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 68, -10, -70, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_006_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 65, 0, 0, luigi_000_offset_007_mesh), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_004_mesh), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_left_hand_open_armature), - GEO_BRANCH(1, luigi2_left_hand_peace_armature), - GEO_BRANCH(1, luigi2_left_hand_cap_armature), - GEO_BRANCH(1, luigi2_left_hand_wing_cap_armature), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 13, -8, 38, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_009_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 89, 0, 0, luigi_000_offset_010_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 67, 0, 0, luigi_000_offset_011_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(1, 13, -8, -38, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_012_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 89, 0, 0, luigi_000_offset_013_mesh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(1, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(1, luigi_000_displaylist_005_mesh), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2), - GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ASM(1, geo_mirror_mario_backface_culling), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_DISPLAY_LIST(0, luigi_material_revert_render_settings), - GEO_DISPLAY_LIST(1, luigi_material_revert_render_settings), - GEO_DISPLAY_LIST(2, luigi_material_revert_render_settings), - GEO_DISPLAY_LIST(3, luigi_material_revert_render_settings), - GEO_DISPLAY_LIST(4, luigi_material_revert_render_settings), - GEO_DISPLAY_LIST(5, luigi_material_revert_render_settings), - GEO_DISPLAY_LIST(6, luigi_material_revert_render_settings), - GEO_DISPLAY_LIST(7, luigi_material_revert_render_settings), - GEO_CLOSE_NODE(), - GEO_END(), -}; diff --git a/actors/mario/geo2.inc.c b/actors/mario/geo2.inc.c deleted file mode 100644 index 7b536132..00000000 --- a/actors/mario/geo2.inc.c +++ /dev/null @@ -1,1825 +0,0 @@ -// Player 2's Mario Geo - -// 0x170002E0 -const GeoLayout mario2_geo_face_and_wings[] = { - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_front), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_half_closed), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_closed), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_right), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_left), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_up), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_down), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_dead), - GEO_CLOSE_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_front), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_half_closed), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_closed), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_right), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_left), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_up), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_down), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_dead), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // left - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // right - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x1700041C -const GeoLayout mario2_geo_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17000494 -const GeoLayout mario2_geo_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace), // here we go hand - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// The body loads all the parts with some shared dls to apply the solid color of the dl that has it, the same rule applies to the medium and low poly geos - -// 0x1700053C -const GeoLayout mario2_geo_body[] = { - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_butt), // starts sharing solid color with mario_torso (blue) - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_face_and_wings), // stops sharing because faces has its own dl - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_left_arm), // starts sharing solid color with mario_left_forearm (red) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_left_hand), // stops sharing because hand has its solid color (white) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_right_arm), // starts sharing solid color of his dl with mario_right_forearm (red) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_right_hand), // stops sharing because hand has its solid color (white) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_left_thigh), // starts sharing solid color of his dl with mario_left_leg (blue) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_left_foot), // stops sharing because foot has its solid color (brown) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_right_thigh), // starts sharing solid color of his dl with mario_left_leg (blue) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_right_foot), // stops sharing because foot has its solid color (brown) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x170006F8 -const GeoLayout mario2_geo_medium_poly_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17000770 -const GeoLayout mario2_geo_medium_poly_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace), // here we go hand - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17000818 -const GeoLayout mario2_geo_medium_poly_body[] = { - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_butt), // starts sharing solid color with mario_torso (blue) - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_medium_poly_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_face_and_wings), // stops sharing because faces has its own dl - medium poly mario uses high poly face - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_left_arm), // starts sharing solid color with mario_left_forearm (red) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_medium_poly_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_medium_poly_left_hand), // stops sharing because hand has its solid color (white) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_right_arm), // starts sharing solid color of his dl with mario_right_forearm (red) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_medium_poly_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_medium_poly_right_hand), // stops sharing because hand has its solid color (white) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_left_thigh), // starts sharing solid color of his dl with mario_left_leg (blue) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_medium_poly_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_medium_poly_left_foot), // stops sharing because foot has its solid color (brown) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_right_thigh), // starts sharing solid color of his dl with mario_left_leg (blue) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_medium_poly_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_right_foot), // stops sharing because foot has its solid color (brown) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x170009D4 -const GeoLayout mario2_geo_low_poly_face_and_wings[] = { - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_front), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_half_closed), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_closed), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_right), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_left), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_up), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_down), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_dead), - GEO_CLOSE_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_front), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_half_closed), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_closed), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_right), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_left), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_up), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_down), // unused - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_dead), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // left - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // right - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17000B10 -const GeoLayout mario2_geo_low_poly_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17000B88 -const GeoLayout mario2_geo_low_poly_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace), // here we go hand - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17000C30 -const GeoLayout mario2_geo_low_poly_body[] = { - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_butt), // starts sharing solid color with mario_torso (blue) - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_low_poly_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_low_poly_face_and_wings), // stops sharing because faces has its own dl - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_left_arm), // starts sharing solid color with mario_left_forearm (red) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_low_poly_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_low_poly_left_hand), // stops sharing because hand has its solid color (white) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_right_arm), // starts sharing solid color of his dl with mario_right_forearm (red) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_low_poly_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_low_poly_right_hand), // stops sharing because hand has its solid color (white) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_left_thigh), // starts sharing solid color of his dl with mario_left_leg (blue) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_low_poly_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_low_poly_left_foot), // stops sharing because foot has its solid color (brown) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_right_thigh), // starts sharing solid color of his dl with mario_left_leg (blue) - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_low_poly_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_right_foot), // stops sharing because foot has its solid color (brown) - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// Vanish Mario Geo - -// 0x17000DEC -const GeoLayout mario2_vanish_geo_face_and_wings[] = { - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_front), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_half_closed), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_closed), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_right), // unused - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_left), // unused - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_up), // unused - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_down), // unused - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_dead), - GEO_CLOSE_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_front), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_half_closed), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_closed), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_right), // unused - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_left), // unused - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_up), // unused - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_down), // unused - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_dead), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17000F28 -const GeoLayout mario2_vanish_geo_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17000FA0 -const GeoLayout mario2_vanish_geo_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace), // here we go hand - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// Same rule body as Normal Mario - -// 0x17001048 -const GeoLayout mario2_vanish_geo_body[] = { - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_butt), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_face_and_wings), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_left_arm), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_right_arm), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_right_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_left_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_left_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_right_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17001204 -const GeoLayout mario2_vanish_geo_medium_poly_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x1700127C -const GeoLayout mario2_vanish_geo_medium_poly_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace), // here we go hand - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17001324 -const GeoLayout mario2_vanish_geo_medium_poly_body[] = { - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_butt), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_medium_poly_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_face_and_wings), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_left_arm), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_medium_poly_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_medium_poly_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_right_arm), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_medium_poly_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_medium_poly_right_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_left_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_medium_poly_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_medium_poly_left_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_right_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_medium_poly_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x170014E0 -const GeoLayout mario2_vanish_geo_low_poly_face_and_wings[] = { - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_front), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_half_closed), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_closed), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_right), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_left), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_up), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_down), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_dead), - GEO_CLOSE_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_eyes), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_front), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_half_closed), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_closed), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_right), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_left), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_up), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_down), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_dead), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x1700161C -const GeoLayout mario2_vanish_geo_low_poly_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17001694 -const GeoLayout mario2_vanish_geo_low_poly_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace), // here we go hand - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x1700173C -const GeoLayout mario2_vanish_geo_low_poly_body[] = { - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_butt), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_low_poly_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_low_poly_face_and_wings), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_left_arm), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_low_poly_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_low_poly_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_right_arm), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_low_poly_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_vanish_geo_low_poly_right_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_left_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_low_poly_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_low_poly_left_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_right_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_low_poly_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// Metal Mario Geo - -// 0x170018F8 -const GeoLayout mario2_metal_geo_face_and_wings[] = { - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_cap_on_shared_dl), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_cap_off_shared_dl), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings), // left - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings), // right - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x170019A4 -const GeoLayout mario2_metal_geo_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17001A1C -const GeoLayout mario2_metal_geo_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// A difference from Normal Mario is that the dls after the butt and left thigh shares the metal texture of it, same rule applies to the medium and low poly geos - -// 0x17001AC4 -const GeoLayout mario2_metal_geo_body[] = { - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_butt), // starts sharing metal texture with the dls below - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_torso_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_face_and_wings), // unlike normal mario geo, these dls still share the metal texture - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_left_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_right_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_right_hand), // stop sharing because the wing metal cap of it - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_left_thigh), // starts sharing metal texture with the dls below - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_left_foot_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_right_thigh_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17001C80 -const GeoLayout mario2_metal_geo_medium_poly_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17001CF8 -const GeoLayout mario2_metal_geo_medium_poly_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_medium_poly_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17001DA0 -const GeoLayout mario2_metal_geo_medium_poly_body[] = { - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_medium_poly_butt), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_medium_poly_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_face_and_wings), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_left_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_medium_poly_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_medium_poly_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_right_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_medium_poly_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_medium_poly_right_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_medium_poly_left_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_medium_poly_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_medium_poly_left_foot_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_right_thigh_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_medium_poly_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_medium_poly_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17001F5C -const GeoLayout mario2_metal_geo_low_poly_face_and_wings[] = { - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_cap_on), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_cap_off), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002008 -const GeoLayout mario2_metal_geo_low_poly_left_hand[] = { - GEO_SWITCH_CASE(3, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002080 -const GeoLayout mario2_metal_geo_low_poly_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002128 -const GeoLayout mario2_metal_geo_low_poly_body[] = { - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_low_poly_butt), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_low_poly_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_low_poly_face_and_wings), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_left_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_low_poly_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_low_poly_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_right_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_low_poly_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_geo_low_poly_right_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_low_poly_left_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_low_poly_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_low_poly_left_foot_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_right_thigh_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_low_poly_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// Metal Vanish Mario Geo - -// 0x170022E4 -const GeoLayout mario2_metal_vanish_geo_face_and_wings[] = { - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_on_shared_dl), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_off_shared_dl), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002390 -const GeoLayout mario2_metal_vanish_geo_left_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002408 -const GeoLayout mario2_metal_vanish_geo_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// Same rules as Metal Mario - -// 0x170024B0 -const GeoLayout mario2_metal_vanish_geo_body[] = { - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_butt), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_torso_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_face_and_wings), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_left_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_right_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_right_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_left_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_left_foot_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_right_thigh_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x1700266C -const GeoLayout mario2_metal_vanish_geo_medium_poly_left_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x170026E4 -const GeoLayout mario2_metal_vanish_geo_medium_poly_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_medium_poly_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x1700278C -const GeoLayout mario2_metal_vanish_geo_medium_poly_body[] = { - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_medium_poly_butt), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_medium_poly_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_face_and_wings), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_left_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_medium_poly_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_medium_poly_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_right_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_medium_poly_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_medium_poly_right_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_medium_poly_left_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_medium_poly_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_medium_poly_left_foot_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_right_thigh_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_medium_poly_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_medium_poly_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002958 -const GeoLayout mario2_metal_vanish_geo_low_poly_face_and_wings[] = { - GEO_ASM(1, geo_mario_head_rotation), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_cap_on), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_cap_off), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135), - GEO_OPEN_NODE(), - GEO_ASM(2, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135), - GEO_OPEN_NODE(), - GEO_ASM(3, geo_mario_rotate_wing_cap_wings), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002A04 -const GeoLayout mario2_metal_vanish_geo_low_poly_left_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(5, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002A7C -const GeoLayout mario2_metal_vanish_geo_low_poly_right_hand[] = { - GEO_SWITCH_CASE(2, geo_switch_mario_hand), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(4, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_right_hand_closed), - GEO_CLOSE_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_open), - GEO_OPEN_NODE(), - GEO_HELD_OBJECT(0x01, 0, 0, 0, geo_switch_mario_hand_grab_pos), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002B24 -const GeoLayout mario2_metal_vanish_geo_low_poly_body[] = { - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_low_poly_butt), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_move_mario_part_from_parent), - GEO_ASM(1, geo_mario_tilt_torso), - GEO_ROTATION_NODE(0x00, 0, 0, 0), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_low_poly_torso), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_low_poly_face_and_wings), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_left_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_low_poly_left_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_low_poly_left_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_right_arm_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_low_poly_right_forearm_shared_dl), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_metal_vanish_geo_low_poly_right_hand), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_low_poly_left_thigh), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_low_poly_left_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_low_poly_left_foot_shared_dl), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_right_thigh_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_low_poly_right_leg_shared_dl), - GEO_OPEN_NODE(), - GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL), - GEO_OPEN_NODE(), - GEO_ASM(6, geo_mario_hand_foot_scaler), - GEO_SCALE(0x00, 65536), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_right_foot), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// High Poly - -// 0x17002CE0 -const GeoLayout mario2_geo_load_body[] = { - GEO_SWITCH_CASE(1, geo_switch_mario_cap_effect), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_body), - GEO_BRANCH(1, mario2_vanish_geo_body), - GEO_BRANCH(1, mario2_metal_geo_body), - GEO_BRANCH(1, mario2_metal_vanish_geo_body), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// Medium Poly - -// 0x17002D14 -const GeoLayout mario2_geo_load_medium_poly_body[] = { - GEO_SWITCH_CASE(1, geo_switch_mario_cap_effect), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_medium_poly_body), - GEO_BRANCH(1, mario2_vanish_geo_medium_poly_body), - GEO_BRANCH(1, mario2_metal_geo_medium_poly_body), - GEO_BRANCH(1, mario2_metal_vanish_geo_medium_poly_body), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// Low Poly - -// 0x17002D48 -const GeoLayout mario2_geo_load_low_poly_body[] = { - GEO_SWITCH_CASE(1, geo_switch_mario_cap_effect), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_low_poly_body), - GEO_BRANCH(1, mario2_vanish_geo_low_poly_body), - GEO_BRANCH(1, mario2_metal_geo_low_poly_body), - GEO_BRANCH(1, mario2_metal_vanish_geo_low_poly_body), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// 0x17002D7C -const GeoLayout mario2_geo_render_body[] = { - GEO_NODE_START(), - GEO_OPEN_NODE(), - GEO_RENDER_RANGE(-2048, 600), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_load_body), - GEO_CLOSE_NODE(), - GEO_RENDER_RANGE(600, 1600), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_load_medium_poly_body), - GEO_CLOSE_NODE(), - GEO_RENDER_RANGE(1600, 32767), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_load_low_poly_body), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_RETURN(), -}; - -// This last geo is used to load all of Mario Geo in the Level Scripts - -// 0x17002DD4 -const GeoLayout mario2_geo[] = { - GEO_SHADOW(SHADOW_CIRCLE_PLAYER, 0xB4, 100), - GEO_OPEN_NODE(), - GEO_SCALE(0x00, 16384), - GEO_OPEN_NODE(), - GEO_ASM(0, geo_mirror_mario_backface_culling), - GEO_ASM(1, geo_mirror_mario_set_alpha), - GEO_SWITCH_CASE(1, geo_switch_mario_stand_run), - GEO_OPEN_NODE(), - GEO_BRANCH(1, mario2_geo_load_body), - GEO_BRANCH(1, mario2_geo_render_body), - GEO_CLOSE_NODE(), - GEO_ASM(1, geo_mirror_mario_backface_culling), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), - GEO_END(), -}; diff --git a/include/model_ids.h b/include/model_ids.h index e6699085..44b93595 100644 --- a/include/model_ids.h +++ b/include/model_ids.h @@ -24,11 +24,7 @@ /* Global models that are loaded for every level */ #define MODEL_MARIO 0x01 // mario_geo -#define MODEL_MARIO2 0x02 // mario2_geo - #define MODEL_LUIGI 0xE2 // luigi_geo -#define MODEL_LUIGI2 0xE3 // luigi2_geo - #define MODEL_BUBBLE_PLAYER 0xE4 // water_bomb_geo /* Various static level geometry, the geo layout differs but terrain object presets treat them the same.*/ diff --git a/levels/scripts.c b/levels/scripts.c index e7ea643f..5d80bd34 100644 --- a/levels/scripts.c +++ b/levels/scripts.c @@ -66,9 +66,7 @@ const LevelScript level_main_scripts_entry[] = { LOAD_RAW( /*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd), ALLOC_LEVEL_POOL(), LOAD_MODEL_FROM_GEO(MODEL_MARIO, mario_geo), - LOAD_MODEL_FROM_GEO(MODEL_MARIO2, mario2_geo), LOAD_MODEL_FROM_GEO(MODEL_LUIGI, luigi_geo), - LOAD_MODEL_FROM_GEO(MODEL_LUIGI2, luigi2_geo), LOAD_MODEL_FROM_GEO(MODEL_BUBBLE_PLAYER, water_bomb_geo), LOAD_MODEL_FROM_GEO(MODEL_SMOKE, smoke_geo), LOAD_MODEL_FROM_GEO(MODEL_SPARKLES, sparkles_geo), diff --git a/network.sh b/network.sh index b1160372..41300fc8 100755 --- a/network.sh +++ b/network.sh @@ -1,8 +1,8 @@ set -e if [ $# -eq 0 ]; then - make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 + make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 -j else - make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 STRICT=1 + make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 STRICT=1 -j fi # find file diff --git a/src/engine/level_script.c b/src/engine/level_script.c index 5b920d91..44e11c0a 100644 --- a/src/engine/level_script.c +++ b/src/engine/level_script.c @@ -425,15 +425,28 @@ static void level_cmd_23(void) { } static void level_cmd_init_mario(void) { - vec3s_set(gMarioSpawnInfo->startPos, 0, 0, 0); - vec3s_set(gMarioSpawnInfo->startAngle, 0, 0, 0); + u32 behaviorArg = CMD_GET(u32, 4); + void* behaviorScript = CMD_GET(void*, 8); + struct GraphNode* unk18 = gLoadedGraphNodes[CMD_GET(u8, 3)]; - gMarioSpawnInfo->activeAreaIndex = -1; - gMarioSpawnInfo->areaIndex = 0; - gMarioSpawnInfo->behaviorArg = CMD_GET(u32, 4); - gMarioSpawnInfo->behaviorScript = CMD_GET(void *, 8); - gMarioSpawnInfo->unk18 = gLoadedGraphNodes[CMD_GET(u8, 3)]; - gMarioSpawnInfo->next = NULL; + struct SpawnInfo* lastSpawnInfo = NULL; + for (int i = 0; i < MAX_PLAYERS; i++) { + struct SpawnInfo* spawnInfo = &gPlayerSpawnInfos[i]; + vec3s_set(spawnInfo->startPos, 0, 0, 0); + vec3s_set(spawnInfo->startAngle, 0, 0, 0); + + spawnInfo->activeAreaIndex = -1; + spawnInfo->areaIndex = 0; + spawnInfo->behaviorArg = i; + spawnInfo->behaviorScript = behaviorScript; + spawnInfo->unk18 = unk18; + spawnInfo->next = NULL; + + if (lastSpawnInfo != NULL) { + lastSpawnInfo->next = spawnInfo; + } + lastSpawnInfo = spawnInfo; + } sCurrentCmd = CMD_NEXT; } diff --git a/src/game/mario.c b/src/game/mario.c index ce811bc4..ee028c2c 100644 --- a/src/game/mario.c +++ b/src/game/mario.c @@ -2075,11 +2075,7 @@ void init_mario(void) { } // set mario/luigi model - if (isLocal) { - gMarioState->marioObj->header.gfx.sharedChild = gLoadedGraphNodes[(gNetworkType == NT_SERVER) ? MODEL_MARIO : MODEL_LUIGI]; - } else { - gMarioState->marioObj->header.gfx.sharedChild = gLoadedGraphNodes[(gNetworkType == NT_SERVER) ? MODEL_LUIGI2 : MODEL_MARIO2]; - } + gMarioState->marioObj->header.gfx.sharedChild = gLoadedGraphNodes[(gNetworkType == NT_SERVER) ? MODEL_MARIO : MODEL_LUIGI]; skippy: if (isLocal) { diff --git a/src/game/mario_actions_automatic.c b/src/game/mario_actions_automatic.c index a0b3634b..0012a2e8 100644 --- a/src/game/mario_actions_automatic.c +++ b/src/game/mario_actions_automatic.c @@ -19,6 +19,7 @@ #include "object_helpers.h" #include "obj_behaviors.h" #include "level_update.h" +#include "mario_step.h" #define POLE_NONE 0 #define POLE_TOUCHED_FLOOR 1 diff --git a/src/game/mario_misc.c b/src/game/mario_misc.c index fec501d8..2153c484 100644 --- a/src/game/mario_misc.c +++ b/src/game/mario_misc.c @@ -318,14 +318,20 @@ static Gfx *make_gfx_mario_alpha(struct GraphNodeGenerated *node, s16 alpha) { return gfxHead; } +struct MarioBodyState* geo_get_body_state(void) { + return (gCurGraphNodeProcessingObject == NULL) + ? &gBodyStates[0] + : &gBodyStates[gCurGraphNodeProcessingObject->oBehParams - 1]; +} + /** * Sets the correct blend mode and color for mirror Mario. */ -Gfx *geo_mirror_mario_set_alpha(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { +Gfx* geo_mirror_mario_set_alpha(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { UNUSED u8 unused1[4]; - Gfx *gfx = NULL; - struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node; - struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter]; + Gfx* gfx = NULL; + struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node; + struct MarioBodyState* bodyState = geo_get_body_state(); s16 alpha; UNUSED u8 unused2[4]; @@ -341,9 +347,9 @@ Gfx *geo_mirror_mario_set_alpha(s32 callContext, struct GraphNode *node, UNUSED * If Mario is standing still, he is always high poly. If he is running, * his level of detail depends on the distance to the camera. */ -Gfx *geo_switch_mario_stand_run(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx) { - struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node; - struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases]; +Gfx* geo_switch_mario_stand_run(s32 callContext, struct GraphNode* node, UNUSED Mat4* mtx) { + struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node; + struct MarioBodyState* bodyState = geo_get_body_state(); if (callContext == GEO_CONTEXT_RENDER) { // assign result. 0 if moving, 1 if stationary. @@ -355,9 +361,9 @@ Gfx *geo_switch_mario_stand_run(s32 callContext, struct GraphNode *node, UNUSED /** * Geo node script that makes Mario blink */ -Gfx *geo_switch_mario_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { - struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node; - struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases]; +Gfx* geo_switch_mario_eyes(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { + struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node; + struct MarioBodyState* bodyState = geo_get_body_state(); s16 blinkFrame; if (callContext == GEO_CONTEXT_RENDER) { @@ -365,10 +371,12 @@ Gfx *geo_switch_mario_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4 blinkFrame = ((switchCase->numCases * 32 + gAreaUpdateCounter) >> 1) & 0x1F; if (blinkFrame < 7) { switchCase->selectedCase = gMarioBlinkAnimation[blinkFrame]; - } else { + } + else { switchCase->selectedCase = 0; } - } else { + } + else { switchCase->selectedCase = bodyState->eyeState - 1; } } @@ -378,14 +386,14 @@ Gfx *geo_switch_mario_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4 /** * Makes Mario's upper body tilt depending on the rotation stored in his bodyState */ -Gfx *geo_mario_tilt_torso(s32 callContext, struct GraphNode *node, Mat4 *mtx) { - Mat4* curTransform = mtx; - struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node; - struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter]; +Gfx* geo_mario_tilt_torso(s32 callContext, struct GraphNode* node, Mat4* mtx) { + Mat4 * curTransform = mtx; + struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node; + struct MarioBodyState* bodyState = geo_get_body_state(); s32 action = bodyState->action; if (callContext == GEO_CONTEXT_RENDER) { - struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next; + struct GraphNodeRotation* rotNode = (struct GraphNodeRotation*) node->next; if (action != ACT_BUTT_SLIDE && action != ACT_HOLD_BUTT_SLIDE && action != ACT_WALKING && action != ACT_RIDING_SHELL_GROUND) { @@ -404,23 +412,25 @@ Gfx *geo_mario_tilt_torso(s32 callContext, struct GraphNode *node, Mat4 *mtx) { /** * Makes Mario's head rotate with the camera angle when in C-up mode */ -Gfx *geo_mario_head_rotation(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { - struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node; - struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter]; +Gfx* geo_mario_head_rotation(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { + struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node; + struct MarioBodyState* bodyState = geo_get_body_state(); s32 action = bodyState->action; if (callContext == GEO_CONTEXT_RENDER) { - struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next; - struct Camera *camera = gCurGraphNodeCamera->config.camera; + struct GraphNodeRotation* rotNode = (struct GraphNodeRotation*) node->next; + struct Camera* camera = gCurGraphNodeCamera->config.camera; if (camera->mode == CAMERA_MODE_C_UP) { rotNode->rotation[0] = gPlayerCameraState->headRotation[1]; rotNode->rotation[2] = gPlayerCameraState->headRotation[0]; - } else if (action & ACT_FLAG_WATER_OR_TEXT) { + } + else if (action & ACT_FLAG_WATER_OR_TEXT) { rotNode->rotation[0] = bodyState->headAngle[1]; rotNode->rotation[1] = bodyState->headAngle[2]; rotNode->rotation[2] = bodyState->headAngle[0]; - } else { + } + else { vec3s_set(bodyState->headAngle, 0, 0, 0); vec3s_set(rotNode->rotation, 0, 0, 0); } @@ -432,19 +442,21 @@ Gfx *geo_mario_head_rotation(s32 callContext, struct GraphNode *node, UNUSED Mat * Switch between hand models. * Possible options are described in the MarioHandGSCId enum. */ -Gfx *geo_switch_mario_hand(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { - struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node; - struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases >> 1]; +Gfx* geo_switch_mario_hand(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { + struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node; + struct MarioBodyState* bodyState = geo_get_body_state(); if (callContext == GEO_CONTEXT_RENDER) { if (bodyState->handState == MARIO_HAND_FISTS) { // switch between fists (0) and open (1) switchCase->selectedCase = ((bodyState->action & ACT_FLAG_SWIMMING_OR_FLYING) != 0); - } else { - if ((switchCase->numCases & 0x01) == 0) { + } + else { + if (switchCase->numCases == 0) { switchCase->selectedCase = (bodyState->handState < 5) ? bodyState->handState : MARIO_HAND_OPEN; - } else { + } + else { switchCase->selectedCase = (bodyState->handState < 2) ? bodyState->handState : MARIO_HAND_FISTS; } @@ -461,28 +473,29 @@ Gfx *geo_switch_mario_hand(s32 callContext, struct GraphNode *node, UNUSED Mat4 * ! Since the animation gets updated in GEO_CONTEXT_RENDER, drawing Mario multiple times * (such as in the mirror room) results in a faster and desynced punch / kick animation. */ -Gfx *geo_mario_hand_foot_scaler(s32 callContext, struct GraphNode *node, Mat4 *mtx) { - Mat4* curTransform = mtx; +Gfx* geo_mario_hand_foot_scaler(s32 callContext, struct GraphNode* node, Mat4* mtx) { + Mat4 * curTransform = mtx; static s16 sMarioAttackAnimCounter = 0; - struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node; - struct GraphNodeScale *scaleNode = (struct GraphNodeScale *) node->next; - struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter >> 2]; + struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node; + struct GraphNodeScale* scaleNode = (struct GraphNodeScale*) node->next; + struct MarioBodyState* bodyState = geo_get_body_state(); if (callContext == GEO_CONTEXT_RENDER) { scaleNode->scale = 1.0f; - if ((asGenerated->parameter & 0x03) == bodyState->punchState >> 6) { + if (asGenerated->parameter == bodyState->punchState >> 6) { if (sMarioAttackAnimCounter != gAreaUpdateCounter && (bodyState->punchState & 0x3F) > 0) { bodyState->punchState -= 1; sMarioAttackAnimCounter = gAreaUpdateCounter; } scaleNode->scale = - gMarioAttackScaleAnimation[(asGenerated->parameter & 0x03) * 6 + (bodyState->punchState & 0x3F)] + gMarioAttackScaleAnimation[asGenerated->parameter * 6 + (bodyState->punchState & 0x3F)] / 10.0f; } // update hand/foot position in bodyState get_pos_from_transform_mtx(bodyState->handFootPos[(asGenerated->parameter & 0x03)], *curTransform, - *gCurGraphNodeCamera->matrixPtr); + *gCurGraphNodeCamera->matrixPtr); + } return NULL; } @@ -490,9 +503,9 @@ Gfx *geo_mario_hand_foot_scaler(s32 callContext, struct GraphNode *node, Mat4 *m /** * Switch between normal cap, wing cap, vanish cap and metal cap. */ -Gfx *geo_switch_mario_cap_effect(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { - struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node; - struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases]; +Gfx* geo_switch_mario_cap_effect(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { + struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node; + struct MarioBodyState* bodyState = geo_get_body_state(); if (callContext == GEO_CONTEXT_RENDER) { switchCase->selectedCase = bodyState->modelState >> 8; @@ -504,10 +517,10 @@ Gfx *geo_switch_mario_cap_effect(s32 callContext, struct GraphNode *node, UNUSED * Determine whether Mario's head is drawn with or without a cap on. * Also sets the visibility of the wing cap wings on or off. */ -Gfx *geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { - struct GraphNode *next = node->next; - struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node; - struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases]; +Gfx* geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { + struct GraphNode* next = node->next; + struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node; + struct MarioBodyState* bodyState = geo_get_body_state(); if (callContext == GEO_CONTEXT_RENDER) { switchCase->selectedCase = bodyState->capState & 1; @@ -515,7 +528,8 @@ Gfx *geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode *node, UNUSED if (next->type == GRAPH_NODE_TYPE_TRANSLATION_ROTATION) { if (bodyState->capState & 2) { next->flags |= GRAPH_RENDER_ACTIVE; - } else { + } + else { next->flags &= ~GRAPH_RENDER_ACTIVE; } } @@ -529,21 +543,23 @@ Gfx *geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode *node, UNUSED * Geo node script that makes the wings on Mario's wing cap flap. * Should be placed before a rotation node. */ -Gfx *geo_mario_rotate_wing_cap_wings(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { +Gfx* geo_mario_rotate_wing_cap_wings(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { s16 rotX; - struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node; + struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node; if (callContext == GEO_CONTEXT_RENDER) { - struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next; + struct GraphNodeRotation* rotNode = (struct GraphNodeRotation*) node->next; if (gBodyStates[asGenerated->parameter >> 1].wingFlutter == FALSE) { rotX = (coss((gAreaUpdateCounter & 0xF) << 12) + 1.0f) * 4096.0f; - } else { + } + else { rotX = (coss((gAreaUpdateCounter & 7) << 13) + 1.0f) * 6144.0f; } if (!(asGenerated->parameter & 1)) { rotNode->rotation[0] = -rotX; - } else { + } + else { rotNode->rotation[0] = rotX; } } @@ -553,37 +569,39 @@ Gfx *geo_mario_rotate_wing_cap_wings(s32 callContext, struct GraphNode *node, UN /** * Geo node that updates the held object node and the HOLP. */ -Gfx *geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode *b, Mat4 *mtx) { - struct GraphNodeHeldObject *asHeldObj = (struct GraphNodeHeldObject *) b; - Mat4 *curTransform = mtx; - struct MarioState *marioState = &gMarioStates[asHeldObj->playerIndex]; +Gfx* geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode* b, Mat4* mtx) { + struct GraphNodeHeldObject* asHeldObj = (struct GraphNodeHeldObject*) b; + Mat4* curTransform = mtx; + struct MarioState* marioState = &gMarioStates[asHeldObj->playerIndex]; if (callContext == GEO_CONTEXT_RENDER) { asHeldObj->objNode = NULL; if (marioState->heldObj != NULL) { asHeldObj->objNode = marioState->heldObj; switch (marioState->marioBodyState->grabPos) { - case GRAB_POS_LIGHT_OBJ: - if (marioState->action & ACT_FLAG_THROWING) { - vec3s_set(asHeldObj->translation, 50, 0, 0); - } else { - vec3s_set(asHeldObj->translation, 50, 0, 110); - } - break; - case GRAB_POS_HEAVY_OBJ: - vec3s_set(asHeldObj->translation, 145, -173, 180); - break; - case GRAB_POS_BOWSER: - vec3s_set(asHeldObj->translation, 80, -270, 1260); - break; + case GRAB_POS_LIGHT_OBJ: + if (marioState->action & ACT_FLAG_THROWING) { + vec3s_set(asHeldObj->translation, 50, 0, 0); + } + else { + vec3s_set(asHeldObj->translation, 50, 0, 110); + } + break; + case GRAB_POS_HEAVY_OBJ: + vec3s_set(asHeldObj->translation, 145, -173, 180); + break; + case GRAB_POS_BOWSER: + vec3s_set(asHeldObj->translation, 80, -270, 1260); + break; } } - } else if (callContext == GEO_CONTEXT_HELD_OBJ) { + } + else if (callContext == GEO_CONTEXT_HELD_OBJ) { // ! The HOLP is set here, which is why it only updates when the held object is drawn. // This is why it won't update during a pause buffered hitstun or when the camera is very far // away. get_pos_from_transform_mtx(marioState->marioBodyState->heldObjLastPosition, *curTransform, - *gCurGraphNodeCamera->matrixPtr); + gCurGraphNodeCamera->matrixPtr); } return NULL; } @@ -595,44 +613,45 @@ Gfx *geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode *b, Mat4 * * Geo node that creates a clone of Mario's geo node and updates it to becomes * a mirror image of the player. */ -Gfx *geo_render_mirror_mario(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { +Gfx* geo_render_mirror_mario(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { f32 mirroredX; - struct Object *mario = gMarioStates->marioObj; + struct Object* mario = gMarioStates->marioObj; switch (callContext) { - case GEO_CONTEXT_CREATE: - init_graph_node_object(NULL, &gMirrorMario, NULL, gVec3fZero, gVec3sZero, gVec3fOne); - break; - case GEO_CONTEXT_AREA_LOAD: - geo_add_child(node, &gMirrorMario.node); - break; - case GEO_CONTEXT_AREA_UNLOAD: - geo_remove_child(&gMirrorMario.node); - break; - case GEO_CONTEXT_RENDER: - if (mario->header.gfx.pos[0] > 1700.0f) { - // TODO: Is this a geo layout copy or a graph node copy? - gMirrorMario.sharedChild = mario->header.gfx.sharedChild; - gMirrorMario.unk18 = mario->header.gfx.unk18; - vec3s_copy(gMirrorMario.angle, mario->header.gfx.angle); - vec3f_copy(gMirrorMario.pos, mario->header.gfx.pos); - vec3f_copy(gMirrorMario.scale, mario->header.gfx.scale); - // FIXME: why does this set unk38, an inline struct, to a ptr to another one? wrong - // GraphNode types again? - gMirrorMario.unk38 = *(struct GraphNodeObject_sub *) &mario->header.gfx.unk38.animID; - mirroredX = MIRROR_X - gMirrorMario.pos[0]; - gMirrorMario.pos[0] = mirroredX + MIRROR_X; - gMirrorMario.angle[1] = -gMirrorMario.angle[1]; - gMirrorMario.scale[0] *= -1.0f; - // FIXME: Why doesn't this match? - // gMirrorMario.node.flags |= 1; - ((s16 *) &gMirrorMario)[1] |= 1; - } else { - // FIXME: Why doesn't this match? - // gMirrorMario.node.flags &= ~1; - ((s16 *) &gMirrorMario)[1] &= ~1; - } - break; + case GEO_CONTEXT_CREATE: + init_graph_node_object(NULL, &gMirrorMario, NULL, gVec3fZero, gVec3sZero, gVec3fOne); + break; + case GEO_CONTEXT_AREA_LOAD: + geo_add_child(node, &gMirrorMario.node); + break; + case GEO_CONTEXT_AREA_UNLOAD: + geo_remove_child(&gMirrorMario.node); + break; + case GEO_CONTEXT_RENDER: + if (mario->header.gfx.pos[0] > 1700.0f) { + // TODO: Is this a geo layout copy or a graph node copy? + gMirrorMario.sharedChild = mario->header.gfx.sharedChild; + gMirrorMario.unk18 = mario->header.gfx.unk18; + vec3s_copy(gMirrorMario.angle, mario->header.gfx.angle); + vec3f_copy(gMirrorMario.pos, mario->header.gfx.pos); + vec3f_copy(gMirrorMario.scale, mario->header.gfx.scale); + // FIXME: why does this set unk38, an inline struct, to a ptr to another one? wrong + // GraphNode types again? + gMirrorMario.unk38 = *(struct GraphNodeObject_sub*) & mario->header.gfx.unk38.animID; + mirroredX = MIRROR_X - gMirrorMario.pos[0]; + gMirrorMario.pos[0] = mirroredX + MIRROR_X; + gMirrorMario.angle[1] = -gMirrorMario.angle[1]; + gMirrorMario.scale[0] *= -1.0f; + // FIXME: Why doesn't this match? + // gMirrorMario.node.flags |= 1; + ((s16*)&gMirrorMario)[1] |= 1; + } + else { + // FIXME: Why doesn't this match? + // gMirrorMario.node.flags &= ~1; + ((s16*)&gMirrorMario)[1] &= ~1; + } + break; } return NULL; } @@ -641,9 +660,9 @@ Gfx *geo_render_mirror_mario(s32 callContext, struct GraphNode *node, UNUSED Mat * Since Mirror Mario has an x scale of -1, the mesh becomes inside out. * This node corrects that by changing the culling mode accordingly. */ -Gfx *geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { - struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node; - Gfx *gfx = NULL; +Gfx* geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) { + struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node; + Gfx* gfx = NULL; if (callContext == GEO_CONTEXT_RENDER && gCurGraphNodeObject == &gMirrorMario) { gfx = alloc_display_list(3 * sizeof(*gfx)); @@ -652,7 +671,8 @@ Gfx *geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode *node, gSPClearGeometryMode(&gfx[0], G_CULL_BACK); gSPSetGeometryMode(&gfx[1], G_CULL_FRONT); gSPEndDisplayList(&gfx[2]); - } else { + } + else { gSPClearGeometryMode(&gfx[0], G_CULL_FRONT); gSPSetGeometryMode(&gfx[1], G_CULL_BACK); gSPEndDisplayList(&gfx[2]); @@ -660,4 +680,4 @@ Gfx *geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode *node, asGenerated->fnNode.node.flags = (asGenerated->fnNode.node.flags & 0xFF) | (LAYER_OPAQUE << 8); } return gfx; -} +} \ No newline at end of file diff --git a/src/game/mario_step.h b/src/game/mario_step.h index c723c048..9be6f8e7 100644 --- a/src/game/mario_step.h +++ b/src/game/mario_step.h @@ -33,4 +33,6 @@ s32 stationary_ground_step(struct MarioState *); s32 perform_ground_step(struct MarioState *); s32 perform_air_step(struct MarioState *, u32); +void set_vel_from_pitch_and_yaw(struct MarioState* m); + #endif // MARIO_STEP_H diff --git a/src/game/rendering_graph_node.c b/src/game/rendering_graph_node.c index 71656b49..0a84255a 100644 --- a/src/game/rendering_graph_node.c +++ b/src/game/rendering_graph_node.c @@ -146,6 +146,8 @@ s32 gMtxTblSize; static Gfx *sViewportPos; static Vp sPrevViewport; +struct Object* gCurGraphNodeProcessingObject; + void mtx_patch_interpolated(void) { s32 i; @@ -1065,10 +1067,10 @@ static void interpolate_matrix(Mat4 result, Mat4 a, Mat4 b) { * Process an object node. */ static void geo_process_object(struct Object *node) { + gCurGraphNodeProcessingObject = node; Mat4 mtxf; s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0; Vec3f scaleInterpolated; - if (node->header.gfx.unk18 == gCurGraphNodeRoot->areaIndex) { if (node->header.gfx.throwMatrix != NULL) { mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix, @@ -1184,6 +1186,7 @@ static void geo_process_object(struct Object *node) { node->header.gfx.throwMatrix = NULL; node->header.gfx.throwMatrixInterpolated = NULL; } + gCurGraphNodeProcessingObject = NULL; } /** diff --git a/src/game/rendering_graph_node.h b/src/game/rendering_graph_node.h index cf1e1798..b0851aa9 100644 --- a/src/game/rendering_graph_node.h +++ b/src/game/rendering_graph_node.h @@ -12,6 +12,7 @@ extern struct GraphNodeCamera *gCurGraphNodeCamera; extern struct GraphNodeObject *gCurGraphNodeObject; extern struct GraphNodeHeldObject *gCurGraphNodeHeldObject; extern u16 gAreaUpdateCounter; +extern struct Object* gCurGraphNodeProcessingObject; // after processing an object, the type is reset to this #define ANIM_TYPE_NONE 0 diff --git a/src/pc/network/packets/packet_player.c b/src/pc/network/packets/packet_player.c index 9fa07e40..0c6a11f4 100644 --- a/src/pc/network/packets/packet_player.c +++ b/src/pc/network/packets/packet_player.c @@ -42,6 +42,7 @@ void network_receive_player(struct Packet* p) { u16 oldActionState = gMarioStates[1].actionState; u16 oldActionArg = gMarioStates[1].actionArg; u16 playerIndex = gMarioStates[1].playerIndex; + u32 oldBehParams = gMarioStates[1].marioObj->oBehParams; // load mario information from packet packet_read(p, &gMarioStates[1], sizeof(u32) * 24); @@ -59,6 +60,7 @@ void network_receive_player(struct Packet* p) { // reset player index gMarioStates[1].playerIndex = playerIndex; + gMarioStates[1].marioObj->oBehParams = oldBehParams; // reset mario sound play flag so that their jump sounds work if (gMarioStates[1].action != oldAction) {