sm64coopdx/actors/luigi/model.inc.c
2024-07-05 22:46:16 -04:00

3638 lines
161 KiB
C

#include "pc/rom_assets.h"
// Luigi
static const Lights1 luigi_blue_lights_group = gdSPDefLights1(
0x0, 0x0, 0x7f,
0x0, 0x0, 0xff, 0x28, 0x28, 0x28
);
static const Lights1 luigi_green_lights_group = gdSPDefLights1(
0x0, 0x7f, 0x0,
0x0, 0xff, 0x0, 0x28, 0x28, 0x28
);
static const Lights1 luigi_white_lights_group = gdSPDefLights1(
0x7f, 0x7f, 0x7f,
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
);
static const Lights1 luigi_brown1_lights_group = gdSPDefLights1(
0x39, 0x0e, 0x07,
0x72, 0x1c, 0x0e, 0x28, 0x28, 0x28
);
static const Lights1 luigi_beige_lights_group = gdSPDefLights1(
0x7f, 0x60, 0x3c,
0xfe, 0xc1, 0x79, 0x28, 0x28, 0x28
);
static const Lights1 luigi_brown2_lights_group = gdSPDefLights1(
0x39, 0x03, 0x00,
0x73, 0x06, 0x00, 0x28, 0x28, 0x28
);
static const Lights1 luigi_black_lights_group = gdSPDefLights1(
0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x28, 0x28, 0x28
);
#include "actors/mario/mario_externs.h"
#define luigi_texture_metal_shade mario_texture_metal_shade
#define luigi_texture_metal_light mario_texture_metal_light
#define luigi_texture_yellow_button mario_texture_yellow_button
#define luigi_texture_eyes_front mario_texture_eyes_front
#define luigi_texture_eyes_half_closed mario_texture_eyes_half_closed
#define luigi_texture_eyes_closed mario_texture_eyes_closed
#define luigi_texture_eyes_left mario_texture_eyes_left
#define luigi_texture_eyes_right mario_texture_eyes_right
#define luigi_texture_eyes_up mario_texture_eyes_up
#define luigi_texture_eyes_down mario_texture_eyes_down
#define luigi_texture_eyes_dead mario_texture_eyes_dead
#define luigi_texture_wings_half_1 mario_texture_wings_half_1
#define luigi_texture_wings_half_2 mario_texture_wings_half_2
#define luigi_texture_metal_wings_half_1_shade mario_texture_metal_wings_half_1_shade
#define luigi_texture_metal_wings_half_1_light mario_texture_metal_wings_half_1_light
#define luigi_texture_metal_wings_half_2_shade mario_texture_metal_wings_half_2_shade
#define luigi_texture_metal_wings_half_2_light mario_texture_metal_wings_half_2_light
ALIGNED8 const Texture luigi_texture_l_logo[] = {
#include "actors/luigi/custom_luigi_logo.rgba16.inc.c"
};
ALIGNED8 const Texture luigi_texture_l_blend[] = {
#include "actors/luigi/custom_luigi_logo_blend.rgba16.inc.c"
};
ALIGNED8 const Texture luigi_texture_l_cap[] = {
#include "actors/luigi/custom_luigi_cap.rgba16.inc.c"
};
ALIGNED8 const Texture luigi_texture_hair_sideburn[] = {
#include "actors/luigi/custom_luigi_sideburn.rgba16.inc.c"
};
ALIGNED8 const Texture luigi_texture_add_sideburn[] = {
#include "actors/luigi/custom_luigi_sideburn_add.rgba16.inc.c"
};
ALIGNED8 const Texture luigi_texture_skin_sideburn[] = {
#include "actors/luigi/custom_luigi_skin.rgba16.inc.c"
};
ALIGNED8 const Texture luigi_texture_mustache[] = {
#include "actors/luigi/custom_luigi_mustache.rgba16.inc.c"
};
static const Vtx luigi_butt_dl_vertex[76] = {
{{{-9, -66, 44}, 0, {0, 0}, {0xD3, 0x98, 0x3A, 0x0}}},
{{{-14, -71, 0}, 0, {0, 0}, {0xD0, 0x8A, 0x0, 0x0}}},
{{{34, -72, 37}, 0, {0, 0}, {0x1A, 0x8A, 0x27, 0x0}}},
{{{-35, -51, 33}, 0, {0, 0}, {0x95, 0xC6, 0x26, 0x0}}},
{{{7, -47, 70}, 0, {0, 0}, {0xEA, 0xBF, 0x6B, 0x0}}},
{{{44, -48, 64}, 0, {0, 0}, {0x35, 0xBE, 0x5F, 0x0}}},
{{{67, -55, 29}, 0, {0, 0}, {0x64, 0xB9, 0x20, 0x0}}},
{{{34, -72, -37}, 0, {0, 0}, {0x1B, 0x8A, 0xD9, 0x0}}},
{{{-8, -66, -45}, 0, {0, 0}, {0xD5, 0x98, 0xC4, 0x0}}},
{{{-35, -51, -34}, 0, {0, 0}, {0x96, 0xC6, 0xD9, 0x0}}},
{{{-40, 30, -32}, 0, {0, 0}, {0x8B, 0x28, 0xE3, 0x0}}},
{{{-40, 30, 31}, 0, {0, 0}, {0x8B, 0x28, 0x1C, 0x0}}},
{{{-24, -12, 65}, 0, {0, 0}, {0xA9, 0xF1, 0x5B, 0x0}}},
{{{10, -10, 80}, 0, {0, 0}, {0xF1, 0xF6, 0x7E, 0x0}}},
{{{51, -9, 75}, 0, {0, 0}, {0x48, 0xF4, 0x68, 0x0}}},
{{{85, 10, 0}, 0, {0, 0}, {0x7E, 0xC, 0x0, 0x0}}},
{{{67, -55, 29}, 0, {0, 0}, {0x64, 0xB9, 0x20, 0x0}}},
{{{67, -55, -29}, 0, {0, 0}, {0x64, 0xB9, 0xE0, 0x0}}},
{{{85, 10, 0}, 0, {0, 0}, {0x7E, 0xC, 0x0, 0x0}}},
{{{34, -72, -37}, 0, {0, 0}, {0x1B, 0x8A, 0xD9, 0x0}}},
{{{44, -48, -64}, 0, {0, 0}, {0x34, 0xBC, 0xA2, 0x0}}},
{{{8, -47, -70}, 0, {0, 0}, {0xEB, 0xBF, 0x95, 0x0}}},
{{{-8, -66, -45}, 0, {0, 0}, {0xD5, 0x98, 0xC4, 0x0}}},
{{{-35, -51, -34}, 0, {0, 0}, {0x96, 0xC6, 0xD9, 0x0}}},
{{{-23, -12, -66}, 0, {0, 0}, {0xAB, 0xF1, 0xA3, 0x0}}},
{{{-40, 30, -32}, 0, {0, 0}, {0x8B, 0x28, 0xE3, 0x0}}},
{{{-22, 23, -65}, 0, {0, 0}, {0xAD, 0x1E, 0xA4, 0x0}}},
{{{-8, 48, -59}, 0, {0, 0}, {0xCD, 0x54, 0xB0, 0x0}}},
{{{-14, 61, -28}, 0, {0, 0}, {0xBF, 0x6A, 0xE7, 0x0}}},
{{{-14, 61, 27}, 0, {0, 0}, {0xBF, 0x6B, 0x18, 0x0}}},
{{{-40, 30, 31}, 0, {0, 0}, {0x8B, 0x28, 0x1C, 0x0}}},
{{{-9, 48, 58}, 0, {0, 0}, {0xCC, 0x55, 0x4F, 0x0}}},
{{{-23, 23, 64}, 0, {0, 0}, {0xAC, 0x1E, 0x5B, 0x0}}},
{{{-9, 48, 58}, 0, {0, 0}, {0xCC, 0x55, 0x4F, 0x0}}},
{{{-40, 30, 31}, 0, {0, 0}, {0x8B, 0x28, 0x1C, 0x0}}},
{{{-24, -12, 65}, 0, {0, 0}, {0xA9, 0xF1, 0x5B, 0x0}}},
{{{6, 26, 76}, 0, {0, 0}, {0xEA, 0x26, 0x77, 0x0}}},
{{{10, -10, 80}, 0, {0, 0}, {0xF1, 0xF6, 0x7E, 0x0}}},
{{{51, -9, 75}, 0, {0, 0}, {0x48, 0xF4, 0x68, 0x0}}},
{{{49, 34, 74}, 0, {0, 0}, {0x3D, 0x2D, 0x66, 0x0}}},
{{{85, 10, 0}, 0, {0, 0}, {0x7E, 0xC, 0x0, 0x0}}},
{{{57, 62, 31}, 0, {0, 0}, {0x50, 0x5D, 0x20, 0x0}}},
{{{57, 62, -31}, 0, {0, 0}, {0x51, 0x5D, 0xE1, 0x0}}},
{{{49, 35, -74}, 0, {0, 0}, {0x3E, 0x2E, 0x9B, 0x0}}},
{{{52, -10, -75}, 0, {0, 0}, {0x49, 0xF3, 0x99, 0x0}}},
{{{67, -55, -29}, 0, {0, 0}, {0x64, 0xB9, 0xE0, 0x0}}},
{{{44, -48, -64}, 0, {0, 0}, {0x34, 0xBC, 0xA2, 0x0}}},
{{{11, -10, -80}, 0, {0, 0}, {0xF2, 0xF5, 0x82, 0x0}}},
{{{8, -47, -70}, 0, {0, 0}, {0xEB, 0xBF, 0x95, 0x0}}},
{{{11, -10, -80}, 0, {0, 0}, {0xF2, 0xF5, 0x82, 0x0}}},
{{{44, -48, -64}, 0, {0, 0}, {0x34, 0xBC, 0xA2, 0x0}}},
{{{-23, -12, -66}, 0, {0, 0}, {0xAB, 0xF1, 0xA3, 0x0}}},
{{{7, 26, -77}, 0, {0, 0}, {0xEB, 0x25, 0x88, 0x0}}},
{{{-22, 23, -65}, 0, {0, 0}, {0xAD, 0x1E, 0xA4, 0x0}}},
{{{-8, 48, -59}, 0, {0, 0}, {0xCD, 0x54, 0xB0, 0x0}}},
{{{30, 62, -52}, 0, {0, 0}, {0x8, 0x6B, 0xBB, 0x0}}},
{{{-14, 61, -28}, 0, {0, 0}, {0xBF, 0x6A, 0xE7, 0x0}}},
{{{23, 71, -21}, 0, {0, 0}, {0xFF, 0x7E, 0xF1, 0x0}}},
{{{-14, 61, 27}, 0, {0, 0}, {0xBF, 0x6B, 0x18, 0x0}}},
{{{23, 71, 21}, 0, {0, 0}, {0xFE, 0x7E, 0x10, 0x0}}},
{{{29, 62, 51}, 0, {0, 0}, {0x6, 0x6B, 0x45, 0x0}}},
{{{-9, 48, 58}, 0, {0, 0}, {0xCC, 0x55, 0x4F, 0x0}}},
{{{6, 26, 76}, 0, {0, 0}, {0xEA, 0x26, 0x77, 0x0}}},
{{{-23, 23, 64}, 0, {0, 0}, {0xAC, 0x1E, 0x5B, 0x0}}},
{{{49, 34, 74}, 0, {0, 0}, {0x3D, 0x2D, 0x66, 0x0}}},
{{{29, 62, 51}, 0, {0, 0}, {0x6, 0x6B, 0x45, 0x0}}},
{{{6, 26, 76}, 0, {0, 0}, {0xEA, 0x26, 0x77, 0x0}}},
{{{57, 62, 31}, 0, {0, 0}, {0x50, 0x5D, 0x20, 0x0}}},
{{{23, 71, 21}, 0, {0, 0}, {0xFE, 0x7E, 0x10, 0x0}}},
{{{23, 71, -21}, 0, {0, 0}, {0xFF, 0x7E, 0xF1, 0x0}}},
{{{57, 62, -31}, 0, {0, 0}, {0x51, 0x5D, 0xE1, 0x0}}},
{{{30, 62, -52}, 0, {0, 0}, {0x8, 0x6B, 0xBB, 0x0}}},
{{{49, 35, -74}, 0, {0, 0}, {0x3E, 0x2E, 0x9B, 0x0}}},
{{{7, 26, -77}, 0, {0, 0}, {0xEB, 0x25, 0x88, 0x0}}},
{{{52, -10, -75}, 0, {0, 0}, {0x49, 0xF3, 0x99, 0x0}}},
{{{11, -10, -80}, 0, {0, 0}, {0xF2, 0xF5, 0x82, 0x0}}},
};
const Gfx luigi_butt_dl[] = {
gsSPVertex(luigi_butt_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(0, 4, 3, 0),
gsSP1Triangle(0, 2, 4, 0),
gsSP1Triangle(5, 4, 2, 0),
gsSP1Triangle(6, 5, 2, 0),
gsSP1Triangle(2, 7, 6, 0),
gsSP1Triangle(1, 7, 2, 0),
gsSP1Triangle(8, 7, 1, 0),
gsSP1Triangle(8, 1, 9, 0),
gsSP1Triangle(9, 1, 3, 0),
gsSP1Triangle(9, 3, 10, 0),
gsSP1Triangle(11, 10, 3, 0),
gsSP1Triangle(11, 3, 12, 0),
gsSP1Triangle(12, 3, 4, 0),
gsSP1Triangle(13, 12, 4, 0),
gsSP1Triangle(4, 5, 13, 0),
gsSP1Triangle(5, 14, 13, 0),
gsSP1Triangle(5, 6, 14, 0),
gsSP1Triangle(15, 14, 6, 0),
gsSPVertex(luigi_butt_dl_vertex + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(3, 4, 1, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(6, 5, 3, 0),
gsSP1Triangle(6, 7, 5, 0),
gsSP1Triangle(5, 7, 8, 0),
gsSP1Triangle(8, 7, 9, 0),
gsSP1Triangle(10, 8, 9, 0),
gsSP1Triangle(10, 9, 11, 0),
gsSP1Triangle(12, 11, 9, 0),
gsSP1Triangle(12, 9, 13, 0),
gsSP1Triangle(13, 9, 14, 0),
gsSP1Triangle(15, 13, 14, 0),
gsSPVertex(luigi_butt_dl_vertex + 32, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(0, 3, 4, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(5, 6, 4, 0),
gsSP1Triangle(6, 7, 4, 0),
gsSP1Triangle(6, 8, 7, 0),
gsSP1Triangle(9, 7, 8, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(10, 8, 11, 0),
gsSP1Triangle(12, 11, 8, 0),
gsSP1Triangle(13, 12, 8, 0),
gsSP1Triangle(14, 12, 13, 0),
gsSP1Triangle(15, 12, 14, 0),
gsSPVertex(luigi_butt_dl_vertex + 48, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(1, 3, 4, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(6, 7, 4, 0),
gsSP1Triangle(8, 7, 6, 0),
gsSP1Triangle(9, 7, 8, 0),
gsSP1Triangle(9, 8, 10, 0),
gsSP1Triangle(11, 9, 10, 0),
gsSP1Triangle(11, 10, 12, 0),
gsSP1Triangle(10, 13, 12, 0),
gsSP1Triangle(13, 14, 12, 0),
gsSP1Triangle(14, 13, 15, 0),
gsSPVertex(luigi_butt_dl_vertex + 64, 12, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(4, 1, 3, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(5, 3, 6, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(6, 8, 7, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(11, 9, 10, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_butt[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(PANTS), // gsSPLight(&luigi_blue_lights_group.a, 2),
gsSPDisplayList(luigi_butt_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_butt[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, TEXEL1, 0, 0, 0, ENVIRONMENT),
gsSPSetGeometryMode(G_TEXTURE_GEN),
gsSPTexture(4032, 1984, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 15),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 128),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0),
gsDPSetTileSize(0, 0, 0, 252, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 128),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0),
gsDPSetTileSize(1, 0, 0, 252, 124),
gsSPDisplayList(luigi_butt_dl),
gsSPEndDisplayList(),
};
static const Vtx luigi_left_arm_shared_dl_vertex[29] = {
{{{65, 19, 15}, 0, {0, 1024}, {0x34, 0x5B, 0x48, 0x0}}},
{{{65, 20, -21}, 0, {0, 1024}, {0x34, 0x5F, 0xBE, 0x0}}},
{{{7, 26, 19}, 0, {0, 1024}, {0xE1, 0x62, 0x4B, 0x0}}},
{{{75, 12, -15}, 0, {0, 1024}, {0x6F, 0x33, 0xDE, 0x0}}},
{{{75, 11, 9}, 0, {0, 1024}, {0x6F, 0x2E, 0x29, 0x0}}},
{{{74, -12, 15}, 0, {0, 1024}, {0x6D, 0xE6, 0x3C, 0x0}}},
{{{64, -15, 24}, 0, {0, 1024}, {0x32, 0xD5, 0x6D, 0x0}}},
{{{6, -16, 32}, 0, {0, 1024}, {0xDE, 0xD8, 0x74, 0x0}}},
{{{-10, -11, 18}, 0, {0, 1024}, {0x93, 0xEB, 0x3E, 0x0}}},
{{{-9, 15, 10}, 0, {0, 1024}, {0x94, 0x37, 0x27, 0x0}}},
{{{7, 28, -25}, 0, {0, 1024}, {0xE1, 0x67, 0xBD, 0x0}}},
{{{64, -13, -33}, 0, {0, 1024}, {0x32, 0xE0, 0x90, 0x0}}},
{{{74, -10, -24}, 0, {0, 1024}, {0x6D, 0xEF, 0xC0, 0x0}}},
{{{74, -26, -5}, 0, {0, 1024}, {0x6A, 0xBA, 0xFF, 0x0}}},
{{{63, -35, -6}, 0, {0, 1024}, {0x2E, 0x8A, 0xFA, 0x0}}},
{{{5, -42, -6}, 0, {0, 1024}, {0xDA, 0x87, 0xFC, 0x0}}},
{{{-10, -26, -6}, 0, {0, 1024}, {0x91, 0xC2, 0xFC, 0x0}}},
{{{5, -42, -6}, 0, {0, 1024}, {0xDA, 0x87, 0xFC, 0x0}}},
{{{6, -16, 32}, 0, {0, 1024}, {0xDE, 0xD8, 0x74, 0x0}}},
{{{-10, -11, 18}, 0, {0, 1024}, {0x93, 0xEB, 0x3E, 0x0}}},
{{{-10, -9, -26}, 0, {0, 1024}, {0x91, 0xF3, 0xC3, 0x0}}},
{{{-9, 16, -17}, 0, {0, 1024}, {0x94, 0x39, 0xDC, 0x0}}},
{{{-9, 15, 10}, 0, {0, 1024}, {0x94, 0x37, 0x27, 0x0}}},
{{{7, 28, -25}, 0, {0, 1024}, {0xE1, 0x67, 0xBD, 0x0}}},
{{{6, -14, -41}, 0, {0, 1024}, {0xDD, 0xE1, 0x8A, 0x0}}},
{{{64, -13, -33}, 0, {0, 1024}, {0x32, 0xE0, 0x90, 0x0}}},
{{{63, -35, -6}, 0, {0, 1024}, {0x2E, 0x8A, 0xFA, 0x0}}},
{{{74, -10, -24}, 0, {0, 1024}, {0x6D, 0xEF, 0xC0, 0x0}}},
{{{74, -26, -5}, 0, {0, 1024}, {0x6A, 0xBA, 0xFF, 0x0}}},
};
const Gfx luigi_left_arm_shared_dl[] = {
gsSPVertex(luigi_left_arm_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(4, 3, 0, 0),
gsSP1Triangle(4, 0, 5, 0),
gsSP1Triangle(5, 0, 6, 0),
gsSP1Triangle(6, 0, 7, 0),
gsSP1Triangle(7, 0, 2, 0),
gsSP1Triangle(8, 7, 2, 0),
gsSP1Triangle(9, 8, 2, 0),
gsSP1Triangle(9, 2, 10, 0),
gsSP1Triangle(2, 1, 10, 0),
gsSP1Triangle(1, 11, 10, 0),
gsSP1Triangle(3, 11, 1, 0),
gsSP1Triangle(12, 11, 3, 0),
gsSP1Triangle(12, 3, 4, 0),
gsSP1Triangle(5, 12, 4, 0),
gsSP1Triangle(13, 12, 5, 0),
gsSP1Triangle(13, 5, 14, 0),
gsSP1Triangle(5, 6, 14, 0),
gsSP1Triangle(14, 6, 15, 0),
gsSP1Triangle(15, 6, 7, 0),
gsSPVertex(luigi_left_arm_shared_dl_vertex + 16, 13, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(0, 3, 4, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(6, 5, 3, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(5, 7, 8, 0),
gsSP1Triangle(7, 9, 8, 0),
gsSP1Triangle(9, 10, 8, 0),
gsSP1Triangle(11, 10, 9, 0),
gsSP1Triangle(12, 10, 11, 0),
gsSP1Triangle(8, 10, 1, 0),
gsSP1Triangle(4, 8, 1, 0),
gsSP1Triangle(0, 4, 1, 0),
gsSP1Triangle(4, 5, 8, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_left_arm[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(SHIRT), // gsSPLight(&luigi_green_lights_group.a, 2),
gsSPDisplayList(luigi_left_arm_shared_dl),
gsSPEndDisplayList(),
};
static const Vtx luigi_left_forearm_shared_dl_vertex[16] = {
{{{57, 14, 13}, 0, {0, 0}, {0x3E, 0x55, 0x47, 0x0}}},
{{{58, 16, -19}, 0, {0, 0}, {0x40, 0x5C, 0xC3, 0x0}}},
{{{-1, 19, 16}, 0, {0, 0}, {0xE3, 0x62, 0x4C, 0x0}}},
{{{71, -7, -4}, 0, {0, 0}, {0x7F, 0xFD, 0x1, 0x0}}},
{{{56, -17, 22}, 0, {0, 0}, {0x3C, 0xD7, 0x68, 0x0}}},
{{{-2, -17, 26}, 0, {0, 0}, {0xE0, 0xD7, 0x74, 0x0}}},
{{{-15, -13, 17}, 0, {0, 0}, {0x98, 0xEB, 0x46, 0x0}}},
{{{-15, 11, 10}, 0, {0, 0}, {0x99, 0x3B, 0x2D, 0x0}}},
{{{-1, 20, -21}, 0, {0, 0}, {0xE3, 0x68, 0xBC, 0x0}}},
{{{57, -14, -30}, 0, {0, 0}, {0x3C, 0xE1, 0x94, 0x0}}},
{{{56, -34, -5}, 0, {0, 0}, {0x3B, 0x90, 0xFA, 0x0}}},
{{{-3, -38, -5}, 0, {0, 0}, {0xDC, 0x86, 0xFA, 0x0}}},
{{{-16, -27, -4}, 0, {0, 0}, {0x94, 0xBD, 0x0, 0x0}}},
{{{-15, 12, -16}, 0, {0, 0}, {0x9A, 0x3F, 0xD7, 0x0}}},
{{{-2, -14, -34}, 0, {0, 0}, {0xE1, 0xE1, 0x89, 0x0}}},
{{{-15, -11, -25}, 0, {0, 0}, {0x99, 0xF0, 0xB7, 0x0}}},
};
const Gfx luigi_left_forearm_shared_dl[] = {
gsSPVertex(luigi_left_forearm_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(3, 0, 4, 0),
gsSP1Triangle(4, 0, 5, 0),
gsSP1Triangle(5, 0, 2, 0),
gsSP1Triangle(6, 5, 2, 0),
gsSP1Triangle(7, 6, 2, 0),
gsSP1Triangle(7, 2, 8, 0),
gsSP1Triangle(2, 1, 8, 0),
gsSP1Triangle(1, 9, 8, 0),
gsSP1Triangle(3, 9, 1, 0),
gsSP1Triangle(3, 10, 9, 0),
gsSP1Triangle(3, 4, 10, 0),
gsSP1Triangle(10, 4, 11, 0),
gsSP1Triangle(11, 4, 5, 0),
gsSP1Triangle(12, 11, 5, 0),
gsSP1Triangle(6, 12, 5, 0),
gsSP1Triangle(6, 7, 12, 0),
gsSP1Triangle(7, 13, 12, 0),
gsSP1Triangle(13, 7, 8, 0),
gsSP1Triangle(13, 8, 14, 0),
gsSP1Triangle(8, 9, 14, 0),
gsSP1Triangle(9, 10, 14, 0),
gsSP1Triangle(14, 10, 11, 0),
gsSP1Triangle(15, 14, 11, 0),
gsSP1Triangle(12, 15, 11, 0),
gsSP1Triangle(12, 13, 15, 0),
gsSP1Triangle(15, 13, 14, 0),
gsSPEndDisplayList(),
};
// 0x0400D3E8
ROM_ASSET_LOAD_VTX(luigi_left_hand_closed_shared_dl_vertex_group1, 0x00114750, 78432, 0x0000d3e8, 256);
// 0x0400D4E8
ROM_ASSET_LOAD_VTX(luigi_left_hand_closed_shared_dl_vertex_group2, 0x00114750, 78432, 0x0000d4e8, 224);
// 0x0400D5C8
ROM_ASSET_LOAD_VTX(luigi_left_hand_closed_shared_dl_vertex_group3, 0x00114750, 78432, 0x0000d5c8, 240);
// 0x0400D6B8
ROM_ASSET_LOAD_VTX(luigi_left_hand_closed_shared_dl_vertex_group4, 0x00114750, 78432, 0x0000d6b8, 160);
// 0x0400D758 - 0x0400D8F0
const Gfx luigi_left_hand_closed_shared_dl[] = {
gsSPVertex(luigi_left_hand_closed_shared_dl_vertex_group1, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 1, 0, 0x0, 2, 1, 7, 0x0),
gsSP2Triangles( 7, 1, 6, 0x0, 6, 4, 8, 0x0),
gsSP2Triangles( 8, 4, 3, 0x0, 9, 3, 2, 0x0),
gsSP2Triangles( 0, 10, 11, 0x0, 12, 10, 0, 0x0),
gsSP1Triangle(13, 14, 15, 0x0),
gsSPVertex(luigi_left_hand_closed_shared_dl_vertex_group2, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 1, 3, 0x0, 6, 7, 8, 0x0),
gsSP2Triangles( 9, 10, 3, 0x0, 1, 0, 9, 0x0),
gsSP2Triangles( 9, 3, 1, 0x0, 5, 2, 1, 0x0),
gsSP2Triangles( 0, 2, 7, 0x0, 7, 2, 8, 0x0),
gsSP2Triangles( 8, 2, 11, 0x0, 11, 2, 5, 0x0),
gsSP2Triangles( 9, 7, 6, 0x0, 6, 8, 12, 0x0),
gsSP2Triangles(12, 8, 13, 0x0, 13, 5, 4, 0x0),
gsSPVertex(luigi_left_hand_closed_shared_dl_vertex_group3, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 3, 1, 4, 0x0, 4, 1, 5, 0x0),
gsSP2Triangles( 5, 1, 0, 0x0, 6, 7, 2, 0x0),
gsSP2Triangles( 8, 2, 3, 0x0, 3, 9, 10, 0x0),
gsSP2Triangles(10, 9, 11, 0x0, 11, 7, 6, 0x0),
gsSP2Triangles(10, 12, 13, 0x0, 6, 14, 12, 0x0),
gsSPVertex(luigi_left_hand_closed_shared_dl_vertex_group4, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 1, 5, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 9, 6, 0x0),
gsSP1Triangle( 7, 1, 8, 0x0),
gsSPEndDisplayList(),
};
const Gfx luigi_left_hand_closed[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(GLOVES), // glove light, set in luigi_misc.c
gsSPDisplayList(luigi_left_hand_closed_shared_dl),
gsSPEndDisplayList(),
};
static const Vtx luigi_right_arm_shared_dl_vertex[30] = {
{{{5, -43, 6}, 0, {0, 1024}, {0xDB, 0x87, 0xFB, 0x0}}},
{{{6, -15, -29}, 0, {0, 1024}, {0xDD, 0xE1, 0x8A, 0x0}}},
{{{63, -14, -22}, 0, {0, 1024}, {0x32, 0xE2, 0x8F, 0x0}}},
{{{-10, -28, 7}, 0, {0, 1024}, {0x92, 0xC1, 0xFE, 0x0}}},
{{{-10, -13, 29}, 0, {0, 1024}, {0x92, 0xEC, 0x3D, 0x0}}},
{{{6, -18, 43}, 0, {0, 1024}, {0xDE, 0xD8, 0x74, 0x0}}},
{{{63, -37, 7}, 0, {0, 1024}, {0x31, 0x8B, 0xFD, 0x0}}},
{{{73, -12, -12}, 0, {0, 1024}, {0x6E, 0xEC, 0xC3, 0x0}}},
{{{64, 19, -9}, 0, {0, 1024}, {0x34, 0x61, 0xC0, 0x0}}},
{{{7, 27, -13}, 0, {0, 1024}, {0xDF, 0x68, 0xBE, 0x0}}},
{{{-10, -11, -14}, 0, {0, 1024}, {0x92, 0xF1, 0xC3, 0x0}}},
{{{-9, 14, -5}, 0, {0, 1024}, {0x93, 0x38, 0xDD, 0x0}}},
{{{-9, 13, 22}, 0, {0, 1024}, {0x95, 0x37, 0x29, 0x0}}},
{{{7, 24, 31}, 0, {0, 1024}, {0xE0, 0x60, 0x4D, 0x0}}},
{{{63, -17, 36}, 0, {0, 1024}, {0x30, 0xD7, 0x6E, 0x0}}},
{{{73, -14, 27}, 0, {0, 1024}, {0x6D, 0xE7, 0x3C, 0x0}}},
{{{73, -27, 7}, 0, {0, 1024}, {0x6E, 0xC0, 0xFC, 0x0}}},
{{{73, -14, 27}, 0, {0, 1024}, {0x6D, 0xE7, 0x3C, 0x0}}},
{{{63, -37, 7}, 0, {0, 1024}, {0x31, 0x8B, 0xFD, 0x0}}},
{{{73, -12, -12}, 0, {0, 1024}, {0x6E, 0xEC, 0xC3, 0x0}}},
{{{74, 11, -3}, 0, {0, 1024}, {0x6F, 0x34, 0xDF, 0x0}}},
{{{64, 19, -9}, 0, {0, 1024}, {0x34, 0x61, 0xC0, 0x0}}},
{{{64, 17, 27}, 0, {0, 1024}, {0x33, 0x59, 0x4B, 0x0}}},
{{{7, 27, -13}, 0, {0, 1024}, {0xDF, 0x68, 0xBE, 0x0}}},
{{{7, 24, 31}, 0, {0, 1024}, {0xE0, 0x60, 0x4D, 0x0}}},
{{{-9, 14, -5}, 0, {0, 1024}, {0x93, 0x38, 0xDD, 0x0}}},
{{{-10, -11, -14}, 0, {0, 1024}, {0x92, 0xF1, 0xC3, 0x0}}},
{{{-9, 13, 22}, 0, {0, 1024}, {0x95, 0x37, 0x29, 0x0}}},
{{{63, -17, 36}, 0, {0, 1024}, {0x30, 0xD7, 0x6E, 0x0}}},
{{{74, 9, 21}, 0, {0, 1024}, {0x70, 0x2C, 0x2A, 0x0}}},
};
const Gfx luigi_right_arm_shared_dl[] = {
gsSPVertex(luigi_right_arm_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(3, 0, 4, 0),
gsSP1Triangle(4, 0, 5, 0),
gsSP1Triangle(5, 0, 6, 0),
gsSP1Triangle(6, 0, 2, 0),
gsSP1Triangle(7, 6, 2, 0),
gsSP1Triangle(7, 2, 8, 0),
gsSP1Triangle(2, 1, 8, 0),
gsSP1Triangle(1, 9, 8, 0),
gsSP1Triangle(10, 9, 1, 0),
gsSP1Triangle(10, 1, 3, 0),
gsSP1Triangle(3, 4, 10, 0),
gsSP1Triangle(11, 10, 4, 0),
gsSP1Triangle(12, 11, 4, 0),
gsSP1Triangle(4, 5, 12, 0),
gsSP1Triangle(12, 5, 13, 0),
gsSP1Triangle(13, 5, 14, 0),
gsSP1Triangle(14, 5, 6, 0),
gsSP1Triangle(15, 14, 6, 0),
gsSPVertex(luigi_right_arm_shared_dl_vertex + 16, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 0, 3, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(5, 7, 6, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(9, 8, 7, 0),
gsSP1Triangle(9, 7, 10, 0),
gsSP1Triangle(11, 8, 9, 0),
gsSP1Triangle(6, 8, 12, 0),
gsSP1Triangle(1, 6, 12, 0),
gsSP1Triangle(13, 6, 1, 0),
gsSP1Triangle(13, 1, 4, 0),
gsSP1Triangle(1, 0, 4, 0),
gsSP1Triangle(13, 4, 6, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_right_arm[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(SHIRT), // gsSPLight(&luigi_green_lights_group.a, 2),
gsSPDisplayList(luigi_right_arm_shared_dl),
gsSPEndDisplayList(),
};
static const Vtx luigi_right_forearm_shared_dl_vertex[16] = {
{{{-1, 19, 27}, 0, {0, 1024}, {0xE4, 0x62, 0x4B, 0x0}}},
{{{-3, -17, 37}, 0, {0, 1024}, {0xDF, 0xD7, 0x74, 0x0}}},
{{{57, -16, 33}, 0, {0, 1024}, {0x3D, 0xDC, 0x6A, 0x0}}},
{{{-15, 11, 21}, 0, {0, 1024}, {0x99, 0x3B, 0x2D, 0x0}}},
{{{-15, 12, -4}, 0, {0, 1024}, {0x99, 0x40, 0xDA, 0x0}}},
{{{-1, 20, -10}, 0, {0, 1024}, {0xE3, 0x67, 0xBB, 0x0}}},
{{{58, 14, 24}, 0, {0, 1024}, {0x40, 0x56, 0x45, 0x0}}},
{{{71, -8, 7}, 0, {0, 1024}, {0x7F, 0xFC, 0xFF, 0x0}}},
{{{57, -35, 7}, 0, {0, 1024}, {0x3C, 0x90, 0xFE, 0x0}}},
{{{-3, -38, 6}, 0, {0, 1024}, {0xDC, 0x86, 0xFA, 0x0}}},
{{{-16, -13, 28}, 0, {0, 1024}, {0x96, 0xEC, 0x43, 0x0}}},
{{{-16, -27, 7}, 0, {0, 1024}, {0x95, 0xBC, 0xFE, 0x0}}},
{{{-16, -11, -13}, 0, {0, 1024}, {0x96, 0xF0, 0xBB, 0x0}}},
{{{-2, -14, -23}, 0, {0, 1024}, {0xE0, 0xE2, 0x89, 0x0}}},
{{{58, 16, -7}, 0, {0, 1024}, {0x3F, 0x5D, 0xC5, 0x0}}},
{{{57, -14, -19}, 0, {0, 1024}, {0x3C, 0xE3, 0x94, 0x0}}},
};
const Gfx luigi_right_forearm_shared_dl[] = {
gsSPVertex(luigi_right_forearm_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(3, 0, 4, 0),
gsSP1Triangle(4, 0, 5, 0),
gsSP1Triangle(5, 0, 6, 0),
gsSP1Triangle(6, 0, 2, 0),
gsSP1Triangle(7, 6, 2, 0),
gsSP1Triangle(7, 2, 8, 0),
gsSP1Triangle(2, 1, 8, 0),
gsSP1Triangle(1, 9, 8, 0),
gsSP1Triangle(10, 9, 1, 0),
gsSP1Triangle(10, 1, 3, 0),
gsSP1Triangle(10, 3, 11, 0),
gsSP1Triangle(11, 3, 12, 0),
gsSP1Triangle(3, 4, 12, 0),
gsSP1Triangle(4, 5, 12, 0),
gsSP1Triangle(12, 5, 13, 0),
gsSP1Triangle(13, 5, 14, 0),
gsSP1Triangle(14, 5, 6, 0),
gsSP1Triangle(7, 14, 6, 0),
gsSP1Triangle(7, 15, 14, 0),
gsSP1Triangle(7, 8, 15, 0),
gsSP1Triangle(8, 9, 15, 0),
gsSP1Triangle(9, 13, 15, 0),
gsSP1Triangle(11, 13, 9, 0),
gsSP1Triangle(11, 9, 10, 0),
gsSP1Triangle(12, 13, 11, 0),
gsSP1Triangle(15, 13, 14, 0),
gsSPEndDisplayList(),
};
// 0x0400DFF8
ROM_ASSET_LOAD_VTX(luigi_right_hand_closed_dl_vertex_group1, 0x00114750, 78432, 0x0000dff8, 256);
// 0x0400E0F8
ROM_ASSET_LOAD_VTX(luigi_right_hand_closed_dl_vertex_group2, 0x00114750, 78432, 0x0000e0f8, 224);
// 0x0400E1D8
ROM_ASSET_LOAD_VTX(luigi_right_hand_closed_dl_vertex_group3, 0x00114750, 78432, 0x0000e1d8, 240);
// 0x0400E2C8 - 0x0400E458
const Gfx luigi_right_hand_closed_dl[] = {
gsSPVertex(luigi_right_hand_closed_dl_vertex_group1, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 2, 5, 6, 0x0, 6, 7, 4, 0x0),
gsSP2Triangles( 4, 7, 8, 0x0, 8, 9, 10, 0x0),
gsSP2Triangles( 9, 5, 2, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(13, 12, 14, 0x0, 14, 12, 8, 0x0),
gsSP2Triangles( 8, 12, 9, 0x0, 9, 12, 11, 0x0),
gsSP1Triangle( 3, 15, 0, 0x0),
gsSPVertex(luigi_right_hand_closed_dl_vertex_group2, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 6, 7, 8, 0x0),
gsSP2Triangles( 8, 7, 1, 0x0, 1, 7, 4, 0x0),
gsSP2Triangles( 4, 7, 9, 0x0, 10, 7, 6, 0x0),
gsSP2Triangles( 9, 10, 5, 0x0, 10, 11, 5, 0x0),
gsSP2Triangles(11, 12, 5, 0x0, 1, 4, 3, 0x0),
gsSP2Triangles(11, 10, 6, 0x0, 6, 13, 11, 0x0),
gsSP2Triangles( 7, 10, 9, 0x0, 4, 9, 5, 0x0),
gsSP2Triangles( 0, 8, 1, 0x0, 6, 8, 0, 0x0),
gsSPVertex(luigi_right_hand_closed_dl_vertex_group3, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 4, 3, 5, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 7, 6, 0, 0x0, 8, 6, 5, 0x0),
gsSP2Triangles( 9, 3, 1, 0x0, 0, 6, 8, 0x0),
gsSP2Triangles(10, 11, 1, 0x0, 11, 9, 1, 0x0),
gsSP2Triangles(11, 12, 9, 0x0, 1, 0, 10, 0x0),
gsSP2Triangles(13, 5, 3, 0x0, 3, 9, 14, 0x0),
gsSP1Triangle(14, 13, 3, 0x0),
gsSPEndDisplayList(),
};
const Gfx luigi_right_hand_closed[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(GLOVES), // glove light, set in luigi_misc.c
gsSPDisplayList(luigi_right_hand_closed_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_right_hand_closed[] = {
gsSPDisplayList(luigi_right_hand_closed_dl),
gsDPPipeSync(),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),
gsSPEndDisplayList(),
};
static const Vtx luigi_left_thigh_dl_vertex[22] = {
{{{-16, 2, 1}, 0, {0, 1024}, {0x81, 0xF8, 0x0, 0x0}}},
{{{-1, -8, -31}, 0, {0, 1024}, {0xAD, 0xE2, 0xA5, 0x0}}},
{{{0, -35, 1}, 0, {0, 1024}, {0xAD, 0xA0, 0x0, 0x0}}},
{{{-4, 34, -19}, 0, {0, 1024}, {0xA6, 0x45, 0xC7, 0x0}}},
{{{-4, 34, 21}, 0, {0, 1024}, {0xA6, 0x46, 0x39, 0x0}}},
{{{-1, -8, 34}, 0, {0, 1024}, {0xAF, 0xE2, 0x5D, 0x0}}},
{{{19, -11, 42}, 0, {0, 1024}, {0xF0, 0xD9, 0x78, 0x0}}},
{{{21, -45, 0}, 0, {0, 1024}, {0xF1, 0x82, 0xFE, 0x0}}},
{{{19, -11, -40}, 0, {0, 1024}, {0xEE, 0xDA, 0x88, 0x0}}},
{{{15, 43, -24}, 0, {0, 1024}, {0xE8, 0x64, 0xB6, 0x0}}},
{{{15, 43, 26}, 0, {0, 1024}, {0xE8, 0x64, 0x4A, 0x0}}},
{{{97, 38, 21}, 0, {0, 1024}, {0x38, 0x5C, 0x43, 0x0}}},
{{{100, -5, 33}, 0, {0, 1024}, {0x3D, 0xE2, 0x6B, 0x0}}},
{{{102, -32, 0}, 0, {0, 1024}, {0x42, 0x93, 0x0, 0x0}}},
{{{100, -5, -32}, 0, {0, 1024}, {0x3C, 0xE3, 0x94, 0x0}}},
{{{97, 38, -19}, 0, {0, 1024}, {0x37, 0x5D, 0xBE, 0x0}}},
{{{122, 7, 0}, 0, {0, 1024}, {0x7F, 0x6, 0xFF, 0x0}}},
{{{97, 38, -19}, 0, {0, 1024}, {0x37, 0x5D, 0xBE, 0x0}}},
{{{97, 38, 21}, 0, {0, 1024}, {0x38, 0x5C, 0x43, 0x0}}},
{{{100, -5, 33}, 0, {0, 1024}, {0x3D, 0xE2, 0x6B, 0x0}}},
{{{102, -32, 0}, 0, {0, 1024}, {0x42, 0x93, 0x0, 0x0}}},
{{{100, -5, -32}, 0, {0, 1024}, {0x3C, 0xE3, 0x94, 0x0}}},
};
const Gfx luigi_left_thigh_dl[] = {
gsSPVertex(luigi_left_thigh_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(0, 4, 3, 0),
gsSP1Triangle(0, 5, 4, 0),
gsSP1Triangle(0, 2, 5, 0),
gsSP1Triangle(5, 2, 6, 0),
gsSP1Triangle(2, 7, 6, 0),
gsSP1Triangle(2, 8, 7, 0),
gsSP1Triangle(1, 8, 2, 0),
gsSP1Triangle(3, 8, 1, 0),
gsSP1Triangle(3, 9, 8, 0),
gsSP1Triangle(9, 3, 4, 0),
gsSP1Triangle(4, 10, 9, 0),
gsSP1Triangle(4, 6, 10, 0),
gsSP1Triangle(6, 4, 5, 0),
gsSP1Triangle(6, 11, 10, 0),
gsSP1Triangle(12, 11, 6, 0),
gsSP1Triangle(12, 6, 13, 0),
gsSP1Triangle(7, 13, 6, 0),
gsSP1Triangle(8, 13, 7, 0),
gsSP1Triangle(14, 13, 8, 0),
gsSP1Triangle(14, 8, 15, 0),
gsSP1Triangle(9, 15, 8, 0),
gsSP1Triangle(10, 15, 9, 0),
gsSP1Triangle(11, 15, 10, 0),
gsSPVertex(luigi_left_thigh_dl_vertex + 16, 6, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(0, 3, 4, 0),
gsSP1Triangle(0, 4, 5, 0),
gsSP1Triangle(0, 5, 1, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_left_thigh[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(PANTS), // gsSPLight(&luigi_blue_lights_group.a, 2),
gsSPDisplayList(luigi_left_thigh_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_left_thigh[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, TEXEL1, 0, 0, 0, ENVIRONMENT),
gsSPSetGeometryMode(G_TEXTURE_GEN),
gsSPTexture(4032, 1984, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 15),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 128),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0),
gsDPSetTileSize(0, 0, 0, 252, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 128),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0),
gsDPSetTileSize(1, 0, 0, 252, 124),
gsSPDisplayList(luigi_left_thigh_dl),
gsSPEndDisplayList(),
};
static const Vtx luigi_left_leg_shared_dl_vertex[12] = {
{{{71, -45, 0}, 0, {0, 1024}, {0x30, 0x8A, 0x0, 0x0}}},
{{{74, -11, 38}, 0, {0, 1024}, {0x36, 0xDA, 0x6D, 0x0}}},
{{{0, -34, 0}, 0, {0, 1024}, {0xBB, 0x95, 0x0, 0x0}}},
{{{93, 3, 0}, 0, {0, 1024}, {0x7E, 0xF4, 0x0, 0x0}}},
{{{74, -11, -39}, 0, {0, 1024}, {0x35, 0xDB, 0x93, 0x0}}},
{{{3, -3, -33}, 0, {0, 1024}, {0xC5, 0xE8, 0x92, 0x0}}},
{{{-20, 12, 0}, 0, {0, 1024}, {0x82, 0x11, 0x0, 0x0}}},
{{{3, -3, 34}, 0, {0, 1024}, {0xC6, 0xE8, 0x6E, 0x0}}},
{{{7, 38, 21}, 0, {0, 1024}, {0xCD, 0x5E, 0x45, 0x0}}},
{{{80, 44, 24}, 0, {0, 1024}, {0x3E, 0x57, 0x45, 0x0}}},
{{{80, 45, -23}, 0, {0, 1024}, {0x3E, 0x59, 0xBE, 0x0}}},
{{{7, 38, -20}, 0, {0, 1024}, {0xCC, 0x5E, 0xBC, 0x0}}},
};
const Gfx luigi_left_leg_shared_dl[] = {
gsSPVertex(luigi_left_leg_shared_dl_vertex + 0, 12, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(3, 0, 4, 0),
gsSP1Triangle(4, 0, 2, 0),
gsSP1Triangle(5, 4, 2, 0),
gsSP1Triangle(6, 5, 2, 0),
gsSP1Triangle(6, 2, 7, 0),
gsSP1Triangle(7, 2, 1, 0),
gsSP1Triangle(7, 1, 8, 0),
gsSP1Triangle(1, 9, 8, 0),
gsSP1Triangle(3, 9, 1, 0),
gsSP1Triangle(3, 10, 9, 0),
gsSP1Triangle(3, 4, 10, 0),
gsSP1Triangle(10, 4, 11, 0),
gsSP1Triangle(5, 11, 4, 0),
gsSP1Triangle(6, 11, 5, 0),
gsSP1Triangle(6, 8, 11, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(11, 8, 10, 0),
gsSP1Triangle(9, 10, 8, 0),
gsSPEndDisplayList(),
};
static const Vtx luigi_left_foot_shared_dl_vertex[28] = {
{{{111, 12, -29}, 0, {0, 1024}, {0x2C, 0x77, 0xFE, 0x0}}},
{{{78, 24, -50}, 0, {0, 1024}, {0x2B, 0x78, 0x0, 0x0}}},
{{{111, 13, 27}, 0, {0, 1024}, {0x2A, 0x78, 0x0, 0x0}}},
{{{79, 24, 52}, 0, {0, 1024}, {0x2A, 0x78, 0x0, 0x0}}},
{{{-12, 56, -40}, 0, {0, 1024}, {0x2B, 0x78, 0xFF, 0x0}}},
{{{-11, 57, 45}, 0, {0, 1024}, {0x2A, 0x78, 0xFF, 0x0}}},
{{{-38, 66, -16}, 0, {0, 1024}, {0x2A, 0x78, 0xFF, 0x0}}},
{{{-40, 66, 18}, 0, {0, 1024}, {0x24, 0x7A, 0x2, 0x0}}},
{{{111, 12, -29}, 0, {0, 1024}, {0x4A, 0xAB, 0xC5, 0x0}}},
{{{111, 13, 27}, 0, {0, 1024}, {0x4D, 0xAC, 0x38, 0x0}}},
{{{82, -28, -1}, 0, {0, 1024}, {0x37, 0x8D, 0xFE, 0x0}}},
{{{47, -9, 45}, 0, {0, 1024}, {0x1, 0xB5, 0x67, 0x0}}},
{{{79, 24, 52}, 0, {0, 1024}, {0x1B, 0xCE, 0x72, 0x0}}},
{{{-11, 57, 45}, 0, {0, 1024}, {0xD0, 0x0, 0x76, 0x0}}},
{{{-33, 14, 36}, 0, {0, 1024}, {0xB4, 0xCD, 0x58, 0x0}}},
{{{-40, 66, 18}, 0, {0, 1024}, {0x8D, 0x18, 0x30, 0x0}}},
{{{-52, 17, 0}, 0, {0, 1024}, {0x89, 0xD3, 0xFD, 0x0}}},
{{{-33, 14, 36}, 0, {0, 1024}, {0xB4, 0xCD, 0x58, 0x0}}},
{{{-40, 66, 18}, 0, {0, 1024}, {0x8D, 0x18, 0x30, 0x0}}},
{{{-38, 66, -16}, 0, {0, 1024}, {0x90, 0x18, 0xC8, 0x0}}},
{{{-34, 13, -30}, 0, {0, 1024}, {0xB3, 0xCC, 0xA9, 0x0}}},
{{{-12, 56, -40}, 0, {0, 1024}, {0xCE, 0x0, 0x8B, 0x0}}},
{{{46, -9, -42}, 0, {0, 1024}, {0xFE, 0xB7, 0x98, 0x0}}},
{{{78, 24, -50}, 0, {0, 1024}, {0x13, 0xD1, 0x8B, 0x0}}},
{{{111, 12, -29}, 0, {0, 1024}, {0x4A, 0xAB, 0xC5, 0x0}}},
{{{82, -28, -1}, 0, {0, 1024}, {0x37, 0x8D, 0xFE, 0x0}}},
{{{28, -33, 0}, 0, {0, 1024}, {0xE7, 0x83, 0xFF, 0x0}}},
{{{47, -9, 45}, 0, {0, 1024}, {0x1, 0xB5, 0x67, 0x0}}},
};
const Gfx luigi_left_foot_shared_dl[] = {
gsSPVertex(luigi_left_foot_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(1, 4, 3, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(6, 7, 5, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(10, 9, 11, 0),
gsSP1Triangle(12, 11, 9, 0),
gsSP1Triangle(12, 13, 11, 0),
gsSP1Triangle(11, 13, 14, 0),
gsSP1Triangle(13, 15, 14, 0),
gsSPVertex(luigi_left_foot_shared_dl_vertex + 16, 12, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 3, 0, 0),
gsSP1Triangle(4, 0, 3, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(5, 7, 6, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(9, 6, 8, 0),
gsSP1Triangle(6, 9, 10, 0),
gsSP1Triangle(11, 10, 9, 0),
gsSP1Triangle(11, 1, 10, 0),
gsSP1Triangle(1, 0, 10, 0),
gsSP1Triangle(4, 10, 0, 0),
gsSP1Triangle(6, 10, 4, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_left_foot[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(SHOES),
gsSPDisplayList(luigi_left_foot_shared_dl),
gsSPEndDisplayList(),
};
static const Vtx luigi_right_thigh_shared_dl_vertex[26] = {
{{{19, -11, 40}, 0, {0, 1024}, {0xEE, 0xDA, 0x78, 0x0}}},
{{{21, -45, 0}, 0, {0, 1024}, {0xF1, 0x82, 0x2, 0x0}}},
{{{102, -32, 0}, 0, {0, 1024}, {0x42, 0x93, 0x1, 0x0}}},
{{{0, -35, -1}, 0, {0, 1024}, {0xAE, 0x9F, 0x0, 0x0}}},
{{{-1, -8, 31}, 0, {0, 1024}, {0xAD, 0xE1, 0x5B, 0x0}}},
{{{-4, 34, 19}, 0, {0, 1024}, {0xA7, 0x46, 0x3B, 0x0}}},
{{{15, 43, 24}, 0, {0, 1024}, {0xE9, 0x64, 0x4B, 0x0}}},
{{{97, 38, 19}, 0, {0, 1024}, {0x38, 0x5D, 0x42, 0x0}}},
{{{100, -5, 32}, 0, {0, 1024}, {0x3C, 0xE4, 0x6C, 0x0}}},
{{{122, 7, -1}, 0, {0, 1024}, {0x7F, 0x7, 0xFF, 0x0}}},
{{{99, -5, -34}, 0, {0, 1024}, {0x3B, 0xE2, 0x93, 0x0}}},
{{{18, -11, -42}, 0, {0, 1024}, {0xEE, 0xD9, 0x88, 0x0}}},
{{{-2, -8, -33}, 0, {0, 1024}, {0xAC, 0xE1, 0xA5, 0x0}}},
{{{-17, 2, -1}, 0, {0, 1024}, {0x81, 0xF7, 0x1, 0x0}}},
{{{-5, 34, -21}, 0, {0, 1024}, {0xA6, 0x46, 0xC7, 0x0}}},
{{{14, 43, -26}, 0, {0, 1024}, {0xE8, 0x64, 0xB6, 0x0}}},
{{{96, 38, -21}, 0, {0, 1024}, {0x36, 0x5D, 0xBD, 0x0}}},
{{{14, 43, -26}, 0, {0, 1024}, {0xE8, 0x64, 0xB6, 0x0}}},
{{{97, 38, 19}, 0, {0, 1024}, {0x38, 0x5D, 0x42, 0x0}}},
{{{122, 7, -1}, 0, {0, 1024}, {0x7F, 0x7, 0xFF, 0x0}}},
{{{100, -5, 32}, 0, {0, 1024}, {0x3C, 0xE4, 0x6C, 0x0}}},
{{{99, -5, -34}, 0, {0, 1024}, {0x3B, 0xE2, 0x93, 0x0}}},
{{{18, -11, -42}, 0, {0, 1024}, {0xEE, 0xD9, 0x88, 0x0}}},
{{{-5, 34, -21}, 0, {0, 1024}, {0xA6, 0x46, 0xC7, 0x0}}},
{{{-2, -8, -33}, 0, {0, 1024}, {0xAC, 0xE1, 0xA5, 0x0}}},
{{{-17, 2, -1}, 0, {0, 1024}, {0x81, 0xF7, 0x1, 0x0}}},
};
const Gfx luigi_right_thigh_shared_dl[] = {
gsSPVertex(luigi_right_thigh_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(4, 3, 0, 0),
gsSP1Triangle(4, 0, 5, 0),
gsSP1Triangle(5, 0, 6, 0),
gsSP1Triangle(6, 0, 7, 0),
gsSP1Triangle(8, 7, 0, 0),
gsSP1Triangle(8, 0, 2, 0),
gsSP1Triangle(9, 8, 2, 0),
gsSP1Triangle(9, 2, 10, 0),
gsSP1Triangle(10, 2, 11, 0),
gsSP1Triangle(1, 11, 2, 0),
gsSP1Triangle(3, 11, 1, 0),
gsSP1Triangle(12, 11, 3, 0),
gsSP1Triangle(13, 12, 3, 0),
gsSP1Triangle(13, 3, 4, 0),
gsSP1Triangle(13, 4, 5, 0),
gsSP1Triangle(13, 5, 14, 0),
gsSP1Triangle(5, 6, 14, 0),
gsSP1Triangle(14, 6, 15, 0),
gsSP1Triangle(15, 6, 7, 0),
gsSPVertex(luigi_right_thigh_shared_dl_vertex + 16, 10, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(3, 2, 4, 0),
gsSP1Triangle(3, 5, 0, 0),
gsSP1Triangle(5, 6, 0, 0),
gsSP1Triangle(6, 1, 0, 0),
gsSP1Triangle(7, 1, 6, 0),
gsSP1Triangle(8, 7, 6, 0),
gsSP1Triangle(9, 7, 8, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_right_thigh[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(PANTS), // gsSPLight(&luigi_blue_lights_group.a, 2),
gsSPDisplayList(luigi_right_thigh_shared_dl),
gsSPEndDisplayList(),
};
static const Vtx luigi_right_leg_shared_dl_vertex[22] = {
{{{73, -10, -38}, 0, {0, 1024}, {0xFA, 0x22, 0x86, 0x0}}},
{{{6, 39, -21}, 0, {0, 1024}, {0xCB, 0x5D, 0xBC, 0x0}}},
{{{79, 46, -24}, 0, {0, 1024}, {0xF8, 0x1F, 0x85, 0x0}}},
{{{2, -2, -34}, 0, {0, 1024}, {0xC4, 0xE8, 0x92, 0x0}}},
{{{-20, 12, 0}, 0, {0, 1024}, {0x82, 0x10, 0x1, 0x0}}},
{{{0, -33, 0}, 0, {0, 1024}, {0xBC, 0x95, 0x0, 0x0}}},
{{{73, -10, -38}, 0, {0, 1024}, {0xF1, 0xA3, 0xAB, 0x0}}},
{{{70, -44, 0}, 0, {0, 1024}, {0xF2, 0xA2, 0xAB, 0x0}}},
{{{2, -3, 33}, 0, {0, 1024}, {0xC4, 0xE7, 0x6D, 0x0}}},
{{{74, -10, 38}, 0, {0, 1024}, {0xF2, 0xA3, 0x55, 0x0}}},
{{{70, -44, 0}, 0, {0, 1024}, {0xF2, 0xA3, 0x55, 0x0}}},
{{{7, 39, 20}, 0, {0, 1024}, {0xCC, 0x5E, 0x45, 0x0}}},
{{{74, -10, 38}, 0, {0, 1024}, {0xF9, 0x23, 0x7A, 0x0}}},
{{{80, 46, 23}, 0, {0, 1024}, {0xF8, 0x21, 0x7A, 0x0}}},
{{{80, 46, 23}, 0, {0, 1024}, {0xF4, 0x7E, 0x0, 0x0}}},
{{{79, 46, -24}, 0, {0, 1024}, {0xF4, 0x7E, 0x0, 0x0}}},
{{{95, 4, 0}, 0, {0, 1024}, {0x7E, 0xF4, 0xFF, 0x0}}},
{{{70, -44, 0}, 0, {0, 1024}, {0x71, 0xC5, 0xFF, 0x0}}},
{{{73, -10, -38}, 0, {0, 1024}, {0x6F, 0xE3, 0xCA, 0x0}}},
{{{74, -10, 38}, 0, {0, 1024}, {0x71, 0xE3, 0x33, 0x0}}},
{{{80, 46, 23}, 0, {0, 1024}, {0x79, 0x1C, 0x1B, 0x0}}},
{{{79, 46, -24}, 0, {0, 1024}, {0x78, 0x1B, 0xE1, 0x0}}},
};
const Gfx luigi_right_leg_shared_dl[] = {
gsSPVertex(luigi_right_leg_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(4, 1, 3, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(3, 6, 5, 0),
gsSP1Triangle(7, 5, 6, 0),
gsSP1Triangle(4, 5, 8, 0),
gsSP1Triangle(8, 5, 9, 0),
gsSP1Triangle(9, 5, 10, 0),
gsSP1Triangle(4, 8, 11, 0),
gsSP1Triangle(8, 12, 11, 0),
gsSP1Triangle(13, 11, 12, 0),
gsSP1Triangle(4, 11, 1, 0),
gsSP1Triangle(11, 14, 1, 0),
gsSP1Triangle(15, 1, 14, 0),
gsSPVertex(luigi_right_leg_shared_dl_vertex + 16, 6, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(0, 4, 3, 0),
gsSP1Triangle(0, 5, 4, 0),
gsSP1Triangle(0, 2, 5, 0),
gsSPEndDisplayList(),
};
static const Vtx luigi_right_foot_dl_vertex[28] = {
{{{-37, 66, 15}, 0, {0, 1024}, {0x29, 0x78, 0xFE, 0x0}}},
{{{-11, 56, -46}, 0, {0, 1024}, {0x2A, 0x78, 0xFE, 0x0}}},
{{{-40, 66, -18}, 0, {0, 1024}, {0x26, 0x79, 0xFD, 0x0}}},
{{{-10, 57, 39}, 0, {0, 1024}, {0x2B, 0x78, 0xFE, 0x0}}},
{{{79, 23, -54}, 0, {0, 1024}, {0x2A, 0x78, 0xFE, 0x0}}},
{{{79, 25, 47}, 0, {0, 1024}, {0x2B, 0x78, 0xFF, 0x0}}},
{{{111, 13, -30}, 0, {0, 1024}, {0x29, 0x78, 0xFF, 0x0}}},
{{{112, 12, 26}, 0, {0, 1024}, {0x2F, 0x76, 0x1, 0x0}}},
{{{112, 12, 26}, 0, {0, 1024}, {0x4C, 0xAC, 0x3B, 0x0}}},
{{{82, -28, 0}, 0, {0, 1024}, {0x36, 0x8D, 0x3, 0x0}}},
{{{111, 13, -30}, 0, {0, 1024}, {0x4C, 0xAB, 0xC8, 0x0}}},
{{{48, -8, 41}, 0, {0, 1024}, {0x0, 0xB9, 0x6A, 0x0}}},
{{{79, 25, 47}, 0, {0, 1024}, {0x15, 0xD6, 0x76, 0x0}}},
{{{-10, 57, 39}, 0, {0, 1024}, {0xD0, 0x1, 0x76, 0x0}}},
{{{-32, 14, 30}, 0, {0, 1024}, {0xB7, 0xCF, 0x5B, 0x0}}},
{{{-37, 66, 15}, 0, {0, 1024}, {0x92, 0x19, 0x3B, 0x0}}},
{{{-32, 14, 30}, 0, {0, 1024}, {0xB7, 0xCF, 0x5B, 0x0}}},
{{{-37, 66, 15}, 0, {0, 1024}, {0x92, 0x19, 0x3B, 0x0}}},
{{{-52, 16, 0}, 0, {0, 1024}, {0x8A, 0xD2, 0x7, 0x0}}},
{{{-40, 66, -18}, 0, {0, 1024}, {0x8C, 0x18, 0xD3, 0x0}}},
{{{-33, 13, -36}, 0, {0, 1024}, {0xB3, 0xCC, 0xA9, 0x0}}},
{{{-11, 56, -46}, 0, {0, 1024}, {0xCE, 0x0, 0x8B, 0x0}}},
{{{47, -10, -46}, 0, {0, 1024}, {0x0, 0xB2, 0x9B, 0x0}}},
{{{79, 23, -54}, 0, {0, 1024}, {0x19, 0xCC, 0x8F, 0x0}}},
{{{111, 13, -30}, 0, {0, 1024}, {0x4C, 0xAB, 0xC8, 0x0}}},
{{{82, -28, 0}, 0, {0, 1024}, {0x36, 0x8D, 0x3, 0x0}}},
{{{29, -32, 0}, 0, {0, 1024}, {0xE6, 0x84, 0x5, 0x0}}},
{{{48, -8, 41}, 0, {0, 1024}, {0x0, 0xB9, 0x6A, 0x0}}},
};
const Gfx luigi_right_foot_dl[] = {
gsSPVertex(luigi_right_foot_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(4, 1, 3, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(6, 4, 5, 0),
gsSP1Triangle(7, 6, 5, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(9, 8, 11, 0),
gsSP1Triangle(12, 11, 8, 0),
gsSP1Triangle(13, 11, 12, 0),
gsSP1Triangle(14, 11, 13, 0),
gsSP1Triangle(13, 15, 14, 0),
gsSPVertex(luigi_right_foot_dl_vertex + 16, 12, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 2, 1, 0),
gsSP1Triangle(2, 3, 4, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(6, 4, 5, 0),
gsSP1Triangle(7, 6, 5, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(9, 6, 8, 0),
gsSP1Triangle(6, 9, 10, 0),
gsSP1Triangle(11, 10, 9, 0),
gsSP1Triangle(11, 0, 10, 0),
gsSP1Triangle(0, 2, 10, 0),
gsSP1Triangle(4, 10, 2, 0),
gsSP1Triangle(6, 10, 4, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_right_foot[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(SHOES),
gsSPDisplayList(luigi_right_foot_dl),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_right_foot[] = {
gsSPDisplayList(luigi_right_foot_dl),
gsDPPipeSync(),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPEndDisplayList(),
};
static const Vtx luigi_yellow_button_dl_vertex[14] = {
{{{1, 78, -32}, 0, {756, 940}, {0xE, 0x77, 0xD6, 0x0}}},
{{{19, 75, -23}, 0, {970, 550}, {0x26, 0x78, 0xEE, 0x0}}},
{{{39, 66, -27}, 0, {882, 72}, {0x41, 0x6A, 0xE4, 0x0}}},
{{{-5, 67, -49}, 0, {296, 972}, {0x3, 0x67, 0xB5, 0x0}}},
{{{8, 57, -61}, 0, {20, 624}, {0x12, 0x52, 0xA1, 0x0}}},
{{{24, 53, -59}, 0, {84, 268}, {0x21, 0x4F, 0xA2, 0x0}}},
{{{40, 56, -47}, 0, {406, -36}, {0x3C, 0x5C, 0xC0, 0x0}}},
{{{19, 75, 24}, 0, {10, 590}, {0x26, 0x78, 0x12, 0x0}}},
{{{1, 78, 33}, 0, {252, 966}, {0xE, 0x77, 0x2A, 0x0}}},
{{{39, 66, 28}, 0, {66, 106}, {0x41, 0x6A, 0x1C, 0x0}}},
{{{-5, 67, 50}, 0, {714, 966}, {0x4, 0x67, 0x4B, 0x0}}},
{{{8, 57, 61}, 0, {946, 602}, {0x14, 0x54, 0x5E, 0x0}}},
{{{24, 53, 60}, 0, {878, 246}, {0x1E, 0x50, 0x5E, 0x0}}},
{{{40, 56, 48}, 0, {536, -34}, {0x3C, 0x5C, 0x40, 0x0}}},
};
static const Vtx luigi_tshirt_shared_dl_vertex[30] = {
{{{39, 66, 28}, 0, {0, 0}, {0x41, 0x6A, 0x1C, 0x0}}},
{{{76, 31, 22}, 0, {0, 0}, {0x64, 0x4B, 0x19, 0x0}}},
{{{39, 66, -27}, 0, {0, 0}, {0x41, 0x6A, 0xE4, 0x0}}},
{{{76, 31, -21}, 0, {0, 0}, {0x64, 0x4B, 0xE7, 0x0}}},
{{{95, -2, 19}, 0, {0, 0}, {0x7B, 0x12, 0x1A, 0x0}}},
{{{95, -2, -18}, 0, {0, 0}, {0x7B, 0x12, 0xE6, 0x0}}},
{{{87, -36, 21}, 0, {0, 0}, {0x68, 0xBA, 0x14, 0x0}}},
{{{87, -36, -20}, 0, {0, 0}, {0x68, 0xBA, 0xEC, 0x0}}},
{{{47, -62, 0}, 0, {0, 0}, {0x2C, 0x89, 0x0, 0x0}}},
{{{39, -35, -67}, 0, {0, 0}, {0x1F, 0xCE, 0x8F, 0x0}}},
{{{77, -30, -50}, 0, {0, 0}, {0x57, 0xD7, 0xAD, 0x0}}},
{{{60, -51, -40}, 0, {0, 0}, {0x37, 0x98, 0xD0, 0x0}}},
{{{39, -1, -71}, 0, {0, 0}, {0x27, 0x7, 0x87, 0x0}}},
{{{-1, -13, -74}, 0, {0, 0}, {0x0, 0xEC, 0x83, 0x0}}},
{{{12, -60, -54}, 0, {0, 0}, {0x8, 0x9A, 0xB4, 0x0}}},
{{{4, 26, -73}, 0, {0, 0}, {0xA, 0x18, 0x84, 0x0}}},
{{{4, 26, -73}, 0, {0, 0}, {0xA, 0x18, 0x84, 0x0}}},
{{{36, 44, -60}, 0, {0, 0}, {0x34, 0x35, 0x99, 0x0}}},
{{{39, -1, -71}, 0, {0, 0}, {0x27, 0x7, 0x87, 0x0}}},
{{{74, 10, -49}, 0, {0, 0}, {0x59, 0x23, 0xAC, 0x0}}},
{{{77, -30, -50}, 0, {0, 0}, {0x57, 0xD7, 0xAD, 0x0}}},
{{{39, -35, 68}, 0, {0, 0}, {0x1F, 0xCE, 0x71, 0x0}}},
{{{-1, -14, 75}, 0, {0, 0}, {0x0, 0xEA, 0x7D, 0x0}}},
{{{12, -60, 55}, 0, {0, 0}, {0x8, 0x9A, 0x4B, 0x0}}},
{{{39, -1, 72}, 0, {0, 0}, {0x27, 0x7, 0x79, 0x0}}},
{{{77, -30, 51}, 0, {0, 0}, {0x57, 0xD7, 0x53, 0x0}}},
{{{60, -51, 41}, 0, {0, 0}, {0x37, 0x98, 0x30, 0x0}}},
{{{74, 10, 50}, 0, {0, 0}, {0x59, 0x23, 0x54, 0x0}}},
{{{36, 44, 61}, 0, {0, 0}, {0x34, 0x35, 0x67, 0x0}}},
{{{4, 26, 74}, 0, {0, 0}, {0xC, 0x18, 0x7C, 0x0}}},
};
static const Vtx luigi_pants_overalls_shared_dl_vertex[94] = {
{{{19, 75, 24}, 0, {0, 0}, {0x26, 0x78, 0x12, 0x0}}},
{{{1, 78, -32}, 0, {0, 0}, {0xE, 0x77, 0xD6, 0x0}}},
{{{1, 78, 33}, 0, {0, 0}, {0xE, 0x77, 0x2A, 0x0}}},
{{{19, 75, -23}, 0, {0, 0}, {0x26, 0x78, 0xEE, 0x0}}},
{{{39, 66, -27}, 0, {0, 0}, {0x41, 0x6A, 0xE4, 0x0}}},
{{{39, 66, 28}, 0, {0, 0}, {0x41, 0x6A, 0x1C, 0x0}}},
{{{-25, 77, 29}, 0, {0, 0}, {0xEF, 0x7A, 0x21, 0x0}}},
{{{-25, 77, -28}, 0, {0, 0}, {0xEF, 0x7A, 0xDF, 0x0}}},
{{{-5, 67, -49}, 0, {0, 0}, {0x3, 0x67, 0xB5, 0x0}}},
{{{-39, 54, -60}, 0, {0, 0}, {0xD3, 0x44, 0x9E, 0x0}}},
{{{-14, 49, -66}, 0, {0, 0}, {0xFA, 0x3C, 0x90, 0x0}}},
{{{8, 57, -61}, 0, {0, 0}, {0x12, 0x52, 0xA1, 0x0}}},
{{{4, 26, -73}, 0, {0, 0}, {0xA, 0x18, 0x84, 0x0}}},
{{{24, 53, -59}, 0, {0, 0}, {0x21, 0x4F, 0xA2, 0x0}}},
{{{36, 44, -60}, 0, {0, 0}, {0x34, 0x35, 0x99, 0x0}}},
{{{40, 56, -47}, 0, {0, 0}, {0x3C, 0x5C, 0xC0, 0x0}}},
{{{36, 44, -60}, 0, {0, 0}, {0x34, 0x35, 0x99, 0x0}}},
{{{40, 56, -47}, 0, {0, 0}, {0x3C, 0x5C, 0xC0, 0x0}}},
{{{74, 10, -49}, 0, {0, 0}, {0x59, 0x23, 0xAC, 0x0}}},
{{{76, 31, -21}, 0, {0, 0}, {0x64, 0x4B, 0xE7, 0x0}}},
{{{39, 66, -27}, 0, {0, 0}, {0x41, 0x6A, 0xE4, 0x0}}},
{{{95, -2, -18}, 0, {0, 0}, {0x7B, 0x12, 0xE6, 0x0}}},
{{{77, -30, -50}, 0, {0, 0}, {0x57, 0xD7, 0xAD, 0x0}}},
{{{87, -36, -20}, 0, {0, 0}, {0x68, 0xBA, 0xEC, 0x0}}},
{{{60, -51, -40}, 0, {0, 0}, {0x37, 0x98, 0xD0, 0x0}}},
{{{47, -62, 0}, 0, {0, 0}, {0x2C, 0x89, 0x0, 0x0}}},
{{{12, -60, -54}, 0, {0, 0}, {0x8, 0x9A, 0xB4, 0x0}}},
{{{0, -72, 0}, 0, {0, 0}, {0x1, 0x81, 0x0, 0x0}}},
{{{12, -60, 55}, 0, {0, 0}, {0x8, 0x9A, 0x4B, 0x0}}},
{{{60, -51, 41}, 0, {0, 0}, {0x37, 0x98, 0x30, 0x0}}},
{{{87, -36, 21}, 0, {0, 0}, {0x68, 0xBA, 0x14, 0x0}}},
{{{77, -30, 51}, 0, {0, 0}, {0x57, 0xD7, 0x53, 0x0}}},
{{{87, -36, 21}, 0, {0, 0}, {0x68, 0xBA, 0x14, 0x0}}},
{{{95, -2, 19}, 0, {0, 0}, {0x7B, 0x12, 0x1A, 0x0}}},
{{{77, -30, 51}, 0, {0, 0}, {0x57, 0xD7, 0x53, 0x0}}},
{{{74, 10, 50}, 0, {0, 0}, {0x59, 0x23, 0x54, 0x0}}},
{{{76, 31, 22}, 0, {0, 0}, {0x64, 0x4B, 0x19, 0x0}}},
{{{40, 56, 48}, 0, {0, 0}, {0x3C, 0x5C, 0x40, 0x0}}},
{{{39, 66, 28}, 0, {0, 0}, {0x41, 0x6A, 0x1C, 0x0}}},
{{{36, 44, 61}, 0, {0, 0}, {0x34, 0x35, 0x67, 0x0}}},
{{{24, 53, 60}, 0, {0, 0}, {0x1E, 0x50, 0x5E, 0x0}}},
{{{4, 26, 74}, 0, {0, 0}, {0xC, 0x18, 0x7C, 0x0}}},
{{{8, 57, 61}, 0, {0, 0}, {0x14, 0x54, 0x5E, 0x0}}},
{{{-14, 49, 68}, 0, {0, 0}, {0xFD, 0x3D, 0x6F, 0x0}}},
{{{-5, 67, 50}, 0, {0, 0}, {0x4, 0x67, 0x4B, 0x0}}},
{{{-39, 54, 61}, 0, {0, 0}, {0xD3, 0x46, 0x60, 0x0}}},
{{{-25, 77, 29}, 0, {0, 0}, {0xEF, 0x7A, 0x21, 0x0}}},
{{{1, 78, 33}, 0, {0, 0}, {0xE, 0x77, 0x2A, 0x0}}},
{{{-51, 63, 44}, 0, {0, 0}, {0xC7, 0x5A, 0x45, 0x0}}},
{{{-39, 54, 61}, 0, {0, 0}, {0xD3, 0x46, 0x60, 0x0}}},
{{{-25, 77, 29}, 0, {0, 0}, {0xEF, 0x7A, 0x21, 0x0}}},
{{{-83, 45, 25}, 0, {0, 0}, {0x8D, 0x25, 0x28, 0x0}}},
{{{-54, 72, 20}, 0, {0, 0}, {0xC7, 0x70, 0x13, 0x0}}},
{{{-54, 72, -19}, 0, {0, 0}, {0xC7, 0x70, 0xEC, 0x0}}},
{{{-25, 77, -28}, 0, {0, 0}, {0xEF, 0x7A, 0xDF, 0x0}}},
{{{-51, 62, -44}, 0, {0, 0}, {0xC5, 0x58, 0xB9, 0x0}}},
{{{-39, 54, -60}, 0, {0, 0}, {0xD3, 0x44, 0x9E, 0x0}}},
{{{-83, 45, -23}, 0, {0, 0}, {0x8D, 0x25, 0xD9, 0x0}}},
{{{-37, 20, -72}, 0, {0, 0}, {0xCC, 0xB, 0x8D, 0x0}}},
{{{-14, 49, -66}, 0, {0, 0}, {0xFA, 0x3C, 0x90, 0x0}}},
{{{4, 26, -73}, 0, {0, 0}, {0xA, 0x18, 0x84, 0x0}}},
{{{-1, -13, -74}, 0, {0, 0}, {0x0, 0xEC, 0x83, 0x0}}},
{{{-37, -27, -69}, 0, {0, 0}, {0xCB, 0xDC, 0x92, 0x0}}},
{{{12, -60, -54}, 0, {0, 0}, {0x8, 0x9A, 0xB4, 0x0}}},
{{{-39, -57, -47}, 0, {0, 0}, {0xCA, 0x9F, 0xC2, 0x0}}},
{{{-37, -27, -69}, 0, {0, 0}, {0xCB, 0xDC, 0x92, 0x0}}},
{{{12, -60, -54}, 0, {0, 0}, {0x8, 0x9A, 0xB4, 0x0}}},
{{{0, -72, 0}, 0, {0, 0}, {0x1, 0x81, 0x0, 0x0}}},
{{{-40, -65, 0}, 0, {0, 0}, {0xC5, 0x8F, 0x0, 0x0}}},
{{{-39, -57, 48}, 0, {0, 0}, {0xCA, 0x9F, 0x3E, 0x0}}},
{{{12, -60, 55}, 0, {0, 0}, {0x8, 0x9A, 0x4B, 0x0}}},
{{{-37, -27, 70}, 0, {0, 0}, {0xCB, 0xDB, 0x6D, 0x0}}},
{{{-1, -14, 75}, 0, {0, 0}, {0x0, 0xEA, 0x7D, 0x0}}},
{{{-37, 20, 74}, 0, {0, 0}, {0xCC, 0xA, 0x74, 0x0}}},
{{{4, 26, 74}, 0, {0, 0}, {0xC, 0x18, 0x7C, 0x0}}},
{{{-14, 49, 68}, 0, {0, 0}, {0xFD, 0x3D, 0x6F, 0x0}}},
{{{-39, 54, 61}, 0, {0, 0}, {0xD3, 0x46, 0x60, 0x0}}},
{{{-83, 45, 25}, 0, {0, 0}, {0x8D, 0x25, 0x28, 0x0}}},
{{{-70, -30, 31}, 0, {0, 0}, {0x91, 0xD0, 0x28, 0x0}}},
{{{-83, 45, -23}, 0, {0, 0}, {0x8D, 0x25, 0xD9, 0x0}}},
{{{-83, 45, -23}, 0, {0, 0}, {0x8D, 0x25, 0xD9, 0x0}}},
{{{-83, 45, 25}, 0, {0, 0}, {0x8D, 0x25, 0x28, 0x0}}},
{{{-54, 72, 20}, 0, {0, 0}, {0xC7, 0x70, 0x13, 0x0}}},
{{{-54, 72, -19}, 0, {0, 0}, {0xC7, 0x70, 0xEC, 0x0}}},
{{{-51, 62, -44}, 0, {0, 0}, {0xC5, 0x58, 0xB9, 0x0}}},
{{{-70, -30, -30}, 0, {0, 0}, {0x91, 0xD1, 0xD8, 0x0}}},
{{{-70, -30, 31}, 0, {0, 0}, {0x91, 0xD0, 0x28, 0x0}}},
{{{-40, -65, 0}, 0, {0, 0}, {0xC5, 0x8F, 0x0, 0x0}}},
{{{-39, -57, -47}, 0, {0, 0}, {0xCA, 0x9F, 0xC2, 0x0}}},
{{{-37, -27, -69}, 0, {0, 0}, {0xCB, 0xDC, 0x92, 0x0}}},
{{{-37, 20, -72}, 0, {0, 0}, {0xCC, 0xB, 0x8D, 0x0}}},
{{{-39, -57, 48}, 0, {0, 0}, {0xCA, 0x9F, 0x3E, 0x0}}},
{{{-37, -27, 70}, 0, {0, 0}, {0xCB, 0xDB, 0x6D, 0x0}}},
{{{-37, 20, 74}, 0, {0, 0}, {0xCC, 0xA, 0x74, 0x0}}},
};
const Gfx luigi_yellow_button_dl[] = {
gsSPVertex(luigi_yellow_button_dl_vertex + 0, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(3, 2, 4, 0),
gsSP1Triangle(4, 2, 5, 0),
gsSP1Triangle(6, 5, 2, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(10, 9, 8, 0),
gsSP1Triangle(11, 9, 10, 0),
gsSP1Triangle(12, 9, 11, 0),
gsSP1Triangle(13, 9, 12, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_pants_overalls_shared_dl[] = {
gsSPVertex(luigi_pants_overalls_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(3, 0, 4, 0),
gsSP1Triangle(0, 5, 4, 0),
gsSP1Triangle(1, 6, 2, 0),
gsSP1Triangle(7, 6, 1, 0),
gsSP1Triangle(8, 7, 1, 0),
gsSP1Triangle(8, 9, 7, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(8, 11, 10, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(11, 13, 12, 0),
gsSP1Triangle(13, 14, 12, 0),
gsSP1Triangle(14, 13, 15, 0),
gsSPVertex(luigi_pants_overalls_shared_dl_vertex + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(4, 3, 1, 0),
gsSP1Triangle(3, 5, 2, 0),
gsSP1Triangle(5, 6, 2, 0),
gsSP1Triangle(7, 6, 5, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(8, 7, 9, 0),
gsSP1Triangle(9, 10, 8, 0),
gsSP1Triangle(11, 10, 9, 0),
gsSP1Triangle(9, 12, 11, 0),
gsSP1Triangle(13, 12, 9, 0),
gsSP1Triangle(13, 9, 14, 0),
gsSP1Triangle(14, 15, 13, 0),
gsSPVertex(luigi_pants_overalls_shared_dl_vertex + 32, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(4, 3, 1, 0),
gsSP1Triangle(4, 5, 3, 0),
gsSP1Triangle(5, 4, 6, 0),
gsSP1Triangle(7, 3, 5, 0),
gsSP1Triangle(7, 5, 8, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(10, 9, 8, 0),
gsSP1Triangle(11, 9, 10, 0),
gsSP1Triangle(11, 10, 12, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(13, 12, 14, 0),
gsSP1Triangle(15, 14, 12, 0),
gsSPVertex(luigi_pants_overalls_shared_dl_vertex + 48, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(4, 3, 0, 0),
gsSP1Triangle(2, 4, 0, 0),
gsSP1Triangle(4, 2, 5, 0),
gsSP1Triangle(6, 5, 2, 0),
gsSP1Triangle(6, 7, 5, 0),
gsSP1Triangle(7, 6, 8, 0),
gsSP1Triangle(8, 9, 7, 0),
gsSP1Triangle(10, 9, 8, 0),
gsSP1Triangle(8, 11, 10, 0),
gsSP1Triangle(11, 12, 10, 0),
gsSP1Triangle(10, 12, 13, 0),
gsSP1Triangle(10, 13, 14, 0),
gsSP1Triangle(14, 13, 15, 0),
gsSPVertex(luigi_pants_overalls_shared_dl_vertex + 64, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 3, 0, 0),
gsSP1Triangle(4, 0, 3, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(5, 3, 6, 0),
gsSP1Triangle(7, 5, 6, 0),
gsSP1Triangle(7, 6, 8, 0),
gsSP1Triangle(9, 7, 8, 0),
gsSP1Triangle(10, 9, 8, 0),
gsSP1Triangle(10, 11, 9, 0),
gsSP1Triangle(9, 11, 12, 0),
gsSP1Triangle(9, 12, 13, 0),
gsSP1Triangle(13, 14, 9, 0),
gsSP1Triangle(14, 13, 15, 0),
gsSPVertex(luigi_pants_overalls_shared_dl_vertex + 80, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(3, 4, 0, 0),
gsSP1Triangle(5, 6, 0, 0),
gsSP1Triangle(5, 7, 6, 0),
gsSP1Triangle(5, 8, 7, 0),
gsSP1Triangle(8, 5, 9, 0),
gsSP1Triangle(9, 5, 10, 0),
gsSP1Triangle(0, 10, 5, 0),
gsSP1Triangle(11, 6, 7, 0),
gsSP1Triangle(12, 6, 11, 0),
gsSP1Triangle(12, 13, 6, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_tshirt_shared_dl[] = {
gsSPVertex(luigi_tshirt_shared_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 3, 2, 0),
gsSP1Triangle(3, 1, 4, 0),
gsSP1Triangle(5, 3, 4, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(6, 7, 5, 0),
gsSP1Triangle(7, 6, 8, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(9, 12, 10, 0),
gsSP1Triangle(12, 9, 13, 0),
gsSP1Triangle(9, 14, 13, 0),
gsSP1Triangle(11, 14, 9, 0),
gsSP1Triangle(15, 12, 13, 0),
gsSPVertex(luigi_tshirt_shared_dl_vertex + 16, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(2, 3, 4, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(8, 6, 5, 0),
gsSP1Triangle(5, 9, 8, 0),
gsSP1Triangle(5, 10, 9, 0),
gsSP1Triangle(10, 5, 7, 0),
gsSP1Triangle(8, 9, 11, 0),
gsSP1Triangle(8, 11, 12, 0),
gsSP1Triangle(8, 12, 13, 0),
gsSP1Triangle(6, 8, 13, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_torso_dl[] = {
gsSPDisplayList(luigi_pants_overalls_shared_dl),
gsSPCopyLightsPlayerPart(SHIRT), // gsSPLight(&luigi_green_lights_group.a, 2),
gsSPDisplayList(luigi_tshirt_shared_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_torso[] = {
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, luigi_texture_yellow_button),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_yellow_button_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_torso_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_torso_shared_dl[] = {
gsSPDisplayList(luigi_yellow_button_dl),
gsSPDisplayList(luigi_pants_overalls_shared_dl),
gsSPDisplayList(luigi_tshirt_shared_dl),
gsSPEndDisplayList(),
};
Vtx luigi_l_logo_dl_vertex[7] = {
{{ {186, 83, 26}, 0, {730, 764}, {78, 83, 57, 255} }},
{{ {147, 31, 77}, 0, {1200, 1106}, {254, 70, 106, 255} }},
{{ {247, 60, 57}, 0, {1018, 94}, {63, 72, 83, 255} }},
{{ {273, 73, 0}, 0, {474, -182}, {96, 83, 0, 255} }},
{{ {186, 83, -25}, 0, {252, 768}, {78, 83, 199, 255} }},
{{ {247, 60, -56}, 0, {-38, 100}, {63, 73, 173, 255} }},
{{ {147, 31, -76}, 0, {-206, 1116}, {253, 70, 150, 255} }},
};
Vtx luigi_eyes_cap_on_dl_vertex[12] = {
{{ {78, 89, -20}, 0, {282, 1028}, {67, 68, 173, 255} }},
{{ {135, 74, -54}, 0, {-84, 412}, {25, 91, 171, 255} }},
{{ {94, 76, -56}, 0, {-98, 860}, {17, 100, 180, 255} }},
{{ {166, 84, -26}, 0, {202, 68}, {161, 84, 247, 255} }},
{{ {135, 91, 0}, 0, {480, 402}, {10, 127, 0, 255} }},
{{ {88, 92, 0}, 0, {488, 916}, {97, 82, 0, 255} }},
{{ {78, 89, 20}, 0, {700, 1020}, {70, 67, 82, 255} }},
{{ {166, 84, 27}, 0, {756, 60}, {161, 84, 9, 255} }},
{{ {135, 74, 55}, 0, {1054, 392}, {25, 91, 85, 255} }},
{{ {94, 76, 57}, 0, {1084, 840}, {17, 101, 76, 255} }},
{{ {147, 31, 77}, 0, {1282, 258}, {254, 70, 106, 255} }},
{{ {147, 31, -76}, 0, {-318, 286}, {253, 70, 150, 255} }},
};
Vtx luigi_hair_sideburn_cap_on_dl_vertex[12] = {
{{ {88, 42, -76}, 0, {-70, 700}, {7, 42, 136, 255} }},
{{ {147, 31, -76}, 0, {90, -58}, {253, 70, 150, 255} }},
{{ {115, -12, -91}, 0, {916, 184}, {235, 33, 135, 255} }},
{{ {80, -24, -92}, 0, {1150, 582}, {0, 89, 165, 255} }},
{{ {32, -5, -84}, 0, {842, 1210}, {187, 248, 149, 255} }},
{{ {34, 34, -78}, 0, {118, 1334}, {213, 31, 140, 255} }},
{{ {88, 42, 77}, 0, {-74, 726}, {6, 43, 119, 255} }},
{{ {115, -11, 93}, 0, {922, 122}, {235, 33, 121, 255} }},
{{ {147, 31, 77}, 0, {22, -68}, {254, 70, 106, 255} }},
{{ {80, -24, 93}, 0, {1238, 518}, {254, 89, 91, 255} }},
{{ {32, -5, 85}, 0, {968, 1192}, {187, 248, 107, 255} }},
{{ {34, 34, 79}, 0, {196, 1366}, {213, 31, 116, 255} }},
};
Vtx luigi_mustache_cap_on_dl_vertex[21] = {
{{ {78, 89, 20}, 0, {224, 146}, {70, 67, 82, 255} }},
{{ {58, 93, 28}, 0, {342, 368}, {20, 35, 120, 255} }},
{{ {66, 76, 68}, 0, {898, -18}, {7, 85, 94, 255} }},
{{ {35, 79, 58}, 0, {824, 500}, {211, 87, 81, 255} }},
{{ {35, 94, 27}, 0, {354, 690}, {183, 45, 94, 255} }},
{{ {13, 83, 24}, 0, {442, 982}, {173, 91, 31, 255} }},
{{ {24, 91, 0}, 0, {70, 924}, {139, 50, 0, 255} }},
{{ {-7, 40, 43}, 0, {892, 1090}, {147, 20, 62, 255} }},
{{ {34, 34, 79}, 0, {1296, 310}, {213, 31, 116, 255} }},
{{ {35, 94, -26}, 0, {340, 684}, {184, 46, 162, 255} }},
{{ {13, 83, -24}, 0, {394, 998}, {174, 91, 224, 255} }},
{{ {24, 91, 0}, 0, {50, 900}, {139, 50, 0, 255} }},
{{ {35, 79, -57}, 0, {792, 544}, {211, 86, 174, 255} }},
{{ {58, 93, -27}, 0, {362, 344}, {18, 35, 135, 255} }},
{{ {66, 76, -67}, 0, {922, -4}, {7, 85, 162, 255} }},
{{ {78, 89, -20}, 0, {274, 100}, {67, 68, 173, 255} }},
{{ {34, 34, -78}, 0, {1250, 390}, {213, 31, 140, 255} }},
{{ {35, 79, -57}, 0, {792, 544}, {211, 86, 174, 255} }},
{{ {66, 76, -67}, 0, {922, -4}, {7, 85, 162, 255} }},
{{ {-7, 40, -42}, 0, {806, 1162}, {147, 19, 194, 255} }},
{{ {13, 83, -24}, 0, {394, 998}, {174, 91, 224, 255} }},
};
Vtx luigi_face_cap_dl_vertex[43] = {
{{ {163, 124, -53}, 0, {0, 0}, {227, 81, 163, 255} }},
{{ {147, 31, -76}, 0, {0, 0}, {253, 70, 150, 255} }},
{{ {166, 84, -26}, 0, {0, 0}, {161, 84, 247, 255} }},
{{ {186, 83, -25}, 0, {0, 0}, {78, 83, 199, 255} }},
{{ {171, 155, 0}, 0, {0, 0}, {252, 127, 255, 255} }},
{{ {166, 84, 27}, 0, {0, 0}, {161, 84, 9, 255} }},
{{ {163, 125, 54}, 0, {0, 0}, {228, 82, 93, 255} }},
{{ {147, 31, 77}, 0, {0, 0}, {254, 70, 106, 255} }},
{{ {186, 83, 26}, 0, {0, 0}, {78, 83, 57, 255} }},
{{ {185, -5, -117}, 0, {0, 0}, {30, 9, 133, 255} }},
{{ {247, 60, -56}, 0, {0, 0}, {63, 73, 173, 255} }},
{{ {115, -12, -91}, 0, {0, 0}, {235, 33, 135, 255} }},
{{ {129, -50, -108}, 0, {0, 0}, {232, 224, 135, 255} }},
{{ {165, -90, -61}, 0, {0, 0}, {73, 168, 200, 255} }},
{{ {270, -2, -34}, 0, {0, 0}, {111, 212, 213, 255} }},
{{ {273, 73, 0}, 0, {0, 0}, {96, 83, 0, 255} }},
{{ {273, 73, 0}, 0, {0, 0}, {96, 83, 0, 255} }},
{{ {270, -2, 34}, 0, {0, 0}, {111, 212, 43, 255} }},
{{ {270, -2, -34}, 0, {0, 0}, {111, 212, 213, 255} }},
{{ {247, 60, 57}, 0, {0, 0}, {63, 72, 83, 255} }},
{{ {185, -5, 117}, 0, {0, 0}, {31, 9, 123, 255} }},
{{ {147, 31, 77}, 0, {0, 0}, {254, 70, 106, 255} }},
{{ {115, -11, 93}, 0, {0, 0}, {235, 33, 121, 255} }},
{{ {129, -50, 108}, 0, {0, 0}, {233, 222, 120, 255} }},
{{ {88, -51, 74}, 0, {0, 0}, {208, 190, 97, 255} }},
{{ {62, -96, 42}, 0, {0, 0}, {209, 168, 79, 255} }},
{{ {77, -135, 42}, 0, {0, 0}, {188, 162, 53, 255} }},
{{ {77, -135, -41}, 0, {0, 0}, {189, 162, 204, 255} }},
{{ {62, -96, -42}, 0, {0, 0}, {209, 169, 176, 255} }},
{{ {129, -50, -108}, 0, {0, 0}, {232, 224, 135, 255} }},
{{ {88, -51, -73}, 0, {0, 0}, {207, 192, 158, 255} }},
{{ {115, -12, -91}, 0, {0, 0}, {235, 33, 135, 255} }},
{{ {129, -50, -108}, 0, {0, 0}, {232, 224, 135, 255} }},
{{ {124, -138, -40}, 0, {0, 0}, {40, 144, 210, 255} }},
{{ {77, -135, -41}, 0, {0, 0}, {189, 162, 204, 255} }},
{{ {165, -90, -61}, 0, {0, 0}, {73, 168, 200, 255} }},
{{ {124, -138, 41}, 0, {0, 0}, {41, 145, 46, 255} }},
{{ {165, -89, 62}, 0, {0, 0}, {73, 169, 57, 255} }},
{{ {270, -2, -34}, 0, {0, 0}, {111, 212, 213, 255} }},
{{ {270, -2, 34}, 0, {0, 0}, {111, 212, 43, 255} }},
{{ {185, -5, 117}, 0, {0, 0}, {31, 9, 123, 255} }},
{{ {129, -50, 108}, 0, {0, 0}, {233, 222, 120, 255} }},
{{ {77, -135, 42}, 0, {0, 0}, {188, 162, 53, 255} }},
};
Vtx luigi_face_part_cap_on_dl_vertex[88] = {
{{ {66, 76, 68}, 0, {0, 0}, {7, 85, 94, 255} }},
{{ {94, 76, 57}, 0, {0, 0}, {17, 101, 76, 255} }},
{{ {78, 89, 20}, 0, {0, 0}, {70, 67, 82, 255} }},
{{ {88, 42, 77}, 0, {0, 0}, {6, 43, 119, 255} }},
{{ {34, 34, 79}, 0, {0, 0}, {213, 31, 116, 255} }},
{{ {135, 74, 55}, 0, {0, 0}, {25, 91, 85, 255} }},
{{ {147, 31, 77}, 0, {0, 0}, {254, 70, 106, 255} }},
{{ {13, 83, -24}, 0, {0, 0}, {174, 91, 224, 255} }},
{{ {13, 83, 24}, 0, {0, 0}, {173, 91, 31, 255} }},
{{ {24, 91, 0}, 0, {0, 0}, {139, 50, 0, 255} }},
{{ {-19, 46, 0}, 0, {0, 0}, {131, 25, 0, 255} }},
{{ {-7, 40, -42}, 0, {0, 0}, {147, 19, 194, 255} }},
{{ {12, -51, -34}, 0, {0, 0}, {132, 0, 227, 255} }},
{{ {32, -5, -84}, 0, {0, 0}, {187, 248, 149, 255} }},
{{ {34, 34, -78}, 0, {0, 0}, {213, 31, 140, 255} }},
{{ {51, -44, -64}, 0, {0, 0}, {208, 194, 156, 255} }},
{{ {51, -44, -64}, 0, {0, 0}, {208, 194, 156, 255} }},
{{ {32, -5, -84}, 0, {0, 0}, {187, 248, 149, 255} }},
{{ {57, -27, -110}, 0, {0, 0}, {217, 254, 135, 255} }},
{{ {80, -24, -92}, 0, {0, 0}, {0, 89, 165, 255} }},
{{ {95, -31, -110}, 0, {0, 0}, {43, 243, 137, 255} }},
{{ {115, -12, -91}, 0, {0, 0}, {235, 33, 135, 255} }},
{{ {88, -51, -73}, 0, {0, 0}, {207, 192, 158, 255} }},
{{ {13, 83, 24}, 0, {0, 0}, {173, 91, 31, 255} }},
{{ {-19, 46, 0}, 0, {0, 0}, {131, 25, 0, 255} }},
{{ {-7, 40, 43}, 0, {0, 0}, {147, 20, 62, 255} }},
{{ {12, -51, 35}, 0, {0, 0}, {133, 0, 30, 255} }},
{{ {12, -51, -34}, 0, {0, 0}, {132, 0, 227, 255} }},
{{ {26, -79, 0}, 0, {0, 0}, {160, 172, 0, 255} }},
{{ {32, -5, 85}, 0, {0, 0}, {187, 248, 107, 255} }},
{{ {34, 34, 79}, 0, {0, 0}, {213, 31, 116, 255} }},
{{ {51, -44, 65}, 0, {0, 0}, {208, 193, 100, 255} }},
{{ {51, -44, 65}, 0, {0, 0}, {208, 193, 100, 255} }},
{{ {57, -27, 111}, 0, {0, 0}, {217, 254, 121, 255} }},
{{ {32, -5, 85}, 0, {0, 0}, {187, 248, 107, 255} }},
{{ {88, -51, 74}, 0, {0, 0}, {208, 190, 97, 255} }},
{{ {95, -31, 111}, 0, {0, 0}, {42, 241, 119, 255} }},
{{ {115, -11, 93}, 0, {0, 0}, {235, 33, 121, 255} }},
{{ {80, -24, 93}, 0, {0, 0}, {254, 89, 91, 255} }},
{{ {88, 42, -76}, 0, {0, 0}, {7, 42, 136, 255} }},
{{ {135, 74, -54}, 0, {0, 0}, {25, 91, 171, 255} }},
{{ {147, 31, -76}, 0, {0, 0}, {253, 70, 150, 255} }},
{{ {94, 76, -56}, 0, {0, 0}, {17, 100, 180, 255} }},
{{ {66, 76, -67}, 0, {0, 0}, {7, 85, 162, 255} }},
{{ {34, 34, -78}, 0, {0, 0}, {213, 31, 140, 255} }},
{{ {78, 89, -20}, 0, {0, 0}, {67, 68, 173, 255} }},
{{ {35, 94, 27}, 0, {0, 0}, {183, 45, 94, 255} }},
{{ {15, 111, 0}, 0, {0, 0}, {132, 230, 254, 255} }},
{{ {24, 91, 0}, 0, {0, 0}, {139, 50, 0, 255} }},
{{ {29, 112, 36}, 0, {0, 0}, {179, 226, 96, 255} }},
{{ {58, 93, 28}, 0, {0, 0}, {20, 35, 120, 255} }},
{{ {55, 112, 41}, 0, {0, 0}, {255, 220, 122, 255} }},
{{ {81, 112, 36}, 0, {0, 0}, {75, 223, 97, 255} }},
{{ {78, 89, 20}, 0, {0, 0}, {70, 67, 82, 255} }},
{{ {96, 113, 0}, 0, {0, 0}, {125, 234, 0, 255} }},
{{ {88, 92, 0}, 0, {0, 0}, {97, 82, 0, 255} }},
{{ {78, 89, -20}, 0, {0, 0}, {67, 68, 173, 255} }},
{{ {81, 112, -35}, 0, {0, 0}, {75, 224, 158, 255} }},
{{ {58, 93, -27}, 0, {0, 0}, {18, 35, 135, 255} }},
{{ {55, 112, -40}, 0, {0, 0}, {255, 220, 134, 255} }},
{{ {29, 112, -35}, 0, {0, 0}, {178, 228, 160, 255} }},
{{ {35, 94, -26}, 0, {0, 0}, {184, 46, 162, 255} }},
{{ {29, 112, -35}, 0, {0, 0}, {178, 228, 160, 255} }},
{{ {15, 111, 0}, 0, {0, 0}, {132, 230, 254, 255} }},
{{ {32, 141, -35}, 0, {0, 0}, {191, 64, 167, 255} }},
{{ {15, 141, 0}, 0, {0, 0}, {142, 56, 254, 255} }},
{{ {29, 112, 36}, 0, {0, 0}, {179, 226, 96, 255} }},
{{ {32, 141, 36}, 0, {0, 0}, {193, 65, 89, 255} }},
{{ {55, 112, 41}, 0, {0, 0}, {255, 220, 122, 255} }},
{{ {58, 141, 41}, 0, {0, 0}, {0, 67, 108, 255} }},
{{ {82, 142, 36}, 0, {0, 0}, {69, 61, 88, 255} }},
{{ {81, 112, 36}, 0, {0, 0}, {75, 223, 97, 255} }},
{{ {96, 113, 0}, 0, {0, 0}, {125, 234, 0, 255} }},
{{ {96, 142, 0}, 0, {0, 0}, {117, 50, 255, 255} }},
{{ {81, 112, -35}, 0, {0, 0}, {75, 224, 158, 255} }},
{{ {82, 142, -35}, 0, {0, 0}, {69, 60, 168, 255} }},
{{ {55, 112, -40}, 0, {0, 0}, {255, 220, 134, 255} }},
{{ {58, 141, -40}, 0, {0, 0}, {0, 66, 147, 255} }},
{{ {58, 141, -40}, 0, {0, 0}, {0, 66, 147, 255} }},
{{ {32, 141, -35}, 0, {0, 0}, {191, 64, 167, 255} }},
{{ {39, 156, 0}, 0, {0, 0}, {224, 123, 0, 255} }},
{{ {15, 141, 0}, 0, {0, 0}, {142, 56, 254, 255} }},
{{ {32, 141, 36}, 0, {0, 0}, {193, 65, 89, 255} }},
{{ {58, 141, 41}, 0, {0, 0}, {0, 67, 108, 255} }},
{{ {77, 157, 0}, 0, {0, 0}, {35, 122, 0, 255} }},
{{ {82, 142, 36}, 0, {0, 0}, {69, 61, 88, 255} }},
{{ {96, 142, 0}, 0, {0, 0}, {117, 50, 255, 255} }},
{{ {82, 142, -35}, 0, {0, 0}, {69, 60, 168, 255} }},
};
Vtx luigi_face_back_hair_cap_on_dl_vertex[24] = {
{{ {88, -51, -73}, 0, {0, 0}, {207, 192, 158, 255} }},
{{ {62, -96, -42}, 0, {0, 0}, {209, 169, 176, 255} }},
{{ {51, -44, -64}, 0, {0, 0}, {208, 194, 156, 255} }},
{{ {46, -107, -45}, 0, {0, 0}, {60, 152, 215, 255} }},
{{ {24, -109, -21}, 0, {0, 0}, {239, 156, 77, 255} }},
{{ {26, -79, 0}, 0, {0, 0}, {160, 172, 0, 255} }},
{{ {62, -96, 42}, 0, {0, 0}, {209, 168, 79, 255} }},
{{ {24, -109, 21}, 0, {0, 0}, {239, 156, 179, 255} }},
{{ {46, -107, 45}, 0, {0, 0}, {60, 152, 41, 255} }},
{{ {51, -44, 65}, 0, {0, 0}, {208, 193, 100, 255} }},
{{ {88, -51, 74}, 0, {0, 0}, {208, 190, 97, 255} }},
{{ {19, -78, 73}, 0, {0, 0}, {226, 4, 123, 255} }},
{{ {12, -51, 35}, 0, {0, 0}, {133, 0, 30, 255} }},
{{ {-3, -81, 44}, 0, {0, 0}, {129, 11, 1, 255} }},
{{ {5, -113, 53}, 0, {0, 0}, {185, 158, 40, 255} }},
{{ {19, -78, -73}, 0, {0, 0}, {227, 5, 132, 255} }},
{{ {5, -113, -53}, 0, {0, 0}, {185, 158, 216, 255} }},
{{ {19, -78, -73}, 0, {0, 0}, {227, 5, 132, 255} }},
{{ {46, -107, -45}, 0, {0, 0}, {60, 152, 215, 255} }},
{{ {24, -109, -21}, 0, {0, 0}, {239, 156, 77, 255} }},
{{ {-3, -81, -44}, 0, {0, 0}, {129, 11, 255, 255} }},
{{ {26, -79, 0}, 0, {0, 0}, {160, 172, 0, 255} }},
{{ {12, -51, -34}, 0, {0, 0}, {132, 0, 227, 255} }},
{{ {51, -44, -64}, 0, {0, 0}, {208, 194, 156, 255} }},
};
Gfx luigi_l_logo_dl[] = {
gsSPVertex(luigi_l_logo_dl_vertex + 0, 7, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(4, 0, 3, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(6, 4, 5, 0),
gsSPEndDisplayList(),
};
Gfx luigi_eyes_cap_on_dl[] = {
gsSPVertex(luigi_eyes_cap_on_dl_vertex + 0, 12, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(4, 3, 0, 0),
gsSP1Triangle(5, 4, 0, 0),
gsSP1Triangle(5, 6, 4, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(7, 6, 8, 0),
gsSP1Triangle(9, 8, 6, 0),
gsSP1Triangle(7, 8, 10, 0),
gsSP1Triangle(3, 11, 1, 0),
gsSP1Triangle(4, 7, 3, 0),
gsSPEndDisplayList(),
};
Gfx luigi_hair_sideburn_cap_on_dl[] = {
gsSPVertex(luigi_hair_sideburn_cap_on_dl_vertex + 0, 12, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(3, 4, 0, 0),
gsSP1Triangle(4, 5, 0, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 9, 7, 0),
gsSP1Triangle(10, 9, 6, 0),
gsSP1Triangle(11, 10, 6, 0),
gsSPEndDisplayList(),
};
Gfx luigi_mustache_cap_on_dl[] = {
gsSPVertex(luigi_mustache_cap_on_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 3, 2, 0),
gsSP1Triangle(4, 3, 1, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(3, 5, 7, 0),
gsSP1Triangle(3, 7, 8, 0),
gsSP1Triangle(8, 2, 3, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(12, 10, 9, 0),
gsSP1Triangle(9, 13, 12, 0),
gsSP1Triangle(13, 14, 12, 0),
gsSP1Triangle(15, 14, 13, 0),
gsSPVertex(luigi_mustache_cap_on_dl_vertex + 16, 5, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(1, 3, 4, 0),
gsSPEndDisplayList(),
};
Gfx luigi_face_part_cap_on_dl[] = {
gsSPVertex(luigi_face_part_cap_on_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(0, 4, 3, 0),
gsSP1Triangle(3, 5, 1, 0),
gsSP1Triangle(6, 5, 3, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 10, 8, 0),
gsSP1Triangle(11, 10, 7, 0),
gsSP1Triangle(11, 12, 10, 0),
gsSP1Triangle(11, 13, 12, 0),
gsSP1Triangle(11, 14, 13, 0),
gsSP1Triangle(12, 13, 15, 0),
gsSPVertex(luigi_face_part_cap_on_dl_vertex + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(4, 2, 3, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(5, 6, 4, 0),
gsSP1Triangle(2, 4, 6, 0),
gsSP1Triangle(0, 2, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(8, 11, 10, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(13, 9, 10, 0),
gsSP1Triangle(13, 14, 9, 0),
gsSP1Triangle(13, 10, 15, 0),
gsSPVertex(luigi_face_part_cap_on_dl_vertex + 32, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(3, 4, 1, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(6, 1, 4, 0),
gsSP1Triangle(1, 6, 2, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(8, 7, 10, 0),
gsSP1Triangle(10, 7, 11, 0),
gsSP1Triangle(12, 11, 7, 0),
gsSP1Triangle(13, 10, 11, 0),
gsSPVertex(luigi_face_part_cap_on_dl_vertex + 46, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(0, 4, 3, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(6, 4, 7, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(9, 8, 7, 0),
gsSP1Triangle(10, 8, 9, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(10, 12, 11, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(12, 14, 13, 0),
gsSP1Triangle(14, 12, 15, 0),
gsSP1Triangle(15, 1, 14, 0),
gsSP1Triangle(2, 1, 15, 0),
gsSPVertex(luigi_face_part_cap_on_dl_vertex + 62, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 3, 2, 0),
gsSP1Triangle(4, 3, 1, 0),
gsSP1Triangle(5, 3, 4, 0),
gsSP1Triangle(5, 4, 6, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(8, 7, 6, 0),
gsSP1Triangle(9, 8, 6, 0),
gsSP1Triangle(9, 10, 8, 0),
gsSP1Triangle(10, 11, 8, 0),
gsSP1Triangle(11, 10, 12, 0),
gsSP1Triangle(13, 11, 12, 0),
gsSP1Triangle(13, 12, 14, 0),
gsSP1Triangle(15, 13, 14, 0),
gsSP1Triangle(14, 2, 15, 0),
gsSP1Triangle(14, 0, 2, 0),
gsSPVertex(luigi_face_part_cap_on_dl_vertex + 78, 10, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(2, 3, 4, 0),
gsSP1Triangle(2, 4, 5, 0),
gsSP1Triangle(6, 2, 5, 0),
gsSP1Triangle(7, 6, 5, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(9, 6, 8, 0),
gsSP1Triangle(9, 0, 6, 0),
gsSP1Triangle(6, 0, 2, 0),
gsSPEndDisplayList(),
};
Gfx luigi_face_cap_dl[] = {
gsSPVertex(luigi_face_cap_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(4, 3, 0, 0),
gsSP1Triangle(4, 0, 2, 0),
gsSP1Triangle(5, 4, 2, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(6, 5, 7, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(4, 6, 8, 0),
gsSP1Triangle(4, 8, 3, 0),
gsSP1Triangle(9, 1, 10, 0),
gsSP1Triangle(11, 1, 9, 0),
gsSP1Triangle(12, 11, 9, 0),
gsSP1Triangle(13, 12, 9, 0),
gsSP1Triangle(9, 14, 13, 0),
gsSP1Triangle(10, 14, 9, 0),
gsSP1Triangle(14, 10, 15, 0),
gsSPVertex(luigi_face_cap_dl_vertex + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(4, 1, 3, 0),
gsSP1Triangle(3, 5, 4, 0),
gsSP1Triangle(5, 6, 4, 0),
gsSP1Triangle(7, 4, 6, 0),
gsSP1Triangle(7, 6, 8, 0),
gsSP1Triangle(8, 9, 7, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSP1Triangle(9, 11, 10, 0),
gsSP1Triangle(9, 12, 11, 0),
gsSP1Triangle(12, 13, 11, 0),
gsSP1Triangle(12, 14, 13, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(luigi_face_cap_dl_vertex + 32, 11, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(1, 3, 4, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(6, 5, 3, 0),
gsSP1Triangle(7, 5, 6, 0),
gsSP1Triangle(8, 5, 7, 0),
gsSP1Triangle(5, 8, 9, 0),
gsSP1Triangle(4, 5, 9, 0),
gsSP1Triangle(4, 9, 10, 0),
gsSP1Triangle(4, 10, 2, 0),
gsSP1Triangle(1, 4, 2, 0),
gsSPEndDisplayList(),
};
Gfx luigi_face_back_hair_cap_on_dl[] = {
gsSPVertex(luigi_face_back_hair_cap_on_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(1, 4, 3, 0),
gsSP1Triangle(1, 5, 4, 0),
gsSP1Triangle(6, 5, 1, 0),
gsSP1Triangle(6, 7, 5, 0),
gsSP1Triangle(6, 8, 7, 0),
gsSP1Triangle(9, 8, 6, 0),
gsSP1Triangle(9, 6, 10, 0),
gsSP1Triangle(9, 11, 8, 0),
gsSP1Triangle(12, 11, 9, 0),
gsSP1Triangle(12, 13, 11, 0),
gsSP1Triangle(13, 12, 5, 0),
gsSP1Triangle(7, 13, 5, 0),
gsSP1Triangle(13, 7, 14, 0),
gsSP1Triangle(7, 8, 14, 0),
gsSP1Triangle(8, 11, 14, 0),
gsSP1Triangle(11, 13, 14, 0),
gsSP1Triangle(2, 3, 15, 0),
gsSPVertex(luigi_face_back_hair_cap_on_dl_vertex + 16, 8, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(0, 3, 4, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(6, 4, 5, 0),
gsSP1Triangle(6, 1, 4, 0),
gsSP1Triangle(6, 7, 1, 0),
gsSP1Triangle(0, 4, 1, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_hair_sideburn_decal_cap_on[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, COMBINED, 0, 0, 0, COMBINED),
gsDPSetCycleType(G_CYC_2CYCLE),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 11),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_hair_sideburn),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_add_sideburn),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 256, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 124),
gsSPDisplayList(luigi_hair_sideburn_cap_on_dl),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPCopyLightsPlayerPart(SKIN),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_skin_sideburn),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsSPDisplayList(luigi_hair_sideburn_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPEndDisplayList(),
};
const Gfx luigi_l_logo_decal[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, SHADE, TEXEL1, SHADE, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, SHADE, TEXEL1, SHADE, TEXEL0, 0, ENVIRONMENT, 0),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 17),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_l_logo),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_l_blend),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 256, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 124),
gsSPDisplayList(luigi_l_logo_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, TEXEL1, 0, ENVIRONMENT, 0, TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, TEXEL1, 0, ENVIRONMENT, 0),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPCopyLightsPlayerPart(CAP),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_l_logo),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_l_cap),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 256, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 124),
gsSPDisplayList(luigi_l_logo_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPEndDisplayList(),
};
const Gfx luigi_face_cap_on_dl[] = {
gsSPDisplayList(luigi_face_part_cap_on_dl),
gsSPCopyLightsPlayerPart(CAP),
gsSPDisplayList(luigi_face_cap_dl),
gsSPCopyLightsPlayerPart(HAIR),
gsSPDisplayList(luigi_face_back_hair_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_on_eyes_front[] = {
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, luigi_texture_eyes_front),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_on_eyes_half_closed[] = {
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, luigi_texture_eyes_half_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_on_eyes_closed[] = {
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, luigi_texture_eyes_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_on_eyes_right[] = {
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, luigi_texture_eyes_right),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_on_eyes_left[] = {
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, luigi_texture_eyes_left),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_on_eyes_up[] = {
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, luigi_texture_eyes_up),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_on_eyes_down[] = {
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, luigi_texture_eyes_down),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_on_eyes_dead[] = {
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, luigi_texture_eyes_dead),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_on_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_cap_on_shared_dl[] = {
gsSPDisplayList(luigi_l_logo_dl),
gsSPDisplayList(luigi_eyes_cap_on_dl),
gsSPDisplayList(luigi_hair_sideburn_cap_on_dl),
gsSPDisplayList(luigi_mustache_cap_on_dl),
gsSPDisplayList(luigi_face_part_cap_on_dl),
gsSPDisplayList(luigi_face_cap_dl),
gsSPDisplayList(luigi_face_back_hair_cap_on_dl),
gsSPEndDisplayList(),
};
Vtx luigi_eyes_cap_off_dl_vertex[12] = {
{{ {78, 89, -20}, 0, {282, 1028}, {67, 68, 173, 255} }},
{{ {135, 74, -54}, 0, {-84, 412}, {25, 91, 171, 255} }},
{{ {94, 76, -56}, 0, {-98, 860}, {17, 100, 180, 255} }},
{{ {166, 84, -26}, 0, {202, 68}, {25, 117, 214, 255} }},
{{ {135, 91, 0}, 0, {480, 402}, {10, 127, 0, 255} }},
{{ {88, 92, 0}, 0, {488, 916}, {97, 82, 0, 255} }},
{{ {78, 89, 20}, 0, {700, 1020}, {70, 67, 82, 255} }},
{{ {166, 84, 27}, 0, {756, 60}, {25, 118, 41, 255} }},
{{ {135, 74, 55}, 0, {1054, 392}, {25, 91, 85, 255} }},
{{ {94, 76, 57}, 0, {1084, 840}, {17, 101, 76, 255} }},
{{ {147, 31, 77}, 0, {1282, 258}, {0, 55, 115, 255} }},
{{ {147, 31, -76}, 0, {-318, 286}, {246, 51, 140, 255} }},
};
Vtx luigi_hair_sideburn_cap_off_dl_vertex[12] = {
{{ {88, 42, -76}, 0, {-70, 700}, {7, 42, 136, 255} }},
{{ {147, 31, -76}, 0, {90, -58}, {246, 51, 140, 255} }},
{{ {115, -12, -91}, 0, {916, 184}, {255, 17, 130, 255} }},
{{ {80, -24, -92}, 0, {1150, 582}, {0, 89, 165, 255} }},
{{ {32, -5, -84}, 0, {842, 1210}, {187, 248, 149, 255} }},
{{ {34, 34, -78}, 0, {118, 1334}, {213, 31, 140, 255} }},
{{ {88, 42, 77}, 0, {-74, 726}, {6, 43, 119, 255} }},
{{ {115, -11, 93}, 0, {922, 122}, {254, 18, 126, 255} }},
{{ {147, 31, 77}, 0, {22, -68}, {0, 55, 115, 255} }},
{{ {80, -24, 93}, 0, {1238, 518}, {254, 89, 91, 255} }},
{{ {32, -5, 85}, 0, {968, 1192}, {187, 248, 107, 255} }},
{{ {34, 34, 79}, 0, {196, 1366}, {213, 31, 116, 255} }},
};
Vtx luigi_mustache_cap_off_dl_vertex[21] = {
{{ {78, 89, 20}, 0, {248, 50}, {70, 67, 82, 255} }},
{{ {58, 93, 28}, 0, {330, 316}, {20, 35, 120, 255} }},
{{ {66, 76, 68}, 0, {948, -8}, {7, 85, 94, 255} }},
{{ {35, 79, 58}, 0, {784, 566}, {211, 87, 81, 255} }},
{{ {35, 94, 27}, 0, {292, 670}, {183, 45, 94, 255} }},
{{ {13, 83, 24}, 0, {336, 1006}, {173, 91, 31, 255} }},
{{ {24, 91, 0}, 0, {-30, 876}, {139, 50, 0, 255} }},
{{ {-7, 40, 43}, 0, {768, 1210}, {147, 20, 62, 255} }},
{{ {34, 34, 79}, 0, {1276, 438}, {213, 31, 116, 255} }},
{{ {35, 94, -26}, 0, {294, 656}, {184, 46, 162, 255} }},
{{ {13, 83, -24}, 0, {310, 1002}, {174, 91, 224, 255} }},
{{ {24, 91, 0}, 0, {-38, 852}, {139, 50, 0, 255} }},
{{ {35, 79, -57}, 0, {780, 576}, {211, 86, 174, 255} }},
{{ {58, 93, -27}, 0, {360, 296}, {18, 35, 135, 255} }},
{{ {66, 76, -67}, 0, {992, -10}, {7, 85, 162, 255} }},
{{ {78, 89, -20}, 0, {322, -20}, {67, 68, 173, 255} }},
{{ {34, 34, -78}, 0, {1272, 464}, {213, 31, 140, 255} }},
{{ {35, 79, -57}, 0, {780, 576}, {211, 86, 174, 255} }},
{{ {66, 76, -67}, 0, {992, -10}, {7, 85, 162, 255} }},
{{ {-7, 40, -42}, 0, {720, 1228}, {147, 19, 194, 255} }},
{{ {13, 83, -24}, 0, {310, 1002}, {174, 91, 224, 255} }},
};
Vtx luigi_face_part_cap_off_dl_vertex[88] = {
{{ {66, 76, 68}, 0, {0, 0}, {7, 85, 94, 255} }},
{{ {94, 76, 57}, 0, {0, 0}, {17, 101, 76, 255} }},
{{ {78, 89, 20}, 0, {0, 0}, {70, 67, 82, 255} }},
{{ {88, 42, 77}, 0, {0, 0}, {6, 43, 119, 255} }},
{{ {34, 34, 79}, 0, {0, 0}, {213, 31, 116, 255} }},
{{ {135, 74, 55}, 0, {0, 0}, {25, 91, 85, 255} }},
{{ {147, 31, 77}, 0, {0, 0}, {0, 55, 115, 255} }},
{{ {13, 83, -24}, 0, {0, 0}, {174, 91, 224, 255} }},
{{ {13, 83, 24}, 0, {0, 0}, {173, 91, 31, 255} }},
{{ {24, 91, 0}, 0, {0, 0}, {139, 50, 0, 255} }},
{{ {-19, 46, 0}, 0, {0, 0}, {131, 25, 0, 255} }},
{{ {-7, 40, -42}, 0, {0, 0}, {147, 19, 194, 255} }},
{{ {12, -51, -34}, 0, {0, 0}, {132, 0, 227, 255} }},
{{ {32, -5, -84}, 0, {0, 0}, {187, 248, 149, 255} }},
{{ {34, 34, -78}, 0, {0, 0}, {213, 31, 140, 255} }},
{{ {51, -44, -64}, 0, {0, 0}, {208, 194, 156, 255} }},
{{ {51, -44, -64}, 0, {0, 0}, {208, 194, 156, 255} }},
{{ {32, -5, -84}, 0, {0, 0}, {187, 248, 149, 255} }},
{{ {57, -27, -110}, 0, {0, 0}, {217, 254, 135, 255} }},
{{ {80, -24, -92}, 0, {0, 0}, {0, 89, 165, 255} }},
{{ {95, -31, -110}, 0, {0, 0}, {43, 243, 137, 255} }},
{{ {115, -12, -91}, 0, {0, 0}, {255, 17, 130, 255} }},
{{ {88, -51, -73}, 0, {0, 0}, {224, 184, 156, 255} }},
{{ {13, 83, 24}, 0, {0, 0}, {173, 91, 31, 255} }},
{{ {-19, 46, 0}, 0, {0, 0}, {131, 25, 0, 255} }},
{{ {-7, 40, 43}, 0, {0, 0}, {147, 20, 62, 255} }},
{{ {12, -51, 35}, 0, {0, 0}, {133, 0, 30, 255} }},
{{ {12, -51, -34}, 0, {0, 0}, {132, 0, 227, 255} }},
{{ {26, -79, 0}, 0, {0, 0}, {160, 172, 0, 255} }},
{{ {32, -5, 85}, 0, {0, 0}, {187, 248, 107, 255} }},
{{ {34, 34, 79}, 0, {0, 0}, {213, 31, 116, 255} }},
{{ {51, -44, 65}, 0, {0, 0}, {208, 193, 100, 255} }},
{{ {51, -44, 65}, 0, {0, 0}, {208, 193, 100, 255} }},
{{ {57, -27, 111}, 0, {0, 0}, {217, 254, 121, 255} }},
{{ {32, -5, 85}, 0, {0, 0}, {187, 248, 107, 255} }},
{{ {88, -51, 74}, 0, {0, 0}, {224, 183, 99, 255} }},
{{ {95, -31, 111}, 0, {0, 0}, {42, 241, 119, 255} }},
{{ {115, -11, 93}, 0, {0, 0}, {254, 18, 126, 255} }},
{{ {80, -24, 93}, 0, {0, 0}, {254, 89, 91, 255} }},
{{ {88, 42, -76}, 0, {0, 0}, {7, 42, 136, 255} }},
{{ {135, 74, -54}, 0, {0, 0}, {25, 91, 171, 255} }},
{{ {147, 31, -76}, 0, {0, 0}, {246, 51, 140, 255} }},
{{ {94, 76, -56}, 0, {0, 0}, {17, 100, 180, 255} }},
{{ {66, 76, -67}, 0, {0, 0}, {7, 85, 162, 255} }},
{{ {34, 34, -78}, 0, {0, 0}, {213, 31, 140, 255} }},
{{ {78, 89, -20}, 0, {0, 0}, {67, 68, 173, 255} }},
{{ {35, 94, 27}, 0, {0, 0}, {183, 45, 94, 255} }},
{{ {15, 111, 0}, 0, {0, 0}, {132, 230, 254, 255} }},
{{ {24, 91, 0}, 0, {0, 0}, {139, 50, 0, 255} }},
{{ {29, 112, 36}, 0, {0, 0}, {179, 226, 96, 255} }},
{{ {58, 93, 28}, 0, {0, 0}, {20, 35, 120, 255} }},
{{ {55, 112, 41}, 0, {0, 0}, {255, 220, 122, 255} }},
{{ {81, 112, 36}, 0, {0, 0}, {75, 223, 97, 255} }},
{{ {78, 89, 20}, 0, {0, 0}, {70, 67, 82, 255} }},
{{ {96, 113, 0}, 0, {0, 0}, {125, 234, 0, 255} }},
{{ {88, 92, 0}, 0, {0, 0}, {97, 82, 0, 255} }},
{{ {78, 89, -20}, 0, {0, 0}, {67, 68, 173, 255} }},
{{ {81, 112, -35}, 0, {0, 0}, {75, 224, 158, 255} }},
{{ {58, 93, -27}, 0, {0, 0}, {18, 35, 135, 255} }},
{{ {55, 112, -40}, 0, {0, 0}, {255, 220, 134, 255} }},
{{ {29, 112, -35}, 0, {0, 0}, {178, 228, 160, 255} }},
{{ {35, 94, -26}, 0, {0, 0}, {184, 46, 162, 255} }},
{{ {29, 112, -35}, 0, {0, 0}, {178, 228, 160, 255} }},
{{ {15, 111, 0}, 0, {0, 0}, {132, 230, 254, 255} }},
{{ {32, 141, -35}, 0, {0, 0}, {191, 64, 167, 255} }},
{{ {15, 141, 0}, 0, {0, 0}, {142, 56, 254, 255} }},
{{ {29, 112, 36}, 0, {0, 0}, {179, 226, 96, 255} }},
{{ {32, 141, 36}, 0, {0, 0}, {193, 65, 89, 255} }},
{{ {55, 112, 41}, 0, {0, 0}, {255, 220, 122, 255} }},
{{ {58, 141, 41}, 0, {0, 0}, {0, 67, 108, 255} }},
{{ {82, 142, 36}, 0, {0, 0}, {69, 61, 88, 255} }},
{{ {81, 112, 36}, 0, {0, 0}, {75, 223, 97, 255} }},
{{ {96, 113, 0}, 0, {0, 0}, {125, 234, 0, 255} }},
{{ {96, 142, 0}, 0, {0, 0}, {117, 50, 255, 255} }},
{{ {81, 112, -35}, 0, {0, 0}, {75, 224, 158, 255} }},
{{ {82, 142, -35}, 0, {0, 0}, {69, 60, 168, 255} }},
{{ {55, 112, -40}, 0, {0, 0}, {255, 220, 134, 255} }},
{{ {58, 141, -40}, 0, {0, 0}, {0, 66, 147, 255} }},
{{ {58, 141, -40}, 0, {0, 0}, {0, 66, 147, 255} }},
{{ {32, 141, -35}, 0, {0, 0}, {191, 64, 167, 255} }},
{{ {39, 156, 0}, 0, {0, 0}, {224, 123, 0, 255} }},
{{ {15, 141, 0}, 0, {0, 0}, {142, 56, 254, 255} }},
{{ {32, 141, 36}, 0, {0, 0}, {193, 65, 89, 255} }},
{{ {58, 141, 41}, 0, {0, 0}, {0, 67, 108, 255} }},
{{ {77, 157, 0}, 0, {0, 0}, {35, 122, 0, 255} }},
{{ {82, 142, 36}, 0, {0, 0}, {69, 61, 88, 255} }},
{{ {96, 142, 0}, 0, {0, 0}, {117, 50, 255, 255} }},
{{ {82, 142, -35}, 0, {0, 0}, {69, 60, 168, 255} }},
};
Vtx luigi_face_hair_cap_off_dl_vertex[95] = {
{{ {-3, -81, 44}, 0, {0, 0}, {129, 11, 1, 255} }},
{{ {12, -51, 35}, 0, {0, 0}, {133, 0, 30, 255} }},
{{ {26, -79, 0}, 0, {0, 0}, {160, 172, 0, 255} }},
{{ {19, -78, 73}, 0, {0, 0}, {226, 4, 123, 255} }},
{{ {5, -113, 53}, 0, {0, 0}, {185, 158, 40, 255} }},
{{ {24, -109, 21}, 0, {0, 0}, {239, 156, 179, 255} }},
{{ {62, -96, 42}, 0, {0, 0}, {243, 147, 64, 255} }},
{{ {62, -96, -42}, 0, {0, 0}, {243, 147, 191, 255} }},
{{ {24, -109, -21}, 0, {0, 0}, {239, 156, 77, 255} }},
{{ {-3, -81, -44}, 0, {0, 0}, {129, 11, 255, 255} }},
{{ {12, -51, -34}, 0, {0, 0}, {132, 0, 227, 255} }},
{{ {19, -78, -73}, 0, {0, 0}, {227, 5, 132, 255} }},
{{ {51, -44, -64}, 0, {0, 0}, {208, 194, 156, 255} }},
{{ {46, -107, -45}, 0, {0, 0}, {60, 152, 215, 255} }},
{{ {88, -51, -73}, 0, {0, 0}, {224, 184, 156, 255} }},
{{ {142, -81, -92}, 0, {0, 0}, {0, 206, 139, 255} }},
{{ {142, -81, -92}, 0, {0, 0}, {0, 206, 139, 255} }},
{{ {88, -51, -73}, 0, {0, 0}, {224, 184, 156, 255} }},
{{ {115, -12, -91}, 0, {0, 0}, {255, 17, 130, 255} }},
{{ {176, -9, -97}, 0, {0, 0}, {39, 5, 135, 255} }},
{{ {147, 31, -76}, 0, {0, 0}, {246, 51, 140, 255} }},
{{ {191, 61, -79}, 0, {0, 0}, {27, 59, 147, 255} }},
{{ {142, 63, -57}, 0, {0, 0}, {222, 89, 172, 255} }},
{{ {166, 84, -26}, 0, {0, 0}, {196, 92, 193, 255} }},
{{ {202, 84, -59}, 0, {0, 0}, {15, 71, 152, 255} }},
{{ {192, 116, -13}, 0, {0, 0}, {245, 127, 254, 255} }},
{{ {151, 87, 0}, 0, {0, 0}, {184, 105, 5, 255} }},
{{ {166, 84, 27}, 0, {0, 0}, {224, 107, 60, 255} }},
{{ {200, 79, 48}, 0, {0, 0}, {34, 95, 77, 255} }},
{{ {191, 66, 66}, 0, {0, 0}, {26, 77, 98, 255} }},
{{ {142, 63, 58}, 0, {0, 0}, {236, 86, 92, 255} }},
{{ {147, 31, 77}, 0, {0, 0}, {0, 55, 115, 255} }},
{{ {147, 31, 77}, 0, {0, 0}, {0, 55, 115, 255} }},
{{ {175, -9, 98}, 0, {0, 0}, {39, 8, 121, 255} }},
{{ {191, 66, 66}, 0, {0, 0}, {26, 77, 98, 255} }},
{{ {115, -11, 93}, 0, {0, 0}, {254, 18, 126, 255} }},
{{ {142, -80, 93}, 0, {0, 0}, {0, 206, 117, 255} }},
{{ {88, -51, 74}, 0, {0, 0}, {224, 183, 99, 255} }},
{{ {62, -96, 42}, 0, {0, 0}, {243, 147, 64, 255} }},
{{ {51, -44, 65}, 0, {0, 0}, {208, 193, 100, 255} }},
{{ {46, -107, 45}, 0, {0, 0}, {60, 152, 41, 255} }},
{{ {19, -78, 73}, 0, {0, 0}, {226, 4, 123, 255} }},
{{ {12, -51, 35}, 0, {0, 0}, {133, 0, 30, 255} }},
{{ {5, -113, 53}, 0, {0, 0}, {185, 158, 40, 255} }},
{{ {24, -109, 21}, 0, {0, 0}, {239, 156, 179, 255} }},
{{ {62, -96, -42}, 0, {0, 0}, {243, 147, 191, 255} }},
{{ {24, -109, -21}, 0, {0, 0}, {239, 156, 77, 255} }},
{{ {46, -107, -45}, 0, {0, 0}, {60, 152, 215, 255} }},
{{ {5, -113, -53}, 0, {0, 0}, {185, 158, 216, 255} }},
{{ {46, -107, -45}, 0, {0, 0}, {60, 152, 215, 255} }},
{{ {24, -109, -21}, 0, {0, 0}, {239, 156, 77, 255} }},
{{ {-3, -81, -44}, 0, {0, 0}, {129, 11, 255, 255} }},
{{ {19, -78, -73}, 0, {0, 0}, {227, 5, 132, 255} }},
{{ {175, -9, 98}, 0, {0, 0}, {39, 8, 121, 255} }},
{{ {218, 28, 63}, 0, {0, 0}, {102, 14, 74, 255} }},
{{ {191, 66, 66}, 0, {0, 0}, {26, 77, 98, 255} }},
{{ {221, -14, 49}, 0, {0, 0}, {112, 240, 58, 255} }},
{{ {186, -99, 63}, 0, {0, 0}, {71, 176, 68, 255} }},
{{ {142, -80, 93}, 0, {0, 0}, {0, 206, 117, 255} }},
{{ {114, -119, 58}, 0, {0, 0}, {233, 149, 64, 255} }},
{{ {62, -96, 42}, 0, {0, 0}, {243, 147, 64, 255} }},
{{ {117, -127, 0}, 0, {0, 0}, {242, 130, 255, 255} }},
{{ {62, -96, -42}, 0, {0, 0}, {243, 147, 191, 255} }},
{{ {114, -117, -58}, 0, {0, 0}, {233, 149, 191, 255} }},
{{ {142, -81, -92}, 0, {0, 0}, {0, 206, 139, 255} }},
{{ {114, -117, -58}, 0, {0, 0}, {233, 149, 191, 255} }},
{{ {62, -96, -42}, 0, {0, 0}, {243, 147, 191, 255} }},
{{ {186, -99, -62}, 0, {0, 0}, {71, 175, 188, 255} }},
{{ {176, -9, -97}, 0, {0, 0}, {39, 5, 135, 255} }},
{{ {221, -14, -49}, 0, {0, 0}, {112, 245, 196, 255} }},
{{ {212, 28, -61}, 0, {0, 0}, {106, 7, 186, 255} }},
{{ {191, 61, -79}, 0, {0, 0}, {27, 59, 147, 255} }},
{{ {202, 84, -59}, 0, {0, 0}, {15, 71, 152, 255} }},
{{ {223, 62, -34}, 0, {0, 0}, {113, 226, 206, 255} }},
{{ {239, 97, -43}, 0, {0, 0}, {101, 52, 199, 255} }},
{{ {192, 116, -13}, 0, {0, 0}, {245, 127, 254, 255} }},
{{ {200, 79, 48}, 0, {0, 0}, {34, 95, 77, 255} }},
{{ {222, 74, 33}, 0, {0, 0}, {100, 59, 52, 255} }},
{{ {218, 28, 63}, 0, {0, 0}, {102, 14, 74, 255} }},
{{ {191, 66, 66}, 0, {0, 0}, {26, 77, 98, 255} }},
{{ {218, 28, 63}, 0, {0, 0}, {102, 14, 74, 255} }},
{{ {228, 57, 0}, 0, {0, 0}, {127, 250, 4, 255} }},
{{ {222, 74, 33}, 0, {0, 0}, {100, 59, 52, 255} }},
{{ {221, -14, 49}, 0, {0, 0}, {112, 240, 58, 255} }},
{{ {235, -34, 0}, 0, {0, 0}, {125, 232, 0, 255} }},
{{ {186, -99, 63}, 0, {0, 0}, {71, 176, 68, 255} }},
{{ {198, -110, 0}, 0, {0, 0}, {80, 157, 0, 255} }},
{{ {114, -119, 58}, 0, {0, 0}, {233, 149, 64, 255} }},
{{ {117, -127, 0}, 0, {0, 0}, {242, 130, 255, 255} }},
{{ {114, -117, -58}, 0, {0, 0}, {233, 149, 191, 255} }},
{{ {186, -99, -62}, 0, {0, 0}, {71, 175, 188, 255} }},
{{ {221, -14, -49}, 0, {0, 0}, {112, 245, 196, 255} }},
{{ {212, 28, -61}, 0, {0, 0}, {106, 7, 186, 255} }},
{{ {223, 62, -34}, 0, {0, 0}, {113, 226, 206, 255} }},
{{ {239, 97, -43}, 0, {0, 0}, {101, 52, 199, 255} }},
};
Gfx luigi_eyes_cap_off_dl[] = {
gsSPVertex(luigi_eyes_cap_off_dl_vertex + 0, 12, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(4, 3, 0, 0),
gsSP1Triangle(5, 4, 0, 0),
gsSP1Triangle(5, 6, 4, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(7, 6, 8, 0),
gsSP1Triangle(9, 8, 6, 0),
gsSP1Triangle(7, 8, 10, 0),
gsSP1Triangle(3, 11, 1, 0),
gsSP1Triangle(4, 7, 3, 0),
gsSPEndDisplayList(),
};
Gfx luigi_mustache_cap_off_dl[] = {
gsSPVertex(luigi_mustache_cap_off_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 3, 2, 0),
gsSP1Triangle(4, 3, 1, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(3, 5, 7, 0),
gsSP1Triangle(3, 7, 8, 0),
gsSP1Triangle(8, 2, 3, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(12, 10, 9, 0),
gsSP1Triangle(9, 13, 12, 0),
gsSP1Triangle(13, 14, 12, 0),
gsSP1Triangle(15, 14, 13, 0),
gsSPVertex(luigi_mustache_cap_off_dl_vertex + 16, 5, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(1, 3, 4, 0),
gsSPEndDisplayList(),
};
Gfx luigi_hair_sideburn_cap_off_dl[] = {
gsSPVertex(luigi_hair_sideburn_cap_off_dl_vertex + 0, 12, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(3, 4, 0, 0),
gsSP1Triangle(4, 5, 0, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 9, 7, 0),
gsSP1Triangle(10, 9, 6, 0),
gsSP1Triangle(11, 10, 6, 0),
gsSPEndDisplayList(),
};
Gfx luigi_face_part_cap_off_dl[] = {
gsSPVertex(luigi_face_part_cap_off_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(0, 4, 3, 0),
gsSP1Triangle(3, 5, 1, 0),
gsSP1Triangle(6, 5, 3, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 10, 8, 0),
gsSP1Triangle(11, 10, 7, 0),
gsSP1Triangle(11, 12, 10, 0),
gsSP1Triangle(11, 13, 12, 0),
gsSP1Triangle(11, 14, 13, 0),
gsSP1Triangle(12, 13, 15, 0),
gsSPVertex(luigi_face_part_cap_off_dl_vertex + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(4, 2, 3, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(5, 6, 4, 0),
gsSP1Triangle(2, 4, 6, 0),
gsSP1Triangle(0, 2, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(8, 11, 10, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(13, 9, 10, 0),
gsSP1Triangle(13, 14, 9, 0),
gsSP1Triangle(13, 10, 15, 0),
gsSPVertex(luigi_face_part_cap_off_dl_vertex + 32, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(3, 4, 1, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(6, 1, 4, 0),
gsSP1Triangle(1, 6, 2, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(8, 7, 10, 0),
gsSP1Triangle(10, 7, 11, 0),
gsSP1Triangle(12, 11, 7, 0),
gsSP1Triangle(13, 10, 11, 0),
gsSPVertex(luigi_face_part_cap_off_dl_vertex + 46, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(0, 4, 3, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(6, 4, 7, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(9, 8, 7, 0),
gsSP1Triangle(10, 8, 9, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(10, 12, 11, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(12, 14, 13, 0),
gsSP1Triangle(14, 12, 15, 0),
gsSP1Triangle(15, 1, 14, 0),
gsSP1Triangle(2, 1, 15, 0),
gsSPVertex(luigi_face_part_cap_off_dl_vertex + 62, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 3, 2, 0),
gsSP1Triangle(4, 3, 1, 0),
gsSP1Triangle(5, 3, 4, 0),
gsSP1Triangle(5, 4, 6, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(8, 7, 6, 0),
gsSP1Triangle(9, 8, 6, 0),
gsSP1Triangle(9, 10, 8, 0),
gsSP1Triangle(10, 11, 8, 0),
gsSP1Triangle(11, 10, 12, 0),
gsSP1Triangle(13, 11, 12, 0),
gsSP1Triangle(13, 12, 14, 0),
gsSP1Triangle(15, 13, 14, 0),
gsSP1Triangle(14, 2, 15, 0),
gsSP1Triangle(14, 0, 2, 0),
gsSPVertex(luigi_face_part_cap_off_dl_vertex + 78, 10, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(2, 3, 4, 0),
gsSP1Triangle(2, 4, 5, 0),
gsSP1Triangle(6, 2, 5, 0),
gsSP1Triangle(7, 6, 5, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(9, 6, 8, 0),
gsSP1Triangle(9, 0, 6, 0),
gsSP1Triangle(6, 0, 2, 0),
gsSPEndDisplayList(),
};
Gfx luigi_face_hair_cap_off_dl[] = {
gsSPVertex(luigi_face_hair_cap_off_dl_vertex + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(3, 0, 4, 0),
gsSP1Triangle(0, 5, 4, 0),
gsSP1Triangle(5, 0, 2, 0),
gsSP1Triangle(6, 5, 2, 0),
gsSP1Triangle(6, 2, 7, 0),
gsSP1Triangle(7, 2, 8, 0),
gsSP1Triangle(9, 8, 2, 0),
gsSP1Triangle(10, 9, 2, 0),
gsSP1Triangle(10, 11, 9, 0),
gsSP1Triangle(10, 12, 11, 0),
gsSP1Triangle(12, 13, 11, 0),
gsSP1Triangle(12, 7, 13, 0),
gsSP1Triangle(14, 7, 12, 0),
gsSP1Triangle(14, 15, 7, 0),
gsSPVertex(luigi_face_hair_cap_off_dl_vertex + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(2, 4, 3, 0),
gsSP1Triangle(4, 5, 3, 0),
gsSP1Triangle(5, 4, 6, 0),
gsSP1Triangle(7, 5, 6, 0),
gsSP1Triangle(5, 7, 8, 0),
gsSP1Triangle(8, 7, 9, 0),
gsSP1Triangle(7, 10, 9, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(12, 9, 11, 0),
gsSP1Triangle(11, 13, 12, 0),
gsSP1Triangle(11, 14, 13, 0),
gsSP1Triangle(15, 13, 14, 0),
gsSPVertex(luigi_face_hair_cap_off_dl_vertex + 32, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(4, 1, 3, 0),
gsSP1Triangle(5, 4, 3, 0),
gsSP1Triangle(6, 4, 5, 0),
gsSP1Triangle(7, 6, 5, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(7, 9, 8, 0),
gsSP1Triangle(10, 9, 7, 0),
gsSP1Triangle(8, 9, 11, 0),
gsSP1Triangle(12, 8, 11, 0),
gsSP1Triangle(6, 8, 12, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(luigi_face_hair_cap_off_dl_vertex + 48, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(0, 3, 4, 0),
gsSP1Triangle(0, 4, 1, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(6, 5, 8, 0),
gsSP1Triangle(8, 5, 9, 0),
gsSP1Triangle(10, 9, 5, 0),
gsSP1Triangle(10, 11, 9, 0),
gsSP1Triangle(12, 11, 10, 0),
gsSP1Triangle(12, 13, 11, 0),
gsSP1Triangle(12, 14, 13, 0),
gsSP1Triangle(14, 15, 13, 0),
gsSPVertex(luigi_face_hair_cap_off_dl_vertex + 64, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(4, 3, 0, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(5, 4, 6, 0),
gsSP1Triangle(7, 6, 4, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(9, 8, 10, 0),
gsSP1Triangle(8, 11, 10, 0),
gsSP1Triangle(11, 12, 10, 0),
gsSP1Triangle(12, 13, 10, 0),
gsSP1Triangle(14, 13, 12, 0),
gsSP1Triangle(15, 14, 12, 0),
gsSPVertex(luigi_face_hair_cap_off_dl_vertex + 80, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(3, 4, 1, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(6, 4, 5, 0),
gsSP1Triangle(6, 5, 7, 0),
gsSP1Triangle(8, 6, 7, 0),
gsSP1Triangle(8, 9, 6, 0),
gsSP1Triangle(9, 10, 6, 0),
gsSP1Triangle(6, 10, 4, 0),
gsSP1Triangle(10, 11, 4, 0),
gsSP1Triangle(11, 1, 4, 0),
gsSP1Triangle(11, 12, 1, 0),
gsSP1Triangle(12, 13, 1, 0),
gsSP1Triangle(1, 13, 14, 0),
gsSP1Triangle(1, 14, 2, 0),
gsSPEndDisplayList(),
};
const Gfx luigi_hair_sideburn_decal_cap_off[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, COMBINED, 0, 0, 0, COMBINED),
gsDPSetCycleType(G_CYC_2CYCLE),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 11),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_hair_sideburn),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_add_sideburn),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 256, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 124),
gsSPDisplayList(luigi_hair_sideburn_cap_off_dl),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPCopyLightsPlayerPart(SKIN),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_skin_sideburn),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsSPDisplayList(luigi_hair_sideburn_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPEndDisplayList(),
};
const Gfx luigi_face_cap_off_dl[] = {
gsSPDisplayList(luigi_face_part_cap_off_dl),
gsSPCopyLightsPlayerPart(HAIR),
gsSPDisplayList(luigi_face_hair_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_off_eyes_front[] = {
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, luigi_texture_eyes_front),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_off_eyes_half_closed[] = {
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, luigi_texture_eyes_half_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_off_eyes_closed[] = {
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, luigi_texture_eyes_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_off_eyes_right[] = {
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, luigi_texture_eyes_right),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_off_eyes_left[] = {
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, luigi_texture_eyes_left),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_off_eyes_up[] = {
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, luigi_texture_eyes_up),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_off_eyes_down[] = {
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, luigi_texture_eyes_down),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_cap_off_eyes_dead[] = {
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, luigi_texture_eyes_dead),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPCopyLightsPlayerPart(SKIN),
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_mustache),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_face_cap_off_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_cap_off_shared_dl[] = {
gsSPDisplayList(luigi_eyes_cap_off_dl),
gsSPDisplayList(luigi_mustache_cap_off_dl),
gsSPDisplayList(luigi_hair_sideburn_cap_off_dl),
gsSPDisplayList(luigi_face_part_cap_off_dl),
gsSPDisplayList(luigi_face_hair_cap_off_dl),
gsSPEndDisplayList(),
};
// 0x04019538
ROM_ASSET_LOAD_VTX(luigi_left_hand_open_shared_dl_vertex_group1, 0x00114750, 78432, 0x00019538, 224);
// 0x04019618
ROM_ASSET_LOAD_VTX(luigi_left_hand_open_shared_dl_vertex_group2, 0x00114750, 78432, 0x00019618, 256);
// 0x04019718
ROM_ASSET_LOAD_VTX(luigi_left_hand_open_shared_dl_vertex_group3, 0x00114750, 78432, 0x00019718, 256);
// 0x04019818
ROM_ASSET_LOAD_VTX(luigi_left_hand_open_shared_dl_vertex_group4, 0x00114750, 78432, 0x00019818, 256);
// 0x04019918
ROM_ASSET_LOAD_VTX(luigi_left_hand_open_shared_dl_vertex_group5, 0x00114750, 78432, 0x00019918, 256);
// 0x04019A18
ROM_ASSET_LOAD_VTX(luigi_left_hand_open_shared_dl_vertex_group6, 0x00114750, 78432, 0x00019a18, 80);
// 0x04019A68 - 0x04019CA0
const Gfx luigi_left_hand_open_shared_dl[] = {
gsSPVertex(luigi_left_hand_open_shared_dl_vertex_group1, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 3, 7, 0x0),
gsSP2Triangles( 1, 0, 5, 0x0, 5, 4, 1, 0x0),
gsSP2Triangles( 5, 3, 6, 0x0, 8, 9, 10, 0x0),
gsSP2Triangles( 8, 11, 9, 0x0, 12, 13, 11, 0x0),
gsSPVertex(luigi_left_hand_open_shared_dl_vertex_group2, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 0, 10, 7, 0x0, 11, 10, 0, 0x0),
gsSP2Triangles(12, 13, 11, 0x0, 9, 8, 13, 0x0),
gsSP2Triangles( 7, 5, 8, 0x0, 10, 14, 7, 0x0),
gsSP2Triangles(11, 14, 10, 0x0, 13, 4, 11, 0x0),
gsSP2Triangles( 8, 5, 13, 0x0, 3, 15, 1, 0x0),
gsSPVertex(luigi_left_hand_open_shared_dl_vertex_group3, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 5, 3, 0x0, 6, 7, 8, 0x0),
gsSP2Triangles( 1, 9, 10, 0x0, 5, 11, 1, 0x0),
gsSP2Triangles(12, 13, 5, 0x0, 14, 9, 15, 0x0),
gsSP1Triangle( 4, 7, 12, 0x0),
gsSPVertex(luigi_left_hand_open_shared_dl_vertex_group4, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 7, 0, 2, 0x0),
gsSP2Triangles( 8, 6, 5, 0x0, 5, 9, 10, 0x0),
gsSP2Triangles(11, 3, 2, 0x0, 2, 12, 11, 0x0),
gsSP2Triangles( 3, 13, 9, 0x0, 6, 0, 7, 0x0),
gsSP2Triangles( 7, 4, 9, 0x0, 10, 14, 15, 0x0),
gsSP1Triangle(15, 14, 11, 0x0),
gsSPVertex(luigi_left_hand_open_shared_dl_vertex_group5, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 4, 3, 5, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 7, 6, 0, 0x0, 2, 8, 9, 0x0),
gsSP2Triangles( 4, 10, 8, 0x0, 11, 10, 4, 0x0),
gsSP2Triangles( 7, 12, 11, 0x0, 9, 12, 7, 0x0),
gsSP2Triangles( 6, 3, 1, 0x0, 6, 5, 3, 0x0),
gsSP2Triangles(11, 12, 13, 0x0, 14, 10, 11, 0x0),
gsSP2Triangles( 8, 10, 15, 0x0, 10, 14, 15, 0x0),
gsSPVertex(luigi_left_hand_open_shared_dl_vertex_group6, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSPEndDisplayList(),
};
const Gfx luigi_left_hand_open[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(GLOVES), // glove light, set in luigi_misc.c
gsSPDisplayList(luigi_left_hand_open_shared_dl),
gsSPEndDisplayList(),
};
// 0x04019CC0
ROM_ASSET_LOAD_VTX(luigi_right_hand_open_dl_vertex_group1, 0x00114750, 78432, 0x00019cc0, 224);
// 0x04019DA0
ROM_ASSET_LOAD_VTX(luigi_right_hand_open_dl_vertex_group2, 0x00114750, 78432, 0x00019da0, 256);
// 0x04019EA0
ROM_ASSET_LOAD_VTX(luigi_right_hand_open_dl_vertex_group3, 0x00114750, 78432, 0x00019ea0, 256);
// 0x04019FA0
ROM_ASSET_LOAD_VTX(luigi_right_hand_open_dl_vertex_group4, 0x00114750, 78432, 0x00019fa0, 256);
// 0x0401A0A0
ROM_ASSET_LOAD_VTX(luigi_right_hand_open_dl_vertex_group5, 0x00114750, 78432, 0x0001a0a0, 256);
// 0x0401A1A0
ROM_ASSET_LOAD_VTX(luigi_right_hand_open_dl_vertex_group6, 0x00114750, 78432, 0x0001a1a0, 80);
// 0x0401A1F0 - 0x0401A428
const Gfx luigi_right_hand_open_dl[] = {
gsSPVertex(luigi_right_hand_open_dl_vertex_group1, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 3, 4, 0x0),
gsSP2Triangles( 5, 2, 1, 0x0, 1, 6, 5, 0x0),
gsSP2Triangles( 4, 3, 5, 0x0, 8, 9, 10, 0x0),
gsSP2Triangles( 9, 11, 10, 0x0, 11, 12, 13, 0x0),
gsSPVertex(luigi_right_hand_open_dl_vertex_group2, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 9, 10, 2, 0x0, 2, 10, 11, 0x0),
gsSP2Triangles(11, 12, 13, 0x0, 12, 8, 7, 0x0),
gsSP2Triangles( 8, 5, 9, 0x0, 9, 14, 10, 0x0),
gsSP2Triangles(10, 14, 11, 0x0, 11, 6, 12, 0x0),
gsSP2Triangles(12, 5, 8, 0x0, 1, 15, 3, 0x0),
gsSPVertex(luigi_right_hand_open_dl_vertex_group3, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 6, 7, 8, 0x0),
gsSP2Triangles( 9, 10, 1, 0x0, 1, 11, 4, 0x0),
gsSP2Triangles( 4, 12, 13, 0x0, 14, 10, 15, 0x0),
gsSP1Triangle(13, 7, 5, 0x0),
gsSPVertex(luigi_right_hand_open_dl_vertex_group4, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 0, 2, 5, 0x0),
gsSP2Triangles( 7, 6, 8, 0x0, 9, 10, 7, 0x0),
gsSP2Triangles( 0, 4, 11, 0x0, 11, 12, 0, 0x0),
gsSP2Triangles(10, 13, 4, 0x0, 5, 2, 6, 0x0),
gsSP2Triangles(10, 3, 5, 0x0, 14, 15, 9, 0x0),
gsSP1Triangle(11, 15, 14, 0x0),
gsSPVertex(luigi_right_hand_open_dl_vertex_group5, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 5, 4, 3, 0x0, 6, 7, 5, 0x0),
gsSP2Triangles( 2, 7, 6, 0x0, 8, 9, 0, 0x0),
gsSP2Triangles( 9, 10, 3, 0x0, 3, 10, 11, 0x0),
gsSP2Triangles(11, 12, 6, 0x0, 6, 12, 8, 0x0),
gsSP2Triangles( 1, 4, 7, 0x0, 4, 5, 7, 0x0),
gsSP2Triangles(13, 12, 11, 0x0, 11, 10, 14, 0x0),
gsSP2Triangles(15, 10, 9, 0x0, 15, 14, 10, 0x0),
gsSPVertex(luigi_right_hand_open_dl_vertex_group6, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSPEndDisplayList(),
};
const Gfx luigi_right_hand_open[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(GLOVES), // glove light, set in luigi_misc.c
gsSPDisplayList(luigi_right_hand_open_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_right_hand_open[] = {
gsSPDisplayList(luigi_right_hand_open_dl),
gsDPPipeSync(),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),
gsSPEndDisplayList(),
};
// 0x0401A478
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_l_logo_dl_vertex, 0x00114750, 78432, 0x0001a478, 80);
// 0x0401A4C8
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_hand_position_dl_vertex_group1, 0x00114750, 78432, 0x0001a4c8, 240);
// 0x0401A5B8
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_hand_position_dl_vertex_group2, 0x00114750, 78432, 0x0001a5b8, 256);
// 0x0401A6B8
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_hand_position_dl_vertex_group3, 0x00114750, 78432, 0x0001a6b8, 224);
// 0x0401A798
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_top_dl_vertex_group1, 0x00114750, 78432, 0x0001a798, 240);
// 0x0401A888
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_top_dl_vertex_group2, 0x00114750, 78432, 0x0001a888, 256);
// 0x0401A988
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_top_dl_vertex_group3, 0x00114750, 78432, 0x0001a988, 256);
// 0x0401AA88
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_top_dl_vertex_group4, 0x00114750, 78432, 0x0001aa88, 128);
// 0x0401AB08
ROM_ASSET_LOAD_VTX(luigi_right_hand_cap_bottom_dl_vertex, 0x00114750, 78432, 0x0001ab08, 160);
// 0x0401ABA8 - 0x0401ABD0
const Gfx luigi_right_hand_cap_l_logo_dl[] = {
gsSPVertex(luigi_right_hand_cap_l_logo_dl_vertex, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP1Triangle( 1, 4, 3, 0x0),
gsSPEndDisplayList(),
};
// 0x0401ABD0 - 0x0401AD40
const Gfx luigi_right_hand_cap_top_dl[] = {
gsSPVertex(luigi_right_hand_cap_top_dl_vertex_group1, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 6, 2, 1, 0x0),
gsSP2Triangles( 2, 6, 4, 0x0, 7, 4, 8, 0x0),
gsSP2Triangles( 8, 4, 6, 0x0, 4, 9, 5, 0x0),
gsSP2Triangles( 4, 7, 9, 0x0, 5, 9, 10, 0x0),
gsSP2Triangles(11, 12, 13, 0x0, 13, 14, 11, 0x0),
gsSPVertex(luigi_right_hand_cap_top_dl_vertex_group2, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 0, 3, 1, 0x0, 5, 2, 1, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 0, 9, 3, 0x0),
gsSP2Triangles(10, 9, 0, 0x0, 11, 12, 2, 0x0),
gsSP2Triangles( 2, 5, 11, 0x0, 3, 9, 4, 0x0),
gsSP2Triangles(13, 14, 15, 0x0, 11, 5, 14, 0x0),
gsSP1Triangle( 7, 14, 5, 0x0),
gsSPVertex(luigi_right_hand_cap_top_dl_vertex_group3, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 7, 8, 9, 0x0, 7, 6, 8, 0x0),
gsSP2Triangles(10, 7, 9, 0x0, 11, 12, 9, 0x0),
gsSP2Triangles(10, 13, 14, 0x0, 12, 13, 10, 0x0),
gsSP1Triangle(13, 12, 15, 0x0),
gsSPVertex(luigi_right_hand_cap_top_dl_vertex_group4, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 3, 5, 6, 0x0),
gsSP1Triangle( 7, 0, 2, 0x0),
gsSPEndDisplayList(),
};
// 0x0401AD40 - 0x0401AED0
const Gfx luigi_right_hand_cap_hand_position_dl[] = {
gsSPVertex(luigi_right_hand_cap_hand_position_dl_vertex_group1, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 2, 5, 6, 0x0),
gsSP2Triangles( 6, 3, 2, 0x0, 5, 2, 4, 0x0),
gsSP2Triangles( 3, 7, 0, 0x0, 3, 6, 8, 0x0),
gsSP2Triangles( 3, 8, 7, 0x0, 9, 0, 7, 0x0),
gsSP2Triangles(10, 0, 9, 0x0, 1, 0, 10, 0x0),
gsSP2Triangles(11, 1, 10, 0x0, 11, 4, 1, 0x0),
gsSP2Triangles( 7, 12, 13, 0x0, 8, 12, 7, 0x0),
gsSP2Triangles(13, 14, 7, 0x0, 7, 14, 9, 0x0),
gsSPVertex(luigi_right_hand_cap_hand_position_dl_vertex_group2, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 6, 2, 4, 0x0),
gsSP2Triangles( 7, 5, 4, 0x0, 8, 9, 3, 0x0),
gsSP2Triangles( 3, 9, 10, 0x0, 10, 6, 3, 0x0),
gsSP2Triangles( 5, 11, 3, 0x0, 3, 11, 8, 0x0),
gsSP2Triangles(10, 0, 6, 0x0, 6, 0, 2, 0x0),
gsSP2Triangles( 2, 1, 12, 0x0, 5, 13, 11, 0x0),
gsSP2Triangles( 1, 14, 12, 0x0, 14, 15, 12, 0x0),
gsSPVertex(luigi_right_hand_cap_hand_position_dl_vertex_group3, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 7, 5, 8, 0x0, 8, 5, 9, 0x0),
gsSP2Triangles( 3, 10, 1, 0x0, 11, 10, 3, 0x0),
gsSP2Triangles( 1, 10, 2, 0x0, 2, 10, 12, 0x0),
gsSP2Triangles(12, 10, 13, 0x0, 10, 11, 13, 0x0),
gsSPEndDisplayList(),
};
// 0x0401AED0 - 0x0401AF20
const Gfx luigi_right_hand_cap_bottom_dl[] = {
gsSPVertex(luigi_right_hand_cap_bottom_dl_vertex, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 3, 2, 0x0, 5, 4, 2, 0x0),
gsSP2Triangles( 6, 5, 2, 0x0, 6, 2, 7, 0x0),
gsSP2Triangles( 8, 9, 6, 0x0, 6, 7, 8, 0x0),
gsSPEndDisplayList(),
};
const Gfx luigi_right_hand_cap_decal[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, SHADE, TEXEL1, SHADE, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, SHADE, TEXEL1, SHADE, TEXEL0, 0, ENVIRONMENT, 0),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 17),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_l_logo),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_l_blend),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 256, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 124),
gsSPDisplayList(luigi_right_hand_cap_l_logo_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, TEXEL1, 0, ENVIRONMENT, 0, TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, TEXEL1, 0, ENVIRONMENT, 0),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPCopyLightsPlayerPart(CAP),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_l_logo),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_l_cap),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 256, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 124),
gsSPDisplayList(luigi_right_hand_cap_l_logo_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPEndDisplayList(),
};
const Gfx luigi_right_hand_cap_dl[] = {
gsSPCopyLightsPlayerPart(CAP),
gsSPDisplayList(luigi_right_hand_cap_top_dl),
gsSPCopyLightsPlayerPart(GLOVES), // glove light, set in mario_misc.c
gsSPDisplayList(luigi_right_hand_cap_hand_position_dl),
gsDPSetCombineLERP(SHADE, 0, PRIMITIVE, 0, 0, 0, 0, ENVIRONMENT, SHADE, 0, PRIMITIVE, 0, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsDPSetPrimColor(0, 0, 115, 115, 115, 255),
gsSPCopyLightsPlayerPart(CAP),
gsSPDisplayList(luigi_right_hand_cap_bottom_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPEndDisplayList(),
};
// 0x0401AF60
static const Vtx luigi_right_hand_cap_wings_half_1_dl_vertex[] = {
{{{ 368, 146, 7}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 166, 37, 68}, 0, { 0, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 212, 96, 143}, 0, { 990, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 368, 146, 7}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 322, 87, -67}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 166, 37, 68}, 0, { 0, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 178, -177, 128}, 0, { 990, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 149, -100, 60}, 0, { 0, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 319, -248, -14}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 290, -171, -81}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
};
// 0x0401B000
static const Vtx luigi_right_hand_cap_wings_half_2_dl_vertex[] = {
{{{ 414, 206, 82}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 212, 96, 143}, 0, { 0, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 258, 156, 218}, 0, { 990, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 368, 146, 7}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 178, -177, 128}, 0, { 0, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 319, -248, -14}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 349, -325, 53}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 207, -253, 195}, 0, { 990, 2012}, {0xff, 0xff, 0xff, 0xff}}},
};
// 0x0401B080 - 0x0401B0B0
const Gfx luigi_right_hand_cap_wings_half_1_dl[] = {
gsSPVertex(luigi_right_hand_cap_wings_half_1_dl_vertex, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 7, 9, 8, 0x0),
gsSPEndDisplayList(),
};
// 0x0401B0B0 - 0x0401B0E0
const Gfx luigi_right_hand_cap_wings_half_2_dl[] = {
gsSPVertex(luigi_right_hand_cap_wings_half_2_dl_vertex, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 4, 6, 0x0),
gsSPEndDisplayList(),
};
// 0x0401B0E0 - 0x0401B138
const Gfx luigi_right_hand_cap_wings_intial_dl[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),
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),
gsSPLight(&luigi_white_lights_group.l, 1),
gsSPLight(&luigi_white_lights_group.a, 2),
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(),
};
const Gfx luigi_right_hand_cap_wings_transparent_intial_dl[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),
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),
gsSPLight(&luigi_white_lights_group.l, 1),
gsSPLight(&luigi_white_lights_group.a, 2),
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(),
};
const Gfx luigi_right_hand_cap_metal_wings_intial_dl[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 15),
gsSPEndDisplayList(),
};
// 0x0401B138 - 0x0401B158
const Gfx luigi_right_hand_cap_wings_end_dl[] = {
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
gsSPEndDisplayList(),
};
const Gfx luigi_right_hand_cap[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPDisplayList(luigi_right_hand_cap_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_right_hand_cap_wings[] = {
gsSPDisplayList(luigi_right_hand_cap_wings_intial_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_wings_half_1),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_right_hand_cap_wings_half_1_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_wings_half_2),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_right_hand_cap_wings_half_2_dl),
gsSPDisplayList(luigi_right_hand_cap_wings_end_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_right_hand_cap_wings_transparent[] = {
gsSPDisplayList(luigi_right_hand_cap_wings_transparent_intial_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_wings_half_1),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_right_hand_cap_wings_half_1_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_wings_half_2),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_right_hand_cap_wings_half_2_dl),
gsSPDisplayList(luigi_right_hand_cap_wings_end_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_right_hand_cap_shared_dl[] = {
gsSPDisplayList(luigi_right_hand_cap_l_logo_dl),
gsSPDisplayList(luigi_right_hand_cap_top_dl),
gsSPDisplayList(luigi_right_hand_cap_hand_position_dl),
gsSPDisplayList(luigi_right_hand_cap_bottom_dl),
gsDPPipeSync(),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_right_hand_cap_shared_dl_wings[] = {
gsSPDisplayList(luigi_right_hand_cap_metal_wings_intial_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 252),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 252),
gsSPDisplayList(luigi_right_hand_cap_wings_half_1_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_2_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 252),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_2_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 252),
gsSPDisplayList(luigi_right_hand_cap_wings_half_2_dl),
gsSPDisplayList(luigi_right_hand_cap_wings_end_dl),
gsSPEndDisplayList(),
};
const Gfx luigi_metal_right_hand_cap_shared_dl_wings_transparent[] = {
gsSPDisplayList(luigi_right_hand_cap_metal_wings_intial_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 252),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 252),
gsSPDisplayList(luigi_right_hand_cap_wings_half_1_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_2_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 252),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_2_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 252),
gsSPDisplayList(luigi_right_hand_cap_wings_half_2_dl),
gsSPDisplayList(luigi_right_hand_cap_wings_end_dl),
gsSPEndDisplayList(),
};
// 0x0401B2D0
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group1, 0x00114750, 78432, 0x0001b2d0, 256);
// 0x0401B3D0
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group2, 0x00114750, 78432, 0x0001b3d0, 224);
// 0x0401B4B0
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group3, 0x00114750, 78432, 0x0001b4b0, 240);
// 0x0401B5A0
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group4, 0x00114750, 78432, 0x0001b5a0, 256);
// 0x0401B6A0
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group5, 0x00114750, 78432, 0x0001b6a0, 256);
// 0x0401B7A0
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group6, 0x00114750, 78432, 0x0001b7a0, 240);
// 0x0401B890
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group7, 0x00114750, 78432, 0x0001b890, 240);
// 0x0401B980
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group8, 0x00114750, 78432, 0x0001b980, 240);
// 0x0401BA70
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group9, 0x00114750, 78432, 0x0001ba70, 256);
// 0x0401BB70
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group10, 0x00114750, 78432, 0x0001bb70, 224);
// 0x0401BC50
ROM_ASSET_LOAD_VTX(luigi_right_hand_peace_shared_dl_vertex_group11, 0x00114750, 78432, 0x0001bc50, 48);
// 0x0401BC80 - 0x0401BF30
const Gfx luigi_right_hand_peace_shared_dl[] = {
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group1, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 8, 7, 9, 0x0, 7, 6, 10, 0x0),
gsSP2Triangles( 7, 10, 9, 0x0, 11, 8, 9, 0x0),
gsSP2Triangles( 7, 12, 5, 0x0, 10, 13, 14, 0x0),
gsSP2Triangles( 6, 15, 10, 0x0, 10, 14, 9, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group2, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 8, 0, 9, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group3, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 7, 6, 8, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 9, 8, 10, 0x0, 9, 10, 11, 0x0),
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group4, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP2Triangles( 2, 12, 13, 0x0, 3, 5, 12, 0x0),
gsSP1Triangle(12, 14, 15, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group5, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group6, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 4, 10, 11, 0x0, 12, 13, 14, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group7, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 7, 0x0),
gsSP2Triangles(10, 9, 11, 0x0, 12, 13, 14, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 3, 2, 7, 0x0),
gsSP2Triangles( 8, 3, 7, 0x0, 9, 10, 11, 0x0),
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group9, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group10, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
gsSP2Triangles(12, 13, 9, 0x0, 12, 9, 8, 0x0),
gsSPVertex(luigi_right_hand_peace_shared_dl_vertex_group11, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
};
const Gfx luigi_right_hand_peace[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPCopyLightsPlayerPart(GLOVES), // glove light, set in luigi_misc.c
gsSPDisplayList(luigi_right_hand_peace_shared_dl),
gsSPEndDisplayList(),
};
// 0x0401C940
static const Vtx luigi_wings_half_1_dl_vertex[] = {
{{{ -105, 212, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -105, 0, 0}, 0, { 0, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 0, 0, 0}, 0, { 990, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 0, 212, 0}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
};
// 0x0401C980
static const Vtx luigi_wings_half_2_dl_vertex[] = {
{{{ 0, 0, 0}, 0, { 0, 2012}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 106, 212, 0}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 0, 212, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 106, 0, 0}, 0, { 990, 2012}, {0xff, 0xff, 0xff, 0xff}}},
};
// 0x0401C9C0 - 0x0401C9E0
const Gfx luigi_wings_half_1_dl[] = {
gsSPVertex(luigi_wings_half_1_dl_vertex, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
};
// 0x0401C9E0 - 0x0401CA00
const Gfx luigi_wings_half_2_dl[] = {
gsSPVertex(luigi_wings_half_2_dl_vertex, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
};
// 0x0401CA00 - 0x0401CAB8
const Gfx luigi_cap_wings[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),
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),
gsSPLight(&luigi_white_lights_group.l, 1),
gsSPLight(&luigi_white_lights_group.a, 2),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_wings_half_1),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_wings_half_1_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_wings_half_2),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_wings_half_2_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
gsSPEndDisplayList(),
};
// 0x0401CAB8 - 0x0401CB70
const Gfx luigi_cap_wings_transparent[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),
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),
gsSPLight(&luigi_white_lights_group.l, 1),
gsSPLight(&luigi_white_lights_group.a, 2),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_wings_half_1),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_wings_half_1_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_texture_wings_half_2),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPDisplayList(luigi_wings_half_2_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
gsSPEndDisplayList(),
};
// 0x0401CB70 - 0x0401CC28
const Gfx luigi_metal_cap_wings[] = {
gsDPPipeSync(),
gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 15),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 252),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 252),
gsSPDisplayList(luigi_wings_half_1_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_2_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 252),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_2_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 252),
gsSPDisplayList(luigi_wings_half_2_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
gsSPEndDisplayList(),
};
// 0x0401CC28 - 0x0401CD20
const Gfx luigi_metal_cap_wings_transparent[] = {
gsDPPipeSync(),
gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPLight(&luigi_black_lights_group.l, 1),
gsSPCopyLightEXT(2, 15),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 252),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 252),
gsSPDisplayList(luigi_wings_half_1_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_2_shade),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 252),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_2_light),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 512, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 512, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 252),
gsSPDisplayList(luigi_wings_half_2_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
gsSPEndDisplayList(),
};
const Gfx luigi_material_revert_render_settings[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 0),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetAlphaCompare(G_AC_NONE),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 256, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(6, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(1, 0, 0, 124, 124),
gsSPEndDisplayList(),
};