mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-21 19:45:10 +00:00
Added Waluigi - model provided by Super Keeberghrh
This commit is contained in:
parent
4b3276afbf
commit
4cebce4864
27 changed files with 6333 additions and 19 deletions
|
@ -75,6 +75,10 @@ ZCUSTOM_DIRS := luigi
|
|||
CUSTOM_DIRS += toad_cap
|
||||
ZCUSTOM_DIRS += toad_player
|
||||
|
||||
# Add Waluigi
|
||||
CUSTOM_DIRS += waluigi_cap
|
||||
ZCUSTOM_DIRS += waluigi
|
||||
|
||||
# Actor Files
|
||||
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)))
|
||||
|
|
|
@ -6,3 +6,6 @@
|
|||
|
||||
// luigi_cap
|
||||
#include "luigi_cap/model.inc.c"
|
||||
|
||||
// waluigi_cap
|
||||
#include "waluigi_cap/model.inc.c"
|
||||
|
|
|
@ -28,4 +28,16 @@ extern const GeoLayout toads_cap_geo[];
|
|||
extern const GeoLayout toads_metal_cap_geo[];
|
||||
extern const GeoLayout toads_wing_cap_geo[];
|
||||
|
||||
// waluigi_cap
|
||||
extern const GeoLayout waluigis_cap_geo[];
|
||||
extern const GeoLayout waluigis_metal_cap_geo[];
|
||||
extern const GeoLayout waluigis_wing_cap_geo[];
|
||||
extern const GeoLayout waluigis_winged_metal_cap_geo[];
|
||||
extern const Gfx waluigi_cap_seg3_dl_03022F48[];
|
||||
extern const Gfx waluigi_cap_seg3_dl_03022FF8[];
|
||||
extern const Gfx waluigi_cap_seg3_dl_030230B0[];
|
||||
extern const Gfx waluigi_cap_seg3_dl_03023160[];
|
||||
extern const Gfx waluigi_cap_seg3_dl_03023108[];
|
||||
extern const Gfx waluigi_cap_seg3_dl_03023298[];
|
||||
|
||||
#endif
|
||||
|
|
|
@ -6,3 +6,4 @@
|
|||
|
||||
#include "luigi_cap/geo.inc.c" // custom luigi_cap
|
||||
#include "toad_cap/geo.inc.c" // custom toad_cap
|
||||
#include "waluigi_cap/geo.inc.c" // custom waluigi_cap
|
||||
|
|
BIN
actors/waluigi/custom_waluigi_cap.rgba16.png
Normal file
BIN
actors/waluigi/custom_waluigi_cap.rgba16.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 411 B |
1068
actors/waluigi/geo.inc.c
Normal file
1068
actors/waluigi/geo.inc.c
Normal file
File diff suppressed because it is too large
Load diff
243
actors/waluigi/geo_header.h
Normal file
243
actors/waluigi/geo_header.h
Normal file
|
@ -0,0 +1,243 @@
|
|||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt1[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt2[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt3[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt4[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt5[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt6[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt7[];
|
||||
extern const GeoLayout waluigi_armature_002_switch_option_002[];
|
||||
extern const GeoLayout waluigi_right_hand_open_armature[];
|
||||
extern const GeoLayout waluigi_left_hand_open_armature[];
|
||||
extern const GeoLayout waluigi_left_hand_peace_armature[];
|
||||
extern const GeoLayout waluigi_left_hand_cap_armature[];
|
||||
extern const GeoLayout waluigi_left_hand_wing_cap_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt1[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt2[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt3[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt4[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt5[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt6[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt7[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_jump_waluigi_armature_002_switch_option_002[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_jump_waluigi_right_hand_open_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_jump_waluigi_left_hand_open_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_jump_waluigi_left_hand_peace_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_jump_waluigi_left_hand_cap_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_jump_waluigi_left_hand_wing_cap_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt1[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt2[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt3[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt4[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt5[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt6[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt7[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt1[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt2_jump_waluigi_armature_002_switch_option_002[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt2_jump_waluigi_right_hand_open_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt2_jump_waluigi_left_hand_open_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt2_jump_waluigi_left_hand_peace_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt2_jump_waluigi_left_hand_cap_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt2_jump_waluigi_left_hand_wing_cap_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt2[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt3_jump_waluigi_armature_002_switch_option_002[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt3_jump_waluigi_right_hand_open_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt3_jump_waluigi_left_hand_open_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt3_jump_waluigi_left_hand_peace_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt3_jump_waluigi_left_hand_cap_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt3_jump_waluigi_left_hand_wing_cap_armature[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt3[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt1[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt2[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt3[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt4[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt5[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt6[];
|
||||
extern const GeoLayout waluigi_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt7[];
|
||||
extern const GeoLayout waluigi_geo[];
|
||||
extern Lights1 waluigi_body_v3_lights;
|
||||
extern Lights1 waluigi_cap_v3_lights;
|
||||
extern Lights1 waluigi_face_0___eye_open_v3_lights;
|
||||
extern Lights1 waluigi_hair_v3_lights;
|
||||
extern Lights1 waluigi_sideburns_v3_lights;
|
||||
extern Lights1 waluigi_mustache_v3_lights;
|
||||
extern Lights1 waluigi_nose_v3_lights;
|
||||
extern Lights1 waluigi_mouth_v3_lights;
|
||||
extern Lights1 waluigi_mustache_wah_lights;
|
||||
extern Lights1 waluigi_face_1___eye_half_v3_lights;
|
||||
extern Lights1 waluigi_face_2___eye_closed_v3_lights;
|
||||
extern Lights1 waluigi_face_7___eye_X_v3_lights;
|
||||
extern Lights1 waluigi_gloves_v3_lights;
|
||||
extern Lights1 waluigi_shoes_v3_lights;
|
||||
extern u8 waluigi_mario_button_rgba16[];
|
||||
extern u8 waluigi_metal_rgba16[];
|
||||
extern u8 waluigi_custom_waluigi_cap_rgba16[];
|
||||
extern u8 waluigi_waluigi_eyes0_rgba16[];
|
||||
extern u8 waluigi_mario_sideburn_rgba16[];
|
||||
extern u8 waluigi_waluigi_mouth_rgba16[];
|
||||
extern u8 waluigi_waluigi_eyes1_rgba16[];
|
||||
extern u8 waluigi_waluigi_eyes2_rgba16[];
|
||||
extern u8 waluigi_waluigi_eyes3_rgba16[];
|
||||
extern u8 waluigi_wing_2_rgba16[];
|
||||
extern u8 waluigi_wing1_rgba16[];
|
||||
extern u8 waluigi_waluigi_glove_rgba16[];
|
||||
extern Vtx waluigi_000_offset_mesh_layer_1_vtx_0[76];
|
||||
extern Gfx waluigi_000_offset_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_001_mesh_layer_1_vtx_0[118];
|
||||
extern Gfx waluigi_000_offset_001_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_001_mesh_layer_1_vtx_1[23];
|
||||
extern Gfx waluigi_000_offset_001_mesh_layer_1_tri_1[];
|
||||
extern Vtx waluigi_000_displaylist_mesh_layer_1_vtx_0[57];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_displaylist_mesh_layer_1_vtx_1[45];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_tri_1[];
|
||||
extern Vtx waluigi_000_displaylist_mesh_layer_1_vtx_2[46];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_tri_2[];
|
||||
extern Vtx waluigi_000_displaylist_mesh_layer_1_vtx_3[17];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_tri_3[];
|
||||
extern Vtx waluigi_000_displaylist_mesh_layer_1_vtx_4[31];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_tri_4[];
|
||||
extern Vtx waluigi_000_displaylist_mesh_layer_1_vtx_5[15];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_tri_5[];
|
||||
extern Vtx waluigi_000_displaylist_mesh_layer_1_vtx_6[11];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_tri_6[];
|
||||
extern Vtx waluigi_000_displaylist_mesh_layer_1_vtx_7[34];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_tri_7[];
|
||||
extern Vtx waluigi_002_switch_option_head__no_cap__mesh_layer_1_vtx_0[45];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_002_switch_option_head__no_cap__mesh_layer_1_vtx_1[31];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_tri_1[];
|
||||
extern Vtx waluigi_002_switch_option_head__no_cap__mesh_layer_1_vtx_2[15];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_tri_2[];
|
||||
extern Vtx waluigi_002_switch_option_head__no_cap__mesh_layer_1_vtx_3[11];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_tri_3[];
|
||||
extern Vtx waluigi_002_switch_option_head__no_cap__mesh_layer_1_vtx_4[19];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_tri_4[];
|
||||
extern Vtx waluigi_002_switch_option_head__no_cap__mesh_layer_1_vtx_5[103];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_tri_5[];
|
||||
extern Vtx waluigi_002_switch_option_head__no_cap__mesh_layer_1_vtx_6[42];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_tri_6[];
|
||||
extern Vtx waluigi_000_displaylist_001_mesh_layer_4_vtx_0[4];
|
||||
extern Gfx waluigi_000_displaylist_001_mesh_layer_4_tri_0[];
|
||||
extern Vtx waluigi_000_displaylist_001_mesh_layer_4_vtx_1[4];
|
||||
extern Gfx waluigi_000_displaylist_001_mesh_layer_4_tri_1[];
|
||||
extern Vtx waluigi_000_displaylist_002_mesh_layer_4_vtx_0[4];
|
||||
extern Gfx waluigi_000_displaylist_002_mesh_layer_4_tri_0[];
|
||||
extern Vtx waluigi_000_displaylist_002_mesh_layer_4_vtx_1[4];
|
||||
extern Gfx waluigi_000_displaylist_002_mesh_layer_4_tri_1[];
|
||||
extern Vtx waluigi_000_offset_003_mesh_layer_1_vtx_0[31];
|
||||
extern Gfx waluigi_000_offset_003_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_004_mesh_layer_1_vtx_0[16];
|
||||
extern Gfx waluigi_000_offset_004_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_displaylist_003_mesh_layer_1_vtx_0[56];
|
||||
extern Gfx waluigi_000_displaylist_003_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_002_switch_option_right_hand_open_mesh_layer_1_vtx_0[74];
|
||||
extern Gfx waluigi_002_switch_option_right_hand_open_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_006_mesh_layer_1_vtx_0[28];
|
||||
extern Gfx waluigi_000_offset_006_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_007_mesh_layer_1_vtx_0[16];
|
||||
extern Gfx waluigi_000_offset_007_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_displaylist_004_mesh_layer_1_vtx_0[60];
|
||||
extern Gfx waluigi_000_displaylist_004_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_002_switch_option_left_hand_open_mesh_layer_1_vtx_0[73];
|
||||
extern Gfx waluigi_002_switch_option_left_hand_open_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_004_switch_option_left_hand_peace_mesh_layer_1_vtx_0[85];
|
||||
extern Gfx waluigi_004_switch_option_left_hand_peace_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_005_switch_option_left_hand_cap_mesh_layer_1_vtx_0[59];
|
||||
extern Gfx waluigi_005_switch_option_left_hand_cap_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_005_switch_option_left_hand_cap_mesh_layer_1_vtx_1[46];
|
||||
extern Gfx waluigi_005_switch_option_left_hand_cap_mesh_layer_1_tri_1[];
|
||||
extern Vtx waluigi_006_switch_option_left_hand_wing_cap_mesh_layer_1_vtx_0[59];
|
||||
extern Gfx waluigi_006_switch_option_left_hand_wing_cap_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_006_switch_option_left_hand_wing_cap_mesh_layer_1_vtx_1[46];
|
||||
extern Gfx waluigi_006_switch_option_left_hand_wing_cap_mesh_layer_1_tri_1[];
|
||||
extern Vtx waluigi_006_switch_option_left_hand_wing_cap_wings_mesh_layer_4_vtx_0[8];
|
||||
extern Gfx waluigi_006_switch_option_left_hand_wing_cap_wings_mesh_layer_4_tri_0[];
|
||||
extern Vtx waluigi_006_switch_option_left_hand_wing_cap_wings_mesh_layer_4_vtx_1[8];
|
||||
extern Gfx waluigi_006_switch_option_left_hand_wing_cap_wings_mesh_layer_4_tri_1[];
|
||||
extern Vtx waluigi_000_offset_009_mesh_layer_1_vtx_0[22];
|
||||
extern Gfx waluigi_000_offset_009_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_010_LEFT_KNEE_mesh_layer_1_vtx_0[12];
|
||||
extern Gfx waluigi_000_offset_010_LEFT_KNEE_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_011_BOTTOM_LEG_mesh_layer_1_vtx_0[29];
|
||||
extern Gfx waluigi_000_offset_011_BOTTOM_LEG_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_012_mesh_layer_1_vtx_0[22];
|
||||
extern Gfx waluigi_000_offset_012_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_offset_013_RIGHT_KNEE_mesh_layer_1_vtx_0[12];
|
||||
extern Gfx waluigi_000_offset_013_RIGHT_KNEE_mesh_layer_1_tri_0[];
|
||||
extern Vtx waluigi_000_displaylist_005_mesh_layer_1_vtx_0[28];
|
||||
extern Gfx waluigi_000_displaylist_005_mesh_layer_1_tri_0[];
|
||||
extern Gfx mat_waluigi_body_v3[];
|
||||
extern Gfx mat_waluigi_metal_v3[];
|
||||
extern Gfx mat_revert_waluigi_metal_v3[];
|
||||
extern Gfx mat_waluigi_cap_v3[];
|
||||
extern Gfx mat_waluigi_face_0___eye_open_v3[];
|
||||
extern Gfx mat_waluigi_hair_v3[];
|
||||
extern Gfx mat_waluigi_sideburns_v3[];
|
||||
extern Gfx mat_waluigi_mustache_v3[];
|
||||
extern Gfx mat_waluigi_nose_v3[];
|
||||
extern Gfx mat_waluigi_mouth_v3[];
|
||||
extern Gfx mat_waluigi_mustache_wah[];
|
||||
extern Gfx mat_waluigi_face_1___eye_half_v3[];
|
||||
extern Gfx mat_waluigi_face_2___eye_closed_v3[];
|
||||
extern Gfx mat_waluigi_face_7___eye_X_v3[];
|
||||
extern Gfx mat_waluigi_wing_2_v3[];
|
||||
extern Gfx mat_revert_waluigi_wing_2_v3[];
|
||||
extern Gfx mat_waluigi_wing_1_v3[];
|
||||
extern Gfx mat_revert_waluigi_wing_1_v3[];
|
||||
extern Gfx mat_waluigi_gloves_v3[];
|
||||
extern Gfx mat_waluigi_shoes_v3[];
|
||||
extern Gfx waluigi_000_offset_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_001_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_001_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_mat_override_face_1___eye_half_v3_1[];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_mat_override_face_2___eye_closed_v3_2[];
|
||||
extern Gfx waluigi_000_displaylist_mesh_layer_1_mat_override_face_7___eye_X_v3_3[];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1[];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_mat_override_face_1___eye_half_v3_1[];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_mat_override_face_2___eye_closed_v3_2[];
|
||||
extern Gfx waluigi_002_switch_option_head__no_cap__mesh_layer_1_mat_override_face_7___eye_X_v3_3[];
|
||||
extern Gfx waluigi_000_displaylist_001_mesh_layer_4[];
|
||||
extern Gfx waluigi_000_displaylist_001_mesh_layer_4_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_displaylist_002_mesh_layer_4[];
|
||||
extern Gfx waluigi_000_displaylist_002_mesh_layer_4_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_003_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_003_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_004_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_004_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_displaylist_003_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_displaylist_003_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_002_switch_option_right_hand_open_mesh_layer_1[];
|
||||
extern Gfx waluigi_002_switch_option_right_hand_open_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_006_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_006_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_007_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_007_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_displaylist_004_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_displaylist_004_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_002_switch_option_left_hand_open_mesh_layer_1[];
|
||||
extern Gfx waluigi_002_switch_option_left_hand_open_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_004_switch_option_left_hand_peace_mesh_layer_1[];
|
||||
extern Gfx waluigi_004_switch_option_left_hand_peace_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_005_switch_option_left_hand_cap_mesh_layer_1[];
|
||||
extern Gfx waluigi_005_switch_option_left_hand_cap_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_006_switch_option_left_hand_wing_cap_mesh_layer_1[];
|
||||
extern Gfx waluigi_006_switch_option_left_hand_wing_cap_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_006_switch_option_left_hand_wing_cap_wings_mesh_layer_4[];
|
||||
extern Gfx waluigi_006_switch_option_left_hand_wing_cap_wings_mesh_layer_4_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_009_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_009_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_010_LEFT_KNEE_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_010_LEFT_KNEE_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_011_BOTTOM_LEG_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_011_BOTTOM_LEG_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_012_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_012_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_offset_013_RIGHT_KNEE_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_offset_013_RIGHT_KNEE_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_000_displaylist_005_mesh_layer_1[];
|
||||
extern Gfx waluigi_000_displaylist_005_mesh_layer_1_mat_override_metal_v3_0[];
|
||||
extern Gfx waluigi_material_revert_render_settings[];
|
4246
actors/waluigi/model.inc.c
Normal file
4246
actors/waluigi/model.inc.c
Normal file
File diff suppressed because it is too large
Load diff
85
actors/waluigi_cap/geo.inc.c
Normal file
85
actors/waluigi_cap/geo.inc.c
Normal file
|
@ -0,0 +1,85 @@
|
|||
// 0x16000CA4
|
||||
const GeoLayout waluigis_cap_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
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_DISPLAY_LIST(LAYER_OPAQUE, waluigi_cap_seg3_dl_03022F48),
|
||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, waluigi_cap_seg3_dl_03022F48),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
// 0x16000CF0
|
||||
const GeoLayout waluigis_metal_cap_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
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_DISPLAY_LIST(LAYER_OPAQUE, waluigi_cap_seg3_dl_03022FF8),
|
||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, waluigi_cap_seg3_dl_03022FF8),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
// 0x16000D3C
|
||||
const GeoLayout waluigis_wing_cap_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
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_DISPLAY_LIST(LAYER_OPAQUE, waluigi_cap_seg3_dl_03022F48),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, waluigi_cap_seg3_dl_030230B0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, waluigi_cap_seg3_dl_03023160),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
// 0x16000DA8
|
||||
const GeoLayout waluigis_winged_metal_cap_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
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_DISPLAY_LIST(LAYER_OPAQUE, waluigi_cap_seg3_dl_03022FF8),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, waluigi_cap_seg3_dl_03023108),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, waluigi_cap_seg3_dl_03023298),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
416
actors/waluigi_cap/model.inc.c
Normal file
416
actors/waluigi_cap/model.inc.c
Normal file
|
@ -0,0 +1,416 @@
|
|||
// Mario Cap (Normal Cap, Metal, Winged, etc)
|
||||
|
||||
// 0x0301CF08
|
||||
static const Lights1 waluigi_cap_seg3_lights_0301CF08 = gdSPDefLights1(
|
||||
0x39, 0x03, 0x00,
|
||||
0x73, 0x06, 0x00, 0x28, 0x28, 0x28
|
||||
);
|
||||
|
||||
// 0x0301CF20
|
||||
static const Lights1 waluigi_cap_seg3_lights_0301CF20 = gdSPDefLights1(
|
||||
0x7f, 0x7f, 0x7f,
|
||||
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
|
||||
);
|
||||
|
||||
// 0x0301CF38
|
||||
static const Lights1 waluigi_cap_seg3_lights_0301CF38 = gdSPDefLights1(
|
||||
0x7f, 0x00, 0x00,
|
||||
0xff, 0x00, 0x00, 0x28, 0x28, 0x28
|
||||
);
|
||||
|
||||
// 0x0301CF50
|
||||
ALIGNED8 static const u8 waluigi_cap_seg3_texture_0301CF50[] = {
|
||||
#include "actors/mario/mario_metal.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x0301DF50
|
||||
ALIGNED8 static const u8 waluigi_cap_seg3_texture_0301DF50[] = {
|
||||
#include "actors/waluigi/custom_waluigi_cap.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x0301E750
|
||||
ALIGNED8 static const u8 waluigi_cap_seg3_texture_0301E750[] = {
|
||||
#include "actors/mario/mario_wing.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x0301F750
|
||||
ALIGNED8 static const u8 waluigi_cap_seg3_texture_0301F750[] = {
|
||||
#include "actors/mario/mario_wing_tip.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x03020750
|
||||
ALIGNED8 static const u8 waluigi_cap_seg3_texture_03020750[] = {
|
||||
#include "actors/mario/mario_metal_wing_unused.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x03021750
|
||||
ALIGNED8 static const u8 waluigi_cap_seg3_texture_03021750[] = {
|
||||
#include "actors/mario/mario_metal_wing_tip_unused.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x03022750
|
||||
static const Vtx waluigi_cap_seg3_vertex_03022750[] = {
|
||||
{{{ 33, 35, 118}, 0, { 728, 758}, {0x30, 0x26, 0x6e, 0xff}}},
|
||||
{{{ 96, 22, 45}, 0, { 1240, 876}, {0x48, 0xa4, 0x31, 0xff}}},
|
||||
{{{ 71, 101, 113}, 0, { 1028, 148}, {0x55, 0x16, 0x5b, 0xff}}},
|
||||
{{{ 0, 110, 143}, 0, { 460, 68}, {0x00, 0x34, 0x73, 0xff}}},
|
||||
{{{ -31, 35, 118}, 0, { 206, 762}, {0xd0, 0x26, 0x6f, 0xff}}},
|
||||
{{{ -70, 101, 113}, 0, { -106, 158}, {0xab, 0x16, 0x5b, 0xff}}},
|
||||
{{{ -95, 22, 46}, 0, { -302, 890}, {0xa8, 0xb9, 0x38, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x030227C0
|
||||
static const Vtx waluigi_cap_seg3_vertex_030227C0[] = {
|
||||
{{{ -66, 2, 139}, 0, { 0, 0}, {0xb0, 0xbb, 0x45, 0xff}}},
|
||||
{{{ 0, 0, 163}, 0, { 0, 0}, {0x00, 0xba, 0x69, 0xff}}},
|
||||
{{{ -31, 35, 118}, 0, { 0, 0}, {0xd0, 0x26, 0x6f, 0xff}}},
|
||||
{{{ -32, 17, 109}, 0, { 0, 0}, {0x00, 0x83, 0xf0, 0xff}}},
|
||||
{{{ 33, 17, 109}, 0, { 0, 0}, {0xfb, 0x84, 0xea, 0xff}}},
|
||||
{{{ -95, 22, 46}, 0, { 0, 0}, {0xa8, 0xb9, 0x38, 0xff}}},
|
||||
{{{ -101, 10, -7}, 0, { 0, 0}, {0xd8, 0x89, 0x11, 0xff}}},
|
||||
{{{ -70, 101, 113}, 0, { 0, 0}, {0xab, 0x16, 0x5b, 0xff}}},
|
||||
{{{ -135, 70, 23}, 0, { 0, 0}, {0x84, 0x15, 0x10, 0xff}}},
|
||||
{{{ -125, 38, -45}, 0, { 0, 0}, {0x8d, 0xec, 0xd1, 0xff}}},
|
||||
{{{ -86, 1, -60}, 0, { 0, 0}, {0xce, 0x8c, 0xf6, 0xff}}},
|
||||
{{{ -41, 144, 64}, 0, { 0, 0}, {0xdc, 0x79, 0x00, 0xff}}},
|
||||
{{{ -76, 84, -60}, 0, { 0, 0}, {0xd5, 0x6e, 0xd3, 0xff}}},
|
||||
{{{ 136, 70, 22}, 0, { 0, 0}, {0x7b, 0x16, 0x10, 0xff}}},
|
||||
{{{ 71, 101, 113}, 0, { 0, 0}, {0x55, 0x16, 0x5b, 0xff}}},
|
||||
{{{ 96, 22, 45}, 0, { 0, 0}, {0x48, 0xa4, 0x31, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x030228C0
|
||||
static const Vtx waluigi_cap_seg3_vertex_030228C0[] = {
|
||||
{{{ 42, 144, 64}, 0, { 0, 0}, {0x2b, 0x76, 0x0d, 0xff}}},
|
||||
{{{ 136, 70, 22}, 0, { 0, 0}, {0x7b, 0x16, 0x10, 0xff}}},
|
||||
{{{ 76, 84, -60}, 0, { 0, 0}, {0x2a, 0x6c, 0xcf, 0xff}}},
|
||||
{{{ 103, 10, -6}, 0, { 0, 0}, {0x42, 0x96, 0x12, 0xff}}},
|
||||
{{{ 126, 38, -46}, 0, { 0, 0}, {0x73, 0xec, 0xd0, 0xff}}},
|
||||
{{{ 71, 101, 113}, 0, { 0, 0}, {0x55, 0x16, 0x5b, 0xff}}},
|
||||
{{{ 96, 22, 45}, 0, { 0, 0}, {0x48, 0xa4, 0x31, 0xff}}},
|
||||
{{{ 67, 2, 139}, 0, { 0, 0}, {0x50, 0xba, 0x44, 0xff}}},
|
||||
{{{ 33, 17, 109}, 0, { 0, 0}, {0xfb, 0x84, 0xea, 0xff}}},
|
||||
{{{ 33, 35, 118}, 0, { 0, 0}, {0x30, 0x26, 0x6e, 0xff}}},
|
||||
{{{ 86, 1, -60}, 0, { 0, 0}, {0x20, 0x86, 0xfe, 0xff}}},
|
||||
{{{ 0, 0, 163}, 0, { 0, 0}, {0x00, 0xba, 0x69, 0xff}}},
|
||||
{{{ -31, 35, 118}, 0, { 0, 0}, {0xd0, 0x26, 0x6f, 0xff}}},
|
||||
{{{ 53, 0, -118}, 0, { 0, 0}, {0x2c, 0xb5, 0xa5, 0xff}}},
|
||||
{{{ 49, 62, -139}, 0, { 0, 0}, {0x32, 0x49, 0xa6, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x030229B0
|
||||
static const Vtx waluigi_cap_seg3_vertex_030229B0[] = {
|
||||
{{{ -76, 84, -60}, 0, { 0, 0}, {0xd5, 0x6e, 0xd3, 0xff}}},
|
||||
{{{ -41, 144, 64}, 0, { 0, 0}, {0xdc, 0x79, 0x00, 0xff}}},
|
||||
{{{ 76, 84, -60}, 0, { 0, 0}, {0x2a, 0x6c, 0xcf, 0xff}}},
|
||||
{{{ 0, 110, 143}, 0, { 0, 0}, {0x00, 0x34, 0x73, 0xff}}},
|
||||
{{{ 42, 144, 64}, 0, { 0, 0}, {0x2b, 0x76, 0x0d, 0xff}}},
|
||||
{{{ -70, 101, 113}, 0, { 0, 0}, {0xab, 0x16, 0x5b, 0xff}}},
|
||||
{{{ 71, 101, 113}, 0, { 0, 0}, {0x55, 0x16, 0x5b, 0xff}}},
|
||||
{{{ 49, 62, -139}, 0, { 0, 0}, {0x32, 0x49, 0xa6, 0xff}}},
|
||||
{{{ 126, 38, -46}, 0, { 0, 0}, {0x73, 0xec, 0xd0, 0xff}}},
|
||||
{{{ -52, 0, -118}, 0, { 0, 0}, {0xd2, 0x9d, 0xc1, 0xff}}},
|
||||
{{{ -49, 62, -138}, 0, { 0, 0}, {0xce, 0x1a, 0x8f, 0xff}}},
|
||||
{{{ 53, 0, -118}, 0, { 0, 0}, {0x2c, 0xb5, 0xa5, 0xff}}},
|
||||
{{{ -125, 38, -45}, 0, { 0, 0}, {0x8d, 0xec, 0xd1, 0xff}}},
|
||||
{{{ 86, 1, -60}, 0, { 0, 0}, {0x20, 0x86, 0xfe, 0xff}}},
|
||||
{{{ -86, 1, -60}, 0, { 0, 0}, {0xce, 0x8c, 0xf6, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x03022AA0
|
||||
static const Vtx waluigi_cap_seg3_vertex_03022AA0[] = {
|
||||
{{{ 86, 1, -60}, 0, { 0, 0}, {0x20, 0x86, 0xfe, 0xff}}},
|
||||
{{{ -86, 1, -60}, 0, { 0, 0}, {0xce, 0x8c, 0xf6, 0xff}}},
|
||||
{{{ -52, 0, -118}, 0, { 0, 0}, {0xd2, 0x9d, 0xc1, 0xff}}},
|
||||
{{{ 33, 17, 109}, 0, { 0, 0}, {0xfb, 0x84, 0xea, 0xff}}},
|
||||
{{{ -32, 17, 109}, 0, { 0, 0}, {0x00, 0x83, 0xf0, 0xff}}},
|
||||
{{{ -101, 10, -7}, 0, { 0, 0}, {0xd8, 0x89, 0x11, 0xff}}},
|
||||
{{{ 96, 22, 45}, 0, { 0, 0}, {0x48, 0xa4, 0x31, 0xff}}},
|
||||
{{{ 103, 10, -6}, 0, { 0, 0}, {0x42, 0x96, 0x12, 0xff}}},
|
||||
{{{ 53, 0, -118}, 0, { 0, 0}, {0x2c, 0xb5, 0xa5, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x03022B30 - 0x03022B68
|
||||
const Gfx waluigi_cap_seg3_dl_03022B30[] = {
|
||||
gsSPVertex(waluigi_cap_seg3_vertex_03022750, 7, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
|
||||
gsSP2Triangles( 3, 5, 4, 0x0, 2, 3, 0, 0x0),
|
||||
gsSP1Triangle( 5, 6, 4, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022B68 - 0x03022CC8
|
||||
const Gfx waluigi_cap_seg3_dl_03022B68[] = {
|
||||
gsSPVertex(waluigi_cap_seg3_vertex_030227C0, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
|
||||
gsSP2Triangles( 3, 1, 0, 0x0, 3, 5, 6, 0x0),
|
||||
gsSP2Triangles( 3, 0, 5, 0x0, 5, 7, 8, 0x0),
|
||||
gsSP2Triangles( 5, 8, 6, 0x0, 0, 2, 5, 0x0),
|
||||
gsSP2Triangles( 6, 9, 10, 0x0, 8, 9, 6, 0x0),
|
||||
gsSP2Triangles(11, 8, 7, 0x0, 8, 12, 9, 0x0),
|
||||
gsSP2Triangles(12, 8, 11, 0x0, 13, 14, 15, 0x0),
|
||||
gsSPVertex(waluigi_cap_seg3_vertex_030228C0, 15, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
|
||||
gsSP2Triangles( 4, 2, 1, 0x0, 5, 1, 0, 0x0),
|
||||
gsSP2Triangles( 1, 6, 3, 0x0, 6, 7, 8, 0x0),
|
||||
gsSP2Triangles( 9, 7, 6, 0x0, 10, 4, 3, 0x0),
|
||||
gsSP2Triangles( 9, 11, 7, 0x0, 7, 11, 8, 0x0),
|
||||
gsSP2Triangles(12, 11, 9, 0x0, 13, 14, 4, 0x0),
|
||||
gsSPVertex(waluigi_cap_seg3_vertex_030229B0, 15, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
|
||||
gsSP2Triangles( 5, 3, 1, 0x0, 1, 4, 2, 0x0),
|
||||
gsSP2Triangles( 4, 3, 6, 0x0, 0, 2, 7, 0x0),
|
||||
gsSP2Triangles( 8, 7, 2, 0x0, 9, 10, 11, 0x0),
|
||||
gsSP2Triangles(12, 10, 9, 0x0, 7, 10, 0, 0x0),
|
||||
gsSP2Triangles(10, 7, 11, 0x0, 0, 10, 12, 0x0),
|
||||
gsSP2Triangles(11, 8, 13, 0x0, 14, 12, 9, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022CC8 - 0x03022D10
|
||||
const Gfx waluigi_cap_seg3_dl_03022CC8[] = {
|
||||
gsSPVertex(waluigi_cap_seg3_vertex_03022AA0, 9, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
|
||||
gsSP2Triangles( 6, 3, 5, 0x0, 7, 6, 5, 0x0),
|
||||
gsSP2Triangles( 0, 7, 5, 0x0, 0, 5, 1, 0x0),
|
||||
gsSP1Triangle( 2, 8, 0, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022D10 - 0x03022D38
|
||||
const Gfx waluigi_cap_seg3_dl_03022D10[] = {
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022B68),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&waluigi_cap_seg3_lights_0301CF08.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&waluigi_cap_seg3_lights_0301CF08.a, 2),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022CC8),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022D38
|
||||
static const Vtx waluigi_cap_seg3_vertex_03022D38[] = {
|
||||
{{{ 199, 247, -55}, 0, { 990, 0}, {0x59, 0xed, 0x58, 0xff}}},
|
||||
{{{ 131, 274, 20}, 0, { 0, 0}, {0x59, 0xed, 0x58, 0xff}}},
|
||||
{{{ 69, 71, 38}, 0, { 0, 2012}, {0x59, 0xed, 0x58, 0xff}}},
|
||||
{{{ 199, 247, -55}, 0, { 990, 0}, {0x58, 0xee, 0x58, 0xff}}},
|
||||
{{{ 69, 71, 38}, 0, { 0, 2012}, {0x58, 0xee, 0x58, 0xff}}},
|
||||
{{{ 138, 44, -37}, 0, { 990, 2012}, {0x58, 0xee, 0x58, 0xff}}},
|
||||
{{{ -137, 44, -37}, 0, { 990, 2012}, {0xa8, 0xee, 0x58, 0xff}}},
|
||||
{{{ -68, 71, 38}, 0, { 0, 2012}, {0xa8, 0xee, 0x58, 0xff}}},
|
||||
{{{ -198, 247, -55}, 0, { 990, 0}, {0xa8, 0xee, 0x58, 0xff}}},
|
||||
{{{ -68, 71, 38}, 0, { 0, 2012}, {0xa7, 0xed, 0x58, 0xff}}},
|
||||
{{{ -130, 274, 20}, 0, { 0, 0}, {0xa7, 0xed, 0x58, 0xff}}},
|
||||
{{{ -198, 247, -55}, 0, { 990, 0}, {0xa7, 0xed, 0x58, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x03022DF8
|
||||
static const Vtx waluigi_cap_seg3_vertex_03022DF8[] = {
|
||||
{{{ 268, 219, -132}, 0, { 990, 0}, {0x59, 0xed, 0x57, 0xff}}},
|
||||
{{{ 199, 247, -55}, 0, { 0, 0}, {0x59, 0xed, 0x57, 0xff}}},
|
||||
{{{ 138, 44, -37}, 0, { 0, 2012}, {0x59, 0xed, 0x57, 0xff}}},
|
||||
{{{ 207, 16, -114}, 0, { 990, 2012}, {0x59, 0xed, 0x57, 0xff}}},
|
||||
{{{ -206, 16, -114}, 0, { 990, 2012}, {0xa7, 0xed, 0x57, 0xff}}},
|
||||
{{{ -137, 44, -37}, 0, { 0, 2012}, {0xa7, 0xed, 0x57, 0xff}}},
|
||||
{{{ -267, 219, -132}, 0, { 990, 0}, {0xa7, 0xed, 0x57, 0xff}}},
|
||||
{{{ -198, 247, -55}, 0, { 0, 0}, {0xa7, 0xed, 0x57, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x03022E78 - 0x03022EA8
|
||||
const Gfx waluigi_cap_seg3_dl_03022E78[] = {
|
||||
gsSPVertex(waluigi_cap_seg3_vertex_03022D38, 12, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
|
||||
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022EA8 - 0x03022ED8
|
||||
const Gfx waluigi_cap_seg3_dl_03022EA8[] = {
|
||||
gsSPVertex(waluigi_cap_seg3_vertex_03022DF8, 8, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022ED8 - 0x03022F20
|
||||
const Gfx waluigi_cap_seg3_dl_03022ED8[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
|
||||
gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022F20 - 0x03022F48
|
||||
const Gfx waluigi_cap_seg3_dl_03022F20[] = {
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022F48 - 0x03022FF8
|
||||
const Gfx waluigi_cap_seg3_dl_03022F48[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_0301DF50),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&waluigi_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&waluigi_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022B30),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022D10),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsDPSetAlphaCompare(G_AC_NONE),
|
||||
gsDPSetEnvColor(255, 255, 255, 255),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03022FF8 - 0x030230B0
|
||||
const Gfx waluigi_cap_seg3_dl_03022FF8[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
|
||||
gsDPLoadTextureBlock(waluigi_cap_seg3_texture_0301CF50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLight(&waluigi_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPLight(&waluigi_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022B30),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022B68),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022CC8),
|
||||
gsDPPipeSync(),
|
||||
gsSPClearGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPSetAlphaCompare(G_AC_NONE),
|
||||
gsDPSetEnvColor(255, 255, 255, 255),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x030230B0 - 0x03023108
|
||||
const Gfx waluigi_cap_seg3_dl_030230B0[] = {
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022ED8),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_0301E750),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022E78),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_0301F750),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022EA8),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022F20),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03023108 - 0x03023160
|
||||
const Gfx waluigi_cap_seg3_dl_03023108[] = {
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022ED8),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_03020750),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022E78),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_03021750),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022EA8),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022F20),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03023160 - 0x03023298
|
||||
const Gfx waluigi_cap_seg3_dl_03023160[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_0301DF50),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&waluigi_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&waluigi_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022B30),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022D10),
|
||||
gsDPPipeSync(),
|
||||
gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_0301E750),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022E78),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_0301F750),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022EA8),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
gsDPSetAlphaCompare(G_AC_NONE),
|
||||
gsDPSetEnvColor(255, 255, 255, 255),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x03023298 - 0x030233D0
|
||||
const Gfx waluigi_cap_seg3_dl_03023298[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_0301CF50),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&waluigi_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&waluigi_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022B30),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022B68),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022CC8),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsSPClearGeometryMode(G_TEXTURE_GEN | G_LIGHTING | G_CULL_BACK),
|
||||
gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_03020750),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022E78),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, waluigi_cap_seg3_texture_03021750),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPDisplayList(waluigi_cap_seg3_dl_03022EA8),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
gsDPSetAlphaCompare(G_AC_NONE),
|
||||
gsDPSetEnvColor(255, 255, 255, 255),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
|
@ -9,3 +9,6 @@
|
|||
|
||||
// toad model
|
||||
#include "toad_player/model.inc.c"
|
||||
|
||||
// waluigi model
|
||||
#include "waluigi/model.inc.c"
|
||||
|
|
|
@ -9,4 +9,7 @@
|
|||
// toad_player
|
||||
#include "actors/toad_player/geo_header.h"
|
||||
|
||||
// waluigi
|
||||
#include "actors/waluigi/geo_header.h"
|
||||
|
||||
#endif
|
||||
|
|
|
@ -7,3 +7,5 @@
|
|||
#include "luigi/geo.inc.c"
|
||||
|
||||
#include "toad_player/geo.inc.c"
|
||||
|
||||
#include "waluigi/geo.inc.c"
|
||||
|
|
|
@ -221,6 +221,10 @@ 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_waluigi_head[] = {
|
||||
#include "textures/segment2/custom_waluigi_head.rgba16.inc.c"
|
||||
};
|
||||
|
||||
ALIGNED8 static const u8 texture_hud_char_star[] = {
|
||||
#include "textures/segment2/segment2.05C00.rgba16.inc.c"
|
||||
};
|
||||
|
@ -1840,7 +1844,7 @@ const u8 *const main_hud_lut[] = {
|
|||
texture_hud_char_K, texture_hud_char_L, texture_hud_char_M, texture_hud_char_N,
|
||||
texture_hud_char_O, texture_hud_char_P, 0x0, texture_hud_char_R,
|
||||
texture_hud_char_S, texture_hud_char_T, texture_hud_char_U, 0x0,
|
||||
texture_hud_char_W, 0x0, texture_hud_char_Y, 0x0,
|
||||
texture_hud_char_W, 0x0, texture_hud_char_Y, texture_hud_char_waluigi_head,
|
||||
0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -2085,7 +2089,8 @@ const u8 *const main_credits_font_lut[] = {
|
|||
// HUD camera table 0x020087CC-0x020087E3
|
||||
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_arrow_up, texture_hud_char_arrow_down, texture_hud_char_luigi_head, texture_hud_char_toad_head
|
||||
texture_hud_char_arrow_up, texture_hud_char_arrow_down, texture_hud_char_luigi_head, texture_hud_char_toad_head,
|
||||
texture_hud_char_waluigi_head,
|
||||
};
|
||||
|
||||
// If you change the language here, the following Makefile rule also needs to
|
||||
|
|
|
@ -19,8 +19,8 @@ fi
|
|||
|
||||
# no debug, direct
|
||||
$FILE --server 27015 --configfile sm64config_server.txt &
|
||||
sleep 7
|
||||
$FILE --client 127.0.0.1 27015 --configfile sm64config_client.txt &
|
||||
#sleep 7
|
||||
#$FILE --client 127.0.0.1 27015 --configfile sm64config_client.txt &
|
||||
exit
|
||||
|
||||
# debug on server
|
||||
|
|
|
@ -600,4 +600,10 @@
|
|||
#define MODEL_TOADS_METAL_CAP 0xEA // toads_metal_cap_geo
|
||||
#define MODEL_TOADS_WING_CAP 0xEB // toads_wing_cap_geo
|
||||
|
||||
#define MODEL_WALUIGI 0xEC // waluigi_geo
|
||||
#define MODEL_WALUIGIS_CAP 0xED // waluigis_cap_geo
|
||||
#define MODEL_WALUIGIS_METAL_CAP 0xEE // waluigis_metal_cap_geo
|
||||
#define MODEL_WALUIGIS_WING_CAP 0xEF // waluigis_wing_cap_geo
|
||||
#define MODEL_WALUIGIS_WINGED_METAL_CAP 0xF0 // waluigis_winged_metal_cap_geo
|
||||
|
||||
#endif // MODEL_IDS_H
|
||||
|
|
|
@ -392,6 +392,8 @@ struct MarioState
|
|||
/*????*/ Vec3f nonInstantWarpPos;
|
||||
/*????*/ struct Character* character;
|
||||
/*????*/ u8 wasNetworkVisible;
|
||||
/*????*/ f32 minimumBoneY;
|
||||
/*????*/ f32 curAnimOffset;
|
||||
};
|
||||
|
||||
#define PLAY_MODE_NORMAL 0
|
||||
|
|
|
@ -119,16 +119,22 @@ const LevelScript level_main_scripts_entry[] = {
|
|||
|
||||
LOAD_MODEL_FROM_GEO(MODEL_BUBBLE_PLAYER, water_bomb_geo),
|
||||
|
||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGI, luigi_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGIS_CAP, luigis_cap_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGIS_METAL_CAP, luigis_metal_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_LUIGI, luigi_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGIS_CAP, luigis_cap_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGIS_METAL_CAP, luigis_metal_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_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),
|
||||
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),
|
||||
|
||||
LOAD_MODEL_FROM_GEO(MODEL_WALUIGI, waluigi_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_WALUIGIS_CAP, waluigis_cap_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_WALUIGIS_METAL_CAP, waluigis_metal_cap_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_WALUIGIS_WING_CAP, waluigis_wing_cap_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_WALUIGIS_WINGED_METAL_CAP, waluigis_winged_metal_cap_geo),
|
||||
|
||||
// CUSTOM MODELS END
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#define GRAPH_RENDER_INVISIBLE (1 << 4)
|
||||
#define GRAPH_RENDER_HAS_ANIMATION (1 << 5)
|
||||
#define GRAPH_RENDER_CYLBOARD (1 << 6)
|
||||
#define GRAPH_RENDER_PLAYER (1 << 7)
|
||||
|
||||
// Whether the node type has a function pointer of type GraphNodeFunc
|
||||
#define GRAPH_NODE_TYPE_FUNCTIONAL 0x100
|
||||
|
|
|
@ -8,11 +8,13 @@
|
|||
#include "luigi_audio_defines.h"
|
||||
#include "pc/configfile.h"
|
||||
#include "audio/external.h"
|
||||
#include "engine/graph_node.h"
|
||||
|
||||
extern Gfx mario_cap_seg3_dl_03022F48[];
|
||||
extern Gfx luigi_cap_seg3_dl_03022F48[];
|
||||
extern Gfx toad_player_dl_cap[];
|
||||
extern Gfx toad_player_dl_cap_decal[];
|
||||
extern Gfx waluigi_cap_seg3_dl_03022F48[];
|
||||
|
||||
struct Character gCharacters[CT_MAX] = {
|
||||
[CT_MARIO] = {
|
||||
|
@ -27,8 +29,10 @@ struct Character gCharacters[CT_MAX] = {
|
|||
.capEnemyLayer = LAYER_OPAQUE,
|
||||
.capEnemyGfx = mario_cap_seg3_dl_03022F48,
|
||||
.capEnemyDecalGfx = NULL,
|
||||
.soundFreqScale = 1.0f,
|
||||
// anim
|
||||
.animOffsetEnabled = false,
|
||||
// sounds
|
||||
.soundFreqScale = 1.0f,
|
||||
.soundYahWahHoo = SOUND_MARIO_YAH_WAH_HOO,
|
||||
.soundHoohoo = SOUND_MARIO_HOOHOO,
|
||||
.soundYahoo = SOUND_MARIO_YAHOO,
|
||||
|
@ -85,8 +89,10 @@ struct Character gCharacters[CT_MAX] = {
|
|||
.capEnemyLayer = LAYER_OPAQUE,
|
||||
.capEnemyGfx = luigi_cap_seg3_dl_03022F48,
|
||||
.capEnemyDecalGfx = NULL,
|
||||
.soundFreqScale = 1.0f,
|
||||
// anim
|
||||
.animOffsetEnabled = false,
|
||||
// sounds
|
||||
.soundFreqScale = 1.0f,
|
||||
.soundYahWahHoo = SOUND_LUIGI_YAH_WAH_HOO,
|
||||
.soundHoohoo = SOUND_LUIGI_HOOHOO,
|
||||
.soundYahoo = SOUND_LUIGI_YAHOO,
|
||||
|
@ -139,12 +145,14 @@ struct Character gCharacters[CT_MAX] = {
|
|||
.capModelId = MODEL_TOADS_CAP,
|
||||
.capMetalModelId = MODEL_TOADS_METAL_CAP,
|
||||
.capWingModelId = MODEL_TOADS_WING_CAP,
|
||||
.capMetalWingModelId = MODEL_TOADS_CAP,
|
||||
.capMetalWingModelId = MODEL_TOADS_WING_CAP,
|
||||
.capEnemyLayer = LAYER_TRANSPARENT,
|
||||
.capEnemyGfx = toad_player_dl_cap,
|
||||
.capEnemyDecalGfx = toad_player_dl_cap_decal,
|
||||
.soundFreqScale = 1.25f,
|
||||
// anim
|
||||
.animOffsetEnabled = false,
|
||||
// sounds
|
||||
.soundFreqScale = 1.25f,
|
||||
.soundYahWahHoo = SOUND_MARIO_YAH_WAH_HOO,
|
||||
.soundHoohoo = SOUND_MARIO_HOOHOO,
|
||||
.soundYahoo = SOUND_MARIO_YAHOO,
|
||||
|
@ -188,6 +196,122 @@ struct Character gCharacters[CT_MAX] = {
|
|||
.soundSoLongaBowser = SOUND_MARIO_SO_LONGA_BOWSER,
|
||||
.soundImaTired = SOUND_MARIO_IMA_TIRED,
|
||||
},
|
||||
|
||||
[CT_WALUIGI] = {
|
||||
.name = "Waluigi",
|
||||
.hudHead = 'z',
|
||||
.cameraHudHead = GLYPH_CAM_WALUIGI_HEAD,
|
||||
.modelId = MODEL_WALUIGI,
|
||||
.capModelId = MODEL_WALUIGIS_CAP,
|
||||
.capMetalModelId = MODEL_WALUIGIS_METAL_CAP,
|
||||
.capWingModelId = MODEL_WALUIGIS_WING_CAP,
|
||||
.capMetalWingModelId = MODEL_WALUIGIS_WINGED_METAL_CAP,
|
||||
.capEnemyLayer = LAYER_OPAQUE,
|
||||
.capEnemyGfx = waluigi_cap_seg3_dl_03022F48,
|
||||
.capEnemyDecalGfx = NULL,
|
||||
// anim
|
||||
.animOffsetEnabled = true,
|
||||
.animOffsetLowYPoint = 11,
|
||||
.animOffsetFeet = 25,
|
||||
.animOffsetHand = -10,
|
||||
// sounds
|
||||
.soundFreqScale = 0.99f,
|
||||
.soundYahWahHoo = SOUND_LUIGI_YAH_WAH_HOO,
|
||||
.soundHoohoo = SOUND_LUIGI_HOOHOO,
|
||||
.soundYahoo = SOUND_LUIGI_YAHOO,
|
||||
.soundUh = SOUND_LUIGI_UH,
|
||||
.soundHrmm = SOUND_LUIGI_HRMM,
|
||||
.soundWah2 = SOUND_LUIGI_WAH2,
|
||||
.soundWhoa = SOUND_LUIGI_WHOA,
|
||||
.soundEeuh = SOUND_LUIGI_EEUH,
|
||||
.soundAttacked = SOUND_LUIGI_ATTACKED,
|
||||
.soundOoof = SOUND_LUIGI_OOOF,
|
||||
.soundOoof2 = SOUND_LUIGI_OOOF2,
|
||||
.soundHereWeGo = SOUND_LUIGI_HERE_WE_GO,
|
||||
.soundYawning = SOUND_LUIGI_YAWNING,
|
||||
.soundSnoring1 = SOUND_LUIGI_SNORING1,
|
||||
.soundSnoring2 = SOUND_LUIGI_SNORING2,
|
||||
.soundWaaaooow = SOUND_LUIGI_WAAAOOOW,
|
||||
.soundHaha = SOUND_LUIGI_HAHA,
|
||||
.soundHaha_2 = SOUND_LUIGI_HAHA_2,
|
||||
.soundUh2 = SOUND_LUIGI_UH2,
|
||||
.soundUh2_2 = SOUND_LUIGI_UH2_2,
|
||||
.soundOnFire = SOUND_LUIGI_ON_FIRE,
|
||||
.soundDying = SOUND_LUIGI_DYING,
|
||||
.soundPantingCold = SOUND_LUIGI_PANTING_COLD,
|
||||
.soundPanting = SOUND_LUIGI_PANTING,
|
||||
.soundCoughing1 = SOUND_LUIGI_COUGHING1,
|
||||
.soundCoughing2 = SOUND_LUIGI_COUGHING2,
|
||||
.soundCoughing3 = SOUND_LUIGI_COUGHING3,
|
||||
.soundPunchYah = SOUND_LUIGI_PUNCH_YAH,
|
||||
.soundPunchHoo = SOUND_LUIGI_PUNCH_HOO,
|
||||
.soundMamaMia = SOUND_LUIGI_MAMA_MIA,
|
||||
.soundGroundPoundWah = SOUND_LUIGI_GROUND_POUND_WAH,
|
||||
.soundDrowning = SOUND_LUIGI_DROWNING,
|
||||
.soundPunchWah = SOUND_LUIGI_PUNCH_WAH,
|
||||
.soundYahooWahaYippee = SOUND_LUIGI_YAHOO_WAHA_YIPPEE,
|
||||
.soundDoh = SOUND_LUIGI_DOH,
|
||||
.soundGameOver = SOUND_LUIGI_GAME_OVER,
|
||||
.soundHello = SOUND_LUIGI_HELLO,
|
||||
.soundPressStartToPlay = SOUND_LUIGI_PRESS_START_TO_PLAY,
|
||||
.soundTwirlBounce = SOUND_LUIGI_TWIRL_BOUNCE,
|
||||
.soundSnoring3 = SOUND_LUIGI_SNORING3,
|
||||
.soundSoLongaBowser = SOUND_LUIGI_SO_LONGA_BOWSER,
|
||||
.soundImaTired = SOUND_LUIGI_IMA_TIRED,
|
||||
},
|
||||
};
|
||||
|
||||
enum AnimType {
|
||||
ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_FEET,
|
||||
ANIM_TYPE_HAND,
|
||||
};
|
||||
|
||||
#define ANIM_TYPE_MAX 209
|
||||
u8 sAnimTypes[ANIM_TYPE_MAX] = {
|
||||
ANIM_TYPE_HAND, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_FEET,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_FEET, ANIM_TYPE_FEET, ANIM_TYPE_FEET,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_FEET, ANIM_TYPE_FEET, ANIM_TYPE_FEET, ANIM_TYPE_NONE, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_HAND, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_HAND, ANIM_TYPE_FEET, ANIM_TYPE_HAND, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_FEET, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_FEET, ANIM_TYPE_NONE, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_FEET,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_FEET, ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_HAND, ANIM_TYPE_HAND, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_FEET, ANIM_TYPE_FEET, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_FEET,
|
||||
ANIM_TYPE_FEET, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_FEET, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_FEET, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_HAND, ANIM_TYPE_HAND,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_FEET, ANIM_TYPE_LOWY, ANIM_TYPE_LOWY,
|
||||
ANIM_TYPE_LOWY, ANIM_TYPE_LOWY, ANIM_TYPE_NONE, ANIM_TYPE_NONE,
|
||||
};
|
||||
|
||||
struct Character* get_character(struct MarioState* m) {
|
||||
|
@ -265,4 +389,51 @@ void play_character_sound_if_no_flag(struct MarioState* m, enum CharacterSound c
|
|||
play_character_sound(m, characterSound);
|
||||
m->flags |= flags;
|
||||
}
|
||||
}
|
||||
|
||||
f32 get_character_anim_offset(struct MarioState* m) {
|
||||
if (m == NULL || m->marioObj == NULL) { return 0; }
|
||||
struct Object* marioObj = m->marioObj;
|
||||
struct Character* c = get_character(m);
|
||||
if (!c->animOffsetEnabled) { return 0; }
|
||||
s32 animID = marioObj->header.gfx.unk38.animID;
|
||||
if (animID < 0 || animID >= ANIM_TYPE_MAX) { return 0; }
|
||||
|
||||
switch (sAnimTypes[animID]) {
|
||||
case ANIM_TYPE_LOWY:
|
||||
if (m->minimumBoneY < c->animOffsetLowYPoint) {
|
||||
return -(m->minimumBoneY - c->animOffsetLowYPoint);
|
||||
}
|
||||
break;
|
||||
case ANIM_TYPE_FEET:
|
||||
return c->animOffsetFeet;
|
||||
break;
|
||||
case ANIM_TYPE_HAND:
|
||||
return c->animOffsetHand;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void update_character_anim_offset(struct MarioState* m) {
|
||||
if (m == NULL || m->marioObj == NULL) { return; }
|
||||
struct Object* marioObj = m->marioObj;
|
||||
struct Character* c = get_character(m);
|
||||
if (!c->animOffsetEnabled) { return; }
|
||||
|
||||
f32 targetOffset = get_character_anim_offset(m);
|
||||
|
||||
// smooth
|
||||
f32 alpha = (fabs(targetOffset - m->curAnimOffset) / 80.0f) + 0.5f;
|
||||
alpha = (alpha + 0.5f) / 2.0f;
|
||||
alpha *= alpha;
|
||||
m->curAnimOffset = (m->curAnimOffset * alpha) + (targetOffset * (1.0f - alpha));
|
||||
if (m->curAnimOffset > 40) { m->curAnimOffset = 40; }
|
||||
if (m->curAnimOffset < -40) { m->curAnimOffset = -40; }
|
||||
|
||||
//s32 animID = marioObj->header.gfx.unk38.animID;
|
||||
//LOG_INFO(">>> [%d] : %d :: %f, %f", animID, sAnimTypes[animID], m->curAnimOffset, m->minimumBoneY);
|
||||
|
||||
marioObj->header.gfx.pos[1] = m->pos[1] + m->curAnimOffset;
|
||||
marioObj->header.gfx.node.flags |= GRAPH_RENDER_PLAYER;
|
||||
}
|
|
@ -7,6 +7,7 @@ enum CharacterType {
|
|||
CT_MARIO,
|
||||
CT_LUIGI,
|
||||
CT_TOAD,
|
||||
CT_WALUIGI,
|
||||
|
||||
// must be last
|
||||
CT_MAX
|
||||
|
@ -24,8 +25,13 @@ struct Character {
|
|||
u8 capEnemyLayer;
|
||||
Gfx* capEnemyGfx;
|
||||
Gfx* capEnemyDecalGfx;
|
||||
f32 soundFreqScale;
|
||||
// anim
|
||||
u8 animOffsetEnabled;
|
||||
f32 animOffsetLowYPoint;
|
||||
f32 animOffsetFeet;
|
||||
f32 animOffsetHand;
|
||||
// sounds
|
||||
f32 soundFreqScale;
|
||||
s32 soundYahWahHoo;
|
||||
s32 soundHoohoo;
|
||||
s32 soundYahoo;
|
||||
|
@ -119,8 +125,12 @@ enum CharacterSound {
|
|||
struct MarioState;
|
||||
extern struct Character gCharacters[];
|
||||
struct Character* get_character(struct MarioState* m);
|
||||
|
||||
void play_character_sound(struct MarioState* m, enum CharacterSound characterSound);
|
||||
void play_character_sound_offset(struct MarioState* m, enum CharacterSound characterSound, u32 offset);
|
||||
void play_character_sound_if_no_flag(struct MarioState* m, enum CharacterSound characterSound, u32 flags);
|
||||
|
||||
f32 get_character_anim_offset(struct MarioState* m);
|
||||
void update_character_anim_offset(struct MarioState* m);
|
||||
|
||||
#endif // CHARACTERS_H
|
||||
|
|
|
@ -21,6 +21,7 @@ enum CameraHUDLut {
|
|||
GLYPH_CAM_ARROW_DOWN,
|
||||
GLYPH_CAM_LUIGI_HEAD,
|
||||
GLYPH_CAM_TOAD_HEAD,
|
||||
GLYPH_CAM_WALUIGI_HEAD,
|
||||
};
|
||||
|
||||
// Functions
|
||||
|
|
|
@ -89,7 +89,7 @@ void play_step_sound(struct MarioState *m, s16 frame1, s16 frame2) {
|
|||
}
|
||||
|
||||
void align_with_floor(struct MarioState *m) {
|
||||
m->pos[1] = m->floorHeight;
|
||||
m->pos[1] = m->floorHeight + get_character_anim_offset(m);
|
||||
mtxf_align_terrain_triangle(sFloorAlignMatrix[m->playerIndex], m->pos, m->faceAngle[1], 40.0f);
|
||||
m->marioObj->header.gfx.throwMatrix = &sFloorAlignMatrix[m->playerIndex];
|
||||
}
|
||||
|
|
|
@ -299,6 +299,8 @@ void bhv_mario_update(void) {
|
|||
i++;
|
||||
}
|
||||
|
||||
update_character_anim_offset(gMarioState);
|
||||
|
||||
// reset mario state to the local player
|
||||
gMarioState = &gMarioStates[0];
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "rendering_graph_node.h"
|
||||
#include "shadow.h"
|
||||
#include "sm64.h"
|
||||
#include "game/level_update.h"
|
||||
|
||||
/**
|
||||
* This file contains the code that processes the scene graph for rendering.
|
||||
|
@ -147,6 +148,7 @@ static Gfx *sViewportPos;
|
|||
static Vp sPrevViewport;
|
||||
|
||||
struct Object* gCurGraphNodeProcessingObject;
|
||||
struct MarioState* gCurGraphNodeMarioState;
|
||||
|
||||
void mtx_patch_interpolated(void) {
|
||||
s32 i;
|
||||
|
@ -797,6 +799,12 @@ static void geo_process_animated_part(struct GraphNodeAnimatedPart *node) {
|
|||
gMatStackFixed[gMatStackIndex] = matrixPtr;
|
||||
mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]);
|
||||
gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated;
|
||||
|
||||
if (gCurGraphNodeMarioState != NULL) {
|
||||
Vec3f translated = { 0 };
|
||||
get_pos_from_transform_mtx(translated, gMatStack[gMatStackIndex], *gCurGraphNodeCamera->matrixPtr);
|
||||
gCurGraphNodeMarioState->minimumBoneY = fmin(gCurGraphNodeMarioState->minimumBoneY, translated[1] - gCurGraphNodeMarioState->marioObj->header.gfx.pos[1]);
|
||||
}
|
||||
if (node->displayList != NULL) {
|
||||
geo_append_display_list(node->displayList, node->node.flags >> 8);
|
||||
}
|
||||
|
@ -1069,10 +1077,23 @@ static void interpolate_matrix(Mat4 result, Mat4 a, Mat4 b) {
|
|||
*/
|
||||
static void geo_process_object(struct Object *node) {
|
||||
struct Object* lastProcessingObject = gCurGraphNodeProcessingObject;
|
||||
struct MarioState* lastMarioState = gCurGraphNodeMarioState;
|
||||
gCurGraphNodeProcessingObject = node;
|
||||
Mat4 mtxf;
|
||||
s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;
|
||||
Vec3f scaleInterpolated;
|
||||
if (node->header.gfx.node.flags & GRAPH_RENDER_PLAYER) {
|
||||
gCurGraphNodeMarioState = NULL;
|
||||
for (int i = 0; i < MAX_PLAYERS; i++) {
|
||||
if (gMarioStates[i].marioObj == node) {
|
||||
gCurGraphNodeMarioState = &gMarioStates[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gCurGraphNodeMarioState != NULL) {
|
||||
gCurGraphNodeMarioState->minimumBoneY = 999;
|
||||
}
|
||||
}
|
||||
if (node->header.gfx.unk18 == gCurGraphNodeRoot->areaIndex) {
|
||||
if (node->header.gfx.throwMatrix != NULL) {
|
||||
mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix,
|
||||
|
@ -1194,6 +1215,7 @@ static void geo_process_object(struct Object *node) {
|
|||
node->header.gfx.throwMatrixInterpolated = NULL;
|
||||
}
|
||||
gCurGraphNodeProcessingObject = lastProcessingObject;
|
||||
gCurGraphNodeMarioState = lastMarioState;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -213,6 +213,8 @@ void main_func(void) {
|
|||
fs_init(sys_ropaths, gamedir, userpath);
|
||||
|
||||
configfile_load(configfile_name());
|
||||
if (configPlayerModel >= CT_MAX) { configPlayerModel = 0; }
|
||||
if (configPlayerPalette >= 16) { configPlayerPalette = 0; }
|
||||
|
||||
if (gCLIOpts.FullScreen == 1)
|
||||
configWindow.fullscreen = true;
|
||||
|
|
BIN
textures/segment2/custom_waluigi_head.rgba16.png
Normal file
BIN
textures/segment2/custom_waluigi_head.rgba16.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
Loading…
Reference in a new issue