summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
authorAndrew Piper <threax@users.noreply.github.com>2022-03-31 18:32:32 -0400
committerGitHub <noreply@github.com>2022-03-31 18:32:32 -0400
commit572e9fb9d0c6475f7bf9cf0801a50ff19c0567c5 (patch)
tree5697f9310f6fec9d03e74da2b761e944f1e70e40 /soh/src/code
parente7e80c2c956f5ab92a80982bd8ceb5e9c7c3a327 (diff)
Add an enhancement for a minimal ui. (#102)
This removes the button backgrounds, hides the hearts when they are full and the magic when its not in use. It also hides the rupee / key counters. All this is still visible on the pause screen or when the minimap is visible. It also changes the minimap behavior to be hidden by default on a zone change.
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_construct.c2
-rw-r--r--soh/src/code/z_parameter.c200
2 files changed, 113 insertions, 89 deletions
diff --git a/soh/src/code/z_construct.c b/soh/src/code/z_construct.c
index 2fd6d43ad..5149fd974 100644
--- a/soh/src/code/z_construct.c
+++ b/soh/src/code/z_construct.c
@@ -462,7 +462,7 @@ void func_80111070(void) {
WREG(28) = 0;
R_OW_MINIMAP_X = 238;
R_OW_MINIMAP_Y = 164;
- R_MINIMAP_DISABLED = false;
+ R_MINIMAP_DISABLED = CVar_GetS32("gMinimalUI", 0);
WREG(32) = 122;
WREG(33) = 60;
WREG(35) = 0;
diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c
index 8bce65a7b..1653cdaaf 100644
--- a/soh/src/code/z_parameter.c
+++ b/soh/src/code/z_parameter.c
@@ -3143,6 +3143,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
s16 svar4;
s16 svar5;
s16 svar6;
+ bool fullUi = !CVar_GetS32("gMinimalUI", 0) || !R_MINIMAP_DISABLED || globalCtx->pauseCtx.state != 0;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_parameter.c", 3405);
@@ -3158,111 +3159,123 @@ void Interface_Draw(GlobalContext* globalCtx) {
if (pauseCtx->debugState == 0) {
Interface_InitVertices(globalCtx);
func_8008A994(interfaceCtx);
- HealthMeter_Draw(globalCtx);
+ if (fullUi || gSaveContext.health != gSaveContext.healthCapacity) {
+ HealthMeter_Draw(globalCtx);
+ }
func_80094520(globalCtx->state.gfxCtx);
- // Rupee Icon
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 255, 100, interfaceCtx->magicAlpha);
- gDPSetEnvColor(OVERLAY_DISP++, 0, 80, 0, 255);
- OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26),
- 206, 16, 16, 1 << 10, 1 << 10);
-
- switch (globalCtx->sceneNum) {
- case SCENE_BMORI1:
- case SCENE_HIDAN:
- case SCENE_MIZUSIN:
- case SCENE_JYASINZOU:
- case SCENE_HAKADAN:
- case SCENE_HAKADANCH:
- case SCENE_ICE_DOUKUTO:
- case SCENE_GANON:
- case SCENE_MEN:
- case SCENE_GERUDOWAY:
- case SCENE_GANONTIKA:
- case SCENE_GANON_SONOGO:
- case SCENE_GANONTIKA_SONOGO:
- case SCENE_TAKARAYA:
- if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) {
- // Small Key Icon
- gDPPipeSync(OVERLAY_DISP++);
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha);
- gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255);
- OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26), 190, 16, 16,
- 1 << 10, 1 << 10);
+ if (fullUi) {
+ // Rupee Icon
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 255, 100, interfaceCtx->magicAlpha);
+ gDPSetEnvColor(OVERLAY_DISP++, 0, 80, 0, 255);
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26),
+ 206, 16, 16, 1 << 10, 1 << 10);
- // Small Key Counter
- gDPPipeSync(OVERLAY_DISP++);
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
- gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE,
- TEXEL0, 0, PRIMITIVE, 0);
-
- interfaceCtx->counterDigits[2] = 0;
- interfaceCtx->counterDigits[3] = gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex];
+ switch (globalCtx->sceneNum) {
+ case SCENE_BMORI1:
+ case SCENE_HIDAN:
+ case SCENE_MIZUSIN:
+ case SCENE_JYASINZOU:
+ case SCENE_HAKADAN:
+ case SCENE_HAKADANCH:
+ case SCENE_ICE_DOUKUTO:
+ case SCENE_GANON:
+ case SCENE_MEN:
+ case SCENE_GERUDOWAY:
+ case SCENE_GANONTIKA:
+ case SCENE_GANON_SONOGO:
+ case SCENE_GANONTIKA_SONOGO:
+ case SCENE_TAKARAYA:
+ if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) {
+ // Small Key Icon
+ gDPPipeSync(OVERLAY_DISP++);
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha);
+ gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255);
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26), 190, 16, 16,
+ 1 << 10, 1 << 10);
+
+ // Small Key Counter
+ gDPPipeSync(OVERLAY_DISP++);
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
+ gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE,
+ TEXEL0, 0, PRIMITIVE, 0);
+
+ interfaceCtx->counterDigits[2] = 0;
+ interfaceCtx->counterDigits[3] = gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex];
+
+ while (interfaceCtx->counterDigits[3] >= 10) {
+ interfaceCtx->counterDigits[2]++;
+ interfaceCtx->counterDigits[3] -= 10;
+ }
- while (interfaceCtx->counterDigits[3] >= 10) {
- interfaceCtx->counterDigits[2]++;
- interfaceCtx->counterDigits[3] -= 10;
- }
+ svar3 = OTRGetRectDimensionFromLeftEdge(42);
- svar3 = OTRGetRectDimensionFromLeftEdge(42);
+ if (interfaceCtx->counterDigits[2] != 0) {
+ OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)((u8*)digitTextures[interfaceCtx->counterDigits[2]])), 8,
+ 16, svar3, 190, 8, 16, 1 << 10, 1 << 10);
+ svar3 += 8;
+ }
- if (interfaceCtx->counterDigits[2] != 0) {
- OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)((u8*)digitTextures[interfaceCtx->counterDigits[2]])), 8,
- 16, svar3, 190, 8, 16, 1 << 10, 1 << 10);
- svar3 += 8;
+ OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP,
+ ((u8*)digitTextures[interfaceCtx->counterDigits[3]]), 8, 16,
+ svar3, 190, 8, 16, 1 << 10, 1 << 10);
}
+ break;
+ default:
+ break;
+ }
- OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP,
- ((u8*)digitTextures[interfaceCtx->counterDigits[3]]), 8, 16,
- svar3, 190, 8, 16, 1 << 10, 1 << 10);
- }
- break;
- default:
- break;
- }
+ // Rupee Counter
+ gDPPipeSync(OVERLAY_DISP++);
- // Rupee Counter
- gDPPipeSync(OVERLAY_DISP++);
+ if (gSaveContext.rupees == CUR_CAPACITY(UPG_WALLET)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha);
+ } else if (gSaveContext.rupees != 0) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
+ } else {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha);
+ }
- if (gSaveContext.rupees == CUR_CAPACITY(UPG_WALLET)) {
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha);
- } else if (gSaveContext.rupees != 0) {
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
- } else {
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha);
- }
+ gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0,
+ PRIMITIVE, 0);
- gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0,
- PRIMITIVE, 0);
+ interfaceCtx->counterDigits[0] = interfaceCtx->counterDigits[1] = 0;
+ interfaceCtx->counterDigits[2] = gSaveContext.rupees;
- interfaceCtx->counterDigits[0] = interfaceCtx->counterDigits[1] = 0;
- interfaceCtx->counterDigits[2] = gSaveContext.rupees;
+ if ((interfaceCtx->counterDigits[2] > 9999) || (interfaceCtx->counterDigits[2] < 0)) {
+ interfaceCtx->counterDigits[2] &= 0xDDD;
+ }
- if ((interfaceCtx->counterDigits[2] > 9999) || (interfaceCtx->counterDigits[2] < 0)) {
- interfaceCtx->counterDigits[2] &= 0xDDD;
- }
+ while (interfaceCtx->counterDigits[2] >= 100) {
+ interfaceCtx->counterDigits[0]++;
+ interfaceCtx->counterDigits[2] -= 100;
+ }
- while (interfaceCtx->counterDigits[2] >= 100) {
- interfaceCtx->counterDigits[0]++;
- interfaceCtx->counterDigits[2] -= 100;
- }
+ while (interfaceCtx->counterDigits[2] >= 10) {
+ interfaceCtx->counterDigits[1]++;
+ interfaceCtx->counterDigits[2] -= 10;
+ }
- while (interfaceCtx->counterDigits[2] >= 10) {
- interfaceCtx->counterDigits[1]++;
- interfaceCtx->counterDigits[2] -= 10;
- }
+ svar2 = rupeeDigitsFirst[CUR_UPG_VALUE(UPG_WALLET)];
+ svar5 = rupeeDigitsCount[CUR_UPG_VALUE(UPG_WALLET)];
- svar2 = rupeeDigitsFirst[CUR_UPG_VALUE(UPG_WALLET)];
- svar5 = rupeeDigitsCount[CUR_UPG_VALUE(UPG_WALLET)];
+ for (svar1 = 0, svar3 = 42; svar1 < svar5; svar1++, svar2++, svar3 += 8) {
+ OVERLAY_DISP =
+ Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[svar2]]), 8, 16,
+ OTRGetRectDimensionFromLeftEdge(svar3), 206, 8, 16, 1 << 10, 1 << 10);
+ }
+ }
+ else {
+ // Make sure item counts have black backgrounds
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha);
+ gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
+ }
- for (svar1 = 0, svar3 = 42; svar1 < svar5; svar1++, svar2++, svar3 += 8) {
- OVERLAY_DISP =
- Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[svar2]]), 8, 16,
- OTRGetRectDimensionFromLeftEdge(svar3), 206, 8, 16, 1 << 10, 1 << 10);
+ if (fullUi || gSaveContext.unk_13F0 > 0) {
+ Interface_DrawMagicBar(globalCtx);
}
- Interface_DrawMagicBar(globalCtx);
Minimap_Draw(globalCtx);
if ((R_PAUSE_MENU_MODE != 2) && (R_PAUSE_MENU_MODE != 3)) {
@@ -3271,7 +3284,9 @@ void Interface_Draw(GlobalContext* globalCtx) {
func_80094520(globalCtx->state.gfxCtx);
- Interface_DrawItemButtons(globalCtx);
+ if (fullUi) {
+ Interface_DrawItemButtons(globalCtx);
+ }
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha);
@@ -3281,10 +3296,17 @@ void Interface_Draw(GlobalContext* globalCtx) {
// B Button Icon & Ammo Count
if (gSaveContext.equips.buttonItems[0] != ITEM_NONE)
{
- Interface_DrawItemIconTexture(globalCtx, gItemIcons[gSaveContext.equips.buttonItems[0]], 0);
+ if (fullUi) {
+ Interface_DrawItemIconTexture(globalCtx, gItemIcons[gSaveContext.equips.buttonItems[0]], 0);
+ }
if ((player->stateFlags1 & 0x00800000) || (globalCtx->shootingGalleryStatus > 1) ||
((globalCtx->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(globalCtx, 0x38))) {
+
+ if (!fullUi) {
+ Interface_DrawItemIconTexture(globalCtx, gItemIcons[gSaveContext.equips.buttonItems[0]], 0);
+ }
+
gDPPipeSync(OVERLAY_DISP++);
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE,
0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
@@ -3357,7 +3379,9 @@ void Interface_Draw(GlobalContext* globalCtx) {
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_A_BTN_COLOR(0), R_A_BTN_COLOR(1), R_A_BTN_COLOR(2),
interfaceCtx->aAlpha);
- Interface_DrawActionButton(globalCtx, rABtnX, R_A_BTN_Y);
+ if (fullUi) {
+ Interface_DrawActionButton(globalCtx, rABtnX, R_A_BTN_Y);
+ }
gDPPipeSync(OVERLAY_DISP++);
const f32 rAIconX = OTRGetDimensionFromRightEdge(R_A_ICON_X);
//func_8008A8B8(globalCtx, R_A_ICON_Y, R_A_ICON_Y + 45, rAIconX, rAIconX + 45);