Merge remote-tracking branch 'origin' into independence

This commit is contained in:
Sonic Dreamcaster 2024-12-07 02:45:57 -03:00
commit 9e1da7c485
11 changed files with 194 additions and 105 deletions

View File

@ -1,5 +1,14 @@
# Supported Star Fox 64 Versions: US, JP
09f0d105f476b00efa5303a3ebc42e60a7753b7a:
name: Star Fox 64 (U) (V1.1) (Compressed)
preprocess:
decompress_mio0:
method: mio0-comptool
type: decompress
target: f7475fb11e7e6830f82883412638e8390791ab87
restart: true
f7475fb11e7e6830f82883412638e8390791ab87:
name: Star Fox 64 (U) (V1.1)
path: assets/yaml/us/rev1

View File

@ -96,8 +96,8 @@ void RamMod_Update(void);
void Spawner(void);
#endif
#define DEBUG_SKIP_BRIEFING 1
#define DEBUG_BOSS_KILLER 0
#define DEBUG_VERSUS 0
/*

View File

@ -1237,7 +1237,7 @@ void PlayerShot_DrawShot(PlayerShot* shot) {
Matrix_MultVec3f(gGfxMatrix, &sp11C, &sShotViewPos);
if ((sShotViewPos.z < 0.0f) && (sShotViewPos.z > -10000.0f)) {
var_fv1 = fabsf(sShotViewPos.x); // probably fake. The use of temps was likely different
if (var_fv1 < (fabsf(sShotViewPos.z * 0.5f) + 500.0f)) {
if (var_fv1 < (fabsf(sShotViewPos.z * /* 0.5f */ 1.5f) + 500.0f)) {
if (fabsf(sShotViewPos.y) < (fabsf(sShotViewPos.z * 0.5f) + 500.0f)) {
isDrawn = true;
}

View File

@ -35,7 +35,7 @@ void KillBoss(void);
#endif
void Display_DrawHelpAlert(void) {
bool sp7C;
bool centered; // Enemy pos is centered, so both help arrows should be displayed
f32 sp78;
f32 sp74;
Vec3f sp68;
@ -44,11 +44,13 @@ void Display_DrawHelpAlert(void) {
if ((gPlayState == PLAY_PAUSE) || (gTeamHelpActor == NULL)) {
return;
}
if ((gTeamHelpActor->obj.status != OBJ_ACTIVE) || (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_ACTIVE)) {
gTeamHelpActor = NULL;
gTeamHelpTimer = 0;
return;
}
if (gTeamHelpTimer != 0) {
gTeamHelpTimer--;
if (gTeamHelpTimer == 0) {
@ -67,9 +69,9 @@ void Display_DrawHelpAlert(void) {
Matrix_MultVec3f(gCalcMatrix, &sp68, &sp5C);
sp7C = false;
centered = false;
if ((sp5C.z < 0.0f) && (sp5C.z > -12000.0f) && (fabsf(sp5C.x) < fabsf(sp5C.z * 0.4f))) {
sp7C = true;
centered = true;
}
RCP_SetupDL(&gMasterDisp, SETUPDL_12);
@ -86,19 +88,19 @@ void Display_DrawHelpAlert(void) {
break;
}
switch (sp7C) {
switch (centered) {
case false:
if (gTeamHelpActor->sfxSource[0] > 0.0f) {
sp78 = 20.0f;
sp78 = 20.0f * OTRGetAspectRatio()-8;
sp74 = M_PI / 2;
} else {
sp78 = -20.0f;
sp78 = -20.0f * OTRGetAspectRatio()+8;
sp74 = -M_PI / 2;
}
Matrix_Push(&gGfxMatrix);
// @port: Tag the transform.
FrameInterpolation_RecordOpenChild("Display_DrawHelpAlert", sp7C);
FrameInterpolation_RecordOpenChild("Display_DrawHelpAlert", centered);
Matrix_Translate(gGfxMatrix, sp78, 0.0f, -50.0f, MTXF_APPLY);
Matrix_RotateZ(gGfxMatrix, sp74, MTXF_APPLY);
@ -112,20 +114,22 @@ void Display_DrawHelpAlert(void) {
break;
case true:
// right arrow (both at the same time)
Matrix_Push(&gGfxMatrix);
// @port: Tag the transform.
FrameInterpolation_RecordOpenChild("Display_DrawHelpAlert", sp7C);
Matrix_Translate(gGfxMatrix, 20.0f, 0.0f, -50.0f, MTXF_APPLY);
FrameInterpolation_RecordOpenChild("Display_DrawHelpAlert", centered);
Matrix_Translate(gGfxMatrix, 20.0f * OTRGetAspectRatio() - 8, 0.0f, -50.0f, MTXF_APPLY);
Matrix_RotateZ(gGfxMatrix, -M_PI / 2, MTXF_APPLY);
Matrix_Scale(gGfxMatrix, 0.03f, 0.03f, 0.03f, MTXF_APPLY);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1023700);
Matrix_Pop(&gGfxMatrix);
sp78 = -20.0f;
// left arrow (both in simultaneous)
Matrix_Push(&gGfxMatrix);
Matrix_Translate(gGfxMatrix, -20.0f, 0.0f, -50.0f, MTXF_APPLY);
Matrix_Translate(gGfxMatrix, -20.0f * OTRGetAspectRatio() + 8, 0.0f, -50.0f, MTXF_APPLY);
Matrix_RotateZ(gGfxMatrix, M_PI / 2, MTXF_APPLY);
Matrix_Scale(gGfxMatrix, 0.03f, 0.03f, 0.03f, MTXF_APPLY);
Matrix_SetGfxMtx(&gMasterDisp);
@ -136,23 +140,23 @@ void Display_DrawHelpAlert(void) {
FrameInterpolation_RecordCloseChild();
break;
}
switch (sp7C) {
switch (centered) {
case false:
RCP_SetupDL(&gMasterDisp, SETUPDL_76_POINT);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
if (sp78 < 0.0f) {
Graphics_DisplaySmallText(43 - 19, 106, 1.0f, 1.0f, "HELP!!");
Graphics_DisplaySmallText(OTRGetRectDimensionFromLeftEdge(38.0f), 106, 1.0f, 1.0f, "HELP!!");
} else {
Graphics_DisplaySmallText(SCREEN_WIDTH - 43 - 19, 106, 1.0f, 1.0f, "HELP!!");
Graphics_DisplaySmallText(OTRGetRectDimensionFromRightEdge(248), 106, 1.0f, 1.0f, "HELP!!");
}
break;
case true:
RCP_SetupDL(&gMasterDisp, SETUPDL_76_POINT);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
Graphics_DisplaySmallText(43 - 19, 106, 1.0f, 1.0f, "HELP!!");
Graphics_DisplaySmallText(SCREEN_WIDTH - 43 - 19, 106, 1.0f, 1.0f, "HELP!!");
Graphics_DisplaySmallText(OTRGetRectDimensionFromLeftEdge(38.0f) , 106, 1.0f, 1.0f, "HELP!!");
Graphics_DisplaySmallText(OTRGetRectDimensionFromRightEdge(248), 106, 1.0f, 1.0f, "HELP!!");
break;
}
}
@ -1361,7 +1365,7 @@ bool Display_CheckPlayerVisible(s32 index, s32 reflectY) {
Matrix_MultVec3f(gGfxMatrix, &src, &dest);
if ((dest.z < 200.0f) && (dest.z > -12000.0f)) {
if (fabsf(dest.x) < (fabsf(dest.z * 0.5f) + 500.0f)) {
if (fabsf(dest.x) < (fabsf(dest.z * /*0.5f*/ 1.5f) + 500.0f)) {
if (fabsf(dest.y) < (fabsf(dest.z * 0.5f) + 500.0f)) {
if (reflectY == 0) {
sPlayersVisible[index] = true;
@ -2133,11 +2137,11 @@ void Display_Update(void) {
#if 0
RCP_SetupDL(&gMasterDisp, SETUPDL_83);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
Graphics_DisplaySmallText(10, 210, 1.0f, 1.0f, "PATH1:");
Graphics_DisplaySmallNumber(60, 210, (int) ABS(path1));
Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "PATH2:");
Graphics_DisplaySmallNumber(60, 220, (int) ABS(path2));
if (path1 < 0.0f) Graphics_DisplaySmallText(110, 210, 1.0f, 1.0f, "NEG:");
if (path2 < 0.0f) Graphics_DisplaySmallText(110, 220, 1.0f, 1.0f, "NEG:");
Graphics_DisplaySmallText(10, 210, 1.0f, 1.0f, "STICK_X:");
Graphics_DisplaySmallNumber(60, 210, (int) ABS(gInputPress->stick_x));
Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "STICK_Y:");
Graphics_DisplaySmallNumber(60, 220, (int) ABS(gInputPress->stick_y));
if (gInputPress->stick_x < 0) Graphics_DisplaySmallText(110, 210, 1.0f, 1.0f, "NEG:");
if (gInputPress->stick_y < 0) Graphics_DisplaySmallText(110, 220, 1.0f, 1.0f, "NEG:");
#endif
}

View File

@ -117,10 +117,15 @@ Gfx sRadioDamageDL[] = {
gsSPEndDisplayList(),
};
void HUD_MatrixTranslateCoordLeft(f32* transX, f32* transY) {
*transX = OTRGetRectDimensionFromLeftEdge(*transX) - (SCREEN_WIDTH / 2.0f);
*transY = (SCREEN_HEIGHT / 2.0f) - *transY;
}
// Used in the status screen, and when losing a life
void HUD_LivesCount1_Draw(f32 xPos, f32 yPos, s32 lifeCount) {
u8* sLifeIconTex[] = { aArwingLifeIconTex, aBlueMarineLifeIconTex, aLandmasterLifeIconTex };
u16* sLifeIconTLUT[] = { aArwingLifeIconTLUT, aBlueMarineLifeIconTLUT, aLandmasterLifeIconTLUT };
u8* sLifeIconTex[] = { aArwingLifeIconTex, aLandmasterLifeIconTex, aBlueMarineLifeIconTex };
u16* sLifeIconTLUT[] = { aArwingLifeIconTLUT, aLandmasterLifeIconTLUT, aBlueMarineLifeIconTLUT };
Player* player;
s32 lifeIconIdx;
s32 maxLives;
@ -203,16 +208,22 @@ 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, -234.0f, -167.0f, -600.0f, MTXF_APPLY);
Matrix_Translate(gGfxMatrix, x, y, -600.0f, MTXF_APPLY);
Matrix_RotateZ(gGfxMatrix, M_PI / 4, MTXF_APPLY);
Matrix_Scale(gGfxMatrix, 0.68f, 0.68f, 1.0f, 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);
}
}
@ -304,11 +315,6 @@ void HUD_BoostGaugeCool_Draw(f32 xPos, f32 yPos, f32 xScale, f32 yScale) {
}
}
void HUD_MatrixTranslateCoord(f32* transX, f32* transY) {
*transX = OTRGetRectDimensionFromLeftEdge(*transX) - (SCREEN_WIDTH / 2.0f);
*transY = (SCREEN_HEIGHT / 2.0f) - *transY;
}
void HUD_GoldRings_Draw(void) {
Gfx* sGoldRingDLs[] = {
aGoldRingFrame1DL, aGoldRingFrame2DL, aGoldRingFrame3DL, aGoldRingFrame4DL,
@ -381,7 +387,7 @@ void HUD_GoldRings_Draw(void) {
scale += 0.06f;
}
HUD_MatrixTranslateCoord(&x, &y);
HUD_MatrixTranslateCoordLeft(&x, &y);
Matrix_Translate(gGfxMatrix, x, y, -100.0f, MTXF_NEW);
Matrix_Scale(gGfxMatrix, scale, scale, scale, MTXF_APPLY);
Matrix_Scale(gGfxMatrix, ringScale, ringScale, ringScale, MTXF_APPLY);
@ -403,7 +409,7 @@ void HUD_GoldRings_Draw(void) {
RCP_SetupDL(&gMasterDisp, SETUPDL_62);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
HUD_MatrixTranslateCoord(&D_800D1AC4[i + 1], &D_800D1AD8[i + 1]);
HUD_MatrixTranslateCoordLeft(&D_800D1AC4[i + 1], &D_800D1AD8[i + 1]);
Matrix_Push(&gGfxMatrix);
Matrix_Translate(gGfxMatrix, D_800D1AC4[i + 1], D_800D1AD8[i + 1], -100.0f, MTXF_NEW);
@ -436,7 +442,7 @@ void HUD_GoldRings_Draw(void) {
scale += 0.06f;
}
HUD_MatrixTranslateCoord(&x, &y);
HUD_MatrixTranslateCoordLeft(&x, &y);
Matrix_Translate(gGfxMatrix, x, y, -100.0f, MTXF_NEW);
Matrix_Scale(gGfxMatrix, scale, scale, scale, MTXF_APPLY);
Matrix_Scale(gGfxMatrix, ringScale, ringScale, ringScale, MTXF_APPLY);
@ -913,8 +919,8 @@ void HUD_DrawLevelClearScreen(void) {
// Used in gameplay hud
void HUD_LivesCount2_Draw(f32 x, f32 y, s32 number) {
u8* sLivesCounterTexs[] = { aArwingLifeIconTex, aBlueMarineLifeIconTex, aLandmasterLifeIconTex };
u16* sLivesCounterTLUTs[] = { aArwingLifeIconTLUT, aBlueMarineLifeIconTLUT, aLandmasterLifeIconTLUT };
u8* sLivesCounterTexs[] = { aArwingLifeIconTex, aLandmasterLifeIconTex, aBlueMarineLifeIconTex };
u16* sLivesCounterTLUTs[] = { aArwingLifeIconTLUT, aLandmasterLifeIconTLUT, aBlueMarineLifeIconTLUT };
Player* player = &gPlayer[0];
f32 x0;
f32 x1;
@ -1492,8 +1498,7 @@ void HUD_PauseScreen_Update(void) {
case 3:
Graphics_FillRectangle(&gMasterDisp, OTRGetRectDimensionFromLeftEdge(0), 0,
OTRGetRectDimensionFromRightEdge(SCREEN_WIDTH), SCREEN_HEIGHT, 0, 0, 0,
255);
OTRGetRectDimensionFromRightEdge(SCREEN_WIDTH), SCREEN_HEIGHT, 0, 0, 0, 255);
gFillScreenAlphaTarget = 0;
@ -1543,8 +1548,7 @@ void HUD_PauseScreen_Update(void) {
case 4:
Graphics_FillRectangle(&gMasterDisp, OTRGetRectDimensionFromLeftEdge(0), 0,
OTRGetRectDimensionFromRightEdge(SCREEN_WIDTH), SCREEN_HEIGHT, 0, 0, 0,
255);
OTRGetRectDimensionFromRightEdge(SCREEN_WIDTH), SCREEN_HEIGHT, 0, 0, 0, 255);
if (sPauseScreenTimer[0] < 140) {
break;
}
@ -1563,8 +1567,7 @@ void HUD_PauseScreen_Update(void) {
case 5:
Graphics_FillRectangle(&gMasterDisp, OTRGetRectDimensionFromLeftEdge(0), 0,
OTRGetRectDimensionFromRightEdge(SCREEN_WIDTH ), SCREEN_HEIGHT, 0, 0, 0,
255);
OTRGetRectDimensionFromRightEdge(SCREEN_WIDTH), SCREEN_HEIGHT, 0, 0, 0, 255);
for (i = 0; i < 6; i++) {
if (gPrevPlanetTeamShields[i] == -1) {
@ -2012,6 +2015,9 @@ void HUD_RadarMarks_Setup(void) {
}
}
static f32 gHudOffsetRect = 0.0f;
static f32 gHudOffsetPers = 0.0f;
s32 HUD_RadarMarks_Update(void) {
s32 i;
f32 scale;
@ -2020,11 +2026,32 @@ s32 HUD_RadarMarks_Update(void) {
f32 z1;
f32 x = 0;
f32 y = 0;
s32 pad;
f32 temp;
f32 temp2;
f32 temp3;
switch (gCurrentLevel) {
case LEVEL_CORNERIA:
gHudOffsetRect = OTRGetDimensionFromRightEdge(0.0f);
gHudOffsetPers = gHudOffsetRect * 2.15f;
break;
case LEVEL_SECTOR_Z:
gHudOffsetRect = OTRGetDimensionFromRightEdge(0.0f);
gHudOffsetPers = gHudOffsetRect * 5.50f;
break;
case LEVEL_BOLSE:
gHudOffsetRect = OTRGetDimensionFromRightEdge(0.0f);
gHudOffsetPers = gHudOffsetRect * 2.70f;
break;
default:
gHudOffsetRect = OTRGetDimensionFromRightEdge(0.0f);
gHudOffsetPers = gHudOffsetRect * 3.35f;
break;
}
if (!gVersusMode) {
if (gLevelMode != LEVELMODE_ALL_RANGE) {
return 0;
@ -2098,7 +2125,7 @@ s32 HUD_RadarMarks_Update(void) {
}
HUD_RadarMarks_Setup();
HUD_RadarWindow_Draw(x, y);
HUD_RadarWindow_Draw(x + gHudOffsetRect, y);
if (!gVersusMode &&
((gCurrentLevel == LEVEL_SECTOR_Z) || (gCurrentLevel == LEVEL_FORTUNA) || (gCurrentLevel == LEVEL_VENOM_2) ||
@ -2109,15 +2136,18 @@ s32 HUD_RadarMarks_Update(void) {
switch (gCurrentLevel) {
case LEVEL_SECTOR_Z:
Lib_TextureRect_IA8(&gMasterDisp, D_SZ_60012D0, 16, 9, 251.0f + D_800D1E10, 181.0f, 1.00f, 1.00f);
Lib_TextureRect_IA8(&gMasterDisp, D_SZ_60012D0, 16, 9, gHudOffsetRect + 251.0f + D_800D1E10, 181.0f,
1.00f, 1.00f);
break;
case LEVEL_FORTUNA:
Lib_TextureRect_IA8(&gMasterDisp, D_FO_6001260, 16, 16, 251.0f + D_800D1E10, 178.0f, 1.00f, 1.00f);
Lib_TextureRect_IA8(&gMasterDisp, D_FO_6001260, 16, 16, gHudOffsetRect + 251.0f + D_800D1E10, 178.0f,
1.00f, 1.00f);
break;
case LEVEL_BOLSE:
Lib_TextureRect_IA8(&gMasterDisp, D_BO_6000C80, 16, 16, 251.0f + D_800D1E10, 178.0f, 1.00f, 1.00f);
Lib_TextureRect_IA8(&gMasterDisp, D_BO_6000C80, 16, 16, gHudOffsetRect + (251.0f + D_800D1E10), 178.0f,
1.00f, 1.00f);
break;
case LEVEL_SECTOR_Y:
@ -2128,22 +2158,25 @@ s32 HUD_RadarMarks_Update(void) {
if ((y < 150.0f) || (y > 206.0f)) {
break;
}
Lib_TextureRect_IA8(&gMasterDisp, D_SY_6000840, 64, 64, 250.0f + D_800D1E10, temp, 0.25f, 0.25f);
Lib_TextureRect_IA8(&gMasterDisp, D_SY_6000840, 64, 64, gHudOffsetRect + 250.0f + D_800D1E10, temp,
0.25f, 0.25f);
}
break;
case LEVEL_KATINA:
Lib_TextureRect_IA8(&gMasterDisp, D_KA_6001260, 8, 8, 254.0f + D_800D1E10, 182.0f, 1.00f, 1.00f);
Lib_TextureRect_IA8(&gMasterDisp, D_KA_6001260, 8, 8, 254.0f + D_800D1E10 + gHudOffsetRect, 182.0f,
1.00f, 1.00f);
break;
case LEVEL_VENOM_2:
Lib_TextureRect_IA8(&gMasterDisp, D_VE2_6002890, 16, 16, 251.0f + D_800D1E10, 178.0f, 1.00f, 1.00f);
Lib_TextureRect_IA8(&gMasterDisp, D_VE2_6002890, 16, 16, gHudOffsetRect + 251.0f + D_800D1E10, 178.0f,
1.00f, 1.00f);
break;
}
}
Matrix_Push(&gGfxMatrix);
Matrix_Translate(gGfxMatrix, x1, y1, z1, MTXF_APPLY);
Matrix_Translate(gGfxMatrix, x1 + gHudOffsetPers, y1, z1, MTXF_APPLY);
if ((gCurrentLevel == LEVEL_SECTOR_Z) && (D_hud_80161710 != 0)) {
Matrix_Push(&gGfxMatrix);
@ -2215,49 +2248,51 @@ void HUD_RadioCharacterName_Draw(void) {
RCP_SetupDL(&gMasterDisp, SETUPDL_76_POINT);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
f32 xPos = OTRGetRectDimensionFromLeftEdge(73.0f);
switch ((s32) gRadioMsgRadioId) {
case RCID_FOX:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "FOX");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "FOX");
break;
case RCID_FALCO:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "FALCO");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "FALCO");
break;
case RCID_SLIPPY:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "SLIPPY");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "SLIPPY");
break;
case RCID_PEPPY:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "PEPPY");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "PEPPY");
break;
case RCID_WOLF:
case RCID_WOLF_2:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "WOLF");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "WOLF");
break;
case RCID_LEON:
case RCID_LEON_2:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "LEON");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "LEON");
break;
case RCID_PIGMA:
case RCID_PIGMA_2:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "PIGMA");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "PIGMA");
break;
case RCID_ANDREW:
case RCID_ANDREW_2:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "ANDREW");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "ANDREW");
break;
case RCID_BILL:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "BILL");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "BILL");
break;
case RCID_KATT:
Graphics_DisplaySmallText(73, 173, 1.0f, 1.0f, "KATT");
Graphics_DisplaySmallText(xPos, 173, 1.0f, 1.0f, "KATT");
break;
}
}
@ -2588,12 +2623,18 @@ 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, -53.9f, -38.5f, -139.4f, MTXF_APPLY);
Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 1.0f, MTXF_APPLY);
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);
}
}
@ -2751,7 +2792,6 @@ void HUD_VsModePortraitTex_Draw(f32 xPos, f32 yPos, f32 scale, s32 idx) {
Lib_TextureRect_RGBA16(&gMasterDisp, sVsModeFaceDL[idx], 44, 44, xPos, yPos, scale, scale);
}
// LTODO: Align these
void HUD_EdgeArrows_Draw(s32 idx, bool arg1) {
f32 D_800D1EF8[] = { 0.0f, 0.0f, -9.0f, 9.0f, 10.0f, 10.0f, 10.0f, 10.0f, 0.0f, 0.0f, -8.0f, 8.0f };
f32 D_800D1F28[] = { -7.0f, 7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 8.0f, -8.0f, 0.0f, 0.0f };
@ -2773,11 +2813,20 @@ void HUD_EdgeArrows_Draw(s32 idx, bool arg1) {
Matrix_RotateZ(gGfxMatrix, M_DTOR * D_800D1F88[idx], MTXF_APPLY);
}
// Simplified perspective alignment based on X position
f32 xPos = D_800D1EF8[idx];
if (xPos < 0.0f) {
xPos = xPos * OTRGetAspectRatio() + 1;
} else if (xPos > 0.0f) {
xPos = xPos * OTRGetAspectRatio() - 1;
}
if (arg1) {
Matrix_Translate(gGfxMatrix, D_800D1EF8[idx] + D_800D1FE8[idx], D_800D1F28[idx] + D_800D2018[idx],
D_800D1F58[idx], MTXF_APPLY);
Matrix_Translate(gGfxMatrix, xPos + D_800D1FE8[idx], D_800D1F28[idx] + D_800D2018[idx], D_800D1F58[idx],
MTXF_APPLY);
} else {
Matrix_Translate(gGfxMatrix, D_800D1EF8[idx], D_800D1F28[idx], D_800D1F58[idx], MTXF_APPLY);
Matrix_Translate(gGfxMatrix, xPos, D_800D1F28[idx], D_800D1F58[idx], MTXF_APPLY);
}
Matrix_RotateZ(gGfxMatrix, M_DTOR * D_800D1FB8[idx], MTXF_APPLY);
@ -2897,8 +2946,7 @@ void HUD_KillCountStars_Update(void) {
}
void HUD_VS_ShieldGaugeFrame_Draw(f32 xPos, f32 yPos, f32 xScale, f32 yScale) {
Lib_TextureRect_IA8(&gMasterDisp, aVsShieldGaugeFrameTex, 80, 26, xPos, yPos, xScale,
yScale);
Lib_TextureRect_IA8(&gMasterDisp, aVsShieldGaugeFrameTex, 80, 26, xPos, yPos, xScale, yScale);
}
void HUD_VS_ShieldGaugeTex_Draw(f32 xPos, f32 yPos, f32 xScale, f32 yScale, f32 width) {

View File

@ -19,8 +19,8 @@ u16 Message_IdFromPtr(u16* msgPtr) {
MsgLookup* lookup = (MsgLookup*) LOAD_ASSET(gMsgLookup);
while (lookup->msgPtr != NULL) {
if(GameEngine_OTRSigCheck(msgPtr)){
if(strcmp(((char*) msgPtr) + 7, lookup->path) == 0){
if (GameEngine_OTRSigCheck(msgPtr)) {
if (strcmp(((char*) msgPtr) + 7, lookup->path) == 0) {
return lookup->msgId;
}
} else {
@ -65,7 +65,7 @@ void Message_DisplayChar(Gfx** gfxPtr, u16 msgChar, s32 xpos, s32 ypos) {
gDPLoadTextureBlock_4b((*gfxPtr)++, gTextCharTextures[msgChar >> 2], G_IM_FMT_CI, 16, 13, msgChar % 4U,
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((*gfxPtr)++, xpos << 2, ypos << 2, (xpos + 13) << 2, (ypos + 13) << 2, G_TX_RENDERTILE, 64, 0,
gSPWideTextureRectangle((*gfxPtr)++, xpos << 2, ypos << 2, (xpos + 13) << 2, (ypos + 13) << 2, G_TX_RENDERTILE, 64, 0,
1024, 1024);
}

View File

@ -125,9 +125,18 @@ void Radio_PlayMessage(u16* msg, RadioCharacterId character) {
switch (gGameState) {
case GSTATE_TITLE:
gRadioPrintPosY = 176;
gRadioPrintPosX = OTRGetRectDimensionFromLeftEdge(85.0f);
gRadioTextBoxPosX = OTRGetRectDimensionFromLeftEdge(80.0f);
gRadioTextBoxPosY = 174.0f;
gRadioTextBoxScaleX = 4.63f;
gRadioPortraitPosX = OTRGetRectDimensionFromLeftEdge(32.0f);
gRadioPortraitPosY = 174.0f;
break;
case GSTATE_ENDING:
gRadioPrintPosY = 176;
gRadioPrintPosX = 85;
gRadioPrintPosX = 85.0f;
gRadioTextBoxPosX = 80.0f;
gRadioTextBoxPosY = 174.0f;
gRadioTextBoxScaleX = 4.63f;
@ -137,11 +146,11 @@ void Radio_PlayMessage(u16* msg, RadioCharacterId character) {
case GSTATE_PLAY:
gRadioPrintPosY = 180;
gRadioPrintPosX = 79;
gRadioTextBoxPosX = 74.0f;
gRadioPrintPosX = OTRGetRectDimensionFromLeftEdge(79.0f);
gRadioTextBoxPosX = OTRGetRectDimensionFromLeftEdge(74.0f);
gRadioTextBoxPosY = 178.0f;
gRadioTextBoxScaleX = 4.53f;
gRadioPortraitPosX = 26.0f;
gRadioPortraitPosX = OTRGetRectDimensionFromLeftEdge(26.0f);
gRadioPortraitPosY = 178.0f;
break;
}
@ -428,10 +437,12 @@ void func_radio_800BAAE8(void) {
if (mirror) {
Lib_TextureRect_RGBA16_MirX(&gMasterDisp, radioPortraitTex, 44, 44, gRadioPortraitPosX,
gRadioPortraitPosY + 20.0f + sp38 + gRadioPortraitScaleY, 1.0f, gRadioPortraitScaleY);
gRadioPortraitPosY + 20.0f + sp38 + gRadioPortraitScaleY, 1.0f,
gRadioPortraitScaleY);
} else {
Lib_TextureRect_RGBA16(&gMasterDisp, radioPortraitTex, 44, 44, gRadioPortraitPosX,
gRadioPortraitPosY + 20.0f + sp38 + gRadioPortraitScaleY, 1.0f, gRadioPortraitScaleY);
gRadioPortraitPosY + 20.0f + sp38 + gRadioPortraitScaleY, 1.0f,
gRadioPortraitScaleY);
}
}
}
@ -602,13 +613,12 @@ void Radio_Draw(void) {
if (!(fakeTemp)) {
ret = Audio_GetCurrentVoiceStatus();
if (gRadioMsgCharIndex < 60) {
if (gRadioMsg[gRadioMsgCharIndex + 1] == MSGCHAR_NXT && *gRadioMsg != 38) {
if (gRadioMsg[gRadioMsgCharIndex + 1] != MSGCHAR_END) {
if (gRadioMsg[gRadioMsgCharIndex + 1] == MSGCHAR_NXT) {
if (ret == 0) {
gRadioState = 31;
}
}
else {
} else {
gRadioMsgCharIndex++;
}
}
@ -700,12 +710,12 @@ void Radio_Draw(void) {
(gCurrentRadioPortrait != RCID_1000)) {
RCP_SetupDL(&gMasterDisp, SETUPDL_76_POINT);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
Graphics_DisplaySmallText(31, 167, 1.0f, 1.0f, "DOWN");
Graphics_DisplaySmallText(OTRGetRectDimensionFromLeftEdge(31.0f), 167, 1.0f, 1.0f, "DOWN");
HUD_TeamDownWrench_Draw(1);
}
if (((gCurrentRadioPortrait != RCID_STATIC) && (gCurrentRadioPortrait != RCID_STATIC + 1)) &&
(gCurrentRadioPortrait != RCID_1000)) {
HUD_TeamShields_Draw(22.0f, 165.0f, gTeamShields[idx]);
HUD_TeamShields_Draw(OTRGetRectDimensionFromLeftEdge(22.0f), 165.0f, gTeamShields[idx]);
}
}
@ -749,11 +759,11 @@ void Radio_Draw(void) {
(gCurrentRadioPortrait != RCID_STATIC + 1) && (gCurrentRadioPortrait != RCID_1000)) {
RCP_SetupDL(&gMasterDisp, SETUPDL_76_POINT);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
Graphics_DisplaySmallText(31, 167, 1.0f, 1.0f, "DOWN");
Graphics_DisplaySmallText(OTRGetRectDimensionFromLeftEdge(31.0f), 167, 1.0f, 1.0f, "DOWN");
}
if (((gCurrentRadioPortrait != RCID_STATIC) && (gCurrentRadioPortrait != RCID_STATIC + 1)) &&
(gCurrentRadioPortrait != RCID_1000)) {
HUD_TeamShields_Draw(22.0f, 165.0f, gActors[idx].health * 2.55f);
HUD_TeamShields_Draw(OTRGetRectDimensionFromLeftEdge(22.0f), 165.0f, gActors[idx].health * 2.55f);
}
}
if (((gCurrentRadioPortrait != RCID_STATIC) && (gCurrentRadioPortrait != RCID_STATIC + 1)) &&

View File

@ -971,6 +971,11 @@ void Option_MainMenu_Update(void) {
}
if (gControllerPress[gMainController].button & (A_BUTTON | START_BUTTON)) {
#if DEBUG_VERSUS == 0
if (sMainMenuCursor == 2) {
break;
}
#endif
AUDIO_PLAY_SFX(NA_SE_ARWING_DECIDE, gDefaultSfxSource, 4);
sLightningYpos = sOptionCardPosY[sMainMenuCursor];
sDrawCursor = false;
@ -2158,6 +2163,7 @@ void Option_RankingMenu_Draw(void) {
Option_Color_FlashRed(&D_menu_801B93F0);
colorGB = D_menu_801B93F0;
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, colorGB, colorGB, 255);
// Selection arrow
Lib_TextureRect_IA8(&gMasterDisp, D_VS_MENU_7004010, 8, 8, 70.0f, (D_menu_801B93E4 * 17.0f) + 55.0f, 1.0f,
1.0f);
}
@ -2240,13 +2246,19 @@ void Option_80197914(void) {
for (i = 0, vec1 = D_menu_801AF100, vec2 = D_menu_801AF118; i < 2; i++, vec1++, vec2++) {
Matrix_Push(&gGfxMatrix);
Matrix_Translate(gGfxMatrix, vec1->x, vec1->y, -500.0f, MTXF_APPLY);
// @port: Tag the transform.
FrameInterpolation_RecordOpenChild("RANKING_BORDERS", i);
Matrix_Translate(gGfxMatrix, vec1->x, vec1->y, -500.0f, MTXF_APPLY);
// @port: Increase the scale by 2.5f to compensate for missing borders
Matrix_Scale(gGfxMatrix, vec2->x * 4, vec2->y + 2.5f, 1.0f, MTXF_APPLY);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_menu_801AEF30);
Matrix_Pop(&gGfxMatrix);
// @port Pop the transform id.
FrameInterpolation_RecordCloseChild();
}
}
@ -2605,11 +2617,17 @@ f32 D_menu_801AF144 = 2.7f;
void Option_RankingRouteMedal_Draw(f32 xPos, f32 yPos, f32 zPos) {
RCP_SetupDL(&gMasterDisp, SETUPDL_53);
Matrix_Push(&gGfxMatrix);
// @port: Tag the transform.
FrameInterpolation_RecordOpenChild("Option_RankingRouteMedal_Draw", (u32) xPos << 8 | (u32) yPos);
Matrix_Translate(gGfxMatrix, xPos - D_menu_801AF140, yPos + D_menu_801AF144, zPos, MTXF_APPLY);
Matrix_Scale(gGfxMatrix, D_menu_801AF13C, D_menu_801AF13C, D_menu_801AF13C, MTXF_APPLY);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, aMapMedalDL);
Matrix_Pop(&gGfxMatrix);
// @port Pop the transform id.
FrameInterpolation_RecordCloseChild();
}
s32 Option_GetRouteLineColor(PlanetId start, PlanetId end) {

View File

@ -3629,21 +3629,21 @@ void Title_Radio_PlayMessage(u16** msgList, RadioCharacterId character) {
switch (gGameState) {
case GSTATE_TITLE:
gRadioPrintPosY = 176;
gRadioPrintPosX = 85;
gRadioTextBoxPosX = 80.0f;
gRadioPrintPosX = OTRGetRectDimensionFromLeftEdge(85);
gRadioTextBoxPosX = OTRGetRectDimensionFromLeftEdge(80.0f);
gRadioTextBoxPosY = 174.0f;
gRadioTextBoxScaleX = 4.63f;
gRadioPortraitPosX = 32.0f;
gRadioPortraitPosX = OTRGetRectDimensionFromLeftEdge(32.0f);
gRadioPortraitPosY = 174.0f;
break;
case GSTATE_PLAY:
gRadioPrintPosY = 179;
gRadioPrintPosX = 79;
gRadioTextBoxPosX = 74.0f;
gRadioPrintPosX = OTRGetRectDimensionFromLeftEdge(79);
gRadioTextBoxPosX = OTRGetRectDimensionFromLeftEdge(74.0f);
gRadioTextBoxPosY = 178.0f;
gRadioTextBoxScaleX = 4.53f;
gRadioPortraitPosX = 26.0f;
gRadioPortraitPosX = OTRGetRectDimensionFromLeftEdge(26.0f);
gRadioPortraitPosY = 178.0f;
}

View File

@ -100,24 +100,24 @@ void DrawSettingsMenu(){
.isPercentage = true,
})) {
float val = CVarGetFloat("gMainMusicVolume", 1.0f) * 100;
gSaveFile.save.data.musicVolume = val;
Audio_SetVolume(AUDIO_TYPE_MUSIC, val);
gSaveFile.save.data.musicVolume = (u8) val;
Audio_SetVolume(AUDIO_TYPE_MUSIC, (u8) val);
}
if (UIWidgets::CVarSliderFloat("Voice Volume", "gVoiceVolume", 0.0f, 1.0f, 1.0f, {
.format = "%.0f%%",
.isPercentage = true,
})) {
float val = CVarGetFloat("gVoiceVolume", 1.0f) * 100;
gSaveFile.save.data.voiceVolume = val;
Audio_SetVolume(AUDIO_TYPE_VOICE, val);
gSaveFile.save.data.voiceVolume = (u8) val;
Audio_SetVolume(AUDIO_TYPE_VOICE, (u8) val);
}
if (UIWidgets::CVarSliderFloat("Sound Effects Volume", "gSFXMusicVolume", 0.0f, 1.0f, 1.0f, {
.format = "%.0f%%",
.isPercentage = true,
})) {
float val = CVarGetFloat("gSFXMusicVolume", 1.0f) * 100;
gSaveFile.save.data.sfxVolume = val;
Audio_SetVolume(AUDIO_TYPE_SFX, val);
gSaveFile.save.data.sfxVolume = (u8) val;
Audio_SetVolume(AUDIO_TYPE_SFX, (u8) val);
}
static std::unordered_map<Ship::AudioBackend, const char*> audioBackendNames = {
@ -543,7 +543,7 @@ void DrawDebugMenu() {
});
UIWidgets::CVarCheckbox("SFX Jukebox", "gSfxJukebox", {
.tooltip = "Allows you to play sound effects from the game"
.tooltip = "Press L in the Expert Sound options to play sound effects from the game"
});
UIWidgets::CVarCheckbox("Spawner Mod", "gSpawnerMod", {

@ -1 +1 @@
Subproject commit c7d12dadb52c69bf2ada005006cfd0da5a14f615
Subproject commit ed4ee26fe6d6ec113efc54d188c5864f44c1e14d