remove tree graphic, crate csmc

This commit is contained in:
Demur Rumed 2025-06-21 14:14:48 +00:00
commit 631882028e
13 changed files with 73 additions and 176 deletions

View file

@ -1,12 +0,0 @@
<DisplayList Version="0">
<ClearGeometryMode G_LIGHTING="1" />
<LoadVertices Path="objects/object_rando_tree/gRandoTreeDL_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<SetGeometryMode G_LIGHTING="1" />
<CullDisplayList Start="0" End="7"/>
<CallDisplayList Path="objects/object_rando_tree/mat_gRandoTreeDL_treeTexMaterial"/>
<CallDisplayList Path="objects/object_rando_tree/gRandoTreeDL_tri_0"/>
<CallDisplayList Path="objects/object_rando_tree/mat_gRandoTreeDL_triforceTexMaterial"/>
<CallDisplayList Path="objects/object_rando_tree/gRandoTreeDL_tri_1"/>
<EndDisplayList/>
</DisplayList>

View file

@ -1,12 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_rando_tree/gRandoTreeDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="30"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="4" V12="5" Flag1="0"/>
<Triangles2 V00="6" V01="7" V02="8" Flag0="0" V10="6" V11="8" V12="9" Flag1="0"/>
<Triangles2 V00="10" V01="11" V02="12" Flag0="0" V10="10" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="16" Flag0="0" V10="14" V11="16" V12="17" Flag1="0"/>
<Triangles2 V00="18" V01="19" V02="20" Flag0="0" V10="18" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="23" V02="24" Flag0="0" V10="23" V11="25" V12="24" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="28" Flag0="0" V10="26" V11="28" V12="29" Flag1="0"/>
<EndDisplayList/>
</DisplayList>

View file

@ -1,9 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_rando_tree/gRandoTreeDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<EndDisplayList/>
</DisplayList>

View file

@ -1,32 +0,0 @@
<Vertex Version="0">
<Vtx X="-7" Y="61" Z="8" S="108" T="-1442" R="15" G="0" B="126" A="255"/>
<Vtx X="8" Y="61" Z="6" S="978" T="-1497" R="85" G="4" B="94" A="255"/>
<Vtx X="0" Y="400" Z="0" S="721" T="-15424" R="13" G="3" B="126" A="255"/>
<Vtx X="-8" Y="61" Z="-6" S="111" T="-1572" R="4" G="133" B="33" A="255"/>
<Vtx X="-7" Y="61" Z="8" S="981" T="-1574" R="192" G="4" B="110" A="255"/>
<Vtx X="0" Y="400" Z="0" S="736" T="-16260" R="243" G="22" B="132" A="255"/>
<Vtx X="9" Y="0" Z="7" S="1024" T="1016" R="85" G="4" B="94" A="255"/>
<Vtx X="8" Y="43" Z="6" S="991" T="-747" R="10" G="75" B="102" A="255"/>
<Vtx X="-7" Y="43" Z="8" S="73" T="-648" R="13" G="2" B="126" A="255"/>
<Vtx X="-8" Y="0" Z="9" S="0" T="1024" R="192" G="4" B="110" A="255"/>
<Vtx X="8" Y="0" Z="-9" S="1024" T="1016" R="94" G="4" B="171" A="255"/>
<Vtx X="7" Y="43" Z="-8" S="987" T="-815" R="98" G="81" B="251" A="255"/>
<Vtx X="8" Y="43" Z="6" S="73" T="-826" R="247" G="122" B="222" A="255"/>
<Vtx X="9" Y="0" Z="7" S="0" T="1024" R="85" G="4" B="94" A="255"/>
<Vtx X="-10" Y="0" Z="-7" S="0" T="1024" R="146" G="4" B="192" A="255"/>
<Vtx X="-9" Y="43" Z="-6" S="70" T="-590" R="250" G="103" B="183" A="255"/>
<Vtx X="7" Y="43" Z="-8" S="989" T="-672" R="1" G="16" B="130" A="255"/>
<Vtx X="8" Y="0" Z="-9" S="1024" T="1016" R="95" G="4" B="171" A="255"/>
<Vtx X="-8" Y="0" Z="9" S="1024" T="1016" R="192" G="4" B="110" A="255"/>
<Vtx X="-7" Y="43" Z="8" S="995" T="-741" R="181" G="103" B="7" A="255"/>
<Vtx X="-9" Y="43" Z="-6" S="75" T="-732" R="242" G="224" B="134" A="255"/>
<Vtx X="-10" Y="0" Z="-7" S="0" T="1024" R="146" G="4" B="192" A="255"/>
<Vtx X="7" Y="61" Z="-8" S="973" T="-1426" R="0" G="244" B="130" A="255"/>
<Vtx X="-8" Y="61" Z="-6" S="104" T="-1363" R="146" G="4" B="192" A="255"/>
<Vtx X="4" Y="200" Z="-5" S="859" T="-6926" R="6" G="2" B="129" A="255"/>
<Vtx X="0" Y="400" Z="0" S="694" T="-14868" R="243" G="22" B="132" A="255"/>
<Vtx X="8" Y="61" Z="6" S="103" T="-1611" R="2" G="35" B="122" A="255"/>
<Vtx X="7" Y="61" Z="-8" S="971" T="-1633" R="94" G="4" B="171" A="255"/>
<Vtx X="4" Y="200" Z="-5" S="850" T="-7602" R="94" G="44" B="183" A="255"/>
<Vtx X="0" Y="400" Z="0" S="676" T="-16219" R="243" G="22" B="132" A="255"/>
</Vertex>

