From cd5443484aea4104bd084fd152c24ca1ab6b01c8 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 7 Sep 2020 23:03:18 +0200 Subject: [PATCH 01/17] - fixed the cutscenes in Exhumed by cleaning up the definition data. Fixes #351 --- source/exhumed/src/2d.cpp | 59 +++++++++++++++++++++++---------- source/exhumed/src/gameloop.cpp | 2 +- source/exhumed/src/object.cpp | 5 +++ 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/source/exhumed/src/2d.cpp b/source/exhumed/src/2d.cpp index 870877956..44ef25f7e 100644 --- a/source/exhumed/src/2d.cpp +++ b/source/exhumed/src/2d.cpp @@ -898,6 +898,33 @@ bool TextOverlay::AdvanceCinemaText(double clock) // //--------------------------------------------------------------------------- +enum EScenes +{ + CINEMA_BEFORE_LEVEL_5, + CINEMA_AFTER_LEVEL_10, + CINEMA_BEFORE_LEVEL_11, + CINEMA_AFTER_LEVEL_15, + CINEMA_LOSE_SCENE, + CINEMA_AFTER_LEVEL_20, +}; + +struct CinemaDef +{ + short tile; + short palette; + short text; + short track; +}; + +static CinemaDef cinemas[] = { + { 3449, 3, 2, 2}, + { 3451, 5, 4, 3}, + { 3454, 1, 3, 4}, + { 3446, 7, 6, 6}, + { 3445, 4, 7, 7}, + { 3448, 6, 8, 8} +}; + static const char * const cinpalfname[] = { "3454.pal", "3452.pal", @@ -948,17 +975,13 @@ class DCinema : public DScreenJob public: DCinema(int nVal, int checklevel = -1) : DScreenJob(fadein|fadeout) { - static const short cinematiles[] = { 3454, 3452, 3449, 3445, 3451, 3448, 3446}; - static const int8_t bxvals[] = { 4, 0, 2, 7, 3, 8, 6 }; - static const int8_t dxvals[] = { 4, -1, 2, -1, 3, 8, 6 }; - - if (nVal < 1 || nVal >7) return; - cinematile = cinematiles[nVal-1]; - currentCinemaPalette = nVal; - edx = dxvals[nVal - 1]; + if (nVal < 0 || nVal >5) return; + cinematile = cinemas[nVal].tile; + currentCinemaPalette = cinemas[nVal].palette; text.Start(0); - text.ReadyCinemaText(bxvals[nVal - 1]); - text.SetPalette(nVal); + text.ReadyCinemaText(cinemas[nVal].text); + text.SetPalette(currentCinemaPalette); + edx = cinemas[nVal].track; check = checklevel; } @@ -1273,9 +1296,7 @@ void DoGameOverScene(bool finallevel) if (finallevel) { - playCDtrack(9, false); - //FadeToWhite(); - job = { Create(4) }; + job = { Create(CINEMA_LOSE_SCENE) }; } else { @@ -1289,15 +1310,19 @@ void DoGameOverScene(bool finallevel) void DoAfterCinemaScene(int nLevel, TArray& jobs) { - static const uint8_t nAfterScene[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 6 }; - if (nAfterScene[nLevel]) jobs.Push({ Create(nAfterScene[nLevel]) }); + int scene = -1; + if (nLevel == 10) scene = CINEMA_AFTER_LEVEL_10; + if (nLevel == 15) scene = CINEMA_AFTER_LEVEL_15; + if (nLevel == 20) scene = CINEMA_AFTER_LEVEL_20; + if (scene > 0) jobs.Push({ Create(scene) }); + if (nLevel == 19) jobs.Push({ Create() }); if (nLevel == 20) jobs.Push({ Create() }); } void DoBeforeCinemaScene(int nLevel, TArray& jobs) { - if (nLevel == 5) jobs.Push({ Create(3) }); - else if (nLevel == 11) jobs.Push({ Create(1, 11) }); + if (nLevel == 5) jobs.Push({ Create(CINEMA_BEFORE_LEVEL_5) }); + else if (nLevel == 11) jobs.Push({ Create(CINEMA_BEFORE_LEVEL_11, 11) }); } END_PS_NS diff --git a/source/exhumed/src/gameloop.cpp b/source/exhumed/src/gameloop.cpp index 253569074..c838686c9 100644 --- a/source/exhumed/src/gameloop.cpp +++ b/source/exhumed/src/gameloop.cpp @@ -86,7 +86,7 @@ static void FinishLevel(int lnum, TArray &jobs) } else nPlayerLives[0] = 0; - DoAfterCinemaScene(lnum, jobs); + DoAfterCinemaScene(lnum-1, jobs); } diff --git a/source/exhumed/src/object.cpp b/source/exhumed/src/object.cpp index da52fdf36..c9aeecd84 100644 --- a/source/exhumed/src/object.cpp +++ b/source/exhumed/src/object.cpp @@ -2706,3 +2706,8 @@ static SavegameHelper sgh("objects", nullptr); END_PS_NS + +CCMD(endit) +{ + Powerslave::EndLevel = 13; +} From 1b46a6fd9a4a4eaad728c86f0ff618ed26e89367 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 7 Sep 2020 23:17:06 +0200 Subject: [PATCH 02/17] - removed bogus assert in buffer code. An empty buffer is a perfectly valid construct that may not be asserted upon. The 3D scene does not use indices so the buffer receives no data and remains empty. This made the softpoly renderer fail in debug builds. Performance issues aside it works fine now. Fixes #314 --- source/common/rendering/hwrenderer/data/buffers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/common/rendering/hwrenderer/data/buffers.h b/source/common/rendering/hwrenderer/data/buffers.h index 51110c72c..8ef57174e 100644 --- a/source/common/rendering/hwrenderer/data/buffers.h +++ b/source/common/rendering/hwrenderer/data/buffers.h @@ -56,7 +56,7 @@ public: virtual void Resize(size_t newsize) = 0; virtual void Map() {} // Only needed by old OpenGL but this needs to be in the interface. virtual void Unmap() {} - void *Memory() { assert(map); return map; } + void *Memory() { return map; } size_t Size() { return buffersize; } }; From bf761af9aa8b4f251c50feb11e4570b78a75ec80 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 7 Sep 2020 23:32:58 +0200 Subject: [PATCH 03/17] - added missing terminator to Base64 encoder. --- source/thirdparty/src/base64.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/source/thirdparty/src/base64.cpp b/source/thirdparty/src/base64.cpp index 16b2c2e36..e7099711a 100644 --- a/source/thirdparty/src/base64.cpp +++ b/source/thirdparty/src/base64.cpp @@ -89,6 +89,7 @@ TArray base64_encode(unsigned char const* bytes_to_encode, size_t in_le while((i++ < 3)) reta.Push('='); + reta.Push(0); } return reta; From 29d990991ba3860a4502c7c053ac6ccb5006cc6e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 01:12:23 +0200 Subject: [PATCH 04/17] - dug out Dynamo's BigFont for Exhumed from the forum. This is not the font from GDX, it was a separate creation. The only character in here from GDX is the question mark because it was missing. --- source/common/engine/palettecontainer.cpp | 14 +++++++++++++- source/exhumed/src/object.cpp | 4 ---- .../static/filter/exhumed/fonts/BigFont/0021.lmp | Bin 0 -> 104 bytes .../static/filter/exhumed/fonts/BigFont/0022.lmp | Bin 0 -> 116 bytes .../static/filter/exhumed/fonts/BigFont/0023.lmp | Bin 0 -> 161 bytes .../static/filter/exhumed/fonts/BigFont/0024.lmp | Bin 0 -> 235 bytes .../static/filter/exhumed/fonts/BigFont/0025.lmp | Bin 0 -> 204 bytes .../static/filter/exhumed/fonts/BigFont/0027.lmp | Bin 0 -> 77 bytes .../static/filter/exhumed/fonts/BigFont/0028.lmp | Bin 0 -> 167 bytes .../static/filter/exhumed/fonts/BigFont/0029.lmp | Bin 0 -> 171 bytes .../static/filter/exhumed/fonts/BigFont/002B.lmp | Bin 0 -> 164 bytes .../static/filter/exhumed/fonts/BigFont/002C.lmp | Bin 0 -> 72 bytes .../static/filter/exhumed/fonts/BigFont/002D.lmp | Bin 0 -> 116 bytes .../static/filter/exhumed/fonts/BigFont/002E.lmp | Bin 0 -> 56 bytes .../static/filter/exhumed/fonts/BigFont/002F.lmp | Bin 0 -> 157 bytes .../static/filter/exhumed/fonts/BigFont/0030.lmp | Bin 0 -> 250 bytes .../static/filter/exhumed/fonts/BigFont/0031.lmp | Bin 0 -> 156 bytes .../static/filter/exhumed/fonts/BigFont/0032.lmp | Bin 0 -> 230 bytes .../static/filter/exhumed/fonts/BigFont/0033.lmp | Bin 0 -> 257 bytes .../static/filter/exhumed/fonts/BigFont/0034.lmp | Bin 0 -> 189 bytes .../static/filter/exhumed/fonts/BigFont/0035.lmp | Bin 0 -> 268 bytes .../static/filter/exhumed/fonts/BigFont/0036.lmp | Bin 0 -> 269 bytes .../static/filter/exhumed/fonts/BigFont/0037.lmp | Bin 0 -> 198 bytes .../static/filter/exhumed/fonts/BigFont/0038.lmp | Bin 0 -> 251 bytes .../static/filter/exhumed/fonts/BigFont/0039.lmp | Bin 0 -> 269 bytes .../static/filter/exhumed/fonts/BigFont/003A.lmp | Bin 0 -> 84 bytes .../static/filter/exhumed/fonts/BigFont/003B.lmp | Bin 0 -> 100 bytes .../static/filter/exhumed/fonts/BigFont/003C.lmp | Bin 0 -> 181 bytes .../static/filter/exhumed/fonts/BigFont/003D.lmp | Bin 0 -> 143 bytes .../static/filter/exhumed/fonts/BigFont/003E.lmp | Bin 0 -> 181 bytes .../static/filter/exhumed/fonts/BigFont/003F.lmp | Bin 0 -> 147 bytes .../static/filter/exhumed/fonts/BigFont/0041.lmp | Bin 0 -> 230 bytes .../static/filter/exhumed/fonts/BigFont/0042.lmp | Bin 0 -> 232 bytes .../static/filter/exhumed/fonts/BigFont/0043.lmp | Bin 0 -> 241 bytes .../static/filter/exhumed/fonts/BigFont/0044.lmp | Bin 0 -> 259 bytes .../static/filter/exhumed/fonts/BigFont/0045.lmp | Bin 0 -> 249 bytes .../static/filter/exhumed/fonts/BigFont/0046.lmp | Bin 0 -> 184 bytes .../static/filter/exhumed/fonts/BigFont/0047.lmp | Bin 0 -> 247 bytes .../static/filter/exhumed/fonts/BigFont/0048.lmp | Bin 0 -> 205 bytes .../static/filter/exhumed/fonts/BigFont/0049.lmp | Bin 0 -> 90 bytes .../static/filter/exhumed/fonts/BigFont/004A.lmp | Bin 0 -> 174 bytes .../static/filter/exhumed/fonts/BigFont/004B.lmp | Bin 0 -> 224 bytes .../static/filter/exhumed/fonts/BigFont/004C.lmp | Bin 0 -> 164 bytes .../static/filter/exhumed/fonts/BigFont/004D.lmp | Bin 0 -> 249 bytes .../static/filter/exhumed/fonts/BigFont/004E.lmp | Bin 0 -> 216 bytes .../static/filter/exhumed/fonts/BigFont/004F.lmp | Bin 0 -> 288 bytes .../static/filter/exhumed/fonts/BigFont/0050.lmp | Bin 0 -> 189 bytes .../static/filter/exhumed/fonts/BigFont/0051.lmp | Bin 0 -> 316 bytes .../static/filter/exhumed/fonts/BigFont/0052.lmp | Bin 0 -> 228 bytes .../static/filter/exhumed/fonts/BigFont/0053.lmp | Bin 0 -> 230 bytes .../static/filter/exhumed/fonts/BigFont/0054.lmp | Bin 0 -> 175 bytes .../static/filter/exhumed/fonts/BigFont/0055.lmp | Bin 0 -> 239 bytes .../static/filter/exhumed/fonts/BigFont/0056.lmp | Bin 0 -> 177 bytes .../static/filter/exhumed/fonts/BigFont/0057.lmp | Bin 0 -> 294 bytes .../static/filter/exhumed/fonts/BigFont/0058.lmp | Bin 0 -> 225 bytes .../static/filter/exhumed/fonts/BigFont/0059.lmp | Bin 0 -> 179 bytes .../static/filter/exhumed/fonts/BigFont/005A.lmp | Bin 0 -> 250 bytes .../static/filter/exhumed/fonts/BigFont/005B.lmp | Bin 0 -> 160 bytes .../static/filter/exhumed/fonts/BigFont/005C.lmp | Bin 0 -> 157 bytes .../static/filter/exhumed/fonts/BigFont/005D.lmp | Bin 0 -> 179 bytes .../static/filter/exhumed/fonts/BigFont/00A1.lmp | Bin 0 -> 104 bytes .../static/filter/exhumed/fonts/BigFont/00AB.lmp | Bin 0 -> 312 bytes .../static/filter/exhumed/fonts/BigFont/00BB.lmp | Bin 0 -> 312 bytes .../static/filter/exhumed/fonts/BigFont/00BF.lmp | Bin 0 -> 147 bytes .../static/filter/exhumed/fonts/BigFont/font.inf | 4 ++++ 65 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0021.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0022.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0023.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0024.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0025.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0027.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0028.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0029.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/002B.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/002C.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/002D.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/002E.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/002F.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0030.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0031.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0032.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0033.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0034.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0035.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0036.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0037.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0038.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0039.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/003A.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/003B.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/003C.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/003D.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/003E.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/003F.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0041.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0042.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0043.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0044.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0045.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0046.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0047.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0048.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0049.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/004A.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/004B.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/004C.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/004D.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/004E.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/004F.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0050.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0051.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0052.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0053.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0054.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0055.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0056.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0057.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0058.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/0059.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/005A.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/005B.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/005C.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/005D.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/00A1.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/00AB.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/00BB.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/00BF.lmp create mode 100644 wadsrc/static/filter/exhumed/fonts/BigFont/font.inf diff --git a/source/common/engine/palettecontainer.cpp b/source/common/engine/palettecontainer.cpp index 4cd4a28bc..6c9f81c37 100644 --- a/source/common/engine/palettecontainer.cpp +++ b/source/common/engine/palettecontainer.cpp @@ -40,6 +40,7 @@ #include "templates.h" #include "palettecontainer.h" #include "files.h" +#include "c_dispatch.h" PaletteContainer GPalette; FColorMatcher ColorMatcher; @@ -820,4 +821,15 @@ bool FRemapTable::AddColors(int start, int count, const uint8_t*colors, int tran } - +CCMD(exportpalette) +{ + FILE* f = fopen("palette.pal", "wb"); + if (!f) return; + for (int i = 0; i < 256; i++) + { + fputc(GPalette.BaseColors[i].r, f); + fputc(GPalette.BaseColors[i].g, f); + fputc(GPalette.BaseColors[i].b, f); + } + fclose(f); +} \ No newline at end of file diff --git a/source/exhumed/src/object.cpp b/source/exhumed/src/object.cpp index c9aeecd84..f1aed4cb4 100644 --- a/source/exhumed/src/object.cpp +++ b/source/exhumed/src/object.cpp @@ -2707,7 +2707,3 @@ static SavegameHelper sgh("objects", END_PS_NS -CCMD(endit) -{ - Powerslave::EndLevel = 13; -} diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0021.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0021.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e8de26a7b2228dc90aa71869ee6fcf8d1ea9e7ee GIT binary patch literal 104 zcmWlR!3n@H3QE!y}Pt_TP44gx?XGL3*Lp~{sHA;8%h8G literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0022.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0022.lmp new file mode 100644 index 0000000000000000000000000000000000000000..cda161856b9f86419b96ed1ba5cbe56b1ac36527 GIT binary patch literal 116 zcmW;CF%Ez*2!-KR?O+&5uh5Cn+1X7O;_U3zH~~EzzDn{1LjE99S%6*f*T%q nAqwT~#afFGqk%!x+dWyBu=L tCAU2CN=zi7pfB0I8DY9m8&GUaotrA-hhNP~)Y*)wwE_h_CU;O_{{Z+@FjN2l literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0024.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0024.lmp new file mode 100644 index 0000000000000000000000000000000000000000..c3e9ce619eb25aee11c15466e12a13c13f46c8a7 GIT binary patch literal 235 zcmXAj-3`Jp5QFnWDMfi}#>fD?A|@!hOu!DTzzVE@5^P> ztxn=1uHq){;vt^mCEnsAzTzjM2XJWD65>2pppU@0$sJjnRyXy$n-3UaMAXhCc!{9R(%B08C1hH5~?}S+t|QMNhKRvTbs&k3sey DmXTKZ literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0025.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0025.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a601a8bb5a5e61185a2273bb3c142c4913e25df4 GIT binary patch literal 204 zcmXAiF%AMD5Jg#pl?`?iZZV}7;0h+(z$@6>TYChno!WxlbKyft9{kMw|HSj429v7pu5sx3zw8MNGVg|4KhMTproW^10DmMZn)&Q4|-9OJt{{sm5Gi?9> literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/002C.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/002C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..4cabd673f1d70f4051fe19b84de0ebb6473ee82b GIT binary patch literal 72 zcmZQ&;9&p(86Z{xVm%JG;&6@vgtZUW?hYIiB{hy6x Q*Dg^}pb$IL?%hBN0DX26zW@LL literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/002D.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/002D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e83a20337c58111bc3e314e69909a024be07ceec GIT binary patch literal 116 zcmd;NU}pdU9UwLVVjCcK0b(B@4gumAAWi||93W<4UbAM6j?RA&9lB->m==ZdA+(MT WoDY`Yy&J;cy;~TpZuM#%pf~{F2_FUk literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/002E.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/002E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a8a7f3073fa22fa7f2505891e679a9160b8f1d91 GIT binary patch literal 56 wcmZQ!;9&p(2_TjSVhtcR1Y%Am9i266{&TRbSrZz%YZs8Aqa!Q~6oE#;!G=l&D literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0032.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0032.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a719d9c7bf07338be6e740f247e6e8f0379c563a GIT binary patch literal 230 zcmXwz!3_c-5Jg#mMT|GHE$nFywm=CUD8ef2!XnI6uoG*r1WUn3R!LsS|1isA~Hv_T12(GV73&Im~dJvDzbYFV^U>Q+t~A}l{LR@d>K`K yE*l}NYx&!w;5dQ=Xv?04;U$r!F4wkOq`I5Uv=xdnwG8?cRLP-5hRz3$mHq{Zia*H! literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0033.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0033.lmp new file mode 100644 index 0000000000000000000000000000000000000000..ee8dcfd0b9837166e40bf9bd604517b67581fb9c GIT binary patch literal 257 zcmY+7!41MN3`K*|L#y^?WeR*`fru5F5!iw$m;x!@AQCIE0xK{h&8h<3}z{rjkp~5pa=#3D5_hCJXD8RYpc~`E#8Z* y^_X9?iIV)Mj6K~~WV69bsuQQNEi8Q`GS&PGO3q0{az9N&rF^BnepZaSi}?fU7fj;- literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0034.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0034.lmp new file mode 100644 index 0000000000000000000000000000000000000000..4774fbae4adcd769660850b959ce8a13a61bce88 GIT binary patch literal 189 zcmW-au?+$-5CqNt%Yx^#lUpFVfRxY@4G=h{11g{cTA+lb0lT^)7etGm55Y@zE4 zH@L$Cp74S literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0035.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0035.lmp new file mode 100644 index 0000000000000000000000000000000000000000..be835328d11c1991613500596916cc90818695f9 GIT binary patch literal 268 zcmYk0u@S;B3`GsWgq-PgnF5t8;D!xUumeLd1ylS9qK+XLf*m;L%TS>6i_Y)96_s>M zQD<@?S8^kF@*p5j@*;2YA!$?v;^?$hR!bvb-q=F`YBigNW$EewNaXp67+Xt2 zcR3mmw*D-8w~_4`X5DAt-vTY|_-`(gxr2yS>yArAly0sjh?&ft#69l;cj1e+;b1Ri I{%q!d~XqR_un4S^2h*m)o>rIEU|wsynpN)dCaLy9qHdxtM& YSlkdZZ~e95n*%$Sk_0SkSZ3e&0t$^!asU7T literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0037.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0037.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d931cc168d5c6518d4b9002517fb8ad62959f569 GIT binary patch literal 198 zcmXYpu?+$-3`HX@;W$ATvV}`ZnzVG0NW%)uzzj^l07yR-l_fJ9{6uHzN&fb;_wL|& zoyeJ7$c@~|gFMNLyvc`riJMdb{M-Z_RhNy(NUbsLyhyBTzN*dvh_#APZ>^|?E%ln? lsuaL;l4H(&ve4n0ANs{?R%*=SeK1QUb*Fb}>^)$O;vYt0KrR3P literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0038.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0038.lmp new file mode 100644 index 0000000000000000000000000000000000000000..9eada900dd0082d3bf0f166effa6dfe82327675f GIT binary patch literal 251 zcmZvW!3_d23OXwOHbDMQ`4TlI^>i~Zh2&z0Rkgu hb*>d?ZseE>=^n9E(%gF21Td|Z649DY{+Hal!VA728>avO literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/003C.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/003C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a65360750fd7ddd7abb2bb6bebb23da630459437 GIT binary patch literal 181 zcmW;Eu?+$-3_PR93cdaTO&}I@(BN0d`;pR$v5*KS45F_$JbeE&I#6yEuCX zUFk-5deD9nZoj2>vLAp+7GF#XnhDN?Opld4G3S}n6!CTs6oHHYHm4a%9U0KHfcK%%c06=jx!2kdN literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/003D.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/003D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2d436f90d533a513d218f939364a8e501685a4a9 GIT binary patch literal 143 zcmX|(F$#b%5Cj8)kXrJK?d|O?1$%pYdw-MtK^_+;K@w(QSdPRHLwmv%H{9{W3vYbz l#c8%JP;Gg1dL}vj>qv=dtah@wEhP!s52Y-EmO0Dd`T^(-DdYeE literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/003E.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/003E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..46e592e04c82f487dd89f222aef5ffca70bbbd25 GIT binary patch literal 181 zcmW;Cu?+$-3n4(85*_iy|n2O2Wjj()e`i^~$?u zXl9+@3|F|p9Ukxm!3*B-fp#loe@)H6lHw;M1& literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0043.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0043.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a03b234339ede353abc2a9299d29dd451594ce71 GIT binary patch literal 241 zcmZvWu?+$-3`GMup@5)@Zi_zxO)Bb>$OLS_3ar2ew618cVgyE@WQy>7N{OW>>;G?C zK7@VnI>HIgaDgk_;0_OX!VBK;fiJ|3WG1SulT^L3SzGOJr<_aaQp)&Jsf>n!1!STx sc^J%cmfR?#Pecr}ZIq@iN0+$&nhadjZ0xi%19ZlTn2?`W`&p3b2}nvH6tqx-04xfxQLV+esi&8wc5 M$W(UUrNqhY3qrk36)195(#RkFA uHc(we|1V1EWrGh&76vscUbW)?I zkutq$q7Tiq&`KM9>CpnPdU?!3I_CKffCV$vJgBCm90}ou9%|UFu7te!hhEumW$t&) SJ^j1RNyM`O((f(BONkShq&Uz3 literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0047.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0047.lmp new file mode 100644 index 0000000000000000000000000000000000000000..17aeff043bcc14441041fb63b3c581e6103167bc GIT binary patch literal 247 zcmXwzu?@m76huu-LW0s+ULn;DKx;us0flQeU(GNg{+7Ams=PmOm$qxc*bBdUV`(D=wSDD)pUzP|Xm7eKz#cQKb Z>;?jerZxWo6LJ}c literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/004A.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/004A.lmp new file mode 100644 index 0000000000000000000000000000000000000000..7e27da2ab67c9e60d6c9073612c01f895cef3458 GIT binary patch literal 174 zcmYk!u?@mN425BXKnaA-$`&rurLsf`WkgF$%La_V1{vUOaKjz{rNYuD`R>^s>|(7Z z%(&u?2cCH0jSs$9(eERq+8rW%*&6A#MAYsm@kQ5@rIY7JQE SY{cWp%f0Q}Nh+lf%Bg_!(MI3zR@k19U(K7mzEX1qzby&G<(9^Y{9b=CB0U zRop}sckvKU@e*(G5nu5WaVA0R>R|y`cLCd=WXpc47JKl7mdu^};Rs{})DB4l?@cCN pfT{>pJT}P|BTo~V?LQ)mH6V?oWwM76D0()Ht!|-L3!`JWv1t literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/004C.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/004C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b6f2e3c87a8a8022fab9c7bd1e04944b3bd4430d GIT binary patch literal 164 zcmY+*yA6Oa5ChO4DEM^|Tex5Z7=eNXSb>s~l9HAYJV7!R0|XP10-v5NS-RS^=1nhy zOtQ!-o9uGPDVJmo2_hw!7T}x$XdpW~#a-pDVgZYY!$u)#FIYh`RCas)iiX5 z3pi|Wg&W*qhX*|24Y@>w{?${Z^q)j^HbhL23%fm))>iY-&=0M;0J;A`%m4rY literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/004F.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/004F.lmp new file mode 100644 index 0000000000000000000000000000000000000000..884afadd51dd2b05aad7426edfdda36162337253 GIT binary patch literal 288 zcmYk0u?@m75JepvLIOw>QMNcKGgzXhO2-ClzzmGQ2HXVk1lfQUXy~cTJCjI!>B+i( z-}XPay)zx*1ZTLw6>e~c2aGVm6JGFvx^S)oU#Ut~TGb+hi7^#hk@pZxzfqNiYOr;3 zrN}s_Zq|xVA~~-nV$;2^b|X>tej+) zo(o;+P7AH{peMcPO&=O2F#1o*%&z(`s{2KCGq2Su2U8|hKSRx-dw&27C?&#gKnibAAx9Gi5v<`{vyAFU^_Gb literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0051.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0051.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d9be4ec0c323f63a8aa2c47e011a95119e5e367c GIT binary patch literal 316 zcmX|*!3hE}5JeNSs~cTG4BLR`fxXy3Zr&w#JFo+5umlVE;C%y@UE2e6^Zg*21M>}I!OT+w>g5J}z mqh8(64{Vz=JLA1j$843eq!7}8E&|2XnGVV`EPxI@M&B>qj#;Px literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0052.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0052.lmp new file mode 100644 index 0000000000000000000000000000000000000000..ab985ffaa9a3ab5b25426229be20ce200a501e90 GIT binary patch literal 228 zcmX|(Q4zv05JUsCP-y=$b&*dDs!%{69$3= p>zglhIn(ssY|dUj^is^t<7YG0&`CK;b;DJYhR)2R^|&=;T>;6dMYR9` literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0053.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0053.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e0d1d9d0f8de28f6149f1b551a300d8f457faee8 GIT binary patch literal 230 zcmYk0!3_c-6hzTwSJrqVbTJ28z_ZtH5%ypY7U6LUF#B7u1#4LcOpJsVhQ|chheK%N zC{E%cuHq){;vt^mCEj8)lF&qoKsI0vJ9k>P?#T1k0i~9zoTA#f_s9%p<#_<=PhnA> thjyylv}zmE(yZ#FoO>Z->J?P`ckb29vR+@qmUJH{Dg8{PDZ2iq@BwIbMD+jw literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0054.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0054.lmp new file mode 100644 index 0000000000000000000000000000000000000000..0100676f9cab042a30d940dedce7c1d06cbe31bc GIT binary patch literal 175 zcmYMtu?>JA5Cu>YN-1#@OG`@|5*)!5T)`16Ep7e{aLMh49}Mv)j|&&_8C-BR6V0^H zN||;#=%kBoddPWI0L6JAs&b0-nd?1>B>nR(wx0eXr5Ga*)Wu+yz}8yaD$U0BMW29) Flox=^LplHe literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0055.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0055.lmp new file mode 100644 index 0000000000000000000000000000000000000000..6b432ef237be4b852745ad7eae2f7cc05a86240c GIT binary patch literal 239 zcmXwyu?@m75JiI=i9`vNl@+K?$^tYl86X8KumUSkQc_ZW7Kp_PS%Fc^y8vH)I_cZK zx2yWfbATh9;0zbI!VT{5fG50Qfj5LkvR}%kGm}kgOe$3`DaPa{O=c814+ACHM=xqA zXQ^RYqG*GeU$lXrtZ0~Np3Al#NAne{Luf{x`-Yxf@#~!ajyNQwSmiG|cX(W@@&Ukl BN*DkD literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0056.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0056.lmp new file mode 100644 index 0000000000000000000000000000000000000000..796f3bfba5cafe6608d32e0eb72e5552309e5b8a GIT binary patch literal 177 zcmW;Fy$u2}3-iKAYIP{^bEiP3_y?cCO8jgUSjE!@*@A7r5}|Etdu=qtC^)7fTnAITb5%)IFt4?GXYGau~v?Z#@sDtFn8sq aiSwJQt1*;?{jS?MQ6pMI|CSlx;`{^Znl>35k)YINUP9NtwYLkiw#70VZGqdIq3B(Z?Qu30Q!h1!#`%01^_G zp5!n2{&{H@rko9IVF!CSz!6Sxh6^OP!VT{5fG2d;7=ks}N^sQ7L^v|D8Yki@mOHDR z=bQr)l~f~%AVuzbZCi{?54Gu-g+m}TRhUnK0x^Q^@CIQhEB=b96p!Pmwfhz$OufS@ eVx)1OUQX#Qvd(} literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0059.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0059.lmp new file mode 100644 index 0000000000000000000000000000000000000000..76184cb3d8e3cfb219dfd1b47e7c5ac0d0fcb43b GIT binary patch literal 179 zcmX}ly$!=45CvfVEIE-oY|16<{q;J!8~~qb;Sz LnpX97*7+Jg0U%3P literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/005B.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/005B.lmp new file mode 100644 index 0000000000000000000000000000000000000000..ddb0c4e0a669be08aa0b90dc5b844902b1d2d9b7 GIT binary patch literal 160 zcmX|)(G7z@3_~xvA3zMkNB)=qsUwgTx&j-p0b6(hli{vDTGi5v6i0T3GMBDJtl}j? zyu~3-aS1a3laXv?2Eqxtll#xuyCO6mLx-;s5&wu9Ncdw^b&z9q-+)$X=62s>RZgo} JW={QM`v7_xI@kaJ literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/005C.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/005C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..c24071a36423fb80448d04fd992282ed3d900828 GIT binary patch literal 157 zcmWm5F%H5o3s6Dc*&y zbfY^x=t(bn(}%wFqba)sBb9AiB|-(dM4GDm+QofjCeh9`H+K_@i_!oURZeT$cbG=? Q5LGkomjbZq<+jy)PRw literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/00AB.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/00AB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..42c27af2a5545cfe02ede0dad535515a1c250fa3 GIT binary patch literal 312 zcma)$u?@m75JjEDAtVSTf!2h8y98(CSV7)V1{2&#se?{6R-na_!lD4V(D3@ zyYGA6nXS=tB$1rRnOw+~+{m3g$dkOtn+%mPdvYLc17wlOwt$Nnn3@g<&LyquUL?98 zDQTwCjF)ljS`h}=GIkuD2UeActaZM$Svg?Y-dn(@QYO=s!o9ZVIA@55uHBRZ2|=G0 ehE(dpAJW+uzu(Y51G6anM7@>8QPY8eH-{fW(O)J2 literal 0 HcmV?d00001 diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/00BB.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/00BB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e962e2ed805783862147b544d5afad8416f42572 GIT binary patch literal 312 zcmZvWy$!-J5Jv69A%q`MSZ)}A>Izn{L`mbq1F!-!umcm&eJxGA0b{TQmHC{2NP(qi zozHjoZll(!oC68uM9$ Date: Tue, 8 Sep 2020 16:18:05 +0200 Subject: [PATCH 05/17] - fixed icorrect validation of give ccmd Fixes #379 --- source/core/cheats.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/source/core/cheats.cpp b/source/core/cheats.cpp index ade259f82..33b8c2f9a 100644 --- a/source/core/cheats.cpp +++ b/source/core/cheats.cpp @@ -176,6 +176,7 @@ CCMD(give) if (found == -1) { Printf("Unable to give %s\n", argv[1]); + return; } if (!CheckCheatmode(true, true)) { From dbcbdf2bc660b634c69fb4e6f2a2bc3c391a0f4e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 18:07:06 +0200 Subject: [PATCH 06/17] - moved RR's pee key binding to the proper menu --- wadsrc/static/engine/menudef.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/wadsrc/static/engine/menudef.txt b/wadsrc/static/engine/menudef.txt index 105df4f0c..e4b4b0114 100644 --- a/wadsrc/static/engine/menudef.txt +++ b/wadsrc/static/engine/menudef.txt @@ -578,10 +578,6 @@ OptionMenu "WeaponsControlMenu"// protected Control "$CNTRLMNU_QUICKKICK" , "+quick_kick" } - ifgame(Redneck, RedneckRides) - { - Control "$CNTRLMNU_PEE" , "+quick_kick" - } ifgame(Blood) { Control "$CNTRLMNU_PROXIMITYBOMBS","slot 11" @@ -645,6 +641,7 @@ OptionMenu "InventoryControlsMenu"// protected Control "$CNTRLMNU_YEEHAA" , "useitem 5" Control "$CNTRLMNU_WHISKEY" , "useitem 1" Control "$CNTRLMNU_MOONSHINE" , "useitem 2" + Control "$CNTRLMNU_PEE", "+quick_kick" } ifgame(Blood) { From 378846c7bd0e757ec3caf85daaab43a655da2e9e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 18:07:52 +0200 Subject: [PATCH 07/17] - Exhumed: Replaced all checks for multiplayer levels with a single bool This should make refactoring easier later. --- source/exhumed/src/player.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/source/exhumed/src/player.cpp b/source/exhumed/src/player.cpp index 25cbd9de9..e95898485 100644 --- a/source/exhumed/src/player.cpp +++ b/source/exhumed/src/player.cpp @@ -708,6 +708,7 @@ void FuncPlayer(int a, int nDamage, int nRun) { int var_48 = 0; int var_40; + bool mplevel = currentLevel->levelNumber > 20; short nPlayer = RunData[nRun].nVal; assert(nPlayer >= 0 && nPlayer < kMaxPlayers); @@ -1485,7 +1486,7 @@ do_default: // loc_1B3C7 // CHECKME - is order of evaluation correct? - if (currentLevel->levelNumber <= 20 || (var_70 >= 25 && (var_70 <= 25 || var_70 == 50))) + if (!mplevel || (var_70 >= 25 && (var_70 <= 25 || var_70 == 50))) { DestroyItemAnim(nValB); mydeletesprite(nValB); @@ -1941,7 +1942,7 @@ do_default_b: if (weapons & var_18) { - if (currentLevel->levelNumber > 20) + if (mplevel) { AddAmmo(nPlayer, WeaponInfo[var_40].nAmmoType, ebx); } @@ -2003,7 +2004,7 @@ do_default_b: if (weapons & var_18) { - if (currentLevel->levelNumber > 20) + if (mplevel) { AddAmmo(nPlayer, WeaponInfo[var_40].nAmmoType, ebx); } @@ -2065,7 +2066,7 @@ do_default_b: if (weapons & var_18) { - if (currentLevel->levelNumber > 20) + if (mplevel) { AddAmmo(nPlayer, WeaponInfo[var_40].nAmmoType, ebx); } @@ -2127,7 +2128,7 @@ do_default_b: if (weapons & var_18) { - if (currentLevel->levelNumber > 20) + if (mplevel) { AddAmmo(nPlayer, WeaponInfo[var_40].nAmmoType, ebx); } @@ -2189,7 +2190,7 @@ do_default_b: if (weapons & var_18) { - if (currentLevel->levelNumber > 20) + if (mplevel) { AddAmmo(nPlayer, WeaponInfo[var_40].nAmmoType, ebx); } @@ -2251,7 +2252,7 @@ do_default_b: if (weapons & var_18) { - if (currentLevel->levelNumber > 20) + if (mplevel) { AddAmmo(nPlayer, WeaponInfo[var_40].nAmmoType, ebx); } @@ -2708,7 +2709,7 @@ loc_1BD2E: } else { - DoGameOverScene((currentLevel->levelNumber == 20)); + DoGameOverScene(mplevel); return; } } From 8d2d36457f41a376d4bc0d62580157f92ccce929 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 18:28:41 +0200 Subject: [PATCH 08/17] - consolidated the map name display on startup Fixes #275 --- source/blood/src/blood.cpp | 3 +- source/blood/src/view.cpp | 46 ++---------------------- source/core/d_net.cpp | 12 +++---- source/core/mainloop.cpp | 4 +++ source/core/savegamehelp.cpp | 9 +++-- source/core/statusbar.cpp | 56 +++++++++++++++++++++++++++--- source/core/statusbar.h | 6 ++++ source/exhumed/src/engine.h | 1 - source/exhumed/src/init.cpp | 6 ++-- source/games/duke/src/2d_d.cpp | 5 --- source/games/duke/src/2d_r.cpp | 5 --- source/games/duke/src/gameloop.cpp | 3 -- source/games/duke/src/global.cpp | 1 - source/games/duke/src/global.h | 1 - source/games/duke/src/premap.cpp | 5 ++- source/games/duke/src/savegame.cpp | 1 - source/games/duke/src/sbar.h | 1 - source/games/duke/src/sbar_d.cpp | 11 ------ source/games/duke/src/sbar_r.cpp | 9 ----- source/sw/src/game.cpp | 2 ++ 20 files changed, 85 insertions(+), 102 deletions(-) diff --git a/source/blood/src/blood.cpp b/source/blood/src/blood.cpp index d8a5d44a4..d141ca732 100644 --- a/source/blood/src/blood.cpp +++ b/source/blood/src/blood.cpp @@ -63,6 +63,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "choke.h" #include "d_net.h" #include "v_video.h" +#include "statusbar.h" BEGIN_BLD_NS @@ -242,7 +243,7 @@ void StartLevel(MapRecord* level) paused = 0; levelTryPlayMusic(); gChoke.reset(); - Printf(TEXTCOLOR_GOLD "%s: %s\n", level->LabelName(), level->DisplayName()); + setLevelStarted(level); } diff --git a/source/blood/src/view.cpp b/source/blood/src/view.cpp index d68ff8e39..cc3080621 100644 --- a/source/blood/src/view.cpp +++ b/source/blood/src/view.cpp @@ -228,23 +228,6 @@ GameStats GameInterface::getStats() return { gKillMgr.Kills, gKillMgr.TotalKills, gSecretMgr.Founds, gSecretMgr.Total, gFrameCount / kTicsPerSec, gPlayer[myconnectindex].fragCount }; } -void viewDrawMapTitle(void) -{ - if (!hud_showmapname || M_Active()) - return; - - int const fadeStartTic = kTicsPerSec; - int const fadeEndTic = int(1.5f*kTicsPerSec); - if (gFrameCount > fadeEndTic) - return; - int const alpha = 255 - clamp((gFrameCount-fadeStartTic)*255/(fadeEndTic-fadeStartTic), 0, 255); - - if (alpha != 0) - { - viewDrawText(1, currentLevel->DisplayName(), 160, 50, -128, 0, 1, 1, 0, alpha); - } -} - void viewDrawAimedPlayerName(void) { if (!cl_idplayers || (gView->aim.dx == 0 && gView->aim.dy == 0)) @@ -411,19 +394,9 @@ void viewSetMessage(const char *pMessage, const int pal, const MESSAGE_PRIORITY Printf(printlevel|PRINT_NOTIFY, "%s\n", pMessage); } - -char errMsg[256]; - void viewSetErrorMessage(const char *pMessage) { - if (!pMessage) - { - strcpy(errMsg, ""); - } - else - { - strcpy(errMsg, pMessage); - } + Printf(PRINT_BOLD|PRINT_NOTIFY, "%s\n", pMessage); } void DoLensEffect(void) @@ -1014,7 +987,6 @@ void viewDrawScreen(bool sceneonly) } #endif - viewDrawMapTitle(); viewDrawAimedPlayerName(); if (paused) { @@ -1025,10 +997,6 @@ void viewDrawScreen(bool sceneonly) FStringf gTempStr("] %s [", gProfile[gView->nPlayer].name); viewDrawText(0, gTempStr, 160, 10, 0, 0, 1, 0); } - if (errMsg[0]) - { - viewDrawText(0, errMsg, 160, 20, 0, 0, 1, 0); - } if (cl_interpolate) { RestoreInterpolations(); @@ -1041,22 +1009,12 @@ bool GameInterface::GenerateSavePic() return true; } - -#define LOW_FPS 60 -#define SLOW_FRAME_TIME 20 - -#if defined GEKKO -# define FPS_YOFFSET 16 -#else -# define FPS_YOFFSET 0 -#endif - FString GameInterface::GetCoordString() { FString out; out.Format("pos= %d, %d, %d - angle = %2.3f", - gMe->pSprite->x, gMe->pSprite->y, gMe->pSprite->z, gMe->pSprite->ang); + gMe->pSprite->x, gMe->pSprite->y, gMe->pSprite->z, gMe->pSprite->ang * (360./2048)); return out; } diff --git a/source/core/d_net.cpp b/source/core/d_net.cpp index 8c1edbbb5..7863f21f6 100644 --- a/source/core/d_net.cpp +++ b/source/core/d_net.cpp @@ -1017,12 +1017,12 @@ void NetUpdate (void) int mod = maketic - ticdup; int modp, j; - int svel; - int fvel; - int64_t q16avel; - int64_t q16horz; - int64_t q16horiz; // only used by SW - int64_t q16ang; // only used by SW + int svel = 0; + int fvel = 0; + int64_t q16avel = 0; + int64_t q16horz = 0; + int64_t q16horiz = 0; // only used by SW + int64_t q16ang = 0; // only used by SW for (j = 0; j < ticdup; ++j) { diff --git a/source/core/mainloop.cpp b/source/core/mainloop.cpp index 2f1dddbd1..5f1ae9b9f 100644 --- a/source/core/mainloop.cpp +++ b/source/core/mainloop.cpp @@ -84,6 +84,8 @@ #include "build.h" #include "g_input.h" #include "mapinfo.h" +#include "automap.h" +#include "statusbar.h" CVAR(Bool, vid_activeinbackground, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR(Bool, r_ticstability, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) @@ -292,6 +294,7 @@ static void GameTicker() gameupdatetime.Reset(); gameupdatetime.Clock(); gi->Ticker(); + levelTextTime--; gameupdatetime.Unclock(); break; @@ -348,6 +351,7 @@ void Display() twodpsp.SetSize(screen->GetWidth(), screen->GetHeight()); gi->Render(); DrawFullscreenBlends(); + drawMapTitle(); break; } [[fallthrough]]; diff --git a/source/core/savegamehelp.cpp b/source/core/savegamehelp.cpp index e7c826356..b90fa3bfa 100644 --- a/source/core/savegamehelp.cpp +++ b/source/core/savegamehelp.cpp @@ -52,6 +52,7 @@ #include "raze_sound.h" #include "gamestruct.h" #include "automap.h" +#include "statusbar.h" static CompositeSavegameWriter savewriter; static FResourceFile *savereader; @@ -75,6 +76,7 @@ static void SerializeSession(FSerializer& arc) quoteMgr.Serialize(arc); S_SerializeSounds(arc); SerializeAutomap(arc); + SerializeHud(arc); } //============================================================================= @@ -189,16 +191,17 @@ bool OpenSaveGameForWrite(const char* filename, const char *name) auto savesig = gi->GetSaveSig(); auto gs = gi->getStats(); FStringf timeStr("%02d:%02d", gs.timesecnd / 60, gs.timesecnd % 60); + auto lev = currentLevel; savegameinfo.AddString("Software", buf) ("Save Version", savesig.currentsavever) .AddString("Engine", savesig.savesig) .AddString("Game Resource", fileSystem.GetResourceFileName(1)) - .AddString("Map Name", currentLevel->DisplayName()) + .AddString("Map Name", lev->DisplayName()) .AddString("Creation Time", myasctime()) .AddString("Title", name) - .AddString("Map File", currentLevel->fileName) - .AddString("Map Label", currentLevel->labelName) + .AddString("Map File", lev->fileName) + .AddString("Map Label", lev->labelName) .AddString("Map Time", timeStr); const char *fn = currentLevel->fileName; diff --git a/source/core/statusbar.cpp b/source/core/statusbar.cpp index f159a9cf7..3bd1615ae 100644 --- a/source/core/statusbar.cpp +++ b/source/core/statusbar.cpp @@ -762,11 +762,12 @@ void DBaseStatusBar::PrintLevelStats(FLevelStats &stats) void DBaseStatusBar::PrintAutomapInfo(FLevelStats& stats) { + auto lev = currentLevel; FString mapname; if (am_showlabel) - mapname.Format(TEXTCOLOR_ESCAPESTR "%c%s: " TEXTCOLOR_ESCAPESTR "%c%s", stats.letterColor+'A', currentLevel->LabelName(), stats.standardColor+'A', currentLevel->DisplayName()); + mapname.Format(TEXTCOLOR_ESCAPESTR "%c%s: " TEXTCOLOR_ESCAPESTR "%c%s", stats.letterColor+'A', lev->LabelName(), stats.standardColor+'A', lev->DisplayName()); else - mapname = currentLevel->DisplayName(); + mapname = lev->DisplayName(); double y; double scale = stats.fontscale * (am_textfont? *hud_statscale : 1); // the tiny default font used by all games here cannot be scaled for readability purposes. @@ -784,13 +785,13 @@ void DBaseStatusBar::PrintAutomapInfo(FLevelStats& stats) { y = 200 - stats.screenbottomspace - spacing; } - const auto &volname = gVolumeNames[volfromlevelnum(currentLevel->levelNumber)]; + const auto &volname = gVolumeNames[volfromlevelnum(lev->levelNumber)]; if (volname.IsEmpty() && am_nameontop) y = 1; DrawText(twod, stats.font, stats.standardColor, 2 * hud_statscale, y, mapname, DTA_FullscreenScale, FSMode_ScaleToHeight, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, DTA_ScaleX, scale, DTA_ScaleY, scale, DTA_KeepRatio, true, TAG_DONE); y -= spacing; - if (!(currentLevel->flags & MI_USERMAP) && !(g_gameType & GAMEFLAG_PSEXHUMED) && volname.IsNotEmpty()) + if (!(lev->flags & MI_USERMAP) && !(g_gameType & GAMEFLAG_PSEXHUMED) && volname.IsNotEmpty()) DrawText(twod, stats.font, stats.standardColor, 2 * hud_statscale, y, GStrings.localize(volname), DTA_FullscreenScale, FSMode_ScaleToHeight, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, DTA_ScaleX, scale, DTA_ScaleY, scale, DTA_KeepRatio, true, TAG_DONE); @@ -857,4 +858,51 @@ void setViewport(int viewSize) videoSetViewableArea(x0, y0, x1, y1); } +//============================================================================ +// +// +// +//============================================================================ + +int levelTextTime; + +void SerializeHud(FSerializer &arc) +{ + if (arc.BeginObject("hud")) + { + arc("texttimer", levelTextTime) + .EndObject(); + } +} + +void setLevelStarted(MapRecord *mi) +{ + levelTextTime = 85; + Printf(TEXTCOLOR_GOLD "%s: %s\n", mi->LabelName(), mi->DisplayName()); +} + +void drawMapTitle() +{ + if (!hud_showmapname || levelTextTime <= 0 || M_Active()) + return; + + double alpha = levelTextTime > 16? 1.0 : levelTextTime / 16.; + if (alpha > 0) + { + double scale = (g_gameType & GAMEFLAG_RRALL)? 0.4 : (g_gameType & GAMEFLAG_SW)? 0.7 : 1.0; + auto text = currentLevel->DisplayName(); + double x = 160 - BigFont->StringWidth(text) * scale / 2.; + double y = (g_gameType & GAMEFLAG_BLOOD)? 50 : 100 - BigFont->GetHeight()/2.; + bool shadow = true; + + if (shadow) + { + DrawText(twod, BigFont, CR_UNDEFINED, x+1, y+1, text, DTA_FullscreenScale, FSMode_Fit320x200, DTA_Color, 0xff000000, DTA_Alpha, alpha / 2., DTA_ScaleX, scale, DTA_ScaleY, scale, TAG_DONE); + } + DrawText(twod, BigFont, CR_UNDEFINED, x, y, text, DTA_FullscreenScale, FSMode_Fit320x200, DTA_Alpha, alpha, DTA_ScaleX, scale, DTA_ScaleY, scale, TAG_DONE); + } +} + + + diff --git a/source/core/statusbar.h b/source/core/statusbar.h index df201309c..c6580e3ae 100644 --- a/source/core/statusbar.h +++ b/source/core/statusbar.h @@ -344,5 +344,11 @@ enum DI_Flags void SBar_DrawString(DBaseStatusBar* self, DHUDFont* font, const FString& string, double x, double y, int flags, int trans, double alpha, int wrapwidth, int linespacing, double scaleX, double scaleY); void setViewport(int viewSize); +struct MapRecord; +void setLevelStarted(MapRecord *); +void drawMapTitle(); +class FSerializer; +void SerializeHud(FSerializer &arc); +extern int levelTextTime; #endif /* __SBAR_H__ */ diff --git a/source/exhumed/src/engine.h b/source/exhumed/src/engine.h index 54a2c64b5..3f5909851 100644 --- a/source/exhumed/src/engine.h +++ b/source/exhumed/src/engine.h @@ -83,7 +83,6 @@ extern int SectDepth[]; extern short SectSoundSect[]; extern int SectAbove[]; -uint8_t LoadLevel(int nMap); void LoadObjects(); // light diff --git a/source/exhumed/src/init.cpp b/source/exhumed/src/init.cpp index 8383366b6..9283f061d 100644 --- a/source/exhumed/src/init.cpp +++ b/source/exhumed/src/init.cpp @@ -31,6 +31,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "status.h" #include #include +#include "statusbar.h" BEGIN_PS_NS @@ -78,7 +79,6 @@ uint8_t LoadLevel(int nMap) initspritelists(); - currentLevel = FindMapByLevelNum(nMap); // init stuff { @@ -177,10 +177,10 @@ uint8_t LoadLevel(int nMap) void InitLevel(int level) // todo: use a map record { StopCD(); + currentLevel = FindMapByLevelNum(level); if (!LoadLevel(level)) { I_Error("Can't load level %d...\n", level); } - currentLevel = FindMapByLevelNum(level); for (int i = 0; i < nTotalPlayers; i++) { @@ -207,7 +207,7 @@ void InitLevel(int level) // todo: use a map record if (nTrack != 0) nTrack--; playCDtrack((nTrack % 8) + 11, true); - + setLevelStarted(currentLevel); } void InitNewGame() diff --git a/source/games/duke/src/2d_d.cpp b/source/games/duke/src/2d_d.cpp index 291e88296..2d965f1f3 100644 --- a/source/games/duke/src/2d_d.cpp +++ b/source/games/duke/src/2d_d.cpp @@ -1082,9 +1082,4 @@ void PrintPaused_d() BigText(160, 100, GStrings("Game Paused")); } -void PrintLevelName_d(double alpha) -{ - BigText(160, 114, currentLevel->DisplayName(), alpha); -} - END_DUKE_NS diff --git a/source/games/duke/src/2d_r.cpp b/source/games/duke/src/2d_r.cpp index 1c0739d1f..6c304cba4 100644 --- a/source/games/duke/src/2d_r.cpp +++ b/source/games/duke/src/2d_r.cpp @@ -641,10 +641,5 @@ void PrintPaused_r() BigText(160, 100, GStrings("Game Paused"), 0); } -void PrintLevelName_r(double alpha) -{ - BigText(160, 114, currentLevel->DisplayName(), 0, alpha); -} - END_DUKE_NS diff --git a/source/games/duke/src/gameloop.cpp b/source/games/duke/src/gameloop.cpp index dc7c23e56..7df82aa33 100644 --- a/source/games/duke/src/gameloop.cpp +++ b/source/games/duke/src/gameloop.cpp @@ -84,9 +84,6 @@ void GameInterface::Ticker() } } - if (levelTextTime > 0) - levelTextTime--; - fi.think(); if ((everyothertime & 1) == 0) diff --git a/source/games/duke/src/global.cpp b/source/games/duke/src/global.cpp index 7d5ea3ae4..23c505901 100644 --- a/source/games/duke/src/global.cpp +++ b/source/games/duke/src/global.cpp @@ -76,7 +76,6 @@ int rtsplaying; int tempwallptr; weaponhit hittype[MAXSPRITES]; bool sound445done; // this was local state inside a function, but this must be maintained globally and serialized -int levelTextTime; // must be serialized uint16_t frags[MAXPLAYERS][MAXPLAYERS]; player_struct ps[MAXPLAYERS]; int spriteqamount = 64; diff --git a/source/games/duke/src/global.h b/source/games/duke/src/global.h index db8bcf98c..8df389daf 100644 --- a/source/games/duke/src/global.h +++ b/source/games/duke/src/global.h @@ -62,7 +62,6 @@ extern int rtsplaying; extern int tempwallptr; extern weaponhit hittype[MAXSPRITES]; extern bool sound445done; -extern int levelTextTime; extern uint16_t frags[MAXPLAYERS][MAXPLAYERS]; extern player_struct ps[MAXPLAYERS]; extern int spriteqamount; diff --git a/source/games/duke/src/premap.cpp b/source/games/duke/src/premap.cpp index d3fbc24f1..bba0d8227 100644 --- a/source/games/duke/src/premap.cpp +++ b/source/games/duke/src/premap.cpp @@ -749,7 +749,6 @@ void resettimevars(void) { cloudclock = 0; ud.levelclock = 0; - levelTextTime = 85; if (camsprite >= 0) hittype[camsprite].temp_data[0] = 0; } @@ -872,7 +871,7 @@ static int LoadTheMap(MapRecord *mi, struct player_struct *p, int gamemode) return 1; } currentLevel = mi; - SECRET_SetMapName(currentLevel->DisplayName(), currentLevel->name); + SECRET_SetMapName(mi->DisplayName(), mi->name); STAT_NewLevel(mi->fileName); G_LoadMapHack(mi->fileName); @@ -990,7 +989,7 @@ int enterlevel(MapRecord *mi, int gamemode) ps[myconnectindex].over_shoulder_on = 0; clearfrags(); resettimevars(); // Here we go - Printf(TEXTCOLOR_GOLD "%s: %s\n", mi->LabelName(), mi->DisplayName()); + setLevelStarted(mi); return 0; } diff --git a/source/games/duke/src/savegame.cpp b/source/games/duke/src/savegame.cpp index 9f83148ac..f89775f34 100644 --- a/source/games/duke/src/savegame.cpp +++ b/source/games/duke/src/savegame.cpp @@ -408,7 +408,6 @@ void GameInterface::SerializeGameState(FSerializer& arc) ("rtsplaying", rtsplaying) ("tempwallptr", tempwallptr) ("sound445done", sound445done) - ("leveltexttime", levelTextTime) .Array("players", ps, ud.multimode) ("spriteqamount", spriteqamount) .Array("shadedsector", shadedsector, numsectors) diff --git a/source/games/duke/src/sbar.h b/source/games/duke/src/sbar.h index c6f167087..f1423d76f 100644 --- a/source/games/duke/src/sbar.h +++ b/source/games/duke/src/sbar.h @@ -27,7 +27,6 @@ public: }; -extern int levelTextTime; void DrawBorder(); END_DUKE_NS diff --git a/source/games/duke/src/sbar_d.cpp b/source/games/duke/src/sbar_d.cpp index 71bba951a..7179bfdfe 100644 --- a/source/games/duke/src/sbar_d.cpp +++ b/source/games/duke/src/sbar_d.cpp @@ -440,7 +440,6 @@ public: }; -void PrintLevelName_d(double alpha); void drawstatusbar_d(int snum) { @@ -453,16 +452,6 @@ void drawstatusbar_d(int snum) { dsb.Statusbar(snum); } - - if (hud_showmapname && levelTextTime > 1 && !M_Active()) - { - double alpha; - if (levelTextTime > 16) alpha = 1.; - else alpha = (levelTextTime) / 16.; - PrintLevelName_d(alpha); - } - - } END_DUKE_NS diff --git a/source/games/duke/src/sbar_r.cpp b/source/games/duke/src/sbar_r.cpp index 5f590a41e..2615b0b80 100644 --- a/source/games/duke/src/sbar_r.cpp +++ b/source/games/duke/src/sbar_r.cpp @@ -457,15 +457,6 @@ void drawstatusbar_r(int snum) { dsb.Statusbar(snum); } - - if (hud_showmapname && levelTextTime > 1 && !M_Active()) - { - double alpha; - if (levelTextTime > 16) alpha = 1.; - else alpha = (levelTextTime) / 16.; - PrintLevelName_r(alpha); - } - } END_DUKE_NS diff --git a/source/sw/src/game.cpp b/source/sw/src/game.cpp index 1adcd10d6..bd494198d 100644 --- a/source/sw/src/game.cpp +++ b/source/sw/src/game.cpp @@ -43,6 +43,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #include "network.h" #include "pal.h" #include "automap.h" +#include "statusbar.h" #include "mytypes.h" @@ -391,6 +392,7 @@ void InitLevel(MapRecord *maprec) // reset NewGame NewGame = false; + setLevelStarted(maprec); } //--------------------------------------------------------------------------- From 5d01be8258c2c11950e7b298c38275fdd319a3c5 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 18:35:21 +0200 Subject: [PATCH 09/17] - fixed incorrect panning setup for WASD --- wadsrc/static/engine/defbinds.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wadsrc/static/engine/defbinds.txt b/wadsrc/static/engine/defbinds.txt index 78442e74f..08a604ccf 100644 --- a/wadsrc/static/engine/defbinds.txt +++ b/wadsrc/static/engine/defbinds.txt @@ -15,8 +15,8 @@ KP3 "+Look_Down" mapbind KP- "+Shrink_Screen" mapbind KP+ "+Enlarge_Screen" mapbind W "+am_panup" -mapbind A "+am_pandown" -mapbind S "+am_panleft" +mapbind S "+am_pandown" +mapbind A "+am_panleft" mapbind D "+am_panright" KP- "sizedown" From 5524d8eab71fa007ca7a00fda880470ed48ccfac Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 18:36:47 +0200 Subject: [PATCH 10/17] - credits updated to the current state of things. --- AUTHORS.md | 31 ++++++++++++++++--------------- README.md | 20 +++++++++++++++----- wadsrc/static/engine/menudef.txt | 19 ++++++++++++------- 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 3e3455063..6fbe8f045 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,14 +1,11 @@ ### Raze programming: - * Christoph Oelckers + * Christoph Oelckers, Mitchell Richters ### Raze special thanks: - * Rachael, dpJudas, Enjay, Nash + * sinisterseed, Rachael, dpJudas, Enjay, Nash -### EDuke32 engine & game programming: - * TerminX - * Hendricks266 - * pogokeen - * Plagman +### EDuke32 engine: + * TerminX, Hendricks266, pogokeen, Plagman * Helixhorned ### JFDuke3D by: @@ -18,24 +15,28 @@ * Ken Silverman ### NBlood programming: - * Nuke.YKT - * NoOne - * sirlemonhead + * Nuke.YKT, NoOne, sirlemonhead -### Widescreen tiles & NBlood logo: +### Blood Widescreen tiles * Maxi Clouds ### NBlood special thanks: * NY00123, MetHy, Striker, oasiz, Mblackwell, Zombie, Marphy Black, SAmik37, meleemario ### NBlood contributors: - * alexey-lysiuk, CommonLoon102, Jan200101 +### VoidSW programming + * Hendricks266, NY00123, TerminX + ### PCExhumed programming: - * sirlemonhead - * Nuke.YKT - * NY00123 + * sirlemonhead, Nuke.YKT, NY00123 ### PCExhumed special thanks: * Hendricks266, JonoF, NY00123, MetHy, oasiz, Daedolon, NoOne, phredreeke, Lobotomy Software + +### Exhumed BigFont + * Dynamo + +## BuildGDX + * M210 diff --git a/README.md b/README.md index 32582cd2c..1d2f73a0f 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,27 @@ [![Build Status](https://github.com/coelckers/Raze/workflows/Continuous%20Integration/badge.svg)](https://github.com/coelckers/Raze/actions?query=workflow%3A%22Continuous+Integration%22) -## Raze is a fork of EDuke32 backed by GZDoom tech and combines EDuke32, PCExhumed, NBlood, and RedNukem in a single package. +## Raze is a fork of Build engine games backed by GZDoom tech and combines Duke Nukem 3D, Blood, Redneck Rampage, Shadow Warrior and Exhumed/Powerslave in a single package. It is also capable of playing Nam and WW2 GI. -Copyright (c) 1998-2020 ZDoom + GZDoom teams, and contributors +The game modules are based on the following sources: + + * Duke Nukem: JFDuke, EDuke 2.0, World Tour extensions from DukeGDX and some minor fixes from EDuke32. + * Redneck Rampage: Nuke.YKT's reconstructed source available in the Rednukem Git repo. + * Blood: NBlood. + * Shadow Warrior: SWP and VoidSW. + * Exhumed/Powerslave: PCExhumed, with some enhancements inspired by PowerslaveGDX. + +ZDoom, GZDoom Copyright (c) 1998-2020 ZDoom + GZDoom teams, and contributors Doom Source (c) 1997 id Software, Raven Software, and contributors -EDuke32 Source (c) 2005-2020 EDuke32 teams, and contributors +EDuke32 and VoidSW Source (c) 2005-2020 EDuke32 teams, and contributors -NBlood source (c) 2019 Nuke.YKT +NBlood source (c) 2019-2020 Nuke.YKT -PCExhumed source (c) 2019 sirlemonhead, Nuke.YKT +PCExhumed source (c) 2019-2020 sirlemonhead, Nuke.YKT + +BuildGDX (c) 2020 Duke Nukem 3D Source (c) 1996-2003 3D Realms diff --git a/wadsrc/static/engine/menudef.txt b/wadsrc/static/engine/menudef.txt index e4b4b0114..fc9fe66dd 100644 --- a/wadsrc/static/engine/menudef.txt +++ b/wadsrc/static/engine/menudef.txt @@ -1593,12 +1593,14 @@ OptionMenu "EngineCredits" Submenu " ---->", "EngineCredits1a" StaticText "Developers" StaticText "Christoph Oelckers", 0 + StaticText "Mitchell Richters", 0 + StaticText "" + StaticText "Additional Developers" StaticText "Rachael Alexanderson", 0 StaticText "Magnus Norddahl", 0 StaticText "Alexey Lysiuk", 0 StaticText "" StaticText "The Raze team thanks the following contributors" - StaticText "Mitchell Richters", 0 StaticText "Nash Muhandes", 0 StaticText "Dynamo", 0 } @@ -1609,17 +1611,17 @@ OptionMenu "EngineCredits1a" Submenu " ---->", "EngineCredits1b" StaticText "Raze QA" + StaticText "sinisterseed ", 0 + StaticText "Major Cooke Dynamo ", 0 StaticText "Nash Muhandes   Martin Howe       ", 0 - StaticText "sinisterseed Dynamo ", 0 StaticText "SanyaWaffles      Nigel Rowand      ", 0 - StaticText "Major Cooke ", 0 } OptionMenu "EngineCredits1b" { title "$MNU_CREDITS" Submenu " ---->", "EngineCredits2" - StaticText "ZDoom / GZDoom" + StaticText "ZDoom / GZDoom / ZDuke" StaticText "Marisa \"Randi\" Heit", 0 StaticText "Braden \"Blzut3\" Obrzut", 0 StaticText "" @@ -1633,6 +1635,12 @@ OptionMenu "EngineCredits2" { title "$MNU_CREDITS" Submenu " ---->", "EngineCredits2a" + StaticText "EDuke 2.0" + StaticText "Matt Saettler", 0 + StaticText "" + StaticText "JFDuke / JFSW", 0 + StaticText "Jonathon \"JonoF\" Fowler", 0 + StaticText "" StaticText "EDuke32 / VoidSW" StaticText "Richard \"TerminX\" Gobeille", 0 StaticText "Evan \"Hendricks266\" Ramos", 0 @@ -1656,9 +1664,6 @@ OptionMenu "EngineCredits2a" StaticText "PCExhumed" StaticText "Alexey \"Nuke.YKT\" Skrybykin", 0 StaticText "sirlemonhead", 0 - StaticText "" - StaticText "Special thanks to" - StaticText "Jonathon \"JonoF\" Fowler", 0 } OptionMenu "EngineCredits3" From ec1c42b04a2f1fe17101c2b2cb2b3298e7a730c4 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 18:39:47 +0200 Subject: [PATCH 11/17] - got rid of common.h All still relevant content was moved to places closer to its use. --- source/blood/src/actor.cpp | 1 - source/blood/src/blood.cpp | 1 - source/blood/src/common_game.h | 1 - source/blood/src/dude.cpp | 1 - source/blood/src/endgame.cpp | 1 - source/blood/src/misc.h | 2 +- source/blood/src/tile.cpp | 1 - source/blood/src/triggers.h | 1 - source/build/include/build.h | 2 + source/build/include/common.h | 72 ------------------------------- source/build/include/compat.h | 16 ------- source/build/include/scriptfile.h | 17 ++++++++ source/build/src/animvpx.cpp | 5 +++ source/build/src/defs.cpp | 1 - source/build/src/engine.cpp | 1 - source/build/src/mdsprite.cpp | 1 - source/build/src/polymost.cpp | 1 - source/build/src/scriptfile.cpp | 1 - source/core/gamecvars.cpp | 1 - source/core/intvec.h | 7 +-- source/core/palette.cpp | 1 - source/core/raze_sound.h | 13 ++++++ source/core/searchpaths.cpp | 1 - source/exhumed/src/cheats.cpp | 1 - source/exhumed/src/exhumed.cpp | 3 -- source/exhumed/src/gameloop.cpp | 1 - source/exhumed/src/osdcmds.cpp | 1 - source/sw/src/ai.cpp | 1 - source/sw/src/game.cpp | 1 - source/sw/src/jweapon.cpp | 1 - source/sw/src/mclip.cpp | 1 - source/sw/src/osdcmds.cpp | 1 - source/sw/src/panel.cpp | 1 - source/sw/src/player.cpp | 1 - source/sw/src/quake.cpp | 1 - source/sw/src/sector.cpp | 1 - source/sw/src/weapon.cpp | 1 - 37 files changed, 39 insertions(+), 126 deletions(-) delete mode 100644 source/build/include/common.h diff --git a/source/blood/src/actor.cpp b/source/blood/src/actor.cpp index 8d3e193a3..b7cd59b95 100644 --- a/source/blood/src/actor.cpp +++ b/source/blood/src/actor.cpp @@ -29,7 +29,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "automap.h" #include "pragmas.h" #include "mmulti.h" -#include "common.h" #include "common_game.h" #include "actor.h" diff --git a/source/blood/src/blood.cpp b/source/blood/src/blood.cpp index d141ca732..6598f3cab 100644 --- a/source/blood/src/blood.cpp +++ b/source/blood/src/blood.cpp @@ -26,7 +26,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "build.h" #include "mmulti.h" #include "compat.h" -#include "common.h" #include "common_game.h" #include "g_input.h" #include "automap.h" diff --git a/source/blood/src/common_game.h b/source/blood/src/common_game.h index fe37b1837..e3f697399 100644 --- a/source/blood/src/common_game.h +++ b/source/blood/src/common_game.h @@ -23,7 +23,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #pragma once #include "build.h" -#include "common.h" #include "pragmas.h" #include "misc.h" #include "printf.h" diff --git a/source/blood/src/dude.cpp b/source/blood/src/dude.cpp index 35b3559fa..44256df39 100644 --- a/source/blood/src/dude.cpp +++ b/source/blood/src/dude.cpp @@ -24,7 +24,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "ns.h" // Must come before everything else! #include "compat.h" -#include "common.h" #include "blood.h" #include "dude.h" diff --git a/source/blood/src/endgame.cpp b/source/blood/src/endgame.cpp index 8a907e365..ba5b18d01 100644 --- a/source/blood/src/endgame.cpp +++ b/source/blood/src/endgame.cpp @@ -25,7 +25,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "build.h" #include "v_draw.h" -#include "common.h" #include "mmulti.h" #include "common_game.h" #include "blood.h" diff --git a/source/blood/src/misc.h b/source/blood/src/misc.h index d0b80f087..984ac96a4 100644 --- a/source/blood/src/misc.h +++ b/source/blood/src/misc.h @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. //------------------------------------------------------------------------- #pragma once -#include "common.h" +#include "m_fixed.h" #include "filesystem.h" BEGIN_BLD_NS diff --git a/source/blood/src/tile.cpp b/source/blood/src/tile.cpp index cd08a5324..ad1998dda 100644 --- a/source/blood/src/tile.cpp +++ b/source/blood/src/tile.cpp @@ -27,7 +27,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include #include "compat.h" #include "build.h" -#include "common.h" #include "common_game.h" #include "blood.h" diff --git a/source/blood/src/triggers.h b/source/blood/src/triggers.h index 827dadcb5..14e195d4a 100644 --- a/source/blood/src/triggers.h +++ b/source/blood/src/triggers.h @@ -22,7 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. //------------------------------------------------------------------------- #pragma once #include "build.h" -#include "common.h" #include "common_game.h" #include "blood.h" diff --git a/source/build/include/build.h b/source/build/include/build.h index d9445c19b..3c5a0b9cf 100644 --- a/source/build/include/build.h +++ b/source/build/include/build.h @@ -31,6 +31,8 @@ static_assert('\xff' == 255, "Char must be unsigned!"); #include "buildtiles.h" #include "c_cvars.h" #include "cmdlib.h" +#include "m_fixed.h" +#include "mathutil.h" typedef int64_t coord_t; diff --git a/source/build/include/common.h b/source/build/include/common.h deleted file mode 100644 index 4528d05a3..000000000 --- a/source/build/include/common.h +++ /dev/null @@ -1,72 +0,0 @@ -// -// Definitions of common non-engine data structures/functions -// (and declarations of data appearing in both) -// for EDuke32 and Mapster32 -// - -#ifndef EDUKE32_COMMON_H_ -#define EDUKE32_COMMON_H_ - - -#include "compat.h" -#include "pragmas.h" // klabs -#include "scriptfile.h" -#include "mathutil.h" - -//// TYPES -struct strllist -{ - struct strllist *next; - char *str; -}; - -typedef struct -{ - const char *text; - int32_t tokenid; -} -tokenlist; - - -enum -{ - T_EOF = -2, - T_ERROR = -1, -}; - - -//// EXTERN DECLS - -extern const char *s_buildRev; -extern const char *s_buildTimestamp; - -//// FUNCTIONS - -void G_AddDef(const char *buffer); -void G_AddDefModule(const char *buffer); - -// returns a buffer of size BMAX_PATH -static inline char *dup_filename(const char *fn) -{ - char * const buf = (char *) Xmalloc(BMAX_PATH); - return Bstrncpyz(buf, fn, BMAX_PATH); -} - -static inline void realloc_copy(char **fn, const char *buf) -{ - uint8_t len = Bstrlen(buf) + 1; - *fn = (char *)Xrealloc(*fn, len); - Bstrncpy(*fn, buf, len); -} - -int32_t getatoken(scriptfile *sf, const tokenlist *tl, int32_t ntokens); - - -void COMMON_clearbackground(int32_t numcols, int32_t numrows); - -// timer defs for profiling function chunks the simple way -#define EDUKE32_TMRDEF int32_t t[20], ti=0; const char *tmrstr=__func__; fprintf(stderr,"%s\n",tmrstr); t[ti++]=I_msTime(); -#define EDUKE32_TMRTIC t[ti++]=I_msTime() -#define EDUKE32_TMRPRN do { int ii=0; fprintf(stderr,"%s: ",tmrstr); for (ii=1; iix* xmul, pos->z* zmul, pos->y* ymul }; -} - /* End dependence on compat.o object. */ diff --git a/source/build/include/scriptfile.h b/source/build/include/scriptfile.h index be570d59c..0562a1732 100644 --- a/source/build/include/scriptfile.h +++ b/source/build/include/scriptfile.h @@ -30,4 +30,21 @@ int32_t scriptfile_getsymbolvalue(char const *name, int32_t *val); int32_t scriptfile_addsymbolvalue(char const *name, int32_t val); void scriptfile_clearsymbols(void); +typedef struct +{ + const char *text; + int32_t tokenid; +} +tokenlist; + + +enum +{ + T_EOF = -2, + T_ERROR = -1, +}; + + +int32_t getatoken(scriptfile *sf, const tokenlist *tl, int32_t ntokens); + #endif diff --git a/source/build/src/animvpx.cpp b/source/build/src/animvpx.cpp index 293a66bc5..93cd050ce 100644 --- a/source/build/src/animvpx.cpp +++ b/source/build/src/animvpx.cpp @@ -21,6 +21,11 @@ #include #include "animvpx.h" +struct vec2u_t +{ + uint32_t x, y; +} ; + const char *animvpx_read_ivf_header_errmsg[] = { "All OK", "couldn't read 32-byte IVF header", diff --git a/source/build/src/defs.cpp b/source/build/src/defs.cpp index 70804aa53..ebf39d57b 100644 --- a/source/build/src/defs.cpp +++ b/source/build/src/defs.cpp @@ -10,7 +10,6 @@ #include "engine_priv.h" #include "scriptfile.h" -#include "common.h" #include "mdsprite.h" // md3model_t #include "buildtiles.h" #include "bitmap.h" diff --git a/source/build/src/engine.cpp b/source/build/src/engine.cpp index bf680a715..bb3f0cb00 100644 --- a/source/build/src/engine.cpp +++ b/source/build/src/engine.cpp @@ -13,7 +13,6 @@ #include "automap.h" #include "imagehelpers.h" -#include "common.h" #include "compat.h" #include "engine_priv.h" #include "palette.h" diff --git a/source/build/src/mdsprite.cpp b/source/build/src/mdsprite.cpp index 8afbe75a8..ec6f504eb 100644 --- a/source/build/src/mdsprite.cpp +++ b/source/build/src/mdsprite.cpp @@ -9,7 +9,6 @@ #include "polymost.h" #include "mdsprite.h" -#include "common.h" #include "palette.h" #include "textures.h" #include "bitmap.h" diff --git a/source/build/src/polymost.cpp b/source/build/src/polymost.cpp index 507e2792c..be90b54d7 100644 --- a/source/build/src/polymost.cpp +++ b/source/build/src/polymost.cpp @@ -7,7 +7,6 @@ Ken Silverman's official web site: http://www.advsys.net/ken #include "build.h" #include "automap.h" -#include "common.h" #include "engine_priv.h" #include "mdsprite.h" #include "polymost.h" diff --git a/source/build/src/scriptfile.cpp b/source/build/src/scriptfile.cpp index 0db34e132..a8a13f014 100644 --- a/source/build/src/scriptfile.cpp +++ b/source/build/src/scriptfile.cpp @@ -8,7 +8,6 @@ #include "compat.h" #include "scriptfile.h" #include "compat.h" -#include "common.h" #include "filesystem.h" #include "printf.h" diff --git a/source/core/gamecvars.cpp b/source/core/gamecvars.cpp index 608273068..ab8a5d854 100644 --- a/source/core/gamecvars.cpp +++ b/source/core/gamecvars.cpp @@ -35,7 +35,6 @@ */ #include "c_cvars.h" -#include "common.h" #include "gameconfigfile.h" #include "gamecontrol.h" #include "m_argv.h" diff --git a/source/core/intvec.h b/source/core/intvec.h index 97fcad844..1675386f4 100644 --- a/source/core/intvec.h +++ b/source/core/intvec.h @@ -12,11 +12,6 @@ struct vec2_t int32_t x, y; }; -struct vec2u_t -{ - uint32_t x, y; -}; - struct vec2f_t { float x, y; @@ -50,4 +45,4 @@ struct vec3_16_t vec2_16_t vec2; }; }; -#endif \ No newline at end of file +#endif diff --git a/source/core/palette.cpp b/source/core/palette.cpp index c303734e8..877791747 100644 --- a/source/core/palette.cpp +++ b/source/core/palette.cpp @@ -36,7 +36,6 @@ #include "palette.h" #include "superfasthash.h" -#include "common.h" #include "memarena.h" #include "palettecontainer.h" #include "palutil.h" diff --git a/source/core/raze_sound.h b/source/core/raze_sound.h index dc7c809cf..8d43ea145 100644 --- a/source/core/raze_sound.h +++ b/source/core/raze_sound.h @@ -1,5 +1,18 @@ #pragma once #include "s_soundinternal.h" +#include "m_fixed.h" +#include "vectors.h" +#include "build.h" + +inline FVector3 GetSoundPos(const vec3_t *pos) +{ + // converts a Build coordinate to a sound system coordinate + const float xmul = 1 / 16.f; + const float ymul = -1 / 16.f; + const float zmul = -1 / 256.f; + return { pos->x* xmul, pos->z* zmul, pos->y* ymul }; +} + enum { diff --git a/source/core/searchpaths.cpp b/source/core/searchpaths.cpp index 9cc739cca..3cc3965a7 100644 --- a/source/core/searchpaths.cpp +++ b/source/core/searchpaths.cpp @@ -41,7 +41,6 @@ #include "sc_man.h" #include "resourcefile.h" #include "printf.h" -#include "common.h" #include "version.h" #include "gamecontrol.h" #include "m_argv.h" diff --git a/source/exhumed/src/cheats.cpp b/source/exhumed/src/cheats.cpp index 8f7258d36..ea9515f04 100644 --- a/source/exhumed/src/cheats.cpp +++ b/source/exhumed/src/cheats.cpp @@ -18,7 +18,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "ns.h" #include "automap.h" #include "compat.h" -#include "common.h" #include "engine.h" #include "exhumed.h" #include "sequence.h" diff --git a/source/exhumed/src/exhumed.cpp b/source/exhumed/src/exhumed.cpp index ece140b93..9e68cf9c5 100644 --- a/source/exhumed/src/exhumed.cpp +++ b/source/exhumed/src/exhumed.cpp @@ -17,7 +17,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. //------------------------------------------------------------------------- #include "ns.h" #include "compat.h" -#include "common.h" #include "engine.h" #include "exhumed.h" #include "sequence.h" @@ -54,8 +53,6 @@ BEGIN_PS_NS extern short bPlayerPan; extern short bLockPan; - extern const char* s_buildRev; - extern const char* s_buildTimestamp; void uploadCinemaPalettes(); diff --git a/source/exhumed/src/gameloop.cpp b/source/exhumed/src/gameloop.cpp index c838686c9..3c449ad16 100644 --- a/source/exhumed/src/gameloop.cpp +++ b/source/exhumed/src/gameloop.cpp @@ -17,7 +17,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. //------------------------------------------------------------------------- #include "ns.h" #include "compat.h" -#include "common.h" #include "engine.h" #include "exhumed.h" #include "sequence.h" diff --git a/source/exhumed/src/osdcmds.cpp b/source/exhumed/src/osdcmds.cpp index 466281c37..4b6884fa6 100644 --- a/source/exhumed/src/osdcmds.cpp +++ b/source/exhumed/src/osdcmds.cpp @@ -22,7 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "ns.h" #include "compat.h" #include "build.h" -#include "common.h" #include "exhumed.h" #include "player.h" #include "view.h" diff --git a/source/sw/src/ai.cpp b/source/sw/src/ai.cpp index 201bf3024..a147d61b3 100644 --- a/source/sw/src/ai.cpp +++ b/source/sw/src/ai.cpp @@ -26,7 +26,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #include "ns.h" #include "build.h" -#include "common.h" #include "names2.h" #include "game.h" diff --git a/source/sw/src/game.cpp b/source/sw/src/game.cpp index bd494198d..5d691b340 100644 --- a/source/sw/src/game.cpp +++ b/source/sw/src/game.cpp @@ -60,7 +60,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #include "misc.h" #include "jsector.h" -#include "common.h" #include "gameconfigfile.h" #include "printf.h" #include "m_argv.h" diff --git a/source/sw/src/jweapon.cpp b/source/sw/src/jweapon.cpp index ac6747c98..e85f0d4b4 100644 --- a/source/sw/src/jweapon.cpp +++ b/source/sw/src/jweapon.cpp @@ -26,7 +26,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #include "ns.h" #include "build.h" -#include "common.h" #include "names2.h" #include "panel.h" diff --git a/source/sw/src/mclip.cpp b/source/sw/src/mclip.cpp index 284d2ae9d..109845fb8 100644 --- a/source/sw/src/mclip.cpp +++ b/source/sw/src/mclip.cpp @@ -26,7 +26,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #include "ns.h" #include "build.h" -#include "common.h" #include "mytypes.h" #include "names2.h" diff --git a/source/sw/src/osdcmds.cpp b/source/sw/src/osdcmds.cpp index 71a3d3aff..d3a655314 100644 --- a/source/sw/src/osdcmds.cpp +++ b/source/sw/src/osdcmds.cpp @@ -35,7 +35,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "gamecontrol.h" #include "gstrings.h" -#include "common.h" #include "v_text.h" #include "printf.h" diff --git a/source/sw/src/panel.cpp b/source/sw/src/panel.cpp index 674b053d1..022b989a2 100644 --- a/source/sw/src/panel.cpp +++ b/source/sw/src/panel.cpp @@ -28,7 +28,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #undef MAIN #include "build.h" -#include "common.h" #include "names2.h" #include "panel.h" diff --git a/source/sw/src/player.cpp b/source/sw/src/player.cpp index 7a2794d76..e385c062a 100644 --- a/source/sw/src/player.cpp +++ b/source/sw/src/player.cpp @@ -26,7 +26,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #include "ns.h" #include "build.h" -#include "common.h" #include "mytypes.h" #include "names2.h" diff --git a/source/sw/src/quake.cpp b/source/sw/src/quake.cpp index 15f7edc68..beff31b73 100644 --- a/source/sw/src/quake.cpp +++ b/source/sw/src/quake.cpp @@ -26,7 +26,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #include "ns.h" #include "build.h" -#include "common.h" #include "gamecontrol.h" diff --git a/source/sw/src/sector.cpp b/source/sw/src/sector.cpp index f42b13b8c..fa1d442df 100644 --- a/source/sw/src/sector.cpp +++ b/source/sw/src/sector.cpp @@ -25,7 +25,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms //------------------------------------------------------------------------- #include "ns.h" #include "build.h" -#include "common.h" #include "names2.h" #include "panel.h" diff --git a/source/sw/src/weapon.cpp b/source/sw/src/weapon.cpp index 1250485ab..e5ddf95df 100644 --- a/source/sw/src/weapon.cpp +++ b/source/sw/src/weapon.cpp @@ -25,7 +25,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms //------------------------------------------------------------------------- #include "ns.h" #include "build.h" -#include "common.h" #include "names2.h" #include "panel.h" From 298949ceb8e046e2503d0df4ba60327978094a9f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 18:48:18 +0200 Subject: [PATCH 12/17] - more compat.h cleanup Its elimination is getting closer. :) --- source/blood/src/levels.cpp | 2 +- source/build/include/compat.h | 160 +---------------------------- source/build/include/polymost.h | 2 +- source/build/src/animvpx.cpp | 4 +- source/build/src/clip.cpp | 12 +-- source/build/src/defs.cpp | 70 ++++++------- source/build/src/engine.cpp | 20 ++-- source/build/src/mdsprite.cpp | 38 +++---- source/build/src/mhk.cpp | 6 +- source/build/src/polymost.cpp | 16 +-- source/build/src/scriptfile.cpp | 8 +- source/build/src/voxmodel.cpp | 10 +- source/core/searchpaths.cpp | 2 +- source/exhumed/src/gun.cpp | 2 +- source/exhumed/src/move.cpp | 10 +- source/exhumed/src/player.cpp | 4 +- source/exhumed/src/queen.cpp | 4 +- source/exhumed/src/runlist.cpp | 2 +- source/exhumed/src/snake.cpp | 2 +- source/games/duke/src/gameexec.cpp | 1 - source/games/duke/src/player.cpp | 2 +- source/sw/src/game.h | 2 +- source/sw/src/saveable.h | 2 +- 23 files changed, 113 insertions(+), 268 deletions(-) diff --git a/source/blood/src/levels.cpp b/source/blood/src/levels.cpp index 852ce5db0..5b94ad66e 100644 --- a/source/blood/src/levels.cpp +++ b/source/blood/src/levels.cpp @@ -64,7 +64,7 @@ void levelInitINI(const char *pzIni) if (!fileSystem.FileExists(pzIni)) ThrowError("Initialization: %s does not exist", pzIni); BloodINI = new IniFile(pzIni); - Bstrncpy(BloodIniFile, pzIni, BMAX_PATH); + strncpy(BloodIniFile, pzIni, BMAX_PATH); } diff --git a/source/build/include/compat.h b/source/build/include/compat.h index 850457350..5507db3a1 100644 --- a/source/build/include/compat.h +++ b/source/build/include/compat.h @@ -20,66 +20,9 @@ # define EDUKE32_GCC_PREREQ(major, minor) 0 #endif -#ifdef __clang__ -# define EDUKE32_CLANG_PREREQ(major, minor) (major < __clang_major__ || (major == __clang_major__ && minor <= __clang_minor__)) -#else -# define EDUKE32_CLANG_PREREQ(major, minor) 0 -#endif -#ifndef __has_builtin -# define __has_builtin(x) 0 // Compatibility with non-clang compilers. -#endif -#ifndef __has_feature -# define __has_feature(x) 0 // Compatibility with non-clang compilers. -#endif -#ifndef __has_extension -# define __has_extension __has_feature // Compatibility with pre-3.0 compilers. -#endif -#ifndef __has_cpp_attribute -# define __has_cpp_attribute(x) 0 -#endif - -#ifdef _MSC_VER -# define EDUKE32_MSVC_PREREQ(major) ((major) <= (_MSC_VER)) -# ifdef __cplusplus -# define EDUKE32_MSVC_CXX_PREREQ(major) ((major) <= (_MSC_VER)) -# else -# define EDUKE32_MSVC_CXX_PREREQ(major) 0 -# endif -#else -# define EDUKE32_MSVC_PREREQ(major) 0 -# define EDUKE32_MSVC_CXX_PREREQ(major) 0 -#endif - ////////// Language detection ////////// -#if defined __STDC__ -# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L -# define CSTD 2011 -# elif defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L -# define CSTD 1999 -# elif defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L -# define CSTD 1994 -# else -# define CSTD 1989 -# endif -#else -# define CSTD 0 -#endif - -#if defined __cplusplus && __cplusplus >= 201703L -# define CXXSTD 2017 -#elif defined __cplusplus && __cplusplus >= 201402L -# define CXXSTD 2014 -#elif defined __cplusplus && __cplusplus >= 201103L -# define CXXSTD 2011 -#elif defined __cplusplus && __cplusplus >= 199711L -# define CXXSTD 2014 // Thanks, Microsoft... :? -#else -# define CXXSTD 0 -#endif - - ////////// Language and compiler feature polyfills ////////// # define EXTERNC @@ -123,42 +66,13 @@ # endif #endif -#if EDUKE32_GCC_PREREQ(2,0) || defined _MSC_VER -# define EDUKE32_FUNCTION __FUNCTION__ -#elif CSTD >= 1999 || CXXSTD >= 2011 -# define EDUKE32_FUNCTION __func__ -#else -# define EDUKE32_FUNCTION "???" -#endif - -#if CXXSTD >= 2011 -# if __has_cpp_attribute(fallthrough) # define fallthrough__ [[fallthrough]] -# elif __has_cpp_attribute(clang::fallthrough) -# define fallthrough__ [[clang::fallthrough]] -# elif __has_cpp_attribute(gnu::fallthrough) -# define fallthrough__ [[gnu::fallthrough]] -# endif -#endif -#ifndef fallthrough__ -# if !defined __clang__ && EDUKE32_GCC_PREREQ(7,0) -# define fallthrough__ __attribute__((fallthrough)) -# elif defined _MSC_VER -# define fallthrough__ __fallthrough -# else -# define fallthrough__ -# endif -#endif - - ////////// Architecture detection ////////// #ifdef WORDS_BIGENDIAN -# define B_LITTLE_ENDIAN 0 # define B_BIG_ENDIAN 1 #else -# define B_LITTLE_ENDIAN 1 # define B_BIG_ENDIAN 0 #endif @@ -184,9 +98,7 @@ #include #include #include -#ifndef USE_PHYSFS #include -#endif #include #include @@ -201,16 +113,10 @@ #include -#ifdef __cplusplus # include -# if CXXSTD >= 2011 || EDUKE32_MSVC_PREREQ(1800) # include # include # include -// we need this because MSVC does not properly identify C++11 support -# define HAVE_CXX11_HEADERS -# endif -#endif ////////// Platform headers ////////// @@ -218,19 +124,6 @@ # include #endif -#ifndef USE_PHYSFS -#include -#include -#include - -#if defined(_WIN32) -# include -# include -#else -# include -#endif -#endif - #include "engineerrors.h" ////////// DEPRECATED: Standard library prefixing ////////// @@ -242,42 +135,9 @@ typedef ssize_t bssize_t; #define BMAX_PATH 256 -#define Bstrcpy strcpy -#define Bstrncpy strncpy -#define Bstrcmp strcmp -#define Bstrncmp strncmp -#define Bstrcat strcat -#define Bstrncat strncat -#define Bstrlen strlen -#define Bstrchr strchr -#define Bstrrchr strrchr -#define Bstrtol strtol -#define Bstrtoul strtoul -#define Bstrtod strtod -#define Bstrstr strstr -#define Bmemcpy memcpy -#define Bmemset memset - - -////////// Standard library wrappers ////////// - -#if defined(__arm__) -# define Bsqrtf __builtin_sqrtf -#else -# define Bsqrtf sqrtf -#endif - - ////////// Metaprogramming structs ////////// -# if CXXSTD >= 2014 using std::enable_if_t; -# elif defined HAVE_CXX11_HEADERS -template -using enable_if_t = typename std::enable_if::type; -# endif - - using native_t = intptr_t; typedef struct MAY_ALIAS { @@ -332,10 +192,6 @@ static_assert(sizeof(vec3d_t) == sizeof(double) * 3); #include "basics.h" -# define ARRAY_SIZE(arr) countof(arr) - - - ////////// Pointer management ////////// #define DO_FREE_AND_NULL(var) do { \ @@ -359,7 +215,6 @@ static FORCE_INLINE uint16_t B_UNBUF16(void const * const buf) { return *(uint16 ////////// Abstract data operations ////////// template constexpr T clamp(T in, X min, Y max) { return in <= (T) min ? (T) min : (in >= (T) max ? (T) max : in); } -template constexpr T clamp2(T in, X min, Y max) { return in >= (T) max ? (T) max : (in <= (T) min ? (T) min : in); } using std::min; using std::max; @@ -374,9 +229,8 @@ static struct } pow2char; -static FORCE_INLINE void bitmap_set(uint8_t *const ptr, int const n) { ptr[n>>3] |= pow2char[n&7]; } -static FORCE_INLINE void bitmap_clear(uint8_t *const ptr, int const n) { ptr[n>>3] &= ~pow2char[n&7]; } -static FORCE_INLINE char bitmap_test(uint8_t const *const ptr, int const n) { return ptr[n>>3] & pow2char[n&7]; } +static FORCE_INLINE void bitmap_set(uint8_t *const ptr, int const n) { ptr[n>>3] |= 1 << (n&7); } +static FORCE_INLINE char bitmap_test(uint8_t const *const ptr, int const n) { return ptr[n>>3] & (1 << (n&7)); } ////////// Utility functions ////////// @@ -384,7 +238,7 @@ static FORCE_INLINE char bitmap_test(uint8_t const *const ptr, int const n) { re template void bfirst_search_init(T *const list, uint8_t *const bitmap, T *const eltnumptr, int const maxelts, int const firstelt) { - Bmemset(bitmap, 0, (maxelts+7)>>3); + memset(bitmap, 0, (maxelts+7)>>3); list[0] = firstelt; bitmap_set(bitmap, firstelt); @@ -401,14 +255,6 @@ void bfirst_search_try(T *const list, uint8_t *const bitmap, T *const eltnumptr, } } -// Copy min(strlen(src)+1, n) characters into dst, always terminate with a NUL. -static FORCE_INLINE char *Bstrncpyz(char *dst, const char *src, bsize_t n) -{ - Bstrncpy(dst, src, n); - dst[n-1] = 0; - return dst; -} - ////////// PANICKING ALLOCATION WRAPPERS ////////// diff --git a/source/build/include/polymost.h b/source/build/include/polymost.h index a0598ae62..41c151db6 100644 --- a/source/build/include/polymost.h +++ b/source/build/include/polymost.h @@ -78,7 +78,7 @@ static inline float polymost_invsqrt_approximation(float x) return n.f * (1.5f - haf * (n.f * n.f)); #else // this is the comment - return 1.f / Bsqrtf(x); + return 1.f / sqrtf(x); #endif } diff --git a/source/build/src/animvpx.cpp b/source/build/src/animvpx.cpp index 93cd050ce..41285647e 100644 --- a/source/build/src/animvpx.cpp +++ b/source/build/src/animvpx.cpp @@ -150,8 +150,8 @@ int32_t animvpx_init_codec(const animvpx_ivf_header_t *info, FileReader & inhand codec->errmsg_detail = codec->errmsg = NULL; codec->numframes = 0; - Bmemset(codec->sumtimes, 0, sizeof(codec->sumtimes)); - Bmemset(codec->maxtimes, 0, sizeof(codec->maxtimes)); + memset(codec->sumtimes, 0, sizeof(codec->sumtimes)); + memset(codec->maxtimes, 0, sizeof(codec->maxtimes)); return 0; } diff --git a/source/build/src/clip.cpp b/source/build/src/clip.cpp index 7a89435c3..030c2d704 100644 --- a/source/build/src/clip.cpp +++ b/source/build/src/clip.cpp @@ -54,7 +54,7 @@ void engineInitClipMaps() DO_FREE_AND_NULL(loadsprite); // two's complement trick, -1 = 0xff - Bmemset(&pictoidx, -1, sizeof(pictoidx)); + memset(&pictoidx, -1, sizeof(pictoidx)); numsectors = 0; numwalls = 0; @@ -334,7 +334,7 @@ static inline int32_t cliptrace(vec2_t const pos, vec2_t * const goal) topu--; } while (area.x*(n.y-p1.y) <= (n.x-p1.x)*area.y); - if (klabs(pos.x-n.x)+klabs(pos.y-n.y) < klabs(pos.x-goal->x)+klabs(pos.y-goal->y)) + if (abs(pos.x-n.x)+abs(pos.y-n.y) < abs(pos.x-goal->x)+abs(pos.y-goal->y)) { *goal = n; hitwall = z; @@ -412,7 +412,7 @@ static void clipupdatesector(vec2_t const pos, int16_t * const sectnum, int wall if (nsecs > (walldist + 8)) { - Printf("%s(): initial position (%d, %d) not within initial sector %d; shortest distance %d.\n", EDUKE32_FUNCTION, pos.x, pos.y, *sectnum, nsecs); + Printf("%s(): initial position (%d, %d) not within initial sector %d; shortest distance %d.\n", __func__, pos.x, pos.y, *sectnum, nsecs); walldist = 0x7fff; } @@ -505,7 +505,7 @@ int32_t clipmove(vec3_t * const pos, int16_t * const sectnum, int32_t xvect, int clipmove_warned = 0; - Bmemset(clipsectormap, 0, (numsectors+7)>>3); + memset(clipsectormap, 0, (numsectors+7)>>3); bitmap_set(clipsectormap, *sectnum); do @@ -875,7 +875,7 @@ int pushmove(vec3_t *const vect, int16_t *const sectnum, clipsectorlist[0] = *sectnum; clipsectnum = 1; - Bmemset(clipsectormap, 0, (numsectors + 7) >> 3); + memset(clipsectormap, 0, (numsectors + 7) >> 3); bitmap_set(clipsectormap, *sectnum); } @@ -1029,7 +1029,7 @@ void getzrange(const vec3_t *pos, int16_t sectnum, clipsectorlist[0] = sectnum; clipsectnum = 1; clipspritenum = 0; - Bmemset(clipsectormap, 0, (numsectors+7)>>3); + memset(clipsectormap, 0, (numsectors+7)>>3); bitmap_set(clipsectormap, sectnum); do //Collect sectors inside your square first diff --git a/source/build/src/defs.cpp b/source/build/src/defs.cpp index ebf39d57b..308a979cc 100644 --- a/source/build/src/defs.cpp +++ b/source/build/src/defs.cpp @@ -55,7 +55,7 @@ if (sc.Compare("music")) while (pScript->textptr < musicEnd) { - switch (getatoken(pScript, soundTokens, ARRAY_SIZE(soundTokens))) + switch (getatoken(pScript, soundTokens, countof(soundTokens))) { case T_ID: scriptfile_getstring(pScript, &musicID); break; case T_FILE: scriptfile_getstring(pScript, &fileName); break; @@ -361,7 +361,7 @@ static int32_t defsparser(scriptfile *script) iter = 0; } #endif - tokn = getatoken(script,basetokens,ARRAY_SIZE(basetokens)); + tokn = getatoken(script,basetokens,countof(basetokens)); cmdtokptr = script->ltextptr; switch (tokn) { @@ -574,7 +574,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&blockend)) break; while (script->textptr < blockend) { - int32_t token = getatoken(script,artfiletokens,ARRAY_SIZE(artfiletokens)); + int32_t token = getatoken(script,artfiletokens,countof(artfiletokens)); switch (token) { case T_FILE: @@ -685,7 +685,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&textureend)) break; while (script->textptr < textureend) { - int32_t token = getatoken(script,tilefromtexturetokens,ARRAY_SIZE(tilefromtexturetokens)); + int32_t token = getatoken(script,tilefromtexturetokens,countof(tilefromtexturetokens)); switch (token) { case T_FILE: @@ -722,7 +722,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&ifmatchend)) break; while (script->textptr < ifmatchend) { - int32_t token = getatoken(script,ifmatchtokens,ARRAY_SIZE(ifmatchtokens)); + int32_t token = getatoken(script,ifmatchtokens,countof(ifmatchtokens)); switch (token) { case T_CRC32: @@ -901,7 +901,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&blockend)) break; while (script->textptr < blockend) { - int32_t token = getatoken(script,copytiletokens,ARRAY_SIZE(copytiletokens)); + int32_t token = getatoken(script,copytiletokens,countof(copytiletokens)); switch (token) { case T_TILE: @@ -1295,7 +1295,7 @@ static int32_t defsparser(scriptfile *script) { "flags", T_FLAGS }, }; - Bmemset(usedframebitmap, 0, sizeof(usedframebitmap)); + memset(usedframebitmap, 0, sizeof(usedframebitmap)); modelskin = lastmodelskin = 0; seenframe = 0; @@ -1313,7 +1313,7 @@ static int32_t defsparser(scriptfile *script) #endif while (script->textptr < modelend) { - int32_t token = getatoken(script,modeltokens,ARRAY_SIZE(modeltokens)); + int32_t token = getatoken(script,modeltokens,countof(modeltokens)); switch (token) { //case T_ERROR: Printf("Error on line %s:%d in model tokens\n", script->filename,script->linenum); break; @@ -1352,7 +1352,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&frameend)) break; while (script->textptr < frameend) { - switch (getatoken(script,modelframetokens,ARRAY_SIZE(modelframetokens))) + switch (getatoken(script,modelframetokens,countof(modelframetokens))) { case T_PAL: scriptfile_getsymbol(script,&pal); break; @@ -1437,7 +1437,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&animend)) break; while (script->textptr < animend) { - switch (getatoken(script,modelanimtokens,ARRAY_SIZE(modelanimtokens))) + switch (getatoken(script,modelanimtokens,countof(modelanimtokens))) { case T_FRAME0: scriptfile_getstring(script,&startframe); break; @@ -1512,7 +1512,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&skinend)) break; while (script->textptr < skinend) { - switch (getatoken(script,modelskintokens,ARRAY_SIZE(modelskintokens))) + switch (getatoken(script,modelskintokens,countof(modelskintokens))) { case T_PAL: scriptfile_getsymbol(script,&palnum); break; @@ -1615,7 +1615,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&frameend)) break; while (script->textptr < frameend) { - switch (getatoken(script,modelhudtokens,ARRAY_SIZE(modelhudtokens))) + switch (getatoken(script,modelhudtokens,countof(modelhudtokens))) { case T_TILE: scriptfile_getsymbol(script,&ftilenume); ltilenume = ftilenume; break; @@ -1738,7 +1738,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&modelend)) break; while (script->textptr < modelend) { - switch (getatoken(script, voxeltokens, ARRAY_SIZE(voxeltokens))) + switch (getatoken(script, voxeltokens, countof(voxeltokens))) { //case T_ERROR: Printf("Error on line %s:%d in voxel tokens\n", script->filename,linenum); break; case T_TILE: @@ -1811,7 +1811,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&modelend)) break; while (script->textptr < modelend) { - switch (getatoken(script,skyboxtokens,ARRAY_SIZE(skyboxtokens))) + switch (getatoken(script,skyboxtokens,countof(skyboxtokens))) { //case T_ERROR: Printf("Error on line %s:%d in skybox tokens\n",script->filename,linenum); break; case T_TILE: @@ -1863,7 +1863,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&highpalend)) break; while (script->textptr < highpalend) { - switch (getatoken(script,highpaltokens,ARRAY_SIZE(highpaltokens))) + switch (getatoken(script,highpaltokens,countof(highpaltokens))) { case T_BASEPAL: scriptfile_getsymbol(script,&basepal); break; @@ -1920,7 +1920,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&tintend)) break; while (script->textptr < tintend) { - switch (getatoken(script,tinttokens,ARRAY_SIZE(tinttokens))) + switch (getatoken(script,tinttokens,countof(tinttokens))) { case T_PAL: scriptfile_getsymbol(script,&pal); break; @@ -1982,7 +1982,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&endtextptr)) break; while (script->textptr < endtextptr) { - switch (getatoken(script, palookuptokens, ARRAY_SIZE(palookuptokens))) + switch (getatoken(script, palookuptokens, countof(palookuptokens))) { case T_PAL: scriptfile_getsymbol(script, &pal); @@ -2078,7 +2078,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&textureend)) break; while (script->textptr < textureend) { - token = getatoken(script,texturetokens,ARRAY_SIZE(texturetokens)); + token = getatoken(script,texturetokens,countof(texturetokens)); switch (token) { case T_PAL: @@ -2108,7 +2108,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&palend)) break; while (script->textptr < palend) { - switch (getatoken(script,texturetokens_pal,ARRAY_SIZE(texturetokens_pal))) + switch (getatoken(script,texturetokens_pal,countof(texturetokens_pal))) { case T_FILE: scriptfile_getstring(script,&fn); break; @@ -2188,7 +2188,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&detailend)) break; while (script->textptr < detailend) { - switch (getatoken(script,texturetokens_pal,ARRAY_SIZE(texturetokens_pal))) + switch (getatoken(script,texturetokens_pal,countof(texturetokens_pal))) { case T_FILE: scriptfile_getstring(script,&fn); break; @@ -2365,7 +2365,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&dummy)) break; while (script->textptr < dummy) { - switch (getatoken(script,sound_musictokens,ARRAY_SIZE(sound_musictokens))) + switch (getatoken(script,sound_musictokens,countof(sound_musictokens))) { case T_ID: scriptfile_getstring(script,&dummy2); @@ -2394,7 +2394,7 @@ static int32_t defsparser(scriptfile *script) if (scriptfile_getbraces(script,&mapinfoend)) break; while (script->textptr < mapinfoend) { - switch (getatoken(script,mapinfotokens,ARRAY_SIZE(mapinfotokens))) + switch (getatoken(script,mapinfotokens,countof(mapinfotokens))) { case T_MAPFILE: scriptfile_getstring(script,&dummy); @@ -2415,7 +2415,7 @@ static int32_t defsparser(scriptfile *script) char smallbuf[3] = { 0, 0, 0 }; smallbuf[0] = mapmd4string[2*i]; smallbuf[1] = mapmd4string[2*i+1]; - newusermaphack->md4[i] = Bstrtol(smallbuf, NULL, 16); + newusermaphack->md4[i] = strtol(smallbuf, NULL, 16); } break; @@ -2485,7 +2485,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < blockend) { - int32_t token = getatoken(script,subtokens,ARRAY_SIZE(subtokens)); + int32_t token = getatoken(script,subtokens,countof(subtokens)); switch (token) { case T_HORIZFRAC: @@ -2573,7 +2573,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < blockend) { - int32_t token = getatoken(script,subtokens,ARRAY_SIZE(subtokens)); + int32_t token = getatoken(script,subtokens,countof(subtokens)); switch (token) { case T_RAW: @@ -2596,7 +2596,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < rawblockend) { - int32_t token = getatoken(script,rawsubtokens,ARRAY_SIZE(rawsubtokens)); + int32_t token = getatoken(script,rawsubtokens,countof(rawsubtokens)); switch (token) { case T_FILE: @@ -2752,7 +2752,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < blockend) { - int32_t token = getatoken(script,subtokens,ARRAY_SIZE(subtokens)); + int32_t token = getatoken(script,subtokens,countof(subtokens)); switch (token) { case T_RAW: @@ -2775,7 +2775,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < subblockend) { - int32_t token = getatoken(script,rawsubtokens,ARRAY_SIZE(rawsubtokens)); + int32_t token = getatoken(script,rawsubtokens,countof(rawsubtokens)); switch (token) { case T_FILE: @@ -2896,7 +2896,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < subblockend) { - switch (getatoken(script, fogpaltokens, ARRAY_SIZE(fogpaltokens))) + switch (getatoken(script, fogpaltokens, countof(fogpaltokens))) { case T_RED: scriptfile_getnumber(script,&red); @@ -2944,7 +2944,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < subblockend) { - switch (getatoken(script, makepalookuptokens, ARRAY_SIZE(makepalookuptokens))) + switch (getatoken(script, makepalookuptokens, countof(makepalookuptokens))) { case T_RED: scriptfile_getnumber(script,&red); @@ -3044,7 +3044,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < blockend) { - int32_t token = getatoken(script,subtokens,ARRAY_SIZE(subtokens)); + int32_t token = getatoken(script,subtokens,countof(subtokens)); switch (token) { case T_RAW: @@ -3065,7 +3065,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < rawblockend) { - int32_t token = getatoken(script,rawsubtokens,ARRAY_SIZE(rawsubtokens)); + int32_t token = getatoken(script,rawsubtokens,countof(rawsubtokens)); switch (token) { case T_FILE: @@ -3168,7 +3168,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < glblendblockend) { - int32_t glblendtoken = getatoken(script,glblendtokens,ARRAY_SIZE(glblendtokens)); + int32_t glblendtoken = getatoken(script,glblendtokens,countof(glblendtokens)); switch (glblendtoken) { case T_FORWARD: @@ -3199,7 +3199,7 @@ static int32_t defsparser(scriptfile *script) while (script->textptr < glblenddefblockend) { - int32_t glblenddeftoken = getatoken(script,glblenddeftokens,ARRAY_SIZE(glblenddeftokens)); + int32_t glblenddeftoken = getatoken(script,glblenddeftokens,countof(glblenddeftokens)); switch (glblenddeftoken) { case T_SRC: @@ -3219,7 +3219,7 @@ static int32_t defsparser(scriptfile *script) { "ONE_MINUS_DST_COLOR", T_ONE_MINUS_DST_COLOR }, }; - int32_t factortoken = getatoken(script,blendFuncTokens,ARRAY_SIZE(blendFuncTokens)); + int32_t factortoken = getatoken(script,blendFuncTokens,countof(blendFuncTokens)); #ifdef USE_OPENGL uint8_t * const factor = glblenddeftoken == T_SRC ? &glbdef->src : &glbdef->dst; diff --git a/source/build/src/engine.cpp b/source/build/src/engine.cpp index bb3f0cb00..6e44afa85 100644 --- a/source/build/src/engine.cpp +++ b/source/build/src/engine.cpp @@ -583,7 +583,7 @@ static void dosetaspect(void) { j = (x&65535); k = FixedToInt(x); x += xinc; - if (k < 0 || k >= (int32_t)ARRAY_SIZE(qradarang)-1) + if (k < 0 || k >= (int32_t)countof(qradarang)-1) { no_radarang2 = 1; break; @@ -1287,7 +1287,7 @@ int32_t renderDrawRoomsQ16(int32_t daposx, int32_t daposy, int32_t daposz, if ((xyaspect != oxyaspect) || (xdimen != oxdimen) || (viewingrange != oviewingrange)) dosetaspect(); - Bmemset(gotsector, 0, sizeof(gotsector)); + memset(gotsector, 0, sizeof(gotsector)); i = xdimen-1; @@ -1896,7 +1896,7 @@ void renderDrawMapView(int32_t dax, int32_t day, int32_t zoome, int16_t ang) renderSetAspect(65536, divscale16((320*5)/8, 200)); - Bmemset(gotsector, 0, sizeof(gotsector)); + memset(gotsector, 0, sizeof(gotsector)); vec2_t const c1 = { (windowxy1.x<<12), (windowxy1.y<<12) }; vec2_t const c2 = { ((windowxy2.x+1)<<12)-1, ((windowxy2.y+1)<<12)-1 }; @@ -2204,13 +2204,13 @@ static int32_t engineFinishLoadBoard(const vec3_t *dapos, int16_t *dacursectnum, updatesector(dapos->x, dapos->y, dacursectnum); { - Bmemset(spriteext, 0, sizeof(spriteext_t)*MAXSPRITES); + memset(spriteext, 0, sizeof(spriteext_t)*MAXSPRITES); #ifndef NEW_MAP_FORMAT - Bmemset(wallext, 0, sizeof(wallext_t)*MAXWALLS); + memset(wallext, 0, sizeof(wallext_t)*MAXWALLS); #endif #ifdef USE_OPENGL - Bmemset(spritesmooth, 0, sizeof(spritesmooth_t)*(MAXSPRITES+MAXUNIQHUDID)); + memset(spritesmooth, 0, sizeof(spritesmooth_t)*(MAXSPRITES+MAXUNIQHUDID)); # ifdef POLYMER if (videoGetRenderMode() == REND_POLYMER) @@ -2236,7 +2236,7 @@ static int32_t engineFinishLoadBoard(const vec3_t *dapos, int16_t *dacursectnum, static void remove_sprite(int32_t i) { - Bmemset(&sprite[i], 0, sizeof(spritetype)); + memset(&sprite[i], 0, sizeof(spritetype)); sprite[i].statnum = MAXSTATUS; sprite[i].sectnum = MAXSECTORS; } @@ -2652,7 +2652,7 @@ int32_t videoSetGameMode(char davidoption, int32_t daupscaledxdim, int32_t daups daupscaledxdim = max(320, daupscaledxdim); daupscaledydim = max(200, daupscaledydim); - Bstrcpy(kensmessage,"!!!! BUILD engine&tools programmed by Ken Silverman of E.G. RI." + strcpy(kensmessage,"!!!! BUILD engine&tools programmed by Ken Silverman of E.G. RI." " (c) Copyright 1995 Ken Silverman. Summary: BUILD = Ken. !!!!"); rendmode = REND_POLYMOST; @@ -3094,7 +3094,7 @@ int32_t cansee(int32_t x1, int32_t y1, int32_t z1, int16_t sect1, int32_t x2, in const int32_t x21 = x2-x1, y21 = y2-y1, z21 = z2-z1; static uint8_t sectbitmap[(MAXSECTORS+7)>>3]; - Bmemset(sectbitmap, 0, sizeof(sectbitmap)); + memset(sectbitmap, 0, sizeof(sectbitmap)); if (x1 == x2 && y1 == y2) return (sect1 == sect2); @@ -3275,7 +3275,7 @@ void dragpoint(int16_t pointhighlight, int32_t dax, int32_t day, uint8_t flags) uint8_t *const walbitmap = (uint8_t *)tempbuf; if ((flags&1)==0) - Bmemset(walbitmap, 0, (numwalls+7)>>3); + memset(walbitmap, 0, (numwalls+7)>>3); yaxwalls[numyaxwalls++] = pointhighlight; for (i=0; inumframes; i++) { fr = (md2frame_t *)&m->frames[i*m->framebytes]; - if (!Bstrcmp(fr->name, nam)) break; + if (!strcmp(fr->name, nam)) break; } } break; @@ -182,7 +182,7 @@ static int32_t framename2index(mdmodel_t *vm, const char *nam) { md3model_t *m = (md3model_t *)vm; for (i=0; inumframes; i++) - if (!Bstrcmp(m->head.frames[i].nam,nam)) break; + if (!strcmp(m->head.frames[i].nam,nam)) break; } break; } @@ -230,7 +230,7 @@ int32_t md_defineanimation(int32_t modelid, const char *framestart, const char * if ((uint32_t)modelid >= (uint32_t)nextmodelid) return -1; - Bmemset(&ma, 0, sizeof(ma)); + memset(&ma, 0, sizeof(ma)); m = (md2model_t *)models[modelid]; if (m->mdnum < 2) return 0; @@ -249,7 +249,7 @@ int32_t md_defineanimation(int32_t modelid, const char *framestart, const char * map = (mdanim_t *)Xmalloc(sizeof(mdanim_t)); - Bmemcpy(map, &ma, sizeof(ma)); + memcpy(map, &ma, sizeof(ma)); map->next = m->animations; m->animations = map; @@ -307,8 +307,8 @@ int32_t md_thinoutmodel(int32_t modelid, uint8_t *usedframebitmap) if (otonframe[i]>=0 && otonframe[i] != i) { if (m->muladdframes) - Bmemcpy(&m->muladdframes[2*otonframe[i]], &m->muladdframes[2*i], 2*sizeof(vec3f_t)); - Bmemcpy(&m->head.frames[otonframe[i]], &m->head.frames[i], sizeof(md3frame_t)); + memcpy(&m->muladdframes[2*otonframe[i]], &m->muladdframes[2*i], 2*sizeof(vec3f_t)); + memcpy(&m->head.frames[otonframe[i]], &m->head.frames[i], sizeof(md3frame_t)); } } @@ -318,7 +318,7 @@ int32_t md_thinoutmodel(int32_t modelid, uint8_t *usedframebitmap) for (i=0; inumframes; i++) if (otonframe[i]>=0 && otonframe[i] != i) - Bmemcpy(&s->xyzn[otonframe[i]*s->numverts], &s->xyzn[i*s->numverts], s->numverts*sizeof(md3xyzn_t)); + memcpy(&s->xyzn[otonframe[i]*s->numverts], &s->xyzn[i*s->numverts], s->numverts*sizeof(md3xyzn_t)); } ////// tweak frame indices in various places @@ -756,13 +756,13 @@ static md2model_t *md2load(FileReader & fil, const char *filnam) } #endif - Bstrcpy(st,filnam); + strcpy(st,filnam); for (i=strlen(st)-1; i>0; i--) if ((st[i] == '/') || (st[i] == '\\')) { i++; break; } if (i<0) i=0; st[i] = 0; m->basepath = (char *)Xmalloc(i+1); - Bstrcpy(m->basepath, st); + strcpy(m->basepath, st); m->skinfn = (char *)Xmalloc(ournumskins*64); if (m->numskins > 0) @@ -802,7 +802,7 @@ static md2model_t *md2load(FileReader & fil, const char *filnam) while (i < m->numframes) { f = (md2frame_t *)&m->frames[i*m->framebytes]; - Bstrcpy(m3->head.frames[i].nam, f->name); + strcpy(m3->head.frames[i].nam, f->name); //Printf("Copied frame %s.\n", m3->head.frames[i].nam); m3->muladdframes[i*2] = f->mul; m3->muladdframes[i*2+1] = f->add; @@ -824,7 +824,7 @@ static md2model_t *md2load(FileReader & fil, const char *filnam) maxmodelverts = max(maxmodelverts, s->numverts); - Bstrcpy(s->nam, "Dummy surface from MD2"); + strcpy(s->nam, "Dummy surface from MD2"); s->shaders = NULL; @@ -1104,8 +1104,8 @@ static void md3postload_common(md3model_t *m) { frame = &m->head.frames[framei]; - Bmemset(&frame->min, 0, sizeof(vec3f_t)); - Bmemset(&frame->max, 0, sizeof(vec3f_t)); + memset(&frame->min, 0, sizeof(vec3f_t)); + memset(&frame->max, 0, sizeof(vec3f_t)); frame->r = 0.0f; @@ -1184,7 +1184,7 @@ static void md3postload_common(md3model_t *m) ++surfi; } - frame->r = Bsqrtf(frame->r); + frame->r = sqrtf(frame->r); ++framei; } @@ -1392,7 +1392,7 @@ static int32_t polymost_md3draw(md3model_t *m, tspriteptr_t tspr) if (sext->pitch || sext->roll) { float f = 1.f/((fxdimen * fviewingrange) * (256.f/(65536.f*128.f)) * (m0.x+m1.x)); - Bmemset(&a0, 0, sizeof(a0)); + memset(&a0, 0, sizeof(a0)); if (sext->pivot_offset.x) a0.x = (float) sext->pivot_offset.x * f; @@ -1643,8 +1643,8 @@ static mdmodel_t *mdload(const char *filnam) // smuggle the file name into the model struct. // head.nam is unused as far as I can tell - Bstrncpyz(vm3->head.nam, filnam, sizeof(vm3->head.nam)); - + strncpy(vm3->head.nam, filnam, sizeof(vm3->head.nam)); + vm3->head.nam[sizeof(vm3->head.nam)-1] = 0; md3postload_common(vm3); } diff --git a/source/build/src/mhk.cpp b/source/build/src/mhk.cpp index 732f5729b..8d0a4a0bc 100644 --- a/source/build/src/mhk.cpp +++ b/source/build/src/mhk.cpp @@ -107,9 +107,9 @@ int32_t engineLoadMHK(const char *filename) if (filename) { - Bmemset(spriteext, 0, sizeof(spriteext_t) * MAXSPRITES); - Bmemset(spritesmooth, 0, sizeof(spritesmooth_t) *(MAXSPRITES+MAXUNIQHUDID)); - Bstrcpy(fn, filename); + memset(spriteext, 0, sizeof(spriteext_t) * MAXSPRITES); + memset(spritesmooth, 0, sizeof(spritesmooth_t) *(MAXSPRITES+MAXUNIQHUDID)); + strcpy(fn, filename); script = scriptfile_fromfile(filename); } else if (fn[0]) diff --git a/source/build/src/polymost.cpp b/source/build/src/polymost.cpp index be90b54d7..64ac613ea 100644 --- a/source/build/src/polymost.cpp +++ b/source/build/src/polymost.cpp @@ -144,7 +144,7 @@ static float* multiplyMatrix4f(float m0[4*4], const float m1[4*4]) multMatrix4RowCol(3, 2); multMatrix4RowCol(3, 3); - Bmemcpy(m0, mR, sizeof(float)*4*4); + memcpy(m0, mR, sizeof(float)*4*4); return m0; @@ -1124,7 +1124,7 @@ static void polymost_internal_nonparallaxed(vec2f_t n0, vec2f_t n1, float ryp0, if (globalorientation&64) //Hack for relative alignment on slopes { float r = global_cf_heinum * (1.0f / 4096.f); - r = Bsqrtf(r*r+1); + r = sqrtf(r*r+1); if (!(globalorientation&4)) { xtex.v *= r; ytex.v *= r; otex.v *= r; } else { xtex.u *= r; ytex.u *= r; otex.u *= r; } } @@ -2498,8 +2498,8 @@ void polymost_drawrooms() else { float r = (float)(ydimen >> 1) - (ghoriz + ghorizcorrect); - gshang = r / Bsqrtf(r * r + ghalfx * ghalfx / (gvrcorrection * gvrcorrection)); - gchang = Bsqrtf(1.f - gshang * gshang); + gshang = r / sqrtf(r * r + ghalfx * ghalfx / (gvrcorrection * gvrcorrection)); + gchang = sqrtf(1.f - gshang * gshang); ghoriz2 = 0.f; } @@ -2610,7 +2610,7 @@ void polymost_drawrooms() while (numbunches > 0) { - Bmemset(ptempbuf,0,numbunches+3); ptempbuf[0] = 1; + memset(ptempbuf,0,numbunches+3); ptempbuf[0] = 1; int32_t closest = 0; //Almost works, but not quite :( @@ -2895,8 +2895,8 @@ void polymost_prepareMirror(int32_t dax, int32_t day, int32_t daz, fixed_t daang else { float r = (float)(ydimen >> 1) - (ghoriz+ghorizcorrect); - gshang = r / Bsqrtf(r * r + ghalfx * ghalfx / (gvrcorrection * gvrcorrection)); - gchang = Bsqrtf(1.f - gshang * gshang); + gshang = r / sqrtf(r * r + ghalfx * ghalfx / (gvrcorrection * gvrcorrection)); + gchang = sqrtf(1.f - gshang * gshang); ghoriz2 = 0.f; } ghoriz = (float)(ydimen>>1); @@ -2941,7 +2941,7 @@ static wallspriteinfo_t wsprinfo[MAXSPRITES]; void Polymost_prepare_loadboard(void) { - Bmemset(wsprinfo, 0, sizeof(wsprinfo)); + memset(wsprinfo, 0, sizeof(wsprinfo)); } void polymost_deletesprite(int num) diff --git a/source/build/src/scriptfile.cpp b/source/build/src/scriptfile.cpp index a8a13f014..d32e419cf 100644 --- a/source/build/src/scriptfile.cpp +++ b/source/build/src/scriptfile.cpp @@ -136,7 +136,7 @@ int scriptfile_getsymbol(scriptfile *sf, int32_t *num) if (!t) return -1; char * e; - int32_t v = Bstrtol(t, &e, 10); + int32_t v = strtol(t, &e, 10); if (*e) { @@ -321,12 +321,12 @@ scriptfile *scriptfile_fromstring(const char *string) { if (!string) return nullptr; - uint32_t flen = Bstrlen(string); + uint32_t flen = strlen(string); char * tx = (char *)Xmalloc(flen + 2); scriptfile *sf = (scriptfile *)Xmalloc(sizeof(scriptfile)); - Bmemcpy(tx, string, flen); + memcpy(tx, string, flen); tx[flen] = tx[flen+1] = 0; scriptfile_preparse(sf,tx,flen); @@ -373,7 +373,7 @@ static char *getsymbtabspace(int32_t reqd) int32_t scriptfile_getsymbolvalue(char const *name, int32_t *val) { - if (Bstrlen(name) > 2) + if (strlen(name) > 2) { if (name[0] == '0' && tolower(name[1]) == 'x') // hex constants { diff --git a/source/build/src/voxmodel.cpp b/source/build/src/voxmodel.cpp index b5471a60e..cc6ac7804 100644 --- a/source/build/src/voxmodel.cpp +++ b/source/build/src/voxmodel.cpp @@ -317,10 +317,10 @@ static void addquad(int32_t x0, int32_t y0, int32_t z0, int32_t x1, int32_t y1, //Extend borders vertically for (bssize_t yy=0; yymytex[(shp[z].y+yy)*gvox->mytexx + shp[z].x], + memcpy(&gvox->mytex[(shp[z].y+yy)*gvox->mytexx + shp[z].x], &gvox->mytex[(shp[z].y+VOXBORDWIDTH)*gvox->mytexx + shp[z].x], (x+(VOXBORDWIDTH<<1))<<2); - Bmemcpy(&gvox->mytex[(shp[z].y+y+yy+VOXBORDWIDTH)*gvox->mytexx + shp[z].x], + memcpy(&gvox->mytex[(shp[z].y+y+yy+VOXBORDWIDTH)*gvox->mytexx + shp[z].x], &gvox->mytex[(shp[z].y+y-1+VOXBORDWIDTH)*gvox->mytexx + shp[z].x], (x+(VOXBORDWIDTH<<1))<<2); } @@ -863,7 +863,7 @@ voxmodel_t *voxload(const char *filnam) { int32_t is8bit, ret; - const int32_t i = Bstrlen(filnam)-4; + const int32_t i = strlen(filnam)-4; if (i < 0) return NULL; @@ -905,7 +905,7 @@ voxmodel_t *loadkvxfrombuf(const char *kvxbuffer, int32_t length) if (!buffer) return NULL; - Bmemcpy(buffer, kvxbuffer, length); + memcpy(buffer, kvxbuffer, length); int32_t *longptr = (int32_t*)buffer; @@ -1107,7 +1107,7 @@ int32_t polymost_voxdraw(voxmodel_t *m, tspriteptr_t const tspr) //transform to Build coords float omat[16]; - Bmemcpy(omat, mat, sizeof(omat)); + memcpy(omat, mat, sizeof(omat)); f = 1.f/64.f; g = m0.x*f; mat[0] *= g; mat[1] *= g; mat[2] *= g; diff --git a/source/core/searchpaths.cpp b/source/core/searchpaths.cpp index 3cc3965a7..d125b1bf1 100644 --- a/source/core/searchpaths.cpp +++ b/source/core/searchpaths.cpp @@ -953,7 +953,7 @@ bool AddINIFile(const char* pzFile, bool bForce = false) pINIIter = pINIIter->pNext = new INICHAIN; pINIIter->pNext = NULL; pINIIter->pDescription = NULL; - Bstrncpy(pINIIter->zName, pzFile, BMAX_PATH); + strncpy(pINIIter->zName, pzFile, BMAX_PATH); for (int i = 0; i < countof(gINIDescription); i++) { if (!strnicmp(pINIIter->zName, gINIDescription[i].pzFilename, BMAX_PATH)) diff --git a/source/exhumed/src/gun.cpp b/source/exhumed/src/gun.cpp index 76493ad7d..00789f297 100644 --- a/source/exhumed/src/gun.cpp +++ b/source/exhumed/src/gun.cpp @@ -311,7 +311,7 @@ int CheckCloseRange(short nPlayer, int *x, int *y, int *z, short *nSector) if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } diff --git a/source/exhumed/src/move.cpp b/source/exhumed/src/move.cpp index 596fd90e6..a25192a1a 100644 --- a/source/exhumed/src/move.cpp +++ b/source/exhumed/src/move.cpp @@ -692,7 +692,7 @@ int PlotCourseToSprite(int nSprite1, int nSprite2) if (diff > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); diff = INT_MAX; } @@ -854,7 +854,7 @@ void CreatePushBlock(int nSector) if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } @@ -1127,7 +1127,7 @@ void SetQuake(short nSprite, int nVal) if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } @@ -1189,7 +1189,7 @@ int AngleChase(int nSprite, int nSprite2, int ebx, int ecx, int push1) if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } @@ -1241,7 +1241,7 @@ int AngleChase(int nSprite, int nSprite2, int ebx, int ecx, int push1) if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } diff --git a/source/exhumed/src/player.cpp b/source/exhumed/src/player.cpp index e95898485..d2b050d1b 100644 --- a/source/exhumed/src/player.cpp +++ b/source/exhumed/src/player.cpp @@ -183,7 +183,7 @@ void feebtag(int x, int y, int z, int nSector, short *nSprite, int nVal2, int nV if (diff > INT_MAX) { - Printf("%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + Printf("%s %d: overflow\n", __func__, __LINE__); diff = INT_MAX; } @@ -1212,7 +1212,7 @@ loc_1AB8E: if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } diff --git a/source/exhumed/src/queen.cpp b/source/exhumed/src/queen.cpp index 5f3b72a11..1fe66da8f 100644 --- a/source/exhumed/src/queen.cpp +++ b/source/exhumed/src/queen.cpp @@ -262,7 +262,7 @@ int QueenAngleChase(short nSprite, short nSprite2, int val1, int val2) if (sqrtVal > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtVal = INT_MAX; } @@ -307,7 +307,7 @@ int QueenAngleChase(short nSprite, short nSprite2, int val1, int val2) if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } diff --git a/source/exhumed/src/runlist.cpp b/source/exhumed/src/runlist.cpp index d213a9381..0be1a8222 100644 --- a/source/exhumed/src/runlist.cpp +++ b/source/exhumed/src/runlist.cpp @@ -1550,7 +1550,7 @@ int runlist_CheckRadialDamage(short nSprite) if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } diff --git a/source/exhumed/src/snake.cpp b/source/exhumed/src/snake.cpp index a8ff1c192..d3eaae52a 100644 --- a/source/exhumed/src/snake.cpp +++ b/source/exhumed/src/snake.cpp @@ -152,7 +152,7 @@ int BuildSnake(short nPlayer, short zVal) if (sqrtNum > INT_MAX) { - DPrintf(DMSG_WARNING, "%s %d: overflow\n", EDUKE32_FUNCTION, __LINE__); + DPrintf(DMSG_WARNING, "%s %d: overflow\n", __func__, __LINE__); sqrtNum = INT_MAX; } diff --git a/source/games/duke/src/gameexec.cpp b/source/games/duke/src/gameexec.cpp index a036210b0..9e726ce95 100644 --- a/source/games/duke/src/gameexec.cpp +++ b/source/games/duke/src/gameexec.cpp @@ -96,7 +96,6 @@ void addspritetodelete(int spnum) // // //--------------------------------------------------------------------------- -void VM_Execute(native_t loop); void ParseState::parseifelse(int condition) { diff --git a/source/games/duke/src/player.cpp b/source/games/duke/src/player.cpp index 66eaf7588..843375871 100644 --- a/source/games/duke/src/player.cpp +++ b/source/games/duke/src/player.cpp @@ -1007,7 +1007,7 @@ void sethorizon(int snum, ESyncBits actions, double factor, fixed_t adjustment) auto p = &ps[snum]; // Calculate adjustment as true pitch (Fixed point math really sucks...) - double horizAngle = clamp2(atan2(p->q16horiz - IntToFixed(100), IntToFixed(128)) * (512. / pi::pi()) + (factor * p->pitchAdjust) + (adjustment / 65536.), -180, 180); + double horizAngle = clamp(atan2(p->q16horiz - IntToFixed(100), IntToFixed(128)) * (512. / pi::pi()) + (factor * p->pitchAdjust) + (adjustment / 65536.), -180, 180); if (p->return_to_center > 0 && (actions & (SB_LOOK_UP | SB_LOOK_DOWN)) == 0) // only snap back if no relevant button is pressed. { diff --git a/source/sw/src/game.h b/source/sw/src/game.h index eefdad74d..5e0be8d02 100644 --- a/source/sw/src/game.h +++ b/source/sw/src/game.h @@ -523,7 +523,7 @@ int StdRandomRange(int range); ) -#define SIZ ARRAY_SIZE +#define SIZ countof // diff --git a/source/sw/src/saveable.h b/source/sw/src/saveable.h index 97992360a..f74438696 100644 --- a/source/sw/src/saveable.h +++ b/source/sw/src/saveable.h @@ -52,7 +52,7 @@ constexpr enable_if_t::value, size_t> SAVE_SIZEOF(T const & #define SAVE_CODE(s) (void*)(s) #define SAVE_DATA(s) { (void*)&(s), SAVE_SIZEOF(s) } -#define NUM_SAVEABLE_ITEMS(x) ARRAY_SIZE(x) +#define NUM_SAVEABLE_ITEMS(x) countof(x) typedef struct { From 5d7a51df9d4b37a017128c77d5fc2fa2f36265b7 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 19:18:11 +0200 Subject: [PATCH 13/17] - use a local bit array in Blood's precacher. --- source/blood/src/fx.cpp | 6 +- source/blood/src/fx.h | 2 - source/blood/src/gib.cpp | 4 +- source/blood/src/gib.h | 1 - source/blood/src/misc.h | 8 +- source/blood/src/preload.cpp | 323 +++++++++++++++++++++++------------ source/blood/src/qav.cpp | 4 +- source/blood/src/qav.h | 3 +- source/blood/src/seq.cpp | 8 +- source/blood/src/seq.h | 5 +- source/blood/src/tile.cpp | 99 ----------- source/blood/src/weapon.cpp | 4 +- 12 files changed, 236 insertions(+), 231 deletions(-) diff --git a/source/blood/src/fx.cpp b/source/blood/src/fx.cpp index 813b6d41e..d7bc75afb 100644 --- a/source/blood/src/fx.cpp +++ b/source/blood/src/fx.cpp @@ -354,13 +354,13 @@ void fxSpawnEjectingShell(spritetype *pSprite, int z, int a3, int a4) } } -void fxPrecache(void) +void fxPrecache(HitList &hits) { for (int i = 0; i < kFXMax; i++) { - tilePrecacheTile(gFXData[i].at12, 0); + tilePrecacheTile(gFXData[i].at12, 0, hits); if (gFXData[i].at2) - seqPrecacheId(gFXData[i].at2); + seqPrecacheId(gFXData[i].at2, hits); } } diff --git a/source/blood/src/fx.h b/source/blood/src/fx.h index 6c9a70f8f..8104fffc0 100644 --- a/source/blood/src/fx.h +++ b/source/blood/src/fx.h @@ -102,8 +102,6 @@ void sub_746D4(spritetype *pSprite, int a2); void fxSpawnEjectingBrass(spritetype *pSprite, int z, int a3, int a4); void fxSpawnEjectingShell(spritetype *pSprite, int z, int a3, int a4); -void fxPrecache(void); - extern CFX gFX; END_BLD_NS diff --git a/source/blood/src/gib.cpp b/source/blood/src/gib.cpp index 2455f9336..0119dd853 100644 --- a/source/blood/src/gib.cpp +++ b/source/blood/src/gib.cpp @@ -511,7 +511,7 @@ void GibWall(int nWall, GIBTYPE nGibType, CGibVelocity *pVel) } } -void gibPrecache(void) +void gibPrecache(HitList &hits) { for (int i = 0; i < kGibMax; i++) { @@ -521,7 +521,7 @@ void gibPrecache(void) for (int j = 0; j < gibList[i].atc; j++) { if (pThing[j].Kills >= 0) - tilePrecacheTile(pThing[j].Kills); + tilePrecacheTile(pThing[j].Kills, -1, hits); } } } diff --git a/source/blood/src/gib.h b/source/blood/src/gib.h index 53257a703..2b552e33e 100644 --- a/source/blood/src/gib.h +++ b/source/blood/src/gib.h @@ -74,5 +74,4 @@ public: void GibSprite(spritetype *pSprite, GIBTYPE nGibType, CGibPosition *pPos, CGibVelocity *pVel); //void GibFX(int nWall, GIBFX * pGFX, int a3, int a4, int a5, int a6, CGibVelocity * pVel); void GibWall(int nWall, GIBTYPE nGibType, CGibVelocity *pVel); -void gibPrecache(void); END_BLD_NS diff --git a/source/blood/src/misc.h b/source/blood/src/misc.h index 984ac96a4..6a3e9b442 100644 --- a/source/blood/src/misc.h +++ b/source/blood/src/misc.h @@ -22,11 +22,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. //------------------------------------------------------------------------- #pragma once +#include "build.h" #include "m_fixed.h" #include "filesystem.h" BEGIN_BLD_NS +using HitList = FixedBitArray; + void playlogos(); unsigned int qrand(void); int wrand(void); @@ -56,7 +59,7 @@ void WeaponProcess(PLAYER *pPlayer); void WeaponUpdateState(PLAYER* pPlayer); void sub_51340(spritetype *pMissile, int a2); void StartQAV(PLAYER* pPlayer, int nWeaponQAV, int a3 = -1, char a4 = 0); -void WeaponPrecache(void); +void WeaponPrecache(HitList &hits); struct ZONE { int x, y, z; @@ -121,13 +124,12 @@ extern signed char tileShade[MAXTILES]; extern short voxelIndex[MAXTILES]; extern int nPrecacheCount; -extern char precachehightile[2][(MAXTILES+7)>>3]; int tileInit(char a1, const char *a2); void tileProcessGLVoxels(void); void tilePreloadTile(int nTile); +void tilePrecacheTile(int nTile, int nType, HitList& hits); -void tilePrecacheTile(int nTile, int nType = 1); char tileGetSurfType(int hit); void scrLoadPalette(void); diff --git a/source/blood/src/preload.cpp b/source/blood/src/preload.cpp index 216ab6e83..f5fcc7790 100644 --- a/source/blood/src/preload.cpp +++ b/source/blood/src/preload.cpp @@ -33,36 +33,139 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. BEGIN_BLD_NS +#define gotpic blafasl + +int nPrecacheCount; + +void fxPrecache(HitList &hits); +void gibPrecache(HitList &hits); + + +void tilePreloadTile(int nTile) +{ + if (!r_precache) return; + int n = 1; + switch (picanm[nTile].extra & 7) + { + case 0: + n = 1; + break; + case 1: + n = 5; + break; + case 2: + n = 8; + break; + case 3: + n = 2; + break; + case 6: + case 7: + if (voxelIndex[nTile] < 0 || voxelIndex[nTile] >= kMaxVoxels) + { + voxelIndex[nTile] = -1; + picanm[nTile].extra &= ~7; + } + break; + } + + while (n--) + { + if (picanm[nTile].sf & PICANM_ANIMTYPE_MASK) + { + for (int frame = picanm[nTile].num; frame >= 0; frame--) + { + if ((picanm[nTile].sf & PICANM_ANIMTYPE_MASK) == PICANM_ANIMTYPE_BACK) + PrecacheHardwareTextures(nTile - frame); + else + PrecacheHardwareTextures(nTile + frame); + } + } + else + PrecacheHardwareTextures(nTile); + nTile += 1 + picanm[nTile].num; + } +} + +void tilePrecacheTile(int nTile, int nType, HitList &hits) +{ + int n = 1; + switch (picanm[nTile].extra & 7) + { + case 0: + n = 1; + break; + case 1: + n = 5; + break; + case 2: + n = 8; + break; + case 3: + n = 2; + break; + } + while (n--) + { + if (picanm[nTile].sf & PICANM_ANIMTYPE_MASK) + { + for (int frame = picanm[nTile].num; frame >= 0; frame--) + { + int tile; + if ((picanm[nTile].sf & PICANM_ANIMTYPE_MASK) == PICANM_ANIMTYPE_BACK) + tile = nTile - frame; + else + tile = nTile + frame; + if (!hits[tile]) + { + nPrecacheCount++; + hits.Set(tile); + } + } + } + else + { + if (!hits[nTile]) + { + nPrecacheCount++; + hits.Set(nTile); + } + } + nTile += 1 + picanm[nTile].num; + } +} + + // To do: This needs to handle the sprite palettes as well to properly precache the needed content. -void viewPrecacheTiles(void) +void viewPrecacheTiles(HitList &hits) { - tilePrecacheTile(2173, 0); - tilePrecacheTile(2200, 0); - tilePrecacheTile(2201, 0); - tilePrecacheTile(2202, 0); - tilePrecacheTile(2207, 0); - tilePrecacheTile(2208, 0); - tilePrecacheTile(2209, 0); - tilePrecacheTile(2229, 0); - tilePrecacheTile(2260, 0); - tilePrecacheTile(2559, 0); - tilePrecacheTile(2169, 0); - tilePrecacheTile(2578, 0); - tilePrecacheTile(2586, 0); - tilePrecacheTile(2602, 0); + tilePrecacheTile(2173, 0, hits); + tilePrecacheTile(2200, 0, hits); + tilePrecacheTile(2201, 0, hits); + tilePrecacheTile(2202, 0, hits); + tilePrecacheTile(2207, 0, hits); + tilePrecacheTile(2208, 0, hits); + tilePrecacheTile(2209, 0, hits); + tilePrecacheTile(2229, 0, hits); + tilePrecacheTile(2260, 0, hits); + tilePrecacheTile(2559, 0, hits); + tilePrecacheTile(2169, 0, hits); + tilePrecacheTile(2578, 0, hits); + tilePrecacheTile(2586, 0, hits); + tilePrecacheTile(2602, 0, hits); for (int i = 0; i < 10; i++) { - tilePrecacheTile(2190 + i, 0); - tilePrecacheTile(2230 + i, 0); - tilePrecacheTile(2240 + i, 0); - tilePrecacheTile(2250 + i, 0); - tilePrecacheTile(kSBarNumberHealth + i, 0); - tilePrecacheTile(kSBarNumberAmmo + i, 0); - tilePrecacheTile(kSBarNumberInv + i, 0); - tilePrecacheTile(kSBarNumberArmor1 + i, 0); - tilePrecacheTile(kSBarNumberArmor2 + i, 0); - tilePrecacheTile(kSBarNumberArmor3 + i, 0); + tilePrecacheTile(2190 + i, 0, hits); + tilePrecacheTile(2230 + i, 0, hits); + tilePrecacheTile(2240 + i, 0, hits); + tilePrecacheTile(2250 + i, 0, hits); + tilePrecacheTile(kSBarNumberHealth + i, 0, hits); + tilePrecacheTile(kSBarNumberAmmo + i, 0, hits); + tilePrecacheTile(kSBarNumberInv + i, 0, hits); + tilePrecacheTile(kSBarNumberArmor1 + i, 0, hits); + tilePrecacheTile(kSBarNumberArmor2 + i, 0, hits); + tilePrecacheTile(kSBarNumberArmor3 + i, 0, hits); } /* for (int i = 0; i < 5; i++) @@ -73,54 +176,54 @@ void viewPrecacheTiles(void) */ for (int i = 0; i < 6; i++) { - tilePrecacheTile(2220 + i, 0); - tilePrecacheTile(2552 + i, 0); + tilePrecacheTile(2220 + i, 0, hits); + tilePrecacheTile(2552 + i, 0, hits); } } -void PrecacheDude(spritetype *pSprite) +void PrecacheDude(spritetype *pSprite, HitList &hits) { DUDEINFO *pDudeInfo = getDudeInfo(pSprite->type); - seqPrecacheId(pDudeInfo->seqStartID); - seqPrecacheId(pDudeInfo->seqStartID+5); - seqPrecacheId(pDudeInfo->seqStartID+1); - seqPrecacheId(pDudeInfo->seqStartID+2); + seqPrecacheId(pDudeInfo->seqStartID , hits); + seqPrecacheId(pDudeInfo->seqStartID+5, hits); + seqPrecacheId(pDudeInfo->seqStartID+1, hits); + seqPrecacheId(pDudeInfo->seqStartID+2, hits); switch (pSprite->type) { case kDudeCultistTommy: case kDudeCultistShotgun: case kDudeCultistTesla: case kDudeCultistTNT: - seqPrecacheId(pDudeInfo->seqStartID+6); - seqPrecacheId(pDudeInfo->seqStartID+7); - seqPrecacheId(pDudeInfo->seqStartID+8); - seqPrecacheId(pDudeInfo->seqStartID+9); - seqPrecacheId(pDudeInfo->seqStartID+13); - seqPrecacheId(pDudeInfo->seqStartID+14); - seqPrecacheId(pDudeInfo->seqStartID+15); + seqPrecacheId(pDudeInfo->seqStartID+6 , hits); + seqPrecacheId(pDudeInfo->seqStartID+7 , hits); + seqPrecacheId(pDudeInfo->seqStartID+8 , hits); + seqPrecacheId(pDudeInfo->seqStartID+9 , hits); + seqPrecacheId(pDudeInfo->seqStartID+13, hits); + seqPrecacheId(pDudeInfo->seqStartID+14, hits); + seqPrecacheId(pDudeInfo->seqStartID+15, hits); break; case kDudeZombieButcher: case kDudeGillBeast: - seqPrecacheId(pDudeInfo->seqStartID+6); - seqPrecacheId(pDudeInfo->seqStartID+7); - seqPrecacheId(pDudeInfo->seqStartID+8); - seqPrecacheId(pDudeInfo->seqStartID+9); - seqPrecacheId(pDudeInfo->seqStartID+10); - seqPrecacheId(pDudeInfo->seqStartID+11); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); + seqPrecacheId(pDudeInfo->seqStartID+7, hits); + seqPrecacheId(pDudeInfo->seqStartID+8, hits); + seqPrecacheId(pDudeInfo->seqStartID+9, hits); + seqPrecacheId(pDudeInfo->seqStartID+10, hits); + seqPrecacheId(pDudeInfo->seqStartID+11, hits); break; case kDudeGargoyleStatueFlesh: case kDudeGargoyleStatueStone: - seqPrecacheId(pDudeInfo->seqStartID+6); - seqPrecacheId(pDudeInfo->seqStartID+6); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); //??? fallthrough__; case kDudeGargoyleFlesh: case kDudeGargoyleStone: - seqPrecacheId(pDudeInfo->seqStartID+6); - seqPrecacheId(pDudeInfo->seqStartID+7); - seqPrecacheId(pDudeInfo->seqStartID+8); - seqPrecacheId(pDudeInfo->seqStartID+9); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); + seqPrecacheId(pDudeInfo->seqStartID+7, hits); + seqPrecacheId(pDudeInfo->seqStartID+8, hits); + seqPrecacheId(pDudeInfo->seqStartID+9, hits); break; case kDudePhantasm: case kDudeHellHound: @@ -129,88 +232,88 @@ void PrecacheDude(spritetype *pSprite) case kDudeSpiderBlack: case kDudeSpiderMother: case kDudeTchernobog: - seqPrecacheId(pDudeInfo->seqStartID+6); - seqPrecacheId(pDudeInfo->seqStartID+7); - seqPrecacheId(pDudeInfo->seqStartID+8); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); + seqPrecacheId(pDudeInfo->seqStartID+7, hits); + seqPrecacheId(pDudeInfo->seqStartID+8, hits); break; case kDudeCerberusTwoHead: - seqPrecacheId(pDudeInfo->seqStartID+6); - seqPrecacheId(pDudeInfo->seqStartID+7); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); + seqPrecacheId(pDudeInfo->seqStartID+7, hits); fallthrough__; case kDudeHand: case kDudeBoneEel: case kDudeBat: case kDudeRat: - seqPrecacheId(pDudeInfo->seqStartID+6); - seqPrecacheId(pDudeInfo->seqStartID+7); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); + seqPrecacheId(pDudeInfo->seqStartID+7, hits); break; case kDudeCultistBeast: - seqPrecacheId(pDudeInfo->seqStartID+6); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); break; case kDudeZombieAxeBuried: - seqPrecacheId(pDudeInfo->seqStartID+12); - seqPrecacheId(pDudeInfo->seqStartID+9); + seqPrecacheId(pDudeInfo->seqStartID+12, hits); + seqPrecacheId(pDudeInfo->seqStartID+9, hits); fallthrough__; case kDudeZombieAxeLaying: - seqPrecacheId(pDudeInfo->seqStartID+10); + seqPrecacheId(pDudeInfo->seqStartID+10, hits); fallthrough__; case kDudeZombieAxeNormal: - seqPrecacheId(pDudeInfo->seqStartID+6); - seqPrecacheId(pDudeInfo->seqStartID+7); - seqPrecacheId(pDudeInfo->seqStartID+8); - seqPrecacheId(pDudeInfo->seqStartID+11); - seqPrecacheId(pDudeInfo->seqStartID+13); - seqPrecacheId(pDudeInfo->seqStartID+14); + seqPrecacheId(pDudeInfo->seqStartID+6, hits); + seqPrecacheId(pDudeInfo->seqStartID+7, hits); + seqPrecacheId(pDudeInfo->seqStartID+8, hits); + seqPrecacheId(pDudeInfo->seqStartID+11, hits); + seqPrecacheId(pDudeInfo->seqStartID+13, hits); + seqPrecacheId(pDudeInfo->seqStartID+14, hits); break; } } -void PrecacheThing(spritetype *pSprite) { +void PrecacheThing(spritetype *pSprite, HitList &hits) { switch (pSprite->type) { case kThingGlassWindow: // worthless... case kThingFluorescent: - seqPrecacheId(12); + seqPrecacheId(12, hits); break; case kThingSpiderWeb: - seqPrecacheId(15); + seqPrecacheId(15, hits); break; case kThingMetalGrate: - seqPrecacheId(21); + seqPrecacheId(21, hits); break; case kThingFlammableTree: - seqPrecacheId(25); - seqPrecacheId(26); + seqPrecacheId(25, hits); + seqPrecacheId(26, hits); break; case kTrapMachinegun: - seqPrecacheId(38); - seqPrecacheId(40); - seqPrecacheId(28); + seqPrecacheId(38, hits); + seqPrecacheId(40, hits); + seqPrecacheId(28, hits); break; case kThingObjectGib: //case kThingObjectExplode: weird that only gib object is precached and this one is not break; } - tilePrecacheTile(pSprite->picnum); + tilePrecacheTile(pSprite->picnum, -1, hits); } -void PreloadTiles(void) +void PreloadTiles(HitList & hits) { nPrecacheCount = 0; int skyTile = -1; - memset(gotpic,0,sizeof(gotpic)); + hits.Zero(); // Fonts for (int i = 0; i < numsectors; i++) { - tilePrecacheTile(sector[i].floorpicnum, 0); - tilePrecacheTile(sector[i].ceilingpicnum, 0); + tilePrecacheTile(sector[i].floorpicnum, 0, hits); + tilePrecacheTile(sector[i].ceilingpicnum, 0, hits); if ((sector[i].ceilingstat&1) != 0 && skyTile == -1) skyTile = sector[i].ceilingpicnum; } for (int i = 0; i < numwalls; i++) { - tilePrecacheTile(wall[i].picnum, 0); + tilePrecacheTile(wall[i].picnum, 0, hits); if (wall[i].overpicnum >= 0) - tilePrecacheTile(wall[i].overpicnum, 0); + tilePrecacheTile(wall[i].overpicnum, 0, hits); } for (int i = 0; i < kMaxSprites; i++) { @@ -220,13 +323,13 @@ void PreloadTiles(void) switch (pSprite->statnum) { case kStatDude: - PrecacheDude(pSprite); + PrecacheDude(pSprite, hits); break; case kStatThing: - PrecacheThing(pSprite); + PrecacheThing(pSprite, hits); break; default: - tilePrecacheTile(pSprite->picnum); + tilePrecacheTile(pSprite->picnum, -1, hits); break; } } @@ -235,49 +338,50 @@ void PreloadTiles(void) // Precache common SEQs for (int i = 0; i < 100; i++) { - seqPrecacheId(i); + seqPrecacheId(i, hits); } - tilePrecacheTile(1147); // water drip - tilePrecacheTile(1160); // blood drip + tilePrecacheTile(1147, -1, hits); // water drip + tilePrecacheTile(1160, -1, hits); // blood drip // Player SEQs - seqPrecacheId(dudeInfo[31].seqStartID+6); - seqPrecacheId(dudeInfo[31].seqStartID+7); - seqPrecacheId(dudeInfo[31].seqStartID+8); - seqPrecacheId(dudeInfo[31].seqStartID+9); - seqPrecacheId(dudeInfo[31].seqStartID+10); - seqPrecacheId(dudeInfo[31].seqStartID+14); - seqPrecacheId(dudeInfo[31].seqStartID+15); - seqPrecacheId(dudeInfo[31].seqStartID+12); - seqPrecacheId(dudeInfo[31].seqStartID+16); - seqPrecacheId(dudeInfo[31].seqStartID+17); - seqPrecacheId(dudeInfo[31].seqStartID+18); + seqPrecacheId(dudeInfo[31].seqStartID+6, hits); + seqPrecacheId(dudeInfo[31].seqStartID+7, hits); + seqPrecacheId(dudeInfo[31].seqStartID+8, hits); + seqPrecacheId(dudeInfo[31].seqStartID+9, hits); + seqPrecacheId(dudeInfo[31].seqStartID+10, hits); + seqPrecacheId(dudeInfo[31].seqStartID+14, hits); + seqPrecacheId(dudeInfo[31].seqStartID+15, hits); + seqPrecacheId(dudeInfo[31].seqStartID+12, hits); + seqPrecacheId(dudeInfo[31].seqStartID+16, hits); + seqPrecacheId(dudeInfo[31].seqStartID+17, hits); + seqPrecacheId(dudeInfo[31].seqStartID+18, hits); if (skyTile > -1 && skyTile < kMaxTiles) { for (int i = 1; i < gSkyCount; i++) - tilePrecacheTile(skyTile+i, 0); + tilePrecacheTile(skyTile+i, 0, hits); } - WeaponPrecache(); - viewPrecacheTiles(); - fxPrecache(); - gibPrecache(); + WeaponPrecache(hits); + viewPrecacheTiles(hits); + fxPrecache(hits); + gibPrecache(hits); I_GetEvent(); } -void PreloadCache(void) +void PreloadCache() { if (!r_precache) return; - PreloadTiles(); + HitList hits; + PreloadTiles(hits); int cnt = 0; int percentDisplayed = -1; for (int i = 0; i < kMaxTiles; i++) { - if (TestBitString(gotpic, i)) + if (hits[i]) { PrecacheHardwareTextures(i); @@ -285,7 +389,6 @@ void PreloadCache(void) I_GetEvent(); } } - memset(gotpic,0,sizeof(gotpic)); } END_BLD_NS diff --git a/source/blood/src/qav.cpp b/source/blood/src/qav.cpp index c1e9603bb..e7e6aa908 100644 --- a/source/blood/src/qav.cpp +++ b/source/blood/src/qav.cpp @@ -170,14 +170,14 @@ void QAV::Preload(void) } } -void QAV::Precache(void) +void QAV::Precache(HitList &hits) { for (int i = 0; i < nFrames; i++) { for (int j = 0; j < 8; j++) { if (frames[i].tiles[j].picnum >= 0) - tilePrecacheTile(frames[i].tiles[j].picnum, 0); + tilePrecacheTile(frames[i].tiles[j].picnum, 0, hits); } } } diff --git a/source/blood/src/qav.h b/source/blood/src/qav.h index f67ffbfdf..1e4a28c85 100644 --- a/source/blood/src/qav.h +++ b/source/blood/src/qav.h @@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "build.h" #include "common_game.h" #include "blood.h" +#include "misc.h" class F2DDrawer; @@ -85,7 +86,7 @@ struct QAV void Draw(double x, double y, int ticks, int stat, int shade, int palnum, bool in3dscene); void Play(int, int, int, void *); void Preload(void); - void Precache(void); + void Precache(HitList &hits); void PlaySound(int nSound); void PlaySound3D(spritetype *pSprite, int nSound, int a3, int a4); diff --git a/source/blood/src/seq.cpp b/source/blood/src/seq.cpp index 723e9681f..e482b3c47 100644 --- a/source/blood/src/seq.cpp +++ b/source/blood/src/seq.cpp @@ -66,20 +66,20 @@ void Seq::Preload(void) tilePreloadTile(seqGetTile(&frames[i])); } -void Seq::Precache(void) +void Seq::Precache(HitList &hits) { if (memcmp(signature, "SEQ\x1a", 4) != 0) ThrowError("Invalid sequence"); if ((version & 0xff00) != 0x300) ThrowError("Obsolete sequence version"); for (int i = 0; i < nFrames; i++) - tilePrecacheTile(seqGetTile(&frames[i])); + tilePrecacheTile(seqGetTile(&frames[i]), -1, hits); } -void seqPrecacheId(int id) +void seqPrecacheId(int id, HitList &hits) { auto pSeq = getSequence(id); - if (pSeq) pSeq->Precache(); + if (pSeq) pSeq->Precache(hits); } SEQINST siWall[kMaxXWalls]; diff --git a/source/blood/src/seq.h b/source/blood/src/seq.h index 52c333a8c..7195fa51f 100644 --- a/source/blood/src/seq.h +++ b/source/blood/src/seq.h @@ -22,6 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. //------------------------------------------------------------------------- #pragma once +#include "misc.h" BEGIN_BLD_NS @@ -58,7 +59,7 @@ struct Seq { int atc; SEQFRAME frames[1]; void Preload(void); - void Precache(void); + void Precache(HitList &); }; struct ACTIVE @@ -84,7 +85,7 @@ inline int seqGetTile(SEQFRAME* pFrame) } int seqRegisterClient(void(*pClient)(int, int)); -void seqPrecacheId(int id); +void seqPrecacheId(int id, HitList &hits); SEQINST * GetInstance(int a1, int a2); void UnlockInstance(SEQINST *pInst); void seqSpawn(int a1, int a2, int a3, int a4 = -1); diff --git a/source/blood/src/tile.cpp b/source/blood/src/tile.cpp index ad1998dda..0f787b026 100644 --- a/source/blood/src/tile.cpp +++ b/source/blood/src/tile.cpp @@ -111,105 +111,6 @@ void tileProcessGLVoxels(void) } #endif -void tilePreloadTile(int nTile) -{ - if (!r_precache) return; - int n = 1; - switch (picanm[nTile].extra&7) - { - case 0: - n = 1; - break; - case 1: - n = 5; - break; - case 2: - n = 8; - break; - case 3: - n = 2; - break; - case 6: - case 7: - if (voxelIndex[nTile] < 0 || voxelIndex[nTile] >= kMaxVoxels) - { - voxelIndex[nTile] = -1; - picanm[nTile].extra &= ~7; - } - break; - } - - while(n--) - { - if (picanm[nTile].sf&PICANM_ANIMTYPE_MASK) - { - for (int frame = picanm[nTile].num; frame >= 0; frame--) - { - if ((picanm[nTile].sf&PICANM_ANIMTYPE_MASK) == PICANM_ANIMTYPE_BACK) - PrecacheHardwareTextures(nTile-frame); - else - PrecacheHardwareTextures(nTile+frame); - } - } - else - PrecacheHardwareTextures(nTile); - nTile += 1+picanm[nTile].num; - } -} - -int nPrecacheCount; -char precachehightile[2][(MAXTILES+7)>>3]; - -void tilePrecacheTile(int nTile, int nType) -{ - int n = 1; - switch (picanm[nTile].extra&7) - { - case 0: - n = 1; - break; - case 1: - n = 5; - break; - case 2: - n = 8; - break; - case 3: - n = 2; - break; - } - while(n--) - { - if (picanm[nTile].sf&PICANM_ANIMTYPE_MASK) - { - for (int frame = picanm[nTile].num; frame >= 0; frame--) - { - int tile; - if ((picanm[nTile].sf&PICANM_ANIMTYPE_MASK) == PICANM_ANIMTYPE_BACK) - tile = nTile-frame; - else - tile = nTile+frame; - if (!TestBitString(gotpic, tile)) - { - nPrecacheCount++; - SetBitString(gotpic, tile); - } - SetBitString(precachehightile[nType], tile); - } - } - else - { - if (!TestBitString(gotpic, nTile)) - { - nPrecacheCount++; - SetBitString(gotpic, nTile); - } - SetBitString(precachehightile[nType], nTile); - } - nTile += 1+picanm[nTile].num; - } -} - char tileGetSurfType(int hit) { int n = hit & 0x3fff; diff --git a/source/blood/src/weapon.cpp b/source/blood/src/weapon.cpp index 0725c5bec..0daf7ca11 100644 --- a/source/blood/src/weapon.cpp +++ b/source/blood/src/weapon.cpp @@ -223,12 +223,12 @@ void WeaponInit(void) } } -void WeaponPrecache(void) +void WeaponPrecache(HitList &hits) { for (int i = 0; i < kQAVEnd; i++) { if (weaponQAV[i]) - weaponQAV[i]->Precache(); + weaponQAV[i]->Precache(hits); } } From 4ce6f42932f6e84d71c9a7ef7a80a5c1ccb8c08c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 21:00:47 +0200 Subject: [PATCH 14/17] - new fullscreen HUD for Exhumed. Except for the ammo icons this should be complete. Fixes #374 --- source/exhumed/src/status.cpp | 150 ++++++++++++++++++++++++++++++++-- 1 file changed, 143 insertions(+), 7 deletions(-) diff --git a/source/exhumed/src/status.cpp b/source/exhumed/src/status.cpp index 42bbfcb3c..5903662cf 100644 --- a/source/exhumed/src/status.cpp +++ b/source/exhumed/src/status.cpp @@ -514,12 +514,13 @@ void MoveStatus() class DExhumedStatusBar : public DBaseStatusBar { - DHUDFont textfont; + DHUDFont textfont, numberFont; public: DExhumedStatusBar() { textfont = { SmallFont, 1, Off, 1, 1 }; + numberFont = { BigFont, 0, Off, 1, 1 }; } private: @@ -589,6 +590,19 @@ private: } } + //--------------------------------------------------------------------------- + // + // draws a sequence animation to the status bar + // + //--------------------------------------------------------------------------- + + FGameTexture * GetStatusSequencePic(short nSequence, uint16_t edx) + { + edx += SeqBase[nSequence]; + int nFrameBase = FrameBase[edx]; + return tileGetTexture(ChunkPict[nFrameBase]); + } + //--------------------------------------------------------------------------- // // @@ -698,6 +712,132 @@ private: } } + //========================================================================== + // + // Fullscreen HUD variant #1 + // + //========================================================================== + + void DrawHUD2() + { + BeginHUD(320, 200, 1); + + auto pp = &PlayerList[nLocalPlayer]; + + FString format; + FGameTexture* img; + double imgScale; + double baseScale = numberFont.mFont->GetHeight() * 0.9375; + + + // + // Health + // + img = GetStatusSequencePic(nStatusSeqOffset + 125, 0); + imgScale = baseScale / img->GetDisplayHeight(); + DrawGraphic(img, 1.5, -1, DI_ITEM_LEFT_BOTTOM, 1., -1, -1, imgScale, imgScale); + + if (!althud_flashing || pp->nHealth > 150 || (leveltime & 8)) + { + int s = -8; + if (althud_flashing && pp->nHealth > 800) + s += (sintable[(leveltime << 7) & 2047] >> 10); + int intens = clamp(255 - 4 * s, 0, 255); + auto pe = PalEntry(255, intens, intens, intens); + format.Format("%d", pp->nHealth >> 3); + SBar_DrawString(this, &numberFont, format, 20, -numberFont.mFont->GetHeight()+2, DI_TEXT_ALIGN_LEFT, CR_UNTRANSLATED, 1, 0, 0, 1, 1); + } + + // + // Magic + // + if (nItemSeq >= 0) + { + img = GetStatusSequencePic(nItemSeq + nStatusSeqOffset, nItemFrame); + imgScale = baseScale / img->GetDisplayHeight(); + DrawGraphic(img, 70, -1, DI_ITEM_CENTER_BOTTOM, 1., -1, -1, imgScale, imgScale); + + format.Format("%d", pp->nMagic / 10); + SBar_DrawString(this, &numberFont, format, 87, -numberFont.mFont->GetHeight()+2, DI_TEXT_ALIGN_LEFT, CR_UNTRANSLATED, 1, 0, 0, 1, 1); + } + // + // Weapon + // + const short ammo_sprites[] = { -1, -1 }; + + int weapon = pp->nCurrentWeapon; + int wicon = 0;// ammo_sprites[weapon]; + int ammo = nCounterDest;// pp->WpnAmmo[weapon]; + if (ammo > 0) // wicon > 0 + { + format.Format("%d", ammo); + img = tileGetTexture(wicon); + imgScale = baseScale / img->GetDisplayHeight(); + auto imgX = 21.125; + auto strlen = format.Len(); + + if (strlen > 1) + { + imgX += (imgX * 0.855) * (strlen - 1); + } + + if ((!althud_flashing || leveltime & 8 || ammo > 10))// (DamageData[weapon].max_ammo / 10))) + { + SBar_DrawString(this, &numberFont, format, -4, -numberFont.mFont->GetHeight()+2, DI_TEXT_ALIGN_RIGHT, CR_UNTRANSLATED, 1, 0, 0, 1, 1); + } + + //DrawGraphic(img, -imgX, -1, DI_ITEM_RIGHT_BOTTOM, 1, -1, -1, imgScale, imgScale); + } + +#if 0 + // + // Selected inventory item + // + img = tileGetTexture(icons[pp->InventoryNum]); + imgScale = baseScale / img->GetDisplayHeight(); + int x = 165; + DrawGraphic(img, x, -1, DI_ITEM_LEFT_BOTTOM, 1, -1, -1, imgScale, imgScale); + + PlayerUpdateInventoryState(pp, x + 3.0, -18.0, 1, 1); + PlayerUpdateInventoryPercent(pp, x + 3.5, -20.5, 1, 1); +#endif + + + // + // keys + // + + uint16_t nKeys = PlayerList[nLocalPlayer].keys; + + int val = 675; + int x = -134; + + for (int i = 0; i < 4; i++) + { + if (nKeys & 0x1000) + { + auto tex = tileGetTexture(val); + if (tex && tex->isValid()) + { + DrawGraphic(tex, x, -2, DI_ITEM_LEFT_BOTTOM, 1, -1, -1, 1, 1); + } + } + + nKeys >>= 1; + val += 4; + x += 20; + } + +#if 0 + + + DisplayKeys(pp, -25, -38, 0.8625, 0.8625); + PrintLevelStats(int(baseScale + 4)); +#endif + } + + + //--------------------------------------------------------------------------- // // draw the full status bar @@ -706,11 +846,6 @@ private: void DrawStatus() { - BeginStatusBar(320, 200, 40); - char numberBuf[10] = { 0 }; - char stringBuf[20] = { 0 }; - char coordBuf[50] = { 0 }; // not sure of the size for this? - if (hud_size <= Hud_StbarOverlay) { // draw the main bar itself @@ -727,7 +862,8 @@ private: } else if (hud_size == Hud_full) { - BeginHUD(320, 200, 1); + DrawHUD2(); + return; } if (/*!bFullScreen &&*/ nNetTime) From 5490be4f710558091bdd1e3417f5533773780348 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 21:41:02 +0200 Subject: [PATCH 15/17] - draw a player sprite on Exhumed's automap. Not particularly convincing yet, I first need to find out the specific sprites of the walk animation. --- source/exhumed/src/exhumed.h | 1 + source/exhumed/src/map.cpp | 52 ++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/source/exhumed/src/exhumed.h b/source/exhumed/src/exhumed.h index 846566d37..49589816a 100644 --- a/source/exhumed/src/exhumed.h +++ b/source/exhumed/src/exhumed.h @@ -258,6 +258,7 @@ struct GameInterface : ::GameInterface void NewGame(MapRecord *map, int skill) override; void LevelCompleted(MapRecord *map, int skill) override; void NextLevel(MapRecord *map, int skill) override; + bool DrawAutomapPlayer(int x, int y, int z, int a) override; ::GameStats getStats() override; diff --git a/source/exhumed/src/map.cpp b/source/exhumed/src/map.cpp index 086debc6e..b5e7fe763 100644 --- a/source/exhumed/src/map.cpp +++ b/source/exhumed/src/map.cpp @@ -23,6 +23,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "view.h" #include "v_2ddrawer.h" #include "automap.h" +#include "mmulti.h" +#include "v_draw.h" BEGIN_PS_NS @@ -51,4 +53,54 @@ void DrawMap() DrawOverheadMap(initx, inity, inita); } } + +template void GetSpriteExtents(T const* const pSprite, int* top, int* bottom) +{ + *top = *bottom = pSprite->z; + if ((pSprite->cstat & 0x30) != 0x20) + { + int height = tileHeight(pSprite->picnum); + int center = height / 2 + tileTopOffset(pSprite->picnum); + *top -= (pSprite->yrepeat << 2) * center; + *bottom += (pSprite->yrepeat << 2) * (height - center); + } +} + +bool GameInterface::DrawAutomapPlayer(int x, int y, int z, int a) +{ + int nCos = z * sintable[(0 - a) & 2047]; + int nSin = z * sintable[(1536 - a) & 2047]; + int nCos2 = mulscale16(nCos, yxaspect); + int nSin2 = mulscale16(nSin, yxaspect); + + for (int i = connecthead; i >= 0; i = connectpoint2[i]) + { + int nPSprite = PlayerList[i].nSprite; + spritetype* pSprite = &sprite[nPSprite]; + int px = pSprite->x - x; + int py = pSprite->y - y; + int pa = (pSprite->ang - a) & 2047; + int x1 = dmulscale16(px, nCos, -py, nSin); + int y1 = dmulscale16(py, nCos2, px, nSin2); + if (i == nLocalPlayer)// || gGameOptions.nGameType == 1) + { + int nTile = pSprite->picnum; + int ceilZ, ceilHit, floorZ, floorHit; + getzrange_old(pSprite->x, pSprite->y, pSprite->z, pSprite->sectnum, &ceilZ, &ceilHit, &floorZ, &floorHit, (pSprite->clipdist << 2) + 16, CLIPMASK0); + int nTop, nBottom; + GetSpriteExtents(pSprite, &nTop, &nBottom); + int nScale = mulscale((pSprite->yrepeat + ((floorZ - nBottom) >> 8)) * z, yxaspect, 16); + nScale = clamp(nScale, 8000, 65536 << 1); + // Players on automap + double x = xdim / 2. + x1 / double(1 << 12); + double y = ydim / 2. + y1 / double(1 << 12); + // This very likely needs fixing later + DrawTexture(twod, tileGetTexture(nTile /*+ ((leveltime >> 2) & 3)*/, true), x, y, DTA_ClipLeft, windowxy1.x, DTA_ClipTop, windowxy1.y, DTA_ScaleX, z / 1536., DTA_ScaleY, z / 1536., DTA_CenterOffset, true, + DTA_ClipRight, windowxy2.x + 1, DTA_ClipBottom, windowxy2.y + 1, DTA_Alpha, (pSprite->cstat & 2 ? 0.5 : 1.), TAG_DONE); + break; + } + } + return true; +} + END_PS_NS From d011a16c5b8b2d6082a5dce4cb6c5fede7724732 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 22:37:21 +0200 Subject: [PATCH 16/17] - added a menu option for WT's music switch. Fixes #370 --- source/common/audio/sound/oalsound.cpp | 4 + source/core/gamecontrol.cpp | 2 +- source/core/menu/menudef.cpp | 1 + source/games/duke/src/player_d.cpp | 2 +- wadsrc/static/engine/menudef.txt | 4 + wadsrc/static/language.csv | 203 +++++++++++++------------ 6 files changed, 113 insertions(+), 103 deletions(-) diff --git a/source/common/audio/sound/oalsound.cpp b/source/common/audio/sound/oalsound.cpp index 8b8dba87f..81fa4fe4e 100644 --- a/source/common/audio/sound/oalsound.cpp +++ b/source/common/audio/sound/oalsound.cpp @@ -1098,6 +1098,10 @@ SoundHandle OpenALSoundRenderer::LoadSound(uint8_t *sfxdata, int length) data.resize(total * 2); } data.resize(total); + if (total == 0) + { + return retval; + } SoundDecoder_Close(decoder); ALenum err; diff --git a/source/core/gamecontrol.cpp b/source/core/gamecontrol.cpp index 923100633..fa1025e1a 100644 --- a/source/core/gamecontrol.cpp +++ b/source/core/gamecontrol.cpp @@ -909,7 +909,6 @@ int RunGame() S_ParseSndInfo(); InitStatistics(); LoadScripts(); - M_Init(); SetDefaultStrings(); if (Args->CheckParm("-sounddebug")) C_DoCommand("stat sounddebug"); @@ -924,6 +923,7 @@ int RunGame() SetupGameButtons(); gi->app_init(); + M_Init(); enginePostInit(); // This must not be done earlier! videoInit(); diff --git a/source/core/menu/menudef.cpp b/source/core/menu/menudef.cpp index 092472966..8d1fadaca 100644 --- a/source/core/menu/menudef.cpp +++ b/source/core/menu/menudef.cpp @@ -158,6 +158,7 @@ static const gamefilter games[] = { { "Blood", GAMEFLAG_BLOOD}, { "ShadowWarrior", GAMEFLAG_SW}, { "Exhumed", GAMEFLAG_POWERSLAVE|GAMEFLAG_EXHUMED}, + { "Worldtour", GAMEFLAG_WORLDTOUR}, }; // for other parts that need to filter by game name. diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index 71142a5f4..99a128743 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -1723,7 +1723,7 @@ static void movement(int snum, ESyncBits actions, int psect, int fz, int cz, int if ((p->posz + p->poszv) >= (fz - (i << 8))) // hit the ground { - S_StopSound(DUKE_SCREAM, pi); + //S_StopSound(DUKE_SCREAM, pi); if (sector[p->cursectnum].lotag != 1) { if (p->falling_counter > 62) quickkill(p); diff --git a/wadsrc/static/engine/menudef.txt b/wadsrc/static/engine/menudef.txt index fc9fe66dd..5b5d1c17c 100644 --- a/wadsrc/static/engine/menudef.txt +++ b/wadsrc/static/engine/menudef.txt @@ -1206,6 +1206,10 @@ OptionMenu SoundOptions //protected { Option "$SNDMNU_CDEMU", "mus_redbook", "OnOff" } + ifgame(Worldtour) + { + Option "$SNDMNU_WTMUSIC", "wt_forcemidi", "OnOff" + } ifgame(Duke, Nam, WW2GI, Redneck, RedneckRides, ShadowWarrior) { Option "$SNDMNU_AMBIENCE", "snd_ambience", "OnOff" diff --git a/wadsrc/static/language.csv b/wadsrc/static/language.csv index f2cd9bd89..f134e0100 100644 --- a/wadsrc/static/language.csv +++ b/wadsrc/static/language.csv @@ -334,7 +334,7 @@ Yeehaa,CNTRLMNU_YEEHAA,not translatable,,,,,,,,,,,,,,,,,,,,, Whiskey,CNTRLMNU_WHISKEY,,,,,Whisky,,,,,,,,,,,,,,,,, Moonshine,CNTRLMNU_MOONSHINE,,,,,Schwarzgebrannter,,,,,,,,,,,,,,,Whiskey ilegal,, Crystal Ball,CNTRLMNU_CRYSTALBALL,,,,,Kristallkugel,,,,,,,,,,,,,,,Bilă de cristal,, -Jump Boots,CNTRLMNU_JUMPBOOTS,,,,,Sprungstiefel,,,,,,,,,,,,,,,Cizme sărituri,, +Jump Boots,CNTRLMNU_JUMPBOOTS,,,,,Sprungstiefel,,,,,,,,,,,,,,,Cizme pentru sărituri,, Beast Vision,CNTRLMNU_BEASTVISION,,,,,,,,,,,,,,,,,,,,Vedere de bestie,, Tank Mode,CNTRLMNU_TANKMODE,,,,,Panzermodus,,,,,,,,,,,,,,,Mod Tanc,, Smokes,CNTRLMNU_SMOKES,What precisely is this?,,,,,,,,,,,,,,,,,,,,, @@ -434,115 +434,115 @@ Moving Up/Down,OPTVAL_MOVINGUPDOWN,,,,Pohyb nahoru/dolů,Auf/abwärtsbewegung,,M Inverted,OPTVAL_INVERTED,,,,Inverzní,Invertiert,,Inversigita,Invertido,,Käännetty,Inversé,,Invertito,反転する,반전,Omgekeerd,Odwrócony,Invertido,,Inversat,Инвертировано,Обрнуто Not Inverted,OPTVAL_NOTINVERTED,,,,Nikoliv inverzní,nicht invertiert,,Ne Inversigita,No invertido,,Ei käännetty,Non Inversé,,Non invertito,反転しない,반전되지 않음,Niet omgekeerd,Nieodwrócony,Não Invertido,,Neinversat,Прямо,Не обрнуто ,PLayer Menu,,,,,,,,,,,,,,,,,,,,,, -Player Setup,MNU_PLAYERSETUP,,,,Nastavení hráče,Spielereinstellungen,,Ludanto Agordaĵo,Config. del jugador,,Pelaaja-asetukset,Options Joueur,Játékos testreszabása,Settaggio giocatore,プレイヤーの特徴,플레이어 설정,Speler instellen,Ustawienia Gracza,Definições de Jogador,,,Настройки игрока,Подешавања играча -Blue,TXT_COLOR_BLUE,,,,Modrá,Blau,,Blua,Azul,,Sininen,Bleu,Kék,Blu,青,청색,Blauw,Niebieski,Azul,,,Синий,Плава -Red,TXT_COLOR_RED,,,,Červená,Rot,,Ruĝa,Rojo,,Punainen,Rouge,Vörös,Rosso,赤,적색,Rood,Czerwony,Vermelho,,,Красный,Црвена -Green,TXT_COLOR_GREEN,,,,Zelená,Grün,,Verda,Verde,,Vihreä,Vert,Zöld,Verde,緑,녹색,Groen,Zielony,Verde,,,Зелёный,Зелена -Gray,TXT_COLOR_GRAY,,,Grey,Šedá,Grau,,Griza,Gris,,Harmaa,Gris,Szürke,Grigio,灰,회색,Grijs,Szary,Cinza,,,Серый,Сива +Player Setup,MNU_PLAYERSETUP,,,,Nastavení hráče,Spielereinstellungen,,Ludanto Agordaĵo,Config. del jugador,,Pelaaja-asetukset,Options Joueur,Játékos testreszabása,Settaggio giocatore,プレイヤーの特徴,플레이어 설정,Speler instellen,Ustawienia Gracza,Definições de Jogador,,Configurare jucător,Настройки игрока,Подешавања играча +Blue,TXT_COLOR_BLUE,,,,Modrá,Blau,,Blua,Azul,,Sininen,Bleu,Kék,Blu,青,청색,Blauw,Niebieski,Azul,,Albastru,Синий,Плава +Red,TXT_COLOR_RED,,,,Červená,Rot,,Ruĝa,Rojo,,Punainen,Rouge,Vörös,Rosso,赤,적색,Rood,Czerwony,Vermelho,,Roșu,Красный,Црвена +Green,TXT_COLOR_GREEN,,,,Zelená,Grün,,Verda,Verde,,Vihreä,Vert,Zöld,Verde,緑,녹색,Groen,Zielony,Verde,,Verde,Зелёный,Зелена +Gray,TXT_COLOR_GRAY,,,Grey,Šedá,Grau,,Griza,Gris,,Harmaa,Gris,Szürke,Grigio,灰,회색,Grijs,Szary,Cinza,,Gri,Серый,Сива Dark gray,TXT_COLOR_DARKGRAY,,,"Dark grey -",Tmavě šedá,Dunkelgrau,,Grizeta,gris oscuro,,Tummanharmaa,Gris sombre,Sötétszürke,Grigio scuro,鉛,치색,Donkergrijs,Ciemnoszary,Cinza escuro,,,Тёмно-серый,Тамно сива -Dark Green,TXT_COLOR_DARKGREEN,,,,Tmavě zelená,Dunkelgrün,,Malhelverda,Verde oscuro,,Tummanvihreä,Vert sombre,Sötétzöld,Verde scuro,深,흑녹색,Donkergroen,Ciemnozielony,Verde escuro,,,Тёмно-зелёный,Тамна зелена -Brown,TXT_COLOR_BROWN,,,,Hnědá,Braun,,Bruna,Marrón,,Ruskea,Brun,Barna,Marrone,茶,갈색,Bruin,Brązowy,Marrom,,,Коричневый,Браон -Dark Blue,TXT_COLOR_DARKBLUE,,,,Tmavě modrá,Dunkelblau,,Malhelblua,Azul oscuro,,Tummansininen,Bleu sombre,Sötétkék,Blu scuro,,,Donkerblauw,,Azul escuro,,,Тёмно-Синий,Тамна Плава -Light Red,TXT_COLOR_LIGHTRED,,,,Světle červená,Hellrot,,Ruĝeta,Rojo claro,,Vaaleanpunainen,Rouge clair,,Rosso chiaro,丹,옅은 적색,Licht Rood,Jasnoczerwony,Vermelho claro,,,Светло-красный,Светло црвена -Yellow,TXT_COLOR_YELLOW,,,,Žlutá,Gelb,,Flava,Amarillo,,Keltainen,Jaune,Sárga,Giallo,黄,노란색,Geel,Żółty,Amarelo,,,Жёлтый,Жута -Purple,TXT_COLOR_PURPLE,,,,Fialová,Violett,,Purpura,Morado,,Purppura,Violet,Lila,Viola,紫,보라색,Paars,Fioletowy,Roxo,,,Фиолетовый,Љубичаста -Olive,TXT_COLOR_DULLGREEN,,,,Bledě zelená,Blassgrün,,Gris-Verda,Verde pálido,,Haaleanvihreä,Vert pâle,,Verde pallido,苔,암녹색,Saaie groen,Matowa Zieleń,Verde pálido,,,Мутно-зелёный,Тупа зелена +",Tmavě šedá,Dunkelgrau,,Grizeta,gris oscuro,,Tummanharmaa,Gris sombre,Sötétszürke,Grigio scuro,鉛,치색,Donkergrijs,Ciemnoszary,Cinza escuro,,Gri închis,Тёмно-серый,Тамно сива +Dark Green,TXT_COLOR_DARKGREEN,,,,Tmavě zelená,Dunkelgrün,,Malhelverda,Verde oscuro,,Tummanvihreä,Vert sombre,Sötétzöld,Verde scuro,深,흑녹색,Donkergroen,Ciemnozielony,Verde escuro,,Verde închis,Тёмно-зелёный,Тамна зелена +Brown,TXT_COLOR_BROWN,,,,Hnědá,Braun,,Bruna,Marrón,,Ruskea,Brun,Barna,Marrone,茶,갈색,Bruin,Brązowy,Marrom,,Maro,Коричневый,Браон +Dark Blue,TXT_COLOR_DARKBLUE,,,,Tmavě modrá,Dunkelblau,,Malhelblua,Azul oscuro,,Tummansininen,Bleu sombre,Sötétkék,Blu scuro,,,Donkerblauw,,Azul escuro,,Albastru închis,Тёмно-Синий,Тамна Плава +Light Red,TXT_COLOR_LIGHTRED,,,,Světle červená,Hellrot,,Ruĝeta,Rojo claro,,Vaaleanpunainen,Rouge clair,,Rosso chiaro,丹,옅은 적색,Licht Rood,Jasnoczerwony,Vermelho claro,,Roșu deschis,Светло-красный,Светло црвена +Yellow,TXT_COLOR_YELLOW,,,,Žlutá,Gelb,,Flava,Amarillo,,Keltainen,Jaune,Sárga,Giallo,黄,노란색,Geel,Żółty,Amarelo,,Galben,Жёлтый,Жута +Purple,TXT_COLOR_PURPLE,,,,Fialová,Violett,,Purpura,Morado,,Purppura,Violet,Lila,Viola,紫,보라색,Paars,Fioletowy,Roxo,,Mov,Фиолетовый,Љубичаста +Olive,TXT_COLOR_DULLGREEN,,,,Bledě zelená,Blassgrün,,Gris-Verda,Verde pálido,,Haaleanvihreä,Vert pâle,,Verde pallido,苔,암녹색,Saaie groen,Matowa Zieleń,Verde pálido,,Măsliniu,Мутно-зелёный,Тупа зелена Auto,OPTVAL_AUTO,,,,,,,Aŭtomata,Automático,,Automaattinen,,,Automatico,自動,자동,,Automatycznie,Automático,,,Авто,Аутоматски -Name,PLYRMNU_NAME,,,,Jméno,,,Nomo,Nombre,,Nimi,Nom,Név,Nome,名前,이름,Naam,Imię,Nome,,,Имя,Надимак -Team,PLYRMNU_TEAM,,,,Tým,,,Teamo,Equipo,,Joukkue,Equipe,Csapat,Squadra,チーム,팀,Team,Drużyna,Equipe,Equipa,,Команда,Тим -Color,PLYRMNU_PLAYERCOLOR,,,Colour,Barva,Farbe,,Koloro,,,Väri,Couleur,Szín,Colore,色,색상,Kleur,Kolor,Cor,,,Цвет,Боја -Multiplayer taunts,PLRMNU_TAUNTS,,,,,Mehrspieler-Spott,,,,,,,,,,,,,,,,, -Gender,PLYRMNU_PLAYERGENDER,,,,Pohlaví,Geschlecht,,Genro,Género,,Sukupuoli,Genre,Nem,Sesso,性別,성별,Geslacht,Płeć,Gênero,,,Пол,Пол -Male,OPTVAL_MALE,,,,Muž,Männlich,,Vira (Li),Masculino,,Miespuolinen,Masculin,,Maschio,男,남성,Man,Mężczyzna,Masculino,,,Мужской,Мушко -Female,OPTVAL_FEMALE,,,,Žena,Weiblich,,Ina (Ŝi),Femenino,,Naispuolinen,Féminin,,Femmina,女,여성,Vrouw,Kobieta,Feminino,,,Женский,Женско -Neutral,OPTVAL_NEUTRAL,,,,Neutrální,Neutral,,Neŭtrala (Ri),Neutro,,Sukupuoleton,Neutre,,Neutrale,中間,중성,Neutraal,Neutralne,Neutro,,,Нейтральный,Неутрално -Object,OPTVAL_OTHER,,,,Objekt,Objekt,,Objekto (Ĝi),Objeto,,Olio,Objet,,Oggetto,物体,기타,Doel,Obiekt,Objeto,,,Предмет,Предмет +Name,PLYRMNU_NAME,,,,Jméno,,,Nomo,Nombre,,Nimi,Nom,Név,Nome,名前,이름,Naam,Imię,Nome,,Nume,Имя,Надимак +Team,PLYRMNU_TEAM,,,,Tým,,,Teamo,Equipo,,Joukkue,Equipe,Csapat,Squadra,チーム,팀,Team,Drużyna,Equipe,Equipa,Echipă,Команда,Тим +Color,PLYRMNU_PLAYERCOLOR,,,Colour,Barva,Farbe,,Koloro,,,Väri,Couleur,Szín,Colore,色,색상,Kleur,Kolor,Cor,,Culoare,Цвет,Боја +Multiplayer taunts,PLRMNU_TAUNTS,,,,,Mehrspieler-Spott,,,,,,,,,,,,,,,Tachinări online,, +Gender,PLYRMNU_PLAYERGENDER,,,,Pohlaví,Geschlecht,,Genro,Género,,Sukupuoli,Genre,Nem,Sesso,性別,성별,Geslacht,Płeć,Gênero,,Sex,Пол,Пол +Male,OPTVAL_MALE,,,,Muž,Männlich,,Vira (Li),Masculino,,Miespuolinen,Masculin,,Maschio,男,남성,Man,Mężczyzna,Masculino,,Masculin,Мужской,Мушко +Female,OPTVAL_FEMALE,,,,Žena,Weiblich,,Ina (Ŝi),Femenino,,Naispuolinen,Féminin,,Femmina,女,여성,Vrouw,Kobieta,Feminino,,Feminin,Женский,Женско +Neutral,OPTVAL_NEUTRAL,,,,Neutrální,Neutral,,Neŭtrala (Ri),Neutro,,Sukupuoleton,Neutre,,Neutrale,中間,중성,Neutraal,Neutralne,Neutro,,Neutru,Нейтральный,Неутрално +Object,OPTVAL_OTHER,,,,Objekt,Objekt,,Objekto (Ĝi),Objeto,,Olio,Objet,,Oggetto,物体,기타,Doel,Obiekt,Objeto,,Obiect,Предмет,Предмет ,Multiplayer,,,,,,,,,,,,,,,,,,,,,, -Game Options,NETMNU_OPTIONS,,,,,Spieleinstellungen,,,,,,,,,,,,,,,,, -Launch Game,NETMNU_LAUNCH,,,,,Spiel starten,,,,,,,,,,,,,,,,, -Game Type,NETMNU_GAMETYPE,,,,,,,,,,,,,,,,,,,,,, -Deathmatch (Spawn),NETMNU_GAMETYPE1,,,,,,,,,,,,,,,,,,,,,, -DukeMatch (Spawn),NETMNU_GAMETYPE1,Duke,,,,,,,,,,,,,,,,,,,,, -GI Match (Spawn),NETMNU_GAMETYPE1,Nam,,,,,,,,,,,,,,,,,,,,, -GruntMatch (Spawn),NETMNU_GAMETYPE1,WW2GI,,,,,,,,,,,,,,,,,,,,, -Cooperative Play,NETMNU_GAMETYPE2,,,,,,,,,,,,,,,,,,,,,, -Deathmatch (No Spawn),NETMNU_GAMETYPE3,,,,,,,,,,,,,,,,,,,,,, -DukeMatch (No Spawn),NETMNU_GAMETYPE3,Duke,,,,,,,,,,,,,,,,,,,,, -GI Match (No Spawn),NETMNU_GAMETYPE3,Nam,,,,,,,,,,,,,,,,,,,,, -GruntMatch (No Spawn),NETMNU_GAMETYPE3,WW2GI,,,,,,,,,,,,,,,,,,,,, -Team DM (Spawn),NETMNU_GAMETYPE4,,,,,,,,,,,,,,,,,,,,,, -Team DM (No Spawn),NETMNU_GAMETYPE5,,,,,,,,,,,,,,,,,,,,,, -Episode,NETMNU_EPISODE,,,,,,,,,,,,,,,,,,,,,, -Level,NETMNU_LEVEL,,,,,,,,,,,,,,,,,,,,,, -Monsters,NETMNU_MONSTERS,,,,,,,,,,,,,,,,,,,,,, -Markers,NETMNU_MARKERS,,,,,,,,,,,,,,,,,,,,,, -Map Exits,NETMNU_MAPEXITS,,,,,,,,,,,,,,,,,,,,,, -Friendly Fire,NETMNU_FFIRE,,,,,,,,,,,,,,,,,,,,,, +Game Options,NETMNU_OPTIONS,,,,,Spieleinstellungen,,,,,,,,,,,,,,,Setări joc,, +Launch Game,NETMNU_LAUNCH,,,,,Spiel starten,,,,,,,,,,,,,,,Pornire joc,, +Game Type,NETMNU_GAMETYPE,,,,,,,,,,,,,,,,,,,,Tip joc,, +Deathmatch (Spawn),NETMNU_GAMETYPE1,,,,,,,,,,,,,,,,,,,,Deathmatch (doar spawn),, +DukeMatch (Spawn),NETMNU_GAMETYPE1,Duke,,,,,,,,,,,,,,,,,,,DukeMatch (doar spawn),, +GI Match (Spawn),NETMNU_GAMETYPE1,Nam,,,,,,,,,,,,,,,,,,,Meci GI (doar spawn),, +GruntMatch (Spawn),NETMNU_GAMETYPE1,WW2GI,,,,,,,,,,,,,,,,,,,GruntMatch (doar spawn),, +Cooperative Play,NETMNU_GAMETYPE2,,,,,,,,,,,,,,,,,,,,Joc Cooperativ,, +Deathmatch (No Spawn),NETMNU_GAMETYPE3,,,,,,,,,,,,,,,,,,,,Deathmatch (fără spawn),, +DukeMatch (No Spawn),NETMNU_GAMETYPE3,Duke,,,,,,,,,,,,,,,,,,,DukeMatch (fără spawn),, +GI Match (No Spawn),NETMNU_GAMETYPE3,Nam,,,,,,,,,,,,,,,,,,,Meci GI (fără spawn),, +GruntMatch (No Spawn),NETMNU_GAMETYPE3,WW2GI,,,,,,,,,,,,,,,,,,,GruntMatch (fără spawn),, +Team DM (Spawn),NETMNU_GAMETYPE4,,,,,,,,,,,,,,,,,,,,DM în echipă (doar spawn),, +Team DM (No Spawn),NETMNU_GAMETYPE5,,,,,,,,,,,,,,,,,,,,DM în echipă (fără spawn),, +Episode,NETMNU_EPISODE,,,,,,,,,,,,,,,,,,,,Episod,, +Level,NETMNU_LEVEL,,,,,,,,,,,,,,,,,,,,Nivel,, +Monsters,NETMNU_MONSTERS,,,,,,,,,,,,,,,,,,,,Monștri,, +Markers,NETMNU_MARKERS,,,,,,,,,,,,,,,,,,,,Markere,, +Map Exits,NETMNU_MAPEXITS,,,,,,,,,,,,,,,,,,,,Ieșiri Hartă,, +Friendly Fire,NETMNU_FFIRE,,,,,,,,,,,,,,,,,,,,Accidente,, Accept,NETMNU_ACCEPT,,,,,,,,,,,,,,,,,,,,,, Server,NETMNU_SERVER,,,,,,,,,,,,,,,,,,,,,, Port,NETMNU_PORT,Network port!,,,,,,,,,,,,,,,,,,,,, -Connect,NETMNU_CONNECT,,,,,,,,,,,,,,,,,,,,,, +Connect,NETMNU_CONNECT,,,,,,,,,,,,,,,,,,,,Conectare,, ,Gameplay options,,,,,,,,,,,,,,,,,,,,,, -Gameplay Options,GMPLYMNU_TITLE,,,,Nastavení herních mechanik,Gameplay-Optionen,,Ludadagordoj,Opciones de jugabilidad,,Pelattavuusasetukset,Options Gameplay,,Opzioni gameplay,ゲームプレイ オプション,게임플레이 설정,Gameplay-opties,Opcje Rozgrywki,Opções de Jogabilidade,,,Настройки геймплея,Подешавања гејмплеја -Always,OPTVAL_ALWAYS,,,,Vždy,Immer,,Ĉiam,Siempre,,Aina,Toujours,,Sempre,常に,언제나,Altijd,Zawsze,Sempre,,,Всегда,Увек -Never,OPTVAL_NEVER,,,,Nikdy,Nie,,Neniam,Nunca,,Ei koskaan,Jamais,,Mai,しない,없음,Nooit,Nigdy,Nunca,,,Никогда,Никад -Hitscan only,OPTVAL_HITSCAN,,,,,Nur Hitscan,,,,,,,,,,,,,,,,, -Autoaim,PLYRMNU_AUTOAIM,,,,Automatické míření,Automatisch zielen,,Aŭtomate-celi,Autoapuntar,,Automaattitähtäys,Auto-visée,Auto célzás,Mira automatica,自動照準,자동 조준,Autoaim,Automatyczne Celowanie,Mira Automática,,,Автоприцеливание,Аутоматско циљање -Always Run,PLYRMNU_ALWAYSRUN,,,,Vždy běžet,Immer Rennen,,Ĉiam Kuri,Siempre correr,,Jatkuva juoksu,Toujours courir,Mindig fusson,Corri sempre,常に駆け足,달리기 토글,Altijd lopen,Zawsze Biegaj,Sempre Correr,Correr Sempre,,Постоянный бег,Увек трчи -Run Mode,PLRMNU_RUNMODE,,,,,Rennmodus,,,,,,,,,,,,,,,,, -Allow Toggle,PLRMNU_TOGGLE,,,,,Umschalten erlauben,,,,,,,,,,,,,,,,, -Override Toggle,PLRMNU_OVERRIDE,,,,,Umschalten blockieren,,,,,,,,,,,,,,,,, -If New,PLRMNU_IFNEW,,,,,Wenn neu,,,,,,,,,,,,,,,,, -Equip Weapon Pickups,PLRMNU_EQUIP,,,,,Waffen sofort aktivieren,,,,,,,,,,,,,,,,, -Parental Lock,PLRMNU_PLOCK,,,,,Kindersicherung,,,,,,,,,,,,,,,,, -Only preferred,PLRMNU_PREFERRED,,,,,Nur bevorzugte,,,,,,,,,,,,,,,,, +Gameplay Options,GMPLYMNU_TITLE,,,,Nastavení herních mechanik,Gameplay-Optionen,,Ludadagordoj,Opciones de jugabilidad,,Pelattavuusasetukset,Options Gameplay,,Opzioni gameplay,ゲームプレイ オプション,게임플레이 설정,Gameplay-opties,Opcje Rozgrywki,Opções de Jogabilidade,,Setări pe timp de joc,Настройки геймплея,Подешавања гејмплеја +Always,OPTVAL_ALWAYS,,,,Vždy,Immer,,Ĉiam,Siempre,,Aina,Toujours,,Sempre,常に,언제나,Altijd,Zawsze,Sempre,,Mereu,Всегда,Увек +Never,OPTVAL_NEVER,,,,Nikdy,Nie,,Neniam,Nunca,,Ei koskaan,Jamais,,Mai,しない,없음,Nooit,Nigdy,Nunca,,Niciodată,Никогда,Никад +Hitscan only,OPTVAL_HITSCAN,,,,,Nur Hitscan,,,,,,,,,,,,,,,Doar hitscan,, +Autoaim,PLYRMNU_AUTOAIM,,,,Automatické míření,Automatisch zielen,,Aŭtomate-celi,Autoapuntar,,Automaattitähtäys,Auto-visée,Auto célzás,Mira automatica,自動照準,자동 조준,Autoaim,Automatyczne Celowanie,Mira Automática,,Autoțintire,Автоприцеливание,Аутоматско циљање +Always Run,PLYRMNU_ALWAYSRUN,,,,Vždy běžet,Immer Rennen,,Ĉiam Kuri,Siempre correr,,Jatkuva juoksu,Toujours courir,Mindig fusson,Corri sempre,常に駆け足,달리기 토글,Altijd lopen,Zawsze Biegaj,Sempre Correr,Correr Sempre,Fugă în permanență,Постоянный бег,Увек трчи +Run Mode,PLRMNU_RUNMODE,,,,,Rennmodus,,,,,,,,,,,,,,,Mod fugă,, +Allow Toggle,PLRMNU_TOGGLE,,,,,Umschalten erlauben,,,,,,,,,,,,,,,Permite comutare,, +Override Toggle,PLRMNU_OVERRIDE,,,,,Umschalten blockieren,,,,,,,,,,,,,,,Suprascriere comutare,, +If New,PLRMNU_IFNEW,,,,,Wenn neu,,,,,,,,,,,,,,,Dacă e nouă,, +Equip Weapon Pickups,PLRMNU_EQUIP,,,,,Waffen sofort aktivieren,,,,,,,,,,,,,,,Echipează armele ridicate,, +Parental Lock,PLRMNU_PLOCK,,,,,Kindersicherung,,,,,,,,,,,,,,,Control Parental,, +Only preferred,PLRMNU_PREFERRED,,,,,Nur bevorzugte,,,,,,,,,,,,,,,Doar preferate,, ,Display/HUD,,,,,,,,,,,,,,,,,,,,,, -Display Options,DSPLYMNU_TITLE,,,,Nastavení grafiky,Anzeigeoptionen,,Ekranagordoj,Opciones de visualización,,Näyttöasetukset,Options Affichage,Megjelenítés beállítások,Opzioni display,ディスプレイ オプション,디스플레이 설정,Weergaveopties,Opcje Wyświetlania,Opções de Vídeo,,,Настройки экрана,Подешавања приказа -Screen size,DSPLYMNU_SCREENSIZE,,,,Velikost obrazovky,Bildschirmgröße,,Ekrano-grandeco,Tamaño de pantalla,,Näytön koko,Taille de l'écran,Képernyő mérete,Dimensione della schermata,画面サイズ,화면 크기,Schermgrootte,Rozmiar Ekranu,Tamanho de tela,Tamanho do ecrã,,Размер экрана,Величина екрана -Vertical Sync,DSPLYMNU_VSYNC,,,,Vertikální synchronizace,Vertikale Synchronisation,,Vertikala-sinkronigo,Sincr. vertical,,Pystytahdistys,Synchronisation Verticale,Függőleges szinkronizálás,Sync verticale,垂直同期,수직 동기화,Verticale Sync,Synchronizacja Pionowa,Sincronização Vertical,,,Вертикальная синхронизация,Вертикална синхорнизација -Models,DSPLYMNU_MODELS,,,,Modely,Modelle,,Modeloj,Modelos,,Mallit,Modèles,3D modellek,Modelli,モデル,모델,Modellen,Modele,Modelos,,,Модели,Модели -Voxels,DSPLYMNU_VOXELS,,,,,Voxel,,,,,,,,,,,,,,,,, -Shadows,DSPLYMNU_SHADOWS,,,,,Schatten,,,,,,,,,,,,,,,,, -Slope Tilting,DSPLYMNU_SLOPETILT,,,,,,,,,,,,,,,,,,,,,, -View Bobbing,DSPLYMNU_VIEWBOB,,,,,,,,,,,,,,,,,,,,,, -View Sway,DSPLYMNU_VIEWSWAY,,,,,,,,,,,,,,,,,,,,,, -Scale crosshair,DSPLYMNU_CROSSHAIRSCALE,,,,Velikost zaměřovače,Fadenkreuz skalieren,,Skali translinion,Escalar retícula,,Skaalaa tähtäintä,Mise à l'échelle du viseur,,Scala del mirino,照準サイズ,조준점 크기,Dradenkruis schalen,Skala celownika,Escala da mira,,,Масштабирование прицела,Размера нишана -Brightness,DSPLYMNU_BRIGHTNESS,,,,Jas,Helligkeit,,Brileco,Brillo,,Kirkkaus,Luminosité,Fényerő,Luminosità,明るさ,밝기,Helderheid,Jasność,Brilho,,,Яркость,Осветљење -Gamma correction,DSPLYMNU_GAMMA,,,,Korekce gama,Gammakorrektur,,Gamaa korektado,Corrección gamma,,Gammakorjaus,Correction Gamma,,Correzione gamma,ガンマ値,감마 조정,Gamma correctie,Korekta gammy,Correção gama,,,Гамма-коррекция,Корекција светлости +Display Options,DSPLYMNU_TITLE,,,,Nastavení grafiky,Anzeigeoptionen,,Ekranagordoj,Opciones de visualización,,Näyttöasetukset,Options Affichage,Megjelenítés beállítások,Opzioni display,ディスプレイ オプション,디스플레이 설정,Weergaveopties,Opcje Wyświetlania,Opções de Vídeo,,Setări afișare,Настройки экрана,Подешавања приказа +Screen size,DSPLYMNU_SCREENSIZE,,,,Velikost obrazovky,Bildschirmgröße,,Ekrano-grandeco,Tamaño de pantalla,,Näytön koko,Taille de l'écran,Képernyő mérete,Dimensione della schermata,画面サイズ,화면 크기,Schermgrootte,Rozmiar Ekranu,Tamanho de tela,Tamanho do ecrã,Mărime ecran,Размер экрана,Величина екрана +Vertical Sync,DSPLYMNU_VSYNC,,,,Vertikální synchronizace,Vertikale Synchronisation,,Vertikala-sinkronigo,Sincr. vertical,,Pystytahdistys,Synchronisation Verticale,Függőleges szinkronizálás,Sync verticale,垂直同期,수직 동기화,Verticale Sync,Synchronizacja Pionowa,Sincronização Vertical,,Sincronizare Verticală,Вертикальная синхронизация,Вертикална синхорнизација +Models,DSPLYMNU_MODELS,,,,Modely,Modelle,,Modeloj,Modelos,,Mallit,Modèles,3D modellek,Modelli,モデル,모델,Modellen,Modele,Modelos,,Modele,Модели,Модели +Voxels,DSPLYMNU_VOXELS,,,,,Voxel,,,,,,,,,,,,,,,Voxele,, +Shadows,DSPLYMNU_SHADOWS,,,,,Schatten,,,,,,,,,,,,,,,Umbre,, +Slope Tilting,DSPLYMNU_SLOPETILT,,,,,,,,,,,,,,,,,,,,Înclinare pe pante,, +View Bobbing,DSPLYMNU_VIEWBOB,,,,,,,,,,,,,,,,,,,,Mișcare vedere sus-jos,, +View Sway,DSPLYMNU_VIEWSWAY,,,,,,,,,,,,,,,,,,,,Mișcare ritmică vedere,, +Scale crosshair,DSPLYMNU_CROSSHAIRSCALE,,,,Velikost zaměřovače,Fadenkreuz skalieren,,Skali translinion,Escalar retícula,,Skaalaa tähtäintä,Mise à l'échelle du viseur,,Scala del mirino,照準サイズ,조준점 크기,Dradenkruis schalen,Skala celownika,Escala da mira,,Scară țintă,Масштабирование прицела,Размера нишана +Brightness,DSPLYMNU_BRIGHTNESS,,,,Jas,Helligkeit,,Brileco,Brillo,,Kirkkaus,Luminosité,Fényerő,Luminosità,明るさ,밝기,Helderheid,Jasność,Brilho,,Luminozitate,Яркость,Осветљење +Gamma correction,DSPLYMNU_GAMMA,,,,Korekce gama,Gammakorrektur,,Gamaa korektado,Corrección gamma,,Gammakorjaus,Correction Gamma,,Correzione gamma,ガンマ値,감마 조정,Gamma correctie,Korekta gammy,Correção gama,,Gamma,Гамма-коррекция,Корекција светлости Contrast,DSPLYMNU_CONTRAST,,,,Kontrast,Kontrast,,Kontrasto,Contraste,,Sävykkyys,Contraste,,Contrasto,コントラスト,대비,,Kontrast,Contraste,,,Контраст,Контраст -Saturation,DSPLYMNU_SATURATION,,,,Sytost,Sättigung,,Satureco,Saturación,,Värikylläisyys,,,Saturazione,サチュレーション,채도,Verzadiging,Nasycenie,Saturação,,,Насыщенность,Сатурација -Status Bar Scale,DSPLYMNU_SBSCALE,,,,,Statusleistengröße,,,,,,,,,,,,,,,,, -Show clip amount in fullscreen HUD,DSPLYMNU_CLIPAMT,,,,,Zeige Magazin im Vollbild-HUD,,,,,,,,,,,,,,,,, -Level Statistics,DSPLYMNU_LEVELSTATS,,,,,Levelstatistik,,,,,,,,,,,,,,,,, -Level Statistics Scale,DSPLYMNU_STATSCALE,,,,,Textgröße für Levelstatistik,,,,,,,,,,,,,,,,, -Text Scale,DSPLYMNU_TEXTSCALE,,,,,Textgröße,,,,,,,,,,,,,,,,, -Messages,DSPLYMNU_MESSAGES,,,,Zprávy,Nachrichten,,Mesaĝoj,Mensajes,,Viestit,Messages,,Messaggi,メッセージ類,메시지,Berichten,Wiadomości,Mensagens,,,Сообщения,Поруке +Saturation,DSPLYMNU_SATURATION,,,,Sytost,Sättigung,,Satureco,Saturación,,Värikylläisyys,,,Saturazione,サチュレーション,채도,Verzadiging,Nasycenie,Saturação,,Saturație,Насыщенность,Сатурација +Status Bar Scale,DSPLYMNU_SBSCALE,,,,,Statusleistengröße,,,,,,,,,,,,,,,Scară bară de stare,, +Show clip amount in fullscreen HUD,DSPLYMNU_CLIPAMT,,,,,Zeige Magazin im Vollbild-HUD,,,,,,,,,,,,,,,Afișare muniție cartuș,, +Level Statistics,DSPLYMNU_LEVELSTATS,,,,,Levelstatistik,,,,,,,,,,,,,,,Statistici Nivel,, +Level Statistics Scale,DSPLYMNU_STATSCALE,,,,,Textgröße für Levelstatistik,,,,,,,,,,,,,,,Scară Statistici Nivel,, +Text Scale,DSPLYMNU_TEXTSCALE,,,,,Textgröße,,,,,,,,,,,,,,,Scară Text,, +Messages,DSPLYMNU_MESSAGES,,,,Zprávy,Nachrichten,,Mesaĝoj,Mensajes,,Viestit,Messages,,Messaggi,メッセージ類,메시지,Berichten,Wiadomości,Mensagens,,Mesaje,Сообщения,Поруке Generic,DSPLYMNU_GENERIC,,,,,Generisch,,,,,,,,,,,,,,,,, Show Map Name,DSPLYMNU_SHOWMAPNAME,,,,,"Levelnamen anzeigen -",,,,,,,,,,,,,,,,, -FOV,DSPLYMNU_FOV,,,,,Gesichtsfeld,,,,,,,,,,,,,,,,, -Crosshair,DSPLYMNU_CROSSHAIR,,,,Křížek,Fadenkreuz,,Reteto,Retícula,,Tähtäin,Viseur,,Mirino,クロスヘア,조준점,Draadkruis,Celownik,Mira,,,Прицел,Нишан +",,,,,,,,,,,,,,,Afișare nume hartă,, +FOV,DSPLYMNU_FOV,,,,,Gesichtsfeld,,,,,,,,,,,,,,,Câmp vizual,, +Crosshair,DSPLYMNU_CROSSHAIR,,,,Křížek,Fadenkreuz,,Reteto,Retícula,,Tähtäin,Viseur,,Mirino,クロスヘア,조준점,Draadkruis,Celownik,Mira,,Țintă,Прицел,Нишан Default Crosshair,HUDMNU_CROSSHAIR,,,,Výchozí zaměřovač,Standard-Fadenkreuz,,Defaŭlta Translinio,Retícula por defecto,,Oletustähtäin,Viseur par défaut,Alapcélkereszt,Mirino di default,デフォルトの照準,기본 조준점,Standaard dradenkruis,Domyślny celownik,Mira padrão,,Țintă implicită,Тип прицела,Уобичајени нишан Crosshair color,HUDMNU_CROSSHAIRCOLOR,,,Crosshair colour,Barva zaměřovače,Fadenkreuzfarbe,,Translinikoloro,Color de la retícula,,Tähtäimen väri,Couleur Viseur,Célkereszt színe,Colore mirino,照準色,조준점 색깔,Dradenkruis kleur,Kolor celownika,Cor da mira,,Culoare țintă,Цвет прицела,Боја нишана Crosshair shows health,HUDMNU_CROSSHAIRHEALTH,,,,Zaměřovač zobrazuje zdraví,Fadenkreuz zeigt Gesundheit,,Translinio montri sanon,Mostrar salud en retícula,,Tähtäin näyttää terveyden,Couleur Viseur selon santé,Életerő jelzése a célkereszten,Il mirino mostra la salute,照準のヘルス表示,조준점과 체력 연동,Draadenkruis toont gezondheid,Celownik pokazuje zdrowie,Mostrar saúde na mira,Mostra vida na mira,Ținta afișează starea sănătății,Цвет прицела по состоянию здоровья,Нишан приказује здравље Standard,OPTVAL_YES_STANDARD,copied from elsewhere,,,Standardní,,Πρότυπο,Norma,Estándar,,Normaali,,,,標準,기본,Standaard,Standard,Padrão,,,Стандартный,Стандардни Enhanced,OPTVAL_YES_ENHANCED,,,,Vylepšené,Verbessert,Ενισχυομένο,Bonigita,Mejorado,,Paranneltu,Amélioré,,Migliorata,強調,고급,Verbeterd,Ulepszone,Melhorado,,Îmbunătățit(ă),Улучшенный,Побољшани -HUD Options,OPTMNU_HUD,,,,Nastavení HUD,HUD Einstellungen,,Agordoj de HUD,Opciones del HUD,,Tilanäytön asetukset,Options de l'ATH,HUD beállítások,Opzioni HUD,HUD オプション,HUD 설정,HUD opties,Opcje Paska HUD,Opções de HUD,,,HUD,HUD -Polymost Options,OPTMNU_POLYMOST,,,,,Polymost Einstellungen,,,,,,,,,,,,,,,,, -Texture Filter mode,GLTEXMNU_TEXFILTER,,,,Režim filtrování textur,Texturfiltermodus,,Reĝimo por Teksturfiltrado,Modo de filtro de texturas,,Pintakuviointien suodatustapa,Mode de Filtrage Texture,,Modalità filtro texture,テクスチャーフィルター モード,텍스쳐 필터 모드,Textuur Filter mode,Tryb Filtrowania Tekstur,Modo de filtragem de textura,,,Фильтрация текстур,Текстурни филтер мод -Anisotropic filter,GLTEXMNU_ANISOTROPIC,,,,Anisotropické filtrování,Anisotropische Filterung,,Anizotropa Filtro,Filtro anisotrópico,,Anisotrooppinen suodatus,Filtre Anisotropique,,Filtro anisotropico,異方性フィルター,이방성 필터,Anisotroop filter,Filtr anizotropowy,Filtragem anisotrópica,,,Анизотропная фильтрация,Анизотропни фолтер -None (nearest mipmap),OPTVAL_NONENEARESTMIPMAP,,,,Žádné (nejbližší mipmapa),Aus (nächste Mipmap),,Nenio (plej proksima mipmapo),Ninguno (mipmap cercano),,Ei mitään (lähin mipkartta),Aucun (mipmap proche voisin),,Nessuno (mipmap più vicina),なし(最寄りミップマップ),없음 (밉멥에 가까움),Geen (dichtstbijzijnde mipmap),Brak (najbliższa mipmapa),Nenhum (mipmap vizinho mais próximo),,,Нет (ближайший мипмап),Ништа (најближи мипмап) -None (linear mipmap),OPTVAL_NONELINEARMIPMAP,,,,Žádné (lineární mipmapa),Aus (lineare Mipmap),,Nenio (linia mipmapo),Ninguno (mipmap lineal),,Ei mitään (lin. mipkartta),Aucun (mipmap linéaire),,Nessuno (mipmap lineare),なし(リニアミップマップ),없음 (선형 밉맵),Geen (lineaire mipmap),Brak (liniowa mipmapa),Nenhum (mipmap linear),,,Нет (линейный мипмап),Ништа (линеаран мипмап) -None (trilinear),OPTVAL_NONETRILINEAR,,,,Žádné (trilineární),Aus (trilinear),,Nenio (trilinia),Ninguno (trilineal),,Ei mitään (trilineaarinen),Aucun (mipmap trilinéaire),,Nessuno (mipmap trilineare),なし(トライリニア),없음 (삼선형),Geen (trilineair),Brak (trzyliniowe),Nenhum (trilinear),,,Нет (трилинейная),Ништа (трилинеарно) -Bilinear,OPTVAL_BILINEAR,,,,Bilineární,,,Dulinia,Bilineal,,Bilineaarinen,Bilinéaire,,Bilineare,バイリニア,쌍선형,Bilineair,Dwuliniowe,,,,Билинейная,Билинеарно +HUD Options,OPTMNU_HUD,,,,Nastavení HUD,HUD Einstellungen,,Agordoj de HUD,Opciones del HUD,,Tilanäytön asetukset,Options de l'ATH,HUD beállítások,Opzioni HUD,HUD オプション,HUD 설정,HUD opties,Opcje Paska HUD,Opções de HUD,,Setări HUD,HUD,HUD +Polymost Options,OPTMNU_POLYMOST,,,,,Polymost Einstellungen,,,,,,,,,,,,,,,Setări Polymost,, +Texture Filter mode,GLTEXMNU_TEXFILTER,,,,Režim filtrování textur,Texturfiltermodus,,Reĝimo por Teksturfiltrado,Modo de filtro de texturas,,Pintakuviointien suodatustapa,Mode de Filtrage Texture,,Modalità filtro texture,テクスチャーフィルター モード,텍스쳐 필터 모드,Textuur Filter mode,Tryb Filtrowania Tekstur,Modo de filtragem de textura,,Mod Filtrare Texturi,Фильтрация текстур,Текстурни филтер мод +Anisotropic filter,GLTEXMNU_ANISOTROPIC,,,,Anisotropické filtrování,Anisotropische Filterung,,Anizotropa Filtro,Filtro anisotrópico,,Anisotrooppinen suodatus,Filtre Anisotropique,,Filtro anisotropico,異方性フィルター,이방성 필터,Anisotroop filter,Filtr anizotropowy,Filtragem anisotrópica,,Filtrare Anizotropică,Анизотропная фильтрация,Анизотропни фолтер +None (nearest mipmap),OPTVAL_NONENEARESTMIPMAP,,,,Žádné (nejbližší mipmapa),Aus (nächste Mipmap),,Nenio (plej proksima mipmapo),Ninguno (mipmap cercano),,Ei mitään (lähin mipkartta),Aucun (mipmap proche voisin),,Nessuno (mipmap più vicina),なし(最寄りミップマップ),없음 (밉멥에 가까움),Geen (dichtstbijzijnde mipmap),Brak (najbliższa mipmapa),Nenhum (mipmap vizinho mais próximo),,Niciuna (mipmap de apropriere),Нет (ближайший мипмап),Ништа (најближи мипмап) +None (linear mipmap),OPTVAL_NONELINEARMIPMAP,,,,Žádné (lineární mipmapa),Aus (lineare Mipmap),,Nenio (linia mipmapo),Ninguno (mipmap lineal),,Ei mitään (lin. mipkartta),Aucun (mipmap linéaire),,Nessuno (mipmap lineare),なし(リニアミップマップ),없음 (선형 밉맵),Geen (lineaire mipmap),Brak (liniowa mipmapa),Nenhum (mipmap linear),,Niciuna (mipmap liniar),Нет (линейный мипмап),Ништа (линеаран мипмап) +None (trilinear),OPTVAL_NONETRILINEAR,,,,Žádné (trilineární),Aus (trilinear),,Nenio (trilinia),Ninguno (trilineal),,Ei mitään (trilineaarinen),Aucun (mipmap trilinéaire),,Nessuno (mipmap trilineare),なし(トライリニア),없음 (삼선형),Geen (trilineair),Brak (trzyliniowe),Nenhum (trilinear),,Niciuna (trilinar),Нет (трилинейная),Ништа (трилинеарно) +Bilinear,OPTVAL_BILINEAR,,,,Bilineární,,,Dulinia,Bilineal,,Bilineaarinen,Bilinéaire,,Bilineare,バイリニア,쌍선형,Bilineair,Dwuliniowe,,,Biliniar,Билинейная,Билинеарно Trilinear,OPTVAL_TRILINEAR,,,,Trilineární,,,Trilinia,Trilineal,,Trilineaarinen,Trilinéaire,,Trilineare,トライリニア,삼선형,Trilineair,Trzyliniowe,,,,Трилинейная,Трилинеарно -Message Display Style,DSPLYMNU_MESSAGEDISP,,,,,Nachrichtenstil,,,,,,,,,,,,,,,,, -Classic,OPTVAL_CLASSIC,,,,,Klassisch,,,,,,,,,,,,,,,,, +Message Display Style,DSPLYMNU_MESSAGEDISP,,,,,Nachrichtenstil,,,,,,,,,,,,,,,Triliniar,, +Classic,OPTVAL_CLASSIC,,,,,Klassisch,,,,,,,,,,,,,,,Clasic,, Advanced,OPTVAL_ADVANCED,,,,,Erweitert,,,,,,,,,,,,,,,,, Center messages,MSGMNU_CENTERMESSAGES,,,Centre messages,Vycentrovat zprávy,Nachrichten zentrieren,,Centrigi mesaĝoj,Centrar mensajes,,Keskitä viestit,Messages centrés,,Messaggi centrati,メッセージを中央に,메시지 중간에 위치,Berichten centreren,Wyśrodkuj wiadomości,Centralizar mensagens,Centrar mensagens,Mesaje centrate,Центрирование сообщений,Централне поруке -Pulsating message Display,MSGMNU_PULSEMESSAGES,,,,,Pulsierende Nachrichtenanzeige,,,,,,,,,,,,,,,,, -Message Scale,MSGMNU_MESSAGESCALE,,,,,Nachrichtengröße,,,,,,,,,,,,,,,,, +Pulsating message Display,MSGMNU_PULSEMESSAGES,,,,,Pulsierende Nachrichtenanzeige,,,,,,,,,,,,,,,Afișare Mesaje Pulsante,, +Message Scale,MSGMNU_MESSAGESCALE,,,,,Nachrichtengröße,,,,,,,,,,,,,,,Scară Mesaje,, Automap Options,AUTOMAPMNU_TITLE,,,,Nastavení automapy,Automapoptionen,,Aŭtomapagordoj,Opciones del Automapa,,Automaattikartan asetukset,Options Carte,,Opzioni automappa,オートマップ オプション,오토맵 설정,Automap-opties,Opcje Mapy,Opções de Automapa,,Setări Hartă Computerizată,Настройки автокарты,Подешавања аутомапе Rotate automap,AUTOMAPMNU_ROTATE,,,,Otáčet automapu,Rotiere Automap,,Rotacii aŭtomapon,Rotar automapa,,Kiertyvä automaattikartta,Rotation de la Carte,,Ruota l'automappa,オートマップの回転表示,오토맵 회전,Automatisch roteren,Obracaj mapę,Girar automapa,,Rotire hartă computerizată,Вращающаяся автокарта,Ротирај аутомапу Follow player,AUTOMAPMNU_FOLLOW,,,,Následovat hráče,Folge dem Spieler,,Sekvi ludanton,Seguir jugador,,Seuraa pelaajaa,Suivre le joueur,,Segui il giocatore,プレイヤー追従,플레이어 추적,Volg de speler,Podążaj za graczem,Seguir jogador,,Urmărire jucător,Привязка к игроку,Прати играча @@ -555,15 +555,15 @@ Follow player,AUTOMAPMNU_FOLLOW,,,,Následovat hráče,Folge dem Spieler,,Sekvi 16x,OPTVAL_16X,,,,,,,16-oble,,,,,,,,,,,,,,, 32x,OPTVAL_32X,,,,,,,32-oble,,,,,,,,,,,,,,, ,Polymost,,,,,,,,,,,,,,,,,,,,,, -True Color Textures,POLYMOST_TC,,,True Colour Textures,,True Color Texturen,,,,,,,,,,,,,,,,, -Pre-load map textures,POLYMOST_CACHE,,,,,Texturen cachen,,,,,,,,,,,,,,,,, -Detail Textures,POLYMOST_DETAIL,,,,,Detailtexturen,,,,,,,,,,,,,,,,, -Glow Textures,POLYMOST_GLOW,,,,,Leucht-Texturen,,,,,,,,,,,,,,,,, -3D-Models,POLYMOST_MODELS,,,,,3D Modelle,,,,,,,,,,,,,,,,, +True Color Textures,POLYMOST_TC,,,True Colour Textures,,True Color Texturen,,,,,,,,,,,,,,,Texturi Naturale,, +Pre-load map textures,POLYMOST_CACHE,,,,,Texturen cachen,,,,,,,,,,,,,,,Preîncărcare Texturi Hartă,, +Detail Textures,POLYMOST_DETAIL,,,,,Detailtexturen,,,,,,,,,,,,,,,Detalii Texturi,, +Glow Textures,POLYMOST_GLOW,,,,,Leucht-Texturen,,,,,,,,,,,,,,,Strălucire Texturi,, +3D-Models,POLYMOST_MODELS,,,,,3D Modelle,,,,,,,,,,,,,,,Modele 3D,, "Polymost Options -",POLYMOST_OPTIONS,,,,,Polymost-Optionen,,,,,,,,,,,,,,,,, -Palette Emulation,POLYMOST_PALETTEEMU,,,,,Palettenemulation,,,,,,,,,,,,,,,,, -Palette Interpolation,POLYMOST_PALINTER,,,,,Paletteninterpolation,,,,,,,,,,,,,,,,, +",POLYMOST_OPTIONS,,,,,Polymost-Optionen,,,,,,,,,,,,,,,Setări Polymost,, +Palette Emulation,POLYMOST_PALETTEEMU,,,,,Palettenemulation,,,,,,,,,,,,,,,Emulare Paletă,, +Palette Interpolation,POLYMOST_PALINTER,,,,,Paletteninterpolation,,,,,,,,,,,,,,,Interpolare Paletă,, ,Sound,,,,,,,,,,,,,,,,,,,,,, 4000 Hz,OPTVAL_4000HZ,,,,,,,,,,,,,,,,,,,,,4000 Гц, 8000 Hz,OPTVAL_8000HZ,,,,,,,,,,,,,,,,,,,,,8000 Гц, @@ -675,6 +675,7 @@ Timidity++,ADVSNDMNU_TIMIDITY,,,,,,,,,,,,,,,,,,,,,, Sound enabled,SNDMNU_SNDENABLED,,,,,Sound aktiv,,,,,,,,,,,,,,,,, Music enabled,SNDMNU_MUSENABLED,,,,,Musik aktiv,,,,,,,,,,,,,,,,, CD Music Emulation,SNDMNU_CDEMU,,,,,CD-Musik-Emulation,,,,,,,,,,,,,,,,, +Play original MIDI music,SNDMNU_WTMUSIC,,,,,Original-MIDI-Musik spielen,,,,,,,,,,,,,,,,, Sound Ambience,SNDMNU_AMBIENCE,,,,,Umgebungsgeräusche,,,,,,,,,,,,,,,,, "Player Speech ",SNDMNU_SPEECH,,,,,Spielerkommentare,,,,,,,,,,,,,,,,, @@ -2220,7 +2221,7 @@ into the heart of karnak... Home to the celebrated burial crypt of the great King Ramses. -",TXT_EX_CINEMA1,Intro movie subtitles,,,,,,,,,,,,,,,,,,,,, +",TXT_EX_INTRO,Intro movie subtitles,,,,,,,,,,,,,,,,,,,,, "An evil force known as the Kilmaat has besieged the sanctity of my palace and @@ -2245,7 +2246,7 @@ your hands. Find the gauntlet and cross the aswan high dam to defeat the evil beast set. -",TXT_EX_CINEMA2,,,,,,,,,,,,,,,,,,,,,, +",TXT_EX_CINEMA2,After Level 4,,,,,,,,,,,,,,,,,,,,, "You've made it halfway toward fullfilling your destiny. The Kilmaat are growing From f15657cc6d6bfeb44d5133cbe69216c0fed71c1a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 8 Sep 2020 22:50:38 +0200 Subject: [PATCH 17/17] - fixed missing widescreen sprite for shrinker/grower and bad light level for the incinerator. Fixes #380 --- source/games/duke/src/hudweapon_d.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/games/duke/src/hudweapon_d.cpp b/source/games/duke/src/hudweapon_d.cpp index 5b3eefde6..577442345 100644 --- a/source/games/duke/src/hudweapon_d.cpp +++ b/source/games/duke/src/hudweapon_d.cpp @@ -1281,6 +1281,7 @@ void displayweapon_d(int snum, double smoothratio) auto displayshrinker = [&] { + auto shrinker = isWorldTour() ? SHRINKERWIDE : SHRINKER; weapon_xoffset += 28; looking_arc += 18; if (sprite[p->i].pal == 1) @@ -1297,7 +1298,7 @@ void displayweapon_d(int snum, double smoothratio) o, 2); hud_drawpal(weapon_xoffset + 188 - look_anghalf, - looking_arc + 240 - gun_pos, SHRINKER - 2, gs, o, pal); + looking_arc + 240 - gun_pos, shrinker - 2, gs, o, pal); } else { @@ -1307,7 +1308,7 @@ void displayweapon_d(int snum, double smoothratio) o, 0); hud_drawpal(weapon_xoffset + 188 - look_anghalf, - looking_arc + 240 - gun_pos, SHRINKER, gs, o, pal); + looking_arc + 240 - gun_pos, shrinker, gs, o, pal); } } else @@ -1325,7 +1326,7 @@ void displayweapon_d(int snum, double smoothratio) o, 2); hud_drawpal(weapon_xoffset + 188 - look_anghalf, - looking_arc + 240 - gun_pos, SHRINKER - 1, gs, o, pal); + looking_arc + 240 - gun_pos, shrinker - 1, gs, o, pal); } else @@ -1335,7 +1336,7 @@ void displayweapon_d(int snum, double smoothratio) o, 0); hud_drawpal(weapon_xoffset + 188 - look_anghalf, - looking_arc + 240 - gun_pos, SHRINKER + 1, gs, o, pal); + looking_arc + 240 - gun_pos, shrinker + 1, gs, o, pal); } } }; @@ -1372,7 +1373,7 @@ void displayweapon_d(int snum, double smoothratio) looking_arc += krand() & 1; } gun_pos -= 16; - hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 261 - gun_pos, FLAMETHROWER + 1, 32, o, pal); + hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 261 - gun_pos, FLAMETHROWER + 1, -32, o, pal); hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 235 - gun_pos, FLAMETHROWER + 2 + cat_frames[*kb % 6], -32, o, pal); } };