summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
authorBaoulettes <perlouzerie@hotmail.fr>2022-05-03 00:25:37 +0200
committerGitHub <noreply@github.com>2022-05-02 18:25:37 -0400
commit8c18b4b0571c951fabbddb879762a13028ca8ca2 (patch)
treea30dff5ff3d165a58b81fb08b275eaacc7b7c388 /soh/src/code
parent43294d66b5202bf719b805d2103ccac19132feda (diff)
Fix dungeon entrance icon + feature (#252)
* Add Cvar stuff and fix dungeon entrance icons * Added Cvar toggles * Move fixes to fix sub menu
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_map_exp.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/soh/src/code/z_map_exp.c b/soh/src/code/z_map_exp.c
index cfef800c9..e97a1a1a5 100644
--- a/soh/src/code/z_map_exp.c
+++ b/soh/src/code/z_map_exp.c
@@ -737,21 +737,33 @@ void Minimap_Draw(GlobalContext* globalCtx) {
if (((globalCtx->sceneNum != SCENE_SPOT01) && (globalCtx->sceneNum != SCENE_SPOT04) &&
(globalCtx->sceneNum != SCENE_SPOT08)) ||
(LINK_AGE_IN_YEARS != YEARS_ADULT)) {
+ s16 IconSize = 8;
+ s16 PosX = gMapData->owEntranceIconPosX[sEntranceIconMapIndex];
+ s16 PosY = gMapData->owEntranceIconPosY[sEntranceIconMapIndex];
+ //gFixDungeonMinimapIcon fix both Y position of visible icon and hide these non needed.
+ if (CVar_GetS32("gFixDungeonMinimapIcon", 1) != 0){
+ //No idea why and how Original value work but this does actually fix them all.
+ PosY = PosY+1024;
+ }
+ s16 TopLeftX = OTRGetRectDimensionFromRightEdge(PosX) << 2;
+ s16 TopLeftY = PosY << 2;
+ s16 TopLeftW = OTRGetRectDimensionFromRightEdge(PosX + IconSize) << 2;
+ s16 TopLeftH = (PosY + IconSize) << 2;
if ((gMapData->owEntranceFlag[sEntranceIconMapIndex] == 0xFFFF) ||
((gMapData->owEntranceFlag[sEntranceIconMapIndex] != 0xFFFF) &&
(gSaveContext.infTable[26] & gBitFlags[gMapData->owEntranceFlag[mapIndex]]))) {
-
+ if (gMapData->owEntranceIconPosY[sEntranceIconMapIndex] << 2 != 0 && CVar_GetS32("gFixDungeonMinimapIcon", 1) != 0){
+ gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b,
+ IconSize, IconSize, 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);
+ gSPWideTextureRectangle(OVERLAY_DISP++, TopLeftX, TopLeftY, TopLeftW, TopLeftH, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
+ }
+ } else if (CVar_GetS32("gAlwaysShowDungeonMinimapIcon", 0) != 0){ //Ability to show entrance Before beating the dungeon itself
gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b,
- 8, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
+ IconSize, IconSize, 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);
-
- gSPWideTextureRectangle(OVERLAY_DISP++,
- OTRGetRectDimensionFromLeftEdge(gMapData->owEntranceIconPosX[sEntranceIconMapIndex]) << 2,
- gMapData->owEntranceIconPosY[sEntranceIconMapIndex] << 2,
- OTRGetRectDimensionFromLeftEdge(gMapData->owEntranceIconPosX[sEntranceIconMapIndex] + 8) << 2,
- (gMapData->owEntranceIconPosY[sEntranceIconMapIndex] + 8) << 2,
- G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
- }
+ gSPWideTextureRectangle(OVERLAY_DISP++, TopLeftX, TopLeftY, TopLeftW, TopLeftH, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
+ }
}
if ((globalCtx->sceneNum == SCENE_SPOT08) && (gSaveContext.infTable[26] & gBitFlags[9])) {