mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 03:55:11 +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
|
CUSTOM_DIRS += toad_cap
|
||||||
ZCUSTOM_DIRS += toad_player
|
ZCUSTOM_DIRS += toad_player
|
||||||
|
|
||||||
|
# Add Waluigi
|
||||||
|
CUSTOM_DIRS += waluigi_cap
|
||||||
|
ZCUSTOM_DIRS += waluigi
|
||||||
|
|
||||||
# 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)))
|
||||||
|
|
|
@ -6,3 +6,6 @@
|
||||||
|
|
||||||
// luigi_cap
|
// luigi_cap
|
||||||
#include "luigi_cap/model.inc.c"
|
#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_metal_cap_geo[];
|
||||||
extern const GeoLayout toads_wing_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
|
#endif
|
||||||
|
|
|
@ -6,3 +6,4 @@
|
||||||
|
|
||||||
#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
|
#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
|
// toad model
|
||||||
#include "toad_player/model.inc.c"
|
#include "toad_player/model.inc.c"
|
||||||
|
|
||||||
|
// waluigi model
|
||||||
|
#include "waluigi/model.inc.c"
|
||||||
|
|
|
@ -9,4 +9,7 @@
|
||||||
// toad_player
|
// toad_player
|
||||||
#include "actors/toad_player/geo_header.h"
|
#include "actors/toad_player/geo_header.h"
|
||||||
|
|
||||||
|
// waluigi
|
||||||
|
#include "actors/waluigi/geo_header.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -7,3 +7,5 @@
|
||||||
#include "luigi/geo.inc.c"
|
#include "luigi/geo.inc.c"
|
||||||
|
|
||||||
#include "toad_player/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"
|
#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[] = {
|
ALIGNED8 static const u8 texture_hud_char_star[] = {
|
||||||
#include "textures/segment2/segment2.05C00.rgba16.inc.c"
|
#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_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_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_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,
|
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
|
// 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_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
|
// If you change the language here, the following Makefile rule also needs to
|
||||||
|
|
|
@ -19,8 +19,8 @@ fi
|
||||||
|
|
||||||
# no debug, direct
|
# no debug, direct
|
||||||
$FILE --server 27015 --configfile sm64config_server.txt &
|
$FILE --server 27015 --configfile sm64config_server.txt &
|
||||||
sleep 7
|
#sleep 7
|
||||||
$FILE --client 127.0.0.1 27015 --configfile sm64config_client.txt &
|
#$FILE --client 127.0.0.1 27015 --configfile sm64config_client.txt &
|
||||||
exit
|
exit
|
||||||
|
|
||||||
# debug on server
|
# debug on server
|
||||||
|
|
|
@ -600,4 +600,10 @@
|
||||||
#define MODEL_TOADS_METAL_CAP 0xEA // toads_metal_cap_geo
|
#define MODEL_TOADS_METAL_CAP 0xEA // toads_metal_cap_geo
|
||||||
#define MODEL_TOADS_WING_CAP 0xEB // toads_wing_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
|
#endif // MODEL_IDS_H
|
||||||
|
|
|
@ -392,6 +392,8 @@ struct MarioState
|
||||||
/*????*/ Vec3f nonInstantWarpPos;
|
/*????*/ Vec3f nonInstantWarpPos;
|
||||||
/*????*/ struct Character* character;
|
/*????*/ struct Character* character;
|
||||||
/*????*/ u8 wasNetworkVisible;
|
/*????*/ u8 wasNetworkVisible;
|
||||||
|
/*????*/ f32 minimumBoneY;
|
||||||
|
/*????*/ f32 curAnimOffset;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define PLAY_MODE_NORMAL 0
|
#define PLAY_MODE_NORMAL 0
|
||||||
|
|
|
@ -130,6 +130,12 @@ const LevelScript level_main_scripts_entry[] = {
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_TOADS_METAL_CAP, toads_metal_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_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
|
// CUSTOM MODELS END
|
||||||
|
|
||||||
FREE_LEVEL_POOL(),
|
FREE_LEVEL_POOL(),
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#define GRAPH_RENDER_INVISIBLE (1 << 4)
|
#define GRAPH_RENDER_INVISIBLE (1 << 4)
|
||||||
#define GRAPH_RENDER_HAS_ANIMATION (1 << 5)
|
#define GRAPH_RENDER_HAS_ANIMATION (1 << 5)
|
||||||
#define GRAPH_RENDER_CYLBOARD (1 << 6)
|
#define GRAPH_RENDER_CYLBOARD (1 << 6)
|
||||||
|
#define GRAPH_RENDER_PLAYER (1 << 7)
|
||||||
|
|
||||||
// Whether the node type has a function pointer of type GraphNodeFunc
|
// Whether the node type has a function pointer of type GraphNodeFunc
|
||||||
#define GRAPH_NODE_TYPE_FUNCTIONAL 0x100
|
#define GRAPH_NODE_TYPE_FUNCTIONAL 0x100
|
||||||
|
|
|
@ -8,11 +8,13 @@
|
||||||
#include "luigi_audio_defines.h"
|
#include "luigi_audio_defines.h"
|
||||||
#include "pc/configfile.h"
|
#include "pc/configfile.h"
|
||||||
#include "audio/external.h"
|
#include "audio/external.h"
|
||||||
|
#include "engine/graph_node.h"
|
||||||
|
|
||||||
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[];
|
||||||
extern Gfx toad_player_dl_cap_decal[];
|
extern Gfx toad_player_dl_cap_decal[];
|
||||||
|
extern Gfx waluigi_cap_seg3_dl_03022F48[];
|
||||||
|
|
||||||
struct Character gCharacters[CT_MAX] = {
|
struct Character gCharacters[CT_MAX] = {
|
||||||
[CT_MARIO] = {
|
[CT_MARIO] = {
|
||||||
|
@ -27,8 +29,10 @@ struct Character gCharacters[CT_MAX] = {
|
||||||
.capEnemyLayer = LAYER_OPAQUE,
|
.capEnemyLayer = LAYER_OPAQUE,
|
||||||
.capEnemyGfx = mario_cap_seg3_dl_03022F48,
|
.capEnemyGfx = mario_cap_seg3_dl_03022F48,
|
||||||
.capEnemyDecalGfx = NULL,
|
.capEnemyDecalGfx = NULL,
|
||||||
.soundFreqScale = 1.0f,
|
// anim
|
||||||
|
.animOffsetEnabled = false,
|
||||||
// sounds
|
// sounds
|
||||||
|
.soundFreqScale = 1.0f,
|
||||||
.soundYahWahHoo = SOUND_MARIO_YAH_WAH_HOO,
|
.soundYahWahHoo = SOUND_MARIO_YAH_WAH_HOO,
|
||||||
.soundHoohoo = SOUND_MARIO_HOOHOO,
|
.soundHoohoo = SOUND_MARIO_HOOHOO,
|
||||||
.soundYahoo = SOUND_MARIO_YAHOO,
|
.soundYahoo = SOUND_MARIO_YAHOO,
|
||||||
|
@ -85,8 +89,10 @@ struct Character gCharacters[CT_MAX] = {
|
||||||
.capEnemyLayer = LAYER_OPAQUE,
|
.capEnemyLayer = LAYER_OPAQUE,
|
||||||
.capEnemyGfx = luigi_cap_seg3_dl_03022F48,
|
.capEnemyGfx = luigi_cap_seg3_dl_03022F48,
|
||||||
.capEnemyDecalGfx = NULL,
|
.capEnemyDecalGfx = NULL,
|
||||||
.soundFreqScale = 1.0f,
|
// anim
|
||||||
|
.animOffsetEnabled = false,
|
||||||
// sounds
|
// sounds
|
||||||
|
.soundFreqScale = 1.0f,
|
||||||
.soundYahWahHoo = SOUND_LUIGI_YAH_WAH_HOO,
|
.soundYahWahHoo = SOUND_LUIGI_YAH_WAH_HOO,
|
||||||
.soundHoohoo = SOUND_LUIGI_HOOHOO,
|
.soundHoohoo = SOUND_LUIGI_HOOHOO,
|
||||||
.soundYahoo = SOUND_LUIGI_YAHOO,
|
.soundYahoo = SOUND_LUIGI_YAHOO,
|
||||||
|
@ -139,12 +145,14 @@ struct Character gCharacters[CT_MAX] = {
|
||||||
.capModelId = MODEL_TOADS_CAP,
|
.capModelId = MODEL_TOADS_CAP,
|
||||||
.capMetalModelId = MODEL_TOADS_METAL_CAP,
|
.capMetalModelId = MODEL_TOADS_METAL_CAP,
|
||||||
.capWingModelId = MODEL_TOADS_WING_CAP,
|
.capWingModelId = MODEL_TOADS_WING_CAP,
|
||||||
.capMetalWingModelId = MODEL_TOADS_CAP,
|
.capMetalWingModelId = MODEL_TOADS_WING_CAP,
|
||||||
.capEnemyLayer = LAYER_TRANSPARENT,
|
.capEnemyLayer = LAYER_TRANSPARENT,
|
||||||
.capEnemyGfx = toad_player_dl_cap,
|
.capEnemyGfx = toad_player_dl_cap,
|
||||||
.capEnemyDecalGfx = toad_player_dl_cap_decal,
|
.capEnemyDecalGfx = toad_player_dl_cap_decal,
|
||||||
.soundFreqScale = 1.25f,
|
// anim
|
||||||
|
.animOffsetEnabled = false,
|
||||||
// sounds
|
// sounds
|
||||||
|
.soundFreqScale = 1.25f,
|
||||||
.soundYahWahHoo = SOUND_MARIO_YAH_WAH_HOO,
|
.soundYahWahHoo = SOUND_MARIO_YAH_WAH_HOO,
|
||||||
.soundHoohoo = SOUND_MARIO_HOOHOO,
|
.soundHoohoo = SOUND_MARIO_HOOHOO,
|
||||||
.soundYahoo = SOUND_MARIO_YAHOO,
|
.soundYahoo = SOUND_MARIO_YAHOO,
|
||||||
|
@ -188,6 +196,122 @@ struct Character gCharacters[CT_MAX] = {
|
||||||
.soundSoLongaBowser = SOUND_MARIO_SO_LONGA_BOWSER,
|
.soundSoLongaBowser = SOUND_MARIO_SO_LONGA_BOWSER,
|
||||||
.soundImaTired = SOUND_MARIO_IMA_TIRED,
|
.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) {
|
struct Character* get_character(struct MarioState* m) {
|
||||||
|
@ -266,3 +390,50 @@ void play_character_sound_if_no_flag(struct MarioState* m, enum CharacterSound c
|
||||||
m->flags |= flags;
|
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_MARIO,
|
||||||
CT_LUIGI,
|
CT_LUIGI,
|
||||||
CT_TOAD,
|
CT_TOAD,
|
||||||
|
CT_WALUIGI,
|
||||||
|
|
||||||
// must be last
|
// must be last
|
||||||
CT_MAX
|
CT_MAX
|
||||||
|
@ -24,8 +25,13 @@ struct Character {
|
||||||
u8 capEnemyLayer;
|
u8 capEnemyLayer;
|
||||||
Gfx* capEnemyGfx;
|
Gfx* capEnemyGfx;
|
||||||
Gfx* capEnemyDecalGfx;
|
Gfx* capEnemyDecalGfx;
|
||||||
f32 soundFreqScale;
|
// anim
|
||||||
|
u8 animOffsetEnabled;
|
||||||
|
f32 animOffsetLowYPoint;
|
||||||
|
f32 animOffsetFeet;
|
||||||
|
f32 animOffsetHand;
|
||||||
// sounds
|
// sounds
|
||||||
|
f32 soundFreqScale;
|
||||||
s32 soundYahWahHoo;
|
s32 soundYahWahHoo;
|
||||||
s32 soundHoohoo;
|
s32 soundHoohoo;
|
||||||
s32 soundYahoo;
|
s32 soundYahoo;
|
||||||
|
@ -119,8 +125,12 @@ enum CharacterSound {
|
||||||
struct MarioState;
|
struct MarioState;
|
||||||
extern struct Character gCharacters[];
|
extern struct Character gCharacters[];
|
||||||
struct Character* get_character(struct MarioState* m);
|
struct Character* get_character(struct MarioState* m);
|
||||||
|
|
||||||
void play_character_sound(struct MarioState* m, enum CharacterSound characterSound);
|
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_offset(struct MarioState* m, enum CharacterSound characterSound, u32 offset);
|
||||||
void play_character_sound_if_no_flag(struct MarioState* m, enum CharacterSound characterSound, u32 flags);
|
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
|
#endif // CHARACTERS_H
|
||||||
|
|
|
@ -21,6 +21,7 @@ enum CameraHUDLut {
|
||||||
GLYPH_CAM_ARROW_DOWN,
|
GLYPH_CAM_ARROW_DOWN,
|
||||||
GLYPH_CAM_LUIGI_HEAD,
|
GLYPH_CAM_LUIGI_HEAD,
|
||||||
GLYPH_CAM_TOAD_HEAD,
|
GLYPH_CAM_TOAD_HEAD,
|
||||||
|
GLYPH_CAM_WALUIGI_HEAD,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Functions
|
// Functions
|
||||||
|
|
|
@ -89,7 +89,7 @@ void play_step_sound(struct MarioState *m, s16 frame1, s16 frame2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void align_with_floor(struct MarioState *m) {
|
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);
|
mtxf_align_terrain_triangle(sFloorAlignMatrix[m->playerIndex], m->pos, m->faceAngle[1], 40.0f);
|
||||||
m->marioObj->header.gfx.throwMatrix = &sFloorAlignMatrix[m->playerIndex];
|
m->marioObj->header.gfx.throwMatrix = &sFloorAlignMatrix[m->playerIndex];
|
||||||
}
|
}
|
||||||
|
|
|
@ -299,6 +299,8 @@ void bhv_mario_update(void) {
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_character_anim_offset(gMarioState);
|
||||||
|
|
||||||
// reset mario state to the local player
|
// reset mario state to the local player
|
||||||
gMarioState = &gMarioStates[0];
|
gMarioState = &gMarioStates[0];
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "rendering_graph_node.h"
|
#include "rendering_graph_node.h"
|
||||||
#include "shadow.h"
|
#include "shadow.h"
|
||||||
#include "sm64.h"
|
#include "sm64.h"
|
||||||
|
#include "game/level_update.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file contains the code that processes the scene graph for rendering.
|
* This file contains the code that processes the scene graph for rendering.
|
||||||
|
@ -147,6 +148,7 @@ static Gfx *sViewportPos;
|
||||||
static Vp sPrevViewport;
|
static Vp sPrevViewport;
|
||||||
|
|
||||||
struct Object* gCurGraphNodeProcessingObject;
|
struct Object* gCurGraphNodeProcessingObject;
|
||||||
|
struct MarioState* gCurGraphNodeMarioState;
|
||||||
|
|
||||||
void mtx_patch_interpolated(void) {
|
void mtx_patch_interpolated(void) {
|
||||||
s32 i;
|
s32 i;
|
||||||
|
@ -797,6 +799,12 @@ static void geo_process_animated_part(struct GraphNodeAnimatedPart *node) {
|
||||||
gMatStackFixed[gMatStackIndex] = matrixPtr;
|
gMatStackFixed[gMatStackIndex] = matrixPtr;
|
||||||
mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]);
|
mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]);
|
||||||
gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated;
|
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) {
|
if (node->displayList != NULL) {
|
||||||
geo_append_display_list(node->displayList, node->node.flags >> 8);
|
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) {
|
static void geo_process_object(struct Object *node) {
|
||||||
struct Object* lastProcessingObject = gCurGraphNodeProcessingObject;
|
struct Object* lastProcessingObject = gCurGraphNodeProcessingObject;
|
||||||
|
struct MarioState* lastMarioState = gCurGraphNodeMarioState;
|
||||||
gCurGraphNodeProcessingObject = node;
|
gCurGraphNodeProcessingObject = node;
|
||||||
Mat4 mtxf;
|
Mat4 mtxf;
|
||||||
s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;
|
s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;
|
||||||
Vec3f scaleInterpolated;
|
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.unk18 == gCurGraphNodeRoot->areaIndex) {
|
||||||
if (node->header.gfx.throwMatrix != NULL) {
|
if (node->header.gfx.throwMatrix != NULL) {
|
||||||
mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix,
|
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;
|
node->header.gfx.throwMatrixInterpolated = NULL;
|
||||||
}
|
}
|
||||||
gCurGraphNodeProcessingObject = lastProcessingObject;
|
gCurGraphNodeProcessingObject = lastProcessingObject;
|
||||||
|
gCurGraphNodeMarioState = lastMarioState;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -213,6 +213,8 @@ void main_func(void) {
|
||||||
fs_init(sys_ropaths, gamedir, userpath);
|
fs_init(sys_ropaths, gamedir, userpath);
|
||||||
|
|
||||||
configfile_load(configfile_name());
|
configfile_load(configfile_name());
|
||||||
|
if (configPlayerModel >= CT_MAX) { configPlayerModel = 0; }
|
||||||
|
if (configPlayerPalette >= 16) { configPlayerPalette = 0; }
|
||||||
|
|
||||||
if (gCLIOpts.FullScreen == 1)
|
if (gCLIOpts.FullScreen == 1)
|
||||||
configWindow.fullscreen = true;
|
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