From 09d9f4613815dec49744366b3bb02a2fed2613f0 Mon Sep 17 00:00:00 2001 From: GabsPuNs Date: Fri, 22 May 2026 23:38:46 -0400 Subject: [PATCH] Add Fullscreen and Vsync settings bits --- Minecraft.Client/Common/App_Defines.h | 8 +- Minecraft.Client/Common/App_enums.h | 12 +- Minecraft.Client/Common/Consoles_App.cpp | 172 +++++++++++++++-------- Minecraft.Client/Extrax64Stubs.cpp | 5 +- 4 files changed, 125 insertions(+), 72 deletions(-) diff --git a/Minecraft.Client/Common/App_Defines.h b/Minecraft.Client/Common/App_Defines.h index fac503ec..c465899b 100644 --- a/Minecraft.Client/Common/App_Defines.h +++ b/Minecraft.Client/Common/App_Defines.h @@ -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 diff --git a/Minecraft.Client/Common/App_enums.h b/Minecraft.Client/Common/App_enums.h index 0e89ac19..02b1b33c 100644 --- a/Minecraft.Client/Common/App_enums.h +++ b/Minecraft.Client/Common/App_enums.h @@ -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, }; diff --git a/Minecraft.Client/Common/Consoles_App.cpp b/Minecraft.Client/Common/Consoles_App.cpp index 115bebfe..d25b63f9 100644 --- a/Minecraft.Client/Common/Consoles_App.cpp +++ b/Minecraft.Client/Common/Consoles_App.cpp @@ -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;ioptions->set(Options::Option::SOUND, static_cast(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; } diff --git a/Minecraft.Client/Extrax64Stubs.cpp b/Minecraft.Client/Extrax64Stubs.cpp index bb877ca0..f7415aa0 100644 --- a/Minecraft.Client/Extrax64Stubs.cpp +++ b/Minecraft.Client/Extrax64Stubs.cpp @@ -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;