From 26fcd638e357e238dea5a88caa88f11cd24a3175 Mon Sep 17 00:00:00 2001 From: FluffaMario <50761036+FluffaMario@users.noreply.github.com> Date: Wed, 20 May 2026 05:16:28 -0500 Subject: [PATCH] Fix Metal Mario --- actors/mario/model.inc.c | 92 +++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 48 deletions(-) diff --git a/actors/mario/model.inc.c b/actors/mario/model.inc.c index 0a800b020..08abd882f 100644 --- a/actors/mario/model.inc.c +++ b/actors/mario/model.inc.c @@ -37,6 +37,11 @@ static const Lights1 mario_brown2_lights_group = gdSPDefLights1( 0x73, 0x06, 0x00, 0x28, 0x28, 0x28 ); +static const Lights1 mario_metal_lights_group = gdSPDefLights1( + 0x7f, 0x7f, 0x7f, + 0x00, 0x00, 0x00, 0x28, 0x28, 0x28 +); + ROM_ASSET_LOAD_TEXTURE(mario_texture_metal, "actors/mario/mario_metal.rgba16.inc.c", 0x00114750, 78432, 0x00000090, 4096); ROM_ASSET_LOAD_TEXTURE(mario_texture_yellow_button, "actors/mario/mario_overalls_button.rgba16.inc.c", 0x00114750, 78432, 0x00001090, 2048); @@ -171,11 +176,12 @@ const Gfx mario_butt[] = { const Gfx mario_metal_butt[] = { gsDPPipeSync(), gsSPSetGeometryMode(G_TEXTURE_GEN), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, COMBINED, 0, 0, 0, ENVIRONMENT), + gsSPLight(&mario_metal_lights_group.l, 1), + gsSPLight(&mario_metal_lights_group.a, 2), + gsSPCopyLightEXT(2, 15), + gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, SHADE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), gsDPSetCycleType(G_CYC_2CYCLE), gsSPTexture(4032, 1984, 0, 0, 1), - gsDPSetPrimColor(0, 0, 127, 127, 127, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal), 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), @@ -488,11 +494,12 @@ const Gfx mario_left_thigh[] = { const Gfx mario_metal_left_thigh[] = { gsDPPipeSync(), gsSPSetGeometryMode(G_TEXTURE_GEN), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, COMBINED, 0, 0, 0, ENVIRONMENT), + gsSPLight(&mario_metal_lights_group.l, 1), + gsSPLight(&mario_metal_lights_group.a, 2), + gsSPCopyLightEXT(2, 15), + gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, SHADE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), gsDPSetCycleType(G_CYC_2CYCLE), gsSPTexture(4032, 1984, 0, 0, 1), - gsDPSetPrimColor(0, 0, 127, 127, 127, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal), 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), @@ -2754,12 +2761,15 @@ const Gfx mario_metal_right_hand_cap_shared_dl[] = { // 0x0401B278 - 0x0401B2D0 const Gfx mario_metal_right_hand_cap_shared_dl_wings[] = { - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCycleType(G_CYC_2CYCLE), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 0, 0, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), - gsDPSetEnvRGB(127, 127, 127), + gsDPPipeSync(), + gsSPLight(&mario_metal_lights_group.l, 1), + gsSPLight(&mario_metal_lights_group.a, 2), + gsSPCopyLightEXT(2, 15), + gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, SHADE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), + gsSPClearGeometryMode(G_CULL_BACK), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPTexture(4032, 1984, 0, 0, 1), + gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_wings_half_1), 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), @@ -2768,12 +2778,6 @@ const Gfx mario_metal_right_hand_cap_shared_dl_wings[] = { gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 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(mario_right_hand_cap_wings_half_1_dl), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCycleType(G_CYC_2CYCLE), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 0, 0, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), - gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_wings_half_2), 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), @@ -2971,12 +2975,13 @@ const Gfx mario_cap_wings_transparent[] = { const Gfx mario_metal_cap_wings[] = { gsDPPipeSync(), gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCycleType(G_CYC_2CYCLE), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 0, 0, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), - gsDPSetEnvRGB(127, 127, 127), + gsSPLight(&mario_metal_lights_group.l, 1), + gsSPLight(&mario_metal_lights_group.a, 2), + gsSPCopyLightEXT(2, 15), + gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, SHADE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPTexture(4032, 1984, 0, 0, 1), + gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_wings_half_1), 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), @@ -2985,12 +2990,6 @@ const Gfx mario_metal_cap_wings[] = { gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 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(mario_wings_half_1_dl), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCycleType(G_CYC_2CYCLE), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 0, 0, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), - gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_wings_half_2), 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), @@ -3002,11 +3001,12 @@ const Gfx mario_metal_cap_wings[] = { gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), gsDPPipeSync(), gsSPSetGeometryMode(G_TEXTURE_GEN | G_CULL_BACK), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, COMBINED, 0, 0, 0, ENVIRONMENT), + gsSPLight(&mario_metal_lights_group.l, 1), + gsSPLight(&mario_metal_lights_group.a, 2), + gsSPCopyLightEXT(2, 15), + gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, SHADE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), gsDPSetCycleType(G_CYC_2CYCLE), gsSPTexture(4032, 1984, 0, 0, 1), - gsDPSetPrimColor(0, 0, 127, 127, 127, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal), 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), @@ -3022,12 +3022,13 @@ const Gfx mario_metal_cap_wings[] = { const Gfx mario_metal_cap_wings_transparent[] = { gsDPPipeSync(), gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCycleType(G_CYC_2CYCLE), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 0, 0, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), - gsDPSetEnvRGB(127, 127, 127), + gsSPLight(&mario_metal_lights_group.l, 1), + gsSPLight(&mario_metal_lights_group.a, 2), + gsSPCopyLightEXT(2, 15), + gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, SHADE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPTexture(4032, 1984, 0, 0, 1), + gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_wings_half_1), 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), @@ -3036,12 +3037,6 @@ const Gfx mario_metal_cap_wings_transparent[] = { gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 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(mario_wings_half_1_dl), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCycleType(G_CYC_2CYCLE), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 0, 0, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), - gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_wings_half_2), 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), @@ -3053,11 +3048,12 @@ const Gfx mario_metal_cap_wings_transparent[] = { gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), gsDPPipeSync(), gsSPSetGeometryMode(G_TEXTURE_GEN | G_CULL_BACK), - gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, COMBINED, 0, 0, 0, ENVIRONMENT), + gsSPLight(&mario_metal_lights_group.l, 1), + gsSPLight(&mario_metal_lights_group.a, 2), + gsSPCopyLightEXT(2, 15), + gsDPSetCombineLERP(TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, SHADE, COMBINED, COMBINED, 0, ENVIRONMENT, 0), gsDPSetCycleType(G_CYC_2CYCLE), gsSPTexture(4032, 1984, 0, 0, 1), - gsDPSetPrimColor(0, 0, 127, 127, 127, 255), - gsSPCopyPlayerPartToColor(G_COL_PRIM, 6, 0), gsDPSetEnvRGB(127, 127, 127), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal), 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),