View file

@ -1,18 +0,0 @@
<Vertex Version="0">
<Vtx X="7" Y="43" Z="-8" S="-4" T="1053" R="0" G="244" B="130" A="255"/>
<Vtx X="-9" Y="43" Z="-6" S="993" T="1053" R="146" G="4" B="192" A="255"/>
<Vtx X="-8" Y="61" Z="-6" S="966" T="-89" R="250" G="104" B="183" A="255"/>
<Vtx X="7" Y="61" Z="-8" S="22" T="-89" R="1" G="16" B="130" A="255"/>
<Vtx X="-7" Y="43" Z="8" S="-4" T="1053" R="15" G="0" B="126" A="255"/>
<Vtx X="8" Y="43" Z="6" S="993" T="1053" R="85" G="4" B="94" A="255"/>
<Vtx X="8" Y="61" Z="6" S="966" T="-89" R="11" G="75" B="102" A="255"/>
<Vtx X="-7" Y="61" Z="8" S="22" T="-89" R="13" G="2" B="126" A="255"/>
<Vtx X="-9" Y="43" Z="-6" S="-4" T="1053" R="3" G="133" B="33" A="255"/>
<Vtx X="-7" Y="43" Z="8" S="993" T="1053" R="192" G="4" B="110" A="255"/>
<Vtx X="-7" Y="61" Z="8" S="966" T="-89" R="182" G="103" B="7" A="255"/>
<Vtx X="-8" Y="61" Z="-6" S="22" T="-89" R="242" G="224" B="134" A="255"/>
<Vtx X="8" Y="43" Z="6" S="-4" T="1053" R="2" G="35" B="122" A="255"/>
<Vtx X="7" Y="43" Z="-8" S="993" T="1053" R="94" G="4" B="171" A="255"/>
<Vtx X="7" Y="61" Z="-8" S="966" T="-89" R="98" G="81" B="251" A="255"/>
<Vtx X="8" Y="61" Z="6" S="22" T="-89" R="247" G="122" B="222" A="255"/>
</Vertex>

View file

@ -1,10 +0,0 @@
<Vertex Version="0">
<Vtx X="-10" Y="0" Z="-9" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-10" Y="0" Z="9" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-10" Y="400" Z="9" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-10" Y="400" Z="-9" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="9" Y="0" Z="-9" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="9" Y="0" Z="9" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="9" Y="400" Z="9" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="9" Y="400" Z="-9" S="0" T="0" R="0" G="0" B="0" A="0"/>
</Vertex>

View file

@ -1,16 +0,0 @@
<DisplayList Version="0">
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" 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"/>
<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_TT_NONE="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="255" G="255" B="255" A="255"/>
<SetTextureImage Path="objects/object_wood02/object_wood02_Tex_000790" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<EndDisplayList/>
</DisplayList>

View file

@ -1,16 +0,0 @@
<DisplayList Version="0">
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" 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"/>
<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_TT_NONE="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="255" G="255" B="255" A="255"/>
<SetTextureImage Path="objects/object_rando_tree/gRandoTreeDLTriforceTexture32.rgba16" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<EndDisplayList/>
</DisplayList>

