Add Fullscreen and Vsync settings bits

This commit is contained in:
GabsPuNs
2026-05-22 23:38:46 -04:00
parent bc2a8eed6d
commit 09d9f46138
4 changed files with 125 additions and 72 deletions

View File

@@ -84,9 +84,6 @@ enum EGameHostOptionWorldSize
#define MAX_FAVORITE_SKINS 10 // these are stored in the profile data so keep it small
// defines for game settings - uiBitmaskValues
#define GAMESETTING_CLOUDS 0x00000001
@@ -104,7 +101,10 @@ enum EGameHostOptionWorldSize
#define GAMESETTING_ANIMATEDCHARACTER 0x00008000
#define GAMESETTING_PS3EULAREAD 0x00010000
#define GAMESETTING_PSVITANETWORKMODEADHOC 0x00020000
#define GAMESETTING_OLDSWINGANIMATION 0x04000000
//New
#define GAMESETTING_OLDSWINGANIMATION 0x00100000 //Bit 20
#define GAMESETTING_FULLSCREEN 0x00200000 //Bit 21
#define GAMESETTING_VSYNC 0x00400000 //Bit 22
// defines for languages

View File

@@ -133,9 +133,7 @@ enum eGameSetting
{
eGameSetting_MusicVolume=0,
eGameSetting_SoundFXVolume,
eGameSetting_RenderDistance,
eGameSetting_Gamma,
eGameSetting_FOV,
eGameSetting_Difficulty,
eGameSetting_Sensitivity_InGame,
eGameSetting_Sensitivity_InMenu,
@@ -145,8 +143,6 @@ enum eGameSetting
eGameSetting_ControlSouthPaw,
eGameSetting_SplitScreenVertical,
eGameSetting_GamertagsVisible,
eGameSetting_OldSwingAnimation,
eGameSetting_GraphicsMode,
// Interim TU 1.6.6
eGameSetting_Autosave,
eGameSetting_DisplaySplitscreenGamertags,
@@ -180,7 +176,13 @@ enum eGameSetting
// PSVita
eGameSetting_PSVita_NetworkModeAdhoc,
// New
eGameSetting_OldSwingAnimation,
eGameSetting_RenderDistance,
eGameSetting_GraphicsMode,
eGameSetting_Fullscreen,
eGameSetting_Vsync,
eGameSetting_FOV,
};

View File

