# --- T2-COPYRIGHT-BEGIN --- # t2/package/*/ioquake3/widescreen.patch # Copyright (C) 2026 The T2 SDE Project # SPDX-License-Identifier: GPL-2.0 or patched project license # --- T2-COPYRIGHT-END --- diff --git a/code/cgame/cg_main.c b/code/cgame/cg_main.c index 1269e1b..aff98e0 100644 --- a/code/cgame/cg_main.c +++ b/code/cgame/cg_main.c @@ -212,7 +212,7 @@ static cvarTable_t cvarTable[] = { { &cg_autoswitch, "cg_autoswitch", "1", CVAR_ARCHIVE }, { &cg_drawGun, "cg_drawGun", "1", CVAR_ARCHIVE }, { &cg_zoomFov, "cg_zoomfov", "22.5", CVAR_ARCHIVE }, - { &cg_fov, "cg_fov", "90", CVAR_ARCHIVE }, + { &cg_fov, "cg_fov", "0", CVAR_ARCHIVE }, // automatic: 90 standard, 100 widescreen { &cg_viewsize, "cg_viewsize", "100", CVAR_ARCHIVE }, { &cg_shadows, "cg_shadows", "1", CVAR_ARCHIVE }, { &cg_gibs, "cg_gibs", "1", CVAR_ARCHIVE }, @@ -1981,4 +1981,3 @@ void CG_KeyEvent(int key, qboolean down) { void CG_MouseEvent(int x, int y) { } #endif - diff --git a/code/cgame/cg_view.c b/code/cgame/cg_view.c index 3dba5eb..ab33756 100644 --- a/code/cgame/cg_view.c +++ b/code/cgame/cg_view.c @@ -487,6 +487,10 @@ static int CG_CalcFov( void ) { fov_x = 90; } else { fov_x = cg_fov.value; + if ( fov_x == 0 ) { + // Use a wider default horizontal field of view on widescreen displays. + fov_x = cg.refdef.width * 9 >= cg.refdef.height * 16 ? 100 : 90; + } if ( fov_x < 1 ) { fov_x = 1; } else if ( fov_x > 160 ) { @@ -876,4 +880,3 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demo } - diff --git a/code/cgame/cg_weapons.c b/code/cgame/cg_weapons.c index 3906b4a..d0abee8 100644 --- a/code/cgame/cg_weapons.c +++ b/code/cgame/cg_weapons.c @@ -1357,6 +1357,7 @@ void CG_AddViewWeapon( playerState_t *ps ) { refEntity_t hand; centity_t *cent; clientInfo_t *ci; + float fov; float fovOffset; vec3_t angles; weaponInfo_t *weapon; @@ -1395,8 +1396,12 @@ void CG_AddViewWeapon( playerState_t *ps ) { } // drop gun lower at higher fov - if ( cg_fov.integer > 90 ) { - fovOffset = -0.2 * ( cg_fov.integer - 90 ); + fov = cg_fov.value; + if ( fov == 0 ) { + fov = cg.refdef.width * 9 >= cg.refdef.height * 16 ? 100 : 90; + } + if ( fov > 90 ) { + fovOffset = -0.2 * ( fov - 90 ); } else { fovOffset = 0; } diff --git a/code/q3_ui/ui_video.c b/code/q3_ui/ui_video.c index 536055d..7aa40d6 100644 --- a/code/q3_ui/ui_video.c +++ b/code/q3_ui/ui_video.c @@ -334,6 +334,8 @@ static const char *builtinResolutions[ ] = "1600x1200", "2048x1536", "856x480", + "1280x720", + "1920x1080", NULL }; @@ -1312,4 +1314,3 @@ void UI_GraphicsOptionsMenu( void ) { UI_PushMenu( &s_graphicsoptions.menu ); Menu_SetCursorToItem( &s_graphicsoptions.menu, &s_graphicsoptions.graphics ); } - diff --git a/code/renderergl1/tr_init.c b/code/renderergl1/tr_init.c index 1c50201..02a0451 100644 --- a/code/renderergl1/tr_init.c +++ b/code/renderergl1/tr_init.c @@ -278,7 +278,9 @@ vidmode_t r_vidModes[] = { "Mode 8: 1280x1024", 1280, 1024, 1 }, { "Mode 9: 1600x1200", 1600, 1200, 1 }, { "Mode 10: 2048x1536", 2048, 1536, 1 }, - { "Mode 11: 856x480 (wide)",856, 480, 1 } + { "Mode 11: 856x480 (wide)",856, 480, 1 }, + { "Mode 12: 1280x720 (wide)", 1280, 720, 1 }, + { "Mode 13: 1920x1080 (wide)", 1920, 1080, 1 } }; static int s_numVidModes = ARRAY_LEN( r_vidModes ); diff --git a/code/renderergl2/tr_init.c b/code/renderergl2/tr_init.c index 0edfe6b..b926676 100644 --- a/code/renderergl2/tr_init.c +++ b/code/renderergl2/tr_init.c @@ -364,7 +364,9 @@ vidmode_t r_vidModes[] = { "Mode 8: 1280x1024", 1280, 1024, 1 }, { "Mode 9: 1600x1200", 1600, 1200, 1 }, { "Mode 10: 2048x1536", 2048, 1536, 1 }, - { "Mode 11: 856x480 (wide)",856, 480, 1 } + { "Mode 11: 856x480 (wide)",856, 480, 1 }, + { "Mode 12: 1280x720 (wide)", 1280, 720, 1 }, + { "Mode 13: 1920x1080 (wide)", 1920, 1080, 1 } }; static int s_numVidModes = ARRAY_LEN( r_vidModes ); diff --git a/code/ui/ui_shared.c b/code/ui/ui_shared.c index 74bc77e..1429e27 100644 --- a/code/ui/ui_shared.c +++ b/code/ui/ui_shared.c @@ -5263,6 +5263,8 @@ static const char *builtinResolutions[ ] = "1600x1200", "2048x1536", "856x480", + "1280x720", + "1920x1080", NULL };