Add Fullscreen and Vsync settings bits

This commit is contained in:
GabsPuNs
2026-05-22 23:38:46 -04:00
parent 9f188e060a
commit 112951d11d
4 changed files with 122 additions and 71 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,9 +101,13 @@ enum EGameHostOptionWorldSize
#define GAMESETTING_ANIMATEDCHARACTER 0x00008000
#define GAMESETTING_PS3EULAREAD 0x00010000
#define GAMESETTING_PSVITANETWORKMODEADHOC 0x00020000
//TU25
#define GAMESETTING_CAVESOUNDS 0x00100000
#define GAMESETTING_CLASSICCRAFTING 0x00200000
#define GAMESETTING_OLDSWINGANIMATION 0x04000000
//New
#define GAMESETTING_OLDSWINGANIMATION 0x00400000 //Bit 22
#define GAMESETTING_FULLSCREEN 0x00800000 //Bit 23
#define GAMESETTING_VSYNC 0x01000000 //Bit 24
// 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,
@@ -183,6 +179,14 @@ enum eGameSetting
// TU25
eGameSetting_CaveSounds,
eGameSetting_ClassicCrafting,
// New
eGameSetting_OldSwingAnimation,
eGameSetting_RenderDistance,
eGameSetting_GraphicsMode,
eGameSetting_Fullscreen,
eGameSetting_Vsync,
eGameSetting_FOV,
};

View File

@@ -844,9 +844,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)
@@ -918,8 +916,12 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con
SetGameSettings(iPad,eGameSetting_ClassicCrafting, 0);
// New
SetGameSettings(iPad,eGameSetting_GraphicsMode, 2);
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
@@ -1071,7 +1073,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++)
@@ -1082,10 +1083,6 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat
// Added a bitmask in TU13 to enable/disable display of the Mash-up pack worlds in the saves list
pGameSettings->uiMashUpPackWorldsDisplay = 0xFFFFFFFF;
// TU25
pGameSettings->uiBitmaskValues|=GAMESETTING_CAVESOUNDS; //eGameSetting_CaveSounds - on
pGameSettings->uiBitmaskValues|=GAMESETTING_CLASSICCRAFTING; //eGameSetting_ClassicCrafting - off
// PS3 1.05 - added Greek
pGameSettings->ucLanguage = MINECRAFT_LANGUAGE_DEFAULT; // use the system language
}
@@ -1353,9 +1350,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);
@@ -1388,8 +1383,13 @@ void CMinecraftApp::ApplyGameSettingsChanged(int iPad)
ActionGameSettings(iPad,eGameSetting_CaveSounds);
ActionGameSettings(iPad,eGameSetting_ClassicCrafting);
// 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)
@@ -1409,15 +1409,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())
{
@@ -1430,14 +1421,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())
@@ -1633,6 +1616,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 >> 25) & 0x3F;
int level = UIScene_SettingsGraphicsMenu::DistanceToLevel(dist);
pMinecraft->options->set(Options::Option::RENDER_DISTANCE, 3 - level);
};
break;
case eGameSetting_GraphicsMode:
if(iPad == ProfileManager.GetPrimaryPad())
{
@@ -1657,7 +1649,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();
}
@@ -1666,7 +1657,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();
}
@@ -1678,6 +1668,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;
}
}
@@ -1939,17 +1948,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)
{
@@ -1961,17 +1959,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))
{
@@ -2421,7 +2408,7 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV
break;
case eGameSetting_OldSwingAnimation:
if((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_OLDSWINGANIMATION)!=(ucVal & 0x01)<<26)
if((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_OLDSWINGANIMATION)!=(ucVal & 0x01)<<22)
{
if(ucVal==1)
{
@@ -2435,6 +2422,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 << 25);
GameSettingsA[iPad]->uiBitmaskValues |= val << 25;
if(iPad == ProfileManager.GetPrimaryPad())
ActionGameSettings(iPad,eVal);
GameSettingsA[iPad]->bSettingsChanged = true;
}
break;
case eGameSetting_GraphicsMode:
if(GameSettingsA[iPad]->ucGraphicsMode != ucVal)
{
@@ -2446,6 +2444,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)<<23)
{
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)<<24)
{
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;
}
}
@@ -2466,19 +2505,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;
@@ -2589,11 +2618,26 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal)
// New
case eGameSetting_OldSwingAnimation:
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_OLDSWINGANIMATION)>>26;
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_OLDSWINGANIMATION)>>22;
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)>>23;
break;
case eGameSetting_Vsync:
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_VSYNC)>>24;
break;
case eGameSetting_FOV:
return GameSettingsA[iPad]->ucFov;
break;
}
return 0;
}

View File

@@ -668,6 +668,8 @@ void C_4JProfile::Initialise(DWORD dwTitleID,
// 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;