@@ -841,9 +841,7 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con
{
SetGameSettings(iPad,eGameSetting_MusicVolume,DEFAULT_VOLUME_LEVEL);
SetGameSettings(iPad,eGameSetting_SoundFXVolume,DEFAULT_VOLUME_LEVEL);
SetGameSettings(iPad,eGameSetting_RenderDistance,16);
SetGameSettings(iPad,eGameSetting_Gamma,50);
SetGameSettings(iPad,eGameSetting_FOV,0);
// 4J-PB - Don't reset the difficult level if we're in-game
if(Minecraft::GetInstance()->level==nullptr)
@@ -910,16 +908,20 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con
app.SetGameHostOption(eGameHostOption_NaturalRegeneration, 1 );
app.SetGameHostOption(eGameHostOption_DoDaylightCycle, 1 );
// New
SetGameSettings(iPad,eGameSetting_OldSwingAnimation, 0);
SetGameSettings(iPad,eGameSetting_RenderDistance,16);
SetGameSettings(iPad,eGameSetting_GraphicsMode, 2);
SetGameSettings(iPad,eGameSetting_Fullscreen, 0);
SetGameSettings(iPad,eGameSetting_Vsync, 1);
SetGameSettings(iPad,eGameSetting_FOV,0);
// 4J-PB - leave these in, or remove from everywhere they are referenced!
// Although probably best to leave in unless we split the profile settings into platform specific classes - having different meaning per platform for the same bitmask could get confusing
//#ifdef __PS3__
// PS3DEC13
SetGameSettings(iPad,eGameSetting_PS3_EULA_Read,0); // EULA not read
// New
SetGameSettings(iPad,eGameSetting_GraphicsMode,2);
SetGameSettings(iPad,eGameSetting_OldSwingAnimation,0);
// PS3 1.05 - added Greek
// 4J-JEV: We cannot change these in-game, as they could affect localised strings and font.
@@ -1064,7 +1066,6 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat
pGameSettings->uiBitmaskValues|=(GAMESETTING_UISIZE&0x00000800); // uisize 2
pGameSettings->uiBitmaskValues|=(GAMESETTING_UISIZE_SPLITSCREEN&0x00004000); // splitscreen ui size 3
pGameSettings->uiBitmaskValues|=GAMESETTING_ANIMATEDCHARACTER; //eGameSetting_AnimatedCharacter - on
pGameSettings->uiBitmaskValues|=GAMESETTING_OLDSWINGANIMATION; //eGameSetting_OldSwingAnimation - off
// TU12
// favorite skins added, but only set in TU12 - set to FFs
for(int i=0;i<MAX_FAVORITE_SKINS;i++)
@@ -1342,9 +1343,7 @@ void CMinecraftApp::ApplyGameSettingsChanged(int iPad)
{
ActionGameSettings(iPad,eGameSetting_MusicVolume);
ActionGameSettings(iPad,eGameSetting_SoundFXVolume);
ActionGameSettings(iPad,eGameSetting_RenderDistance);
ActionGameSettings(iPad,eGameSetting_Gamma);
ActionGameSettings(iPad,eGameSetting_FOV);
ActionGameSettings(iPad,eGameSetting_Difficulty);
ActionGameSettings(iPad,eGameSetting_Sensitivity_InGame);
ActionGameSettings(iPad,eGameSetting_ViewBob);
@@ -1373,8 +1372,13 @@ void CMinecraftApp::ApplyGameSettingsChanged(int iPad)
ActionGameSettings(iPad,eGameSetting_PS3_EULA_Read);
// New
ActionGameSettings(iPad,eGameSetting_OldSwingAnimation);
ActionGameSettings(iPad,eGameSetting_RenderDistance);
ActionGameSettings(iPad,eGameSetting_GraphicsMode);
ActionGameSettings(iPad,eGameSetting_Fullscreen);
ActionGameSettings(iPad,eGameSetting_Vsync);
ActionGameSettings(iPad,eGameSetting_FOV);
}
void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
@@ -1394,15 +1398,6 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
pMinecraft->options->set(Options::Option::SOUND, static_cast<float>(GameSettingsA[iPad]->ucSoundFXVolume) / 100.0f);
}
break;
case eGameSetting_RenderDistance:
if (iPad == ProfileManager.GetPrimaryPad())
{
int dist = (GameSettingsA[iPad]->uiBitmaskValues >> 16) & 0xFF;
int level = UIScene_SettingsGraphicsMenu::DistanceToLevel(dist);
pMinecraft->options->set(Options::Option::RENDER_DISTANCE, 3 - level);
};
break;
case eGameSetting_Gamma:
if(iPad==ProfileManager.GetPrimaryPad())
{
@@ -1415,14 +1410,6 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
#endif
}
break;
case eGameSetting_FOV:
if(iPad==ProfileManager.GetPrimaryPad())
{
float fovDeg = 70.0f + (float)GameSettingsA[iPad]->ucFov * 40.0f / 100.0f;
pMinecraft->gameRenderer->SetFovVal(fovDeg);
pMinecraft->options->set(Options::Option::FOV, (float)GameSettingsA[iPad]->ucFov / 100.0f);
}
break;
case eGameSetting_Difficulty:
if(iPad==ProfileManager.GetPrimaryPad())
@@ -1612,6 +1599,15 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
case eGameSetting_OldSwingAnimation:
//nothing to do here
break;
case eGameSetting_RenderDistance:
if (iPad == ProfileManager.GetPrimaryPad())
{
int dist = (GameSettingsA[iPad]->uiBitmaskValues >> 23) & 0x3F;
int level = UIScene_SettingsGraphicsMenu::DistanceToLevel(dist);
pMinecraft->options->set(Options::Option::RENDER_DISTANCE, 3 - level);
};
break;
case eGameSetting_GraphicsMode:
if(iPad == ProfileManager.GetPrimaryPad())
{
@@ -1636,7 +1632,6 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
pMinecraft->options->set(Options::Option::GRAPHICS, true);
pMinecraft->options->set(Options::Option::MIPMAPS_BLEND, false);
pMinecraft->options->set(Options::Option::AMBIENT_OCCLUSION, true);
RenderManager.DisableVsync();
pMinecraft->options->set(Options::Option::PARTICLES, 0);
pMinecraft->textures->reloadAll();
}
@@ -1645,7 +1640,6 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
pMinecraft->options->set(Options::Option::GRAPHICS, true);
pMinecraft->options->set(Options::Option::MIPMAPS_BLEND, true);
pMinecraft->options->set(Options::Option::AMBIENT_OCCLUSION, true);
RenderManager.EnableVsync();
pMinecraft->options->set(Options::Option::PARTICLES, 0);
pMinecraft->textures->reloadAll();
}
@@ -1657,6 +1651,25 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
}
}
break;
case eGameSetting_Fullscreen:
//nothing to do here
break;
case eGameSetting_Vsync:
{
if ((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_VSYNC) == 1)
RenderManager.EnableVsync();
else
RenderManager.DisableVsync();
}
break;
case eGameSetting_FOV:
if(iPad==ProfileManager.GetPrimaryPad())
{
float fovDeg = 70.0f + (float)GameSettingsA[iPad]->ucFov * 40.0f / 100.0f;
pMinecraft->gameRenderer->SetFovVal(fovDeg);
pMinecraft->options->set(Options::Option::FOV, (float)GameSettingsA[iPad]->ucFov / 100.0f);
}
break;
}
}
@@ -1918,17 +1931,6 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV
GameSettingsA[iPad]->bSettingsChanged=true;
}
break;
case eGameSetting_RenderDistance:
{
unsigned int val = ucVal & 0xFF;
GameSettingsA[iPad]->uiBitmaskValues &= ~(0xFF << 16);
GameSettingsA[iPad]->uiBitmaskValues |= val << 16;
if(iPad == ProfileManager.GetPrimaryPad())
ActionGameSettings(iPad,eVal);
GameSettingsA[iPad]->bSettingsChanged = true;
}
break;
case eGameSetting_Gamma:
if(GameSettingsA[iPad]->ucGamma!=ucVal)
{
@@ -1940,17 +1942,6 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV
GameSettingsA[iPad]->bSettingsChanged=true;
}
break;
case eGameSetting_FOV:
if(GameSettingsA[iPad]->ucFov!=ucVal)
{
GameSettingsA[iPad]->ucFov=ucVal;
if(iPad==ProfileManager.GetPrimaryPad())
{
ActionGameSettings(iPad,eVal);
}
GameSettingsA[iPad]->bSettingsChanged=true;
}
break;
case eGameSetting_Difficulty:
if((GameSettingsA[iPad]->usBitmaskValues&0x03)!=(ucVal&0x03))
{
@@ -2368,7 +2359,7 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV
break;
case eGameSetting_OldSwingAnimation:
if(((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_OLDSWINGANIMATION) != 0) != ((ucVal & 0x01) != 0))
if((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_OLDSWINGANIMATION)!=(ucVal & 0x01)<<20)
{
if(ucVal==1)
{
@@ -2382,6 +2373,17 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV
GameSettingsA[iPad]->bSettingsChanged=true;
}
break;
case eGameSetting_RenderDistance:
{
unsigned int val = ucVal & 0x3F;
GameSettingsA[iPad]->uiBitmaskValues &= ~(0x3F << 23);
GameSettingsA[iPad]->uiBitmaskValues |= val << 23;
if(iPad == ProfileManager.GetPrimaryPad())
ActionGameSettings(iPad,eVal);
GameSettingsA[iPad]->bSettingsChanged = true;
}
break;
case eGameSetting_GraphicsMode:
if(GameSettingsA[iPad]->ucGraphicsMode != ucVal)
@@ -2394,6 +2396,47 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV
GameSettingsA[iPad]->bSettingsChanged = true;
}
break;
case eGameSetting_Fullscreen:
if((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_FULLSCREEN)!=(ucVal & 0x01)<<21)
{
if(ucVal==1)
{
GameSettingsA[iPad]->uiBitmaskValues|=GAMESETTING_FULLSCREEN;
}
else
{
GameSettingsA[iPad]->uiBitmaskValues&=~GAMESETTING_FULLSCREEN;
}
ActionGameSettings(iPad,eVal);
GameSettingsA[iPad]->bSettingsChanged=true;
}
break;
case eGameSetting_Vsync:
if((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_VSYNC)!=(ucVal & 0x01)<<22)
{
if(ucVal==1)
{
GameSettingsA[iPad]->uiBitmaskValues|=GAMESETTING_VSYNC;
}
else
{
GameSettingsA[iPad]->uiBitmaskValues&=~GAMESETTING_VSYNC;
}
ActionGameSettings(iPad,eVal);
GameSettingsA[iPad]->bSettingsChanged=true;
}
break;
case eGameSetting_FOV:
if(GameSettingsA[iPad]->ucFov!=ucVal)
{
GameSettingsA[iPad]->ucFov=ucVal;
if(iPad==ProfileManager.GetPrimaryPad())
{
ActionGameSettings(iPad,eVal);
}
GameSettingsA[iPad]->bSettingsChanged=true;
}
break;
}
}
@@ -2414,19 +2457,9 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal)
case eGameSetting_SoundFXVolume:
return GameSettingsA[iPad]->ucSoundFXVolume;
break;
case eGameSetting_RenderDistance:
{
int val = (GameSettingsA[iPad]->uiBitmaskValues >> 16) & 0xFF;
if(val == 0) return val = 16; //brain
return val;
break;
}
case eGameSetting_Gamma:
return GameSettingsA[iPad]->ucGamma;
break;
case eGameSetting_FOV:
return GameSettingsA[iPad]->ucFov;
break;
case eGameSetting_Difficulty:
return GameSettingsA[iPad]->usBitmaskValues&0x0003;
break;
@@ -2529,11 +2562,26 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal)
case eGameSetting_PSVita_NetworkModeAdhoc:
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_PSVITANETWORKMODEADHOC)>>17;
case eGameSetting_OldSwingAnimation:
return (GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_OLDSWINGANIMATION) >> 26;
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_OLDSWINGANIMATION)>>20;
break;
case eGameSetting_RenderDistance:
{
unsigned char ucVal=(GameSettingsA[iPad]->uiBitmaskValues >> 25) & 0x3F;
return ucVal;
}
break;
case eGameSetting_GraphicsMode:
return GameSettingsA[iPad]->ucGraphicsMode;
break;
case eGameSetting_Fullscreen:
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_FULLSCREEN)>>21;
break;
case eGameSetting_Vsync:
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_VSYNC)>>22;
break;
case eGameSetting_FOV:
return GameSettingsA[iPad]->ucFov;
break;
}
return 0;
}

