Cucco Lady hat

This commit is contained in:
MelonSpeedruns 2023-11-17 10:17:15 -05:00
commit bf5e4a6fa6
8 changed files with 138 additions and 1 deletions

BIN
cucco-lady-hat.patch Normal file

Binary file not shown.

View file

@ -0,0 +1,11 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_festivehats/mat_gCuccoLadyHatDL_f3dlite_hatcolour"/>
<CallDisplayList Path="objects/object_festivehats/gCuccoLadyHatDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<EndDisplayList/>
</DisplayList>

View file

@ -0,0 +1,31 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_festivehats/gCuccoLadyHatDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="3" V02="0"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="6" V01="5" V02="4"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="8" V01="9" V02="7"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="13" V02="11"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<Triangle1 V00="14" V01="15" V02="13"/>
<LoadVertices Path="objects/object_festivehats/gCuccoLadyHatDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="1" V01="3" V02="4"/>
<Triangle1 V00="5" V01="1" V02="6"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/object_festivehats/gCuccoLadyHatDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="9"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<EndDisplayList/>
</DisplayList>

View file

@ -0,0 +1,43 @@
<Vertex Version="0">
<Vtx X="971" Y="326" Z="-377" S="112" T="1008" R="6" G="79" B="156" A="255"/>
<Vtx X="998" Y="-107" Z="-499" S="-16" T="-16" R="224" G="12" B="134" A="255"/>
<Vtx X="798" Y="-27" Z="-448" S="-16" T="1008" R="229" G="11" B="132" A="255"/>
<Vtx X="1172" Y="246" Z="-429" S="112" T="-16" R="4" G="81" B="158" A="255"/>
<Vtx X="1099" Y="450" Z="-72" S="240" T="1008" R="47" G="118" B="0" A="255"/>
<Vtx X="1300" Y="370" Z="-123" S="240" T="-16" R="47" G="118" B="0" A="255"/>
<Vtx X="1107" Y="272" Z="233" S="368" T="1008" R="51" G="68" B="94" A="255"/>
<Vtx X="1307" Y="192" Z="182" S="368" T="-16" R="51" G="69" B="94" A="255"/>
<Vtx X="989" Y="-103" Z="360" S="496" T="1008" R="27" G="245" B="124" A="255"/>
<Vtx X="1189" Y="-184" Z="308" S="496" T="-16" R="27" G="245" B="124" A="255"/>
<Vtx X="815" Y="-456" Z="233" S="624" T="1008" R="247" G="171" B="94" A="255"/>
<Vtx X="1015" Y="-537" Z="182" S="624" T="-16" R="246" G="171" B="93" A="255"/>
<Vtx X="687" Y="-580" Z="-72" S="752" T="1008" R="209" G="138" B="0" A="255"/>
<Vtx X="887" Y="-661" Z="-123" S="752" T="-16" R="209" G="138" B="0" A="255"/>
<Vtx X="680" Y="-402" Z="-377" S="880" T="1008" R="206" G="195" B="156" A="255"/>
<Vtx X="880" Y="-483" Z="-429" S="880" T="-16" R="203" G="195" B="158" A="255"/>
<Vtx X="798" Y="-27" Z="-448" S="1008" T="1008" R="229" G="11" B="132" A="255"/>
<Vtx X="880" Y="-483" Z="-429" S="880" T="-16" R="203" G="195" B="158" A="255"/>
<Vtx X="680" Y="-402" Z="-377" S="880" T="1008" R="206" G="195" B="156" A="255"/>
<Vtx X="998" Y="-107" Z="-499" S="1008" T="-16" R="224" G="12" B="134" A="255"/>
<Vtx X="1139" Y="-375" Z="-543" S="880" T="-16" R="207" G="250" B="139" A="255"/>
<Vtx X="887" Y="-661" Z="-123" S="752" T="-16" R="209" G="138" B="0" A="255"/>
<Vtx X="1084" Y="-652" Z="-328" S="752" T="-16" R="202" G="156" B="199" A="255"/>
<Vtx X="998" Y="-107" Z="-499" S="-16" T="-16" R="224" G="12" B="134" A="255"/>
<Vtx X="1172" Y="246" Z="-429" S="112" T="-16" R="4" G="81" B="158" A="255"/>
<Vtx X="1285" Y="-11" Z="-543" S="-16" T="-16" R="225" G="38" B="139" A="255"/>
<Vtx X="1300" Y="370" Z="-123" S="240" T="-16" R="47" G="118" B="0" A="255"/>
<Vtx X="1307" Y="192" Z="182" S="368" T="-16" R="51" G="69" B="94" A="255"/>
<Vtx X="1504" Y="201" Z="-22" S="240" T="-16" R="54" G="100" B="57" A="255"/>
<Vtx X="1189" Y="-184" Z="308" S="496" T="-16" R="27" G="245" B="124" A="255"/>
<Vtx X="1015" Y="-537" Z="182" S="624" T="-16" R="246" G="171" B="93" A="255"/>
<Vtx X="1302" Y="-440" Z="194" S="496" T="-16" R="11" G="209" B="118" A="255"/>
<Vtx X="1307" Y="192" Z="182" S="368" T="-16" R="51" G="69" B="94" A="255"/>
<Vtx X="1189" Y="-184" Z="308" S="496" T="-16" R="27" G="245" B="124" A="255"/>
<Vtx X="1448" Y="-76" Z="194" S="368" T="-16" R="41" G="26" B="117" A="255"/>
<Vtx X="1015" Y="-537" Z="182" S="624" T="-16" R="246" G="171" B="93" A="255"/>
<Vtx X="887" Y="-661" Z="-123" S="752" T="-16" R="209" G="138" B="0" A="255"/>
<Vtx X="1152" Y="-679" Z="-22" S="624" T="-16" R="227" G="146" B="57" A="255"/>
<Vtx X="1172" Y="246" Z="-429" S="112" T="-16" R="4" G="81" B="158" A="255"/>
<Vtx X="1300" Y="370" Z="-123" S="240" T="-16" R="47" G="118" B="0" A="255"/>
<Vtx X="1436" Y="228" Z="-328" S="112" T="-16" R="29" G="110" B="199" A="255"/>
</Vertex>

