From 864b99a5a0533a61a9a586823738a17f32f8364e Mon Sep 17 00:00:00 2001 From: Nemrtvi Date: Sun, 3 Mar 2019 15:41:05 +0100 Subject: [PATCH 01/15] =?UTF-8?q?Split=20=E2=80=9CLinear=E2=80=9D=20option?= =?UTF-8?q?=20value=20into=20three?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This option value is used for 4 different options, and splitting it up into three will allow for languages based on grammatical gender systems to have different endings. Necessary for e.g. Russian in order to sound correctly. The corresponding strings are already in the language spreadsheet. --- wadsrc/static/menudef.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 7463f9d0f..8e4f76838 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -1755,7 +1755,7 @@ OptionString SpeakerModes OptionString Resamplers { "NoInterp", "$OPTSTR_NOINTERPOLATION" - "Linear", "$OPTVAL_LINEAR" + "Linear", "$OPTVAL_LINEAR_1" "Cubic", "$OPTVAL_CUBIC" "Spline", "$OPTSTR_SPLINE" } @@ -1893,7 +1893,7 @@ OptionValue ModReplayers OptionValue ModQuality { 0.0, "$OPTVAL_ALIASING" - 1.0, "$OPTVAL_LINEAR" + 1.0, "$OPTVAL_LINEAR_1" 2.0, "$OPTVAL_CUBIC" 3.0, "$OPTVAL_BLEP" // Band-limited step 4.0, "$OPTVAL_LINEARSLOW" @@ -2224,7 +2224,7 @@ OptionValue "FilterModes" 1, "$OPTVAL_NONENEARESTMIPMAP" 5, "$OPTVAL_NONELINEARMIPMAP" 6, "$OPTVAL_NONETRILINEAR" - 2, "$OPTVAL_LINEAR" + 2, "$OPTVAL_LINEAR_2" 3, "$OPTVAL_BILINEAR" 4, "$OPTVAL_TRILINEAR" } @@ -2235,7 +2235,7 @@ OptionValue "TonemapModes" 1, "$OPTVAL_UNCHARTED2" 2, "$OPTVAL_HEJLDAWSON" 3, "$OPTVAL_REINHARD" - 4, "$OPTVAL_LINEAR" + 4, "$OPTVAL_LINEAR_3" 5, "$OPTVAL_PALETTE" } From 974560cb8458d4708d5380e6f3dbc2d692e0192d Mon Sep 17 00:00:00 2001 From: Nemrtvi <26684396+Nemrtvi@users.noreply.github.com> Date: Sun, 3 Mar 2019 15:35:38 +0100 Subject: [PATCH 02/15] Add Kerning for Strife BIGFONT --- wadsrc_extra/static/filter/game-strife/fonts/bigfont/font.inf | 1 + 1 file changed, 1 insertion(+) create mode 100644 wadsrc_extra/static/filter/game-strife/fonts/bigfont/font.inf diff --git a/wadsrc_extra/static/filter/game-strife/fonts/bigfont/font.inf b/wadsrc_extra/static/filter/game-strife/fonts/bigfont/font.inf new file mode 100644 index 000000000..2f71f387c --- /dev/null +++ b/wadsrc_extra/static/filter/game-strife/fonts/bigfont/font.inf @@ -0,0 +1 @@ +Kerning -1 From 8fab907885719a374839d4743a99b5c5fb17825d Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Sun, 3 Mar 2019 01:49:21 -0500 Subject: [PATCH 03/15] - set language cvar to global config, it should not be game-specific --- src/g_cvars.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_cvars.cpp b/src/g_cvars.cpp index 7aac035d0..560effae7 100644 --- a/src/g_cvars.cpp +++ b/src/g_cvars.cpp @@ -129,7 +129,7 @@ CUSTOM_CVAR(Float, teamdamage, 0.f, CVAR_SERVERINFO | CVAR_NOINITCALL) } } -CUSTOM_CVAR(String, language, "auto", CVAR_ARCHIVE | CVAR_NOINITCALL) +CUSTOM_CVAR(String, language, "auto", CVAR_ARCHIVE | CVAR_NOINITCALL | CVAR_GLOBALCONFIG) { SetLanguageIDs(); GStrings.UpdateLanguage(); From 52ab4b968f381588f2e43ebfa75d055840b91e4c Mon Sep 17 00:00:00 2001 From: Christopher Bruns Date: Thu, 28 Feb 2019 21:19:09 -0800 Subject: [PATCH 04/15] Remove Quad-buffered from list of VR-modes if we know it won't work. --- src/d_main.cpp | 1 + src/menu/menu.h | 2 ++ src/menu/menudef.cpp | 28 +++++++++++++++++++++++ src/rendering/gl/renderer/gl_stereo3d.cpp | 3 +++ src/v_video.h | 1 - src/win32/gl_sysfb.cpp | 9 -------- src/win32/win32basevideo.cpp | 2 -- src/win32/win32glvideo.cpp | 9 +++++++- 8 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index f73049397..365b54938 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2635,6 +2635,7 @@ void D_DoomMain (void) V_Init2(); UpdateJoystickMenu(NULL); + UpdateVRModes(); v = Args->CheckValue ("-loadgame"); if (v) diff --git a/src/menu/menu.h b/src/menu/menu.h index 43a96f812..c2c54862a 100644 --- a/src/menu/menu.h +++ b/src/menu/menu.h @@ -363,4 +363,6 @@ DMenuItemBase * CreateListMenuItemPatch(double x, double y, int height, int hotk DMenuItemBase * CreateListMenuItemText(double x, double y, int height, int hotkey, const char *text, FFont *font, PalEntry color1, PalEntry color2, FName command, int param); DMenuItemBase * CreateOptionMenuItemCommand(const char *label, FName cmd, bool centered = false); +void UpdateVRModes(bool considerQuadBuffered=true); + #endif diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index e3df4fbf0..80515d779 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -1724,3 +1724,31 @@ fail: } } } + + +#ifdef _WIN32 +EXTERN_CVAR(Bool, vr_enable_quadbuffered) +#endif + +void UpdateVRModes(bool considerQuadBuffered) +{ + FOptionValues ** pVRModes = OptionValues.CheckKey("VRMode"); + if (pVRModes == nullptr) return; + + TArray & vals = (*pVRModes)->mValues; + TArray filteredValues; + int cnt = vals.Size(); + for (int i = 0; i < cnt; ++i) { + auto const & mode = vals[i]; + if (mode.Value == 7) { // Quad-buffered stereo +#ifdef _WIN32 + if (!vr_enable_quadbuffered) continue; +#else + continue +#endif + if (!considerQuadBuffered) continue; // Probably no compatible screen mode was found + } + filteredValues.Push(mode); + } + vals = filteredValues; +} diff --git a/src/rendering/gl/renderer/gl_stereo3d.cpp b/src/rendering/gl/renderer/gl_stereo3d.cpp index 6baaa801f..35ea3c914 100644 --- a/src/rendering/gl/renderer/gl_stereo3d.cpp +++ b/src/rendering/gl/renderer/gl_stereo3d.cpp @@ -34,6 +34,7 @@ #include "gl/system/gl_framebuffer.h" #include "hwrenderer/postprocessing/hw_presentshader.h" #include "hwrenderer/postprocessing/hw_present3dRowshader.h" +#include "menu/menu.h" EXTERN_CVAR(Int, vr_mode) EXTERN_CVAR(Float, vid_saturation) @@ -283,6 +284,8 @@ bool FGLRenderer::QuadStereoCheckInitialRenderContextState() // Now check whether this context supports hardware stereo glGetBooleanv(GL_STEREO, &supportsStereo); bQuadStereoSupported = supportsStereo && supportsBuffered; + if (! bQuadStereoSupported) + UpdateVRModes(false); } } return bQuadStereoSupported; diff --git a/src/v_video.h b/src/v_video.h index b4ecdeb9c..b56c4e727 100644 --- a/src/v_video.h +++ b/src/v_video.h @@ -361,7 +361,6 @@ public: float glslversion = 0; // This is here so that the differences between old OpenGL and new OpenGL/Vulkan can be handled by platform independent code. int instack[2] = { 0,0 }; // this is globally maintained state for portal recursion avoidance. int stencilValue = 0; // Global stencil test value - bool enable_quadbuffered = false; // Quad-buffered stereo available? unsigned int uniformblockalignment = 256; // Hardware dependent uniform buffer alignment. unsigned int maxuniformblock = 65536; const char *gl_vendorstring; // On OpenGL (not Vulkan) we have to account for some issues with Intel. diff --git a/src/win32/gl_sysfb.cpp b/src/win32/gl_sysfb.cpp index bc704bd69..3ac1d7cf7 100644 --- a/src/win32/gl_sysfb.cpp +++ b/src/win32/gl_sysfb.cpp @@ -56,14 +56,6 @@ extern HWND Window; PFNWGLSWAPINTERVALEXTPROC myWglSwapIntervalExtProc; -// For broadest GL compatibility, require user to explicitly enable quad-buffered stereo mode. -// Setting vr_enable_quadbuffered_stereo does not automatically invoke quad-buffered stereo, -// but makes it possible for subsequent "vr_mode 7" to invoke quad-buffered stereo -CUSTOM_CVAR(Bool, vr_enable_quadbuffered, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) -{ - Printf("You must restart " GAMENAME " to switch quad stereo mode\n"); -} - //========================================================================== // // Windows framebuffer @@ -111,7 +103,6 @@ SystemGLFrameBuffer::SystemGLFrameBuffer(void *hMonitor, bool fullscreen) : Syst } } ReleaseDC(Window, hDC); - enable_quadbuffered = vr_enable_quadbuffered; } //========================================================================== diff --git a/src/win32/win32basevideo.cpp b/src/win32/win32basevideo.cpp index 090b0bb1d..2d8ee7a2f 100644 --- a/src/win32/win32basevideo.cpp +++ b/src/win32/win32basevideo.cpp @@ -55,8 +55,6 @@ CVAR(Int, vid_adapter, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) -EXTERN_CVAR(Bool, vr_enable_quadbuffered) - //========================================================================== // // diff --git a/src/win32/win32glvideo.cpp b/src/win32/win32glvideo.cpp index 9104e546b..e283c700c 100644 --- a/src/win32/win32glvideo.cpp +++ b/src/win32/win32glvideo.cpp @@ -54,7 +54,6 @@ #include "gl/system/gl_framebuffer.h" EXTERN_CVAR(Int, vid_adapter) -EXTERN_CVAR(Bool, vr_enable_quadbuffered) EXTERN_CVAR(Bool, vid_hdr) CUSTOM_CVAR(Bool, gl_debug, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) @@ -62,6 +61,14 @@ CUSTOM_CVAR(Bool, gl_debug, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINI Printf("This won't take effect until " GAMENAME " is restarted.\n"); } +// For broadest GL compatibility, require user to explicitly enable quad-buffered stereo mode. +// Setting vr_enable_quadbuffered_stereo does not automatically invoke quad-buffered stereo, +// but makes it possible for subsequent "vr_mode 7" to invoke quad-buffered stereo +CUSTOM_CVAR(Bool, vr_enable_quadbuffered, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) +{ + Printf("You must restart " GAMENAME " to switch quad stereo mode\n"); +} + extern bool vid_hdr_active; // these get used before GLEW is initialized so we have to use separate pointers with different names From 73c7afe409294f227db05e8e05b36d71cf7e7a27 Mon Sep 17 00:00:00 2001 From: Christopher Bruns Date: Fri, 1 Mar 2019 04:10:35 -0800 Subject: [PATCH 05/15] Fix typo and add clarifying comment. --- src/menu/menudef.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index 80515d779..a0113de27 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -1744,7 +1744,7 @@ void UpdateVRModes(bool considerQuadBuffered) #ifdef _WIN32 if (!vr_enable_quadbuffered) continue; #else - continue + continue; // Remove quad-buffered option on Mac and Linux #endif if (!considerQuadBuffered) continue; // Probably no compatible screen mode was found } From 068522f9c888e6d8faa79f05f9930cf0ff5d75f4 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Sun, 3 Mar 2019 10:53:21 -0500 Subject: [PATCH 06/15] - fix building on FreeBSD --- src/gamedata/resourcefiles/file_wad.cpp | 1 + src/intermission/intermission_parse.cpp | 1 + src/r_data/voxels.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/src/gamedata/resourcefiles/file_wad.cpp b/src/gamedata/resourcefiles/file_wad.cpp index f34138e62..d3aab7d5e 100644 --- a/src/gamedata/resourcefiles/file_wad.cpp +++ b/src/gamedata/resourcefiles/file_wad.cpp @@ -33,6 +33,7 @@ ** */ +#include #include "resourcefile.h" #include "v_text.h" #include "w_wad.h" diff --git a/src/intermission/intermission_parse.cpp b/src/intermission/intermission_parse.cpp index bc1ccb7ba..5c4e0cedc 100644 --- a/src/intermission/intermission_parse.cpp +++ b/src/intermission/intermission_parse.cpp @@ -34,6 +34,7 @@ */ +#include #include "intermission/intermission.h" #include "g_level.h" #include "w_wad.h" diff --git a/src/r_data/voxels.cpp b/src/r_data/voxels.cpp index a9eb9eb68..8017f2c4d 100644 --- a/src/r_data/voxels.cpp +++ b/src/r_data/voxels.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include "m_swap.h" #include "m_argv.h" From 43ec2cf8f20c9c3e34eadb9edd71b70cd80d7c7b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Mar 2019 20:08:45 +0100 Subject: [PATCH 07/15] . added the missing Cyrillic letters to the console font. --- wadsrc/static/fonts/consolefont/0400.png | Bin 2073 -> 1306 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/wadsrc/static/fonts/consolefont/0400.png b/wadsrc/static/fonts/consolefont/0400.png index d3f3786eed6c88af93f7068731763ed5a9932be5..a1f00c3d7ccb9be8b3babfcb7183c907637ec43d 100644 GIT binary patch delta 1240 zcmV;}1Sk8M5Sj{*7zqRe0000h+HZ}KAwGWqBv4FLMF0T*fPjFHkB|H)&WxhW!_I_Z1K8chg1^NKu1m*$=Oe}!Gqym&MTtE?HXa0Xm zS9Oz=ymvkv&U+SBoSvQ@VV6~`X_2RoB2Q0p|9pH1AM?|P^}lg#srwxW;pOF%2yXe| zu;(bxm}e3ML4FX~=eCTgN}m6*mpqevpYKK5wjqk63ZOGE5h)t{cyTPYL7Fm%)ig!Z zhW1!A8|*<**{K?0lro+$#~#EM*rb2#%59XchWa|MiHzebvA(Tu zK8mczQN@BA*LB>DdRvdm8eFgAZD;GKLqUcIM(EcsKH?8h#nZQd2uO!4Lr#DF%2a&) zv#R|32PBhwz(&DWFdp*Ub7Y$_IcFU*2g&dC(ry~kC`w+bf!6fUZZ=2e$hq-;Y_YaE zwhgYp8S6LH!M1Y^kXN!E1LBj-qjOG_u?yrq#^|t_>!5cH5TrhVUsdGs(8z!4iIq{m zvN&mFRg(^8erFvFf#Xou7n^^9bAtSv3ZMs85VpgZ1=j|n-E}eUc9tjSg!8|?jbR5& zd#D{}mK+<;@>M^Z9qkG>{ZD=%zse8ZK?beyZdz!ZU-HbmjYTnO0%ampgYEGIbufSNFWb(}d+>iMPw<5| zen22+60Qy9EMmnGCratlI&rgdUEN4BUDWzef*_3EB zQDa(>O~ZfHJYs+86FYs3)%(Pg@W5cB*`d+&8q-KuLM`9-i6D8Eygel0k9{H=&6LbD z#QMaF2M6`@U7tu^)z65me%mKruJ!C0OP?5iQJppnF*z+TGc7PPR5CC+FflqcGAl4KIxsLszCcp|000045bDP46hOx7_4S6Fo+k-*%fHRz`)E9;1l8sRKUo{*w@$B z-`_uf{`~dp*YDrI|NQy$_wV0-|NcEtb`*?;z%UL0wcD-oz%0N}666>Be`EuO;P33J zz^LXd@Q5sCVBk9h!i=ICUJXD&i4xa{lHmNblJdl&REC1Y%)Ao4ywnl}6Foyc(-ijz zVClph?CIhd65;-K`op5z20YD=ReUdhuTS9p;SjX%^}lzwc1Id>3bmvh)f9cdt*#NAXFl}1Sf$Nm zbK&)z?O&5*4n3~edrk6Y!-NZa+5{~99jt;(966>7^RGW$6(79$?zQL73s3aiKjZ8X zu`^h3N>KL#!+TU-)TYISY&V(<2-<{aSy)DyF?wVyoBYb*}=sBgi3sZUCjA>sCtvf1-&@-DQl zI?woE!?noQA1iX2)+hX$ls-9ZX<_QVRrl83Ui$9!4yRk*${RlK^Y0X__#snJJ+DQ! zb-M58ZEMb+6JK{>lbzlZ_4ll&Q*A|S_$rilzb}8%b=M@nChA7!*YcQ!-G>g`+UZ`h z<5@9ZK<=Hu3%u(VADa35b_&-mvpZib*ReLNxXhv!oar~MxWTbmtzlub>7Bb<*2IQf zR9snOz;v#4`|>h7n?SKGS1k{G2%i|;c9V6^UKy=(t-*EAIGH|8=J%hnb5nc)-=7a3 z*uE6|&Y!>G2H%=BP5QgNTBr1!Js#y?apl6n<>mpknyd9sp5^!Tixk!>pJk_JsQX%V zQ{TEZ?m5s1o5TFhd*zP6Tf1k?ol{hCPuL{Fr+KA7@0GunLe8^p?#MQq&up?wIP_)c z*Ub4$FJs%Ena&CNE-YX)Q(L0;+0{E1{``Jtk69k*Fa7$G^Cp94t-Q!w`SMGDhd37ws#9=hylY~?{baZgYQ2d zN$PImJGj3>-r?c3CRuLe`jp6)IX-4Q8nYt)Y#_- iwl-!n|NqT)?HBWzRL(ZGJx#HoBG}W_&t;ucLK6UNH}ReT From 0fb940632a502e9c4ce19d414122b94308fd3555 Mon Sep 17 00:00:00 2001 From: Christopher Bruns Date: Sun, 3 Mar 2019 09:35:38 -0800 Subject: [PATCH 08/15] Reduce number of blits required in stereo 3D by tracking current eye. --- src/rendering/gl/renderer/gl_postprocess.cpp | 24 ++++++------------- .../gl/renderer/gl_renderbuffers.cpp | 21 ++++++++++++---- src/rendering/gl/renderer/gl_renderbuffers.h | 5 +++- src/rendering/gl/renderer/gl_scene.cpp | 10 ++++---- src/rendering/gl/renderer/gl_stereo3d.cpp | 6 +++++ 5 files changed, 40 insertions(+), 26 deletions(-) diff --git a/src/rendering/gl/renderer/gl_postprocess.cpp b/src/rendering/gl/renderer/gl_postprocess.cpp index 6b8c5c2e6..aa7d7cb19 100644 --- a/src/rendering/gl/renderer/gl_postprocess.cpp +++ b/src/rendering/gl/renderer/gl_postprocess.cpp @@ -121,20 +121,11 @@ void FGLRenderer::BlurScene(float gameinfobluramount) mBuffers->UpdateEffectTextures(); auto vrmode = VRMode::GetVRMode(true); - if (vrmode->mEyeCount == 1) + int eyeCount = vrmode->mEyeCount; + for (int i = 0; i < eyeCount; ++i) { mBuffers->RenderEffect("BlurScene"); - } - else - { - for (int eye_ix = 0; eye_ix < vrmode->mEyeCount; ++eye_ix) - { - FGLDebug::PushGroup("EyeBlur"); - mBuffers->BlitFromEyeTexture(eye_ix); - mBuffers->RenderEffect("BlurScene"); - mBuffers->BlitToEyeTexture(eye_ix); - FGLDebug::PopGroup(); - } + if (eyeCount - i > 1) mBuffers->NextEye(eyeCount); } } @@ -159,13 +150,12 @@ void FGLRenderer::Flush() else { // Render 2D to eye textures - for (int eye_ix = 0; eye_ix < vrmode->mEyeCount; ++eye_ix) + int eyeCount = vrmode->mEyeCount; + for (int eye_ix = 0; eye_ix < eyeCount; ++eye_ix) { - FGLDebug::PushGroup("Eye2D"); - mBuffers->BlitFromEyeTexture(eye_ix); screen->Draw2D(); - mBuffers->BlitToEyeTexture(eye_ix); - FGLDebug::PopGroup(); + if (eyeCount - eye_ix > 1) + mBuffers->NextEye(eyeCount); } screen->Clear2D(); diff --git a/src/rendering/gl/renderer/gl_renderbuffers.cpp b/src/rendering/gl/renderer/gl_renderbuffers.cpp index 4dd9f95be..73c33e961 100644 --- a/src/rendering/gl/renderer/gl_renderbuffers.cpp +++ b/src/rendering/gl/renderer/gl_renderbuffers.cpp @@ -532,7 +532,7 @@ void FGLRenderBuffers::BlitSceneToTexture() // //========================================================================== -void FGLRenderBuffers::BlitToEyeTexture(int eye) +void FGLRenderBuffers::BlitToEyeTexture(int eye, bool allowInvalidate) { CreateEyeBuffers(eye); @@ -540,7 +540,7 @@ void FGLRenderBuffers::BlitToEyeTexture(int eye) glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mEyeFBs[eye].handle); glBlitFramebuffer(0, 0, mWidth, mHeight, 0, 0, mWidth, mHeight, GL_COLOR_BUFFER_BIT, GL_NEAREST); - if ((gl.flags & RFL_INVALIDATE_BUFFER) != 0) + if ((gl.flags & RFL_INVALIDATE_BUFFER) != 0 && allowInvalidate) { GLenum attachments[2] = { GL_COLOR_ATTACHMENT0, GL_DEPTH_STENCIL_ATTACHMENT }; glInvalidateFramebuffer(GL_READ_FRAMEBUFFER, 2, attachments); @@ -552,7 +552,7 @@ void FGLRenderBuffers::BlitToEyeTexture(int eye) void FGLRenderBuffers::BlitFromEyeTexture(int eye) { - CreateEyeBuffers(eye); + if (mEyeFBs.Size() <= unsigned(eye)) return; glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mPipelineFB[mCurrentPipelineTexture].handle); glBindFramebuffer(GL_READ_FRAMEBUFFER, mEyeFBs[eye].handle); @@ -1002,4 +1002,17 @@ void FGLRenderBuffers::RenderEffect(const FString &name) FGLDebug::PopGroup(); } -} \ No newline at end of file + +// Store the current stereo 3D eye buffer, and Load the next one + +int FGLRenderBuffers::NextEye(int eyeCount) +{ + int nextEye = (mCurrentEye + 1) % eyeCount; + if (nextEye == mCurrentEye) return mCurrentEye; + BlitToEyeTexture(mCurrentEye); + mCurrentEye = nextEye; + BlitFromEyeTexture(mCurrentEye); + return mCurrentEye; +} + +} // namespace OpenGLRenderer \ No newline at end of file diff --git a/src/rendering/gl/renderer/gl_renderbuffers.h b/src/rendering/gl/renderer/gl_renderbuffers.h index b4b018516..4b66e7569 100644 --- a/src/rendering/gl/renderer/gl_renderbuffers.h +++ b/src/rendering/gl/renderer/gl_renderbuffers.h @@ -87,9 +87,11 @@ public: void BindOutputFB(); - void BlitToEyeTexture(int eye); + void BlitToEyeTexture(int eye, bool allowInvalidate=true); void BlitFromEyeTexture(int eye); void BindEyeTexture(int eye, int texunit); + int NextEye(int eyeCount); + int & CurrentEye() { return mCurrentEye; } void BindDitherTexture(int texunit); @@ -156,6 +158,7 @@ private: // Eye buffers TArray mEyeTextures; TArray mEyeFBs; + int mCurrentEye = 0; // Shadow map texture PPGLTexture mShadowMapTexture; diff --git a/src/rendering/gl/renderer/gl_scene.cpp b/src/rendering/gl/renderer/gl_scene.cpp index c62203be9..764355d00 100644 --- a/src/rendering/gl/renderer/gl_scene.cpp +++ b/src/rendering/gl/renderer/gl_scene.cpp @@ -163,9 +163,11 @@ sector_t * FGLRenderer::RenderViewpoint (FRenderViewpoint &mainvp, AActor * came // Render (potentially) multiple views for stereo 3d // Fixme. The view offsetting should be done with a static table and not require setup of the entire render state for the mode. auto vrmode = VRMode::GetVRMode(mainview && toscreen); - for (int eye_ix = 0; eye_ix < vrmode->mEyeCount; ++eye_ix) + const int eyeCount = vrmode->mEyeCount; + mBuffers->CurrentEye() = 0; // always begin at zero, in case eye count changed + for (int eye_ix = 0; eye_ix < eyeCount; ++eye_ix) { - const auto &eye = vrmode->mEyes[eye_ix]; + const auto &eye = vrmode->mEyes[mBuffers->CurrentEye()]; screen->SetViewportRects(bounds); if (mainview) // Bind the scene frame buffer and turn on draw buffers used by ssao @@ -218,8 +220,8 @@ sector_t * FGLRenderer::RenderViewpoint (FRenderViewpoint &mainvp, AActor * came PostProcess.Unclock(); } di->EndDrawInfo(); - if (vrmode->mEyeCount > 1) - mBuffers->BlitToEyeTexture(eye_ix); + if (eyeCount - eye_ix > 1) + mBuffers->NextEye(eyeCount); } return mainvp.sector; diff --git a/src/rendering/gl/renderer/gl_stereo3d.cpp b/src/rendering/gl/renderer/gl_stereo3d.cpp index 35ea3c914..08cb4fbef 100644 --- a/src/rendering/gl/renderer/gl_stereo3d.cpp +++ b/src/rendering/gl/renderer/gl_stereo3d.cpp @@ -327,6 +327,12 @@ void FGLRenderer::PresentQuadStereo() void FGLRenderer::PresentStereo() { + auto vrmode = VRMode::GetVRMode(true); + const int eyeCount = vrmode->mEyeCount; + // Don't invalidate the bound framebuffer (..., false) + if (eyeCount > 1) + mBuffers->BlitToEyeTexture(mBuffers->CurrentEye(), false); + switch (vr_mode) { default: From 63277346599b6b32088864d51bce4f8ee2fac032 Mon Sep 17 00:00:00 2001 From: Major Cooke Date: Sun, 3 Mar 2019 13:26:00 -0600 Subject: [PATCH 09/15] Added CanTouchItem virtual. - Allows an actor with +PICKUP flag to determine if it can pick up specific items or not. --- wadsrc/static/zscript/actors/actor.zs | 9 +++++++++ wadsrc/static/zscript/actors/inventory/inventory.zs | 3 +++ 2 files changed, 12 insertions(+) diff --git a/wadsrc/static/zscript/actors/actor.zs b/wadsrc/static/zscript/actors/actor.zs index 7e10aaf23..4fd3d46e3 100644 --- a/wadsrc/static/zscript/actors/actor.zs +++ b/wadsrc/static/zscript/actors/actor.zs @@ -460,6 +460,15 @@ class Actor : Thinker native native void Substitute(Actor replacement); native ui void DisplayNameTag(); + // Called by inventory items to see if this actor is capable of touching them. + // If true, the item will attempt to be picked up. Useful for things like + // allowing morphs to pick up limited items such as keys while preventing + // them from picking other items up. + virtual bool CanTouchItem(Inventory item) + { + return true; + } + // Called by PIT_CheckThing to check if two actors actually can collide. virtual bool CanCollideWith(Actor other, bool passive) { diff --git a/wadsrc/static/zscript/actors/inventory/inventory.zs b/wadsrc/static/zscript/actors/inventory/inventory.zs index b6dcea9a6..e8b984d02 100644 --- a/wadsrc/static/zscript/actors/inventory/inventory.zs +++ b/wadsrc/static/zscript/actors/inventory/inventory.zs @@ -768,6 +768,9 @@ class Inventory : Actor bool localview = toucher.CheckLocalView(); + if (!toucher.CanTouchItem(self)) + return; + bool res; [res, toucher] = CallTryPickup(toucher); if (!res) return; From a3554bda7021a7e376ab7fc8e0155f1482046f56 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Mon, 4 Mar 2019 17:35:38 +0200 Subject: [PATCH 10/15] - replaced all usages of insecure vsprintf() function --- src/posix/cocoa/i_system.mm | 2 +- src/posix/sdl/i_system.cpp | 2 +- src/sound/timidity/timidity.cpp | 2 +- src/win32/i_crash.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/posix/cocoa/i_system.mm b/src/posix/cocoa/i_system.mm index e40202fc3..8ef18d985 100644 --- a/src/posix/cocoa/i_system.mm +++ b/src/posix/cocoa/i_system.mm @@ -180,7 +180,7 @@ void I_Error (const char *error, ...) va_start(argptr, error); - vsprintf (errortext, error, argptr); + myvsnprintf (errortext, MAX_ERRORTEXT, error, argptr); va_end (argptr); throw CRecoverableError(errortext); } diff --git a/src/posix/sdl/i_system.cpp b/src/posix/sdl/i_system.cpp index 9303fc6eb..a9c94ba1f 100644 --- a/src/posix/sdl/i_system.cpp +++ b/src/posix/sdl/i_system.cpp @@ -229,7 +229,7 @@ void I_Error (const char *error, ...) va_start(argptr, error); - vsprintf (errortext, error, argptr); + myvsnprintf (errortext, MAX_ERRORTEXT, error, argptr); va_end (argptr); throw CRecoverableError(errortext); } diff --git a/src/sound/timidity/timidity.cpp b/src/sound/timidity/timidity.cpp index b100a1e5d..22ec94d97 100644 --- a/src/sound/timidity/timidity.cpp +++ b/src/sound/timidity/timidity.cpp @@ -828,7 +828,7 @@ void cmsg(int type, int verbosity_level, const char *fmt, ...) char buf[1024]; va_list args; va_start(args, fmt); - vsprintf(buf, fmt, args); + myvsnprintf(buf, sizeof buf, fmt, args); va_end(args); I_DebugPrint(buf); #endif diff --git a/src/win32/i_crash.cpp b/src/win32/i_crash.cpp index 4918910ce..689e8a2b3 100644 --- a/src/win32/i_crash.cpp +++ b/src/win32/i_crash.cpp @@ -433,7 +433,7 @@ void Writef (HANDLE file, const char *format, ...) DWORD len; va_start (args, format); - len = vsprintf (buffer, format, args); + len = myvsnprintf (buffer, sizeof buffer, format, args); va_end (args); WriteFile (file, buffer, len, &len, NULL); } From 614c23d4f2608cd74e700fc801962edfab460e27 Mon Sep 17 00:00:00 2001 From: Nemrtvi <26684396+Nemrtvi@users.noreply.github.com> Date: Mon, 4 Mar 2019 15:34:33 +0100 Subject: [PATCH 11/15] Extra Bulgarian letters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also added a slightly improved Й for Russian (and Bulgarian too). --- .../filter/game-doom/fonts/bigfont/040D.lmp | Bin 0 -> 357 bytes .../filter/game-doom/fonts/bigupper/040D.lmp | Bin 0 -> 395 bytes .../filter/game-doom/fonts/bigupper/045D.lmp | Bin 0 -> 357 bytes .../game-doom/fonts/defsmallfont/040D.lmp | Bin 0 -> 138 bytes .../game-doom/fonts/defsmallfont/0419.lmp | Bin 137 -> 138 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigfont/040D.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigupper/040D.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigupper/045D.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/040D.lmp diff --git a/wadsrc_extra/static/filter/game-doom/fonts/bigfont/040D.lmp b/wadsrc_extra/static/filter/game-doom/fonts/bigfont/040D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..7a1953dcce5fcfdfb6598375bcb37368cdff3a21 GIT binary patch literal 357 zcmYk1-3@|35QJAa!M_I*Td)ONFg}9j+-x{Q;KgJsum#Jo35&1@d$0nWJs@$CkB7|cz`E(fj9VoFGy!ZTd)IrZ~zzJR{E#jtyM#4qB_;yZB$Fo{tQ)N zG~6VCL210VU=XQmsj3*HLY1#mxA#?R;koKb;4U-O*7F(O%pr)TMGgzcmP=5|s<~M* zoTiC&Wzi9_&>UM^frg*Nt?2aP>kupu$1}6o{%L&ag>l2&j1_oo3w8F~Y&CR^jXz!b BYq0xKAdbMEIw} zv-D*7i8e%(=mq%|yn|2h1y0}_{D5CTGolUHf@iP;2k-&XyIwnVJ#W#%8+H^ej@V|=w2TW9b+W-In literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/bigupper/045D.lmp b/wadsrc_extra/static/filter/game-doom/fonts/bigupper/045D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d3091f1e4ded43e4db367dda905cbb8a9f1cf4e2 GIT binary patch literal 357 zcmYk1-3@|35QG;v!M_I*Td)ONFg}9j+-x{Q;KgJsum#Jo35&1@d$0nXJs@$CkB7#p0-QL%og=eZqfxF06JI^P0i9--g^8yx*EtjH{RSUCZ zIL%V)%A+G`EuwQ8-H2d BYpwtQ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/040D.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/040D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..291a02ac2f459c15442415775afc808af70b7d86 GIT binary patch literal 138 zcmYL>%ME}q3`0{6&{4SMzyd750xZA)48TrJ`cXSvFjXZiy~vgvd-6nNw&HGJ2M0L8 v1#a+wY33m#4_70^j3B}qHJ2VzO5Ad3J)l)Je{bd%W=#^p@FEhwlKW?0rtK@( literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0419.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0419.lmp index b22264c4ab927d2e02be5b645a31b872df8367e0..dc99c3e314db192924872c83e87cd87a044945e0 100644 GIT binary patch delta 74 zcmeBV>|#{qVBlb2VEF%E14tSJu{{v`0C6M`rvY&>5Z6ys)t20(zkB delta 73 zcmeBT>||8sVBlb2U|?j>0FuT)Y!AdfKpY9gX+T^A#B~!@wI#Od@7}&+x4!;=1`d6F R{astO14;e=jO-IL6# Date: Mon, 4 Mar 2019 17:31:11 +0100 Subject: [PATCH 12/15] - fixed macro substitution. It was retrieving the macro from the wrong string. --- src/gamedata/stringtable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gamedata/stringtable.cpp b/src/gamedata/stringtable.cpp index a892992e1..8d3344a0e 100644 --- a/src/gamedata/stringtable.cpp +++ b/src/gamedata/stringtable.cpp @@ -354,7 +354,7 @@ void FStringTable::InsertString(int langid, FName label, const FString &string) Printf("Bad macro in %s : %s\n", strlangid, label.GetChars()); break; } - FString macroname(string.GetChars() + index + 2, endindex - index - 2); + FString macroname(te.strings[0].GetChars() + index + 2, endindex - index - 2); FStringf lookupstr("%s/%s", strlangid, macroname.GetChars()); FStringf replacee("@[%s]", macroname.GetChars()); FName lookupname(lookupstr, true); From 77cb9ae86677ef0ae2c6610a8bc0dde8cbd8fde4 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sun, 3 Mar 2019 12:01:00 +0700 Subject: [PATCH 13/15] added MakeScreenShot and MakeAutoSave functions to FLevelLocals --- src/g_game.cpp | 23 ++++++++++++++++++++++- src/g_game.h | 2 +- wadsrc/static/language.enu | 1 + wadsrc/static/menudef.txt | 1 + wadsrc/static/zscript/base.zs | 2 ++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/g_game.cpp b/src/g_game.cpp index 861b506a8..32563b9c9 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -108,6 +108,7 @@ CVAR (Bool, storesavepic, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (Bool, longsavemessages, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (String, save_dir, "", CVAR_ARCHIVE|CVAR_GLOBALCONFIG); CVAR (Bool, cl_waitforsave, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG); +CVAR (Bool, enablescriptscreenshot, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG); EXTERN_CVAR (Float, con_midtime); //========================================================================== @@ -1715,7 +1716,7 @@ void G_DoPlayerPop(int playernum) players[playernum].DestroyPSprites(); } -void G_ScreenShot (char *filename) +void G_ScreenShot (const char *filename) { shotfile = filename; gameaction = ga_screenshot; @@ -2876,6 +2877,26 @@ DEFINE_ACTION_FUNCTION(FLevelLocals, StartSlideshow) return 0; } +DEFINE_ACTION_FUNCTION(FLevelLocals, MakeScreenShot) +{ + if (enablescriptscreenshot) + { + G_ScreenShot(""); + } + return 0; +} + +void G_MakeAutoSave() +{ + gameaction = ga_autosave; +} + +DEFINE_ACTION_FUNCTION(FLevelLocals, MakeAutoSave) +{ + G_MakeAutoSave(); + return 0; +} + DEFINE_GLOBAL(players) DEFINE_GLOBAL(playeringame) DEFINE_GLOBAL(PlayerClasses) diff --git a/src/g_game.h b/src/g_game.h index a21c80cc6..baedc0627 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -95,7 +95,7 @@ bool G_CheckDemoStatus (void); void G_Ticker (void); bool G_Responder (event_t* ev); -void G_ScreenShot (char *filename); +void G_ScreenShot (const char* filename); void G_StartSlideshow(FLevelLocals *Level, FName whichone); FString G_BuildSaveName (const char *prefix, int slot); diff --git a/wadsrc/static/language.enu b/wadsrc/static/language.enu index 0c76ada36..c9e7da9f1 100644 --- a/wadsrc/static/language.enu +++ b/wadsrc/static/language.enu @@ -1986,6 +1986,7 @@ MISCMNU_ALLCHEATS = "Enable cheats from all games"; MISCMNU_ENABLEAUTOSAVES = "Enable autosaves"; MISCMNU_AUTOSAVECOUNT = "Number of autosaves"; MISCMNU_SAVELOADCONFIRMATION = "Save/Load confirmation"; +MISCMNU_ENABLESCRIPTSCREENSHOTS = "Enable making screenshots by scripts"; MISCMNU_DEHLOAD = "Load *.deh/*.bex lumps"; MISCMNU_CACHENODES = "Cache nodes"; MISCMNU_CACHETIME = "Time threshold for node caching"; diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 8e4f76838..403123db7 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -1131,6 +1131,7 @@ OptionMenu "MiscOptions" protected Option "$MISCMNU_SAVELOADCONFIRMATION", "saveloadconfirmation", "OnOff" Slider "$MISCMNU_AUTOSAVECOUNT", "autosavecount", 1, 20, 1, 0 Option "$MISCMNU_DEHLOAD", "dehload", "dehopt" + Option "$MISCMNU_ENABLESCRIPTSCREENSHOTS", "enablescriptscreenshot", "OnOff" Option "$MISCMNU_INTERSCROLL", "nointerscrollabort", "OffOn" StaticText " " Option "$MISCMNU_CACHENODES", "gl_cachenodes", "OnOff" diff --git a/wadsrc/static/zscript/base.zs b/wadsrc/static/zscript/base.zs index e5619b0d7..f7b36ab03 100644 --- a/wadsrc/static/zscript/base.zs +++ b/wadsrc/static/zscript/base.zs @@ -711,6 +711,8 @@ struct LevelLocals native native play int ExecuteSpecial(int special, Actor activator, line linedef, bool lineside, int arg1 = 0, int arg2 = 0, int arg3 = 0, int arg4 = 0, int arg5 = 0); native void GiveSecret(Actor activator, bool printmsg = true, bool playsound = true); native void StartSlideshow(Name whichone = 'none'); + native static void MakeScreenShot(); + native static void MakeAutoSave(); native void WorldDone(); deprecated("3.8") static void RemoveAllBots(bool fromlist) { /* intentionally left as no-op. */ } native ui Vector2 GetAutomapPosition(); From 97ae74081a0e461885aa1c59ac9edd9b5027f826 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 4 Mar 2019 20:06:19 +0100 Subject: [PATCH 14/15] - special remapping for the Hungarian double accented letters. Instead of entirely stripping away the accent when they are not found, let's go to the Umlaut-variants first. --- src/gamedata/fonts/font.cpp | 12 ++++++++++++ src/gamedata/fonts/v_font.cpp | 13 +++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/gamedata/fonts/font.cpp b/src/gamedata/fonts/font.cpp index 92ebb03ed..195195316 100644 --- a/src/gamedata/fonts/font.cpp +++ b/src/gamedata/fonts/font.cpp @@ -751,12 +751,24 @@ int FFont::GetCharCode(int code, bool needpic) const } } + code = originalcode; if (myislower(code)) { int upper = upperforlower[code]; // Stripping accents did not help - now try uppercase for lowercase if (upper != code) return GetCharCode(upper, needpic); } + + // Same for the uppercase character. Since we restart at the accented version this must go through the entire thing again. + while ((newcode = stripaccent(code)) != code) + { + code = newcode; + if (code >= FirstChar && code <= LastChar && (!needpic || Chars[code - FirstChar].TranslatedPic != nullptr)) + { + return code; + } + } + } return -1; diff --git a/src/gamedata/fonts/v_font.cpp b/src/gamedata/fonts/v_font.cpp index 9218c5d19..bd88bf48f 100644 --- a/src/gamedata/fonts/v_font.cpp +++ b/src/gamedata/fonts/v_font.cpp @@ -838,8 +838,17 @@ int stripaccent(int code) } else if (code >= 0x100 && code < 0x180) { - static const char accentless[] = "AaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnnNnOoOoOoOoRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZz "; - return accentless[code -0x100]; + // For the double-accented Hungarian letters it makes more sense to first map them to the very similar looking Umlauts. + // (And screw the crappy specs here that do not allow UTF-8 multibyte characters here.) + if (code == 0x150) code = 0xd6; + else if (code == 0x151) code = 0xf6; + else if (code == 0x170) code = 0xdc; + else if (code == 0x171) code = 0xfc; + else + { + static const char accentless[] = "AaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnnNnOoOoOoOoRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZz "; + return accentless[code - 0x100]; + } } else if (code >= 0x200 && code < 0x21c) { From 077ba290a61f547be0d3222cb2ef6a44f8f78dac Mon Sep 17 00:00:00 2001 From: Nemrtvi <26684396+Nemrtvi@users.noreply.github.com> Date: Mon, 4 Mar 2019 21:11:39 +0100 Subject: [PATCH 15/15] Hungarian character set (all games) --- .../filter/game-doom/fonts/bigfont/0150.lmp | Bin 0 -> 369 bytes .../filter/game-doom/fonts/bigfont/0170.lmp | Bin 0 -> 352 bytes .../filter/game-doom/fonts/bigupper/0150.lmp | Bin 0 -> 438 bytes .../filter/game-doom/fonts/bigupper/0151.lmp | Bin 0 -> 369 bytes .../filter/game-doom/fonts/bigupper/0170.lmp | Bin 0 -> 392 bytes .../filter/game-doom/fonts/bigupper/0171.lmp | Bin 0 -> 352 bytes .../filter/game-doom/fonts/defsmallfont/0150.lmp | Bin 0 -> 134 bytes .../filter/game-doom/fonts/defsmallfont/0170.lmp | Bin 0 -> 136 bytes .../filter/game-heretic/fonts/defbigfont/0150.lmp | Bin 0 -> 307 bytes .../filter/game-heretic/fonts/defbigfont/0170.lmp | Bin 0 -> 281 bytes .../game-heretic/fonts/defsmallfont/0150.lmp | Bin 0 -> 175 bytes .../game-heretic/fonts/defsmallfont/0170.lmp | Bin 0 -> 178 bytes .../filter/game-hexen/fonts/defbigfont/0150.lmp | Bin 0 -> 307 bytes .../filter/game-hexen/fonts/defbigfont/0170.lmp | Bin 0 -> 281 bytes .../filter/game-hexen/fonts/defsmallfont/0150.lmp | Bin 0 -> 175 bytes .../filter/game-hexen/fonts/defsmallfont/0170.lmp | Bin 0 -> 178 bytes .../filter/game-strife/fonts/bigfont/0150.lmp | Bin 0 -> 457 bytes .../filter/game-strife/fonts/bigfont/0170.lmp | Bin 0 -> 391 bytes .../game-strife/fonts/defsmallfont/0150.lmp | Bin 0 -> 168 bytes .../game-strife/fonts/defsmallfont/0170.lmp | Bin 0 -> 161 bytes 20 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigfont/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigfont/0170.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigupper/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigupper/0151.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigupper/0170.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/bigupper/0171.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0170.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0170.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0170.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0170.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0170.lmp create mode 100644 wadsrc_extra/static/filter/game-strife/fonts/bigfont/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-strife/fonts/bigfont/0170.lmp create mode 100644 wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/0150.lmp create mode 100644 wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/0170.lmp diff --git a/wadsrc_extra/static/filter/game-doom/fonts/bigfont/0150.lmp b/wadsrc_extra/static/filter/game-doom/fonts/bigfont/0150.lmp new file mode 100644 index 0000000000000000000000000000000000000000..171243b997cf9bfb3dacae52dc9c8755f5ba751c GIT binary patch literal 369 zcmYk2%}oO_5QQfskSGc$lt2?ykwZ3?HL`Xi%T^9(Zgh|u=z${AM4F%pZswa^{w#eS z`|0_O?MK;)$U=6^5h}dG8Q$O>E^vhp_=L?&xOS2`bWP9>9^zhn*9*1=N6FtpEJ>uZ- z==9SrdgPB7PX8jyWQ^1%+bJ?89A;_o`?~0nx$kq%C6`g0yTSZvT)fm;{7U0XHD$Km NV)}(rh_?3oH(&Zea_ay9 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/bigfont/0170.lmp b/wadsrc_extra/static/filter/game-doom/fonts/bigfont/0170.lmp new file mode 100644 index 0000000000000000000000000000000000000000..caeb814acb732cae5d39aa0adba8013bdffe3f2f GIT binary patch literal 352 zcmY+AK~BRk5Je}gk*WeETMof3y6BRCtjLOyWh?4p)*PW{=pA|m&cGQs12+h7Y=O#1 zFVXz``D3S-UPPQ6czT%O9ZqnD3w*#Qe8D%kPUI1uU=Oe0Hu_hK+p12vlzA?Qi@Q}F zN~_~lpQ%W{zQ>gcU5X*jD65_7_?zd4jMO=#pnAvq*#x;!eF<+(8CX=65utj#Z8A?y zvMF!L-9w9M;W;LA^(`splsILY%qV6g%%>^lk|V1ZS=X_8pAnh!n$@lw!W5b2`||Hs F`~V3`Z+!p& literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/bigupper/0150.lmp b/wadsrc_extra/static/filter/game-doom/fonts/bigupper/0150.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d0b7ca0b5cc4391aebc639d940a114cc08d91c51 GIT binary patch literal 438 zcmYk2OHM;E3`JAgLJ{Jlb``9GEg+%lsY=w;sbxxp#10rUWXzZmJ75#6f?Y6p9KR1D z(uthw8z=TMtU?I0aLbR_H_|OaJDybNM6^4U@@aDAdg+B|63%{d@iN$l~Bq`+u^(SNM;j literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/bigupper/0151.lmp b/wadsrc_extra/static/filter/game-doom/fonts/bigupper/0151.lmp new file mode 100644 index 0000000000000000000000000000000000000000..46ae3284253c900a4f203ea613dd911c8762ca96 GIT binary patch literal 369 zcmYk2%}oO_5QS$6kSGc$l#nJ;MGjdkYh>+4mMsowZs~v;=z$_=f+lE!oAb>sf0jOv z{q+3C_JeFiq>}@4gbHVPfme8gcldx$_<~I*vV%PwV1Q>>UE4I;?TT8)aip}HwOQ>W zqp#oFV^EEuAJ{JL@MKlYDfAiT>fTH(C}tMwQnzH4>`2~*9$uT!<1wB7L{D>3PdGR{ zIsLSY9{D4Nr+<-UHb!cb?Hm~s4zo1+eO>g(JPbMKlFKA6++hARE?#Oaex>Q9nlf8& NG5-aJKH&?_@C`rUI*|u>geQ0dx7AB6?nZUWrOb0dT-;7| zD6I}xeWoJ)`VLnrbSZ{7qpbF-<6oX1GE(P|g6b{r7ZYTo`WoJwGO(yBBSQ6f+hm@a zWK-UfyZaW?!gEaK>RVFGDRIg)nNiG0m`_v8B}Y~-vaVzGJ|i;cHLG1Wgefx3_vPQO F_yq+#Z+ZX# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0150.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0150.lmp new file mode 100644 index 0000000000000000000000000000000000000000..ef9d7a9c930c34845188651d08ee3a5281b347d9 GIT binary patch literal 134 zcmd;J;9y{2U}Vq$lKMbw0mLpq90VpuFvw1U^wFNG-YwLEfGA57=+yn+jpb1c80spTeUjP6A literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0170.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0170.lmp new file mode 100644 index 0000000000000000000000000000000000000000..286bb67caa78487472fb95c492e43a76428a6847 GIT binary patch literal 136 zcmd;J;9y{2U}Vq$l7>KR4aDw190J6NK%57}RY1(dq7MfDnOODpw{PF2um7Ks9VoJC q>sAn(fkR(^E0DW+JD9V1Ge|L%1CrSSRmKjI*#_3mzz9?VHx>Y2rX)51 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0150.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0150.lmp new file mode 100644 index 0000000000000000000000000000000000000000..f6cd1266bcb533fe4651d1802ab2e4ce7ccf8605 GIT binary patch literal 307 zcmXwz>kYy%4208%+fXPH|5<0F)V5-vZbBi z#c5Aq~0@+Kd0Y@FL{W0We+5_(|PWXe&sbUW2JAy$EoW-kJ$t<1$io9mPt zkuc~gB%nAi!Z~`n?bs^AN1vDQhL-?BpL5DplbP1AiOn#0!5coHQIdNbg1aB+&m~DMOj1>j%f6s&cCX0`>$S@x)s+d7jz0sdDw0YZ a`}>v4sbFe`Yu&bfJ+6Bn4E;}yfcgS~i4lMR literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0170.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0170.lmp new file mode 100644 index 0000000000000000000000000000000000000000..bba7182b0cd5c8a8acdf8c1528af3854a128ce01 GIT binary patch literal 178 zcmYL?!3o1K5CqRQYhix^LI@EMM)=`R8b|@DARVNJRFDqRK{{1N$|DDJoTS;)Vyl@A zcA;P426uSC6JGF!4@{$|x%WCcDk-0(IxJFAP9bibY;~?gB`>u{nhKR`&8scRd9ky320_o6G?93%%nJ-~a#s literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0150.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0150.lmp new file mode 100644 index 0000000000000000000000000000000000000000..56403ea019b0cb3a7ba458dc6764780c925bd2cc GIT binary patch literal 307 zcmXwz-3`Jp4207kx1mrZ-dTVhcxM4NU<Ecz`E(0R?aH0bek8DV@OuFKi2FzukR_5ZM&2`F+ zNEmb#5>T8M;T%2Pc5Id5qt8ot!%G06&pG9)$xLh5#AX_Rn3k3r7KV9d{j#^m|58KG M!@r%|v9)iNFWbC`H2?qr literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0150.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0150.lmp new file mode 100644 index 0000000000000000000000000000000000000000..f50c6baed93f890980f5e07a1fb2049018732728 GIT binary patch literal 175 zcmXAiu?@p83Srd!Y(BoAvkrg!^|AP7oO(JR8 a=_8l5NNOf4%yZu!!`45Be$$WC6|^6#)Di^% literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0170.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0170.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2645b6c756c17926f2561a4120908443719811a1 GIT binary patch literal 178 zcmYL?(Fwyq3`3m+B9xE(l;gOgTs%M*$N-(78+3+F&<(mlH@(WqM+Hw{Tf(%(%m%y3 zcX1aF@f0ud79a5y(+FukypJGR(XK!r2sm2JWz%E}=>;_bakLpo#D&BJl-MW^4{QJU V=I&=(@f9_vd}Q^FR528l{sZ995?cTO literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-strife/fonts/bigfont/0150.lmp b/wadsrc_extra/static/filter/game-strife/fonts/bigfont/0150.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e077f255bd98a9128edfa0899a18a80af1702a51 GIT binary patch literal 457 zcmZ{g%?*M;5QPU(5K)Oii?9$;5IlL*yA@CXzn&%@?ZAsy3(z`j!?V5tOcZpJZ^OK| z%-bECCPbvr8v6$9KnOB$1ZQvqcklp~LNo<4umvGFfD^cYD=<}-^)z(sX_Cly*I>?4 zZ|TP|D&0i2a8dd}gjyRg=krP^l#T_(5h+RhAXv#MbtG*?O;hH$Qd>QQ@ZJ%bd5Fw7 zSQY0LalFFHm@SPtDh)z>?v_9OaL`8D)ttVB{|T~-pvKi`T;?=hLTwm`X}+7v+0_U1 LJ-*MuzK8t+MK7qt literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-strife/fonts/bigfont/0170.lmp b/wadsrc_extra/static/filter/game-strife/fonts/bigfont/0170.lmp new file mode 100644 index 0000000000000000000000000000000000000000..1bcdb1e732bb81d84c77893ffd9b0e9125a8aaaf GIT binary patch literal 391 zcmZXQO%8%E5JroX7!(Q0(qniByaRqSHUZ-#ugSbl zzD}B`RB>hC2u|PvZr~0c;0a#f4Ya4!8f-ub&fp4yfWFo1kf?2~ZMg6C9Nl)8wbAyp3K!@s~(Cn*iT3s{R9^*p!_B literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/0150.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/0150.lmp new file mode 100644 index 0000000000000000000000000000000000000000..3d2e0b7da249d6d9824f57ba2a477bb58b4fa2f4 GIT binary patch literal 168 zcmXwy(FuSs3Q3%Gy-xSh!!da<dM;SyU$;6ytffY8` x;eZn^xFKha^L9P+2}>o+EnEgw<3=KwIUydw{kIxwjdiPeIH5#Mt0%1e_W_?uInw|D literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/0170.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/0170.lmp new file mode 100644 index 0000000000000000000000000000000000000000..826cb05ae5bce50f0660ac4e6f30245ac0be4780 GIT binary patch literal 161 zcmXwx!4ZHU3waISccvab1VoI9Kj6_hiBGurHI}CrSUVo|{4ee9$dV@ppW9cZ9KbCekr2qf` literal 0 HcmV?d00001