From 4619fc5622dd4e11d624c12f79d9f1abe30b6ea6 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 29 Mar 2019 19:09:22 +0100 Subject: [PATCH 01/12] - removed unused (now always active) gl_trimsprites option from the menu. --- src/rendering/hwrenderer/utility/hw_cvars.cpp | 3 --- wadsrc/static/menudef.txt | 1 - 2 files changed, 4 deletions(-) diff --git a/src/rendering/hwrenderer/utility/hw_cvars.cpp b/src/rendering/hwrenderer/utility/hw_cvars.cpp index b4d40a407..6b9b699e4 100644 --- a/src/rendering/hwrenderer/utility/hw_cvars.cpp +++ b/src/rendering/hwrenderer/utility/hw_cvars.cpp @@ -87,9 +87,6 @@ CUSTOM_CVAR(Bool, gl_texture_usehires, true, CVAR_ARCHIVE|CVAR_NOINITCALL) CVAR(Bool, gl_precache, false, CVAR_ARCHIVE) -CVAR(Bool, gl_trimsprites, true, CVAR_ARCHIVE); - - //========================================================================== // // Sprite CVARs diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 3c0b3706f..ac1b3fcff 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -2485,7 +2485,6 @@ OptionMenu "GLTextureGLOptions" protected Option "$GLTEXMNU_RESIZESPR", gl_texture_hqresize_sprites, "OnOff" Option "$GLTEXMNU_RESIZEFNT", gl_texture_hqresize_fonts, "OnOff" Option "$GLTEXMNU_PRECACHETEX", gl_precache, "YesNo" - Option "$GLTEXMNU_TRIMSPREDGE", gl_trimsprites, "OnOff" Option "$GLTEXMNU_SORTDRAWLIST", gl_sort_textures, "YesNo" Class "GLTextureGLOptions" } From 3e8395ddafd547c2446cf0ecb7bea78a0c9cc2d9 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 29 Mar 2019 22:29:59 +0100 Subject: [PATCH 02/12] - disabled the subtractive light for the spirits of Hexen's Wraithverge. --- wadsrc_lights/static/filter/hexen/gldefs.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/wadsrc_lights/static/filter/hexen/gldefs.txt b/wadsrc_lights/static/filter/hexen/gldefs.txt index fb6cb49c3..b9f73bec1 100644 --- a/wadsrc_lights/static/filter/hexen/gldefs.txt +++ b/wadsrc_lights/static/filter/hexen/gldefs.txt @@ -337,7 +337,6 @@ object CFlameFloor // Wraithverge flickerlight GHOST { - attenuate 1 color 1.0 1.0 1.0 size 84 secondarysize 78 @@ -347,13 +346,13 @@ flickerlight GHOST object HolyMissile { - frame SPIRP { light GHOST } + //frame SPIRP { light GHOST } } object HolySpirit { - frame SPIRA { light GHOST } - frame SPIRB { light GHOST } + //frame SPIRA { light GHOST } + //frame SPIRB { light GHOST } } // Mage wand From f48e0280d8131ad09ee4a2e0ff311b236924bf27 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 30 Mar 2019 09:25:48 +0100 Subject: [PATCH 03/12] - fixed: OptionMenuItemSafeCommand did not allow unsafe commands. --- wadsrc/static/zscript/ui/menu/optionmenuitems.zs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wadsrc/static/zscript/ui/menu/optionmenuitems.zs b/wadsrc/static/zscript/ui/menu/optionmenuitems.zs index c4b65a46d..faaa39a12 100644 --- a/wadsrc/static/zscript/ui/menu/optionmenuitems.zs +++ b/wadsrc/static/zscript/ui/menu/optionmenuitems.zs @@ -179,7 +179,7 @@ class OptionMenuItemCommand : OptionMenuItemSubmenu override bool Activate() { - // This needs to perform a few checks to prevent abuse by malicious modders. + // This needs to perform a few checks to prevent abuse by malicious modders. if (GetClass() != "OptionMenuItemSafeCommand") { let m = OptionMenu(Menu.GetCurrentMenu()); @@ -188,6 +188,7 @@ class OptionMenuItemCommand : OptionMenuItemSubmenu // don't execute if this item cannot be found in the current menu. if (m.GetItem(mAction) != self) return false; } + else mUnsafe = false; Menu.MenuSound("menu/choose"); DoCommand(ccmd, mUnsafe); if (mCloseOnSelect) From 71caf270393925d88805e5d6781ad65c8bcccadb Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sat, 30 Mar 2019 12:47:34 +0200 Subject: [PATCH 04/12] - made gender string to integer conversion case insensitive https://forum.zdoom.org/viewtopic.php?t=64109 --- src/d_netinfo.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/d_netinfo.cpp b/src/d_netinfo.cpp index 6c449f852..5699f6cc2 100644 --- a/src/d_netinfo.cpp +++ b/src/d_netinfo.cpp @@ -137,14 +137,23 @@ FString D_UnescapeUserInfo (const char *str, size_t len) int D_GenderToInt (const char *gender) { - if (gender[0] == 'f') + switch (gender[0]) + { + case 'F': + case 'f': return GENDER_FEMALE; - else if (gender[0] == 'n') + + case 'N': + case 'n': return GENDER_NEUTER; - else if (gender[0] == 'o') + + case 'O': + case 'o': return GENDER_OBJECT; - else + + default: return GENDER_MALE; + } } int D_PlayerClassToInt (const char *classname) From d40ed5c587e8101f1b68f148c328014c2054fbbc Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 30 Mar 2019 18:12:33 +0100 Subject: [PATCH 05/12] - reverted D_GenderToInt to check full words instead of merely initial letters. --- src/d_netinfo.cpp | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/d_netinfo.cpp b/src/d_netinfo.cpp index 5699f6cc2..0aedc48b2 100644 --- a/src/d_netinfo.cpp +++ b/src/d_netinfo.cpp @@ -137,23 +137,13 @@ FString D_UnescapeUserInfo (const char *str, size_t len) int D_GenderToInt (const char *gender) { - switch (gender[0]) - { - case 'F': - case 'f': - return GENDER_FEMALE; - - case 'N': - case 'n': - return GENDER_NEUTER; - - case 'O': - case 'o': - return GENDER_OBJECT; - - default: - return GENDER_MALE; - } + if (!stricmp(gender, "female")) return GENDER_FEMALE; + if (!stricmp(gender, "neutral")) return GENDER_NEUTER; + if (!stricmp(gender, "neuter")) return GENDER_NEUTER; + if (!stricmp(gender, "other")) return GENDER_OBJECT; + if (!stricmp(gender, "object")) return GENDER_OBJECT; + if (!stricmp(gender, "cyborg")) return GENDER_OBJECT; + return GENDER_MALE; } int D_PlayerClassToInt (const char *classname) From 8a243cf084fdbf1665aad6862399a1e8fb9d7b41 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 30 Mar 2019 18:41:38 +0100 Subject: [PATCH 06/12] - fixed: Sound sequences must be serialized after the sounds. Otherwise their data gets reset by the sound initialization. --- src/p_saveg.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/p_saveg.cpp b/src/p_saveg.cpp index b7584bb1d..31378f27b 100644 --- a/src/p_saveg.cpp +++ b/src/p_saveg.cpp @@ -960,8 +960,7 @@ void FLevelLocals::Serialize(FSerializer &arc, bool hubload) ("scrolls", Scrolls) ("automap", automap) ("interpolator", interpolator) - ("frozenstate", frozenstate) - ("sndseqlisthead", SequenceListHead); + ("frozenstate", frozenstate); // Hub transitions must keep the current total time @@ -1003,6 +1002,8 @@ void FLevelLocals::Serialize(FSerializer &arc, bool hubload) canvasTextureInfo.Serialize(arc); SerializePlayers(arc, hubload); SerializeSounds(arc); + arc("sndseqlisthead", SequenceListHead); + // Regenerate some data that wasn't saved if (arc.isReading()) From f5ad144934042bd2c83ecc56148e42c9998e74b6 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 30 Mar 2019 18:52:32 +0100 Subject: [PATCH 07/12] - fixed: air_finished was sometimes checked against level.time, sometimes against level.maptime. For a per-level effect it needs to always check against level.maptime. --- src/g_statusbar/sbarinfo_commands.cpp | 4 ++-- src/p_acs.cpp | 4 ++-- src/p_mobj.cpp | 2 +- wadsrc/static/zscript/ui/statusbar/statusbar.zs | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/g_statusbar/sbarinfo_commands.cpp b/src/g_statusbar/sbarinfo_commands.cpp index b5a265c65..d96ca66ec 100644 --- a/src/g_statusbar/sbarinfo_commands.cpp +++ b/src/g_statusbar/sbarinfo_commands.cpp @@ -1461,7 +1461,7 @@ class CommandDrawNumber : public CommandDrawString if(statusBar->CPlayer->mo->waterlevel < 3) num = primaryLevel->airsupply/TICRATE; else - num = clamp((statusBar->CPlayer->air_finished - primaryLevel->time + (TICRATE-1))/TICRATE, 0, INT_MAX); + num = clamp((statusBar->CPlayer->air_finished - primaryLevel->maptime + (TICRATE-1))/TICRATE, 0, INT_MAX); break; } case SELECTEDINVENTORY: @@ -2751,7 +2751,7 @@ class CommandDrawBar : public SBarInfoCommand break; } case AIRTIME: - value = clamp(statusBar->CPlayer->air_finished - primaryLevel->time, 0, INT_MAX); + value = clamp(statusBar->CPlayer->air_finished - primaryLevel->maptime, 0, INT_MAX); max = primaryLevel->airsupply; break; case POWERUPTIME: diff --git a/src/p_acs.cpp b/src/p_acs.cpp index f230f57cb..e19a4c78c 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -5419,7 +5419,7 @@ int DLevelScript::CallFunction(int argCount, int funcIndex, int32_t *args) } else { - return Level->Players[args[0]]->air_finished - Level->time; + return Level->Players[args[0]]->air_finished - Level->maptime; } } @@ -5431,7 +5431,7 @@ int DLevelScript::CallFunction(int argCount, int funcIndex, int32_t *args) } else { - Level->Players[args[0]]->air_finished = args[1] + Level->time; + Level->Players[args[0]]->air_finished = args[1] + Level->maptime; return 1; } } diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index d2c00d2a5..fbcb30806 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -4330,7 +4330,7 @@ bool AActor::UpdateWaterLevel(bool dosplash) else if (oldlevel == 3 && waterlevel < 3) { // Our head just came up. - if (player->air_finished > Level->time) + if (player->air_finished > Level->maptime) { // We hadn't run out of air yet. S_Sound(this, CHAN_VOICE, "*surface", 1, ATTN_NORM); diff --git a/wadsrc/static/zscript/ui/statusbar/statusbar.zs b/wadsrc/static/zscript/ui/statusbar/statusbar.zs index 170e26a8d..bce0a763b 100644 --- a/wadsrc/static/zscript/ui/statusbar/statusbar.zs +++ b/wadsrc/static/zscript/ui/statusbar/statusbar.zs @@ -599,7 +599,7 @@ class BaseStatusBar native ui if(CPlayer.mo.waterlevel < 3) return Level.airsupply; else - return max(CPlayer.air_finished - Level.time, 0); + return max(CPlayer.air_finished - Level.maptime, 0); } int GetSelectedInventoryAmount() From 282cce765d20787ea2e2706e733c311c0f24617b Mon Sep 17 00:00:00 2001 From: Nemrtvi <26684396+Nemrtvi@users.noreply.github.com> Date: Sat, 30 Mar 2019 19:20:45 +0100 Subject: [PATCH 08/12] MENUDEF change for new strings in Russian This is to accomodate the grammatical gender system. --- wadsrc/static/menudef.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index ac1b3fcff..194096f0e 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -807,7 +807,7 @@ OptionValue Contrast { 0.0, "$OPTVAL_OFF" 1.0, "$OPTVAL_ON" - 2.0, "$OPTVAL_SMOOTH" + 2.0, "$OPTVAL_SMOOTH_1" } OptionValue Fuzziness @@ -2375,7 +2375,7 @@ OptionValue "Particles" { 0, "$OPTVAL_SQUARE" 1, "$OPTVAL_ROUND" - 2, "$OPTVAL_SMOOTH" + 2, "$OPTVAL_SMOOTH_2" } OptionValue "HqResizeModes" From a768500afae4bce55c031e8b1c7efa807b5ccb14 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 31 Mar 2019 08:16:05 +0200 Subject: [PATCH 09/12] - do not use CalcIndent for 320x200. --- wadsrc/static/zscript/ui/menu/optionmenuitems.zs | 1 + 1 file changed, 1 insertion(+) diff --git a/wadsrc/static/zscript/ui/menu/optionmenuitems.zs b/wadsrc/static/zscript/ui/menu/optionmenuitems.zs index faaa39a12..2ef9e3d6d 100644 --- a/wadsrc/static/zscript/ui/menu/optionmenuitems.zs +++ b/wadsrc/static/zscript/ui/menu/optionmenuitems.zs @@ -80,6 +80,7 @@ class OptionMenuItem : MenuItemBase override int GetIndent() { if (mCentered) return 0; + if (screen.GetWidth() < 640) return screen.GetWidth() / 2; return Menu.OptionWidth(Stringtable.Localize(mLabel)); } From 2dc12aef71263cc500013f2f2b50b1c71751929e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 31 Mar 2019 09:01:21 +0200 Subject: [PATCH 10/12] - removed the NetUpdate calls from the software renderer. These can cause highly dangerous recursions and execute play code deep inside the renderer and since the hardware renderer does not have these, there is very little point for the software renderer to retain them. --- src/rendering/polyrenderer/poly_renderer.cpp | 4 ---- src/rendering/swrenderer/line/r_renderdrawsegment.cpp | 3 --- src/rendering/swrenderer/line/r_walldraw.cpp | 3 --- src/rendering/swrenderer/plane/r_visibleplane.cpp | 2 -- src/rendering/swrenderer/scene/r_portal.cpp | 6 ------ src/rendering/swrenderer/scene/r_scene.cpp | 11 ----------- src/rendering/swrenderer/things/r_playersprite.cpp | 3 --- src/rendering/swrenderer/things/r_sprite.cpp | 3 --- 8 files changed, 35 deletions(-) diff --git a/src/rendering/polyrenderer/poly_renderer.cpp b/src/rendering/polyrenderer/poly_renderer.cpp index b928979c5..491f1b8ee 100644 --- a/src/rendering/polyrenderer/poly_renderer.cpp +++ b/src/rendering/polyrenderer/poly_renderer.cpp @@ -129,8 +129,6 @@ void PolyRenderer::RenderActorView(AActor *actor, bool drawpsprites, bool dontma PolyMaskedCycles.Reset(); PolyDrawerWaitCycles.Reset(); - NetUpdate(); - DontMapLines = dontmaplines; R_SetupFrame(Viewpoint, Viewwindow, actor); @@ -188,8 +186,6 @@ void PolyRenderer::RenderActorView(AActor *actor, bool drawpsprites, bool dontma if (Viewpoint.camera) Viewpoint.camera->renderflags = savedflags; - - NetUpdate(); } void PolyRenderer::RenderRemainingPlayerSprites() diff --git a/src/rendering/swrenderer/line/r_renderdrawsegment.cpp b/src/rendering/swrenderer/line/r_renderdrawsegment.cpp index 5758b08ee..e5ba7f769 100644 --- a/src/rendering/swrenderer/line/r_renderdrawsegment.cpp +++ b/src/rendering/swrenderer/line/r_renderdrawsegment.cpp @@ -70,9 +70,6 @@ namespace swrenderer curline = ds->curline; m3DFloor = clip3DFloor; - if (Thread->MainThread) - NetUpdate(); - frontsector = curline->frontsector; backsector = curline->backsector; diff --git a/src/rendering/swrenderer/line/r_walldraw.cpp b/src/rendering/swrenderer/line/r_walldraw.cpp index ecc143906..7ca3b6ac4 100644 --- a/src/rendering/swrenderer/line/r_walldraw.cpp +++ b/src/rendering/swrenderer/line/r_walldraw.cpp @@ -546,9 +546,6 @@ namespace swrenderer this->additive = additive; this->alpha = alpha; - if (Thread->MainThread) - NetUpdate(); - Thread->PrepareTexture(pic, DefaultRenderStyle()); // Get correct render style? Shaded won't get here. if (rw_pic->GetHeight() != 1 << rw_pic->GetHeightBits()) diff --git a/src/rendering/swrenderer/plane/r_visibleplane.cpp b/src/rendering/swrenderer/plane/r_visibleplane.cpp index 2d5cf854d..828f15bab 100644 --- a/src/rendering/swrenderer/plane/r_visibleplane.cpp +++ b/src/rendering/swrenderer/plane/r_visibleplane.cpp @@ -143,7 +143,5 @@ namespace swrenderer renderer.Render(this, xscale, yscale, alpha, additive, masked, colormap, tex); } } - if (thread->MainThread) - NetUpdate(); } } diff --git a/src/rendering/swrenderer/scene/r_portal.cpp b/src/rendering/swrenderer/scene/r_portal.cpp index eb7763bf4..c7fd72c9d 100644 --- a/src/rendering/swrenderer/scene/r_portal.cpp +++ b/src/rendering/swrenderer/scene/r_portal.cpp @@ -458,14 +458,8 @@ namespace swrenderer int prevuniq2 = CurrentPortalUniq; CurrentPortalUniq = prevuniq; - if (Thread->MainThread) - NetUpdate(); - Thread->TranslucentPass->Render(); // this is required since with portals there often will be cases when more than 80% of the view is inside a portal. - if (Thread->MainThread) - NetUpdate(); - Thread->Clip3D->LeaveSkybox(); // pop 3D floor height map CurrentPortalUniq = prevuniq2; diff --git a/src/rendering/swrenderer/scene/r_scene.cpp b/src/rendering/swrenderer/scene/r_scene.cpp index 562156112..b598f49b0 100644 --- a/src/rendering/swrenderer/scene/r_scene.cpp +++ b/src/rendering/swrenderer/scene/r_scene.cpp @@ -155,8 +155,6 @@ namespace swrenderer CameraLight::Instance()->SetCamera(MainThread()->Viewport->viewpoint, MainThread()->Viewport->RenderTarget, actor); MainThread()->Viewport->SetupFreelook(); - NetUpdate(); - this->dontmaplines = dontmaplines; R_UpdateFuzzPosFrameStart(); @@ -289,9 +287,6 @@ namespace swrenderer thread->OpaquePass->RenderScene(thread->Viewport->Level()); thread->Clip3D->ResetClip(); // reset clips (floor/ceiling) - if (thread->MainThread) - NetUpdate(); - if (viewactive) { thread->PlaneList->Render(); @@ -299,13 +294,7 @@ namespace swrenderer thread->Portal->RenderPlanePortals(); thread->Portal->RenderLinePortals(); - if (thread->MainThread) - NetUpdate(); - thread->TranslucentPass->Render(); - - if (thread->MainThread) - NetUpdate(); } DrawerThreads::Execute(thread->DrawQueue); diff --git a/src/rendering/swrenderer/things/r_playersprite.cpp b/src/rendering/swrenderer/things/r_playersprite.cpp index 94e127ad1..0aefb48a2 100644 --- a/src/rendering/swrenderer/things/r_playersprite.cpp +++ b/src/rendering/swrenderer/things/r_playersprite.cpp @@ -530,8 +530,5 @@ namespace swrenderer drawerargs.DrawMaskedColumn(thread, x, iscale, pic, frac + xiscale / 2, spryscale, sprtopscreen, sprflipvert, mfloorclip, mceilingclip, RenderStyle, false); frac += xiscale; } - - if (thread->MainThread) - NetUpdate(); } } diff --git a/src/rendering/swrenderer/things/r_sprite.cpp b/src/rendering/swrenderer/things/r_sprite.cpp index 5c00ed9fd..1ae8119c2 100644 --- a/src/rendering/swrenderer/things/r_sprite.cpp +++ b/src/rendering/swrenderer/things/r_sprite.cpp @@ -369,8 +369,5 @@ namespace swrenderer } } } - - if (thread->MainThread) - NetUpdate(); } } From ab16d3cd72502661bd2b173eaf1d76adbdf008d7 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 31 Mar 2019 09:13:22 +0200 Subject: [PATCH 11/12] - limit minimum screen size to 640x400. The current menu system simply does not work that well with 320x200, rendering the game hard to use at that tiny screen size. This is a clear case where the work required to keep it operational stands in no relation to the benefit. --- src/posix/cocoa/gl_sysfb.h | 4 ++-- src/posix/sdl/gl_sysfb.h | 4 ++-- src/r_videoscale.cpp | 17 +++++++++-------- src/v_framebuffer.cpp | 4 ++-- src/win32/i_input.cpp | 4 ++-- wadsrc/static/menudef.txt | 1 - 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/posix/cocoa/gl_sysfb.h b/src/posix/cocoa/gl_sysfb.h index a45f448f8..2a2b8a5d2 100644 --- a/src/posix/cocoa/gl_sysfb.h +++ b/src/posix/cocoa/gl_sysfb.h @@ -91,8 +91,8 @@ private: int GetTitleBarHeight() const; - static const int MINIMUM_WIDTH = 320; - static const int MINIMUM_HEIGHT = 200; + static const int MINIMUM_WIDTH = 640; + static const int MINIMUM_HEIGHT = 400; }; #endif // COCOA_GL_SYSFB_H_INCLUDED diff --git a/src/posix/sdl/gl_sysfb.h b/src/posix/sdl/gl_sysfb.h index f7ac38dd3..6b1df1cc3 100644 --- a/src/posix/sdl/gl_sysfb.h +++ b/src/posix/sdl/gl_sysfb.h @@ -47,8 +47,8 @@ protected: void UpdateColors (); - static const int MIN_WIDTH = 320; - static const int MIN_HEIGHT = 200; + static const int MIN_WIDTH = 640; + static const int MIN_HEIGHT = 400; }; #endif // __POSIX_SDL_GL_SYSFB_H__ diff --git a/src/r_videoscale.cpp b/src/r_videoscale.cpp index d6254c992..2a59c4a3b 100644 --- a/src/r_videoscale.cpp +++ b/src/r_videoscale.cpp @@ -32,16 +32,16 @@ extern bool setsizeneeded; EXTERN_CVAR(Int, vid_aspect) -CUSTOM_CVAR(Int, vid_scale_customwidth, 320, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) +CUSTOM_CVAR(Int, vid_scale_customwidth, 640, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) { - if (self < 320) - self = 320; + if (self < 640) + self = 640; setsizeneeded = true; } -CUSTOM_CVAR(Int, vid_scale_customheight, 200, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) +CUSTOM_CVAR(Int, vid_scale_customheight, 400, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) { - if (self < 200) - self = 200; + if (self < 400) + self = 400; setsizeneeded = true; } CVAR(Bool, vid_scale_customlinear, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) @@ -66,7 +66,7 @@ namespace // isValid, isLinear, GetScaledWidth(), GetScaledHeight(), isScaled43, isCustom { true, false, [](uint32_t Width)->uint32_t { return Width; }, [](uint32_t Height)->uint32_t { return Height; }, false, false }, // 0 - Native { true, true, [](uint32_t Width)->uint32_t { return Width; }, [](uint32_t Height)->uint32_t { return Height; }, false, false }, // 1 - Native (Linear) - { true, false, [](uint32_t Width)->uint32_t { return 320; }, [](uint32_t Height)->uint32_t { return 200; }, true, false }, // 2 - 320x200 + { true, false, [](uint32_t Width)->uint32_t { return 640; }, [](uint32_t Height)->uint32_t { return 400; }, true, false }, // 2 - formerly 320x200 { true, false, [](uint32_t Width)->uint32_t { return 640; }, [](uint32_t Height)->uint32_t { return 400; }, true, false }, // 3 - 640x400 { true, true, [](uint32_t Width)->uint32_t { return 1280; }, [](uint32_t Height)->uint32_t { return 800; }, true, false }, // 4 - 1280x800 { true, true, [](uint32_t Width)->uint32_t { return vid_scale_customwidth; }, [](uint32_t Height)->uint32_t { return vid_scale_customheight; }, true, true }, // 5 - Custom @@ -90,7 +90,8 @@ CUSTOM_CVAR(Float, vid_scalefactor, 1.0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR CUSTOM_CVAR(Int, vid_scalemode, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) { setsizeneeded = true; - if (isOutOfBounds(self)) + if (self == 2) self = 3; // block 320x200 setting. + else if (isOutOfBounds(self)) self = 0; } diff --git a/src/v_framebuffer.cpp b/src/v_framebuffer.cpp index ec53fc7e8..3a569cb1d 100644 --- a/src/v_framebuffer.cpp +++ b/src/v_framebuffer.cpp @@ -210,8 +210,8 @@ void DFrameBuffer::Update() int initialHeight = GetClientHeight(); int clientWidth = ViewportScaledWidth(initialWidth, initialHeight); int clientHeight = ViewportScaledHeight(initialWidth, initialHeight); - if (clientWidth < 320) clientWidth = 320; - if (clientHeight < 200) clientHeight = 200; + if (clientWidth < 640) clientWidth = 640; + if (clientHeight < 400) clientHeight = 400; if (clientWidth > 0 && clientHeight > 0 && (GetWidth() != clientWidth || GetHeight() != clientHeight)) { SetVirtualSize(clientWidth, clientHeight); diff --git a/src/win32/i_input.cpp b/src/win32/i_input.cpp index 676484a30..b8f5ba777 100644 --- a/src/win32/i_input.cpp +++ b/src/win32/i_input.cpp @@ -525,8 +525,8 @@ LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) } else { - mmi->ptMinTrackSize.x = 320; - mmi->ptMinTrackSize.y = 200; + mmi->ptMinTrackSize.x = 640; + mmi->ptMinTrackSize.y = 400; } return 0; } diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 194096f0e..ed702e345 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -2132,7 +2132,6 @@ OptionValue ScaleModes { 0, "$OPTVAL_SCALENEAREST" 1, "$OPTVAL_SCALELINEAR" - 2, "320x200" 3, "640x400" 4, "1280x800" 5, "$OPTVAL_CUSTOM" From 3fd449378cd05c4fc0f903c94834e41bb9a6622a Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Sun, 31 Mar 2019 03:38:15 -0400 Subject: [PATCH 12/12] - replace the lost 320x200 resolution with 960x600 --- src/gameconfigfile.cpp | 11 +++++++++++ src/r_videoscale.cpp | 7 +++---- src/version.h | 2 +- wadsrc/static/menudef.txt | 3 ++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index ee52313ce..20da4c699 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -487,6 +487,17 @@ void FGameConfigFile::DoGlobalSetup () } } } + if (last < 217) + { + auto var = FindCVar("vid_scalemode", NULL); + UCVarValue newvalue; + newvalue.Int = 2; + if (var != NULL) + { + UCVarValue v = var->GetGenericRep(CVAR_Int); + if (v.Int == 3) var->SetGenericRep(newvalue, CVAR_Int); + } + } } } } diff --git a/src/r_videoscale.cpp b/src/r_videoscale.cpp index 2a59c4a3b..fbd7393c5 100644 --- a/src/r_videoscale.cpp +++ b/src/r_videoscale.cpp @@ -66,8 +66,8 @@ namespace // isValid, isLinear, GetScaledWidth(), GetScaledHeight(), isScaled43, isCustom { true, false, [](uint32_t Width)->uint32_t { return Width; }, [](uint32_t Height)->uint32_t { return Height; }, false, false }, // 0 - Native { true, true, [](uint32_t Width)->uint32_t { return Width; }, [](uint32_t Height)->uint32_t { return Height; }, false, false }, // 1 - Native (Linear) - { true, false, [](uint32_t Width)->uint32_t { return 640; }, [](uint32_t Height)->uint32_t { return 400; }, true, false }, // 2 - formerly 320x200 - { true, false, [](uint32_t Width)->uint32_t { return 640; }, [](uint32_t Height)->uint32_t { return 400; }, true, false }, // 3 - 640x400 + { true, false, [](uint32_t Width)->uint32_t { return 640; }, [](uint32_t Height)->uint32_t { return 400; }, true, false }, // 2 - 640x400 (formerly 320x200) + { true, true, [](uint32_t Width)->uint32_t { return 960; }, [](uint32_t Height)->uint32_t { return 600; }, true, false }, // 3 - 960x600 (formerly 640x400) { true, true, [](uint32_t Width)->uint32_t { return 1280; }, [](uint32_t Height)->uint32_t { return 800; }, true, false }, // 4 - 1280x800 { true, true, [](uint32_t Width)->uint32_t { return vid_scale_customwidth; }, [](uint32_t Height)->uint32_t { return vid_scale_customheight; }, true, true }, // 5 - Custom }; @@ -90,8 +90,7 @@ CUSTOM_CVAR(Float, vid_scalefactor, 1.0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR CUSTOM_CVAR(Int, vid_scalemode, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) { setsizeneeded = true; - if (self == 2) self = 3; // block 320x200 setting. - else if (isOutOfBounds(self)) + if (isOutOfBounds(self)) self = 0; } diff --git a/src/version.h b/src/version.h index 146947c84..5c9b2c936 100644 --- a/src/version.h +++ b/src/version.h @@ -60,7 +60,7 @@ const char *GetVersionString(); // Version stored in the ini's [LastRun] section. // Bump it if you made some configuration change that you want to // be able to migrate in FGameConfigFile::DoGlobalSetup(). -#define LASTRUNVERSION "216" +#define LASTRUNVERSION "217" // Protocol version used in demos. // Bump it if you change existing DEM_ commands or add new ones. diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index ed702e345..37053129d 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -2132,7 +2132,8 @@ OptionValue ScaleModes { 0, "$OPTVAL_SCALENEAREST" 1, "$OPTVAL_SCALELINEAR" - 3, "640x400" + 2, "640x400" + 3, "960x600" 4, "1280x800" 5, "$OPTVAL_CUSTOM" }