View File

@@ -642,7 +642,6 @@ void C_4JProfile::Initialise(DWORD dwTitleID,
pGameSettings->uiBitmaskValues |= (GAMESETTING_UISIZE & 0x00000800); // uisize 2
pGameSettings->uiBitmaskValues |= (GAMESETTING_UISIZE_SPLITSCREEN & 0x00004000); // splitscreen ui size 3
pGameSettings->uiBitmaskValues |= GAMESETTING_ANIMATEDCHARACTER; //eGameSetting_AnimatedCharacter - on
pGameSettings->uiBitmaskValues |= GAMESETTING_OLDSWINGANIMATION; //eGameSetting_OldSwingAnimation - off
// TU12
// favorite skins added, but only set in TU12 - set to FFs
@@ -663,6 +662,10 @@ void C_4JProfile::Initialise(DWORD dwTitleID,
// PS Vita - network mode added
pGameSettings->uiBitmaskValues &= ~GAMESETTING_PSVITANETWORKMODEADHOC; //eGameSetting_PSVita_NetworkModeAdhoc - off
// New
pGameSettings->uiBitmaskValues |= GAMESETTING_OLDSWINGANIMATION; //eGameSetting_OldSwingAnimation - off
pGameSettings->uiBitmaskValues |= GAMESETTING_FULLSCREEN; //eGameSetting_Fullscreen - off
pGameSettings->uiBitmaskValues |= GAMESETTING_VSYNC; //eGameSetting_Vsync - on
// Tutorials for most menus, and a few other things
pGameSettings->ucTutorialCompletion[0] = 0xFF;