summaryrefslogtreecommitdiff
path: root/src/engine
diff options
context:
space:
mode:
authorSonic Dreamcaster <alejandro.asenjo88@gmail.com>2026-03-11 13:31:17 -0300
committerSonic Dreamcaster <alejandro.asenjo88@gmail.com>2026-03-11 13:31:17 -0300
commit00cde39873277cb34d4eef96c4c5e928d2e7748d (patch)
tree373027ae43a8d2195033ed3a1b96a95a14ceae6f /src/engine
parentfaf5c506fff7dedcdb0cb760e4862bb2bc660f44 (diff)
Selectable Radio Comm Box position
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/fox_hud.c91
-rw-r--r--src/engine/fox_radio.c111
2 files changed, 136 insertions, 66 deletions
diff --git a/src/engine/fox_hud.c b/src/engine/fox_hud.c
index bbf8de24..363f7555 100644
--- a/src/engine/fox_hud.c
+++ b/src/engine/fox_hud.c
@@ -210,22 +210,35 @@ void HUD_TeamDownWrench_Draw(s32 arg0) {
}
}
} else {
- f32 x = 48.0f;
- f32 y = 0.0f;
- HUD_MatrixTranslateCoordLeft(&x, &y);
- y = -81.0f;
- Lib_InitOrtho(&gMasterDisp);
- Matrix_Push(&gGfxMatrix);
- Matrix_Translate(gGfxMatrix, x, y, -600.0f, MTXF_APPLY);
- Matrix_RotateZ(gGfxMatrix, M_PI / 4, MTXF_APPLY);
- Matrix_Scale(gGfxMatrix, 0.31f, 0.31f, 1.0f, MTXF_APPLY);
- Matrix_SetGfxMtx(&gMasterDisp);
- gSPDisplayList(gMasterDisp++, aDownWrenchDL);
- Matrix_RotateZ(gGfxMatrix, 3 * M_PI / 2, MTXF_APPLY);
- Matrix_SetGfxMtx(&gMasterDisp);
- gSPDisplayList(gMasterDisp++, aDownWrenchDL);
- Matrix_Pop(&gGfxMatrix);
- Lib_InitPerspective(&gMasterDisp);
+ if (CVarGetInteger("gRadioCommBox.expand", 0) == 1) {
+ f32 x = 48.0f;
+ f32 y = 0.0f;
+ HUD_MatrixTranslateCoordLeft(&x, &y);
+ y = -81.0f;
+ Lib_InitOrtho(&gMasterDisp);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, x, y, -600.0f, MTXF_APPLY);
+ Matrix_RotateZ(gGfxMatrix, M_PI / 4, MTXF_APPLY);
+ Matrix_Scale(gGfxMatrix, 0.31f, 0.31f, 1.0f, MTXF_APPLY);
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, aDownWrenchDL);
+ Matrix_RotateZ(gGfxMatrix, 3 * M_PI / 2, MTXF_APPLY);
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, aDownWrenchDL);
+ Matrix_Pop(&gGfxMatrix);
+ Lib_InitPerspective(&gMasterDisp);
+ } else {
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, -234.0f, -167.0f, -600.0f, MTXF_APPLY);
+ Matrix_RotateZ(gGfxMatrix, M_PI / 4, MTXF_APPLY);
+ Matrix_Scale(gGfxMatrix, 0.68f, 0.68f, 1.0f, MTXF_APPLY);
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, aDownWrenchDL);
+ Matrix_RotateZ(gGfxMatrix, 3 * M_PI / 2, MTXF_APPLY);
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, aDownWrenchDL);
+ Matrix_Pop(&gGfxMatrix);
+ }
}
}
@@ -2262,7 +2275,12 @@ void HUD_RadioCharacterName_Draw(void) {
RCP_SetupDL(&gMasterDisp, SETUPDL_76_OPTIONAL);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
- f32 xPos = OTRGetRectDimensionFromLeftEdgeOverride(73.0f);
+ f32 xPos;
+ if (CVarGetInteger("gRadioCommBox.expand", 0) == 1) {
+ xPos = OTRGetRectDimensionFromLeftEdgeOverride(73.0f);
+ } else {
+ xPos = 73.0f;
+ }
switch ((s32) gRadioMsgRadioId) {
case RCID_FOX:
@@ -2635,20 +2653,31 @@ void HUD_RadioDamage_Draw(void) {
}
if ((D_80161788 != 0) || (D_8016178C != 0)) {
- RCP_SetupDL(&gMasterDisp, SETUPDL_12);
- gDPSetPrimColor(gMasterDisp++, 0, 0, r, g, b, alpha);
- f32 x = 48.0f;
- f32 y = 0.0f;
- HUD_MatrixTranslateCoordLeft(&x, &y);
- y = -81.0f;
- Lib_InitOrtho(&gMasterDisp);
- Matrix_Push(&gGfxMatrix);
- Matrix_Translate(gGfxMatrix, x, y, -139.4f, MTXF_APPLY);
- Matrix_Scale(gGfxMatrix, 2.25f, 2.25f, 2.25f, MTXF_APPLY);
- Matrix_SetGfxMtx(&gMasterDisp);
- gSPDisplayList(gMasterDisp++, sRadioDamageDL);
- Matrix_Pop(&gGfxMatrix);
- Lib_InitPerspective(&gMasterDisp);
+ if (CVarGetInteger("gRadioCommBox.expand", 0) == 1) {
+ RCP_SetupDL(&gMasterDisp, SETUPDL_12);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, r, g, b, alpha);
+ f32 x = 48.0f;
+ f32 y = 0.0f;
+ HUD_MatrixTranslateCoordLeft(&x, &y);
+ y = -81.0f;
+ Lib_InitOrtho(&gMasterDisp);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, x, y, -139.4f, MTXF_APPLY);
+ Matrix_Scale(gGfxMatrix, 2.25f, 2.25f, 2.25f, MTXF_APPLY);
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, sRadioDamageDL);
+ Matrix_Pop(&gGfxMatrix);
+ Lib_InitPerspective(&gMasterDisp);
+ } else {
+ RCP_SetupDL(&gMasterDisp, SETUPDL_12);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, r, g, b, alpha);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, -53.9f, -38.5f, -139.4f, MTXF_APPLY);
+ Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 1.0f, MTXF_APPLY);
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, sRadioDamageDL);
+ Matrix_Pop(&gGfxMatrix);
+ }
}
}
diff --git a/src/engine/fox_radio.c b/src/engine/fox_radio.c
index 365b98b3..e60f80c1 100644
--- a/src/engine/fox_radio.c
+++ b/src/engine/fox_radio.c
@@ -130,36 +130,61 @@ void Radio_PlayMessage(u16* msg, RadioCharacterId character) {
}
void Radio_CalculatePositions() {
- switch (gGameState) {
- case GSTATE_TITLE:
- gRadioPrintPosY = 176;
- gRadioPrintPosX = OTRGetRectDimensionFromLeftEdgeOverride(85.0f);
- gRadioTextBoxPosX = OTRGetRectDimensionFromLeftEdgeOverride(80.0f);
- gRadioTextBoxPosY = 174.0f;
- gRadioTextBoxScaleX = 4.63f;
- gRadioPortraitPosX = OTRGetRectDimensionFromLeftEdgeOverride(32.0f);
- gRadioPortraitPosY = 174.0f;
- break;
-
- case GSTATE_ENDING:
- gRadioPrintPosY = 176;
- gRadioPrintPosX = 85.0f;
- gRadioTextBoxPosX = 80.0f;
- gRadioTextBoxPosY = 174.0f;
- gRadioTextBoxScaleX = 4.63f;
- gRadioPortraitPosX = 32.0f;
- gRadioPortraitPosY = 174.0f;
- break;
-
- case GSTATE_PLAY:
- gRadioPrintPosY = 180;
- gRadioPrintPosX = OTRGetRectDimensionFromLeftEdgeOverride(79.0f);
- gRadioTextBoxPosX = OTRGetRectDimensionFromLeftEdgeOverride(74.0f);
- gRadioTextBoxPosY = 178.0f;
- gRadioTextBoxScaleX = 4.53f;
- gRadioPortraitPosX = OTRGetRectDimensionFromLeftEdgeOverride(26.0f);
- gRadioPortraitPosY = 178.0f;
- break;
+ if (CVarGetInteger("gRadioCommBox.expand", 0) == 1) {
+ switch (gGameState) {
+ case GSTATE_TITLE:
+ gRadioPrintPosY = 176;
+ gRadioPrintPosX = OTRGetRectDimensionFromLeftEdgeOverride(85.0f);
+ gRadioTextBoxPosX = OTRGetRectDimensionFromLeftEdgeOverride(80.0f);
+ gRadioTextBoxPosY = 174.0f;
+ gRadioTextBoxScaleX = 4.63f;
+ gRadioPortraitPosX = OTRGetRectDimensionFromLeftEdgeOverride(32.0f);
+ gRadioPortraitPosY = 174.0f;
+ break;
+
+ case GSTATE_ENDING:
+ gRadioPrintPosY = 176;
+ gRadioPrintPosX = 85.0f;
+ gRadioTextBoxPosX = 80.0f;
+ gRadioTextBoxPosY = 174.0f;
+ gRadioTextBoxScaleX = 4.63f;
+ gRadioPortraitPosX = 32.0f;
+ gRadioPortraitPosY = 174.0f;
+ break;
+
+ case GSTATE_PLAY:
+ gRadioPrintPosY = 180;
+ gRadioPrintPosX = OTRGetRectDimensionFromLeftEdgeOverride(79.0f);
+ gRadioTextBoxPosX = OTRGetRectDimensionFromLeftEdgeOverride(74.0f);
+ gRadioTextBoxPosY = 178.0f;
+ gRadioTextBoxScaleX = 4.53f;
+ gRadioPortraitPosX = OTRGetRectDimensionFromLeftEdgeOverride(26.0f);
+ gRadioPortraitPosY = 178.0f;
+ break;
+ }
+ } else {
+ switch (gGameState) {
+ case GSTATE_TITLE:
+ case GSTATE_ENDING:
+ gRadioPrintPosY = 176;
+ gRadioPrintPosX = 85;
+ gRadioTextBoxPosX = 80.0f;
+ gRadioTextBoxPosY = 174.0f;
+ gRadioTextBoxScaleX = 4.63f;
+ gRadioPortraitPosX = 32.0f;
+ gRadioPortraitPosY = 174.0f;
+ break;
+
+ case GSTATE_PLAY:
+ gRadioPrintPosY = 180;
+ gRadioPrintPosX = 79;
+ gRadioTextBoxPosX = 74.0f;
+ gRadioTextBoxPosY = 178.0f;
+ gRadioTextBoxScaleX = 4.53f;
+ gRadioPortraitPosX = 26.0f;
+ gRadioPortraitPosY = 178.0f;
+ break;
+ }
}
}
@@ -718,12 +743,20 @@ void Radio_Draw(void) {
(gCurrentRadioPortrait != RCID_1000)) {
RCP_SetupDL(&gMasterDisp, SETUPDL_76_OPTIONAL);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
- Graphics_DisplaySmallText(OTRGetRectDimensionFromLeftEdgeOverride(31.0f), 167, 1.0f, 1.0f, "DOWN");
+ if (CVarGetInteger("gRadioCommBox.expand", 0) == 1) {
+ Graphics_DisplaySmallText(OTRGetRectDimensionFromLeftEdgeOverride(31.0f), 167, 1.0f, 1.0f, "DOWN");
+ } else {
+ Graphics_DisplaySmallText(31, 167, 1.0f, 1.0f, "DOWN");
+ }
HUD_TeamDownWrench_Draw(1);
}
if (((gCurrentRadioPortrait != RCID_STATIC) && (gCurrentRadioPortrait != RCID_STATIC + 1)) &&
(gCurrentRadioPortrait != RCID_1000)) {
- HUD_TeamShields_Draw(OTRGetRectDimensionFromLeftEdgeOverride(22.0f), 165.0f, gTeamShields[idx]);
+ if (CVarGetInteger("gRadioCommBox.expand", 0) == 1) {
+ HUD_TeamShields_Draw(OTRGetRectDimensionFromLeftEdgeOverride(22.0f), 165.0f, gTeamShields[idx]);
+ } else {
+ HUD_TeamShields_Draw(22.0f, 165.0f, gTeamShields[idx]);
+ }
}
}
@@ -767,12 +800,20 @@ void Radio_Draw(void) {
(gCurrentRadioPortrait != RCID_STATIC + 1) && (gCurrentRadioPortrait != RCID_1000)) {
RCP_SetupDL(&gMasterDisp, SETUPDL_76_OPTIONAL);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
- Graphics_DisplaySmallText(OTRGetRectDimensionFromLeftEdgeOverride(31.0f), 167, 1.0f, 1.0f, "DOWN");
+ if (CVarGetInteger("gRadioCommBox.expand", 0) == 1) {
+ Graphics_DisplaySmallText(OTRGetRectDimensionFromLeftEdgeOverride(31.0f), 167, 1.0f, 1.0f, "DOWN");
+ } else {
+ Graphics_DisplaySmallText(31.0f, 167, 1.0f, 1.0f, "DOWN");
+ }
}
if (((gCurrentRadioPortrait != RCID_STATIC) && (gCurrentRadioPortrait != RCID_STATIC + 1)) &&
(gCurrentRadioPortrait != RCID_1000)) {
- HUD_TeamShields_Draw(OTRGetRectDimensionFromLeftEdgeOverride(22.0f), 165.0f,
- gActors[idx].health * 2.55f);
+ if (CVarGetInteger("gRadioCommBox.expand", 0) == 1) {
+ HUD_TeamShields_Draw(OTRGetRectDimensionFromLeftEdgeOverride(22.0f), 165.0f,
+ gActors[idx].health * 2.55f);
+ } else {
+ HUD_TeamShields_Draw(22.0f, 165.0f, gActors[idx].health * 2.55f);
+ }
}
}
if (((gCurrentRadioPortrait != RCID_STATIC) && (gCurrentRadioPortrait != RCID_STATIC + 1)) &&