From fa123f37c7d0ed910350f2f9ab66bccec1df505c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 1 Mar 2019 22:04:39 +0100 Subject: [PATCH 01/20] - adjustment for renamed spreadsheet. --- src/gamedata/stringtable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gamedata/stringtable.cpp b/src/gamedata/stringtable.cpp index 89695429ba..2fbe12a613 100644 --- a/src/gamedata/stringtable.cpp +++ b/src/gamedata/stringtable.cpp @@ -70,7 +70,7 @@ bool FStringTable::LoadLanguageFromSpreadsheet(int lumpnum) return false; } - if (!readSheetIntoTable(xlsxio, "Sheet1")) return false; + if (!readSheetIntoTable(xlsxio, "strings")) return false; // readMacros(xlsxio, "macros"); xlsxioread_close(xlsxio); From ce1ecd0d4ba15ff6fc3f57b8b4471a5d21c35396 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 12:06:24 +0100 Subject: [PATCH 02/20] - implemented string table macros. --- src/d_main.cpp | 3 +- src/gamedata/d_dehacked.cpp | 14 +- src/gamedata/stringtable.cpp | 251 +++++++++++++++++++++------ src/gamedata/stringtable.h | 21 ++- src/p_interaction.cpp | 4 +- src/utility/xlsxread/xlsxio_read.cpp | 2 +- 6 files changed, 228 insertions(+), 67 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index d26ae1d0c7..f730493979 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2581,7 +2581,8 @@ void D_DoomMain (void) }; for (p = 0; p < 5; ++p) { - const char *str = GStrings[startupString[p]]; + // At this point we cannot use the player's gender info yet so force 'male' here. + const char *str = GStrings.GetString(startupString[p], nullptr, 0); if (str != NULL && str[0] != '\0') { Printf("%s\n", str); diff --git a/src/gamedata/d_dehacked.cpp b/src/gamedata/d_dehacked.cpp index 4643cd492c..c7105117d2 100644 --- a/src/gamedata/d_dehacked.cpp +++ b/src/gamedata/d_dehacked.cpp @@ -2164,13 +2164,14 @@ static int PatchMusic (int dummy) while ((result = GetLine()) == 1) { - const char *newname = skipwhite (Line2); + FString newname = skipwhite (Line2); FString keystring; keystring << "MUSIC_" << Line1; - DehStrings.Insert(keystring, newname); - DPrintf (DMSG_SPAMMY, "Music %s set to:\n%s\n", keystring.GetChars(), newname); + TableElement te = { newname, newname, newname, newname }; + DehStrings.Insert(keystring, te); + DPrintf (DMSG_SPAMMY, "Music %s set to:\n%s\n", keystring.GetChars(), newname.GetChars()); } return result; @@ -2283,7 +2284,9 @@ static int PatchText (int oldSize) str = EnglishStrings.MatchString(oldStr); if (str != NULL) { - DehStrings.Insert(str, newStr); + FString newname = newStr; + TableElement te = { newname, newname, newname, newname }; + DehStrings.Insert(str, te); EnglishStrings.Remove(str); // remove entry so that it won't get found again by the next iteration or by another replacement later good = true; } @@ -2337,7 +2340,8 @@ static int PatchStrings (int dummy) // Account for a discrepancy between Boom's and ZDoom's name for the red skull key pickup message const char *ll = Line1; if (!stricmp(ll, "GOTREDSKULL")) ll = "GOTREDSKUL"; - DehStrings.Insert(ll, holdstring); + TableElement te = { holdstring, holdstring, holdstring, holdstring }; + DehStrings.Insert(ll, te); DPrintf (DMSG_SPAMMY, "%s set to:\n%s\n", Line1, holdstring.GetChars()); } diff --git a/src/gamedata/stringtable.cpp b/src/gamedata/stringtable.cpp index 2fbe12a613..a892992e17 100644 --- a/src/gamedata/stringtable.cpp +++ b/src/gamedata/stringtable.cpp @@ -42,9 +42,16 @@ #include "c_dispatch.h" #include "v_text.h" #include "gi.h" +#include "d_player.h" #include "xlsxread/xlsxio_read.h" +//========================================================================== +// +// +// +//========================================================================== + void FStringTable::LoadStrings () { int lastlump, lump; @@ -58,8 +65,14 @@ void FStringTable::LoadStrings () } SetLanguageIDs(); UpdateLanguage(); + allMacros.Clear(); } +//========================================================================== +// +// +// +//========================================================================== bool FStringTable::LoadLanguageFromSpreadsheet(int lumpnum) { @@ -69,14 +82,60 @@ bool FStringTable::LoadLanguageFromSpreadsheet(int lumpnum) { return false; } - - if (!readSheetIntoTable(xlsxio, "strings")) return false; - // readMacros(xlsxio, "macros"); + readMacros(xlsxio, "macros"); + readSheetIntoTable(xlsxio, "strings"); xlsxioread_close(xlsxio); return true; } +//========================================================================== +// +// +// +//========================================================================== + +bool FStringTable::readMacros(xlsxioreader reader, const char *sheetname) +{ + xlsxioreadersheet sheet = xlsxioread_sheet_open(reader, sheetname, XLSXIOREAD_SKIP_NONE); + if (sheet == nullptr) return false; + + while (xlsxioread_sheet_next_row(sheet)) + { + auto macroname = xlsxioread_sheet_next_cell(sheet); + auto language = xlsxioread_sheet_next_cell(sheet); + if (!macroname || !language) continue; + FStringf combined_name("%s/%s", language, macroname); + free(language); + free(macroname); + FName name = combined_name; + + StringMacro macro; + + char *value; + for (int i = 0; i < 4; i++) + { + value = xlsxioread_sheet_next_cell(sheet); + macro.Replacements[i] = value; + free(value); + } + // This is needed because the reader code would choke on incompletely read rows. + while ((value = xlsxioread_sheet_next_cell(sheet)) != nullptr) + { + free(value); + } + allMacros.Insert(name, macro); + } + xlsxioread_sheet_close(sheet); + return true; +} + +//========================================================================== +// +// +// +//========================================================================== + bool FStringTable::readSheetIntoTable(xlsxioreader reader, const char *sheetname) { @@ -94,7 +153,7 @@ bool FStringTable::readSheetIntoTable(xlsxioreader reader, const char *sheetname while ((value = xlsxioread_sheet_next_cell(sheet)) != nullptr) { auto vcopy = value; - if (table.Size() <= row) table.Reserve(1); + if (table.Size() <= (unsigned)row) table.Reserve(1); while (*vcopy && iswspace((unsigned char)*vcopy)) vcopy++; // skip over leaading whitespace; auto vend = vcopy + strlen(vcopy); while (vend > vcopy && iswspace((unsigned char)vend[-1])) *--vend = 0; // skip over trailing whitespace @@ -105,67 +164,74 @@ bool FStringTable::readSheetIntoTable(xlsxioreader reader, const char *sheetname } row++; } - xlsxioread_sheet_close(sheet); int labelcol = -1; int filtercol = -1; TArray> langrows; - for (unsigned column = 0; column < table[0].Size(); column++) + if (table.Size() > 0) { - auto &entry = table[0][column]; - if (entry.CompareNoCase("filter") == 0) + for (unsigned column = 0; column < table[0].Size(); column++) { - filtercol = column; - } - else if (entry.CompareNoCase("identifier") == 0) - { - labelcol = column;; - } - else - { - auto languages = entry.Split(" ", FString::TOK_SKIPEMPTY); - for (auto &lang : languages) + auto &entry = table[0][column]; + if (entry.CompareNoCase("filter") == 0) { - if (lang.CompareNoCase("default") == 0) + filtercol = column; + } + else if (entry.CompareNoCase("identifier") == 0) + { + labelcol = column;; + } + else + { + auto languages = entry.Split(" ", FString::TOK_SKIPEMPTY); + for (auto &lang : languages) { - langrows.Push(std::make_pair(column, default_table)); + if (lang.CompareNoCase("default") == 0) + { + langrows.Push(std::make_pair(column, default_table)); + } + else if (lang.Len() < 4) + { + lang.ToLower(); + langrows.Push(std::make_pair(column, MAKE_ID(lang[0], lang[1], lang[2], 0))); + } } - else if (lang.Len() < 4) + } + } + + for (unsigned i = 1; i < table.Size(); i++) + { + auto &row = table[i]; + if (filtercol > -1) + { + auto filterstr = row[filtercol]; + auto filter = filterstr.Split(" ", FString::TOK_SKIPEMPTY); + if (filter.Size() > 0 && filter.FindEx([](const auto &str) { return str.CompareNoCase(GameNames[gameinfo.gametype]) == 0; }) == filter.Size()) + continue; + } + + FName strName = row[labelcol]; + for (auto &langentry : langrows) + { + auto str = row[langentry.first]; + if (str.Len() > 0) { - lang.ToLower(); - langrows.Push(std::make_pair(column, MAKE_ID(lang[0], lang[1], lang[2], 0))); + InsertString(langentry.second, strName, str); } } } } - - for (unsigned i = 1; i < table.Size(); i++) - { - auto &row = table[i]; - if (filtercol > -1) - { - auto filterstr = row[filtercol]; - auto filter = filterstr.Split(" ", FString::TOK_SKIPEMPTY); - if (filter.Size() > 0 && filter.FindEx([](const auto &str) { return str.CompareNoCase(GameNames[gameinfo.gametype]) == 0; }) == filter.Size()) - continue; - } - - FName strName = row[labelcol]; - for (auto &langentry : langrows) - { - auto str = row[langentry.first]; - if (str.Len() > 0) - { - allStrings[langentry.second].Insert(strName, str); - str.Substitute("\n", "|"); - Printf(PRINT_LOG, "Setting %s for %s to %.40s\n\n", strName.GetChars(), &langentry.second, str.GetChars()); - } - } - } + xlsxioread_sheet_close(sheet); return true; } +//========================================================================== +// +// +// +//========================================================================== + void FStringTable::LoadLanguage (int lumpnum) { bool errordone = false; @@ -262,13 +328,52 @@ void FStringTable::LoadLanguage (int lumpnum) // Insert the string into all relevant tables. for (auto map : activeMaps) { - allStrings[map].Insert(strName, strText); + InsertString(map, strName, strText); } } } } } +//========================================================================== +// +// +// +//========================================================================== + +void FStringTable::InsertString(int langid, FName label, const FString &string) +{ + const char *strlangid = (const char *)&langid; + TableElement te = { string, string, string, string }; + long index; + while ((index = te.strings[0].IndexOf("@[")) >= 0) + { + auto endindex = te.strings[0].IndexOf(']', index); + if (endindex == -1) + { + Printf("Bad macro in %s : %s\n", strlangid, label.GetChars()); + break; + } + FString macroname(string.GetChars() + index + 2, endindex - index - 2); + FStringf lookupstr("%s/%s", strlangid, macroname.GetChars()); + FStringf replacee("@[%s]", macroname.GetChars()); + FName lookupname(lookupstr, true); + auto replace = allMacros.CheckKey(lookupname); + for (int i = 0; i < 4; i++) + { + const char *replacement = replace && replace->Replacements[i] ? replace->Replacements[i] : ""; + te.strings[i].Substitute(replacee, replacement); + } + } + allStrings[langid].Insert(label, te); +} + +//========================================================================== +// +// +// +//========================================================================== + void FStringTable::UpdateLanguage() { currentLanguageSet.Clear(); @@ -290,7 +395,12 @@ void FStringTable::UpdateLanguage() checkone(default_table); } +//========================================================================== +// // Replace \ escape sequences in a string with the escaped characters. +// +//========================================================================== + size_t FStringTable::ProcessEscapes (char *iptr) { char *sptr = iptr, *optr = iptr, c; @@ -317,10 +427,15 @@ size_t FStringTable::ProcessEscapes (char *iptr) return optr - sptr; } +//========================================================================== +// +// Checks if the given key exists in any one of the default string tables that are valid for all languages. +// To replace IWAD content this condition must be true. +// +//========================================================================== + bool FStringTable::exists(const char *name) { - // Checks if the given key exists in any one of the default string tables that are valid for all languages. - // To replace IWAD content this condition must be true. if (name == nullptr || *name == 0) { return false; @@ -343,13 +458,20 @@ bool FStringTable::exists(const char *name) return false; } +//========================================================================== +// // Finds a string by name and returns its value -const char *FStringTable::GetString(const char *name, uint32_t *langtable) const +// +//========================================================================== + +const char *FStringTable::GetString(const char *name, uint32_t *langtable, int gender) const { if (name == nullptr || *name == 0) { return nullptr; } + if (gender == -1) gender = players[consoleplayer].userinfo.GetGender(); + if (gender < 0 || gender > 3) gender = 0; FName nm(name, true); if (nm != NAME_None) { @@ -359,20 +481,27 @@ const char *FStringTable::GetString(const char *name, uint32_t *langtable) const if (item) { if (langtable) *langtable = map.first; - return item->GetChars(); + return item->strings[gender].GetChars(); } } } return nullptr; } +//========================================================================== +// // Finds a string by name in a given language -const char *FStringTable::GetLanguageString(const char *name, uint32_t langtable) const +// +//========================================================================== + +const char *FStringTable::GetLanguageString(const char *name, uint32_t langtable, int gender) const { if (name == nullptr || *name == 0) { return nullptr; } + if (gender == -1) gender = players[consoleplayer].userinfo.GetGender(); + if (gender < 0 || gender > 3) gender = 0; FName nm(name, true); if (nm != NAME_None) { @@ -381,14 +510,19 @@ const char *FStringTable::GetLanguageString(const char *name, uint32_t langtable auto item = map->CheckKey(nm); if (item) { - return item->GetChars(); + return item->strings[gender].GetChars(); } } return nullptr; } +//========================================================================== +// // Finds a string by name and returns its value. If the string does // not exist, returns the passed name instead. +// +//========================================================================== + const char *FStringTable::operator() (const char *name) const { const char *str = operator[] (name); @@ -396,7 +530,14 @@ const char *FStringTable::operator() (const char *name) const } +//========================================================================== +// // Find a string with the same exact text. Returns its name. +// This does not need to check genders, it is only used by +// Dehacked on the English table for finding stock strings. +// +//========================================================================== + const char *StringMap::MatchString (const char *string) const { StringMap::ConstIterator it(*this); @@ -404,7 +545,7 @@ const char *StringMap::MatchString (const char *string) const while (it.NextPair(pair)) { - if (pair->Value.CompareNoCase(string) == 0) + if (pair->Value.strings[0].CompareNoCase(string) == 0) { return pair->Key.GetChars(); } diff --git a/src/gamedata/stringtable.h b/src/gamedata/stringtable.h index d0d7b03475..c341d97b8d 100644 --- a/src/gamedata/stringtable.h +++ b/src/gamedata/stringtable.h @@ -47,14 +47,25 @@ #include "doomdef.h" #include "doomtype.h" +struct TableElement +{ + FString strings[4]; +}; + // This public interface is for Dehacked -class StringMap : public TMap +class StringMap : public TMap { public: const char *MatchString(const char *string) const; }; +struct StringMacro +{ + FString Replacements[4]; +}; + + class FStringTable { public: @@ -66,6 +77,7 @@ public: }; using LangMap = TMap; + using StringMacroMap = TMap; void LoadStrings (); void UpdateLanguage(); @@ -76,8 +88,8 @@ public: UpdateLanguage(); } - const char *GetLanguageString(const char *name, uint32_t langtable) const; - const char *GetString(const char *name, uint32_t *langtable) const; + const char *GetLanguageString(const char *name, uint32_t langtable, int gender = -1) const; + const char *GetString(const char *name, uint32_t *langtable, int gender = -1) const; const char *operator() (const char *name) const; // Never returns NULL const char *operator[] (const char *name) const { @@ -87,12 +99,15 @@ public: private: + StringMacroMap allMacros; LangMap allStrings; TArray> currentLanguageSet; void LoadLanguage (int lumpnum); bool LoadLanguageFromSpreadsheet(int lumpnum); + bool readMacros(struct xlsxio_read_struct *reader, const char *sheet); bool readSheetIntoTable(struct xlsxio_read_struct *reader, const char *sheet); + void InsertString(int langid, FName label, const FString &string); static size_t ProcessEscapes (char *str); }; diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 6cd290c1ba..121fb1cad3 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -261,12 +261,12 @@ void ClientObituary (AActor *self, AActor *inflictor, AActor *attacker, int dmgf if (message != NULL && message[0] == '$') { - message = GStrings[message+1]; + message = GStrings.GetString(message+1, nullptr, self->player->userinfo.GetGender()); } if (message == NULL) { - message = GStrings("OB_DEFAULT"); + message = GStrings.GetString("OB_DEFAULT", nullptr, self->player->userinfo.GetGender()); } // [CK] Don't display empty strings diff --git a/src/utility/xlsxread/xlsxio_read.cpp b/src/utility/xlsxread/xlsxio_read.cpp index 738268707a..48f6de5d8b 100644 --- a/src/utility/xlsxread/xlsxio_read.cpp +++ b/src/utility/xlsxread/xlsxio_read.cpp @@ -63,7 +63,7 @@ void zip_close(zip_t *zipfile) zip_file_t *zip_fopen(zip_t *zipfile, const char *filename) { - if (!zipfile) return NULL; + if (!zipfile || !filename) return NULL; auto lump = zipfile->FindLump(filename); if (!lump) return NULL; return new FileReader(std::move(lump->NewReader())); From 5ac5a0a85696310bf558463d10a715b2668d9085 Mon Sep 17 00:00:00 2001 From: Nemrtvi Date: Sat, 2 Mar 2019 10:38:55 +0100 Subject: [PATCH 03/20] French characters for Raven games Most of this is ripped from Hexen 64 with minor edits and palette conversions. Credits to Jimmy for the cedillas and BIGFONT breves! --- .../game-heretic/fonts/defbigfont/00C0.lmp | Bin 0 -> 276 bytes .../game-heretic/fonts/defbigfont/00C2.lmp | Bin 0 -> 296 bytes .../game-heretic/fonts/defbigfont/00C7.lmp | Bin 0 -> 242 bytes .../game-heretic/fonts/defbigfont/00C8.lmp | Bin 0 -> 254 bytes .../game-heretic/fonts/defbigfont/00C9.lmp | Bin 0 -> 254 bytes .../game-heretic/fonts/defbigfont/00CA.lmp | Bin 0 -> 278 bytes .../game-heretic/fonts/defbigfont/00CB.lmp | Bin 0 -> 274 bytes .../game-heretic/fonts/defbigfont/00CE.lmp | Bin 0 -> 195 bytes .../game-heretic/fonts/defbigfont/00CF.lmp | Bin 0 -> 187 bytes .../game-heretic/fonts/defbigfont/00D4.lmp | Bin 0 -> 321 bytes .../game-heretic/fonts/defbigfont/00D9.lmp | Bin 0 -> 257 bytes .../game-heretic/fonts/defbigfont/00DB.lmp | Bin 0 -> 283 bytes .../game-heretic/fonts/defbigfont/0401.lmp | Bin 0 -> 274 bytes .../game-heretic/fonts/defbigfont/0407.lmp | Bin 0 -> 187 bytes .../game-heretic/fonts/defsmallfont/00C0.lmp | Bin 0 -> 163 bytes .../game-heretic/fonts/defsmallfont/00C2.lmp | Bin 0 -> 164 bytes .../game-heretic/fonts/defsmallfont/00C7.lmp | Bin 0 -> 163 bytes .../game-heretic/fonts/defsmallfont/00C8.lmp | Bin 0 -> 160 bytes .../game-heretic/fonts/defsmallfont/00C9.lmp | Bin 0 -> 160 bytes .../game-heretic/fonts/defsmallfont/00CA.lmp | Bin 0 -> 162 bytes .../game-heretic/fonts/defsmallfont/00CB.lmp | Bin 0 -> 158 bytes .../game-heretic/fonts/defsmallfont/00CE.lmp | Bin 0 -> 125 bytes .../game-heretic/fonts/defsmallfont/00CF.lmp | Bin 0 -> 119 bytes .../game-heretic/fonts/defsmallfont/00D4.lmp | Bin 0 -> 160 bytes .../game-heretic/fonts/defsmallfont/00D9.lmp | Bin 0 -> 169 bytes .../game-heretic/fonts/defsmallfont/00DB.lmp | Bin 0 -> 169 bytes .../game-heretic/fonts/defsmallfont/0401.lmp | Bin 168 -> 158 bytes .../game-heretic/fonts/defsmallfont/0407.lmp | Bin 0 -> 119 bytes .../filter/game-hexen/fonts/defbigfont/00C0.lmp | Bin 0 -> 276 bytes .../filter/game-hexen/fonts/defbigfont/00C2.lmp | Bin 0 -> 296 bytes .../filter/game-hexen/fonts/defbigfont/00C7.lmp | Bin 0 -> 242 bytes .../filter/game-hexen/fonts/defbigfont/00C8.lmp | Bin 0 -> 254 bytes .../filter/game-hexen/fonts/defbigfont/00C9.lmp | Bin 0 -> 254 bytes .../filter/game-hexen/fonts/defbigfont/00CA.lmp | Bin 0 -> 278 bytes .../filter/game-hexen/fonts/defbigfont/00CB.lmp | Bin 0 -> 279 bytes .../filter/game-hexen/fonts/defbigfont/00CE.lmp | Bin 0 -> 195 bytes .../filter/game-hexen/fonts/defbigfont/00CF.lmp | Bin 0 -> 187 bytes .../filter/game-hexen/fonts/defbigfont/00D4.lmp | Bin 0 -> 321 bytes .../filter/game-hexen/fonts/defbigfont/00D9.lmp | Bin 0 -> 257 bytes .../filter/game-hexen/fonts/defbigfont/00DB.lmp | Bin 0 -> 283 bytes .../filter/game-hexen/fonts/defbigfont/0401.lmp | Bin 0 -> 274 bytes .../filter/game-hexen/fonts/defbigfont/0407.lmp | Bin 0 -> 187 bytes .../game-hexen/fonts/defsmallfont/00C0.lmp | Bin 0 -> 163 bytes .../game-hexen/fonts/defsmallfont/00C2.lmp | Bin 0 -> 164 bytes .../game-hexen/fonts/defsmallfont/00C7.lmp | Bin 0 -> 163 bytes .../game-hexen/fonts/defsmallfont/00C8.lmp | Bin 0 -> 160 bytes .../game-hexen/fonts/defsmallfont/00C9.lmp | Bin 0 -> 160 bytes .../game-hexen/fonts/defsmallfont/00CA.lmp | Bin 0 -> 162 bytes .../game-hexen/fonts/defsmallfont/00CB.lmp | Bin 0 -> 158 bytes .../game-hexen/fonts/defsmallfont/00CE.lmp | Bin 0 -> 125 bytes .../game-hexen/fonts/defsmallfont/00CF.lmp | Bin 0 -> 119 bytes .../game-hexen/fonts/defsmallfont/00D4.lmp | Bin 0 -> 160 bytes .../game-hexen/fonts/defsmallfont/00D6.lmp | Bin 165 -> 156 bytes .../game-hexen/fonts/defsmallfont/00D9.lmp | Bin 0 -> 169 bytes .../game-hexen/fonts/defsmallfont/00DB.lmp | Bin 0 -> 169 bytes .../game-hexen/fonts/defsmallfont/0401.lmp | Bin 168 -> 158 bytes .../game-hexen/fonts/defsmallfont/0407.lmp | Bin 0 -> 119 bytes 57 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C0.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C2.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C7.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C8.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C9.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CA.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CB.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CE.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CF.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D4.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D9.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00DB.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0401.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0407.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C0.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C2.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C7.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C8.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C9.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CA.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CB.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CE.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CF.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D4.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D9.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00DB.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0407.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C0.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C2.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C7.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C8.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C9.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CA.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CB.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CE.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CF.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D4.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D9.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00DB.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0401.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0407.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C0.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C2.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C7.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C8.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C9.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CA.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CB.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CE.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CF.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D4.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D9.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00DB.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0407.lmp diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C0.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C0.lmp new file mode 100644 index 0000000000000000000000000000000000000000..75d0dba6e7334c80f8acd4c16d8d3ddb59c5f7d3 GIT binary patch literal 276 zcmXwz(G9{d3`EnC7Fs|RyYSBtEWsWO!WxW$6x(N)KW5;+Tq+jF2cP7@KWUH!VGsy;kc9Rr2SEs;WnimXCGD(c_P#uoSugMk zZ}1Ku@Cjeg;T!5w$}?Ox5f69OQ5Q2iR(BUUpH!n~1oyFS?xyLjolox93_dWw+_|S% z*z8C2Ff}(D1&c0nIJp07sjW5KM_D8OBqe3VA$LyfN;S)0Ep2LM5j*oU>XAXa#j;iJ hnKaiOM`c}d;Fet%5jj4nBC!iiV#an6QEDDMe*jX%tN{Q3 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C7.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C7.lmp new file mode 100644 index 0000000000000000000000000000000000000000..22e02fccc46e449f38e5f649c3c7623a5beb2c2b GIT binary patch literal 242 zcmXAi+YQ1n3`N~Gg_f5XhJSWo3btSghF}O*;46N#mDqq0kiv zud*bwX)zlHRgb_4Q%N|?s^i)WF|aApo3TV(A-d9)291!M#~M>0~Xwe_W%F@ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C8.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C8.lmp new file mode 100644 index 0000000000000000000000000000000000000000..21ddc5483ffe2fb153117d38207bbaad07fcc9c4 GIT binary patch literal 254 zcmXYr!41Mt3`0x%+X8Ko*o8AQumoc;2U{=&8#H!OCSU`O-~f@HB008|q1snD2XPc9 zaTXVG6*qAgE}r5g)-6CM@UChgqVEBZ2v4Ok3$okjusGvqD;Y3rhg4}?92sB9OtNj< zALOliQwj z7-;q_N(5OOV2&6x6d1Md*GmBLK literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CA.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CA.lmp new file mode 100644 index 0000000000000000000000000000000000000000..5862b6600cbca4b9bd8fbc9612c7ef2cfd55979f GIT binary patch literal 278 zcmXYr%WVQ-421v3F3SR&h+cB01&T-)se?vngbSXrmvg${K*lJRK3STvJ>HjN$@&r} zaTed=M_j~J+{CYViqBfgb_D1IUcHi>Ccq=YCA8*FZe}1>XS|1McVErMeTp=$j@&Jh zACj|?yNPrdX!a^C!ffckBVtz5_%bLY6G|s_E#1|9+s)*D=t#({v!V!pf42e3!wUT$wYu zkSn>7J9&^Nd675ykik3G)v7S4uHFM^TUESm-cTA*q`*LvXH<@-n-{Qj@H%3b2ZRGl3Lk!}kNAY$-*9 Wjo);xC0#E>=`d?6t+oHNU7laTDQE)# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D4.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D4.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b0aeff63c3f56a14e81254479e0e511f911cf2aa GIT binary patch literal 321 zcmXwz(G9{d3`EnWX`@1s_+bbZ;D>)^U%KH{7c7GMj?ITDec5?}1|EpG4Z zoXLe;$&K8}gFMNLe8`s^I_Hk$MBnr<*V6Hi(WnhOky%f{c_M0xE+MMWYA0jQr&U5g; u7zhDqfp>i=07Ehw!pP|+FJ7e5#&;qz&P`_aYEh0tpaeRg1PVx;&vrlwT*C9NV5Aqz_9){ZM-dt0 z#CwJdT;T?Hc)$~0(BKUp*dIzso2bLjs!Oh>R&pLL=3Kg#O^QRN%--fUH6sP5xRk1@ z5BV>pAL7lKQgpcKclcB_y0!-RxwYChb=E#~;xMR|YXADMEF`T1JCzeDzYO{~+4a4?yo|GI)uF~Gp3O=tsc|el0a8~l!Qz;fg`?N9 S`KNF05NF1}$t>=IE!Mxk>82O} literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0401.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0401.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d6f35ff0d62f6ad9b25fa22ef6c618d741fe2b1c GIT binary patch literal 274 zcmYL@-3`Jp41|*={i7`syYS2kEWs9x!4~Yn1hLO)Ul@bOa%qvU^eK|>e3!wUT$wYu zkSn>7J9&^Nd675ykik3G)v7S4uHFM^TUESm-cTA*q3b2ZRGl3Lk!}kNAY$-*9 Wjo);xC0#E>=`d?6t+oHNU7laTDQE)# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C0.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C0.lmp new file mode 100644 index 0000000000000000000000000000000000000000..63f0991cc6406d61c86efc0cea6e24cfbbe9eea9 GIT binary patch literal 163 zcmWlRyA1+C3`Bi*3_dPI$Xcz0Rx1J$LSky518SfF8lV8mU7lqFr)a5c((x)*)jap^JshtS4wPxdtXfn!=GDoz R-tt+#iBe0tawkJ+`~li#5gz~m literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C2.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C2.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8d6e4b4b1080758ca642614ba8566cad4a5008b8 GIT binary patch literal 164 zcmXwy!41MN3`N~mACsPu6-7c(#G#iS8Gs4cfEk#830Qz_!^@$vp5<@(eY!!|bZ9 Sj;Q%eY~+&1;lc-Ol=>h06cJYd literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C7.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C7.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e4ad4b44227575c8a54057bff92867e905b3226c GIT binary patch literal 163 zcmXAhF%E+;5CkuV#e@=BmW5;?`jn~jhWsFJ$QO73HLt~tp_se9)!sgBFtek)m~Z&N z7k==E6*kzxHIkRgL(-fR$~c!8Vvu@=i!*qi5oy#F;Dz0G(vpj*RfSYloVajggulVxfC*UO55S#$i;JR{*h=IKHkz5UO??+% z@e_wQ#a~?F7H9wh#k?k40838QkHEAd&oPA8l1pI1j40~{-AT)n#rI^DDwIZPIYmS* Q+K&88r~&Z0LGSdSJhE*O3IG5A literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C9.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..6a634f9ec5dbbde7a0d86fc93fa821bac45257e8 GIT binary patch literal 160 zcmWlS!3o1K5CkRLo3;HkK?s8oe)*GU-YFmrq=Iyi4$?yURYr&rJKV9igf)Z^!;SwA z4|u{0-td7h{6M2*sZElOT1X>W_nZ=Wm~9vB%1B&TA>(!nt9_&{JfYHds+O$WrvtT~ QF7|a(Z_;3T=g67%2he8_)&Kwi literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CA.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CA.lmp new file mode 100644 index 0000000000000000000000000000000000000000..5948bca24944e12349ade633c4e2d214d80815e7 GIT binary patch literal 162 zcmX|)!41Md3vZwO3WlVdAKd N2km#n3u!8%{{rW$5j6k+ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CB.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..c674b40e70e7ca63269b43dd1876f245e6de4914 GIT binary patch literal 158 zcmXwx!3lsc3`JY*C-y2*LZKAz9v#35oWKQ~zzJNyh3l`>zzg~0CEj>bYauJy$W9J& zl8fBrA+84mD3%SFbK-0~kddQ?&{B|u2(8{gErL;`iFFl!5jiQ8yHAv9ME&79;eWBb FEiapy5UKzG literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CE.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CE.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8427095c803d2dfa7199983a6889c5616761ad00 GIT binary patch literal 125 zcmXYp!3lsc6hnUtA=*npq=$l(f*|4uZr}!P-~_H;BYJotIlRzK?<hDCG!WbX literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D9.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..58d8d00530935cf02f0729b760811afa1e6ffc46 GIT binary patch literal 169 zcmW-Z!3o1K3`OObAEmw&j4`HQg2^G5F3@{t$Of6A3v_`DkXfCt2;N5$PkKlY5hriv zhkVIKcJd>Ca*&hw0j%-P?nl*v`U1Leqv{o?CFR*R0f;L~1a5(D%Xlg+AX9J?(0G8# VVVG1gx24&sy(uXsv#e)X_6rJX5k3F_ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00DB.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00DB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..96feb547e9d6aa8484a25598716e98a732184fb9 GIT binary patch literal 169 zcmX|&(Fwya5JN9E%EkF91Y?ZBgpiN?bb$`g3A#aN=mec03uIPDmyZaZI0;>lQA9d< z(qH6FKIBV&=KuXAym5e>(h6m@Kmo-7P@Br%l UJTL2F&u&mfj#IRuR~x~+ogTgsWB>pF literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0401.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0401.lmp index df10c490c79fd7de7edef5a41e6bd4261ebd4cef..c674b40e70e7ca63269b43dd1876f245e6de4914 100644 GIT binary patch literal 158 zcmXwx!3lsc3`JY*C-y2*LZKAz9v#35oWKQ~zzJNyh3l`>zzg~0CEj>bYauJy$W9J& zl8fBrA+84mD3%SFbK-0~kddQ?&{B|u2(8{gErL;`iFFl!5jiQ8yHAv9ME&79;eWBb FEiapy5UKzG literal 168 zcmX|((FuSs3`DE-i2ao!rBI6he!74YIDr#5ffG1^^Xest36JEsOM(kdYbFa>$wqc^ zkds{GCY=WacwBFDszpTr3TjT{_^Ck(GLk7_KGV-4mK5FD|6NH)pBEuk?&YTvR-TpEKi}S`Q>t+$ z7jh*xawiY+B5(2`U(z)xjlBpQP+htW0Fhy*>T|gBzT~VLC}r3I&u}U!Of40jvzc3M zxzBEDFk8|_#LaRB{=Lvriq#&C4VsCMY4i9AN21iN~4oZFwlO zp5Pf?;1%BB9X{a;zM(FqJi=uY@o-libuqJJb$5~TNi}*#a3AaDZkpcO`Q-kQ!3XA- z8}}3ooBfC$rsig&V9`Ym2lsz1wY7%(C~L%@q@=7kO3j1k53-Mp!vFvP literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C7.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C7.lmp new file mode 100644 index 0000000000000000000000000000000000000000..06a3969ff91c1315a1a26ebb24c1a51cdc880dfc GIT binary patch literal 242 zcmXAi+YQ1n3`Ns6EiErG4FBxF6l}o~%wXA;Rki=DzzA%>2uR^XL^+myZQZ*|rh?$W|B?i zzLL9+bQoy%t}9@T=(S{=l=o~;d2!!n4%jOfskS(3R`^&j45aT HSTffKmY{On literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C9.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..331f0c1638b8215294467573de13f9442d684e83 GIT binary patch literal 254 zcmXYr-3`J(41*7PZTTw_yYS2aOu!cG!5~#^MN!#-9aw=4cq~rENuP4EW8dw|spL6} zi@1uLxQmA{@e*(G5nr)s0Xl)X?*Wep*S*^UF*###R*f0ScAp}RlOqGAX4I^0+@IvG zCmjZw%|(eIYXdwZwi*fy+V^ZPYZXPBllvyiful-7UhTBBd}yfS$duZDZm4E}+B@Ze LL(2KsVa*&r%K>tz literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CA.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CA.lmp new file mode 100644 index 0000000000000000000000000000000000000000..6f9b3a88b27ef632558482e570f8e9157994c5b4 GIT binary patch literal 278 zcmXYr?QOzf420j0gb*N9-KD=-fg!p@=U@ipJ6Tq;2vc;6{-9@srAL`Je8@3|a3*b~3WMqrBY>t+HFq~ILJ3S}b*Ji+!B?|U@> literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CE.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CE.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2927fa75604ca2cae71b2c5b83757520984976ff GIT binary patch literal 195 zcmXwzK?(vf6hqr7BM7tc9pA9ub!(xzd#hD9M9E85;y)K6Sa1LU literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..bcd452caff26fa79e8b2ab844f1e27982c409b80 GIT binary patch literal 187 zcmXwy!3jb^3`DaU55gWS#FG_RhE>>tRoFtvhH=?FSYI6X^8;@}V0bypMMN^M%p19r z2YHegd6N(Ml2RffZ}K5ua_F2pk`swz&RR5!tiA&wcAlk3 z*s#&&G88$lj`CAv20tpo7?oqTIbGffi_i68MDiMX=Juvc1YWx}$Th z_Y?0KE^vh#+(F<0Pk6x_KCnNOl82~0%&MzYQ!66fCy}yf8B!c>681K?sTnCaozJseuqz0lW$u E0Y>kB{Qv*} literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00DB.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00DB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d02e18ab9146b2e45afc08906e0cff68bc03f66b GIT binary patch literal 283 zcmX|+-3>w^426LkeDD%~5{GdEmv9J|a17t!*pPDH+`=*30#7f|lYF5qg`OsNbfz=8 zkSn>7J9&^Nd675ykWNnCxy@E25Ap1i2M}jqDb=J>N)LMx6lstlu+bkxG#4vb9}hOV zNu=c*Q~3)O=q{+{yyNZ2YPC$)&)o#@GR~@1hZ>)FHY=^9#+Synp)b1(*v<5Aq}+FY+cI(#H_mN)-mxHAVnUqiXJMT!aM7W_73Pv%xo4NFp{(RbQ468gxGv zkt&%jz_9^LMIo~0q`J6wd}tdp(@XT$RW#TIn4QD9;yH%z5$v literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0407.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0407.lmp new file mode 100644 index 0000000000000000000000000000000000000000..bcd452caff26fa79e8b2ab844f1e27982c409b80 GIT binary patch literal 187 zcmXwy!3jb^3`DaU55gWS#FG_RhE>>tRoFtvhH=?FSYI6X^8;@}V0bypMMN^M%p19r z2YHegd6N(Ml2RffdK PEM~0K60Ojj=Ar)q^Su$B literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C2.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C2.lmp new file mode 100644 index 0000000000000000000000000000000000000000..277015f206eef0003cb4201eeddae95999977ab8 GIT binary patch literal 164 zcmXwy!41MN3`N~m@ar77B1ch^0eb8Joq!FPfeDy^1=u#c9FX-a|1W>rEt%P5JN?C}^1$TRQMKnK)73lzXR)y6EzW2MtcI&Y(yee09@f;X(N z!43zU@B#Obyi}V`noB~Nq$P$Jq`{$aM(+zEP5K@1LT`I1Cp->tA`Tga`JWN8%8b5~ NCy`cN!>+wcy#Nv!69WJM literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C8.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C8.lmp new file mode 100644 index 0000000000000000000000000000000000000000..ddf044f1bac1880cb89f7bf56d501ff64b5883cd GIT binary patch literal 160 zcmW-Z(G7zz3`CtkdK@49LscS_WB@)HfeqMz3A#WB=zsT3FUWfKoz6CGHZy0N`YsM} zic7r3M|{OkgaIJX%xiKCKrOlZ8CaeuYl`u67J@+uG0xRkhX;*%^ovC|`ZixSCD=G~0#8JO4 M>UYN6KTJvJF9;nG#{d8T literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CB.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..04f10ef00561cadcd72e652ef2eeba9924c6dce9 GIT binary patch literal 158 zcmXwy?FoP|3`DCI&I};Z5LyTDrvo^F6S#mAIDreeaJ`5I9^~V3ks!fqCJR}~Ms{+L zlU(E`u>%CC4ZNn3*#|BPifKyUlqAET?)B6R97R6SPxgx_S)shWqKpGPBeud!_>=ko Dz3dT5 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CE.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CE.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8a695afbe0e9398e506c424c015a2b4abee78bc1 GIT binary patch literal 125 zcmXYp!3lsc6hnUt5`Pa~ib$dOd+0%M1UGO4H*f;iuPJ(XkK~X*f`~Y&^iB?Pl8fBr sA>OM3%?&_i!00J72|!9PX7beu#a1h-tg1O7ZgF1vn8OUv{px>w0f%f1$p8QV literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d1296467d34150a3afc87df2ae8887d808b75622 GIT binary patch literal 119 zcmZQ);A8*+6(H6EVk;o_0OC*}P6pyaAZBD_XJ`M_ k=zm5IpqPTZoV)@jCs<0JU06d{R2;659jF|L{zD7{07B3VIRF3v literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D4.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D4.lmp new file mode 100644 index 0000000000000000000000000000000000000000..590ec505a53234f58a683ce0b19ef777e33a6cd4 GIT binary patch literal 160 zcmXYqu?>Sz5JL|TSVuvF(AP&N(o&>kfJ~4LGD9}V1Q~#BKMzFltg~eM+Gh%A+gD>SEZ9dXu6IeU5q1Co literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D6.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D6.lmp index e9cda191b431f30b4db563f52389a5e2c7185d04..1278c23b7b2482dc49c9c5a23be8afd1d2f7bc06 100644 GIT binary patch literal 156 zcmX|(!3lsc5CkIzmwStZgrMI%d|H4NSb-&2ffZPQ{l*c*gW>kr-7{zIof#HbVS^nG zIN^dDd@ISUHY{n%QL4^RN}(_PcSXy%16Sh_N$Ti@KTAuIFK;s{R@!v=i MhNXDVUxuN41MqASLjV8( diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D9.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..21d2f82047f4aca9de8e7e8cb86a1da3f247727c GIT binary patch literal 169 zcmW-Z+X=%k3`OM_awC8ACm3TB5)IG=`rjF{L1*X!Ss(*+R`<$+BlI|uN)nMEPv#eS zlaqYNmt5o~KN2S}=8=1xRU7sV=)#F=fwIygQ_S|lx6@HU;rjy17=_XCSU<(4KMw`(zEWYJG-rBHrbVZ zgF8In2`_lV2fi=|G0U-gkh^EqBK66oqMBpcakfe+DR1M5U9e|e+%==dg=RrW^%CC4ZNn3*#|BPifKyUlqAET?)B6R97R6SPxgx_S)shWqKpGPBeud!_>=ko Dz3dT5 literal 168 zcmX|(-3fp&420_sXa^8!DXm;yeRKgQZ~`ZA0w-_+=dG7gO!!ESyTlr6v{tf_ogCyO z7rDtpUeb4f0NIRXE-9+8Ktu}OxvD0K2=GM-^MQU4DM`_t{oh3oU%eSJPbgnHy+hyX I7#gnm1NBfCU;qFB diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0407.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0407.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d1296467d34150a3afc87df2ae8887d808b75622 GIT binary patch literal 119 zcmZQ);A8*+6(H6EVk;o_0OC*}P6pyaAZBD_XJ`M_ k=zm5IpqPTZoV)@jCs<0JU06d{R2;659jF|L{zD7{07B3VIRF3v literal 0 HcmV?d00001 From 805cf6c098ead0dab26b4e8fd7caddd619c50485 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 12:20:58 +0100 Subject: [PATCH 04/20] - moved the sprite box on the player menu up a bit because this was badly overlapping with some long texts in most languages. --- wadsrc/static/menudef.txt | 4 ++-- wadsrc/static/zscript/ui/menu/playermenu.zs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index a4690fbefb..738c59403c 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -419,12 +419,12 @@ ListMenu "PlayerMenu" IfGame(Doom, Heretic, Strife, Chex) { MouseWindow 0, 220 - PlayerDisplay 220, 80, "20 00 00", "80 00 40", 1, "PlayerDisplay" + PlayerDisplay 220, 48, "20 00 00", "80 00 40", 1, "PlayerDisplay" } IfGame(Hexen) { MouseWindow 0, 220 - PlayerDisplay 220, 80, "00 07 00", "40 53 40", 1, "PlayerDisplay" + PlayerDisplay 220, 48, "00 07 00", "40 53 40", 1, "PlayerDisplay" } ValueText "$PLYRMNU_TEAM", "Team" diff --git a/wadsrc/static/zscript/ui/menu/playermenu.zs b/wadsrc/static/zscript/ui/menu/playermenu.zs index 09d05b0c2c..38c70353bd 100644 --- a/wadsrc/static/zscript/ui/menu/playermenu.zs +++ b/wadsrc/static/zscript/ui/menu/playermenu.zs @@ -586,9 +586,9 @@ class PlayerMenu : ListMenu { Super.Drawer(); String str = Stringtable.Localize("$PLYRMNU_PRESSSPACE"); - screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 50 + 48 + 70, str, DTA_Clean, true); + screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 130, str, DTA_Clean, true); str = Stringtable.Localize(mRotation ? "$PLYRMNU_SEEFRONT" : "$PLYRMNU_SEEBACK"); - screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 50 + 48 + 70 + SmallFont.GetHeight (), str, DTA_Clean, true); + screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 130 + SmallFont.GetHeight (), str, DTA_Clean, true); } From 5f6198f4e438a65bd97e0c5d821d5588a6de15aa Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 12:54:46 +0100 Subject: [PATCH 05/20] - let IWAD and PWAD BigFonts override BigUpper for consistency. --- src/gamedata/fonts/font.cpp | 3 +++ src/gamedata/fonts/singlelumpfont.cpp | 3 +++ src/gamedata/fonts/v_font.cpp | 20 +++++++++++++++++++- src/gamedata/fonts/v_font.h | 14 ++++++++++++++ src/menu/menu.h | 3 +++ src/menu/menudef.cpp | 3 +++ 6 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/gamedata/fonts/font.cpp b/src/gamedata/fonts/font.cpp index 5d67b3bcee..92ebb03ed7 100644 --- a/src/gamedata/fonts/font.cpp +++ b/src/gamedata/fonts/font.cpp @@ -185,6 +185,7 @@ FFont::FFont (const char *name, const char *nametemplate, const char *filetempla if (FixedWidth > 0) { ReadSheetFont(folderdata, FixedWidth, FontHeight, Scale); + Type = Folder; } else { @@ -211,6 +212,7 @@ FFont::FFont (const char *name, const char *nametemplate, const char *filetempla } if (lump.isValid()) { + Type = Multilump; if (position < minchar) minchar = position; if (position > maxchar) maxchar = position; charMap.Insert(position, TexMan.GetTexture(lump)); @@ -235,6 +237,7 @@ FFont::FFont (const char *name, const char *nametemplate, const char *filetempla auto tex = TexMan.GetTexture(lump); tex->SetScale(Scale); charMap.Insert((int)position, tex); + Type = Folder; } } } diff --git a/src/gamedata/fonts/singlelumpfont.cpp b/src/gamedata/fonts/singlelumpfont.cpp index 63cd6ea5a3..02e8564b12 100644 --- a/src/gamedata/fonts/singlelumpfont.cpp +++ b/src/gamedata/fonts/singlelumpfont.cpp @@ -131,6 +131,7 @@ FSingleLumpFont::FSingleLumpFont (const char *name, int lump) : FFont(lump) if (data[0] == 0xE1 && data[1] == 0xE6 && data[2] == 0xD5 && data[3] == 0x1A) { LoadBMF(lump, data); + Type = BMF; } else if (data[0] != 'F' || data[1] != 'O' || data[2] != 'N' || (data[3] != '1' && data[3] != '2')) @@ -143,10 +144,12 @@ FSingleLumpFont::FSingleLumpFont (const char *name, int lump) : FFont(lump) { case '1': LoadFON1 (lump, data); + Type = Fon1; break; case '2': LoadFON2 (lump, data); + Type = Fon2; break; } } diff --git a/src/gamedata/fonts/v_font.cpp b/src/gamedata/fonts/v_font.cpp index d7ec9c0ac5..9218c5d196 100644 --- a/src/gamedata/fonts/v_font.cpp +++ b/src/gamedata/fonts/v_font.cpp @@ -859,6 +859,12 @@ FFont *V_GetFont(const char *name, const char *fontlumpname) FFont *font = FFont::FindFont (name); if (font == nullptr) { + if (!stricmp(name, "BIGUPPER")) + { + font = FFont::FindFont("BIGFONT"); + if (font) return font; + } + int lump = -1; int folderfile = -1; @@ -1446,6 +1452,10 @@ void V_InitFonts() SmallFont2 = new FFont("SmallFont2", "STBFN%.3d", "defsmallfont2", HU_FONTSTART, HU_FONTSIZE, HU_FONTSTART, -1); } } + + //This must be read before BigFont so that it can be properly substituted. + BigUpper = V_GetFont("BigUpper"); + if (!(BigFont = V_GetFont("BigFont"))) { if (gameinfo.gametype & GAME_Raven) @@ -1453,7 +1463,15 @@ void V_InitFonts() BigFont = new FFont("BigFont", "FONTB%02u", "defbigfont", HU_FONTSTART, HU_FONTSIZE, 1, -1); } } - if (!(BigUpper = V_GetFont("BigUpper"))) + + // let PWAD BIGFONTs override the stock BIGUPPER font. (This check needs to be made smarter.) + if (BigUpper && BigFont->Type != FFont::Folder && BigUpper->Type == FFont::Folder) + { + delete BigUpper; + BigUpper = BigFont; + } + + if (BigUpper == nullptr) { BigUpper = BigFont; } diff --git a/src/gamedata/fonts/v_font.h b/src/gamedata/fonts/v_font.h index 94028589eb..7b84e3f06c 100644 --- a/src/gamedata/fonts/v_font.h +++ b/src/gamedata/fonts/v_font.h @@ -81,6 +81,18 @@ extern int NumTextColors; class FFont { public: + + enum EFontType + { + Unknown, + Folder, + Multilump, + Fon1, + Fon2, + BMF, + Custom + }; + FFont (const char *fontname, const char *nametemplate, const char *filetemplate, int first, int count, int base, int fdlump, int spacewidth=-1, bool notranslate = false); virtual ~FFont (); @@ -119,6 +131,7 @@ protected: void ReadSheetFont(TArray &folderdata, int width, int height, const DVector2 &Scale); + EFontType Type = EFontType::Unknown; int FirstChar, LastChar; int SpaceWidth; int FontHeight; @@ -147,6 +160,7 @@ protected: friend struct FontsDeleter; friend void V_ClearFonts(); + friend void V_InitFonts(); }; diff --git a/src/menu/menu.h b/src/menu/menu.h index 758ca253e1..43a96f8123 100644 --- a/src/menu/menu.h +++ b/src/menu/menu.h @@ -9,6 +9,7 @@ #include "r_data/r_translate.h" #include "c_cvars.h" #include "v_font.h" +#include "gi.h" #include "textures/textures.h" EXTERN_CVAR(Float, snd_menuvolume) @@ -207,6 +208,8 @@ public: mScrollTop = 0; mIndent = 0; mDontDim = 0; + mFont = gameinfo.gametype == GAME_Doom ? BigUpper : BigFont; + } size_t PropagateMark() override; ~DOptionMenuDescriptor() diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index e096b4718f..e3df4fbf07 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -948,6 +948,7 @@ static void ParseOptionMenu(FScanner &sc) sc.MustGetString(); DOptionMenuDescriptor *desc = Create(); + desc->mFont = gameinfo.gametype == GAME_Doom ? BigUpper : BigFont; desc->mMenuName = sc.String; desc->mSelectedItem = -1; desc->mScrollPos = 0; @@ -1303,6 +1304,7 @@ static void BuildPlayerclassMenu() DOptionMenuDescriptor *od = Create(); MenuDescriptors[NAME_Playerclassmenu] = od; od->mMenuName = NAME_Playerclassmenu; + od->mFont = gameinfo.gametype == GAME_Doom ? BigUpper : BigFont; od->mTitle = "$MNU_CHOOSECLASS"; od->mSelectedItem = 0; od->mScrollPos = 0; @@ -1683,6 +1685,7 @@ fail: od = Create(); MenuDescriptors[NAME_Skillmenu] = od; od->mMenuName = NAME_Skillmenu; + od->mFont = gameinfo.gametype == GAME_Doom ? BigUpper : BigFont; od->mTitle = "$MNU_CHOOSESKILL"; od->mSelectedItem = defindex; od->mScrollPos = 0; From 4cf90d70aef0a8f5b54e6af5bedad4d1d2501edc Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 12:58:28 +0100 Subject: [PATCH 06/20] - fixed: cl_maxdecals did not reset the decal counter when deleting decals. --- src/g_cvars.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/g_cvars.cpp b/src/g_cvars.cpp index a9e2ec3110..7aac035d03 100644 --- a/src/g_cvars.cpp +++ b/src/g_cvars.cpp @@ -94,6 +94,7 @@ CUSTOM_CVAR (Int, cl_maxdecals, 1024, CVAR_ARCHIVE|CVAR_NOINITCALL) if (thinker != NULL) { thinker->Destroy(); + Level->ImpactDecalCount--; } } } From 0febe20a080125e1f8b9ebc470972cf95544da06 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 13:15:38 +0100 Subject: [PATCH 07/20] - fixed: Unmorphing a monster did not clear its UNMORPHED flag. --- src/p_mobj.cpp | 2 ++ wadsrc/static/zscript/actors/player/player_morph.zs | 1 + 2 files changed, 3 insertions(+) diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 44e8a97e9f..d2c00d2a57 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -7396,5 +7396,7 @@ void PrintMiscActorInfo(AActor *query) Printf("FriendlySeeBlocks: %d\n", query->friendlyseeblocks); Printf("Target: %s\n", query->target ? query->target->GetClass()->TypeName.GetChars() : "-"); Printf("Last enemy: %s\n", query->lastenemy ? query->lastenemy->GetClass()->TypeName.GetChars() : "-"); + auto sn = FState::StaticGetStateName(query->state); + Printf("State:%s, Tics: %d", sn.GetChars(), query->tics); } } diff --git a/wadsrc/static/zscript/actors/player/player_morph.zs b/wadsrc/static/zscript/actors/player/player_morph.zs index 7921d1dce5..87ee90ac96 100644 --- a/wadsrc/static/zscript/actors/player/player_morph.zs +++ b/wadsrc/static/zscript/actors/player/player_morph.zs @@ -562,6 +562,7 @@ class MorphedMonster : Actor unmorphed.args[3] = args[3]; unmorphed.args[4] = args[4]; unmorphed.CopyFriendliness (self, true); + unmorphed.bUnmorphed = false; UnmorphedMe = NULL; Substitute(unmorphed); Destroy (); From 00febf0498e4ddd95d707f3b829044664d39647a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 13:24:52 +0100 Subject: [PATCH 08/20] - fixed: FLevelLocals did not set the owner for its event manager. --- src/g_level.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_level.cpp b/src/g_level.cpp index 1181d4559a..02eaa56e90 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -1530,7 +1530,7 @@ FLevelLocals::FLevelLocals() : Behaviors(this), tagManager(this) { Players[i] = &players[i]; } - localEventManager = new EventManager; + localEventManager = new EventManager(this); } FLevelLocals::~FLevelLocals() From 9ab57e242bf5d67a1c9753a7bb300d8dca098ef3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 13:35:35 +0100 Subject: [PATCH 09/20] - fixed: PlayerStartStomp must check for NOTELEFRAG. --- src/p_map.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/p_map.cpp b/src/p_map.cpp index 06bd5dce11..c8ba454709 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -557,6 +557,9 @@ void P_PlayerStartStomp(AActor *actor, bool mononly) if (th->player == NULL && !(th->flags3 & MF3_ISMONSTER)) continue; + if ((th->flags6 & MF6_NOTELEFRAG) && !(th->flags7 & MF7_ALWAYSTELEFRAG)) + continue; + if (th->player != NULL && mononly) continue; From d89329918584b5b41cbd7b5a756a5b22c15f7918 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 13:50:58 +0100 Subject: [PATCH 10/20] - fixed: static event handlers must also receive WorldLoaded events on loading a savegame. --- src/events.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events.cpp b/src/events.cpp index 293ca48d08..5b39d7f547 100755 --- a/src/events.cpp +++ b/src/events.cpp @@ -278,7 +278,7 @@ void EventManager::WorldLoaded() { for (DStaticEventHandler* handler = FirstEventHandler; handler; handler = handler->next) { - if (savegamerestore) continue; // don't execute WorldLoaded for handlers loaded from the savegame. + if (!handler->IsStatic() && savegamerestore) continue; // don't execute WorldLoaded for handlers loaded from the savegame. handler->WorldLoaded(); } } From 5682b1b5bb4acc6095ab17f4d6ebfde9c525657a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 16:03:56 +0100 Subject: [PATCH 11/20] -corrected text placement on load+save menu. --- wadsrc/static/zscript/ui/menu/loadsavemenu.zs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/wadsrc/static/zscript/ui/menu/loadsavemenu.zs b/wadsrc/static/zscript/ui/menu/loadsavemenu.zs index c0f125b462..6843a6b8b4 100644 --- a/wadsrc/static/zscript/ui/menu/loadsavemenu.zs +++ b/wadsrc/static/zscript/ui/menu/loadsavemenu.zs @@ -228,6 +228,7 @@ class LoadSaveMenu : ListMenu } screen.SetClipRect(listboxLeft, listboxTop+rowHeight*i, listboxRight, listboxTop+rowHeight*(i+1)); + int fontoffset = -CleanYFac; if (j == Selected) { @@ -235,19 +236,19 @@ class LoadSaveMenu : ListMenu didSeeSelected = true; if (!mEntering) { - screen.DrawText (ConFont, colr, listboxLeft+1, listboxTop+rowHeight*i+CleanYfac, node.SaveTitle, DTA_CleanNoMove, true); + screen.DrawText (ConFont, colr, listboxLeft+1, listboxTop+rowHeight*i+CleanYfac + fontoffset, node.SaveTitle, DTA_CleanNoMove, true); } else { String s = mInput.GetText() .. ConFont.GetCursor(); int length = ConFont.StringWidth(s) * CleanXFac; int displacement = min(0, listboxWidth - 2 - length); - screen.DrawText (ConFont, Font.CR_WHITE, listboxLeft + 1 + displacement, listboxTop+rowHeight*i+CleanYfac, s, DTA_CleanNoMove, true); + screen.DrawText (ConFont, Font.CR_WHITE, listboxLeft + 1 + displacement, listboxTop+rowHeight*i+CleanYfac + fontoffset, s, DTA_CleanNoMove, true); } } else { - screen.DrawText (ConFont, colr, listboxLeft+1, listboxTop+rowHeight*i+CleanYfac, node.SaveTitle, DTA_CleanNoMove, true); + screen.DrawText (ConFont, colr, listboxLeft+1, listboxTop+rowHeight*i+CleanYfac + fontoffset, node.SaveTitle, DTA_CleanNoMove, true); } screen.ClearClipRect(); j++; From 7a8d5bc23c8619bae28674ab7b3e33dab34da6be Mon Sep 17 00:00:00 2001 From: Nemrtvi Date: Sat, 2 Mar 2019 18:09:08 +0100 Subject: [PATCH 12/20] Spanish font for Doom and Raven MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also includes extra French letters (ÿ and œ) as well as a tiny fix for the Hexen smallfont ü. --- .../game-doom/fonts/defsmallfont/00D1.lmp | Bin 143 -> 148 bytes .../game-doom/fonts/defsmallfont/0152.lmp | Bin 0 -> 178 bytes .../filter/game-doomchex/fonts/bigfont/00A1.lmp | Bin 134 -> 134 bytes .../filter/game-doomchex/fonts/bigfont/00BF.lmp | Bin 252 -> 252 bytes .../filter/game-doomchex/fonts/bigfont/0152.lmp | Bin 0 -> 513 bytes .../game-doomchex/fonts/bigupper/00A1.lmp | Bin 142 -> 142 bytes .../game-doomchex/fonts/bigupper/00BF.lmp | Bin 255 -> 255 bytes .../game-doomchex/fonts/bigupper/0152.lmp | Bin 0 -> 648 bytes .../game-doomchex/fonts/bigupper/0153.lmp | Bin 0 -> 513 bytes .../game-heretic/fonts/defbigfont/00BF.lmp | Bin 265 -> 265 bytes .../game-heretic/fonts/defbigfont/00D1.lmp | Bin 0 -> 331 bytes .../game-heretic/fonts/defbigfont/00FF.lmp | Bin 0 -> 279 bytes .../game-heretic/fonts/defbigfont/0152.lmp | Bin 0 -> 449 bytes .../game-heretic/fonts/defsmallfont/00A1.lmp | Bin 86 -> 86 bytes .../game-heretic/fonts/defsmallfont/00BF.lmp | Bin 136 -> 136 bytes .../game-heretic/fonts/defsmallfont/00C4.lmp | Bin 161 -> 164 bytes .../game-heretic/fonts/defsmallfont/00D1.lmp | Bin 0 -> 180 bytes .../game-heretic/fonts/defsmallfont/00FF.lmp | Bin 0 -> 170 bytes .../game-heretic/fonts/defsmallfont/0152.lmp | Bin 0 -> 242 bytes .../filter/game-hexen/fonts/defbigfont/00BF.lmp | Bin 265 -> 265 bytes .../filter/game-hexen/fonts/defbigfont/00D1.lmp | Bin 0 -> 331 bytes .../filter/game-hexen/fonts/defbigfont/00FF.lmp | Bin 0 -> 279 bytes .../filter/game-hexen/fonts/defbigfont/0152.lmp | Bin 0 -> 449 bytes .../game-hexen/fonts/defsmallfont/00A1.lmp | Bin 86 -> 86 bytes .../game-hexen/fonts/defsmallfont/00BF.lmp | Bin 136 -> 136 bytes .../game-hexen/fonts/defsmallfont/00C4.lmp | Bin 161 -> 164 bytes .../game-hexen/fonts/defsmallfont/00D1.lmp | Bin 0 -> 180 bytes .../game-hexen/fonts/defsmallfont/00FF.lmp | Bin 0 -> 170 bytes .../game-hexen/fonts/defsmallfont/0152.lmp | Bin 0 -> 242 bytes 29 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0153.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D1.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00FF.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D1.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00FF.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D1.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D1.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0152.lmp diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D1.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D1.lmp index c3f9c4cc29d5cb8fa1cb43d680ab1ef6d6194bb9..98796cc272c5d8c02e93dbaba4a12514078c0daa 100644 GIT binary patch literal 148 zcmX|(!3}^g3p!xkdp~t>gler7Qn7iaDZ~pQdVPYwn literal 143 zcmX}k!3}^Q429w6Nk;M3lMA?j3%Gy_xPTj33IvA3M?^^eCSTIx-~dcmI9Il@ogM6C o7rPnPq(9V#Alc01gNiqw21<(35qK2yfDig~WKq@9F#lhpzUy8jzW@LL diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0152.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..19854b4548ad616beb628391fca4ae9d56e2639b GIT binary patch literal 178 zcmXxd!3lsc429vUNDmH^i$~86-~bNb01n^)4&VUZYZ`1^PG2PreDG5qv~%9&>tTQq zCYWJ?6*k!6fD`J5^1W3{^rQ#nJc@-&2PF;mo;zAAUvgUuBD;vQMN`_Wz&Q Ee3X(jbN~PV literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/00A1.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/00A1.lmp index 916ceb9c0cc6c42c72acf1d15bba0ad7e6ad6b96..da7389a7bc28fc02ab895c3453928017437705b6 100644 GIT binary patch literal 134 zcmZQ$;9+23`14-@NE!mM6A%XjaS9NZ0x<(m77F+e5{Qn;N{$7A))fFL3sDuAH{+0_34PgN>T literal 134 zcmZQ$;9&p(1t2yAVkaOD2I3STE(Kx+o-7pbA0&{Jn3a_r3k1noSzv+0=&Y=m(9qDJ Y0H{EGcveJB{{R30 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/00BF.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/00BF.lmp index 036a4819cc6e93f24f915a021c48f567c7085a07..b4a5cc7b69d5cc023e286973a81bd01662728bb1 100644 GIT binary patch literal 252 zcmYk$yA8rH5C&iuAxaT36D{q<=1ws|Scv8d7GMQdU zrE8sYpS;4p1`i2NaE1$9;Rbhjz!P5ZhPu*mz zb~+mOsvgF|cF>NHbfq9W4c7fl@SuJFKjEXMh^IE?$aL*oXz)R?js?knWPz>x1(>u^ Ay8r+H literal 252 zcmYMuy$!-J5CvctAxaT36D=K>7@tUlb&%>6EWiq^kQG>g6)`??c>fdVE y0^MdT1dmH(n(8x}kJy)hvQG`Z|vdFDO+-N(0voPRlV5 z?r)=bSc8e8m`BEjKQ~iT^goI~F5ia8lWI)1R@tLzwmJ8?w??&6-F9bfo4V~-c5>RZ zDNge_3K6`Y8X@K^2HO@xlM49xFq{Lw{$9#!pjpozy#7;^!aOF0nc4h&hwY!CnG|-_ G6vH>U(W7zz literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/00A1.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/00A1.lmp index b0121f7772ead2de4b2412b614baf991ffb7955c..1bed4cbffc77f02d0828b4e202057550209663bf 100644 GIT binary patch literal 142 zcmZQ$;Adc9`14-@Na_QzGZ2RZaW)Xw12HRC783Z+zz^jm#6?C&M@L3xWr4-QL$b0` hVq<_p(J|3TV#%?wu`xgZQwP?a7y}fI1&g5>4*=gCE-e56 literal 142 zcmZQ$;Aa2<1t8W3VrL)@2jXlXt_NaPt}G<*pMf9Biw+3`f{=i$EU;K&bXHa@NB{_s b#p1(4f`A|-2&xXOJ2E@~C>8)xhh{tgs17Sg diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/00BF.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/00BF.lmp index c403f2146dffb6f441e3457c0038d5eb081cc86f..2a66f8f4064e998c06ea5e2acd330a20c7fee47a 100644 GIT binary patch literal 255 zcmZ9F!3_c-5Jfqxx^7~&A+O%qz(OWUR<6GR8?XU8un3E=2#c@)6Z{}toaB*tA7awRu%ClB%@FY+ea4y97R2BJs=(xzu?z4J{hOV0JidFv!JIRUd& wF>H#ghP=}qfgB|@mM;L&nx6BLc?&Gl)ct3{m^>%#U73z?p~sy4*4Ld#Uylk>tpET3 literal 255 zcmZ9F%?ScA5QTH_XBA`{^6EV-L&C6xkb{@kfDPDy9aw}#ScFAv2k}kJUL5#fzL%NF z$&JqHOfJNeL_lujP9Ee*UgS+aWFdzQTGe3(6x9OM{lHdYh^x#ZqS{|_l%Qc10g~^c uY?^G3b~8_aMb(Y%3$uxCdCSU73F7~=q-uNDb*^ofk~wZG^>@DCMEwH1K2aY4 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0152.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..1fa0d811eac0e3554285f3730e4e07d1f964f4a7 GIT binary patch literal 648 zcmZvYO-ckY5QQ_1KcL9$1i=dk9zpO3&e$}WOoEvTMI3uCh-;TFUAy!Et~`M&PvFWE zxbXn(tLkJxu;6Q6zr0E+IW|)xbq5~66LdmD?KkX(rMr2{O*-t$kcsAzn46R2*-s2xj^ZFibEU9t;@|KEKW`h;0lFQXa%`I$L1Yh%pUxZ`^X*KiB>@CeWF3h(d<`;{>Va0JJ20s#wHNVDiyHvVK_Vf`gSW^JW)NmzVEFTYB1gUXwd>ceTw!Cqa^>pPYgexdFkiiT^ZNDw46H!<#`UXL c*?^2|*T6E@uHCqH4JI>jpA<7t!^GQq0MH69lK=n! delta 82 zcmeBV>SW^JW)Nlofr%XT=2x#>y>f+(^~#m2K-N_O=Brn4UcdgIf%WRu>o;y*y~+k; bT)PIAxpwWwwQDe$iTk9OuU)@3@wOfSL$fTH diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D1.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D1.lmp new file mode 100644 index 0000000000000000000000000000000000000000..868a0142aa19d6a7839ea85bde220c9d342cceca GIT binary patch literal 331 zcmYL@(GkKR42CHMUs~>T2e;4#T){D1!!g{#34A96=ol_gKWOg^d>ka<&mYXmw79|z z?(l#oyxR?h2SRZDR}r0~qj;?&iQWKwcL zwH6W-+NNMrs?~*@OYd)gkSE`S{2XISvPX>Q^hQs$Piwv27Nj>rL%+L#D3dCtutujD ld!`q7a@e-{ek}@Ji`fI;0-?E3%=n8VhrIDuHgo5;STQM2~O||@9+V`Bx22^ z);-UvTWigfAgyMbsjBrb9y#+YQB#pUjBe9XW;RGT!suQpWf?fLu9%m0rB<_UtF_l( zGr6S1QMGqpQ){YwoXG6Ll55?tq_ryyvU!(0dvWUa;NVkuSMnB-#>A8-ibs#M`p`Yj zW@pvuKpo){K3x_$w>Gkn@jtYWNW7U1v`1d?HCO$a`qh`A6m==~Yr2zH@%Kwf_-2>A I{+!g8Kd`3!KL7v# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00A1.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00A1.lmp index cbfb264c0a5327290aa9a02f0b787b7445312f90..1cee5470e254ef5c77bfc52692fd52426603bf28 100644 GIT binary patch literal 86 zcmZQ!;ACK6`1fA|NNNJHIS{)7F#{7T5HPc`vx8_>*8dEgtgMQx%8K%`QeYlCyBMp4 Rn23-FhzC^+R0mf79{_q82-^Sv literal 86 zcmZQ!;A8*+2_V)4VsjvN1!4v!Rv=(zV`XJ$2eJM$aI&+Dv5E+Zh)IBXtgMQxQnK=j O${-$GF;FE?`F{Y|fdyA6Oq3_}Bl`Sb`Or07~YT2^2JCSV9k7AHJti1Z@GcHCNLW_Qf&1yUuu@E_CGUq%=%h(`#3yH5E)ETUxOiVEaP&~ZBdM<_9v3$cj{pDw literal 136 zcmXwxF%Ezr5CjoemEI6yLTK%5{emy>1wO*km*YUf@v2qDXoANi+&RFDp6ffiChI-my1bOwl}S?Sh0y$xm->`A`h z4GXOBfiG;ZL({ptu2(}ZB|S<`vs7(xPZaYsM)ztrsYor`>Dbpml%w+N=dWj4H1u?vZ9ihETV^pM3gX$g0@dLNT5m^8L literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00FF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00FF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..550e14a5c4ade3f188a44bb25600ea0d109997de GIT binary patch literal 170 zcmW-a(G9{d3`CQ(SJQqX6h%l;g!p9uMqmauU%0VZHj^V~=;mVI~jnzj`026uSC z6JGF!4}9SVrI<;UC3&9tuhKH@#nU1U>jRw$#nUEL)z(8W&k>u*tM$t{^fi2}Xf?V6 TZX2T?WBKmo!YR7B5R(4^1BwwO literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0152.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b3464d2b9bb4561392781c0d8561128fec75262c GIT binary patch literal 242 zcmXYru?+$-3`N7i$7Q5bI7OCDSF;BtH3KjJ8!!L^P%{7nFaQHE06k+6UcwbGcI^Lc z$6z6ZZ`twg;Q&WC!5J=ag&W-A0Z(|r8$Qr2C7G24Ve&yL!K9qxHn!Z%>GU;6nWYsW z%`)T~FgJ^jPP+~AyqOh~=ixupY?RjlP3_`0J8PXKtv-!ext_B&OTDVK>x_$34=g{j CIUn-? literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00BF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00BF.lmp index eeb3eb2885d97d70e64688d9c1026944edb78580..ffb8a25cc866c451b6a27de0369588ee8e9e8ccf 100644 GIT binary patch delta 82 zcmeBV>SW^JW)NmzVEFTYB1gUXsx_-ttYBkZv0~-QRV!BtFt1#>Va=NV46HzU-I|pv c*?^2ytH3g=R;^pL3MMmgpA<7t!^GQq0Ks7=7XSbN delta 82 zcmeBV>SW^JW)Nlofr%XT<||jNT(N?Ub;XL6K-NkD=9McqtXcD)fpz7|HS0F4T*(Gx btXc(@S+#22s#P$ViTk9OSFKq!@wOfSG{+?z diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D1.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D1.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8251867126d8aef85931ee453c28afb9edcaec43 GIT binary patch literal 331 zcmYL@(G3D242Izje7Pgh9o#|}a0SP34aYDcr6B}goxm9!!v)R{?h*?hfwuhpgE^QM zXSl!>Zg7VOyxA27-LRpZ&h{iv+A?fTI!RP^I`|pQd|%zJhQSmbulBE zlw44)g#?ARDGVvq>O#(?_qRXDlW#(Pjxi-ZwO&6Iq*p_>-(5hINflFA oqtlE%(+l0x-x!5v41eUb9joI(1npU5>t`aqc2kTZ>=qdM0c~oZE&u=k literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..483c3f7953bfa2dc79aa2f008e2a16362ddb6f61 GIT binary patch literal 279 zcmX|*&5gn^5QS~x084VcqXOcY)5sfS-pt15j+O;N4 z8UUJ=38mt7z)4&937+>_W7N%b3mmi5^C;(#{6A_| cK@AYgC{G)nuK&0IP_Q)%~=BhtazxpziqAtaLO?UDt{(dP5-|Vv2 IpOgCX2iKg?KL7v# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00A1.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00A1.lmp index 2eaf0487a1b87c90f9857007f4563d4d026bf486..ece681c9e1bbd724530522f7e8878e4c2ed241af 100644 GIT binary patch literal 86 zcmZQ!;ACK6`1fA|NNNJHIS{)7F#{7j5HPcGa)M}f_Wuk(h61~Sg1npzn8(Q}$u1=+ QE-DVxeb6Y5Co6MEUo|C_fpA{TPv;`q&%f+L}^i($>|v?3!(Iv8)RT0<9q1HXofoEA1+J~3;+NC literal 136 zcmXwxyA6Oa6azy(m`s2Yp`@jwWd$Z+0*0Vu@^D1L(iOgEy~#xLWrYoPIN*c}Zg?Qr rNSgQ3oTO%~h#RF`OBYcp$_2sB&=yrDh<`j#0}m3u1;>qL=#Sb9DlHBV diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C4.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C4.lmp index b5b1cedab1ab95e69e3a9f65d31ad8ec87f276da..c0b9abc9435b01518f5cc04aeec0088ed83a8b27 100644 GIT binary patch delta 67 zcmZ3;xP;M~lYx@~1ayGd1c;r1I1q^AfjA$CtAV%^h^GTF3o|=AJ16IVMn)jb%sSB` F69DTb2XFuY delta 64 zcmZ3&xRB9;lYx@~1ayGd1c)7g*bj(ffH((;D}cBSh^GKC3o|=AJ16IVMj$oOIuiiZ CJqJ<% diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D1.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D1.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2513dad769824a6ab427e60bd864b3312f258f51 GIT binary patch literal 180 zcmXYo(G7zz3`89YJ=(RY zffYXRg$;ISdUw|~HK39nC8t@cHn=B@c^ad8wVPC=wv(nKUjwQfmafmgo^h#BKZ7Zk UO#ZABZST?;6>+*oa_`w3KklCrCjbBd literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..7583181148f88e97aedf277707816501a51d8148 GIT binary patch literal 170 zcmW-a(G7zz3`CQFILtq)5>+t+FaRSkLpSIOOwa{7K?im3u=H%%XP+%CNwJfIoa9B` z>%vS?M^%x!b; PtIY3Ret4)Gi>~4iCNL4X literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0152.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..0cf50cb1b3416e4752d745af4aee724ee0129bbe GIT binary patch literal 242 zcmXwzu@S;B5Cmm|x%r5|m=^__CGuFa&TVpsYC D2{|C} literal 0 HcmV?d00001 From 8a320af6172f414e590f1eaa6ff6317144e36a4a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 18:32:20 +0100 Subject: [PATCH 13/20] =?UTF-8?q?moved=20the=20'=C3=BF's=20to=20the=20corr?= =?UTF-8?q?esponding=20uppercase=20code=20point=20so=20that=20the=20intern?= =?UTF-8?q?al=20substitution=20logic=20handles=20this=20properly.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fonts/defbigfont/{00FF.lmp => 0178.lmp} | Bin .../fonts/defsmallfont/{00FF.lmp => 0178.lmp} | Bin .../fonts/defbigfont/{00FF.lmp => 0178.lmp} | Bin .../fonts/defsmallfont/{00FF.lmp => 0178.lmp} | Bin 4 files changed, 0 insertions(+), 0 deletions(-) rename wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/{00FF.lmp => 0178.lmp} (100%) rename wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/{00FF.lmp => 0178.lmp} (100%) rename wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/{00FF.lmp => 0178.lmp} (100%) rename wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/{00FF.lmp => 0178.lmp} (100%) diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00FF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0178.lmp similarity index 100% rename from wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00FF.lmp rename to wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0178.lmp diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00FF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0178.lmp similarity index 100% rename from wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00FF.lmp rename to wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0178.lmp diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0178.lmp similarity index 100% rename from wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp rename to wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0178.lmp diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0178.lmp similarity index 100% rename from wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp rename to wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0178.lmp From 9add9e2af9f4d9dc07ea8360f814b85eb4a555d3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 19:02:16 +0100 Subject: [PATCH 14/20] - added two missing characters. --- .../filter/game-doomchex/fonts/bigfont/0178.lmp | Bin 0 -> 298 bytes .../filter/game-doomchex/fonts/bigupper/0178.lmp | Bin 0 -> 316 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0178.lmp create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0178.lmp diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0178.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0178.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d91230a9a7218d33e46b0632a797bd7da76d8cea GIT binary patch literal 298 zcmY+9%?-jZ42507kEn#ol`GS5jHyCorBc-*F1~gHhF}RMU;>t42sS9sfgZ5*CAO9K z9B-*2B1Z?D9tgOA0bIci+`$7p!3(^>2sQ=L4(x$*YB9RGYUq&^E2~4>A*Z#foYlva zt5WsUsplZMtW=M!YF#rorZMr%u0@G%OsVa9b6mp33!*XERK*DGpFm;~u_nP8W0hl& c$(i7Z;T(TY;ECZJzApLCKIgUwo6EG>2iT2UoB#j- literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0178.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0178.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8d997a3845054455434439bfd16540c8517974e2 GIT binary patch literal 316 zcmX|++YQ1n3`JeaLsTFE3orn`48bQ4nJS8WXUAn}x=kzO97+dGUl*KQn6*^=d3^)5$YL4* literal 0 HcmV?d00001 From 580c55f8a5ba5cf071071335c34a6978e46c0f66 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Sat, 2 Mar 2019 13:59:42 -0500 Subject: [PATCH 15/20] - moved language changer to miscellaneous menu - removed spacing gaps in the customize controls menu --- wadsrc/static/menudef.txt | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 738c59403c..9815384087 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -378,8 +378,6 @@ OptionMenu "OptionsMenu" protected Submenu "$OPTMNU_DISPLAY", "VideoOptions" Submenu "$OPTMNU_VIDEO", "VideoModeMenu" StaticText " " - Option "$OPTMNU_LANGUAGE", "language", "LanguageOptions" - StaticText " " SafeCommand "$OPTMNU_DEFAULTS", "reset2defaults" SafeCommand "$OPTMNU_RESETTOSAVED", "reset2saved" Command "$OPTMNU_CONSOLE", "menuconsole" @@ -453,25 +451,12 @@ OptionMenu "CustomizeControls" protected { Title "$CNTRLMNU_TITLE" - StaticText "" Submenu "$CNTRLMNU_ACTION" , "ActionControlsMenu" - - StaticText "" Submenu "$CNTRLMNU_CHAT" , "ChatControlsMenu" - - StaticText "" Submenu "$CNTRLMNU_WEAPONS" , "WeaponsControlMenu" - - StaticText "" Submenu "$CNTRLMNU_INVENTORY" , "InventoryControlsMenu" - - StaticText "" Submenu "$CNTRLMNU_OTHER" , "OtherControlsMenu" - - StaticText "" Submenu "$CNTRLMNU_POPUPS" , "StrifeControlsMenu" - - StaticText "" Submenu "$MAPCNTRLMNU_CONTROLS" , "MapControlsMenu" } @@ -1149,6 +1134,8 @@ OptionMenu "MiscOptions" protected Option "$MISCMNU_CACHENODES", "gl_cachenodes", "OnOff" Slider "$MISCMNU_CACHETIME", "gl_cachetime", 0.0, 2.0, 0.1 SafeCommand "$MISCMNU_CLEARNODECACHE", "clearnodecache" + StaticText " " + Option "$OPTMNU_LANGUAGE", "language", "LanguageOptions" } //------------------------------------------------------------------------------------------- From 0f184a0f283aff747685868c4c1aaa567f706002 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 21:09:45 +0100 Subject: [PATCH 16/20] - reject all DMX sounds shorter than or equal 8 bytes. 8 bytes is the minimum header size for DMX, so for one byte of sample data it has to be 9 bytes. This was causing access to invalid memory when trying to read the header of something too short. For other file formats this is of no concern because none has a header this short. --- src/s_sound.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/s_sound.cpp b/src/s_sound.cpp index abc11b255b..b6aefd868b 100644 --- a/src/s_sound.cpp +++ b/src/s_sound.cpp @@ -1490,7 +1490,7 @@ sfxinfo_t *S_LoadSound(sfxinfo_t *sfx, FSoundLoadBuffer *pBuffer) DPrintf(DMSG_NOTIFY, "Loading sound \"%s\" (%td)\n", sfx->name.GetChars(), sfx - &S_sfx[0]); int size = Wads.LumpLength(sfx->lumpnum); - if (size > 0) + if (size > 8) { auto wlump = Wads.OpenLumpReader(sfx->lumpnum); auto sfxdata = wlump.Read(size); @@ -1556,7 +1556,7 @@ static void S_LoadSound3D(sfxinfo_t *sfx, FSoundLoadBuffer *pBuffer) else { int size = Wads.LumpLength(sfx->lumpnum); - if (size <= 0) return; + if (size <= 8) return; auto wlump = Wads.OpenLumpReader(sfx->lumpnum); auto sfxdata = wlump.Read(size); From ef30ddbd40b75d6b8817eaf1875800639037f602 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sat, 2 Mar 2019 21:12:50 +0100 Subject: [PATCH 17/20] - fix typo --- src/utility/vectors.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utility/vectors.h b/src/utility/vectors.h index f06d26f1d0..d388f825e4 100644 --- a/src/utility/vectors.h +++ b/src/utility/vectors.h @@ -681,7 +681,7 @@ struct TVector4 // Test for equality bool operator== (const TVector4 &other) const { - return X == other.X && Y == other.Y && Z == other.Z && W = other.W; + return X == other.X && Y == other.Y && Z == other.Z && W == other.W; } // Test for inequality From 0dc348599028316ea28c5fd6ffc23ed9555ec05c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 22:10:44 +0100 Subject: [PATCH 18/20] - fixed: in CollectWithinRadius, make pos a value variable instead of a reference. The underlying data here can be reallocated and invalidate what it points to. --- src/g_shared/a_dynlight.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_shared/a_dynlight.cpp b/src/g_shared/a_dynlight.cpp index d1b91af9d3..edc2e4dfda 100644 --- a/src/g_shared/a_dynlight.cpp +++ b/src/g_shared/a_dynlight.cpp @@ -539,7 +539,7 @@ void FDynamicLight::CollectWithinRadius(const DVector3 &opos, FSection *section, bool hitonesidedback = false; for (unsigned i = 0; i < collected_ss.Size(); i++) { - auto &pos = collected_ss[i].pos; + auto pos = collected_ss[i].pos; section = collected_ss[i].sect; touching_sector = AddLightNode(§ion->lighthead, section, this, touching_sector); From eacc6c8e08c057b3c4d9b613f584929346ccd040 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 23:01:42 +0100 Subject: [PATCH 19/20] - fixed: ACS's LocalAmbientSound did not check the activator before calling its methods. --- src/p_acs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 0734eb2433..dff6e4cb36 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -8869,7 +8869,7 @@ scriptwait: case PCD_LOCALAMBIENTSOUND: lookup = Level->Behaviors.LookupString (STACK(2)); - if (lookup != NULL && activator->CheckLocalView()) + if (lookup != NULL && activator && activator->CheckLocalView()) { S_Sound (CHAN_AUTO, lookup, From 3903d957bdc871a2b8b3f80e085b4b5ed4ff12e8 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Mar 2019 00:03:22 +0100 Subject: [PATCH 20/20] - moved the weapon bobbing options from the Display Options to the HUD Options menu. --- wadsrc/static/menudef.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 9815384087..1927273985 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -897,9 +897,6 @@ OptionMenu "VideoOptions" protected Option "$DSPLYMNU_NOMONSTERINTERPOLATION", "nomonsterinterpolation", "NoYes" Slider "$DSPLYMNU_MENUDIM", "dimamount", 0, 1.0, 0.05, 2 ColorPicker "$DSPLYMNU_DIMCOLOR", "dimcolor" - Slider "$DSPLYMNU_MOVEBOB", "movebob", 0, 1.0, 0.05, 2 - Slider "$DSPLYMNU_STILLBOB", "stillbob", 0, 1.0, 0.05, 2 - Slider "$DSPLYMNU_BOBSPEED", "wbobspeed", 0, 2.0, 0.1 IfOption(Windows) { StaticText " " @@ -990,6 +987,11 @@ OptionMenu "HUDOptions" protected Option "$HUDMNU_POISONFLASHES", "pf_poison", "ZDoomHexen" Option "$HUDMNU_ICEFLASHES", "pf_ice", "ZDoomHexen" Option "$HUDMNU_HAZARDFLASHES", "pf_hazard", "ZDoomStrife" + StaticText " " + Slider "$DSPLYMNU_MOVEBOB", "movebob", 0, 1.0, 0.05, 2 + Slider "$DSPLYMNU_STILLBOB", "stillbob", 0, 1.0, 0.05, 2 + Slider "$DSPLYMNU_BOBSPEED", "wbobspeed", 0, 2.0, 0.1 + } OptionMenu "ScalingOptions" protected