summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_actor.c60
-rw-r--r--soh/src/code/z_eff_blure.c29
-rw-r--r--soh/src/code/z_lifemeter.c116
-rw-r--r--soh/src/code/z_map_exp.c206
-rw-r--r--soh/src/code/z_map_mark.c71
-rw-r--r--soh/src/code/z_message_PAL.c241
-rw-r--r--soh/src/code/z_parameter.c1220
7 files changed, 1693 insertions, 250 deletions
diff --git a/soh/src/code/z_actor.c b/soh/src/code/z_actor.c
index dbcb577d4..79ae75d56 100644
--- a/soh/src/code/z_actor.c
+++ b/soh/src/code/z_actor.c
@@ -780,7 +780,9 @@ void Flags_SetCollectible(GlobalContext* globalCtx, s32 flag) {
}
void func_8002CDE4(GlobalContext* globalCtx, TitleCardContext* titleCtx) {
- titleCtx->durationTimer = titleCtx->delayTimer = titleCtx->intensity = titleCtx->alpha = 0;
+ titleCtx->durationTimer = titleCtx->delayTimer = titleCtx->intensityR = titleCtx->alpha = 0;
+ titleCtx->durationTimer = titleCtx->delayTimer = titleCtx->intensityG = titleCtx->alpha = 0;
+ titleCtx->durationTimer = titleCtx->delayTimer = titleCtx->intensityB = titleCtx->alpha = 0;
}
void TitleCard_InitBossName(GlobalContext* globalCtx, TitleCardContext* titleCtx, void* texture, s16 x, s16 y, u8 width,
@@ -803,7 +805,6 @@ void TitleCard_InitBossName(GlobalContext* globalCtx, TitleCardContext* titleCtx
void TitleCard_InitPlaceName(GlobalContext* globalCtx, TitleCardContext* titleCtx, void* texture, s32 x, s32 y,
s32 width, s32 height, s32 delay) {
SceneTableEntry* loadedScene = globalCtx->loadedScene;
-
// size_t size = loadedScene->titleFile.vromEnd - loadedScene->titleFile.vromStart;
switch (globalCtx->sceneNum) {
case SCENE_YDAN:
@@ -1021,13 +1022,32 @@ void TitleCard_InitPlaceName(GlobalContext* globalCtx, TitleCardContext* titleCt
}
void TitleCard_Update(GlobalContext* globalCtx, TitleCardContext* titleCtx) {
+ s16* TitleCard_Colors[3] = {255,255,255};
+ if (titleCtx->isBossCard && CVar_GetS32("gHudColors", 1) == 2) {//Bosses cards.
+ TitleCard_Colors[0] = CVar_GetS32("gCCTC_B_U_PrimR", 255);
+ TitleCard_Colors[1] = CVar_GetS32("gCCTC_B_U_PrimG", 255);
+ TitleCard_Colors[2] = CVar_GetS32("gCCTC_B_U_PrimB", 255);
+ } else if (!titleCtx->isBossCard && CVar_GetS32("gHudColors", 1) == 2) {
+ TitleCard_Colors[0] = CVar_GetS32("gCCTC_OW_U_PrimR", 255);
+ TitleCard_Colors[1] = CVar_GetS32("gCCTC_OW_U_PrimG", 255);
+ TitleCard_Colors[2] = CVar_GetS32("gCCTC_OW_U_PrimB", 255);
+ } else {
+ TitleCard_Colors[0] = 255;
+ TitleCard_Colors[1] = 255;
+ TitleCard_Colors[2] = 255;
+ }
+
if (DECR(titleCtx->delayTimer) == 0) {
if (DECR(titleCtx->durationTimer) == 0) {
Math_StepToS(&titleCtx->alpha, 0, 30);
- Math_StepToS(&titleCtx->intensity, 0, 70);
+ Math_StepToS(&titleCtx->intensityR, 0, 70);
+ Math_StepToS(&titleCtx->intensityG, 0, 70);
+ Math_StepToS(&titleCtx->intensityB, 0, 70);
} else {
Math_StepToS(&titleCtx->alpha, 255, 10);
- Math_StepToS(&titleCtx->intensity, 255, 20);
+ Math_StepToS(&titleCtx->intensityR, TitleCard_Colors[0], 20);
+ Math_StepToS(&titleCtx->intensityG, TitleCard_Colors[1], 20);
+ Math_StepToS(&titleCtx->intensityB, TitleCard_Colors[2], 20);
}
}
}
@@ -1047,8 +1067,30 @@ void TitleCard_Draw(GlobalContext* globalCtx, TitleCardContext* titleCtx) {
if (titleCtx->alpha != 0) {
width = titleCtx->width;
height = titleCtx->height;
- titleX = (titleCtx->x * 4) - (width * 2);
- titleY = (titleCtx->y * 4) - (height * 2);
+ s16 TitleCard_PosX_Modifier = (titleCtx->isBossCard ? CVar_GetS32("gTCBPosX", 0) : CVar_GetS32("gTCMPosX", 0));
+ s16 TitleCard_PosY_Modifier = (titleCtx->isBossCard ? CVar_GetS32("gTCBPosY", 0) : CVar_GetS32("gTCMPosY", 0));
+ s16 TitleCard_PosType_Checker = (titleCtx->isBossCard ? CVar_GetS32("gTCBPosType", 0) : CVar_GetS32("gTCMPosType", 0));
+ s16 TitleCard_Margin_Checker = (titleCtx->isBossCard ? CVar_GetS32("gTCBUseMargins", 0) : CVar_GetS32("gTCMUseMargins", 0));
+ s16 TitleCard_MarginX = 0;
+ s16 TitleCard_PosX = titleCtx->x;
+ s16 TitleCard_PosY = titleCtx->y;
+ if (TitleCard_PosType_Checker != 0) {
+ TitleCard_PosY = TitleCard_PosY_Modifier;
+ if (TitleCard_PosType_Checker == 1) {//Anchor Left
+ if (TitleCard_Margin_Checker != 0) {TitleCard_MarginX = CVar_GetS32("gHUDMargin_L", 0)*-1;};
+ TitleCard_PosX = OTRGetDimensionFromLeftEdge(TitleCard_PosX_Modifier+TitleCard_MarginX)-11;
+ } else if (TitleCard_PosType_Checker == 2) {//Anchor Right
+ if (TitleCard_Margin_Checker != 0) {TitleCard_MarginX = CVar_GetS32("gHUDMargin_R", 0);};
+ TitleCard_PosX = OTRGetDimensionFromRightEdge(TitleCard_PosX_Modifier+TitleCard_MarginX);
+ } else if (TitleCard_PosType_Checker == 3) {//Anchor None
+ TitleCard_PosX = TitleCard_PosX_Modifier;
+ } else if (TitleCard_PosType_Checker == 4) {//Hidden
+ TitleCard_PosX = -9999;
+ }
+ }
+
+ titleX = (TitleCard_PosX * 4) - (width * 2);
+ titleY = (TitleCard_PosY * 4) - (height * 2);
doubleWidth = width * 2;
OPEN_DISPS(globalCtx->state.gfxCtx);
@@ -1075,7 +1117,7 @@ void TitleCard_Draw(GlobalContext* globalCtx, TitleCardContext* titleCtx) {
// WORLD_OVERLAY_DISP Goes over POLY_XLU_DISP but under POLY_KAL_DISP
WORLD_OVERLAY_DISP = func_80093808(WORLD_OVERLAY_DISP);
- gDPSetPrimColor(WORLD_OVERLAY_DISP++, 0, 0, (u8)titleCtx->intensity, (u8)titleCtx->intensity, (u8)titleCtx->intensity,
+ gDPSetPrimColor(WORLD_OVERLAY_DISP++, 0, 0, (u8)titleCtx->intensityR, (u8)titleCtx->intensityG, (u8)titleCtx->intensityB,
(u8)titleCtx->alpha);
gDPLoadTextureBlock(WORLD_OVERLAY_DISP++, (uintptr_t)titleCtx->texture + textureLanguageOffset + shiftTopY, G_IM_FMT_IA,
@@ -1083,7 +1125,7 @@ void TitleCard_Draw(GlobalContext* globalCtx, TitleCardContext* titleCtx) {
width, height, 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);
//Removing the -1 there remove the gap between top and bottom textures.
- gSPTextureRectangle(WORLD_OVERLAY_DISP++, titleX, titleY, ((doubleWidth * 2) + titleX) - 4, titleY + (height * 4),
+ gSPWideTextureRectangle(WORLD_OVERLAY_DISP++, titleX, titleY, ((doubleWidth * 2) + titleX) - 4, titleY + (height * 4),
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
height = titleCtx->height - height;
@@ -1095,7 +1137,7 @@ void TitleCard_Draw(GlobalContext* globalCtx, TitleCardContext* titleCtx) {
G_IM_SIZ_8b, width, height, 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);
//Removing the -1 there remove the gap between top and bottom textures.
- gSPTextureRectangle(WORLD_OVERLAY_DISP++, titleX, titleSecondY, ((doubleWidth * 2) + titleX) - 4,
+ gSPWideTextureRectangle(WORLD_OVERLAY_DISP++, titleX, titleSecondY, ((doubleWidth * 2) + titleX) - 4,
titleSecondY + (height * 4), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
}
diff --git a/soh/src/code/z_eff_blure.c b/soh/src/code/z_eff_blure.c
index dc2793b75..47477f787 100644
--- a/soh/src/code/z_eff_blure.c
+++ b/soh/src/code/z_eff_blure.c
@@ -194,6 +194,10 @@ void EffectBlure_Destroy(void* thisx) {
s32 EffectBlure_Update(void* thisx) {
EffectBlure* this = (EffectBlure*)thisx;
s32 i;
+ s16 RedColor;
+ s16 GreenColor;
+ s16 BlueColor;
+ s16 TrailDuration;
if (this == NULL) {
return 0;
@@ -203,6 +207,31 @@ s32 EffectBlure_Update(void* thisx) {
return 0;
}
+ if (CVar_GetS32("gUseTrailsCol", 0) !=0) {
+ RedColor = CVar_GetS32("gTrailColR",255);
+ GreenColor = CVar_GetS32("gTrailColG",255);
+ BlueColor = CVar_GetS32("gTrailColB",255);
+ TrailDuration = 4.0f*CVar_GetS32("gTrailDurantion",1);
+ } else {
+ RedColor = 255;
+ GreenColor = 255;
+ BlueColor = 255;
+ TrailDuration=4.0f;
+ }
+ this->p1StartColor.r = RedColor;
+ this->p2StartColor.r = RedColor;
+ this->p1EndColor.r = RedColor;
+ this->p2EndColor.r = RedColor;
+ this->p1StartColor.g = GreenColor;
+ this->p2StartColor.g = GreenColor;
+ this->p1EndColor.g = GreenColor;
+ this->p2EndColor.g = GreenColor;
+ this->p1StartColor.b = BlueColor;
+ this->p2StartColor.b = BlueColor;
+ this->p1EndColor.b = BlueColor;
+ this->p2EndColor.b = BlueColor;
+ this->elemDuration = TrailDuration;
+
while (true) {
if (this->elements[0].state == 0) {
for (i = 0; i < 15; i++) {
diff --git a/soh/src/code/z_lifemeter.c b/soh/src/code/z_lifemeter.c
index 43fd66084..e1bafb3d2 100644
--- a/soh/src/code/z_lifemeter.c
+++ b/soh/src/code/z_lifemeter.c
@@ -181,17 +181,10 @@ void HealthMeter_Update(GlobalContext* globalCtx) {
s16 gFactor;
s16 bFactor;
- if (CVar_GetS32("gHUDMargins", 0) != 0) {
- Top_LM_Margin = CVar_GetS32("gHUDMargin_T", 0);
- Left_LM_Margin = CVar_GetS32("gHUDMargin_L", 0);
- Right_LM_Margin = CVar_GetS32("gHUDMargin_R", 0);
- Bottom_LM_Margin = CVar_GetS32("gHUDMargin_B", 0);
- } else {
- Top_LM_Margin = 0;
- Left_LM_Margin = 0;
- Right_LM_Margin = 0;
- Bottom_LM_Margin = 0;
- }
+ Top_LM_Margin = CVar_GetS32("gHUDMargin_T", 0);
+ Left_LM_Margin = CVar_GetS32("gHUDMargin_L", 0);
+ Right_LM_Margin = CVar_GetS32("gHUDMargin_R", 0);
+ Bottom_LM_Margin = CVar_GetS32("gHUDMargin_B", 0);
if (CVar_GetS32("gHudColors", 1) == 2) {
HeartInner[0] = CVar_GetS32("gCCHeartsPrimR", sHeartsPrimColors[0][0]);
@@ -274,21 +267,25 @@ void HealthMeter_Update(GlobalContext* globalCtx) {
sHeartsDDEnv[0][2] = HeartDDInner[2];
if (CVar_GetS32("gHudColors", 1) == 2) {
- sHeartsDDPrim[2][0] = HeartInner[0];
- sHeartsDDPrim[2][1] = HeartInner[1];
- sHeartsDDPrim[2][2] = HeartInner[2];
+ sHeartsDDPrim[2][0] = CVar_GetS32("gCCDDHeartsPrimR", 255);
+ sHeartsDDPrim[2][1] = CVar_GetS32("gCCDDHeartsPrimG", 70);
+ sHeartsDDPrim[2][2] = CVar_GetS32("gCCDDHeartsPrimB", 50);
sHeartsDDPrim[1][0] = HeartDDOutline[0];
sHeartsDDPrim[1][1] = HeartDDOutline[1];
sHeartsDDPrim[1][2] = HeartDDOutline[2];
- sHeartsDDEnv[1][0] = HeartDDInner[0];
- sHeartsDDEnv[1][1] = HeartDDInner[1];
- sHeartsDDEnv[1][2] = HeartDDInner[2];
+ sHeartsDDEnv[1][0] = CVar_GetS32("gCCDDHeartsPrimR", 255);
+ sHeartsDDEnv[1][1] = CVar_GetS32("gCCDDHeartsPrimG", 70);
+ sHeartsDDEnv[1][2] = CVar_GetS32("gCCDDHeartsPrimB", 50);
- HeartDDInner[0] = HeartInner[0];
- HeartDDInner[1] = HeartInner[1];
- HeartDDInner[2] = HeartInner[2];
+ HeartDDInner[0] = CVar_GetS32("gCCDDHeartsPrimR", 255);
+ HeartDDInner[1] = CVar_GetS32("gCCDDHeartsPrimG", 70);
+ HeartDDInner[2] = CVar_GetS32("gCCDDHeartsPrimB", 50);
+
+ sHeartsDDEnv[0][0] = CVar_GetS32("gCCDDHeartsPrimR", 255);
+ sHeartsDDEnv[0][1] = CVar_GetS32("gCCDDHeartsPrimG", 70);
+ sHeartsDDEnv[0][2] = CVar_GetS32("gCCDDHeartsPrimB", 0);
rFactor = sHeartsDDPrimFactors[ddType][0] * ddFactor;
gFactor = sHeartsDDPrimFactors[ddType][1] * ddFactor;
@@ -305,18 +302,22 @@ void HealthMeter_Update(GlobalContext* globalCtx) {
sBeatingHeartsDDEnv[0] = (u8)(rFactor + HeartDDInner[0]) & 0xFF;
sBeatingHeartsDDEnv[1] = (u8)(gFactor + HeartDDInner[1]) & 0xFF;
sBeatingHeartsDDEnv[2] = (u8)(bFactor + HeartDDInner[2]) & 0xFF;
- } else {
- // sHeartsDDPrim[2][0] = HEARTS_PRIM_R;
- // sHeartsDDPrim[2][1] = HEARTS_PRIM_G;
- // sHeartsDDPrim[2][2] = HEARTS_PRIM_B;
+ } else {
+ sHeartsDDPrim[0][0] = HEARTS_DD_PRIM_R;
+ sHeartsDDPrim[0][1] = HEARTS_DD_PRIM_G;
+ sHeartsDDPrim[0][2] = HEARTS_DD_PRIM_B;
- sHeartsDDPrim[1][0] = HEARTS_DD_PRIM_R;
- sHeartsDDPrim[1][1] = HEARTS_DD_PRIM_G;
- sHeartsDDPrim[1][2] = HEARTS_DD_PRIM_B;
+ sHeartsDDEnv[0][0] = HEARTS_DD_ENV_R;
+ sHeartsDDEnv[0][1] = HEARTS_DD_ENV_G;
+ sHeartsDDEnv[0][2] = HEARTS_DD_ENV_B;
- sHeartsDDEnv[1][0] = HEARTS_PRIM_R;
- sHeartsDDEnv[1][1] = HEARTS_PRIM_G;
- sHeartsDDEnv[1][2] = HEARTS_PRIM_B;
+ sHeartsDDPrim[1][0] = sHeartsDDPrimColors[ddType][0];
+ sHeartsDDPrim[1][1] = sHeartsDDPrimColors[ddType][1];
+ sHeartsDDPrim[1][2] = sHeartsDDPrimColors[ddType][2];
+
+ sHeartsDDEnv[1][0] = sHeartsDDEnvColors[ddType][0];
+ sHeartsDDEnv[1][1] = sHeartsDDEnvColors[ddType][1];
+ sHeartsDDEnv[1][2] = sHeartsDDEnvColors[ddType][2];
rFactor = sHeartsDDPrimFactors[ddType][0] * ddFactor;
gFactor = sHeartsDDPrimFactors[ddType][1] * ddFactor;
@@ -330,9 +331,9 @@ void HealthMeter_Update(GlobalContext* globalCtx) {
gFactor = sHeartsDDEnvFactors[ddType][1] * ddFactor;
bFactor = sHeartsDDEnvFactors[ddType][2] * ddFactor;
- sBeatingHeartsDDEnv[0] = (u8)(rFactor + HEARTS_PRIM_R) & 0xFF;
- sBeatingHeartsDDEnv[1] = (u8)(gFactor + HEARTS_PRIM_G) & 0xFF;
- sBeatingHeartsDDEnv[2] = (u8)(bFactor + HEARTS_PRIM_B) & 0xFF;
+ sBeatingHeartsDDEnv[0] = (u8)(rFactor + HEARTS_DD_ENV_R) & 0xFF;
+ sBeatingHeartsDDEnv[1] = (u8)(gFactor + HEARTS_DD_ENV_G) & 0xFF;
+ sBeatingHeartsDDEnv[2] = (u8)(bFactor + HEARTS_DD_ENV_B) & 0xFF;
}
}
@@ -419,8 +420,33 @@ void HealthMeter_Draw(GlobalContext* globalCtx) {
}
curColorSet = -1;
- offsetY = 0.0f+(Top_LM_Margin*-1);
- offsetX = OTRGetDimensionFromLeftEdge(0.0f)+(Left_LM_Margin*-1);
+ s16 X_Margins;
+ s16 Y_Margins;
+ if (CVar_GetS32("gHeartsUseMargins", 0) != 0) {
+ X_Margins = Left_LM_Margin;
+ Y_Margins = (Top_LM_Margin*-1);
+ } else {
+ X_Margins = 0;
+ Y_Margins = 0;
+ }
+ s16 PosX_original = OTRGetDimensionFromLeftEdge(0.0f)+X_Margins;
+ s16 PosY_original = 0.0f+Y_Margins;
+ if (CVar_GetS32("gHeartsCountPosType", 0) != 0) {
+ offsetY = CVar_GetS32("gHeartsPosY", 0)+Y_Margins;
+ if (CVar_GetS32("gHeartsCountPosType", 0) == 1) {//Anchor Left
+ offsetX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gHeartsPosX", 0)+X_Margins);
+ } else if (CVar_GetS32("gHeartsCountPosType", 0) == 2) {//Anchor Right
+ X_Margins = Right_LM_Margin;
+ offsetX = OTRGetDimensionFromRightEdge(CVar_GetS32("gHeartsPosX", 0)+X_Margins);
+ } else if (CVar_GetS32("gHeartsCountPosType", 0) == 3) {//Anchor None
+ offsetX = CVar_GetS32("gHeartsPosX", 0);
+ } else if (CVar_GetS32("gHeartsCountPosType", 0) == 4) {//Hidden
+ offsetX = -9999;
+ }
+ } else {
+ offsetY = PosY_original;
+ offsetX = PosX_original;
+ }
for (i = 0; i < totalHeartCount; i++) {
if ((ddHeartCountMinusOne < 0) || (i > ddHeartCountMinusOne)) {
@@ -579,8 +605,24 @@ void HealthMeter_Draw(GlobalContext* globalCtx) {
offsetX += 10.0f;
if (i == 9) {
- offsetY += 10.0f;
- offsetX = OTRGetDimensionFromLeftEdge(0.0f)+(Left_LM_Margin*-1);
+ PosX_original = OTRGetDimensionFromLeftEdge(0.0f)+X_Margins;
+ PosY_original = 10.0f+Y_Margins;
+ if (CVar_GetS32("gHeartsCountPosType", 0) != 0) {
+ offsetY = CVar_GetS32("gHeartsPosY", 0)+Y_Margins+10.0f;
+ if (CVar_GetS32("gHeartsCountPosType", 0) == 1) {//Anchor Left
+ offsetX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gHeartsPosX", 0)+X_Margins);
+ } else if (CVar_GetS32("gHeartsCountPosType", 0) == 2) {//Anchor Right
+ X_Margins = Right_LM_Margin;
+ offsetX = OTRGetDimensionFromRightEdge(CVar_GetS32("gHeartsPosX", 0)+X_Margins);
+ } else if (CVar_GetS32("gHeartsCountPosType", 0) == 3) {//Anchor None
+ offsetX = CVar_GetS32("gHeartsPosX", 0);
+ } else if (CVar_GetS32("gHeartsCountPosType", 0) == 4) {//Hidden
+ offsetX = -9999;
+ }
+ } else {
+ offsetY = PosY_original;
+ offsetX = PosX_original;
+ }
}
}
diff --git a/soh/src/code/z_map_exp.c b/soh/src/code/z_map_exp.c
index 4b1e05c89..a636a0abf 100644
--- a/soh/src/code/z_map_exp.c
+++ b/soh/src/code/z_map_exp.c
@@ -598,22 +598,55 @@ void Minimap_DrawCompassIcons(GlobalContext* globalCtx) {
s32 pad;
Player* player = GET_PLAYER(globalCtx);
s16 tempX, tempZ;
+ s16 X_Margins_Minimap;
+ s16 Y_Margins_Minimap;
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {
+ if (CVar_GetS32("gMinimapPosType", 0) == 0) {X_Margins_Minimap = Right_MM_Margin;};
+ Y_Margins_Minimap = Bottom_MM_Margin;
+ } else {
+ X_Margins_Minimap = 0;
+ Y_Margins_Minimap = 0;
+ }
OPEN_DISPS(globalCtx->state.gfxCtx);
if (globalCtx->interfaceCtx.minimapAlpha >= 0xAA) {
func_80094A14(globalCtx->state.gfxCtx);
+ //Player current position (yellow arrow)
gSPMatrix(OVERLAY_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0,
PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
gDPSetCombineMode(OVERLAY_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
- tempX = player->actor.world.pos.x+Right_MM_Margin;
- tempZ = player->actor.world.pos.z+Bottom_MM_Margin;
+
+ tempX = player->actor.world.pos.x;
+ tempZ = player->actor.world.pos.z;
tempX /= R_COMPASS_SCALE_X;
tempZ /= R_COMPASS_SCALE_Y;
- Matrix_Translate(OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X+(Right_MM_Margin*10) + tempX) / 10.0f), (R_COMPASS_OFFSET_Y+((Bottom_MM_Margin*10)*-1) - tempZ) / 10.0f, 0.0f, MTXMODE_NEW);
+ if (CVar_GetS32("gMinimapPosType", 0) != 0) {
+ if (CVar_GetS32("gMinimapPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;};
+ Matrix_Translate(
+ OTRGetDimensionFromLeftEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVar_GetS32("gMinimapPosX", 0)*10)) / 10.0f),
+ (R_COMPASS_OFFSET_Y + ((Y_Margins_Minimap*10)*-1) - tempZ + ((CVar_GetS32("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;};
+ Matrix_Translate(
+ OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVar_GetS32("gMinimapPosX", 0)*10)) / 10.0f),
+ (R_COMPASS_OFFSET_Y +((Y_Margins_Minimap*10)*-1) - tempZ + ((CVar_GetS32("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 3) {//Anchor None
+ Matrix_Translate(
+ (R_COMPASS_OFFSET_X + tempX + (CVar_GetS32("gMinimapPosX", 0)*10) / 10.0f),
+ (R_COMPASS_OFFSET_Y + ((Y_Margins_Minimap*10)*-1) - tempZ + ((CVar_GetS32("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 4) {//Hidden
+ Matrix_Translate(
+ (R_COMPASS_OFFSET_X+(9999*10) + tempX / 10.0f),
+ (R_COMPASS_OFFSET_Y+(9999*10) - tempZ) / 10.0f, 0.0f, MTXMODE_NEW);
+ }
+ } else {
+ Matrix_Translate(OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X+(X_Margins_Minimap*10) + tempX) / 10.0f), (R_COMPASS_OFFSET_Y+((Y_Margins_Minimap*10)*-1) - tempZ) / 10.0f, 0.0f, MTXMODE_NEW);
+ }
Matrix_Scale(0.4f, 0.4f, 0.4f, MTXMODE_APPLY);
Matrix_RotateX(-1.6f, MTXMODE_APPLY);
tempX = (0x7FFF - player->actor.shape.rot.y) / 0x400;
@@ -621,21 +654,52 @@ void Minimap_DrawCompassIcons(GlobalContext* globalCtx) {
gSPMatrix(OVERLAY_DISP++, MATRIX_NEWMTX(globalCtx->state.gfxCtx),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 255, 0, 255);
+ if (CVar_GetS32("gHudColors", 1) == 2) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0xFF, CVar_GetS32("gCCMinimapCPPrimR", 200), CVar_GetS32("gCCMinimapCPPrimG", 255), CVar_GetS32("gCCMinimapCPPrimB", 0), 255);
+ } else {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0xFF, 200, 255, 0, 255);
+ }
gSPDisplayList(OVERLAY_DISP++, gCompassArrowDL);
- tempX = sPlayerInitialPosX+Right_MM_Margin;
- tempZ = sPlayerInitialPosZ+Bottom_MM_Margin;
+ //Player map entry (red arrow)
+ tempX = sPlayerInitialPosX+X_Margins_Minimap;
+ tempZ = sPlayerInitialPosZ+Y_Margins_Minimap;
tempX /= R_COMPASS_SCALE_X;
tempZ /= R_COMPASS_SCALE_Y;
- Matrix_Translate(OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X+(Right_MM_Margin*10) + tempX) / 10.0f), (R_COMPASS_OFFSET_Y+((Bottom_MM_Margin*10)*-1) - tempZ) / 10.0f, 0.0f, MTXMODE_NEW);
+ if (CVar_GetS32("gMinimapPosType", 0) != 0) {
+ if (CVar_GetS32("gMinimapPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;};
+ Matrix_Translate(
+ OTRGetDimensionFromLeftEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVar_GetS32("gMinimapPosX", 0)*10)) / 10.0f),
+ (R_COMPASS_OFFSET_Y + ((Y_Margins_Minimap*10)*-1) - tempZ + ((CVar_GetS32("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;};
+ Matrix_Translate(
+ OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVar_GetS32("gMinimapPosX", 0)*10)) / 10.0f),
+ (R_COMPASS_OFFSET_Y +((Y_Margins_Minimap*10)*-1) - tempZ + ((CVar_GetS32("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 3) {//Anchor None
+ Matrix_Translate(
+ (R_COMPASS_OFFSET_X + tempX + (CVar_GetS32("gMinimapPosX", 0)*10) / 10.0f),
+ (R_COMPASS_OFFSET_Y - tempZ + ((CVar_GetS32("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 4) {//Hidden
+ Matrix_Translate(
+ (R_COMPASS_OFFSET_X+(9999*10) + tempX / 10.0f),
+ (R_COMPASS_OFFSET_Y+(9999*10) - tempZ) / 10.0f, 0.0f, MTXMODE_NEW);
+ }
+ } else {
+ Matrix_Translate(OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X+(X_Margins_Minimap*10) + tempX) / 10.0f), (R_COMPASS_OFFSET_Y+((Y_Margins_Minimap*10)*-1) - tempZ) / 10.0f, 0.0f, MTXMODE_NEW);
+ }
Matrix_Scale(VREG(9) / 100.0f, VREG(9) / 100.0f, VREG(9) / 100.0f, MTXMODE_APPLY);
Matrix_RotateX(VREG(52) / 10.0f, MTXMODE_APPLY);
Matrix_RotateY(sPlayerInitialDirection / 10.0f, MTXMODE_APPLY);
gSPMatrix(OVERLAY_DISP++, MATRIX_NEWMTX(globalCtx->state.gfxCtx),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0xFF, 200, 0, 0, 255);
+ if (CVar_GetS32("gHudColors", 1) == 2) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0xFF, CVar_GetS32("gCCMinimapLEPrimR", 200), CVar_GetS32("gCCMinimapLEPrimG", 0), CVar_GetS32("gCCMinimapLEPrimB", 0), 255);
+ } else {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0xFF, 200, 0, 0, 255);
+ }
gSPDisplayList(OVERLAY_DISP++, gCompassArrowDL);
}
@@ -650,6 +714,17 @@ void Minimap_Draw(GlobalContext* globalCtx) {
OPEN_DISPS(globalCtx->state.gfxCtx);
if (globalCtx->pauseCtx.state < 4) {
+ //Minimap margins
+ s16 X_Margins_Minimap;
+ s16 Y_Margins_Minimap;
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {
+ if (CVar_GetS32("gMinimapPosType", 0) == 0) {X_Margins_Minimap = Right_MM_Margin;};
+ Y_Margins_Minimap = Bottom_MM_Margin;
+ } else {
+ X_Margins_Minimap = 0;
+ Y_Margins_Minimap = 0;
+ }
+
switch (globalCtx->sceneNum) {
case SCENE_YDAN:
case SCENE_DDAN:
@@ -668,7 +743,7 @@ void Minimap_Draw(GlobalContext* globalCtx) {
if (CHECK_DUNGEON_ITEM(DUNGEON_MAP, mapIndex)) {
if (CVar_GetS32("gHudColors", 1) == 2) { //Dungeon minimap
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCMinimapPrimR", R_MINIMAP_COLOR(0)), CVar_GetS32("gCCMinimapPrimG", R_MINIMAP_COLOR(1)), CVar_GetS32("gCCMinimapPrimB", R_MINIMAP_COLOR(2)), interfaceCtx->minimapAlpha);
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCMinimapDGNPrimR", R_MINIMAP_COLOR(0)), CVar_GetS32("gCCMinimapDGNPrimG", R_MINIMAP_COLOR(1)), CVar_GetS32("gCCMinimapDGNPrimB", R_MINIMAP_COLOR(2)), interfaceCtx->minimapAlpha);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 255, 255, interfaceCtx->minimapAlpha);
}
@@ -678,9 +753,22 @@ void Minimap_Draw(GlobalContext* globalCtx) {
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
- const s16 dgnMiniMapX = OTRGetRectDimensionFromRightEdge(R_DGN_MINIMAP_X + Right_MM_Margin);
- const s16 dgnMiniMapY = R_DGN_MINIMAP_Y + Bottom_MM_Margin;
-
+ s16 dgnMiniMapX = OTRGetRectDimensionFromRightEdge(R_DGN_MINIMAP_X + X_Margins_Minimap);
+ s16 dgnMiniMapY = R_DGN_MINIMAP_Y + Y_Margins_Minimap;
+ if (CVar_GetS32("gMinimapPosType", 0) != 0) {
+ dgnMiniMapY = R_DGN_MINIMAP_Y+CVar_GetS32("gMinimapPosY", 0)+Y_Margins_Minimap;
+ if (CVar_GetS32("gMinimapPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;};
+ dgnMiniMapX = OTRGetDimensionFromLeftEdge(R_DGN_MINIMAP_X+CVar_GetS32("gMinimapPosX", 0)+X_Margins_Minimap);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;};
+ dgnMiniMapX = OTRGetDimensionFromRightEdge(R_DGN_MINIMAP_X+CVar_GetS32("gMinimapPosX", 0)+X_Margins_Minimap);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 3) {//Anchor None
+ dgnMiniMapX = CVar_GetS32("gMinimapPosX", 0);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 4) {//Hidden
+ dgnMiniMapX = -9999;
+ }
+ }
gSPWideTextureRectangle(OVERLAY_DISP++, dgnMiniMapX << 2, dgnMiniMapY << 2,
(dgnMiniMapX + 96) << 2, (dgnMiniMapY + 85) << 2, G_TX_RENDERTILE,
0, 0, 1 << 10, 1 << 10);
@@ -740,9 +828,22 @@ void Minimap_Draw(GlobalContext* globalCtx) {
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
- const s16 oWMiniMapX = OTRGetRectDimensionFromRightEdge(R_OW_MINIMAP_X + Right_MM_Margin);
- const s16 oWMiniMapY = R_OW_MINIMAP_Y + Bottom_MM_Margin;
-
+ s16 oWMiniMapX = OTRGetRectDimensionFromRightEdge(R_OW_MINIMAP_X + X_Margins_Minimap);
+ s16 oWMiniMapY = R_OW_MINIMAP_Y + Y_Margins_Minimap;
+ if (CVar_GetS32("gMinimapPosType", 0) != 0) {
+ oWMiniMapY = R_OW_MINIMAP_Y+CVar_GetS32("gMinimapPosY", 0)+Y_Margins_Minimap;
+ if (CVar_GetS32("gMinimapPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;};
+ oWMiniMapX = OTRGetDimensionFromLeftEdge(R_OW_MINIMAP_X+CVar_GetS32("gMinimapPosX", 0)+X_Margins_Minimap);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;};
+ oWMiniMapX = OTRGetDimensionFromRightEdge(R_OW_MINIMAP_X+CVar_GetS32("gMinimapPosX", 0)+X_Margins_Minimap);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 3) {//Anchor None
+ oWMiniMapX = CVar_GetS32("gMinimapPosX", 0);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 4) {//Hidden
+ oWMiniMapX = -9999;
+ }
+ }
gSPWideTextureRectangle(OVERLAY_DISP++, oWMiniMapX << 2, oWMiniMapY << 2,
(oWMiniMapX + gMapData->owMinimapWidth[mapIndex]) << 2,
(oWMiniMapY + gMapData->owMinimapHeight[mapIndex]) << 2, G_TX_RENDERTILE, 0,
@@ -757,17 +858,43 @@ void Minimap_Draw(GlobalContext* globalCtx) {
(LINK_AGE_IN_YEARS != YEARS_ADULT)) {
bool Map0 = gMapData->owEntranceIconPosY[sEntranceIconMapIndex] << 2 == 0;
s16 IconSize = 8;
- s16 PosX = gMapData->owEntranceIconPosX[sEntranceIconMapIndex] + (Map0 ? 0 : Right_MM_Margin);
- s16 PosY = gMapData->owEntranceIconPosY[sEntranceIconMapIndex] + (Map0 ? 0 : Bottom_MM_Margin);
+ s16 PosX = gMapData->owEntranceIconPosX[sEntranceIconMapIndex] + (Map0 ? 0 : X_Margins_Minimap);
+ s16 PosY = gMapData->owEntranceIconPosY[sEntranceIconMapIndex] + (Map0 ? 0 : Y_Margins_Minimap);
//gFixDungeonMinimapIcon fix both Y position of visible icon and hide these non needed.
- if (CVar_GetS32("gFixDungeonMinimapIcon", 0) != 0){
- //No idea why and how Original value work but this does actually fix them all.
- PosY = PosY+1024;
- }
+
s16 TopLeftX = (Map0 ? OTRGetRectDimensionFromLeftEdge(PosX) : OTRGetRectDimensionFromRightEdge(PosX)) << 2;
s16 TopLeftY = PosY << 2;
s16 TopLeftW = (Map0 ? OTRGetRectDimensionFromLeftEdge(PosX + IconSize) : OTRGetRectDimensionFromRightEdge(PosX + IconSize)) << 2;
s16 TopLeftH = (PosY + IconSize) << 2;
+ if (CVar_GetS32("gMinimapPosType", 0) != 0) {
+ PosX = gMapData->owEntranceIconPosX[sEntranceIconMapIndex] + CVar_GetS32("gMinimapPosX", 0) + X_Margins_Minimap;
+ PosY = gMapData->owEntranceIconPosY[sEntranceIconMapIndex] + CVar_GetS32("gMinimapPosY", 0) + Y_Margins_Minimap;
+ if (CVar_GetS32("gMinimapPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;};
+ TopLeftX = OTRGetRectDimensionFromLeftEdge(PosX) << 2;
+ TopLeftW = OTRGetRectDimensionFromLeftEdge(PosX + IconSize) << 2;
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;};
+ TopLeftX = OTRGetRectDimensionFromRightEdge(PosX) << 2;
+ TopLeftW = OTRGetRectDimensionFromRightEdge(PosX + IconSize) << 2;
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 3) {//Anchor None
+ TopLeftX = PosX << 2;
+ TopLeftW = PosX + IconSize << 2;
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 4) {//Hidden
+ TopLeftX = -9999 << 2;
+ TopLeftW = -9999 + IconSize << 2;
+ }
+ if (!CVar_GetS32("gMinimapPosType", 0) != 4 && Map0 && !CVar_GetS32("gFixDungeonMinimapIcon", 0)) { //Force top left icon if fix not applied.
+ TopLeftX = OTRGetRectDimensionFromLeftEdge(gMapData->owEntranceIconPosX[sEntranceIconMapIndex]) << 2;
+ TopLeftY = gMapData->owEntranceIconPosY[sEntranceIconMapIndex] << 2;
+ TopLeftW = OTRGetRectDimensionFromLeftEdge(gMapData->owEntranceIconPosX[sEntranceIconMapIndex] + IconSize) << 2;
+ TopLeftH = (gMapData->owEntranceIconPosY[sEntranceIconMapIndex] + IconSize) << 2;
+ }
+ }
+ if (CVar_GetS32("gFixDungeonMinimapIcon", 0) != 0){
+ //No idea why and how Original value work but this does actually fix them all.
+ PosY = PosY+1024;
+ }
if ((gMapData->owEntranceFlag[sEntranceIconMapIndex] == 0xFFFF) ||
((gMapData->owEntranceFlag[sEntranceIconMapIndex] != 0xFFFF) &&
(gSaveContext.infTable[26] & gBitFlags[gMapData->owEntranceFlag[mapIndex]]))) {
@@ -785,8 +912,23 @@ void Minimap_Draw(GlobalContext* globalCtx) {
}
}
- const s16 entranceX = OTRGetRectDimensionFromRightEdge(270 + Right_MM_Margin);
- const s16 entranceY = 154 + Bottom_MM_Margin;
+ s16 entranceX = OTRGetRectDimensionFromRightEdge(270 + X_Margins_Minimap);
+ s16 entranceY = 154 + Y_Margins_Minimap;
+ if (CVar_GetS32("gMinimapPosType", 0) != 0) {
+ entranceY = 154 + Y_Margins_Minimap + CVar_GetS32("gMinimapPosY", 0);
+ if (CVar_GetS32("gMinimapPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;};
+ entranceX = OTRGetRectDimensionFromLeftEdge(270 + X_Margins_Minimap + CVar_GetS32("gMinimapPosX", 0));
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;};
+ entranceX = OTRGetRectDimensionFromRightEdge(270 + X_Margins_Minimap + CVar_GetS32("gMinimapPosX", 0));
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 3) {//Anchor None
+ entranceX = 270 + X_Margins_Minimap + CVar_GetS32("gMinimapPosX", 0);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 4) {//Hidden
+ entranceX = -9999;
+ }
+ }
+
if ((globalCtx->sceneNum == SCENE_SPOT08) && (gSaveContext.infTable[26] & gBitFlags[9])) {
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, G_TX_NOMASK,
@@ -794,6 +936,7 @@ void Minimap_Draw(GlobalContext* globalCtx) {
gSPWideTextureRectangle(OVERLAY_DISP++, entranceX << 2, entranceY << 2, (entranceX + 32) << 2, (entranceY + 8) << 2,
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
} else if ((globalCtx->sceneNum == SCENE_SPOT08) && CVar_GetS32("gAlwaysShowDungeonMinimapIcon", 0) != 0){
+
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, G_TX_NOMASK,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
@@ -834,17 +977,10 @@ void Map_Update(GlobalContext* globalCtx) {
s16 floor;
s16 i;
- if (CVar_GetS32("gHUDMargins", 0) != 0) {
- Top_MM_Margin = CVar_GetS32("gHUDMargin_T", 0);
- Left_MM_Margin = CVar_GetS32("gHUDMargin_L", 0);
- Right_MM_Margin = CVar_GetS32("gHUDMargin_R", 0);
- Bottom_MM_Margin = CVar_GetS32("gHUDMargin_B", 0);
- } else {
- Top_MM_Margin = 0;
- Left_MM_Margin = 0;
- Right_MM_Margin = 0;
- Bottom_MM_Margin = 0;
- }
+ Top_MM_Margin = CVar_GetS32("gHUDMargin_T", 0);
+ Left_MM_Margin = CVar_GetS32("gHUDMargin_L", 0);
+ Right_MM_Margin = CVar_GetS32("gHUDMargin_R", 0);
+ Bottom_MM_Margin = CVar_GetS32("gHUDMargin_B", 0);
if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) {
switch (globalCtx->sceneNum) {
@@ -914,4 +1050,4 @@ void Map_Update(GlobalContext* globalCtx) {
break;
}
}
-}
+} \ No newline at end of file
diff --git a/soh/src/code/z_map_mark.c b/soh/src/code/z_map_mark.c
index 9102a457e..3ebbfd119 100644
--- a/soh/src/code/z_map_mark.c
+++ b/soh/src/code/z_map_mark.c
@@ -108,38 +108,71 @@ void MapMark_DrawForDungeon(GlobalContext* globalCtx) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->minimapAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, interfaceCtx->minimapAlpha);
- s16 Top_MC_Margin = 0;
- s16 Left_MC_Margin = 0;
- s16 Right_MC_Margin = 0;
- s16 Bottom_MC_Margin = 0;
- if (CVar_GetS32("gHUDMargins", 0) != 0) {
- Top_MC_Margin = CVar_GetS32("gHUDMargin_T", 0);
- Left_MC_Margin = CVar_GetS32("gHUDMargin_L", 0);
- Right_MC_Margin = CVar_GetS32("gHUDMargin_R", 0);
- Bottom_MC_Margin = CVar_GetS32("gHUDMargin_B", 0);
+ s32 Top_MC_Margin = CVar_GetS32("gHUDMargin_T", 0);
+ s32 Left_MC_Margin = CVar_GetS32("gHUDMargin_L", 0);
+ s32 Right_MC_Margin = CVar_GetS32("gHUDMargin_R", 0);
+ s32 Bottom_MC_Margin = CVar_GetS32("gHUDMargin_B", 0);
+
+ s32 X_Margins_Minimap_ic;
+ s32 Y_Margins_Minimap_ic;
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {
+ if (CVar_GetS32("gMinimapPosType", 0) == 0) {X_Margins_Minimap_ic = Right_MC_Margin;};
+ Y_Margins_Minimap_ic = Bottom_MC_Margin;
} else {
- Top_MC_Margin = 0;
- Left_MC_Margin = 0;
- Right_MC_Margin = 0;
- Bottom_MC_Margin = 0;
+ X_Margins_Minimap_ic = 0;
+ Y_Margins_Minimap_ic = 0;
}
markPoint = &mapMarkIconData->points[0];
+ //Place each chest / boss room icon
for (i = 0; i < mapMarkIconData->count; i++) {
if ((mapMarkIconData->markType != MAP_MARK_CHEST) || !Flags_GetTreasure(globalCtx, markPoint->chestFlag)) {
+ //Minimap chest / boss icon
+ const s32 PosX_Minimap_ori = GREG(94) + OTRGetRectDimensionFromRightEdge(markPoint->x+X_Margins_Minimap_ic) + 204;
+ const s32 PosY_Minimap_ori = GREG(95) + markPoint->y + Y_Margins_Minimap_ic + 140;
+ if (CVar_GetS32("gMinimapPosType", 0) != 0) {
+ rectTop = (markPoint->y + Y_Margins_Minimap_ic + 140 + CVar_GetS32("gMinimapPosY", 0));
+ if (CVar_GetS32("gMinimapPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap_ic = Left_MC_Margin;};
+ if (globalCtx->sceneNum == SCENE_YDAN || globalCtx->sceneNum == SCENE_DDAN || globalCtx->sceneNum == SCENE_BDAN ||
+ globalCtx->sceneNum == SCENE_BMORI1 || globalCtx->sceneNum == SCENE_HIDAN || globalCtx->sceneNum == SCENE_MIZUSIN ||
+ globalCtx->sceneNum == SCENE_JYASINZOU || globalCtx->sceneNum == SCENE_HAKADAN || globalCtx->sceneNum == SCENE_HAKADANCH ||
+ globalCtx->sceneNum == SCENE_ICE_DOUKUTO) {
+ rectLeft = OTRGetRectDimensionFromLeftEdge(markPoint->x+CVar_GetS32("gMinimapPosX", 0)+204+X_Margins_Minimap_ic);
+ } else {
+ rectLeft = OTRGetRectDimensionFromLeftEdge(markPoint->x+CVar_GetS32("gMinimapPosX", 0)+204+X_Margins_Minimap_ic);
+ }
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap_ic = Right_MC_Margin;};
+ rectLeft = OTRGetRectDimensionFromRightEdge(markPoint->x+CVar_GetS32("gMinimapPosX", 0)+204+X_Margins_Minimap_ic);
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 3) {//Anchor None
+ rectLeft = markPoint->x+CVar_GetS32("gMinimapPosX", 0)+204+X_Margins_Minimap_ic;
+ } else if (CVar_GetS32("gMinimapPosType", 0) == 4) {//Hidden
+ rectLeft = -9999;
+ }
+ } else {
+ rectLeft = PosX_Minimap_ori;
+ rectTop = PosY_Minimap_ori;
+ }
+
+ int height = 8 * 1.0f; //Adjust Height with scale
+ int width = 8 * 1.0f; //Adjust Width with scale
+ int height_factor = (1 << 10) * 8 / height;
+ int width_factor = (1 << 10) * 8 / width;
+
markInfo = &sMapMarkInfoTable[mapMarkIconData->markType];
gDPPipeSync(OVERLAY_DISP++);
+
gDPLoadTextureBlock(OVERLAY_DISP++, markInfo->texture, markInfo->imageFormat, G_IM_SIZ_MARK,
markInfo->textureWidth, markInfo->textureHeight, 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);
-
- rectLeft = (GREG(94) + OTRGetRectDimensionFromRightEdge(markPoint->x+Right_MC_Margin) + 204) << 2;
- rectTop = (GREG(95) + markPoint->y + Bottom_MC_Margin + 140) << 2;
- gSPTextureRectangle(OVERLAY_DISP++, rectLeft, rectTop, markInfo->rectWidth + rectLeft,
- rectTop + markInfo->rectHeight, G_TX_RENDERTILE, 0, 0, markInfo->dsdx,
- markInfo->dtdy);
+ //Changed to a Wide texture to support Left anchor.
+ gSPWideTextureRectangle(OVERLAY_DISP++, rectLeft << 2, rectTop << 2, rectLeft + width << 2,
+ rectTop + height << 2, G_TX_RENDERTILE, 0, 0, width_factor,
+ height_factor);
}
+
markPoint++;
}
mapMarkIconData++;
diff --git a/soh/src/code/z_message_PAL.c b/soh/src/code/z_message_PAL.c
index 584322f30..c6cfa9db5 100644
--- a/soh/src/code/z_message_PAL.c
+++ b/soh/src/code/z_message_PAL.c
@@ -82,6 +82,18 @@ s16 sOcarinaNoteCPrimG;
s16 sOcarinaNoteCEnvR;
s16 sOcarinaNoteCEnvB;
s16 sOcarinaNoteCEnvG;
+s16 sOcarinaNoteCUpPrimR;
+s16 sOcarinaNoteCUpPrimB;
+s16 sOcarinaNoteCUpPrimG;
+s16 sOcarinaNoteCLeftPrimR;
+s16 sOcarinaNoteCLeftPrimB;
+s16 sOcarinaNoteCLeftPrimG;
+s16 sOcarinaNoteCDownPrimR;
+s16 sOcarinaNoteCDownPrimB;
+s16 sOcarinaNoteCDownPrimG;
+s16 sOcarinaNoteCRightPrimR;
+s16 sOcarinaNoteCRightPrimB;
+s16 sOcarinaNoteCRightPrimG;
void Message_ResetOcarinaNoteState(void) {
R_OCARINA_NOTES_YPOS(0) = 189;
@@ -93,18 +105,46 @@ void Message_ResetOcarinaNoteState(void) {
sOcarinaNotesAlphaValues[0] = sOcarinaNotesAlphaValues[1] = sOcarinaNotesAlphaValues[2] =
sOcarinaNotesAlphaValues[3] = sOcarinaNotesAlphaValues[4] = sOcarinaNotesAlphaValues[5] =
sOcarinaNotesAlphaValues[6] = sOcarinaNotesAlphaValues[7] = sOcarinaNotesAlphaValues[8] = 0;
- sOcarinaNoteAPrimR = 80;
- sOcarinaNoteAPrimG = 255;
- sOcarinaNoteAPrimB = 150;
sOcarinaNoteAEnvR = 10;
sOcarinaNoteAEnvG = 10;
sOcarinaNoteAEnvB = 10;
- sOcarinaNoteCPrimR = 255;
- sOcarinaNoteCPrimG = 255;
- sOcarinaNoteCPrimB = 50;
sOcarinaNoteCEnvR = 10;
sOcarinaNoteCEnvG = 10;
sOcarinaNoteCEnvB = 10;
+ if (CVar_GetS32("gHudColors", 1) == 0) {
+ sOcarinaNoteAPrimR = 80;
+ sOcarinaNoteAPrimG = 150;
+ sOcarinaNoteAPrimB = 255;
+ sOcarinaNoteCPrimR = 255;
+ sOcarinaNoteCPrimG = 255;
+ sOcarinaNoteCPrimB = 50;
+ } else if (CVar_GetS32("gHudColors", 1) == 1) {
+ sOcarinaNoteAPrimR = 80;
+ sOcarinaNoteAPrimG = 255;
+ sOcarinaNoteAPrimB = 150;
+ sOcarinaNoteCPrimR = 255;
+ sOcarinaNoteCPrimG = 255;
+ sOcarinaNoteCPrimB = 50;
+ } else if (CVar_GetS32("gHudColors", 1) == 2) {
+ sOcarinaNoteAPrimR = CVar_GetS32("gCCABtnPrimR", 80);
+ sOcarinaNoteAPrimG = CVar_GetS32("gCCABtnPrimR", 255);
+ sOcarinaNoteAPrimB = CVar_GetS32("gCCABtnPrimR", 150);
+ sOcarinaNoteCPrimR = CVar_GetS32("gCCCBtnPrimR", 255);
+ sOcarinaNoteCPrimG = CVar_GetS32("gCCCBtnPrimG", 255);
+ sOcarinaNoteCPrimB = CVar_GetS32("gCCCBtnPrimB", 50);
+ sOcarinaNoteCUpPrimR = CVar_GetS32("gCCCUBtnPrimR", 255);
+ sOcarinaNoteCUpPrimG = CVar_GetS32("gCCCUBtnPrimG", 255);
+ sOcarinaNoteCUpPrimB = CVar_GetS32("gCCCUBtnPrimB", 50);
+ sOcarinaNoteCLeftPrimR = CVar_GetS32("gCCCLBtnPrimR", 255);
+ sOcarinaNoteCLeftPrimG = CVar_GetS32("gCCCLBtnPrimG", 255);
+ sOcarinaNoteCLeftPrimB = CVar_GetS32("gCCCLBtnPrimB", 50);
+ sOcarinaNoteCDownPrimR = CVar_GetS32("gCCCDBtnPrimR", 255);
+ sOcarinaNoteCDownPrimG = CVar_GetS32("gCCCDBtnPrimG", 255);
+ sOcarinaNoteCDownPrimB = CVar_GetS32("gCCCDBtnPrimB", 50);
+ sOcarinaNoteCRightPrimR = CVar_GetS32("gCCCRBtnPrimR", 255);
+ sOcarinaNoteCRightPrimG = CVar_GetS32("gCCCRBtnPrimG", 255);
+ sOcarinaNoteCRightPrimB = CVar_GetS32("gCCCRBtnPrimB", 50);
+ }
}
void Message_UpdateOcarinaGame(GlobalContext* globalCtx) {
@@ -1948,22 +1988,80 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
static void* sOcarinaNoteTextures[] = {
gOcarinaATex, gOcarinaCDownTex, gOcarinaCRightTex, gOcarinaCLeftTex, gOcarinaCUpTex,
};
- static s16 sOcarinaNoteAPrimColors[][3] = {
+ s16 sOcarinaNoteAPrimColors[2][3];
+ s16 sOcarinaNoteAPrimColors_GCN[][3] = {
{ 80, 255, 150 },
{ 100, 255, 200 },
};
+ s16 sOcarinaNoteAPrimColors_N64[][3] = {
+ { 80, 255, 150 },
+ { 100, 255, 200 },
+ };
+ s16 ABtnR = CVar_GetS32("gCCABtnPrimR", 80);
+ s16 ABtnG = CVar_GetS32("gCCABtnPrimG", 255);
+ s16 ABtnB = CVar_GetS32("gCCABtnPrimB", 150);
+ s16 ABtnR_2 = CVar_GetS32("gCCABtnPrimR", 80)+20;
+ s16 ABtnG_2 = CVar_GetS32("gCCABtnPrimG", 235)+20;
+ s16 ABtnB_2 = CVar_GetS32("gCCABtnPrimB", 180)+20;
+ if(ABtnR_2 > 255){ABtnR_2=255;};
+ if(ABtnG_2 > 255){ABtnG_2=255;};
+ if(ABtnB_2 > 255){ABtnB_2=255;};
+ s16 sOcarinaNoteAPrimColors_CUSTOM[][3] = {
+ { ABtnG, ABtnG, ABtnB },
+ { ABtnR_2, ABtnG_2, ABtnB_2 },
+ };
static s16 sOcarinaNoteAEnvColors[][3] = {
{ 10, 10, 10 },
{ 50, 255, 50 },
};
- static s16 sOcarinaNoteCPrimColors[][3] = {
+ s16 sOcarinaNoteCPrimColors[2][3];
+ s16 sOcarinaNoteCPrimColors_GCN[][3] = {
{ 255, 255, 50 },
{ 255, 255, 180 },
};
+ s16 CBtnR = CVar_GetS32("gCCCBtnPrimR", 255);
+ s16 CBtnG = CVar_GetS32("gCCCBtnPrimG", 255);
+ s16 CBtnB = CVar_GetS32("gCCCBtnPrimB", 50);
+ s16 CBtnR_2 = CVar_GetS32("gCCCBtnPrimR", 255)+20;
+ s16 CBtnG_2 = CVar_GetS32("gCCCBtnPrimG", 255)+20;
+ s16 CBtnB_2 = CVar_GetS32("gCCCBtnPrimB", 50)+20;
+ s16 CBtnRU = CVar_GetS32("gCCCUBtnPrimR", 255);
+ s16 CBtnGU = CVar_GetS32("gCCCUBtnPrimG", 255);
+ s16 CBtnBU = CVar_GetS32("gCCCUBtnPrimB", 50);
+ s16 CBtnRL = CVar_GetS32("gCCCLBtnPrimR", 255);
+ s16 CBtnGL = CVar_GetS32("gCCCLBtnPrimG", 255);
+ s16 CBtnBL = CVar_GetS32("gCCCLBtnPrimB", 50);
+ s16 CBtnRD = CVar_GetS32("gCCCDBtnPrimR", 255);
+ s16 CBtnGD = CVar_GetS32("gCCCDBtnPrimG", 255);
+ s16 CBtnBD = CVar_GetS32("gCCCDBtnPrimB", 50);
+ s16 CBtnRR = CVar_GetS32("gCCCRBtnPrimR", 255);
+ s16 CBtnGR = CVar_GetS32("gCCCRBtnPrimG", 255);
+ s16 CBtnBR = CVar_GetS32("gCCCRBtnPrimB", 50);
+ if(CBtnR_2 > 255){CBtnR_2=255;};
+ if(CBtnG_2 > 255){CBtnG_2=255;};
+ if(CBtnB_2 > 255){CBtnB_2=255;};
+ s16 sOcarinaNoteCPrimColors_CUSTOM[][3] = {
+ { CBtnR, CBtnG, CBtnB }, //Unified
+ { CBtnR_2, CBtnG_2, CBtnB_2 },
+ { CBtnRL, CBtnGL, CBtnBL }, //Left
+ { CBtnRD, CBtnGD, CBtnBD }, //Down
+ { CBtnRR, CBtnGR, CBtnBR }, //Right
+ { CBtnRU, CBtnGU, CBtnBU }, //Up
+ };
static s16 sOcarinaNoteCEnvColors[][3] = {
{ 10, 10, 10 },
{ 110, 110, 50 },
};
+ if (CVar_GetS32("gHudColors", 1) == 0) { //N64
+ sOcarinaNoteAPrimColors < sOcarinaNoteAPrimColors_N64;
+ sOcarinaNoteCPrimColors < sOcarinaNoteCPrimColors_GCN; //GCN and N64 share same C buttons color.
+ } else if (CVar_GetS32("gHudColors", 1) == 1) { //GCN
+ sOcarinaNoteAPrimColors < sOcarinaNoteAPrimColors_GCN;
+ sOcarinaNoteCPrimColors < sOcarinaNoteCPrimColors_GCN;
+ } else if (CVar_GetS32("gHudColors", 1) == 2) { //Custom
+ sOcarinaNoteAPrimColors < sOcarinaNoteAPrimColors_CUSTOM;
+ sOcarinaNoteCPrimColors < sOcarinaNoteCPrimColors_CUSTOM;
+ }
static s16 sOcarinaNoteFlashTimer = 12;
static s16 sOcarinaNoteFlashColorIdx = 1;
static s16 sOcarinaSongFanfares[] = {
@@ -1980,6 +2078,18 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
s16 r;
s16 g;
s16 b;
+ s16 ru;//Red Up
+ s16 gu;//Green Up
+ s16 bu;//Blue Up
+ s16 rl;//Red Left
+ s16 gl;//green Left
+ s16 bl;//Blue Left
+ s16 rd;//And so on
+ s16 gd;
+ s16 bd;
+ s16 rr;
+ s16 gr;
+ s16 br;
u16 i;
u16 notePosX;
u16 pad1;
@@ -2221,6 +2331,31 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
b = ABS(sOcarinaNoteCPrimB - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][2]) /
sOcarinaNoteFlashTimer;
+ ru = ABS(sOcarinaNoteCUpPrimR - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][0]) /
+ sOcarinaNoteFlashTimer;
+ gu = ABS(sOcarinaNoteCUpPrimG - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][1]) /
+ sOcarinaNoteFlashTimer;
+ bu = ABS(sOcarinaNoteCUpPrimB - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][2]) /
+ sOcarinaNoteFlashTimer;
+ rl = ABS(sOcarinaNoteCLeftPrimR - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][0]) /
+ sOcarinaNoteFlashTimer;
+ gl = ABS(sOcarinaNoteCLeftPrimG - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][1]) /
+ sOcarinaNoteFlashTimer;
+ bl = ABS(sOcarinaNoteCLeftPrimB - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][2]) /
+ sOcarinaNoteFlashTimer;
+ rd = ABS(sOcarinaNoteCDownPrimR - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][0]) /
+ sOcarinaNoteFlashTimer;
+ gd = ABS(sOcarinaNoteCDownPrimG - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][1]) /
+ sOcarinaNoteFlashTimer;
+ bd = ABS(sOcarinaNoteCDownPrimB - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][2]) /
+ sOcarinaNoteFlashTimer;
+ rr = ABS(sOcarinaNoteCRightPrimR - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][0]) /
+ sOcarinaNoteFlashTimer;
+ gr = ABS(sOcarinaNoteCRightPrimG - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][1]) /
+ sOcarinaNoteFlashTimer;
+ br = ABS(sOcarinaNoteCRightPrimB - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][2]) /
+ sOcarinaNoteFlashTimer;
+
if (sOcarinaNoteCPrimR >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][0]) {
sOcarinaNoteCPrimR -= r;
} else {
@@ -2237,6 +2372,70 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
sOcarinaNoteCPrimB += b;
}
+ if (sOcarinaNoteCUpPrimR >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][0]) {
+ sOcarinaNoteCUpPrimR -= ru;
+ } else {
+ sOcarinaNoteCUpPrimR += ru;
+ }
+ if (sOcarinaNoteCUpPrimG >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][1]) {
+ sOcarinaNoteCUpPrimG -= gu;
+ } else {
+ sOcarinaNoteCUpPrimG += gu;
+ }
+ if (sOcarinaNoteCUpPrimB >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][2]) {
+ sOcarinaNoteCUpPrimB -= bu;
+ } else {
+ sOcarinaNoteCUpPrimB += bu;
+ }
+
+ if (sOcarinaNoteCLeftPrimR >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][0]) {
+ sOcarinaNoteCLeftPrimR -= rl;
+ } else {
+ sOcarinaNoteCLeftPrimR += rl;
+ }
+ if (sOcarinaNoteCLeftPrimG >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][1]) {
+ sOcarinaNoteCLeftPrimG -= gl;
+ } else {
+ sOcarinaNoteCLeftPrimG += gl;
+ }
+ if (sOcarinaNoteCLeftPrimB >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][2]) {
+ sOcarinaNoteCLeftPrimB -= bl;
+ } else {
+ sOcarinaNoteCLeftPrimB += bl;
+ }
+
+ if (sOcarinaNoteCDownPrimR >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][0]) {
+ sOcarinaNoteCDownPrimR -= rd;
+ } else {
+ sOcarinaNoteCDownPrimR += rd;
+ }
+ if (sOcarinaNoteCDownPrimG >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][1]) {
+ sOcarinaNoteCDownPrimG -= gd;
+ } else {
+ sOcarinaNoteCDownPrimG += gd;
+ }
+ if (sOcarinaNoteCDownPrimB >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][2]) {
+ sOcarinaNoteCDownPrimB -= bd;
+ } else {
+ sOcarinaNoteCDownPrimB += bd;
+ }
+
+ if (sOcarinaNoteCRightPrimR >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][0]) {
+ sOcarinaNoteCRightPrimR -= rr;
+ } else {
+ sOcarinaNoteCRightPrimR += rr;
+ }
+ if (sOcarinaNoteCRightPrimG >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][1]) {
+ sOcarinaNoteCRightPrimG -= gr;
+ } else {
+ sOcarinaNoteCRightPrimG += gr;
+ }
+ if (sOcarinaNoteCRightPrimB >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][2]) {
+ sOcarinaNoteCRightPrimB -= br;
+ } else {
+ sOcarinaNoteCRightPrimB += br;
+ }
+
r = ABS(sOcarinaNoteCEnvR - sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][0]) /
sOcarinaNoteFlashTimer;
g = ABS(sOcarinaNoteCEnvG - sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][1]) /
@@ -2271,6 +2470,18 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
sOcarinaNoteCPrimR = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][0];
sOcarinaNoteCPrimG = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][1];
sOcarinaNoteCPrimB = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][2];
+ sOcarinaNoteCUpPrimR = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][0];
+ sOcarinaNoteCUpPrimG = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][1];
+ sOcarinaNoteCUpPrimB = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+5][2];
+ sOcarinaNoteCLeftPrimR = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][0];
+ sOcarinaNoteCLeftPrimG = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][1];
+ sOcarinaNoteCLeftPrimB = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+2][2];
+ sOcarinaNoteCDownPrimR = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][0];
+ sOcarinaNoteCDownPrimG = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][1];
+ sOcarinaNoteCDownPrimB = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+3][2];
+ sOcarinaNoteCRightPrimR = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][0];
+ sOcarinaNoteCRightPrimG = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][1];
+ sOcarinaNoteCRightPrimB = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx+4][2];
sOcarinaNoteCEnvR = sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][0];
sOcarinaNoteCEnvG = sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][1];
sOcarinaNoteCEnvB = sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][2];
@@ -2883,7 +3094,7 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
} else if (CVar_GetS32("gHudColors", 1) == 1) {
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteAPrimR, sOcarinaNoteAPrimG, sOcarinaNoteAPrimB, sOcarinaNotesAlphaValues[i]);
} else if (CVar_GetS32("gHudColors", 1) == 2) {
- gDPSetPrimColor(gfx++, 0, 0, CVar_GetS32("gCCABtnPrimR", 0), CVar_GetS32("gCCABtnPrimG", 0), CVar_GetS32("gCCABtnPrimB", 0), sOcarinaNotesAlphaValues[i]);
+ gDPSetPrimColor(gfx++, 0, 0, CVar_GetS32("gCCABtnPrimR", 80), CVar_GetS32("gCCABtnPrimG", 255), CVar_GetS32("gCCABtnPrimB", 150), sOcarinaNotesAlphaValues[i]);
}
gDPSetEnvColor(gfx++, sOcarinaNoteAEnvR, sOcarinaNoteAEnvG, sOcarinaNoteAEnvB, 0);
} else {
@@ -2891,8 +3102,16 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCPrimR, sOcarinaNoteCPrimG, sOcarinaNoteCPrimB, sOcarinaNotesAlphaValues[i]);
} else if (CVar_GetS32("gHudColors", 1) == 1) {
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCPrimR, sOcarinaNoteCPrimG, sOcarinaNoteCPrimB, sOcarinaNotesAlphaValues[i]);
- } else if (CVar_GetS32("gHudColors", 1) == 2) {
- gDPSetPrimColor(gfx++, 0, 0, CVar_GetS32("gCCCBtnPrimR", 0), CVar_GetS32("gCCCBtnPrimG", 0), CVar_GetS32("gCCCBtnPrimB", 0), sOcarinaNotesAlphaValues[i]);
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && !CVar_GetS32("gCCparated", 0)) {
+ gDPSetPrimColor(gfx++, 0, 0, CVar_GetS32("gCCCBtnPrimR", 255), CVar_GetS32("gCCCBtnPrimG", 255), CVar_GetS32("gCCCBtnPrimB", 180), sOcarinaNotesAlphaValues[i]);
+ } else if (sOcarinaNoteBuf[i] == OCARINA_NOTE_C_UP && CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated", 0)) {
+ gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCUpPrimR, sOcarinaNoteCUpPrimG, sOcarinaNoteCUpPrimB, sOcarinaNotesAlphaValues[i]);
+ } else if (sOcarinaNoteBuf[i] == OCARINA_NOTE_C_LEFT && CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated", 0)) {
+ gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCLeftPrimR, sOcarinaNoteCLeftPrimG, sOcarinaNoteCLeftPrimB, sOcarinaNotesAlphaValues[i]);
+ } else if (sOcarinaNoteBuf[i] == OCARINA_NOTE_C_RIGHT && CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated", 0)) {
+ gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCRightPrimR, sOcarinaNoteCRightPrimG, sOcarinaNoteCRightPrimB, sOcarinaNotesAlphaValues[i]);
+ } else if (sOcarinaNoteBuf[i] == OCARINA_NOTE_C_DOWN && CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated", 0)) {
+ gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCDownPrimR, sOcarinaNoteCDownPrimG, sOcarinaNoteCDownPrimB, sOcarinaNotesAlphaValues[i]);
}
gDPSetEnvColor(gfx++, sOcarinaNoteCEnvR, sOcarinaNoteCEnvG, sOcarinaNoteCEnvB, 0);
}
diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c
index f9669b3aa..dfe2e6529 100644
--- a/soh/src/code/z_parameter.c
+++ b/soh/src/code/z_parameter.c
@@ -2700,10 +2700,22 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
if (gSaveContext.magic <= 0) {
gSaveContext.magic = 0;
gSaveContext.unk_13F0 = 3;
- sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
+ if (CVar_GetS32("gHudColors", 1) == 2) {
+ sMagicBorderR = CVar_GetS32("gCCMagicBorderNormPrimR", 255);
+ sMagicBorderG = CVar_GetS32("gCCMagicBorderNormPrimG", 255);
+ sMagicBorderB = CVar_GetS32("gCCMagicBorderNormPrimB", 255);
+ } else {
+ sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
+ }
} else if (gSaveContext.magic == gSaveContext.unk_13F8) {
gSaveContext.unk_13F0 = 3;
- sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
+ if (CVar_GetS32("gHudColors", 1) == 2) {
+ sMagicBorderR = CVar_GetS32("gCCMagicBorderNormPrimR", 255);
+ sMagicBorderG = CVar_GetS32("gCCMagicBorderNormPrimG", 255);
+ sMagicBorderB = CVar_GetS32("gCCMagicBorderNormPrimB", 255);
+ } else {
+ sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
+ }
}
case 3:
case 4:
@@ -2745,7 +2757,13 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
break;
case 5:
- sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
+ if (CVar_GetS32("gHudColors", 1) == 2) {
+ sMagicBorderR = CVar_GetS32("gCCMagicBorderNormPrimR", 255);
+ sMagicBorderG = CVar_GetS32("gCCMagicBorderNormPrimG", 255);
+ sMagicBorderB = CVar_GetS32("gCCMagicBorderNormPrimB", 255);
+ } else {
+ sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
+ }
gSaveContext.unk_13F0 = 0;
break;
@@ -2767,7 +2785,13 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
Audio_PlaySoundGeneral(NA_SE_SY_GLASSMODE_OFF, &D_801333D4, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
gSaveContext.unk_13F0 = 0;
- sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
+ if (CVar_GetS32("gHudColors", 1) == 2) {
+ sMagicBorderR = CVar_GetS32("gCCMagicBorderNormPrimR", 255);
+ sMagicBorderG = CVar_GetS32("gCCMagicBorderNormPrimG", 255);
+ sMagicBorderB = CVar_GetS32("gCCMagicBorderNormPrimB", 255);
+ } else {
+ sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
+ }
break;
}
@@ -2837,33 +2861,79 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) {
OPEN_DISPS(globalCtx->state.gfxCtx);
if (gSaveContext.magicLevel != 0) {
- if (gSaveContext.healthCapacity > 0xA0) {
- magicBarY = R_MAGIC_BAR_LARGE_Y + (Top_HUD_Margin*-1);
+ s16 X_Margins;
+ s16 Y_Margins;
+ if (CVar_GetS32("gMagicBarUseMargins", 0) != 0) {
+ X_Margins = Left_HUD_Margin;
+ Y_Margins = (Top_HUD_Margin*-1);
} else {
- magicBarY = R_MAGIC_BAR_SMALL_Y + (Top_HUD_Margin*-1);
+ X_Margins = 0;
+ Y_Margins = 0;
+ }
+ const s16 magicBarY_original_l = R_MAGIC_BAR_LARGE_Y + Y_Margins;
+ const s16 magicBarY_original_s = R_MAGIC_BAR_SMALL_Y + Y_Margins;
+ const s16 PosX_Start_original = OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X + X_Margins);
+ const s16 PosX_MidEnd_original = OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X + X_Margins+8);
+ const s16 rMagicBarX_original = OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X + X_Margins);
+ const s16 rMagicFillX_original = OTRGetRectDimensionFromLeftEdge(R_MAGIC_FILL_X + X_Margins);
+ s16 PosX_Start;
+ s16 magicBarY;
+ s16 rMagicBarX;
+ s16 PosX_MidEnd;
+ s16 rMagicFillX;
+ if (CVar_GetS32("gMagicBarPosType", 0) != 0) {
+ magicBarY = CVar_GetS32("gMagicBarPosY", 0)+Y_Margins;
+ if (CVar_GetS32("gMagicBarPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gMagicBarUseMargins", 0) != 0) {X_Margins = Left_HUD_Margin;};
+ PosX_Start = OTRGetDimensionFromLeftEdge(CVar_GetS32("gMagicBarPosX", 0)+X_Margins);
+ rMagicBarX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gMagicBarPosX", 0)+X_Margins);
+ PosX_MidEnd = OTRGetDimensionFromLeftEdge(CVar_GetS32("gMagicBarPosX", 0)+X_Margins+8);
+ rMagicFillX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gMagicBarPosX", 0)+X_Margins+8);
+ } else if (CVar_GetS32("gMagicBarPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gMagicBarUseMargins", 0) != 0) {X_Margins = Right_HUD_Margin;};
+ PosX_Start = OTRGetDimensionFromRightEdge(CVar_GetS32("gMagicBarPosX", 0)+X_Margins);
+ rMagicBarX = OTRGetDimensionFromRightEdge(CVar_GetS32("gMagicBarPosX", 0)+X_Margins);
+ PosX_MidEnd = OTRGetDimensionFromRightEdge(CVar_GetS32("gMagicBarPosX", 0)+X_Margins+8);
+ rMagicFillX = OTRGetDimensionFromRightEdge(CVar_GetS32("gMagicBarPosX", 0)+X_Margins+8);
+ } else if (CVar_GetS32("gMagicBarPosType", 0) == 3) {//Anchor None
+ PosX_Start = CVar_GetS32("gMagicBarPosX", 0)+X_Margins;
+ rMagicBarX = CVar_GetS32("gMagicBarPosX", 0)+X_Margins;
+ PosX_MidEnd = CVar_GetS32("gMagicBarPosX", 0)+X_Margins+8;
+ rMagicFillX = CVar_GetS32("gMagicBarPosX", 0)+X_Margins+8;
+ } else if (CVar_GetS32("gMagicBarPosType", 0) == 4) {//hidden
+ PosX_Start = -9999;
+ rMagicBarX = -9999;
+ PosX_MidEnd = -9999;
+ rMagicFillX = -9999;
+ }
+ } else {
+ if (gSaveContext.healthCapacity > 0xA0) {
+ magicBarY = magicBarY_original_l;
+ } else {
+ magicBarY = magicBarY_original_s;
+ }
+ PosX_Start = PosX_Start_original;
+ rMagicBarX = rMagicBarX_original;
+ PosX_MidEnd = PosX_MidEnd_original;
+ rMagicFillX = rMagicFillX_original;
}
func_80094520(globalCtx->state.gfxCtx);
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sMagicBorderR, sMagicBorderG, sMagicBorderB, interfaceCtx->magicAlpha);
if (CVar_GetS32("gHudColors", 1) == 2) {//Original game add color there so to prevent miss match we make it all white :)
- gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
+ gDPSetEnvColor(OVERLAY_DISP++, 255, 255, 255, 255);
} else {
gDPSetEnvColor(OVERLAY_DISP++, 100, 50, 50, 255);
}
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sMagicBorderR, sMagicBorderG, sMagicBorderB, interfaceCtx->magicAlpha);
- OVERLAY_DISP =
- Gfx_TextureIA8(OVERLAY_DISP, gMagicBarEndTex, 8, 16, OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X + (Left_HUD_Margin*-1)),
- magicBarY, 8, 16, 1 << 10, 1 << 10);
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gMagicBarEndTex, 8, 16, PosX_Start, magicBarY, 8, 16, 1 << 10, 1 << 10);
- OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gMagicBarMidTex, 24, 16, OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X + (Left_HUD_Margin*-1)) + 8, magicBarY,
- gSaveContext.unk_13F4, 16, 1 << 10, 1 << 10);
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gMagicBarMidTex, 24, 16, PosX_MidEnd, magicBarY, gSaveContext.unk_13F4, 16, 1 << 10, 1 << 10);
gDPLoadTextureBlock(OVERLAY_DISP++, gMagicBarEndTex, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0,
G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 3, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
- const s16 rMagicBarX = OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X + (Left_HUD_Margin*-1));
-
gSPWideTextureRectangle(OVERLAY_DISP++, ((rMagicBarX + gSaveContext.unk_13F4) + 8) << 2, magicBarY << 2,
((rMagicBarX + gSaveContext.unk_13F4) + 16) << 2, (magicBarY + 16) << 2, G_TX_RENDERTILE,
256, 0, 1 << 10, 1 << 10);
@@ -2873,8 +2943,6 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) {
ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
- const s16 rMagicFillX = OTRGetRectDimensionFromLeftEdge(R_MAGIC_FILL_X + (Left_HUD_Margin*-1));
-
if (gSaveContext.unk_13F0 == 4) {
// Yellow part of the bar indicating the amount of magic to be subtracted
if (CVar_GetS32("gHudColors", 1) == 2) {
@@ -2982,10 +3050,214 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
s16 width;
s16 height;
- s16 C_Left_BTN_Pos[] = { C_LEFT_BUTTON_X+Right_HUD_Margin, C_LEFT_BUTTON_Y+(Top_HUD_Margin*-1) }; //(X,Y)
- s16 C_Right_BTN_Pos[] = { C_RIGHT_BUTTON_X+Right_HUD_Margin, C_RIGHT_BUTTON_Y+(Top_HUD_Margin*-1) };
- s16 C_Up_BTN_Pos[] = { C_UP_BUTTON_X+Right_HUD_Margin, C_UP_BUTTON_Y+(Top_HUD_Margin*-1) };
- s16 C_Down_BTN_Pos[] = { C_DOWN_BUTTON_X+Right_HUD_Margin, C_DOWN_BUTTON_Y+(Top_HUD_Margin*-1) };
+ //B Button
+ s16 X_Margins_BtnB;
+ s16 Y_Margins_BtnB;
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {
+ if (CVar_GetS32("gBBtnPosType", 0) == 0) {X_Margins_BtnB = Right_HUD_Margin;};
+ Y_Margins_BtnB = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_BtnB = 0;
+ Y_Margins_BtnB = 0;
+ }
+ s16 PosX_BtnB_ori = OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(0)+X_Margins_BtnB);
+ s16 PosY_BtnB_ori = R_ITEM_BTN_Y(0)+Y_Margins_BtnB;
+ s16 PosX_BtnB;
+ s16 PosY_BtnB;
+ if (CVar_GetS32("gBBtnPosType", 0) != 0) {
+ PosY_BtnB = CVar_GetS32("gBBtnPosY", 0)+Y_Margins_BtnB;
+ if (CVar_GetS32("gBBtnPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {X_Margins_BtnB = Left_HUD_Margin;};
+ PosX_BtnB = OTRGetDimensionFromLeftEdge(CVar_GetS32("gBBtnPosX", 0)+X_Margins_BtnB);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {X_Margins_BtnB = Right_HUD_Margin;};
+ PosX_BtnB = OTRGetDimensionFromRightEdge(CVar_GetS32("gBBtnPosX", 0)+X_Margins_BtnB);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 3) {//Anchor None
+ PosX_BtnB = CVar_GetS32("gBBtnPosX", 0);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 4) {//Hidden
+ PosX_BtnB = -9999;
+ }
+ } else {
+ PosY_BtnB = PosY_BtnB_ori;
+ PosX_BtnB = PosX_BtnB_ori;
+ }
+ //Start Button
+ s16 X_Margins_StartBtn;
+ s16 Y_Margins_StartBtn;
+ if (CVar_GetS32("gStartBtnUseMargins", 0) != 0) {
+ if (CVar_GetS32("gStartBtnPosType", 0) == 0) {
+ X_Margins_StartBtn = Right_HUD_Margin;
+ };
+ Y_Margins_StartBtn = Top_HUD_Margin*-1;
+ } else {
+ X_Margins_StartBtn = 0;
+ Y_Margins_StartBtn = 0;
+ }
+ s16 StartBtn_Icon_H = 32;
+ s16 StartBtn_Icon_W = 32;
+ int StartBTN_H_Scaled = StartBtn_Icon_H * 0.75f;
+ int StartBTN_W_Scaled = StartBtn_Icon_W * 0.75f;
+ int StartBTN_W_factor = (1 << 10) * StartBtn_Icon_W / StartBTN_W_Scaled;
+ int StartBTN_H_factor = (1 << 10) * StartBtn_Icon_H / StartBTN_H_Scaled;
+ const s16 rStartLabelX_ori = OTRGetRectDimensionFromRightEdge(R_START_LABEL_X(gSaveContext.language)+X_Margins_StartBtn);
+ const s16 rStartLabelY_ori = R_START_LABEL_Y(gSaveContext.language)+Y_Margins_StartBtn;
+ const s16 PosX_StartBtn_ori = OTRGetRectDimensionFromRightEdge(startButtonLeftPos[gSaveContext.language]+X_Margins_StartBtn);
+ const s16 PosY_StartBtn_ori = 16+Y_Margins_StartBtn;
+ s16 StartBTN_Label_W = DO_ACTION_TEX_WIDTH;
+ s16 StartBTN_Label_H = DO_ACTION_TEX_HEIGHT;
+ int StartBTN_Label_H_Scaled = StartBTN_Label_H * 1.0f;
+ int StartBTN_Label_W_Scaled = StartBTN_Label_W * 1.0f;
+ int StartBTN_Label_W_factor = (1 << 10) * StartBTN_Label_W / StartBTN_Label_W_Scaled;
+ int StartBTN_Label_H_factor = (1 << 10) * StartBTN_Label_H / StartBTN_Label_H_Scaled;
+ const s16 StartBtn_Label_W_ori = StartBTN_Label_W / (R_START_LABEL_DD(gSaveContext.language) / 100.0f);
+ const s16 StartBtn_Label_H_ori = StartBTN_Label_H / (R_START_LABEL_DD(gSaveContext.language) / 100.0f);
+ s16 PosX_StartBtn;
+ s16 PosY_StartBtn;
+ s16 rStartLabelX;
+ s16 rStartLabelY;
+ if (CVar_GetS32("gStartBtnPosType", 0) != 0) {
+ PosY_StartBtn = CVar_GetS32("gStartBtnPosY", 0)+Y_Margins_StartBtn;
+ rStartLabelY = CVar_GetS32("gStartBtnPosY", 0)+Y_Margins_StartBtn+3;
+ if (CVar_GetS32("gStartBtnPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gStartBtnUseMargins", 0) != 0) {X_Margins_StartBtn = Left_HUD_Margin;};
+ PosX_StartBtn = OTRGetDimensionFromLeftEdge(CVar_GetS32("gStartBtnPosX", 0)+X_Margins_StartBtn);
+ rStartLabelX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gStartBtnPosX", 0)+X_Margins_StartBtn-12);
+ } else if (CVar_GetS32("gStartBtnPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gStartBtnUseMargins", 0) != 0) {X_Margins_StartBtn = Right_HUD_Margin;};
+ PosX_StartBtn = OTRGetDimensionFromRightEdge(CVar_GetS32("gStartBtnPosX", 0)+X_Margins_StartBtn);
+ rStartLabelX = OTRGetDimensionFromRightEdge(CVar_GetS32("gStartBtnPosX", 0)+X_Margins_StartBtn-12);
+ } else if (CVar_GetS32("gStartBtnPosType", 0) == 3) {//Anchor None
+ PosX_StartBtn = CVar_GetS32("gStartBtnPosX", 0);
+ rStartLabelX = CVar_GetS32("gStartBtnPosX", 0)-12;
+ } else if (CVar_GetS32("gStartBtnPosType", 0) == 4) {//Hidden
+ PosX_StartBtn = -9999;
+ rStartLabelX = -9999;
+ }
+ } else {
+ PosY_StartBtn = PosY_StartBtn_ori;
+ PosX_StartBtn = PosX_StartBtn_ori;
+ rStartLabelY = rStartLabelY_ori;
+ rStartLabelX = rStartLabelX_ori;
+ }
+ //C Buttons position
+ s16 X_Margins_CL;
+ s16 X_Margins_CR;
+ s16 X_Margins_CU;
+ s16 X_Margins_CD;
+ s16 Y_Margins_CL;
+ s16 Y_Margins_CR;
+ s16 Y_Margins_CU;
+ s16 Y_Margins_CD;
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnLPosType", 0) == 0) {X_Margins_CL = Right_HUD_Margin;};
+ Y_Margins_CL = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CL = 0;
+ Y_Margins_CL = 0;
+ }
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnRPosType", 0) == 0) {X_Margins_CR = Right_HUD_Margin;};
+ Y_Margins_CR = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CR = 0;
+ Y_Margins_CR = 0;
+ }
+ if (CVar_GetS32("gCBtnUUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnUPosType", 0) == 0) {X_Margins_CU = Right_HUD_Margin;};
+ Y_Margins_CU = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CU = 0;
+ Y_Margins_CU = 0;
+ }
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnDPosType", 0) == 0) {X_Margins_CD = Right_HUD_Margin;};
+ Y_Margins_CD = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CD = 0;
+ Y_Margins_CD = 0;
+ }
+ const s16 C_Left_BTN_Pos_ori[] = { C_LEFT_BUTTON_X+X_Margins_CL, C_LEFT_BUTTON_Y+Y_Margins_CL }; //(X,Y)
+ const s16 C_Right_BTN_Pos_ori[] = { C_RIGHT_BUTTON_X+X_Margins_CR, C_RIGHT_BUTTON_Y+Y_Margins_CR };
+ const s16 C_Up_BTN_Pos_ori[] = { C_UP_BUTTON_X+X_Margins_CU, C_UP_BUTTON_Y+Y_Margins_CU };
+ const s16 C_Down_BTN_Pos_ori[] = { C_DOWN_BUTTON_X+X_Margins_CD, C_DOWN_BUTTON_Y+Y_Margins_CD };
+ s16 LabelX_Navi=8;
+ s16 LabelY_Navi=4 - !!CVar_GetS32("gNaviTextFix", 0);
+ s16 C_Left_BTN_Pos[2]; //(X,Y)
+ s16 C_Right_BTN_Pos[2];
+ s16 C_Up_BTN_Pos[2];
+ s16 C_Down_BTN_Pos[2];
+ //C button Left
+ if (CVar_GetS32("gCBtnLPosType", 0) != 0) {
+ C_Left_BTN_Pos[1] = CVar_GetS32("gCBtnLPosY", 0)+Y_Margins_CL;
+ if (CVar_GetS32("gCBtnLPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {X_Margins_CL = Left_HUD_Margin;};
+ C_Left_BTN_Pos[0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnLPosX", 0)+X_Margins_CL);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {X_Margins_CL = Right_HUD_Margin;};
+ C_Left_BTN_Pos[0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnLPosX", 0)+X_Margins_CL);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 3) {//Anchor None
+ C_Left_BTN_Pos[0] = CVar_GetS32("gCBtnLPosX", 0);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 4) {//Hidden
+ C_Left_BTN_Pos[0] = -9999;
+ }
+ } else {
+ C_Left_BTN_Pos[1] = C_Left_BTN_Pos_ori[1];
+ C_Left_BTN_Pos[0] = OTRGetRectDimensionFromRightEdge(C_Left_BTN_Pos_ori[0]);
+ }
+ //C button Right
+ if (CVar_GetS32("gCBtnRPosType", 0) != 0) {
+ C_Right_BTN_Pos[1] = CVar_GetS32("gCBtnRPosY", 0)+Y_Margins_CR;
+ if (CVar_GetS32("gCBtnRPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {X_Margins_CR = Left_HUD_Margin;};
+ C_Right_BTN_Pos[0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnRPosX", 0)+X_Margins_CR);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {X_Margins_CR = Right_HUD_Margin;};
+ C_Right_BTN_Pos[0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnRPosX", 0)+X_Margins_CR);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 3) {//Anchor None
+ C_Right_BTN_Pos[0] = CVar_GetS32("gCBtnRPosX", 0);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 4) {//Hidden
+ C_Right_BTN_Pos[0] = -9999;
+ }
+ } else {
+ C_Right_BTN_Pos[1] = C_Right_BTN_Pos_ori[1];
+ C_Right_BTN_Pos[0] = OTRGetRectDimensionFromRightEdge(C_Right_BTN_Pos_ori[0]);
+ }
+ //C Button Up
+ if (CVar_GetS32("gCBtnUPosType", 0) != 0) {
+ C_Up_BTN_Pos[1] = CVar_GetS32("gCBtnUPosY", 0)+Y_Margins_CU;
+ if (CVar_GetS32("gCBtnUPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnUUseMargins", 0) != 0) {X_Margins_CU = Left_HUD_Margin;};
+ C_Up_BTN_Pos[0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnUPosX", 0)+X_Margins_CU);
+ } else if (CVar_GetS32("gCBtnUPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnUUseMargins", 0) != 0) {X_Margins_CU = Right_HUD_Margin;};
+ C_Up_BTN_Pos[0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnUPosX", 0)+X_Margins_CU);
+ } else if (CVar_GetS32("gCBtnUPosType", 0) == 3) {//Anchor None
+ C_Up_BTN_Pos[0] = CVar_GetS32("gCBtnUPosX", 0);
+ } else if (CVar_GetS32("gCBtnUPosType", 0) == 4) {//Hidden
+ C_Up_BTN_Pos[0] = -9999;
+ }
+ } else {
+ C_Up_BTN_Pos[1] = C_Up_BTN_Pos_ori[1];
+ C_Up_BTN_Pos[0] = OTRGetRectDimensionFromRightEdge(C_Up_BTN_Pos_ori[0]);
+ }
+ //C Button down
+ if (CVar_GetS32("gCBtnDPosType", 0) != 0) {
+ C_Down_BTN_Pos[1] = CVar_GetS32("gCBtnDPosY", 0)+Y_Margins_CD;
+ if (CVar_GetS32("gCBtnDPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {X_Margins_CD = Left_HUD_Margin;};
+ C_Down_BTN_Pos[0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnDPosX", 0)+X_Margins_CD);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {X_Margins_CD = Right_HUD_Margin;};
+ C_Down_BTN_Pos[0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnDPosX", 0)+X_Margins_CD);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 3) {//Anchor None
+ C_Down_BTN_Pos[0] = CVar_GetS32("gCBtnDPosX", 0);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 4) {//Hidden
+ C_Down_BTN_Pos[0] = -9999;
+ }
+ } else {
+ C_Down_BTN_Pos[1] = C_Down_BTN_Pos_ori[1];
+ C_Down_BTN_Pos[0] = OTRGetRectDimensionFromRightEdge(C_Down_BTN_Pos_ori[0]);
+ }
OPEN_DISPS(globalCtx->state.gfxCtx);
@@ -3002,9 +3274,7 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
}
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
- OVERLAY_DISP =
- Gfx_TextureIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(0)+Right_HUD_Margin), R_ITEM_BTN_Y(0)+(Top_HUD_Margin*-1),
- R_ITEM_BTN_WIDTH(0), R_ITEM_BTN_WIDTH(0), R_ITEM_BTN_DD(0) << 1, R_ITEM_BTN_DD(0) << 1);
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, PosX_BtnB, PosY_BtnB, R_ITEM_BTN_WIDTH(0), R_ITEM_BTN_WIDTH(0), R_ITEM_BTN_DD(0) << 1, R_ITEM_BTN_DD(0) << 1);
// C-Left Button Color & Texture
gDPPipeSync(OVERLAY_DISP++);
@@ -3012,11 +3282,13 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), interfaceCtx->cLeftAlpha);
} else if (CVar_GetS32("gHudColors", 1) == 1) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), interfaceCtx->cLeftAlpha);
- } else if (CVar_GetS32("gHudColors", 1) == 2) {
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && !CVar_GetS32("gCCparated",0)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCBtnPrimB", R_C_BTN_COLOR(2)), interfaceCtx->cLeftAlpha);
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated",0)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCLBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCLBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCLBtnPrimB", R_C_BTN_COLOR(2)), interfaceCtx->cLeftAlpha);
}
- gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(C_Left_BTN_Pos[0]) << 2, C_Left_BTN_Pos[1] << 2,
- (OTRGetRectDimensionFromRightEdge(C_Left_BTN_Pos[0]) + R_ITEM_BTN_WIDTH(1)) << 2,
+ gSPWideTextureRectangle(OVERLAY_DISP++, C_Left_BTN_Pos[0] << 2, C_Left_BTN_Pos[1] << 2,
+ (C_Left_BTN_Pos[0] + R_ITEM_BTN_WIDTH(1)) << 2,
(C_Left_BTN_Pos[1] + R_ITEM_BTN_WIDTH(1)) << 2,
G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(1) << 1, R_ITEM_BTN_DD(1) << 1);
@@ -3025,11 +3297,13 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), interfaceCtx->cDownAlpha);
} else if (CVar_GetS32("gHudColors", 1) == 1) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), interfaceCtx->cDownAlpha);
- } else if (CVar_GetS32("gHudColors", 1) == 2) {
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && !CVar_GetS32("gCCparated",0)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCBtnPrimB", R_C_BTN_COLOR(2)), interfaceCtx->cDownAlpha);
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated",0)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCDBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCDBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCDBtnPrimB", R_C_BTN_COLOR(2)), interfaceCtx->cDownAlpha);
}
- gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(C_Down_BTN_Pos[0]) << 2, C_Down_BTN_Pos[1] << 2,
- (OTRGetRectDimensionFromRightEdge(C_Down_BTN_Pos[0]) + R_ITEM_BTN_WIDTH(2)) << 2,
+ gSPWideTextureRectangle(OVERLAY_DISP++, C_Down_BTN_Pos[0] << 2, C_Down_BTN_Pos[1] << 2,
+ (C_Down_BTN_Pos[0] + R_ITEM_BTN_WIDTH(2)) << 2,
(C_Down_BTN_Pos[1] + R_ITEM_BTN_WIDTH(2)) << 2,
G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(2) << 1, R_ITEM_BTN_DD(2) << 1);
@@ -3038,11 +3312,13 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), interfaceCtx->cRightAlpha);
} else if (CVar_GetS32("gHudColors", 1) == 1) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), interfaceCtx->cRightAlpha);
- } else if (CVar_GetS32("gHudColors", 1) == 2) {
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && !CVar_GetS32("gCCparated",0)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCBtnPrimB", R_C_BTN_COLOR(2)), interfaceCtx->cRightAlpha);
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated",0)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCRBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCRBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCRBtnPrimB", R_C_BTN_COLOR(2)), interfaceCtx->cRightAlpha);
}
- gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(C_Right_BTN_Pos[0]) << 2, C_Right_BTN_Pos[1] << 2,
- (OTRGetRectDimensionFromRightEdge(C_Right_BTN_Pos[0]) + R_ITEM_BTN_WIDTH(3)) << 2,
+ gSPWideTextureRectangle(OVERLAY_DISP++, C_Right_BTN_Pos[0] << 2, C_Right_BTN_Pos[1] << 2,
+ (C_Right_BTN_Pos[0] + R_ITEM_BTN_WIDTH(3)) << 2,
(C_Right_BTN_Pos[1] + R_ITEM_BTN_WIDTH(3)) << 2,
G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(3) << 1, R_ITEM_BTN_DD(3) << 1);
@@ -3057,9 +3333,9 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
} else if (CVar_GetS32("gHudColors", 1) == 2) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCStartBtnPrimR", 120), CVar_GetS32("gCCStartBtnPrimG", 120), CVar_GetS32("gCCStartBtnPrimB", 120), interfaceCtx->startAlpha);
}
- gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(startButtonLeftPos[gSaveContext.language]+Right_HUD_Margin) << 2, 68+((Top_HUD_Margin*-1)*4),
- (OTRGetRectDimensionFromRightEdge(startButtonLeftPos[gSaveContext.language]+Right_HUD_Margin) + 22) << 2, 156+((Top_HUD_Margin*-1)*4),
- G_TX_RENDERTILE, 0, 0, 1462, 1462);
+ gSPWideTextureRectangle(OVERLAY_DISP++, PosX_StartBtn << 2, PosY_StartBtn << 2,
+ (PosX_StartBtn + StartBTN_W_Scaled) << 2, (PosY_StartBtn + StartBTN_H_Scaled) << 2,
+ G_TX_RENDERTILE, 0, 0, StartBTN_W_factor, StartBTN_H_factor);
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->startAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
@@ -3089,14 +3365,11 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 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);
- dxdy = (1 << 10) / (R_START_LABEL_DD(gSaveContext.language) / 100.0f);
- width = DO_ACTION_TEX_WIDTH / (R_START_LABEL_DD(gSaveContext.language) / 100.0f);
- height = DO_ACTION_TEX_HEIGHT / (R_START_LABEL_DD(gSaveContext.language) / 100.0f);
- const s16 rStartLabelX = OTRGetRectDimensionFromRightEdge(R_START_LABEL_X(gSaveContext.language)+Right_HUD_Margin);
+ //const s16 rStartLabelX = OTRGetRectDimensionFromRightEdge(R_START_LABEL_X(gSaveContext.language)+Right_HUD_Margin);
gSPWideTextureRectangle(
- OVERLAY_DISP++, rStartLabelX << 2,
- R_START_LABEL_Y(gSaveContext.language)+(Top_HUD_Margin*-1) << 2, (rStartLabelX + width) << 2,
- (R_START_LABEL_Y(gSaveContext.language)+(Top_HUD_Margin*-1) + height) << 2, G_TX_RENDERTILE, 0, 0, dxdy, dxdy);
+ OVERLAY_DISP++, rStartLabelX << 2, rStartLabelY << 2,
+ (rStartLabelX + StartBTN_Label_W) << 2,
+ (rStartLabelY + StartBTN_Label_H) << 2, G_TX_RENDERTILE, 0, 0, StartBTN_Label_W_factor, StartBTN_Label_H_factor);
}
}
@@ -3115,18 +3388,18 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
temp = interfaceCtx->healthAlpha;
}
- const s16 rCUpBtnX = OTRGetRectDimensionFromRightEdge(R_C_UP_BTN_X+Right_HUD_Margin);
- const s16 rCUPIconX = OTRGetRectDimensionFromRightEdge(R_C_UP_ICON_X+Right_HUD_Margin-!!CVar_GetS32("gNaviTextFix", 0));
if (CVar_GetS32("gHudColors", 1) == 0) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), temp);
} else if (CVar_GetS32("gHudColors", 1) == 1) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), temp);
- } else if (CVar_GetS32("gHudColors", 1) == 2) {
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && !CVar_GetS32("gCCparated",0)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCBtnPrimB", R_C_BTN_COLOR(2)), temp);
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated",0)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCUBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCUBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCUBtnPrimB", R_C_BTN_COLOR(2)), temp);
}
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
- gSPWideTextureRectangle(OVERLAY_DISP++, rCUpBtnX << 2, R_C_UP_BTN_Y+(Top_HUD_Margin*-1) << 2, (rCUpBtnX + 16) << 2,
- (R_C_UP_BTN_Y+(Top_HUD_Margin*-1) + 16) << 2, G_TX_RENDERTILE, 0, 0, 2 << 10, 2 << 10);
+ gSPWideTextureRectangle(OVERLAY_DISP++, C_Up_BTN_Pos[0] << 2, C_Up_BTN_Pos[1] << 2, (C_Up_BTN_Pos[0] + 16) << 2,
+ (C_Up_BTN_Pos[1] + 16) << 2, G_TX_RENDERTILE, 0, 0, 2 << 10, 2 << 10);
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, temp);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
@@ -3137,8 +3410,9 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
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++, rCUPIconX << 2, R_C_UP_ICON_Y+(Top_HUD_Margin*-1) << 2, (rCUPIconX + 32) << 2,
- (R_C_UP_ICON_Y+(Top_HUD_Margin*-1) + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
+ gSPWideTextureRectangle(OVERLAY_DISP++, C_Up_BTN_Pos[0]-LabelX_Navi << 2, C_Up_BTN_Pos[1]+LabelY_Navi << 2,
+ (C_Up_BTN_Pos[0]-LabelX_Navi + 32) << 2, (C_Up_BTN_Pos[1]+LabelY_Navi + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
+
}
sCUpTimer--;
@@ -3153,6 +3427,94 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
// Empty C Button Arrows
for (temp = 1; temp < 4; temp++) {
if (gSaveContext.equips.buttonItems[temp] > 0xF0) {
+ s16 X_Margins_CL;
+ s16 X_Margins_CR;
+ s16 X_Margins_CD;
+ s16 Y_Margins_CL;
+ s16 Y_Margins_CR;
+ s16 Y_Margins_CD;
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnLPosType", 0) == 0) {X_Margins_CL = Right_HUD_Margin;};
+ Y_Margins_CL = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CL = 0;
+ Y_Margins_CL = 0;
+ }
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnRPosType", 0) == 0) {X_Margins_CR = Right_HUD_Margin;};
+ Y_Margins_CR = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CR = 0;
+ Y_Margins_CR = 0;
+ }
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnDPosType", 0) == 0) {X_Margins_CD = Right_HUD_Margin;};
+ Y_Margins_CD = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CD = 0;
+ Y_Margins_CD = 0;
+ }
+ const s16 ItemIconPos_ori[3][2] = {
+ { R_ITEM_ICON_X(1)+X_Margins_CL, R_ITEM_ICON_Y(1)+Y_Margins_CL },
+ { R_ITEM_ICON_X(2)+X_Margins_CD, R_ITEM_ICON_Y(2)+Y_Margins_CD },
+ { R_ITEM_ICON_X(3)+X_Margins_CR, R_ITEM_ICON_Y(3)+Y_Margins_CR },
+ };
+ s16 ItemIconPos[3][2]; //(X,Y)
+ //C button Left
+ if (CVar_GetS32("gCBtnLPosType", 0) != 0) {
+ ItemIconPos[0][1] = CVar_GetS32("gCBtnLPosY", 0)+Y_Margins_CL;
+ if (CVar_GetS32("gCBtnLPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {X_Margins_CL = Left_HUD_Margin;};
+ ItemIconPos[0][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnLPosX", 0)+X_Margins_CL);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {X_Margins_CL = Right_HUD_Margin;};
+ ItemIconPos[0][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnLPosX", 0)+X_Margins_CL);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 3) {//Anchor None
+ ItemIconPos[0][0] = CVar_GetS32("gCBtnLPosX", 0);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 4) {//Hidden
+ ItemIconPos[0][0] = -9999;
+ }
+ } else {
+ ItemIconPos[0][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[0][0]);
+ ItemIconPos[0][1] = ItemIconPos_ori[0][1];
+ }
+ //C Button down
+ if (CVar_GetS32("gCBtnDPosType", 0) != 0) {
+ ItemIconPos[1][1] = CVar_GetS32("gCBtnDPosY", 0)+Y_Margins_CD;
+ if (CVar_GetS32("gCBtnDPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {X_Margins_CD = Left_HUD_Margin;};
+ ItemIconPos[1][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnDPosX", 0)+X_Margins_CD);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {X_Margins_CD = Right_HUD_Margin;};
+ ItemIconPos[1][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnDPosX", 0)+X_Margins_CD);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 3) {//Anchor None
+ ItemIconPos[1][0] = CVar_GetS32("gCBtnDPosX", 0);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 4) {//Hidden
+ ItemIconPos[1][0] = -9999;
+ }
+ } else {
+ ItemIconPos[1][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[1][0]);
+ ItemIconPos[1][1] = ItemIconPos_ori[1][1];
+ }
+ //C button Right
+ if (CVar_GetS32("gCBtnRPosType", 0) != 0) {
+ ItemIconPos[2][1] = CVar_GetS32("gCBtnRPosY", 0)+Y_Margins_CR;
+ if (CVar_GetS32("gCBtnRPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {X_Margins_CR = Left_HUD_Margin;};
+ ItemIconPos[2][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnRPosX", 0)+X_Margins_CR);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {X_Margins_CR = Right_HUD_Margin;};
+ ItemIconPos[2][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnRPosX", 0)+X_Margins_CR);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 3) {//Anchor None
+ ItemIconPos[2][0] = CVar_GetS32("gCBtnRPosX", 0);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 4) {//Hidden
+ ItemIconPos[2][0] = -9999;
+ }
+ } else {
+ ItemIconPos[2][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[2][0]);
+ ItemIconPos[2][1] = ItemIconPos_ori[2][1];
+ }
+
if (temp == 1) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2),
interfaceCtx->cLeftAlpha);
@@ -3164,13 +3526,21 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
interfaceCtx->cRightAlpha);
}
- if (CVar_GetS32("gHudColors", 1) == 2) {
- //This later will feature color per C button right now that it.
+ if (CVar_GetS32("gHudColors", 1) == 2 && !CVar_GetS32("gCCparated", 0)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCBtnPrimB", R_C_BTN_COLOR(2)), interfaceCtx->cRightAlpha);
+ } else if (temp == 1 && CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated", 0)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCLBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCLBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCLBtnPrimB", R_C_BTN_COLOR(2)),
+ interfaceCtx->cLeftAlpha);
+ } else if (temp == 2 && CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated", 0)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCDBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCDBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCDBtnPrimB", R_C_BTN_COLOR(2)),
+ interfaceCtx->cDownAlpha);
+ } else if (CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gCCparated", 0)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCCRBtnPrimR", R_C_BTN_COLOR(0)), CVar_GetS32("gCCCRBtnPrimG", R_C_BTN_COLOR(1)), CVar_GetS32("gCCCRBtnPrimB", R_C_BTN_COLOR(2)),
+ interfaceCtx->cRightAlpha);
}
-
- OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex), 32, 32,
- OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(temp)+Right_HUD_Margin), R_ITEM_BTN_Y(temp)+(Top_HUD_Margin*-1), R_ITEM_BTN_WIDTH(temp),
+
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex), 32, 32,
+ ItemIconPos[temp-1][0], ItemIconPos[temp-1][1], R_ITEM_BTN_WIDTH(temp),
R_ITEM_BTN_WIDTH(temp), R_ITEM_BTN_DD(temp) << 1, R_ITEM_BTN_DD(temp) << 1);
const char* cButtonIcons[] = { gButtonBackgroundTex, gEquippedItemOutlineTex, gEmptyCLeftArrowTex,
@@ -3178,7 +3548,7 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
};
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, cButtonIcons[(temp + 1)], 32, 32,
- OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(temp)+Right_HUD_Margin), R_ITEM_BTN_Y(temp)+(Top_HUD_Margin*-1), R_ITEM_BTN_WIDTH(temp),
+ ItemIconPos[temp-1][0], ItemIconPos[temp-1][1], R_ITEM_BTN_WIDTH(temp),
R_ITEM_BTN_WIDTH(temp), R_ITEM_BTN_DD(temp) << 1, R_ITEM_BTN_DD(temp) << 1);
}
}
@@ -3186,25 +3556,192 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
-int16_t gItemIconX[] = { B_BUTTON_X, C_LEFT_BUTTON_X, C_DOWN_BUTTON_X, C_RIGHT_BUTTON_X,
- DPAD_UP_X, DPAD_DOWN_X, DPAD_LEFT_X, DPAD_RIGHT_X };
-int16_t gItemIconY[] = { B_BUTTON_Y, C_LEFT_BUTTON_Y, C_DOWN_BUTTON_Y, C_RIGHT_BUTTON_Y,
- DPAD_UP_Y, DPAD_DOWN_Y, DPAD_LEFT_Y, DPAD_RIGHT_Y };
int16_t gItemIconWidth[] = { 30, 24, 24, 24, 16, 16, 16, 16 };
int16_t gItemIconDD[] = { 550, 680, 680, 680, 1024, 1024, 1024, 1024 };
void Interface_DrawItemIconTexture(GlobalContext* globalCtx, void* texture, s16 button) {
OPEN_DISPS(globalCtx->state.gfxCtx);
+ s16 X_Margins_CL;
+ s16 X_Margins_CR;
+ s16 X_Margins_CD;
+ s16 Y_Margins_CL;
+ s16 Y_Margins_CR;
+ s16 Y_Margins_CD;
+ s16 X_Margins_BtnB;
+ s16 Y_Margins_BtnB;
+ s16 X_Margins_DPad_Items;
+ s16 Y_Margins_DPad_Items;
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {
+ if (CVar_GetS32("gBBtnPosType", 0) == 0) {X_Margins_BtnB = Right_HUD_Margin;};
+ Y_Margins_BtnB = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_BtnB = 0;
+ Y_Margins_BtnB = 0;
+ }
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnLPosType", 0) == 0) {X_Margins_CL = Right_HUD_Margin;};
+ Y_Margins_CL = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CL = 0;
+ Y_Margins_CL = 0;
+ }
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnRPosType", 0) == 0) {X_Margins_CR = Right_HUD_Margin;};
+ Y_Margins_CR = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CR = 0;
+ Y_Margins_CR = 0;
+ }
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnDPosType", 0) == 0) {X_Margins_CD = Right_HUD_Margin;};
+ Y_Margins_CD = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CD = 0;
+ Y_Margins_CD = 0;
+ }
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {
+ if (CVar_GetS32("gDPadPosType", 0) == 0) {X_Margins_DPad_Items = Right_HUD_Margin;};
+ Y_Margins_DPad_Items = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_DPad_Items = 0;
+ Y_Margins_DPad_Items = 0;
+ }
+ const s16 ItemIconPos_ori[8][2] = {
+ { B_BUTTON_X+X_Margins_BtnB, B_BUTTON_Y+Y_Margins_BtnB },
+ { C_LEFT_BUTTON_X+X_Margins_CL, C_LEFT_BUTTON_Y+Y_Margins_CL },
+ { C_DOWN_BUTTON_X+X_Margins_CD, C_DOWN_BUTTON_Y+Y_Margins_CD },
+ { C_RIGHT_BUTTON_X+X_Margins_CR, C_RIGHT_BUTTON_Y+Y_Margins_CR },
+ { DPAD_UP_X+X_Margins_DPad_Items, DPAD_UP_Y+Y_Margins_DPad_Items },
+ { DPAD_DOWN_X+X_Margins_DPad_Items, DPAD_DOWN_Y+Y_Margins_DPad_Items },
+ { DPAD_LEFT_X+X_Margins_DPad_Items, DPAD_LEFT_Y+Y_Margins_DPad_Items },
+ { DPAD_RIGHT_X+X_Margins_DPad_Items, DPAD_RIGHT_Y+Y_Margins_DPad_Items }
+ };
+ s16 DPad_ItemsOffset[4][2] = {
+ { 7,-8},//Up
+ { 7,24},//Down
+ {-9, 8},//Left
+ {23, 8},//Right
+ }; //(X,Y) Used with custom position to place it properly.
+ s16 ItemIconPos[8][2]; //(X,Y)
+ //DPadItems
+ if (CVar_GetS32("gDPadPosType", 0) != 0) {
+ ItemIconPos[4][1] = CVar_GetS32("gDPadPosY", 0)+Y_Margins_DPad_Items+DPad_ItemsOffset[0][1];//Up
+ ItemIconPos[5][1] = CVar_GetS32("gDPadPosY", 0)+Y_Margins_DPad_Items+DPad_ItemsOffset[1][1];//Down
+ ItemIconPos[6][1] = CVar_GetS32("gDPadPosY", 0)+Y_Margins_DPad_Items+DPad_ItemsOffset[2][1];//Left
+ ItemIconPos[7][1] = CVar_GetS32("gDPadPosY", 0)+Y_Margins_DPad_Items+DPad_ItemsOffset[3][1];//Right
+ if (CVar_GetS32("gDPadPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {X_Margins_DPad_Items = Left_HUD_Margin;};
+ ItemIconPos[4][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[0][0]);
+ ItemIconPos[5][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[1][0]);
+ ItemIconPos[6][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[2][0]);
+ ItemIconPos[7][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[3][0]);
+ } else if (CVar_GetS32("gDPadPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {X_Margins_DPad_Items = Right_HUD_Margin;};
+ ItemIconPos[4][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[0][0]);
+ ItemIconPos[5][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[1][0]);
+ ItemIconPos[6][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[2][0]);
+ ItemIconPos[7][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[3][0]);
+ } else if (CVar_GetS32("gDPadPosType", 0) == 3) {//Anchor None
+ ItemIconPos[4][0] = CVar_GetS32("gDPadPosX", 0)+DPad_ItemsOffset[0][0];
+ ItemIconPos[5][0] = CVar_GetS32("gDPadPosX", 0)+DPad_ItemsOffset[1][0];
+ ItemIconPos[6][0] = CVar_GetS32("gDPadPosX", 0)+DPad_ItemsOffset[2][0];
+ ItemIconPos[7][0] = CVar_GetS32("gDPadPosX", 0)+DPad_ItemsOffset[3][0];
+ } else if (CVar_GetS32("gDPadPosType", 0) == 4) {//Hidden
+ ItemIconPos[4][0] = -9999;
+ ItemIconPos[5][0] = -9999;
+ ItemIconPos[6][0] = -9999;
+ ItemIconPos[7][0] = -9999;
+ }
+ } else {
+ ItemIconPos[4][0] = OTRGetDimensionFromRightEdge(ItemIconPos_ori[4][0]);
+ ItemIconPos[5][0] = OTRGetDimensionFromRightEdge(ItemIconPos_ori[5][0]);
+ ItemIconPos[6][0] = OTRGetDimensionFromRightEdge(ItemIconPos_ori[6][0]);
+ ItemIconPos[7][0] = OTRGetDimensionFromRightEdge(ItemIconPos_ori[7][0]);
+ ItemIconPos[4][1] = ItemIconPos_ori[4][1];
+ ItemIconPos[5][1] = ItemIconPos_ori[5][1];
+ ItemIconPos[6][1] = ItemIconPos_ori[6][1];
+ ItemIconPos[7][1] = ItemIconPos_ori[7][1];
+ }
+ //B Button
+ if (CVar_GetS32("gBBtnPosType", 0) != 0) {
+ ItemIconPos[0][1] = CVar_GetS32("gBBtnPosY", 0)+Y_Margins_BtnB;
+ if (CVar_GetS32("gBBtnPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {X_Margins_BtnB = Left_HUD_Margin;};
+ ItemIconPos[0][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gBBtnPosX", 0)+X_Margins_BtnB);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {X_Margins_BtnB = Right_HUD_Margin;};
+ ItemIconPos[0][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gBBtnPosX", 0)+X_Margins_BtnB);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 3) {//Anchor None
+ ItemIconPos[0][0] = CVar_GetS32("gBBtnPosX", 0);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 4) {//Hidden
+ ItemIconPos[0][0] = -9999;
+ }
+ } else {
+ ItemIconPos[0][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[0][0]);
+ ItemIconPos[0][1] = ItemIconPos_ori[0][1];
+ }
+ //C button Left
+ if (CVar_GetS32("gCBtnLPosType", 0) != 0) {
+ ItemIconPos[1][1] = CVar_GetS32("gCBtnLPosY", 0)+Y_Margins_CL;
+ if (CVar_GetS32("gCBtnLPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {X_Margins_CL = Left_HUD_Margin;};
+ ItemIconPos[1][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnLPosX", 0)+X_Margins_CL);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {X_Margins_CL = Right_HUD_Margin;};
+ ItemIconPos[1][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnLPosX", 0)+X_Margins_CL);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 3) {//Anchor None
+ ItemIconPos[1][0] = CVar_GetS32("gCBtnLPosX", 0);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 4) {//Hidden
+ ItemIconPos[1][0] = -9999;
+ }
+ } else {
+ ItemIconPos[1][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[1][0]);
+ ItemIconPos[1][1] = ItemIconPos_ori[1][1];
+ }
+ //C Button down
+ if (CVar_GetS32("gCBtnDPosType", 0) != 0) {
+ ItemIconPos[2][1] = CVar_GetS32("gCBtnDPosY", 0)+Y_Margins_CD;
+ if (CVar_GetS32("gCBtnDPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {X_Margins_CD = Left_HUD_Margin;};
+ ItemIconPos[2][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnDPosX", 0)+X_Margins_CD);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {X_Margins_CD = Right_HUD_Margin;};
+ ItemIconPos[2][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnDPosX", 0)+X_Margins_CD);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 3) {//Anchor None
+ ItemIconPos[2][0] = CVar_GetS32("gCBtnDPosX", 0);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 4) {//Hidden
+ ItemIconPos[2][0] = -9999;
+ }
+ } else {
+ ItemIconPos[2][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[2][0]);
+ ItemIconPos[2][1] = ItemIconPos_ori[2][1];
+ }
+ //C button Right
+ if (CVar_GetS32("gCBtnRPosType", 0) != 0) {
+ ItemIconPos[3][1] = CVar_GetS32("gCBtnRPosY", 0)+Y_Margins_CR;
+ if (CVar_GetS32("gCBtnRPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {X_Margins_CR = Left_HUD_Margin;};
+ ItemIconPos[3][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnRPosX", 0)+X_Margins_CR);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {X_Margins_CR = Right_HUD_Margin;};
+ ItemIconPos[3][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnRPosX", 0)+X_Margins_CR);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 3) {//Anchor None
+ ItemIconPos[3][0] = CVar_GetS32("gCBtnRPosX", 0);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 4) {//Hidden
+ ItemIconPos[3][0] = -9999;
+ }
+ } else {
+ ItemIconPos[3][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[3][0]);
+ ItemIconPos[3][1] = ItemIconPos_ori[3][1];
+ }
gDPLoadTextureBlock(OVERLAY_DISP++, texture, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, 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++, OTRGetRectDimensionFromRightEdge(gItemIconX[button] + Right_HUD_Margin) << 2,
- gItemIconY[button] + (Top_HUD_Margin * -1) << 2,
- (OTRGetRectDimensionFromRightEdge(gItemIconX[button] + Right_HUD_Margin) + gItemIconWidth[button]) << 2,
- (gItemIconY[button] + (Top_HUD_Margin * -1) + gItemIconWidth[button]) << 2, G_TX_RENDERTILE, 0, 0,
- gItemIconDD[button] << 1, gItemIconDD[button] << 1);
+ gSPWideTextureRectangle(OVERLAY_DISP++, ItemIconPos[button][0] << 2, ItemIconPos[button][1] << 2,
+ (ItemIconPos[button][0] + gItemIconWidth[button]) << 2,
+ (ItemIconPos[button][1] + gItemIconWidth[button]) << 2, G_TX_RENDERTILE, 0, 0,
+ gItemIconDD[button] << 1, gItemIconDD[button] << 1);
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
@@ -3223,6 +3760,181 @@ static int16_t gItemAmmoY[] = { B_BUTTON_Y + 18, C_LEFT_BUTTON_Y + 17, C_DOWN_BU
void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) {
s16 i;
s16 ammo;
+ s16 X_Margins_CL;
+ s16 X_Margins_CR;
+ s16 X_Margins_CD;
+ s16 Y_Margins_CL;
+ s16 Y_Margins_CR;
+ s16 Y_Margins_CD;
+ s16 X_Margins_BtnB;
+ s16 Y_Margins_BtnB;
+ s16 X_Margins_DPad_Items;
+ s16 Y_Margins_DPad_Items;
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {
+ if (CVar_GetS32("gBBtnPosType", 0) == 0) {X_Margins_BtnB = Right_HUD_Margin;};
+ Y_Margins_BtnB = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_BtnB = 0;
+ Y_Margins_BtnB = 0;
+ }
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnLPosType", 0) == 0) {X_Margins_CL = Right_HUD_Margin;};
+ Y_Margins_CL = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CL = 0;
+ Y_Margins_CL = 0;
+ }
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnRPosType", 0) == 0) {X_Margins_CR = Right_HUD_Margin;};
+ Y_Margins_CR = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CR = 0;
+ Y_Margins_CR = 0;
+ }
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {
+ if (CVar_GetS32("gCBtnDPosType", 0) == 0) {X_Margins_CD = Right_HUD_Margin;};
+ Y_Margins_CD = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_CD = 0;
+ Y_Margins_CD = 0;
+ }
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {
+ if (CVar_GetS32("gDPadPosType", 0) == 0) {X_Margins_DPad_Items = Right_HUD_Margin;};
+ Y_Margins_DPad_Items = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_DPad_Items = 0;
+ Y_Margins_DPad_Items = 0;
+ }
+ const s16 ItemIconPos_ori[8][2] = {
+ { R_ITEM_AMMO_X(0)+X_Margins_BtnB, R_ITEM_AMMO_Y(0)+Y_Margins_BtnB }, //Bow on Epona?
+ { R_ITEM_AMMO_X(1)+X_Margins_CL, R_ITEM_AMMO_Y(1)+Y_Margins_CL },
+ { R_ITEM_AMMO_X(2)+X_Margins_CD, R_ITEM_AMMO_Y(2)+Y_Margins_CD },
+ { R_ITEM_AMMO_X(3)+X_Margins_CR, R_ITEM_AMMO_Y(3)+Y_Margins_CR },
+ { DPAD_UP_X+X_Margins_DPad_Items, DPAD_UP_Y + 11 + Y_Margins_DPad_Items },
+ { DPAD_DOWN_X+X_Margins_DPad_Items, DPAD_DOWN_Y + 11 + Y_Margins_DPad_Items },
+ { DPAD_LEFT_X+X_Margins_DPad_Items, DPAD_LEFT_Y + 11 + Y_Margins_DPad_Items },
+ { DPAD_RIGHT_X+X_Margins_DPad_Items, DPAD_RIGHT_Y + 11 + Y_Margins_DPad_Items }
+ };
+ s16 ItemIconPos[8][2]; //(X,Y)
+ s16 DPad_ItemsOffset[4][2] = {
+ { 7, 3},//Up
+ { 7,35},//Down
+ {-9,19},//Left
+ {23,19},//Right
+ }; //(X,Y) Used with custom position to place it properly.
+ //DPadItems
+ if (CVar_GetS32("gDPadPosType", 0) != 0) {
+ ItemIconPos[4][1] = CVar_GetS32("gDPadPosY", 0)+Y_Margins_DPad_Items+DPad_ItemsOffset[0][1];//Up
+ ItemIconPos[5][1] = CVar_GetS32("gDPadPosY", 0)+Y_Margins_DPad_Items+DPad_ItemsOffset[1][1];//Down
+ ItemIconPos[6][1] = CVar_GetS32("gDPadPosY", 0)+Y_Margins_DPad_Items+DPad_ItemsOffset[2][1];//Left
+ ItemIconPos[7][1] = CVar_GetS32("gDPadPosY", 0)+Y_Margins_DPad_Items+DPad_ItemsOffset[3][1];//Right
+ if (CVar_GetS32("gDPadPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {X_Margins_DPad_Items = Left_HUD_Margin;};
+ ItemIconPos[4][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[0][0]);
+ ItemIconPos[5][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[1][0]);
+ ItemIconPos[6][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[2][0]);
+ ItemIconPos[7][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[3][0]);
+ } else if (CVar_GetS32("gDPadPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {X_Margins_DPad_Items = Right_HUD_Margin;};
+ ItemIconPos[4][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[0][0]);
+ ItemIconPos[5][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[1][0]);
+ ItemIconPos[6][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[2][0]);
+ ItemIconPos[7][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_DPad_Items+DPad_ItemsOffset[3][0]);
+ } else if (CVar_GetS32("gDPadPosType", 0) == 3) {//Anchor None
+ ItemIconPos[4][0] = CVar_GetS32("gDPadPosX", 0)+DPad_ItemsOffset[0][0];
+ ItemIconPos[5][0] = CVar_GetS32("gDPadPosX", 0)+DPad_ItemsOffset[1][0];
+ ItemIconPos[6][0] = CVar_GetS32("gDPadPosX", 0)+DPad_ItemsOffset[2][0];
+ ItemIconPos[7][0] = CVar_GetS32("gDPadPosX", 0)+DPad_ItemsOffset[3][0];
+ } else if (CVar_GetS32("gDPadPosType", 0) == 4) {//Hidden
+ ItemIconPos[4][0] = -9999;
+ ItemIconPos[5][0] = -9999;
+ ItemIconPos[6][0] = -9999;
+ ItemIconPos[7][0] = -9999;
+ }
+ } else {
+ ItemIconPos[4][0] = OTRGetDimensionFromRightEdge(ItemIconPos_ori[4][0]);
+ ItemIconPos[5][0] = OTRGetDimensionFromRightEdge(ItemIconPos_ori[5][0]);
+ ItemIconPos[6][0] = OTRGetDimensionFromRightEdge(ItemIconPos_ori[6][0]);
+ ItemIconPos[7][0] = OTRGetDimensionFromRightEdge(ItemIconPos_ori[7][0]);
+ ItemIconPos[4][1] = ItemIconPos_ori[4][1];
+ ItemIconPos[5][1] = ItemIconPos_ori[5][1];
+ ItemIconPos[6][1] = ItemIconPos_ori[6][1];
+ ItemIconPos[7][1] = ItemIconPos_ori[7][1];
+ }
+ //B Button
+ s16 PosX_adjust = 1;
+ s16 PosY_adjust = 17;
+ if (CVar_GetS32("gBBtnPosType", 0) != 0) {
+ ItemIconPos[0][1] = CVar_GetS32("gBBtnPosY", 0)+Y_Margins_BtnB+PosY_adjust;
+ if (CVar_GetS32("gBBtnPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {X_Margins_BtnB = Left_HUD_Margin;};
+ ItemIconPos[0][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gBBtnPosX", 0)+X_Margins_BtnB+PosX_adjust);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {X_Margins_BtnB = Right_HUD_Margin;};
+ ItemIconPos[0][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gBBtnPosX", 0)+X_Margins_BtnB+PosX_adjust);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 3) {//Anchor None
+ ItemIconPos[0][0] = CVar_GetS32("gBBtnPosX", 0)+PosX_adjust;
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 4) {//Hidden
+ ItemIconPos[0][0] = -9999;
+ }
+ } else {
+ ItemIconPos[0][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[0][0]);
+ ItemIconPos[0][1] = ItemIconPos_ori[0][1];
+ }
+ //C button Left
+ if (CVar_GetS32("gCBtnLPosType", 0) != 0) {
+ ItemIconPos[1][1] = CVar_GetS32("gCBtnLPosY", 0)+Y_Margins_CL+PosY_adjust;
+ if (CVar_GetS32("gCBtnLPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {X_Margins_CL = Left_HUD_Margin;};
+ ItemIconPos[1][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnLPosX", 0)+X_Margins_CL+PosX_adjust);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnLUseMargins", 0) != 0) {X_Margins_CL = Right_HUD_Margin;};
+ ItemIconPos[1][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnLPosX", 0)+X_Margins_CL+PosX_adjust);
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 3) {//Anchor None
+ ItemIconPos[1][0] = CVar_GetS32("gCBtnLPosX", 0)+PosX_adjust;
+ } else if (CVar_GetS32("gCBtnLPosType", 0) == 4) {//Hidden
+ ItemIconPos[1][0] = -9999;
+ }
+ } else {
+ ItemIconPos[1][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[1][0]);
+ ItemIconPos[1][1] = ItemIconPos_ori[1][1];
+ }
+ //C Button down
+ if (CVar_GetS32("gCBtnDPosType", 0) != 0) {
+ ItemIconPos[2][1] = CVar_GetS32("gCBtnDPosY", 0)+Y_Margins_CD+PosY_adjust;
+ if (CVar_GetS32("gCBtnDPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {X_Margins_CD = Left_HUD_Margin;};
+ ItemIconPos[2][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnDPosX", 0)+X_Margins_CD+PosX_adjust);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnDUseMargins", 0) != 0) {X_Margins_CD = Right_HUD_Margin;};
+ ItemIconPos[2][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnDPosX", 0)+X_Margins_CD+PosX_adjust);
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 3) {//Anchor None
+ ItemIconPos[2][0] = CVar_GetS32("gCBtnDPosX", 0)+PosX_adjust;
+ } else if (CVar_GetS32("gCBtnDPosType", 0) == 4) {//Hidden
+ ItemIconPos[2][0] = -9999;
+ }
+ } else {
+ ItemIconPos[2][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[2][0]);
+ ItemIconPos[2][1] = ItemIconPos_ori[2][1];
+ }
+ //C button Right
+ if (CVar_GetS32("gCBtnRPosType", 0) != 0) {
+ ItemIconPos[3][1] = CVar_GetS32("gCBtnRPosY", 0)+Y_Margins_CR+PosY_adjust;
+ if (CVar_GetS32("gCBtnRPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {X_Margins_CR = Left_HUD_Margin;};
+ ItemIconPos[3][0] = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCBtnRPosX", 0)+X_Margins_CR+PosX_adjust);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCBtnRUseMargins", 0) != 0) {X_Margins_CR = Right_HUD_Margin;};
+ ItemIconPos[3][0] = OTRGetDimensionFromRightEdge(CVar_GetS32("gCBtnRPosX", 0)+X_Margins_CR+PosX_adjust);
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 3) {//Anchor None
+ ItemIconPos[3][0] = CVar_GetS32("gCBtnRPosX", 0)+PosX_adjust;
+ } else if (CVar_GetS32("gCBtnRPosType", 0) == 4) {//Hidden
+ ItemIconPos[3][0] = -9999;
+ }
+ } else {
+ ItemIconPos[3][0] = OTRGetRectDimensionFromRightEdge(ItemIconPos_ori[3][0]);
+ ItemIconPos[3][1] = ItemIconPos_ori[3][1];
+ }
OPEN_DISPS(globalCtx->state.gfxCtx);
@@ -3267,14 +3979,13 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) {
}
if (i != 0) {
- OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, (u8*)_gAmmoDigit0Tex[i], 8, 8,
- OTRGetRectDimensionFromRightEdge(gItemAmmoX[button] + Right_HUD_Margin),
- gItemAmmoY[button] + (Top_HUD_Margin * -1), 8, 8, 1 << 10, 1 << 10);
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, (u8*)_gAmmoDigit0Tex[i], 8, 8,
+ ItemIconPos[button][0], ItemIconPos[button][1], 8, 8, 1 << 10, 1 << 10);
}
- OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, (u8*)_gAmmoDigit0Tex[ammo], 8, 8,
- OTRGetRectDimensionFromRightEdge(gItemAmmoX[button] + Right_HUD_Margin) + 6,
- gItemAmmoY[button] + (Top_HUD_Margin * -1), 8, 8, 1 << 10, 1 << 10);
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, (u8*)_gAmmoDigit0Tex[ammo], 8, 8,
+ ItemIconPos[button][0] + 6, ItemIconPos[button][1], 8, 8, 1 << 10, 1 << 10);
+
}
CLOSE_DISPS(globalCtx->state.gfxCtx);
@@ -3442,7 +4153,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
{ 0x82, 0x82, 0xFF }, // Adult's Wallet (Blue)
{ 0xFF, 0x64, 0x64 }, // Giant's Wallet (Red)
};
-
+ s16 rColor[3] = { 200, 255, 100 };
static s16 spoilingItemEntrances[] = { 0x01AD, 0x0153, 0x0153 };
static f32 D_80125B54[] = { -40.0f, -35.0f }; // unused
static s16 D_80125B5C[] = { 91, 91 }; // unused
@@ -3485,24 +4196,68 @@ void Interface_Draw(GlobalContext* globalCtx) {
if (fullUi) {
// Rupee Icon
- s16* rColor;
-
- if (CVar_GetS32("gDynamicWalletIcon", 0)) {
- rColor = &rupeeWalletColors[CUR_UPG_VALUE(UPG_WALLET)];
+ if (CVar_GetS32("gHudColors", 1) == 2) {
+ //Custom Color is on but check if Dynamic Wallet is on.
+ if (CVar_GetS32("gDynamicWalletIcon", 0) != 0) {
+ //if on let's use Dynamic Colors
+ rColor[0] = rupeeWalletColors[CUR_UPG_VALUE(UPG_WALLET)][0];
+ rColor[1] = rupeeWalletColors[CUR_UPG_VALUE(UPG_WALLET)][1];
+ rColor[2] = rupeeWalletColors[CUR_UPG_VALUE(UPG_WALLET)][2];
+ } else {
+ //else use our custom color
+ rColor[0] = CVar_GetS32("gCCRupeePrimR", &rupeeWalletColors[0][0]);
+ rColor[1] = CVar_GetS32("gCCRupeePrimG", &rupeeWalletColors[0][1]);
+ rColor[2] = CVar_GetS32("gCCRupeePrimB", &rupeeWalletColors[0][2]);
+ }
} else {
- rColor = &rupeeWalletColors[0];
+ //Custom colors is off so check if Dynamic Wallet is on.
+ if (CVar_GetS32("gDynamicWalletIcon", 0) != 0) {
+ rColor[0] = rupeeWalletColors[CUR_UPG_VALUE(UPG_WALLET)][0];
+ rColor[1] = rupeeWalletColors[CUR_UPG_VALUE(UPG_WALLET)][1];
+ rColor[2] = rupeeWalletColors[CUR_UPG_VALUE(UPG_WALLET)][2];
+ } else {
+ rColor[0] = rupeeWalletColors[0][0];
+ rColor[1] = rupeeWalletColors[0][1];
+ rColor[2] = rupeeWalletColors[0][2];
+ }
}
-
- if (CVar_GetS32("gHudColors", 1) == 2) {
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCRupeePrimR", rColor[0]), CVar_GetS32("gCCRupeePrimG", rColor[1]), CVar_GetS32("gCCRupeePrimB", rColor[2]), interfaceCtx->magicAlpha);
- gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); //We reset this here so it match user color :)
+ if (CVar_GetS32("gHudColors", 1) == 2 && CVar_GetS32("gDynamicWalletIcon", 0) != 1) {
+ //We reset this here so it match user color only if both HUD is on and Dynamic is off.
+ gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
+ }
+ //Rupee icon & counter
+ s16 X_Margins_RC;
+ s16 Y_Margins_RC;
+ if (CVar_GetS32("gRCUseMargins", 0) != 0) {
+ if (CVar_GetS32("gRCPosType", 0) == 0) {X_Margins_RC = Left_HUD_Margin;};
+ Y_Margins_RC = Bottom_HUD_Margin;
+ } else {
+ X_Margins_RC = 0;
+ Y_Margins_RC = 0;
+ }
+ s16 PosX_RC_ori = OTRGetRectDimensionFromLeftEdge(26+X_Margins_RC);
+ s16 PosY_RC_ori = 206+Y_Margins_RC;
+ s16 PosX_RC;
+ s16 PosY_RC;
+ if (CVar_GetS32("gRCPosType", 0) != 0) {
+ PosY_RC = CVar_GetS32("gRCPosY", 0)+Y_Margins_RC;
+ if (CVar_GetS32("gRCPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gRCUseMargins", 0) != 0) {X_Margins_RC = Left_HUD_Margin;};
+ PosX_RC = OTRGetDimensionFromLeftEdge(CVar_GetS32("gRCPosX", 0)+X_Margins_RC);
+ } else if (CVar_GetS32("gRCPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gRCUseMargins", 0) != 0) {X_Margins_RC = Right_HUD_Margin;};
+ PosX_RC = OTRGetDimensionFromRightEdge(CVar_GetS32("gRCPosX", 0)+X_Margins_RC);
+ } else if (CVar_GetS32("gRCPosType", 0) == 3) {//Anchor None
+ PosX_RC = CVar_GetS32("gRCPosX", 0);
+ } else if (CVar_GetS32("gRCPosType", 0) == 4) {//Hidden
+ PosX_RC = -9999;
+ }
} else {
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, rColor[0], rColor[1], rColor[2], interfaceCtx->magicAlpha);
- gDPSetEnvColor(OVERLAY_DISP++, 0, 80, 0, 255);
+ PosY_RC = PosY_RC_ori;
+ PosX_RC = PosX_RC_ori;
}
-
- OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26+(Left_HUD_Margin*-1)),
- 206+(Bottom_HUD_Margin), 16, 16, 1 << 10, 1 << 10);
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, rColor[0], rColor[1], rColor[2], interfaceCtx->magicAlpha);
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, PosX_RC, PosY_RC, 16, 16, 1 << 10, 1 << 10);
switch (globalCtx->sceneNum) {
case SCENE_BMORI1:
@@ -3520,6 +4275,36 @@ void Interface_Draw(GlobalContext* globalCtx) {
case SCENE_GANONTIKA_SONOGO:
case SCENE_TAKARAYA:
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) {
+ s16 X_Margins_SKC;
+ s16 Y_Margins_SKC;
+ if (CVar_GetS32("gSKCUseMargins", 0) != 0) {
+ if (CVar_GetS32("gSKCPosType", 0) == 0) {X_Margins_SKC = Left_HUD_Margin;};
+ Y_Margins_SKC = Bottom_HUD_Margin;
+ } else {
+ X_Margins_SKC = 0;
+ Y_Margins_SKC = 0;
+ }
+ s16 PosX_SKC_ori = OTRGetRectDimensionFromLeftEdge(26+X_Margins_SKC);
+ s16 PosY_SKC_ori = 190+Y_Margins_SKC;
+ s16 PosX_SKC;
+ s16 PosY_SKC;
+ if (CVar_GetS32("gSKCPosType", 0) != 0) {
+ PosY_SKC = CVar_GetS32("gSKCPosY", 0)+Y_Margins_SKC;
+ if (CVar_GetS32("gSKCPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gSKCUseMargins", 0) != 0) {X_Margins_SKC = Left_HUD_Margin;};
+ PosX_SKC = OTRGetDimensionFromLeftEdge(CVar_GetS32("gSKCPosX", 0)+X_Margins_SKC);
+ } else if (CVar_GetS32("gSKCPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gSKCUseMargins", 0) != 0) {X_Margins_SKC = Right_HUD_Margin;};
+ PosX_SKC = OTRGetDimensionFromRightEdge(CVar_GetS32("gSKCPosX", 0)+X_Margins_SKC);
+ } else if (CVar_GetS32("gSKCPosType", 0) == 3) {//Anchor None
+ PosX_SKC = CVar_GetS32("gSKCPosX", 0);
+ } else if (CVar_GetS32("gSKCPosType", 0) == 4) {//Hidden
+ PosX_SKC = -9999;
+ }
+ } else {
+ PosY_SKC = PosY_SKC_ori;
+ PosX_SKC = PosX_SKC_ori;
+ }
// Small Key Icon
gDPPipeSync(OVERLAY_DISP++);
@@ -3530,7 +4315,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
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+(Left_HUD_Margin*-1)), 190+(Bottom_HUD_Margin), 16, 16,
+ OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, PosX_SKC, PosY_SKC, 16, 16,
1 << 10, 1 << 10);
// Small Key Counter
@@ -3547,17 +4332,11 @@ void Interface_Draw(GlobalContext* globalCtx) {
interfaceCtx->counterDigits[3] -= 10;
}
- svar3 = OTRGetRectDimensionFromLeftEdge(42+(Left_HUD_Margin*-1));
-
if (interfaceCtx->counterDigits[2] != 0) {
- OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)((u8*)digitTextures[interfaceCtx->counterDigits[2]])), 8,
- 16, svar3, 190+(Bottom_HUD_Margin), 8, 16, 1 << 10, 1 << 10);
- svar3 += 8;
+ OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)((u8*)digitTextures[interfaceCtx->counterDigits[2]])), 8, 16, PosX_SKC+8, PosY_SKC, 8, 16, 1 << 10, 1 << 10);
}
- OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP,
- ((u8*)digitTextures[interfaceCtx->counterDigits[3]]), 8, 16,
- svar3, 190+(Bottom_HUD_Margin), 8, 16, 1 << 10, 1 << 10);
+ OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[3]]), 8, 16, PosX_SKC+16, PosY_SKC, 8, 16, 1 << 10, 1 << 10);
}
break;
default:
@@ -3598,10 +4377,10 @@ void Interface_Draw(GlobalContext* globalCtx) {
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) {
+ for (svar1 = 0, svar3 = 16; svar1 < svar5; svar1++, svar2++, svar3 += 8) {
OVERLAY_DISP =
Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[svar2]]), 8, 16,
- OTRGetRectDimensionFromLeftEdge(svar3+(Left_HUD_Margin*-1)), 206+(Bottom_HUD_Margin), 8, 16, 1 << 10, 1 << 10);
+ PosX_RC+svar3, PosY_RC, 8, 16, 1 << 10, 1 << 10);
}
}
else {
@@ -3653,6 +4432,47 @@ void Interface_Draw(GlobalContext* globalCtx) {
}
} else {
// B Button Do Action Label
+ s16 PosX_adjust;
+ s16 PosY_adjust;
+ if (gSaveContext.language == 2) {
+ PosX_adjust = -12;
+ PosY_adjust = 5;
+ } else if (gSaveContext.language == 1) { //ger
+ PosY_adjust = 6;
+ PosX_adjust = -9;
+ } else {
+ PosY_adjust = 6;
+ PosX_adjust = -10;
+ }
+
+ s16 BbtnPosX;
+ s16 BbtnPosY;
+ s16 X_Margins_BtnB_label;
+ s16 Y_Margins_BtnB_label;
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {
+ if (CVar_GetS32("gBBtnPosType", 0) == 0) {X_Margins_BtnB_label = Right_HUD_Margin;};
+ Y_Margins_BtnB_label = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_BtnB_label = 0;
+ Y_Margins_BtnB_label = 0;
+ }
+ if (CVar_GetS32("gBBtnPosType", 0) != 0) {
+ BbtnPosY = CVar_GetS32("gBBtnPosY", 0)+Y_Margins_BtnB_label+PosY_adjust;
+ if (CVar_GetS32("gBBtnPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {X_Margins_BtnB_label = Left_HUD_Margin;};
+ BbtnPosX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gBBtnPosX", 0)+X_Margins_BtnB_label+PosX_adjust);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gBBtnUseMargins", 0) != 0) {X_Margins_BtnB_label = Right_HUD_Margin;};
+ BbtnPosX = OTRGetDimensionFromRightEdge(CVar_GetS32("gBBtnPosX", 0)+X_Margins_BtnB_label+PosX_adjust);
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 3) {//Anchor None
+ BbtnPosX = CVar_GetS32("gBBtnPosX", 0)+PosX_adjust;
+ } else if (CVar_GetS32("gBBtnPosType", 0) == 4) {//Hidden
+ BbtnPosX = -9999;
+ }
+ } else {
+ BbtnPosX = OTRGetRectDimensionFromRightEdge(R_B_LABEL_X(gSaveContext.language)+X_Margins_BtnB_label);
+ BbtnPosY = R_B_LABEL_Y(gSaveContext.language)+Y_Margins_BtnB_label;
+ }
gDPPipeSync(OVERLAY_DISP++);
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0,
PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
@@ -3663,10 +4483,9 @@ void Interface_Draw(GlobalContext* globalCtx) {
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
R_B_LABEL_DD = (1 << 10) / (WREG(37 + gSaveContext.language) / 100.0f);
- const s16 rBLabelX = OTRGetRectDimensionFromRightEdge(R_B_LABEL_X(gSaveContext.language)+Right_HUD_Margin);
- gSPWideTextureRectangle(OVERLAY_DISP++, rBLabelX << 2, R_B_LABEL_Y(gSaveContext.language)+(Top_HUD_Margin*-1) << 2,
- (rBLabelX + DO_ACTION_TEX_WIDTH) << 2,
- (R_B_LABEL_Y(gSaveContext.language) + DO_ACTION_TEX_HEIGHT) << 2, G_TX_RENDERTILE, 0, 0,
+ gSPWideTextureRectangle(OVERLAY_DISP++, BbtnPosX << 2, BbtnPosY << 2,
+ (BbtnPosX + DO_ACTION_TEX_WIDTH) << 2,
+ (BbtnPosY + DO_ACTION_TEX_HEIGHT) << 2, G_TX_RENDERTILE, 0, 0,
R_B_LABEL_DD, R_B_LABEL_DD);
}
@@ -3716,16 +4535,48 @@ void Interface_Draw(GlobalContext* globalCtx) {
interfaceCtx->dpadRightAlpha);
// Draw DPad
+ s16 DpadPosX;
+ s16 DpadPosY;
+ s16 X_Margins_Dpad;
+ s16 Y_Margins_Dpad;
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {
+ if (CVar_GetS32("gDPadPosType", 0) == 0) {X_Margins_Dpad = Right_HUD_Margin;};
+ Y_Margins_Dpad = (Top_HUD_Margin*-1);
+ } else {
+ Y_Margins_Dpad = 0;
+ X_Margins_Dpad = 0;
+ }
+ if (CVar_GetS32("gDPadPosType", 0) != 0) {
+ DpadPosY = CVar_GetS32("gDPadPosY", 0)+Y_Margins_Dpad;
+ if (CVar_GetS32("gDPadPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {X_Margins_Dpad = Left_HUD_Margin;};
+ DpadPosX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_Dpad);
+ } else if (CVar_GetS32("gDPadPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gDPadUseMargins", 0) != 0) {X_Margins_Dpad = Right_HUD_Margin;};
+ DpadPosX = OTRGetDimensionFromRightEdge(CVar_GetS32("gDPadPosX", 0)+X_Margins_Dpad);
+ } else if (CVar_GetS32("gDPadPosType", 0) == 3) {//Anchor None
+ DpadPosX = CVar_GetS32("gDPadPosX", 0);
+ } else if (CVar_GetS32("gDPadPosType", 0) == 4) {//Hidden
+ DpadPosX = -9999;
+ }
+ } else {
+ DpadPosX = OTRGetRectDimensionFromRightEdge(DPAD_X+X_Margins_Dpad);
+ DpadPosY = DPAD_Y+Y_Margins_Dpad;
+ }
+
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
- gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, dpadAlpha);
+
+ if (CVar_GetS32("gHudColors", 1) == 2) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCDpadPrimR", 255), CVar_GetS32("gCCDpadPrimG", 255), CVar_GetS32("gCCDpadPrimB", 255), dpadAlpha);
+ } else {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, dpadAlpha);
+ }
gDPLoadTextureBlock(OVERLAY_DISP++, ResourceMgr_LoadFileRaw("assets/ship_of_harkinian/buttons/dpad.bin"),
G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 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++, OTRGetRectDimensionFromRightEdge(DPAD_X + Right_HUD_Margin) << 2,
- (DPAD_Y + (Top_HUD_Margin * -1)) << 2,
- (OTRGetRectDimensionFromRightEdge(DPAD_X + Right_HUD_Margin) + 32) << 2,
- (DPAD_Y + 32 + (Top_HUD_Margin * -1)) << 2, G_TX_RENDERTILE, 0, 0, (1 << 10),
- (1 << 10));
+ gSPWideTextureRectangle(OVERLAY_DISP++, DpadPosX << 2, DpadPosY << 2,
+ (DpadPosX + 32) << 2, (DpadPosY + 32) << 2,
+ G_TX_RENDERTILE, 0, 0, (1 << 10), (1 << 10));
// DPad-Up Button Icon & Ammo Count
if (gSaveContext.equips.buttonItems[4] < 0xF0) {
@@ -3774,8 +4625,46 @@ void Interface_Draw(GlobalContext* globalCtx) {
// A Button
func_80094A14(globalCtx->state.gfxCtx);
- const f32 rABtnX = OTRGetDimensionFromRightEdge(R_A_BTN_X+Right_HUD_Margin);
- //func_8008A8B8(globalCtx, R_A_BTN_Y, R_A_BTN_Y + 45, rABtnX, rABtnX + 45);
+ s16 X_Margins_BtnA;
+ s16 Y_Margins_BtnA;
+ if (CVar_GetS32("gABtnUseMargins", 0) != 0) {
+ X_Margins_BtnA = Right_HUD_Margin;
+ Y_Margins_BtnA = (Top_HUD_Margin*-1);
+ } else {
+ X_Margins_BtnA = 0;
+ Y_Margins_BtnA = 0;
+ }
+ s16 PosX_BtnA_ori = OTRGetDimensionFromRightEdge(R_A_BTN_X+X_Margins_BtnA);
+ s16 PosY_BtnA_ori = R_A_BTN_Y+Y_Margins_BtnA;
+ const f32 rAIconX_ori = OTRGetDimensionFromRightEdge(R_A_ICON_X+X_Margins_BtnA);
+ const f32 rAIconY_ori = 98.0f - (R_A_ICON_Y+Y_Margins_BtnA);
+ s16 PosX_BtnA;
+ s16 PosY_BtnA;
+ s16 rAIconX;
+ s16 rAIconY;
+ if (CVar_GetS32("gABtnPosType", 0) != 0) {
+ PosY_BtnA = CVar_GetS32("gABtnPosY", 0)+Y_Margins_BtnA;
+ rAIconY = 98.0f - PosY_BtnA;
+ if (CVar_GetS32("gABtnPosType", 0) == 1) {//Anchor Left
+ PosX_BtnA = OTRGetDimensionFromLeftEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
+ rAIconX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
+ } else if (CVar_GetS32("gABtnPosType", 0) == 2) {//Anchor Right
+ X_Margins_BtnA = Right_HUD_Margin;
+ PosX_BtnA = OTRGetDimensionFromRightEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
+ rAIconX= OTRGetDimensionFromRightEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
+ } else if (CVar_GetS32("gABtnPosType", 0) == 3) {//Anchor None
+ PosX_BtnA = CVar_GetS32("gABtnPosX", 0);
+ rAIconX = CVar_GetS32("gABtnPosX", 0);
+ } else if (CVar_GetS32("gABtnPosType", 0) == 4) {//Hidden
+ PosX_BtnA = -9999;
+ rAIconX = -9999;
+ }
+ } else {
+ PosY_BtnA = PosY_BtnA_ori;
+ PosX_BtnA = PosX_BtnA_ori;
+ rAIconY = rAIconY_ori;
+ rAIconX = rAIconX_ori;
+ }
gSPClearGeometryMode(OVERLAY_DISP++, G_CULL_BOTH);
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
if (CVar_GetS32("gHudColors", 1) == 0) {
@@ -3786,17 +4675,15 @@ void Interface_Draw(GlobalContext* globalCtx) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetS32("gCCABtnPrimR", R_A_BTN_COLOR(0)), CVar_GetS32("gCCABtnPrimG", R_A_BTN_COLOR(1)), CVar_GetS32("gCCABtnPrimB", R_A_BTN_COLOR(2)), interfaceCtx->aAlpha);
}
if (fullUi) {
- Interface_DrawActionButton(globalCtx, rABtnX, R_A_BTN_Y+(Top_HUD_Margin*-1));
+ Interface_DrawActionButton(globalCtx, PosX_BtnA, PosY_BtnA);
}
gDPPipeSync(OVERLAY_DISP++);
- const f32 rAIconX = OTRGetDimensionFromRightEdge(R_A_ICON_X+Right_HUD_Margin);
- //func_8008A8B8(globalCtx, R_A_ICON_Y, R_A_ICON_Y + 45, rAIconX, rAIconX + 45);
gSPSetGeometryMode(OVERLAY_DISP++, G_CULL_BACK);
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0,
PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->aAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
- Matrix_Translate(-138.0f + rAIconX, 98.0f - (R_A_ICON_Y+(Top_HUD_Margin*-1)), WREG(46 + gSaveContext.language) / 10.0f, MTXMODE_NEW);
+ Matrix_Translate(-138.0f + rAIconX, rAIconY, WREG(46 + gSaveContext.language) / 10.0f, MTXMODE_NEW);
Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY);
Matrix_RotateX(interfaceCtx->unk_1F4 / 10000.0f, MTXMODE_APPLY);
gSPMatrix(OVERLAY_DISP++, MATRIX_NEWMTX(globalCtx->state.gfxCtx),
@@ -3875,7 +4762,24 @@ void Interface_Draw(GlobalContext* globalCtx) {
G_TX_NOLOD, G_TX_NOLOD);
// Draw 6 carrots
- for (svar1 = 1, svar5 = ZREG(14); svar1 < 7; svar1++, svar5 += 16) {
+ s16 CarrotsPosX = ZREG(14);
+ s16 CarrotsPosY = ZREG(15);
+ s16 CarrotsMargins_X = 0;
+ if (CVar_GetS32("gCarrotsPosType", 0) != 0) {
+ CarrotsPosY = CVar_GetS32("gCarrotsPosY", 0);
+ if (CVar_GetS32("gCarrotsPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gCarrotsUseMargins", 0) != 0) {CarrotsMargins_X = Left_HUD_Margin;};
+ CarrotsPosX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gCarrotsPosX", 0)+CarrotsMargins_X);
+ } else if (CVar_GetS32("gCarrotsPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gCarrotsUseMargins", 0) != 0) {CarrotsMargins_X = Right_HUD_Margin;};
+ CarrotsPosX = OTRGetDimensionFromRightEdge(CVar_GetS32("gCarrotsPosX", 0)+CarrotsMargins_X);
+ } else if (CVar_GetS32("gCarrotsPosType", 0) == 3) {//Anchor None
+ CarrotsPosX = CVar_GetS32("gCarrotsPosX", 0);
+ } else if (CVar_GetS32("gCarrotsPosType", 0) == 4) {//Hidden
+ CarrotsPosX = -9999;
+ }
+ }
+ for (svar1 = 1, svar5 = CarrotsPosX; svar1 < 7; svar1++, svar5 += 16) {
// Carrot Color (based on availability)
if ((interfaceCtx->numHorseBoosts == 0) || (interfaceCtx->numHorseBoosts < svar1)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 150, 255, interfaceCtx->aAlpha);
@@ -3883,13 +4787,36 @@ void Interface_Draw(GlobalContext* globalCtx) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->aAlpha);
}
- gSPTextureRectangle(OVERLAY_DISP++, svar5 << 2, ZREG(15) << 2, (svar5 + 16) << 2,
- (ZREG(15) + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
+ gSPWideTextureRectangle(OVERLAY_DISP++, svar5 << 2, CarrotsPosY << 2, (svar5 + 16) << 2,
+ (CarrotsPosY + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
}
}
} else {
// Score for the Horseback Archery
- svar5 = OTRGetRectDimensionFromRightEdge(WREG(32));
+ s32 X_Margins_Archery;
+ if (CVar_GetS32("gASUseMargins", 0) != 0) {
+ if (CVar_GetS32("gASPosType", 0) == 0) {X_Margins_Archery = Right_HUD_Margin;};
+ } else {
+ X_Margins_Archery = 0;
+ }
+ s16 ArcheryPos_Y = ZREG(15);
+ s16 ArcheryPos_X = OTRGetRectDimensionFromRightEdge(WREG(32)+X_Margins_Archery);
+
+ if (CVar_GetS32("gASPosType", 0) != 0) {
+ ArcheryPos_Y = CVar_GetS32("gASPosY", 0);
+ if (CVar_GetS32("gASPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gASUseMargins", 0) != 0) {X_Margins_Archery = Left_HUD_Margin;};
+ ArcheryPos_X = OTRGetRectDimensionFromLeftEdge(CVar_GetS32("gASPosX", 0)+X_Margins_Archery);
+ } else if (CVar_GetS32("gASPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gASUseMargins", 0) != 0) {X_Margins_Archery = Right_HUD_Margin;};
+ ArcheryPos_X = OTRGetRectDimensionFromRightEdge(CVar_GetS32("gASPosX", 0)+X_Margins_Archery);
+ } else if (CVar_GetS32("gASPosType", 0) == 3) {//Anchor None
+ ArcheryPos_X = CVar_GetS32("gASPosX", 0)+204+X_Margins_Archery;
+ } else if (CVar_GetS32("gASPosType", 0) == 4) {//Hidden
+ ArcheryPos_X = -9999;
+ }
+ }
+
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha);
// Target Icon
@@ -3897,22 +4824,22 @@ void Interface_Draw(GlobalContext* globalCtx) {
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++, (svar5 + 28) << 2, ZREG(15) << 2, (svar5 + 52) << 2,
- (ZREG(15) + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
+ gSPWideTextureRectangle(OVERLAY_DISP++, (ArcheryPos_X + 28) << 2, ArcheryPos_Y << 2, (ArcheryPos_X + 52) << 2,
+ (ArcheryPos_Y + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
// Score Counter
gDPPipeSync(OVERLAY_DISP++);
gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE,
TEXEL0, 0, PRIMITIVE, 0);
- svar5 = OTRGetRectDimensionFromRightEdge(WREG(32)) + 6 * 9;
+ ArcheryPos_X = ArcheryPos_X + 6 * 9;
for (svar1 = svar2 = 0; svar1 < 4; svar1++) {
if (sHBAScoreDigits[svar1] != 0 || (svar2 != 0) || (svar1 >= 3)) {
OVERLAY_DISP = Gfx_TextureI8(
- OVERLAY_DISP, digitTextures[sHBAScoreDigits[svar1]], 8, 16, svar5,
- (ZREG(15) - 2), digitWidth[0], VREG(42), VREG(43) << 1, VREG(43) << 1);
- svar5 += 9;
+ OVERLAY_DISP, digitTextures[sHBAScoreDigits[svar1]], 8, 16, ArcheryPos_X,
+ (ArcheryPos_Y - 2), digitWidth[0], VREG(42), VREG(43) << 1, VREG(43) << 1);
+ ArcheryPos_X += 9;
svar2++;
}
}
@@ -4303,8 +5230,29 @@ void Interface_Draw(GlobalContext* globalCtx) {
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
- svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[svar6]);
+ s32 X_Margins_Timer;
+ if (CVar_GetS32("gTimersUseMargins", 0) != 0) {
+ if (CVar_GetS32("gTimersPosType", 0) == 0) {X_Margins_Timer = Left_HUD_Margin;};
+ } else {
+ X_Margins_Timer = 0;
+ }
+ svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[svar6]+X_Margins_Timer);
svar2 = gSaveContext.timerY[svar6];
+ if (CVar_GetS32("gTimersPosType", 0) != 0) {
+ svar2 = (CVar_GetS32("gTimersPosY", 0));
+ if (CVar_GetS32("gTimersPosType", 0) == 1) {//Anchor Left
+ if (CVar_GetS32("gTimersUseMargins", 0) != 0) {X_Margins_Timer = Left_HUD_Margin;};
+ svar5 = OTRGetRectDimensionFromLeftEdge(CVar_GetS32("gTimersPosX", 0)+X_Margins_Timer);
+ } else if (CVar_GetS32("gTimersPosType", 0) == 2) {//Anchor Right
+ if (CVar_GetS32("gTimersUseMargins", 0) != 0) {X_Margins_Timer = Right_HUD_Margin;};
+ svar5 = OTRGetRectDimensionFromRightEdge(CVar_GetS32("gTimersPosX", 0)+X_Margins_Timer);
+ } else if (CVar_GetS32("gTimersPosType", 0) == 3) {//Anchor None
+ svar5 = CVar_GetS32("gTimersPosX", 0)+204+X_Margins_Timer;
+ } else if (CVar_GetS32("gTimersPosType", 0) == 4) {//Hidden
+ svar5 = -9999;
+ }
+ }
+
OVERLAY_DISP =
Gfx_TextureIA8(OVERLAY_DISP, gClockIconTex, 16, 16, svar5, svar2 + 2, 16, 16, 1 << 10, 1 << 10);
@@ -4329,10 +5277,11 @@ void Interface_Draw(GlobalContext* globalCtx) {
for (svar1 = 0; svar1 < 5; svar1++) {
// clang-format off
- svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[svar6]);
+ //svar5 = svar5 + 8;
+ //svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[svar6]);
OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, digitTextures[timerDigits[svar1]], 8, 16,
svar5 + timerDigitLeftPos[svar1],
- svar2 = gSaveContext.timerY[svar6], digitWidth[svar1], VREG(42), VREG(43) << 1,
+ svar2, digitWidth[svar1], VREG(42), VREG(43) << 1,
VREG(43) << 1);
// clang-format on
}
@@ -4365,17 +5314,10 @@ void Interface_Update(GlobalContext* globalCtx) {
u16 action;
Input* debugInput = &globalCtx->state.input[2];
- if (CVar_GetS32("gHUDMargins", 0) != 0) {
- Top_HUD_Margin = CVar_GetS32("gHUDMargin_T", 0);
- Left_HUD_Margin = CVar_GetS32("gHUDMargin_L", 0);
- Right_HUD_Margin = CVar_GetS32("gHUDMargin_R", 0);
- Bottom_HUD_Margin = CVar_GetS32("gHUDMargin_B", 0);
- } else {
- Top_HUD_Margin = 0;
- Left_HUD_Margin = 0;
- Right_HUD_Margin = 0;
- Bottom_HUD_Margin = 0;
- }
+ Top_HUD_Margin = CVar_GetS32("gHUDMargin_T", 0);
+ Left_HUD_Margin = CVar_GetS32("gHUDMargin_L", 0);
+ Right_HUD_Margin = CVar_GetS32("gHUDMargin_R", 0);
+ Bottom_HUD_Margin = CVar_GetS32("gHUDMargin_B", 0);
if (CHECK_BTN_ALL(debugInput->press.button, BTN_DLEFT)) {
gSaveContext.language = LANGUAGE_ENG;