Skip to content

Commit

Permalink
- Reduce memory footprint of backdrop by ¾.
Browse files Browse the repository at this point in the history
  • Loading branch information
Extrems committed Feb 18, 2024
1 parent 7327e67 commit 076c31c
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 1 deletion.
21 changes: 21 additions & 0 deletions cube/swiss/source/gui/FrameBufferMagic.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ TPLFile buttonsTPL;
TPLFile backdropTPL;
GXTexObj backdropTexObj;
GXTlutObj backdropTlutObj;
GXTexObj backdropIndTexObj;
GXTexObj gcdvdsmallTexObj;
GXTexObj sdsmallTexObj;
GXTlutObj sdsmallTlutObj;
Expand Down Expand Up @@ -319,7 +320,11 @@ static void init_textures()
TPL_OpenTPLFromMemory(&imagesTPL, (void *)images_tpl, images_tpl_size);
TPL_OpenTPLFromMemory(&buttonsTPL, (void *)buttons_tpl, buttons_tpl_size);
TPL_GetTextureCI(&imagesTPL, backdrop, &backdropTexObj, &backdropTlutObj, GX_TLUT0);
GX_InitTexObjFilterMode(&backdropTexObj, GX_LINEAR, GX_NEAR);
GX_InitTexObjUserData(&backdropTexObj, &backdropTlutObj);
TPL_GetTexture(&imagesTPL, backdropind, &backdropIndTexObj);
GX_InitTexObjFilterMode(&backdropIndTexObj, GX_NEAR, GX_NEAR);
GX_InitTexObjUserData(&backdropIndTexObj, &backdropTexObj);
TPL_GetTexture(&imagesTPL, gcdvdsmall, &gcdvdsmallTexObj);
TPL_GetTextureCI(&imagesTPL, sdsmall, &sdsmallTexObj, &sdsmallTlutObj, GX_TLUT0);
GX_InitTexObjUserData(&sdsmallTexObj, &sdsmallTlutObj);
Expand Down Expand Up @@ -398,17 +403,20 @@ static void drawInit()
GX_SetNumTexGens (1);
GX_SetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);

GX_SetNumIndStages (0);
GX_SetNumTevStages (2);
GX_SetTevOrder (GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GX_SetTevColorIn (GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO);
GX_SetTevColorOp (GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GX_SetTevAlphaIn (GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO);
GX_SetTevAlphaOp (GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GX_SetTevDirect (GX_TEVSTAGE0);
GX_SetTevOrder (GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GX_SetTevColorIn (GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_CPREV, GX_CC_RASA, GX_CC_ZERO);
GX_SetTevColorOp (GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GX_SetTevAlphaIn (GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
GX_SetTevAlphaOp (GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GX_SetTevDirect (GX_TEVSTAGE1);

//set blend mode
GX_SetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_INVSRCALPHA, GX_LO_CLEAR); //Fix src alpha
Expand Down Expand Up @@ -486,6 +494,18 @@ static void _DrawImageNow(int textureId, int x, int y, int width, int height, in
texObj = &backdropTexObj;
break;
}
if(GX_GetTexObjUserData(&backdropIndTexObj) == texObj) {
GX_LoadTexObj(&backdropIndTexObj, GX_TEXMAP1);

GX_SetNumIndStages(1);
GX_SetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP1);
GX_SetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_16, GX_ITS_16);

GX_SetTevIndTile(GX_TEVSTAGE0, GX_INDTEXSTAGE0, 16, 16, 16, 16, GX_ITF_8, GX_ITM_0, GX_ITB_NONE, GX_ITBA_OFF);
GX_SetTevIndRepeat(GX_TEVSTAGE1);

s1*=2; s2*=2; t1*=2; t2*=2;
}
break;
case TEX_GCDVDSMALL:
texObj = &gcdvdsmallTexObj;
Expand Down Expand Up @@ -2195,6 +2215,7 @@ void DrawLoadBackdrop() {
TPL_GetTexture(&backdropTPL, id, &backdropTexObj);
break;
}
GX_InitTexObjUserData(&backdropIndTexObj, NULL);
}
else {
TPL_CloseTPLFile(&backdropTPL);
Expand Down
3 changes: 3 additions & 0 deletions cube/swiss/source/gui/IPLFontWrite.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,17 +201,20 @@ void drawFontInit(void)
GX_InitTexObjLOD(&fontTexObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_TRUE, GX_TRUE, GX_ANISO_4);
GX_LoadTexObj(&fontTexObj, GX_TEXMAP0);

GX_SetNumIndStages (0);
GX_SetNumTevStages (2);
GX_SetTevOrder (GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); // change to (u8) tile later
GX_SetTevColorIn (GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO);
GX_SetTevColorOp (GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GX_SetTevAlphaIn (GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO);
GX_SetTevAlphaOp (GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GX_SetTevDirect (GX_TEVSTAGE0);
GX_SetTevOrder (GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GX_SetTevColorIn (GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_CPREV, GX_CC_RASA, GX_CC_ZERO);
GX_SetTevColorOp (GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GX_SetTevAlphaIn (GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
GX_SetTevAlphaOp (GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GX_SetTevDirect (GX_TEVSTAGE1);

//set blend mode
GX_SetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_INVSRCALPHA, GX_LO_CLEAR); //Fix src alpha
Expand Down
Binary file added cube/swiss/source/images/backdrop.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added cube/swiss/source/images/backdropind.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion cube/swiss/source/images/images.scf
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<filepath="backdrop.tif" id="backdrop" colfmt=8 palfmt=0 />
<filepath="backdrop.png" id="backdrop" colfmt=8 palfmt=0 />
<filepath="backdropind.png" id="backdropind" colfmt=3 />
<filepath="dir.tif" id="dirimg" colfmt=6 />
<filepath="dol.tif" id="dolimg" colfmt=6 />
<filepath="dolcli.tif" id="dolcliimg" colfmt=6 />
Expand Down

0 comments on commit 076c31c

Please sign in to comment.