Added toad player character
|
@ -71,6 +71,10 @@ MARIO_DIRS := mario bubble walk_smoke burn_smoke stomp_smoke water_wave sp
|
||||||
CUSTOM_DIRS := luigi_cap
|
CUSTOM_DIRS := luigi_cap
|
||||||
ZCUSTOM_DIRS := luigi
|
ZCUSTOM_DIRS := luigi
|
||||||
|
|
||||||
|
# Add Toad
|
||||||
|
CUSTOM_DIRS += toad_cap
|
||||||
|
ZCUSTOM_DIRS += toad_player
|
||||||
|
|
||||||
# Actor Files
|
# Actor Files
|
||||||
CUSTOM_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CUSTOM_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
|
CUSTOM_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CUSTOM_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
|
||||||
AMP_CHUCKYA_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(AMP_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
|
AMP_CHUCKYA_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(AMP_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
|
||||||
|
|
|
@ -23,4 +23,9 @@ extern const Gfx luigi_cap_seg3_dl_03023108[];
|
||||||
extern const Gfx luigi_cap_seg3_dl_03023160[];
|
extern const Gfx luigi_cap_seg3_dl_03023160[];
|
||||||
extern const Gfx luigi_cap_seg3_dl_03023298[];
|
extern const Gfx luigi_cap_seg3_dl_03023298[];
|
||||||
|
|
||||||
|
// toad_cap
|
||||||
|
extern const GeoLayout toads_cap_geo[];
|
||||||
|
extern const GeoLayout toads_metal_cap_geo[];
|
||||||
|
extern const GeoLayout toads_wing_cap_geo[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,3 +5,4 @@
|
||||||
#include "custom0.h"
|
#include "custom0.h"
|
||||||
|
|
||||||
#include "luigi_cap/geo.inc.c" // custom luigi_cap
|
#include "luigi_cap/geo.inc.c" // custom luigi_cap
|
||||||
|
#include "toad_cap/geo.inc.c" // custom toad_cap
|
||||||
|
|
89
actors/toad_cap/geo.inc.c
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
extern const GeoLayout toad_player_geo_cap[];
|
||||||
|
extern const GeoLayout toad_player_geo_vanish_cap[];
|
||||||
|
extern const GeoLayout toad_player_geo_cap_wing[];
|
||||||
|
extern const GeoLayout toad_player_geo_vanish_cap_wing[];
|
||||||
|
extern const GeoLayout toad_player_geo_metal_cap[];
|
||||||
|
extern const GeoLayout toad_player_geo_metal_vanish_cap[];
|
||||||
|
extern const Gfx toad_player_metal_start[];
|
||||||
|
extern const Gfx toad_player_metal_stop[];
|
||||||
|
|
||||||
|
const GeoLayout toads_cap_geo[] = {
|
||||||
|
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SCALE(0x00, 16384),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 0, 80, 0, 30, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_set_player_colors),
|
||||||
|
GEO_ASM(10, geo_update_layer_transparency),
|
||||||
|
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_vanish_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_END(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toads_wing_cap_geo[] = {
|
||||||
|
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SCALE(0x00, 16384),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 0, 80, 0, 30, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_set_player_colors),
|
||||||
|
GEO_ASM(10, geo_update_layer_transparency),
|
||||||
|
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_cap_wing),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_vanish_cap_wing),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_END(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toads_metal_cap_geo[] = {
|
||||||
|
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SCALE(0x00, 16384),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_metal_start), // starts sharing solid color with mario_torso (blue)
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 0, 80, 0, 30, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_vanish_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_metal_stop),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_END(),
|
||||||
|
};
|
BIN
actors/toad_player/custom_toad_cap.rgba16.png
Normal file
After Width: | Height: | Size: 870 B |
BIN
actors/toad_player/custom_toad_eyes_closed.rgba16.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
actors/toad_player/custom_toad_eyes_dead.rgba16.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
actors/toad_player/custom_toad_eyes_half_closed.rgba16.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
actors/toad_player/custom_toad_face.rgba16.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
actors/toad_player/custom_toad_hair.rgba16.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
870
actors/toad_player/geo.inc.c
Normal file
|
@ -0,0 +1,870 @@
|
||||||
|
const GeoLayout toad_player_geo_cap[] = {
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_cap),
|
||||||
|
GEO_ASM(2, geo_mirror_mario_backface_culling),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_cap_decal),
|
||||||
|
GEO_ASM(3, geo_mirror_mario_backface_culling),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_cap_wing[] = {
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_cap),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_cap_decal),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 180, 50, 0, -10, 0, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_cap_wings), // left
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, -180, 50, 0, 10, 180, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_cap_wings), // right
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_face_and_wings[] = {
|
||||||
|
GEO_ASM(0, geo_mario_head_rotation),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 100, -20, 0, -90, -90, 0),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_eyes),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_face),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_eyes_half_closed),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_eyes_closed),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL), // unused
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL), // unused
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL), // unused
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL), // unused
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_eyes_dead),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_hair),
|
||||||
|
GEO_ASM(0, geo_mirror_mario_backface_culling),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
// cap
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
// no cap
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 180, 50, 0, -10, 0, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_cap_wings), // left
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, -180, 50, 0, 10, 180, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_cap_wings), // right
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_right_hand[] = {
|
||||||
|
GEO_TRANSLATE(LAYER_OPAQUE, 100, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_hand),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
// FISTS
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
// OPEN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
// PEACE SIGN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
// HOLDING CAP
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 120, 0, -120, 0, 90, -90),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
// HOLDING WING CAP
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 120, 0, -120, 0, 90, -90),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_cap_wing),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
// HAND RIGHT OPEN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_body[] = {
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -70, 0, /*mario_butt*/ NULL), // starts sharing solid color with mario_torso (blue)
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_move_mario_part_from_parent),
|
||||||
|
GEO_ASM(0, geo_mario_tilt_torso),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, /*mario_torso*/ NULL),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, -90, -90, 0, toad_player_dl_body), // torso
|
||||||
|
GEO_ASM(0, geo_mirror_mario_backface_culling),
|
||||||
|
GEO_ASM(2, geo_mario_set_player_colors),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_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, -15, -5, /*mario_left_arm*/ NULL), // starts sharing solid color with mario_left_forearm (red)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, -20, 120, -45, toad_player_dl_arm_left), // left arm
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, /*mario_left_forearm_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, /*mario_left_hand_closed*/ NULL),
|
||||||
|
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, -15, 5, /*mario_right_arm*/ NULL), // starts sharing solid color of his dl with mario_right_forearm (red)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, 20, -120, -45, toad_player_dl_arm_right), // right arm
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_right_hand), // stops sharing because hand has its solid color (white)
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, /*mario_right_forearm_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, /*mario_right_hand_closed*/ NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, -8, 50, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, /*mario_left_thigh*/ NULL), // 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*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, /*mario_left_foot*/ NULL), // stops sharing because foot has its solid color (brown)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, 160, -90, 0, toad_player_dl_foot_left), // left foot
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, -8, -50, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, /*mario_right_thigh*/ NULL), // 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*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(2, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, 200, 90, 0, /*mario_right_foot*/ toad_player_dl_foot_right), // 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 //
|
||||||
|
////////////
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_vanish_cap[] = {
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_cap),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_cap_decal),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_vanish_cap_wing[] = {
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_cap),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_cap_decal),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 180, 50, 0, -10, 0, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_cap_wings), // left
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, -180, 50, 0, 10, 180, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_cap_wings), // right
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_vanish_face_and_wings[] = {
|
||||||
|
GEO_ASM(0, geo_mario_head_rotation),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_TRANSPARENT, 100, -20, 0, -90, -90, 0),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_eyes),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_face),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_eyes_half_closed),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_eyes_closed),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL), // unused
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL), // unused
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL), // unused
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL), // unused
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_eyes_dead),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_hair),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
// cap
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_vanish_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
// no cap
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 180, 50, 0, -10, 0, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_cap_wings), // left
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, -180, 50, 0, 10, 180, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_cap_wings), // right
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_vanish_right_hand[] = {
|
||||||
|
GEO_TRANSLATE(LAYER_TRANSPARENT, 100, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_hand),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
// FISTS
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
// OPEN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
// PEACE SIGN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
// HOLDING CAP
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_TRANSPARENT, 120, 0, -120, 0, 90, -90),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_vanish_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
// HOLDING WING CAP
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_TRANSPARENT, 120, 0, -120, 0, 90, -90),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_vanish_cap_wing),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
// HAND RIGHT OPEN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_vanish_body[] = {
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, -70, 0, /*mario_butt*/ NULL), // starts sharing solid color with mario_torso (blue)
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_move_mario_part_from_parent),
|
||||||
|
GEO_ASM(0, geo_mario_tilt_torso),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, /*mario_torso*/ NULL),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, -90, -90, 0, toad_player_dl_body), // torso
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_vanish_face_and_wings), // stops sharing because faces has its own dl
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, -15, -5, /*mario_left_arm*/ NULL), // starts sharing solid color with mario_left_forearm (red)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, -20, 120, -45, toad_player_dl_arm_left), // left arm
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, /*mario_left_forearm_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, /*mario_left_hand_closed*/ NULL),
|
||||||
|
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, -15, 5, /*mario_right_arm*/ NULL), // starts sharing solid color of his dl with mario_right_forearm (red)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, 20, -120, -45, toad_player_dl_arm_right), // right arm
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_vanish_right_hand), // stops sharing because hand has its solid color (white)
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, /*mario_right_forearm_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, /*mario_right_hand_closed*/ NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, -8, 50, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, /*mario_left_thigh*/ NULL), // starts sharing solid color of his dl with mario_left_leg (blue)
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, /*mario_left_leg_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, /*mario_left_foot*/ NULL), // stops sharing because foot has its solid color (brown)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, 160, -90, 0, toad_player_dl_foot_left), // left foot
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, -8, -50, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, /*mario_right_thigh*/ NULL), // starts sharing solid color of his dl with mario_left_leg (blue)
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, /*mario_right_leg_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(2, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, 200, 90, 0, /*mario_right_foot*/ toad_player_dl_foot_right), // 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(),
|
||||||
|
};
|
||||||
|
|
||||||
|
///////////
|
||||||
|
// metal //
|
||||||
|
///////////
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_cap[] = {
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_cap_inner),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_cap_wing[] = {
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_cap_inner),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 180, 50, 0, -10, 0, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_metal_cap_wings), // left
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, -180, 50, 0, 10, 180, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_metal_cap_wings), // right
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_face_and_wings[] = {
|
||||||
|
GEO_ASM(0, geo_mario_head_rotation),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 100, -20, 0, -90, -90, 0),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, toad_player_dl_face_inner),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
// cap
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
// no cap
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 180, 50, 0, -10, 0, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_metal_cap_wings), // left
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, -180, 50, 0, 10, 180, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_metal_cap_wings), // right
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_right_hand[] = {
|
||||||
|
GEO_TRANSLATE(LAYER_OPAQUE, 100, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_hand),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
// FISTS
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
// OPEN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
// PEACE SIGN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
// HOLDING CAP
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 120, 0, -120, 0, 90, -90),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
// HOLDING WING CAP
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 120, 0, -120, 0, 90, -90),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_cap_wing),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
// HAND RIGHT OPEN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_body[] = {
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -70, 0, /*mario_butt*/ toad_player_metal_start), // starts sharing solid color with mario_torso (blue)
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_move_mario_part_from_parent),
|
||||||
|
GEO_ASM(0, geo_mario_tilt_torso),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, /*mario_torso*/ NULL),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, -90, -90, 0, toad_player_metal_dl_body), // torso
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_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, -15, -5, /*mario_left_arm*/ NULL), // starts sharing solid color with mario_left_forearm (red)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, -20, 120, -45, toad_player_dl_arm_left_inner), // left arm
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, /*mario_left_forearm_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, /*mario_left_hand_closed*/ NULL),
|
||||||
|
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, -15, 5, /*mario_right_arm*/ NULL), // starts sharing solid color of his dl with mario_right_forearm (red)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, 20, -120, -45, toad_player_dl_arm_right_inner), // right arm
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_right_hand), // stops sharing because hand has its solid color (white)
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, /*mario_right_forearm_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, /*mario_right_hand_closed*/ NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, -8, 50, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, /*mario_left_thigh*/ NULL), // 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*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, /*mario_left_foot*/ NULL), // stops sharing because foot has its solid color (brown)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, 160, -90, 0, toad_player_dl_foot_left_inner), // left foot
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, -8, -50, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, /*mario_right_thigh*/ NULL), // 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*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(2, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_OPAQUE, 200, 90, 0, /*mario_right_foot*/ toad_player_dl_foot_right_metal), // 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(),
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////////////
|
||||||
|
// metal-vanish //
|
||||||
|
//////////////////
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_vanish_cap[] = {
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_cap_inner),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_vanish_cap_wing[] = {
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_cap_inner),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 180, 50, 0, -10, 0, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_metal_cap_wings), // left
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, -180, 50, 0, 10, 180, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_metal_cap_wings), // right
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_vanish_face_and_wings[] = {
|
||||||
|
GEO_ASM(0, geo_mario_head_rotation),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_TRANSPARENT, 100, -20, 0, -90, -90, 0),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, toad_player_dl_face_inner),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
// cap
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_vanish_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
// no cap
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_TRANSLATE_ROTATE(0, 180, 50, 0, -10, 0, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_metal_cap_wings), // left
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(0, -180, 50, 0, 10, 180, -20),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_DISPLAY_LIST(LAYER_ALPHA, toad_player_metal_cap_wings), // right
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_vanish_right_hand[] = {
|
||||||
|
GEO_TRANSLATE(LAYER_TRANSPARENT, 100, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_hand),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
// FISTS
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
// OPEN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
// PEACE SIGN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
// HOLDING CAP
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_TRANSPARENT, 120, 0, -120, 0, 90, -90),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_vanish_cap),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
// HOLDING WING CAP
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_TRANSLATE_ROTATE(LAYER_TRANSPARENT, 120, 0, -120, 0, 90, -90),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_vanish_cap_wing),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
// HAND RIGHT OPEN
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo_metal_vanish_body[] = {
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, -70, 0, /*mario_butt*/ toad_player_metal_start), // starts sharing solid color with mario_torso (blue)
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_move_mario_part_from_parent),
|
||||||
|
GEO_ASM(0, geo_mario_tilt_torso),
|
||||||
|
GEO_ROTATION_NODE(0x00, 0, 0, 0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, /*mario_torso*/ NULL),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, -90, -90, 0, toad_player_metal_dl_body), // torso
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_vanish_face_and_wings), // stops sharing because faces has its own dl
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, -15, -5, /*mario_left_arm*/ NULL), // starts sharing solid color with mario_left_forearm (red)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(1, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, -20, 120, -45, toad_player_dl_arm_left_inner), // left arm
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, /*mario_left_forearm_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, /*mario_left_hand_closed*/ NULL),
|
||||||
|
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, -15, 5, /*mario_right_arm*/ NULL), // starts sharing solid color of his dl with mario_right_forearm (red)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, 20, -120, -45, toad_player_dl_arm_right_inner), // right arm
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_vanish_right_hand), // stops sharing because hand has its solid color (white)
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, /*mario_right_forearm_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, /*mario_right_hand_closed*/ NULL),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, -8, 50, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, /*mario_left_thigh*/ NULL), // starts sharing solid color of his dl with mario_left_leg (blue)
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, /*mario_left_leg_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, /*mario_left_foot*/ NULL), // stops sharing because foot has its solid color (brown)
|
||||||
|
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, 160, -90, 0, toad_player_dl_foot_left_inner), // left foot
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, -8, -50, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, /*mario_right_thigh*/ NULL), // starts sharing solid color of his dl with mario_left_leg (blue)
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, /*mario_right_leg_shared_dl*/ NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(2, geo_mario_hand_foot_scaler),
|
||||||
|
GEO_SCALE(0x00, 65536),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ROTATION_NODE_WITH_DL(LAYER_TRANSPARENT, 200, 90, 0, /*mario_right_foot*/ toad_player_dl_foot_right_metal), // 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(),
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////
|
||||||
|
// main //
|
||||||
|
//////////
|
||||||
|
|
||||||
|
const GeoLayout toad_player_geo[] = {
|
||||||
|
GEO_SHADOW(SHADOW_CIRCLE_PLAYER, 0x96, 100),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_SCALE(0x00, 16384),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ASM(0, geo_mario_set_player_colors),
|
||||||
|
GEO_ASM(0, geo_mirror_mario_backface_culling),
|
||||||
|
GEO_ASM(0, geo_mirror_mario_set_alpha),
|
||||||
|
|
||||||
|
GEO_SWITCH_CASE(0, geo_switch_mario_cap_effect),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_body),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_vanish_body),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_body),
|
||||||
|
GEO_BRANCH(1, toad_player_geo_metal_vanish_body),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
|
||||||
|
GEO_ASM(1, geo_mirror_mario_backface_culling),
|
||||||
|
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_END(),
|
||||||
|
};
|
36
actors/toad_player/geo_header.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
extern const Gfx toad_player_metal_start[];
|
||||||
|
|
||||||
|
extern const Gfx toad_player_dl_face[];
|
||||||
|
extern const Gfx toad_player_dl_eyes_closed[];
|
||||||
|
extern const Gfx toad_player_dl_eyes_half_closed[];
|
||||||
|
extern const Gfx toad_player_dl_eyes_dead[];
|
||||||
|
extern const Gfx toad_player_dl_hair[];
|
||||||
|
|
||||||
|
extern const Gfx toad_player_dl_cap_inner[];
|
||||||
|
extern const Gfx toad_player_dl_cap[];
|
||||||
|
extern const Gfx toad_player_dl_cap_decal[];
|
||||||
|
|
||||||
|
extern const Gfx toad_player_cap_wings[];
|
||||||
|
extern const Gfx toad_player_metal_cap_wings[];
|
||||||
|
|
||||||
|
extern const Gfx toad_player_dl_jacket[];
|
||||||
|
extern const Gfx toad_player_dl_body[];
|
||||||
|
extern const Gfx toad_player_dl_foot_left_inner[];
|
||||||
|
extern const Gfx toad_player_dl_foot_left[];
|
||||||
|
extern const Gfx toad_player_dl_foot_right[];
|
||||||
|
extern const Gfx toad_player_dl_foot_right_metal[];
|
||||||
|
extern const Gfx toad_player_dl_arm_left_inner[];
|
||||||
|
extern const Gfx toad_player_dl_arm_left[];
|
||||||
|
extern const Gfx toad_player_dl_arm_right_inner[];
|
||||||
|
extern const Gfx toad_player_dl_arm_right[];
|
||||||
|
extern const Gfx toad_player_dl_face_inner[];
|
||||||
|
extern const Gfx toad_player_dl_head_base[];
|
||||||
|
extern const Gfx toad_player_dl_head_transparent[];
|
||||||
|
|
||||||
|
extern const Gfx toad_player_metal_dl_body[];
|
||||||
|
|
||||||
|
#ifndef VERSION_JP
|
||||||
|
extern const Gfx toad_player_dl_face_2[];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern const GeoLayout toad_player_geo[];
|
1344
actors/toad_player/model.inc.c
Normal file
|
@ -6,3 +6,6 @@
|
||||||
|
|
||||||
// luigi model
|
// luigi model
|
||||||
#include "luigi/model.inc.c"
|
#include "luigi/model.inc.c"
|
||||||
|
|
||||||
|
// toad model
|
||||||
|
#include "toad_player/model.inc.c"
|
||||||
|
|
|
@ -6,4 +6,7 @@
|
||||||
// luigi
|
// luigi
|
||||||
#include "actors/luigi/geo_header.h"
|
#include "actors/luigi/geo_header.h"
|
||||||
|
|
||||||
|
// toad_player
|
||||||
|
#include "actors/toad_player/geo_header.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,3 +5,5 @@
|
||||||
#include "zcustom0.h"
|
#include "zcustom0.h"
|
||||||
|
|
||||||
#include "luigi/geo.inc.c"
|
#include "luigi/geo.inc.c"
|
||||||
|
|
||||||
|
#include "toad_player/geo.inc.c"
|
||||||
|
|
|
@ -217,6 +217,10 @@ ALIGNED8 static const u8 texture_hud_char_luigi_head[] = {
|
||||||
#include "textures/segment2/custom_luigi_head.rgba16.inc.c"
|
#include "textures/segment2/custom_luigi_head.rgba16.inc.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ALIGNED8 static const u8 texture_hud_char_toad_head[] = {
|
||||||
|
#include "textures/segment2/custom_toad_head.rgba16.inc.c"
|
||||||
|
};
|
||||||
|
|
||||||
ALIGNED8 static const u8 texture_hud_char_star[] = {
|
ALIGNED8 static const u8 texture_hud_char_star[] = {
|
||||||
#include "textures/segment2/segment2.05C00.rgba16.inc.c"
|
#include "textures/segment2/segment2.05C00.rgba16.inc.c"
|
||||||
};
|
};
|
||||||
|
@ -1841,7 +1845,7 @@ const u8 *const main_hud_lut[] = {
|
||||||
0x0, 0x0, 0x0, 0x0,
|
0x0, 0x0, 0x0, 0x0,
|
||||||
0x0, 0x0, 0x0, 0x0,
|
0x0, 0x0, 0x0, 0x0,
|
||||||
0x0, 0x0, texture_hud_char_multiply, texture_hud_char_coin,
|
0x0, 0x0, texture_hud_char_multiply, texture_hud_char_coin,
|
||||||
texture_hud_char_mario_head, texture_hud_char_star, texture_hud_char_luigi_head, 0x0,
|
texture_hud_char_mario_head, texture_hud_char_star, texture_hud_char_luigi_head, texture_hud_char_toad_head,
|
||||||
texture_hud_char_apostrophe, texture_hud_char_double_quote,
|
texture_hud_char_apostrophe, texture_hud_char_double_quote,
|
||||||
#else
|
#else
|
||||||
texture_hud_char_0, texture_hud_char_1, texture_hud_char_2, texture_hud_char_3,
|
texture_hud_char_0, texture_hud_char_1, texture_hud_char_2, texture_hud_char_3,
|
||||||
|
@ -2081,7 +2085,7 @@ const u8 *const main_credits_font_lut[] = {
|
||||||
// HUD camera table 0x020087CC-0x020087E3
|
// HUD camera table 0x020087CC-0x020087E3
|
||||||
const u8 *const main_hud_camera_lut[] = {
|
const u8 *const main_hud_camera_lut[] = {
|
||||||
texture_hud_char_camera, texture_hud_char_mario_head, texture_hud_char_lakitu, texture_hud_char_no_camera,
|
texture_hud_char_camera, texture_hud_char_mario_head, texture_hud_char_lakitu, texture_hud_char_no_camera,
|
||||||
texture_hud_char_arrow_up, texture_hud_char_arrow_down, texture_hud_char_luigi_head,
|
texture_hud_char_arrow_up, texture_hud_char_arrow_down, texture_hud_char_luigi_head, texture_hud_char_toad_head
|
||||||
};
|
};
|
||||||
|
|
||||||
// If you change the language here, the following Makefile rule also needs to
|
// If you change the language here, the following Makefile rule also needs to
|
||||||
|
|
|
@ -595,4 +595,9 @@
|
||||||
#define MODEL_LUIGIS_WING_CAP 0xE6 // luigis_wing_cap_geo
|
#define MODEL_LUIGIS_WING_CAP 0xE6 // luigis_wing_cap_geo
|
||||||
#define MODEL_LUIGIS_WINGED_METAL_CAP 0xE7 // luigis_winged_metal_cap_geo
|
#define MODEL_LUIGIS_WINGED_METAL_CAP 0xE7 // luigis_winged_metal_cap_geo
|
||||||
|
|
||||||
|
#define MODEL_TOAD_PLAYER 0xE8 // toad_player_geo
|
||||||
|
#define MODEL_TOADS_CAP 0xE9 // toads_cap_geo
|
||||||
|
#define MODEL_TOADS_METAL_CAP 0xEA // toads_metal_cap_geo
|
||||||
|
#define MODEL_TOADS_WING_CAP 0xEB // toads_wing_cap_geo
|
||||||
|
|
||||||
#endif // MODEL_IDS_H
|
#endif // MODEL_IDS_H
|
||||||
|
|
|
@ -125,6 +125,11 @@ const LevelScript level_main_scripts_entry[] = {
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGIS_WING_CAP, luigis_wing_cap_geo),
|
LOAD_MODEL_FROM_GEO(MODEL_LUIGIS_WING_CAP, luigis_wing_cap_geo),
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGIS_WINGED_METAL_CAP, luigis_winged_metal_cap_geo),
|
LOAD_MODEL_FROM_GEO(MODEL_LUIGIS_WINGED_METAL_CAP, luigis_winged_metal_cap_geo),
|
||||||
|
|
||||||
|
LOAD_MODEL_FROM_GEO(MODEL_TOAD_PLAYER, toad_player_geo),
|
||||||
|
LOAD_MODEL_FROM_GEO(MODEL_TOADS_CAP, toads_cap_geo),
|
||||||
|
LOAD_MODEL_FROM_GEO(MODEL_TOADS_METAL_CAP, toads_metal_cap_geo),
|
||||||
|
LOAD_MODEL_FROM_GEO(MODEL_TOADS_WING_CAP, toads_wing_cap_geo),
|
||||||
|
|
||||||
// CUSTOM MODELS END
|
// CUSTOM MODELS END
|
||||||
|
|
||||||
FREE_LEVEL_POOL(),
|
FREE_LEVEL_POOL(),
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
|
|
||||||
extern Gfx mario_cap_seg3_dl_03022F48[];
|
extern Gfx mario_cap_seg3_dl_03022F48[];
|
||||||
extern Gfx luigi_cap_seg3_dl_03022F48[];
|
extern Gfx luigi_cap_seg3_dl_03022F48[];
|
||||||
|
extern Gfx toad_player_dl_cap[];
|
||||||
|
extern Gfx toad_player_dl_cap_decal[];
|
||||||
|
|
||||||
struct Character gCharacters[CT_MAX] = {
|
struct Character gCharacters[CT_MAX] = {
|
||||||
[CT_MARIO] = {
|
[CT_MARIO] = {
|
||||||
|
@ -128,6 +130,64 @@ struct Character gCharacters[CT_MAX] = {
|
||||||
.soundSoLongaBowser = SOUND_LUIGI_SO_LONGA_BOWSER,
|
.soundSoLongaBowser = SOUND_LUIGI_SO_LONGA_BOWSER,
|
||||||
.soundImaTired = SOUND_LUIGI_IMA_TIRED,
|
.soundImaTired = SOUND_LUIGI_IMA_TIRED,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
[CT_TOAD] = {
|
||||||
|
.name = "Toad",
|
||||||
|
.hudHead = '/',
|
||||||
|
.cameraHudHead = GLYPH_CAM_TOAD_HEAD,
|
||||||
|
.modelId = MODEL_TOAD_PLAYER,
|
||||||
|
.capModelId = MODEL_TOADS_CAP,
|
||||||
|
.capMetalModelId = MODEL_TOADS_METAL_CAP,
|
||||||
|
.capWingModelId = MODEL_TOADS_WING_CAP,
|
||||||
|
.capMetalWingModelId = MODEL_TOADS_CAP,
|
||||||
|
.capEnemyLayer = LAYER_TRANSPARENT,
|
||||||
|
.capEnemyGfx = toad_player_dl_cap,
|
||||||
|
.capEnemyDecalGfx = toad_player_dl_cap_decal,
|
||||||
|
.soundFreqScale = 1.25f,
|
||||||
|
// sounds
|
||||||
|
.soundYahWahHoo = SOUND_MARIO_YAH_WAH_HOO,
|
||||||
|
.soundHoohoo = SOUND_MARIO_HOOHOO,
|
||||||
|
.soundYahoo = SOUND_MARIO_YAHOO,
|
||||||
|
.soundUh = SOUND_MARIO_UH,
|
||||||
|
.soundHrmm = SOUND_MARIO_HRMM,
|
||||||
|
.soundWah2 = SOUND_MARIO_WAH2,
|
||||||
|
.soundWhoa = SOUND_MARIO_WHOA,
|
||||||
|
.soundEeuh = SOUND_MARIO_EEUH,
|
||||||
|
.soundAttacked = SOUND_MARIO_ATTACKED,
|
||||||
|
.soundOoof = SOUND_MARIO_OOOF,
|
||||||
|
.soundOoof2 = SOUND_MARIO_OOOF2,
|
||||||
|
.soundHereWeGo = SOUND_MARIO_HERE_WE_GO,
|
||||||
|
.soundYawning = SOUND_MARIO_YAWNING,
|
||||||
|
.soundSnoring1 = SOUND_MARIO_SNORING1,
|
||||||
|
.soundSnoring2 = SOUND_MARIO_SNORING2,
|
||||||
|
.soundWaaaooow = SOUND_MARIO_WAAAOOOW,
|
||||||
|
.soundHaha = SOUND_MARIO_HAHA,
|
||||||
|
.soundHaha_2 = SOUND_MARIO_HAHA_2,
|
||||||
|
.soundUh2 = SOUND_MARIO_UH2,
|
||||||
|
.soundUh2_2 = SOUND_MARIO_UH2_2,
|
||||||
|
.soundOnFire = SOUND_MARIO_ON_FIRE,
|
||||||
|
.soundDying = SOUND_MARIO_DYING,
|
||||||
|
.soundPantingCold = SOUND_MARIO_PANTING_COLD,
|
||||||
|
.soundPanting = SOUND_MARIO_PANTING,
|
||||||
|
.soundCoughing1 = SOUND_MARIO_COUGHING1,
|
||||||
|
.soundCoughing2 = SOUND_MARIO_COUGHING2,
|
||||||
|
.soundCoughing3 = SOUND_MARIO_COUGHING3,
|
||||||
|
.soundPunchYah = SOUND_MARIO_PUNCH_YAH,
|
||||||
|
.soundPunchHoo = SOUND_MARIO_PUNCH_HOO,
|
||||||
|
.soundMamaMia = SOUND_MARIO_MAMA_MIA,
|
||||||
|
.soundGroundPoundWah = SOUND_MARIO_GROUND_POUND_WAH,
|
||||||
|
.soundDrowning = SOUND_MARIO_DROWNING,
|
||||||
|
.soundPunchWah = SOUND_MARIO_PUNCH_WAH,
|
||||||
|
.soundYahooWahaYippee = SOUND_MARIO_YAHOO_WAHA_YIPPEE,
|
||||||
|
.soundDoh = SOUND_MARIO_DOH,
|
||||||
|
.soundGameOver = SOUND_MARIO_GAME_OVER,
|
||||||
|
.soundHello = SOUND_MARIO_HELLO,
|
||||||
|
.soundPressStartToPlay = SOUND_MARIO_PRESS_START_TO_PLAY,
|
||||||
|
.soundTwirlBounce = SOUND_MARIO_TWIRL_BOUNCE,
|
||||||
|
.soundSnoring3 = SOUND_MARIO_SNORING3,
|
||||||
|
.soundSoLongaBowser = SOUND_MARIO_SO_LONGA_BOWSER,
|
||||||
|
.soundImaTired = SOUND_MARIO_IMA_TIRED,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Character* get_character(struct MarioState* m) {
|
struct Character* get_character(struct MarioState* m) {
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
enum CharacterType {
|
enum CharacterType {
|
||||||
CT_MARIO,
|
CT_MARIO,
|
||||||
CT_LUIGI,
|
CT_LUIGI,
|
||||||
|
CT_TOAD,
|
||||||
|
|
||||||
// must be last
|
// must be last
|
||||||
CT_MAX
|
CT_MAX
|
||||||
|
|
|
@ -20,6 +20,7 @@ enum CameraHUDLut {
|
||||||
GLYPH_CAM_ARROW_UP,
|
GLYPH_CAM_ARROW_UP,
|
||||||
GLYPH_CAM_ARROW_DOWN,
|
GLYPH_CAM_ARROW_DOWN,
|
||||||
GLYPH_CAM_LUIGI_HEAD,
|
GLYPH_CAM_LUIGI_HEAD,
|
||||||
|
GLYPH_CAM_TOAD_HEAD,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Functions
|
// Functions
|
||||||
|
|
BIN
textures/segment2/custom_toad_head.rgba16.png
Normal file
After Width: | Height: | Size: 3.3 KiB |