View file

@ -0,0 +1,12 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetPrimColor M="0" L="0" R="204" G="204" B="0" A="255"/>
<EndDisplayList/>
</DisplayList>

View file

@ -8,6 +8,9 @@
// On Mac, not using aligned resource names was causing crashes in release builds
// objects
#define dgCuccoLadyHatDL "__OTR__objects/object_festivehats/gCuccoLadyHatDL"
static const ALIGN_ASSET(2) char gCuccoLadyHatDL[] = dgCuccoLadyHatDL;
#define dgChristmasGreenTreasureChestFrontTex "__OTR__objects/object_box/gChristmasGreenTreasureChestFrontTex"
static const ALIGN_ASSET(2) char gChristmasGreenTreasureChestFrontTex[] = dgChristmasGreenTreasureChestFrontTex;

View file

@ -10,6 +10,7 @@
#include "soh/Enhancements/randomizer/draw.h"
#include <stdlib.h>
#include <soh_assets.h>
typedef struct {
/* 0x00 */ u8 flag;
@ -1672,6 +1673,27 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Ve
Matrix_MultVec3f(&sZeroVec, D_80160000);
}
if (CVarGetInteger("gLetItSnow", 0)) {
if (limbIndex == PLAYER_LIMB_HEAD) {
OPEN_DISPS(play->state.gfxCtx);
Matrix_Push();
Matrix_RotateZYX(0, 0, -0x4000, MTXMODE_APPLY);
if (LINK_IS_ADULT) {
Matrix_Translate(200.0f, 0.0f, 0.0f, MTXMODE_APPLY);
} else {
Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY);
}
Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, gCuccoLadyHatDL);
Matrix_Pop();
CLOSE_DISPS(play->state.gfxCtx);
}
}
if (limbIndex == PLAYER_LIMB_L_HAND) {
MtxF sp14C;
Actor* hookedActor;

View file

@ -4,6 +4,7 @@
#include "overlays/actors/ovl_En_Niw/z_en_niw.h"
#include "vt.h"
#include "soh/Enhancements/randomizer/adult_trade_shuffle.h"
#include <soh_assets.h>
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_WHILE_CULLED)
@ -601,6 +602,20 @@ s32 EnNiwLady_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3
return false;
}
s32 EnNiwLady_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
EnNiwLady* this = (EnNiwLady*)thisx;
if (CVarGetInteger("gLetItSnow", 0)) {
if (limbIndex == 15) {
OPEN_DISPS(play->state.gfxCtx);
gSPDisplayList(POLY_OPA_DISP++, gCuccoLadyHatDL);
CLOSE_DISPS(play->state.gfxCtx);
}
}
return false;
}
void EnNiwLady_Draw(Actor* thisx, PlayState* play) {
static void* sEyeTextures[] = { gCuccoLadyEyeOpenTex, gCuccoLadyEyeHalfTex, gCuccoLadyEyeClosedTex };
EnNiwLady* this = (EnNiwLady*)thisx;
@ -612,7 +627,7 @@ void EnNiwLady_Draw(Actor* thisx, PlayState* play) {
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255);
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sEyeTextures[this->faceState]));
gSPSegment(POLY_OPA_DISP++, 0x0C, func_80ABB0A0(play->state.gfxCtx));
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnNiwLady_OverrideLimbDraw, NULL, this);
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnNiwLady_OverrideLimbDraw, EnNiwLady_PostLimbDraw, this);
}
CLOSE_DISPS(play->state.gfxCtx);
}