View file

@ -1,6 +0,0 @@
<DisplayList Version="0">
<SetGeometryMode />
<ClearGeometryMode G_FOG="1" />
<PipeSync/>
</DisplayList>

View file

@ -1,6 +0,0 @@
<DisplayList Version="0">
<SetGeometryMode />
<ClearGeometryMode G_FOG="1" />
<PipeSync/>
</DisplayList>

View file

@ -77,9 +77,6 @@ static const ALIGN_ASSET(2) char gBossSoulSkullDL[] = dgBossSoulSkullDL;
#define dgRandoPotDL "__OTR__objects/gameplay_dangeon_keep/gRandoPotDL"
static const ALIGN_ASSET(2) char gRandoPotDL[] = dgRandoPotDL;
#define dgRandoTreeDL "__OTR__objects/object_rando_tree/gRandoTreeDL"
static const ALIGN_ASSET(2) char gRandoTreeDL[] = dgRandoTreeDL;
#define dgRandoBushDL "__OTR__objects/gameplay_field_keep/gFieldBushRandomDL"
static const ALIGN_ASSET(2) char gRandoBushDL[] = dgRandoBushDL;

View file

@ -6,6 +6,7 @@ extern "C" {
#include "variables.h"
#include "src/overlays/actors/ovl_En_Wood02/z_en_wood02.h"
#include "objects/object_wood02/object_wood02.h"
#include "soh/Enhancements/enhancementTypes.h"
extern PlayState* gPlayState;
void EnWood02_Draw(Actor*, PlayState*);
}
@ -41,45 +42,82 @@ uint8_t EnWood02_RandomizerHoldsItem(EnWood02* treeActor, PlayState* play) {
}
extern "C" void EnWood02_RandomizerDraw(Actor* thisx, PlayState* play) {
EnWood02* thisy = (EnWood02*)thisx;
s16 type = thisy->actor.params;
u8 red;
u8 green;
u8 blue;
GetItemCategory getItemCategory;
auto treeActor = (EnWood02*)thisx;
int csmc = CVarGetInteger(CVAR_ENHANCEMENT("ChestSizeAndTextureMatchContents"), CSMC_DISABLED);
int requiresStoneAgony = CVarGetInteger(CVAR_ENHANCEMENT("ChestSizeDependsStoneOfAgony"), 0);
if ((type == WOOD_TREE_OVAL_GREEN_SPAWNER) || (type == WOOD_TREE_OVAL_GREEN_SPAWNED) ||
(type == WOOD_TREE_OVAL_GREEN) || (type == WOOD_LEAF_GREEN)) {
red = 50;
green = 170;
blue = 70;
} else if ((type == WOOD_TREE_OVAL_YELLOW_SPAWNER) || (type == WOOD_TREE_OVAL_YELLOW_SPAWNED) ||
(type == WOOD_LEAF_YELLOW)) {
red = 180;
green = 155;
blue = 0;
} else {
red = green = blue = 255;
int isVanilla =
csmc == CSMC_DISABLED || csmc == CSMC_SIZE || (requiresStoneAgony && !CHECK_QUEST_ITEM(QUEST_STONE_OF_AGONY));
if (isVanilla || treeActor->treeId.randomizerCheck == RC_UNKNOWN_CHECK) {
return;
}
OPEN_DISPS(play->state.gfxCtx);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
if ((thisy->actor.params == WOOD_LEAF_GREEN) || (thisy->actor.params == WOOD_LEAF_YELLOW)) {
Gfx_SetupDL_25Opa(play->state.gfxCtx);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, red, green, blue, 127);
Gfx_DrawDListOpa(play, (Gfx*)gRandoTreeDL);
} else if (D_80B3BF70[thisy->drawType & 0xF] != NULL) {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, red, green, blue, 0);
Gfx_DrawDListOpa(play, (Gfx*)gRandoTreeDL);
gDPSetEnvColor(POLY_XLU_DISP++, red, green, blue, 0);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, D_80B3BF70[thisy->drawType & 0xF]);
}
CLOSE_DISPS(play->state.gfxCtx);
GetItemEntry smallCrateItem =
Rando::Context::GetInstance()->GetFinalGIEntry(treeActor->treeId.randomizerCheck, true, GI_NONE);
getItemCategory = smallCrateItem.getItemCategory;
if (!EnWood02_RandomizerHoldsItem(thisy, gPlayState)) {
thisy->actor.draw = (ActorFunc)EnWood02_Draw;
// If they have bombchus, don't consider the bombchu item major
if (INV_CONTENT(ITEM_BOMBCHU) == ITEM_BOMBCHU &&
((smallCrateItem.modIndex == MOD_RANDOMIZER && smallCrateItem.getItemId == RG_PROGRESSIVE_BOMBCHUS) ||
(smallCrateItem.modIndex == MOD_NONE &&
(smallCrateItem.getItemId == GI_BOMBCHUS_5 || smallCrateItem.getItemId == GI_BOMBCHUS_10 ||
smallCrateItem.getItemId == GI_BOMBCHUS_20)))) {
getItemCategory = ITEM_CATEGORY_JUNK;
// If it's a bottle and they already have one, consider the item lesser
} else if ((smallCrateItem.modIndex == MOD_RANDOMIZER && smallCrateItem.getItemId >= RG_BOTTLE_WITH_RED_POTION &&
smallCrateItem.getItemId <= RG_BOTTLE_WITH_POE) ||
(smallCrateItem.modIndex == MOD_NONE &&
(smallCrateItem.getItemId == GI_BOTTLE || smallCrateItem.getItemId == GI_MILK_BOTTLE))) {
if (gSaveContext.inventory.items[SLOT_BOTTLE_1] != ITEM_NONE) {
getItemCategory = ITEM_CATEGORY_LESSER;
}
}
GraphicsContext* gfxCtx = play->state.gfxCtx;
OPEN_DISPS(gfxCtx);
Matrix_Push();
// Change texture
switch (getItemCategory) {
case ITEM_CATEGORY_MAJOR:
Matrix_Scale(0.1, 0.05, 0.1, MTXMODE_APPLY);
Gfx_DrawDListOpa(play, (Gfx*)gSmallMajorCrateDL);
break;
case ITEM_CATEGORY_SKULLTULA_TOKEN:
Matrix_Scale(0.1, 0.05, 0.1, MTXMODE_APPLY);
Gfx_DrawDListOpa(play, (Gfx*)gSmallTokenCrateDL);
break;
case ITEM_CATEGORY_SMALL_KEY:
Matrix_Scale(0.1, 0.05, 0.1, MTXMODE_APPLY);
Gfx_DrawDListOpa(play, (Gfx*)gSmallSmallKeyCrateDL);
break;
case ITEM_CATEGORY_BOSS_KEY:
Matrix_Scale(0.1, 0.05, 0.1, MTXMODE_APPLY);
Gfx_DrawDListOpa(play, (Gfx*)gSmallBossKeyCrateDL);
break;
case ITEM_CATEGORY_LESSER:
Matrix_Scale(0.1, 0.05, 0.1, MTXMODE_APPLY);
switch (smallCrateItem.itemId) {
case ITEM_HEART_PIECE:
case ITEM_HEART_PIECE_2:
case ITEM_HEART_CONTAINER:
Gfx_DrawDListOpa(play, (Gfx*)gSmallHeartCrateDL);
break;
default:
Gfx_DrawDListOpa(play, (Gfx*)gSmallMinorCrateDL);
break;
}
case ITEM_CATEGORY_JUNK:
default:
Matrix_Scale(0.04, 0.02, 0.04, MTXMODE_APPLY);
Gfx_DrawDListOpa(play, (Gfx*)gLargeJunkCrateDL);
break;
}
Matrix_Pop();
CLOSE_DISPS(gfxCtx);
}
void EnWood02_RandomizerSpawnCollectible(EnWood02* treeActor, PlayState* play) {
@ -113,8 +151,7 @@ void RegisterShuffleTrees() {
COND_VB_SHOULD(VB_TREE_SETUP_DRAW, shouldRegister, {
EnWood02* treeActor = va_arg(args, EnWood02*);
if (EnWood02_RandomizerHoldsItem(treeActor, gPlayState)) {
treeActor->actor.draw = (ActorFunc)EnWood02_RandomizerDraw;
*should = false;
EnWood02_RandomizerDraw(&treeActor->actor, gPlayState);
}
});