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/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 d8a5d44a4..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" @@ -63,6 +62,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 +242,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/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/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/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/blood/src/misc.h b/source/blood/src/misc.h index d0b80f087..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 "common.h" +#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 cd08a5324..0f787b026 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" @@ -112,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/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/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/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); } } 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; ii= 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,52 +135,15 @@ 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 { int32_t x, y; } vec2_t; -typedef struct { - uint32_t x, y; -} vec2u_t; - typedef struct { float x, y; } vec2f_t; @@ -336,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 { \ @@ -363,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; @@ -378,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 ////////// @@ -388,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); @@ -405,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 ////////// @@ -424,18 +266,6 @@ static FORCE_INLINE char *Bstrncpyz(char *dst, const char *src, bsize_t n) ////////// Inlined external libraries ////////// -#include "m_fixed.h" -#include "vectors.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 }; -} - /* End dependence on compat.o object. */ 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/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..41285647e 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", @@ -145,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 70804aa53..308a979cc 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" @@ -56,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; @@ -362,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) { @@ -575,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: @@ -686,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: @@ -723,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: @@ -902,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: @@ -1296,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; @@ -1314,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; @@ -1353,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; @@ -1438,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; @@ -1513,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; @@ -1616,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; @@ -1739,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: @@ -1812,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: @@ -1864,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; @@ -1921,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; @@ -1983,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); @@ -2079,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: @@ -2109,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; @@ -2189,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; @@ -2366,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); @@ -2395,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); @@ -2416,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; @@ -2486,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: @@ -2574,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: @@ -2597,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: @@ -2753,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: @@ -2776,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: @@ -2897,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); @@ -2945,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); @@ -3045,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: @@ -3066,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: @@ -3169,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: @@ -3200,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: @@ -3220,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 bf680a715..6e44afa85 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" @@ -584,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; @@ -1288,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; @@ -1897,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 }; @@ -2205,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) @@ -2237,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; } @@ -2653,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; @@ -3095,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); @@ -3276,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; @@ -183,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; } @@ -231,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; @@ -250,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; @@ -308,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)); } } @@ -319,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 @@ -757,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) @@ -803,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; @@ -825,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; @@ -1105,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; @@ -1185,7 +1184,7 @@ static void md3postload_common(md3model_t *m) ++surfi; } - frame->r = Bsqrtf(frame->r); + frame->r = sqrtf(frame->r); ++framei; } @@ -1393,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; @@ -1644,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 507e2792c..64ac613ea 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" @@ -145,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; @@ -1125,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; } } @@ -2499,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; } @@ -2611,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 :( @@ -2896,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); @@ -2942,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 0db34e132..d32e419cf 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" @@ -137,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) { @@ -322,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); @@ -374,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/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/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/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; } }; 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)) { diff --git a/source/core/d_net.cpp b/source/core/d_net.cpp index 4b0a09626..e94b68c45 100644 --- a/source/core/d_net.cpp +++ b/source/core/d_net.cpp @@ -1017,10 +1017,10 @@ void NetUpdate (void) int mod = maketic - ticdup; int modp, j; - int svel; - int fvel; - int64_t q16avel; - int64_t q16horz; + int svel = 0; + int fvel = 0; + int64_t q16avel = 0; + int64_t q16horz = 0; for (j = 0; j < ticdup; ++j) { 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/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/mainloop.cpp b/source/core/mainloop.cpp index 16bfd8f5a..013de99e0 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/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/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/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/searchpaths.cpp b/source/core/searchpaths.cpp index 9cc739cca..d125b1bf1 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" @@ -954,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/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/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/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/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/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/exhumed.h b/source/exhumed/src/exhumed.h index 554b37b48..cc8574e1d 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/gameloop.cpp b/source/exhumed/src/gameloop.cpp index 253569074..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" @@ -86,7 +85,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/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/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/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 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/object.cpp b/source/exhumed/src/object.cpp index da52fdf36..f1aed4cb4 100644 --- a/source/exhumed/src/object.cpp +++ b/source/exhumed/src/object.cpp @@ -2706,3 +2706,4 @@ static SavegameHelper sgh("objects", nullptr); END_PS_NS + 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/exhumed/src/player.cpp b/source/exhumed/src/player.cpp index 25cbd9de9..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; } @@ -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); @@ -1211,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; } @@ -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; } } 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/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) 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/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/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/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); } }; 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/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/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/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 1adcd10d6..5d691b340 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" @@ -59,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" @@ -391,6 +391,7 @@ void InitLevel(MapRecord *maprec) // reset NewGame NewGame = false; + setLevelStarted(maprec); } //--------------------------------------------------------------------------- diff --git a/source/sw/src/game.h b/source/sw/src/game.h index 1c8c107fa..27c2c9bda 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/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 366639b53..c83f51c97 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 4cb163594..c96ac07ee 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 e52482ef9..4a25cbd93 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/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 { 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 c2631e32c..d53eaa718 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" 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; 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" diff --git a/wadsrc/static/engine/menudef.txt b/wadsrc/static/engine/menudef.txt index 105df4f0c..5b5d1c17c 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) { @@ -1209,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" @@ -1596,12 +1597,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 } @@ -1612,17 +1615,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 "" @@ -1636,6 +1639,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 @@ -1659,9 +1668,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" 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 000000000..e8de26a7b Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0021.lmp differ 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 000000000..cda161856 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0022.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0023.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0023.lmp new file mode 100644 index 000000000..18a5bde17 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0023.lmp differ 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 000000000..c3e9ce619 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0024.lmp differ 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 000000000..a601a8bb5 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0025.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0027.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0027.lmp new file mode 100644 index 000000000..89a81fea4 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0027.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0028.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0028.lmp new file mode 100644 index 000000000..90d809582 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0028.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0029.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0029.lmp new file mode 100644 index 000000000..239d12249 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0029.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/002B.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/002B.lmp new file mode 100644 index 000000000..ee1f7ca20 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/002B.lmp differ 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 000000000..4cabd673f Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/002C.lmp differ 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 000000000..e83a20337 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/002D.lmp differ 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 000000000..a8a7f3073 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/002E.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/002F.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/002F.lmp new file mode 100644 index 000000000..b0a077824 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/002F.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0030.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0030.lmp new file mode 100644 index 000000000..ae7d89294 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0030.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0031.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0031.lmp new file mode 100644 index 000000000..18e30b599 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0031.lmp differ 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 000000000..a719d9c7b Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0032.lmp differ 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 000000000..ee8dcfd0b Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0033.lmp differ 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 000000000..4774fbae4 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0034.lmp differ 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 000000000..be835328d Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0035.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0036.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0036.lmp new file mode 100644 index 000000000..bb93b1d79 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0036.lmp differ 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 000000000..d931cc168 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0037.lmp differ 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 000000000..9eada900d Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0038.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0039.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0039.lmp new file mode 100644 index 000000000..bb8db79a7 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0039.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/003A.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/003A.lmp new file mode 100644 index 000000000..0a6b2892a Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/003A.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/003B.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/003B.lmp new file mode 100644 index 000000000..bdaf5d43f Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/003B.lmp differ 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 000000000..a65360750 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/003C.lmp differ 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 000000000..2d436f90d Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/003D.lmp differ 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 000000000..46e592e04 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/003E.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/003F.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/003F.lmp new file mode 100644 index 000000000..6d222a008 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/003F.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0041.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0041.lmp new file mode 100644 index 000000000..f1952da2c Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0041.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0042.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0042.lmp new file mode 100644 index 000000000..cfaddcb4a Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0042.lmp differ 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 000000000..a03b23433 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0043.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0044.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0044.lmp new file mode 100644 index 000000000..6c7f9e021 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0044.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0045.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0045.lmp new file mode 100644 index 000000000..32de5753e Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0045.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0046.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0046.lmp new file mode 100644 index 000000000..66acfb766 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0046.lmp differ 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 000000000..17aeff043 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0047.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0048.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0048.lmp new file mode 100644 index 000000000..104041b6b Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0048.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0049.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0049.lmp new file mode 100644 index 000000000..d578c3cb8 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0049.lmp differ 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 000000000..7e27da2ab Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/004A.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/004B.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/004B.lmp new file mode 100644 index 000000000..d44353312 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/004B.lmp differ 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 000000000..b6f2e3c87 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/004C.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/004D.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/004D.lmp new file mode 100644 index 000000000..f963a71a4 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/004D.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/004E.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/004E.lmp new file mode 100644 index 000000000..6c5855f0a Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/004E.lmp differ 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 000000000..884afadd5 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/004F.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0050.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0050.lmp new file mode 100644 index 000000000..0e6c7f849 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0050.lmp differ 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 000000000..d9be4ec0c Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0051.lmp differ 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 000000000..ab985ffaa Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0052.lmp differ 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 000000000..e0d1d9d0f Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0053.lmp differ 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 000000000..0100676f9 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0054.lmp differ 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 000000000..6b432ef23 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0055.lmp differ 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 000000000..796f3bfba Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0056.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0057.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0057.lmp new file mode 100644 index 000000000..fbc3b23fe Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0057.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/0058.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/0058.lmp new file mode 100644 index 000000000..9b7153aa8 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0058.lmp differ 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 000000000..76184cb3d Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/0059.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/005A.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/005A.lmp new file mode 100644 index 000000000..d7631c11b Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/005A.lmp differ 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 000000000..ddb0c4e0a Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/005B.lmp differ 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 000000000..c24071a36 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/005C.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/005D.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/005D.lmp new file mode 100644 index 000000000..457dd16f4 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/005D.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/00A1.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/00A1.lmp new file mode 100644 index 000000000..6bdb41fc5 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/00A1.lmp differ 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 000000000..42c27af2a Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/00AB.lmp differ 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 000000000..e962e2ed8 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/00BB.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/00BF.lmp b/wadsrc/static/filter/exhumed/fonts/BigFont/00BF.lmp new file mode 100644 index 000000000..1194f52c2 Binary files /dev/null and b/wadsrc/static/filter/exhumed/fonts/BigFont/00BF.lmp differ diff --git a/wadsrc/static/filter/exhumed/fonts/BigFont/font.inf b/wadsrc/static/filter/exhumed/fonts/BigFont/font.inf new file mode 100644 index 000000000..400b684a1 --- /dev/null +++ b/wadsrc/static/filter/exhumed/fonts/BigFont/font.inf @@ -0,0 +1,4 @@ +// Exhumed BigFont. Extracted from the graphics and added missing characters by Dynamo. +Kerning 0 +FontHeight 16 + 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