summaryrefslogtreecommitdiff
path: root/mm/src/code
diff options
context:
space:
mode:
authorPurpleHato <linkvssangoku.jr@gmail.com>2024-04-10 01:24:29 +0200
committerGarrett Cox <garrettjcox@gmail.com>2024-05-22 09:05:01 -0500
commit36861dfbf7d604735b3aafc42eac4f78bdbc02a1 (patch)
treef46d06817cb46479a5e25bdf132d68adc5bbad8b /mm/src/code
parent3e0771e566a863ddfa9cd23717f547b1f2f42bab (diff)
ADD: More HUD Editor Widescreen Support (#179)
* ADD: Key Counter, Skultula Counter TODO: Check why SKulltula counter texture doesn't move, TextureBlock??? * ADD: Skulltula icon position * Tweak: Whitespace * TWEAK: Skulltula Y value * FIX: Tatl
Diffstat (limited to 'mm/src/code')
-rw-r--r--mm/src/code/z_parameter.c122
1 files changed, 115 insertions, 7 deletions
diff --git a/mm/src/code/z_parameter.c b/mm/src/code/z_parameter.c
index 9e10d891c..4d538ba56 100644
--- a/mm/src/code/z_parameter.c
+++ b/mm/src/code/z_parameter.c
@@ -4289,8 +4289,33 @@ void Interface_DrawItemButtons(PlayState* play) {
gDPLoadTextureBlock_4b(OVERLAY_DISP++, cUpLabelTextures[gSaveContext.options.language], G_IM_FMT_IA, 32, 12,
0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
- gSPTextureRectangle(OVERLAY_DISP++, 0x03DC, 0x0048, 0x045C, 0x0078, G_TX_RENDERTILE, 0, 0, 1 << 10,
- 1 << 10);
+
+ // #region 2S2H [Cosmetic] Hud Editor
+ HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_C_UP);
+ if (HudEditor_ShouldOverrideDraw()) {
+ if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == HUD_EDITOR_ELEMENT_MODE_HIDDEN) {
+ hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
+ } else {
+ // All of this information was derived from the original call to gSPTextureRectangle below
+ s16 rectLeft = 0x03DC / 4;
+ s16 rectTop = 0x0048 / 4;
+ s16 rectWidth = 0x045C / 4;
+ s16 rectHeight = (0x0078 / 4) - rectTop;
+ s16 dsdx = 512;
+ s16 dtdy = 512;
+
+ HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
+
+ hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
+
+ gSPWideTextureRectangle(OVERLAY_DISP++, rectLeft << 2, rectTop << 2, (rectLeft + rectWidth) << 2,
+ (rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx << 1, dtdy << 1);
+ }
+ } else {
+ // #endregion
+ gSPTextureRectangle(OVERLAY_DISP++, 0x03DC, 0x0048, 0x045C, 0x0078, G_TX_RENDERTILE, 0, 0, 1 << 10,
+ 1 << 10);
+ }
}
sCUpTimer--;
@@ -6689,6 +6714,8 @@ void Interface_Draw(PlayState* play) {
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255);
+
+ HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_KEY_COUNTER);
OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, 26, 190, 16, 16,
1 << 10, 1 << 10);
@@ -6725,13 +6752,40 @@ void Interface_Draw(PlayState* play) {
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha);
+ HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_KEY_COUNTER);
OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, sCounterTextures[counterDigits[3]], 8, 16, sp2CA + 1,
191, 8, 16, 1 << 10, 1 << 10);
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
- gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 760, (sp2CA * 4) + 0x20, 824, G_TX_RENDERTILE, 0, 0,
- 1 << 10, 1 << 10);
+
+ // #region 2S2H [Cosmetic] Hud Editor
+ HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_KEY_COUNTER);
+ if (HudEditor_ShouldOverrideDraw()) {
+ if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == HUD_EDITOR_ELEMENT_MODE_HIDDEN) {
+ hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
+ } else {
+ // All of this information was derived from the original call to gSPTextureRectangle below
+ s16 rectLeft = sp2CA;
+ s16 rectTop = 760 / 4;
+ s16 rectWidth = 0x20 / 4;
+ s16 rectHeight = (824 / 4) - rectTop;
+ s16 dsdx = 512;
+ s16 dtdy = 512;
+
+ HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
+
+ hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
+
+ gSPWideTextureRectangle(OVERLAY_DISP++, rectLeft << 2, rectTop << 2,
+ (rectLeft + rectWidth) << 2, (rectTop + rectHeight) << 2,
+ G_TX_RENDERTILE, 0, 0, dsdx << 1, dtdy << 1);
+ }
+ // #endregion
+ } else {
+ gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 760, (sp2CA * 4) + 0x20, 824, G_TX_RENDERTILE, 0,
+ 0, 1 << 10, 1 << 10);
+ }
}
break;
@@ -6742,10 +6796,37 @@ void Interface_Draw(PlayState* play) {
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
+
gDPLoadTextureBlock(OVERLAY_DISP++, gGoldSkulltulaCounterIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 24, 24, // 2S2H [Port] This last 24 was 18 in the minibuild, not sure why
0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
- gSPTextureRectangle(OVERLAY_DISP++, 80, 748, 176, 820, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
+
+ // #region 2S2H [Cosmetic] Hud Editor
+ HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_SKULLTULA_COUNTER);
+ if (HudEditor_ShouldOverrideDraw()) {
+ if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == HUD_EDITOR_ELEMENT_MODE_HIDDEN) {
+ hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
+ } else {
+ // All of this information was derived from the original call to gSPTextureRectangle below
+ s16 rectLeft = 80 / 4;
+ s16 rectTop = 748 / 4;
+ s16 rectWidth = 176 / 4;
+ s16 rectHeight = (820 / 4) - rectTop;
+ s16 dsdx = 512;
+ s16 dtdy = 512;
+
+ HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
+
+ hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
+
+ gSPWideTextureRectangle(OVERLAY_DISP++, rectLeft << 2, rectTop << 2,
+ (rectLeft + rectWidth) << 2, (rectTop + rectHeight) << 2,
+ G_TX_RENDERTILE, 0, 0, dsdx << 1, dtdy << 1);
+ }
+ } else {
+ // #endregion
+ gSPTextureRectangle(OVERLAY_DISP++, 80, 748, 176, 820, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
+ }
// Gold Skulluta Counter
gDPPipeSync(OVERLAY_DISP++);
@@ -6779,13 +6860,40 @@ void Interface_Draw(PlayState* play) {
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha);
+ HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_SKULLTULA_COUNTER);
OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, sCounterTextures[counterDigits[3]], 8, 16, sp2CA + 1, 191,
8, 16, 1 << 10, 1 << 10);
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
- gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 760, (sp2CA * 4) + 0x20, 824, G_TX_RENDERTILE, 0, 0,
- 1 << 10, 1 << 10);
+
+ // #region 2S2H [Cosmetic] Hud Editor
+ HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_SKULLTULA_COUNTER);
+ if (HudEditor_ShouldOverrideDraw()) {
+ if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == HUD_EDITOR_ELEMENT_MODE_HIDDEN) {
+ hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
+ } else {
+ // All of this information was derived from the original call to gSPTextureRectangle below
+ s16 rectLeft = sp2CA;
+ s16 rectTop = 760 / 4;
+ s16 rectWidth = 0x20 / 4;
+ s16 rectHeight = (824 / 4) - rectTop;
+ s16 dsdx = 512;
+ s16 dtdy = 512;
+
+ HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
+
+ hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
+
+ gSPWideTextureRectangle(OVERLAY_DISP++, rectLeft << 2, rectTop << 2,
+ (rectLeft + rectWidth) << 2, (rectTop + rectHeight) << 2,
+ G_TX_RENDERTILE, 0, 0, dsdx << 1, dtdy << 1);
+ }
+ // #endregion
+ } else {
+ gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 760, (sp2CA * 4) + 0x20, 824, G_TX_RENDERTILE, 0,
+ 0, 1 << 10, 1 << 10);
+ }
break;
default: