# Conflicts:
#	wadsrc/static/menudef.txt
This commit is contained in:
Christoph Oelckers 2016-02-21 01:55:15 +01:00
commit dfd7e08307
21 changed files with 1663 additions and 876 deletions

View file

@ -192,14 +192,12 @@ option(FORCE_INTERNAL_GME "Use internal gme" ON)
set( ZD_FASTMATH_FLAG "" ) set( ZD_FASTMATH_FLAG "" )
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE ) if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
set( ZD_FASTMATH_FLAG "-ffast-math" ) set( ZD_FASTMATH_FLAG "-ffast-math" )
else() elseif( MSVC )
if( MSVC ) set( ZD_FASTMATH_FLAG "/fp:fast" )
set( ZD_FASTMATH_FLAG "/fp:fast" )
endif()
endif() endif()
if( ZLIB_FOUND AND NOT FORCE_INTERNAL_ZLIB ) if( ZLIB_FOUND AND NOT FORCE_INTERNAL_ZLIB )
message( STATUS "Using system zlib" ) message( STATUS "Using system zlib, includes found at ${ZLIB_INCLUDE_DIR}" )
else() else()
message( STATUS "Using internal zlib" ) message( STATUS "Using internal zlib" )
add_subdirectory( zlib ) add_subdirectory( zlib )
@ -209,7 +207,7 @@ else()
endif() endif()
if( JPEG_FOUND AND NOT FORCE_INTERNAL_JPEG ) if( JPEG_FOUND AND NOT FORCE_INTERNAL_JPEG )
message( STATUS "Using system jpeg library" ) message( STATUS "Using system jpeg library, includes found at ${JPEG_INCLUDE_DIR}" )
else() else()
message( STATUS "Using internal jpeg library" ) message( STATUS "Using internal jpeg library" )
add_subdirectory( jpeg-6b ) add_subdirectory( jpeg-6b )
@ -219,7 +217,7 @@ else()
endif() endif()
if( BZIP2_FOUND AND NOT FORCE_INTERNAL_BZIP2 ) if( BZIP2_FOUND AND NOT FORCE_INTERNAL_BZIP2 )
message( STATUS "Using system bzip2 library" ) message( STATUS "Using system bzip2 library, includes found at ${BZIP2_INCLUDE_DIR}" )
else() else()
message( STATUS "Using internal bzip2 library" ) message( STATUS "Using internal bzip2 library" )
add_subdirectory( bzip2 ) add_subdirectory( bzip2 )
@ -229,7 +227,7 @@ else()
endif() endif()
if( GME_FOUND AND NOT FORCE_INTERNAL_GME ) if( GME_FOUND AND NOT FORCE_INTERNAL_GME )
message( STATUS "Using system gme library ${GME_INCLUDE_DIR}" ) message( STATUS "Using system gme library, includes found at ${GME_INCLUDE_DIR}" )
else() else()
message( STATUS "Using internal gme library" ) message( STATUS "Using internal gme library" )
add_subdirectory( game-music-emu ) add_subdirectory( game-music-emu )

View file

@ -9,9 +9,9 @@ set( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -DDEBUGMODE=1" )
if( ZD_CMAKE_COMPILER_IS_GNUC_COMPATIBLE ) if( ZD_CMAKE_COMPILER_IS_GNUC_COMPATIBLE )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-pointer-sign -Wno-uninitialized" ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-pointer-sign -Wno-uninitialized" )
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.5") if( NOT CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_VERSION VERSION_GREATER "4.5" )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-but-set-variable" ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-but-set-variable" )
endif(NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.5") endif()
endif() endif()
# Enable fast flag for dumb # Enable fast flag for dumb

View file

@ -33,50 +33,51 @@ endif()
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ZD_FASTMATH_FLAG}" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ZD_FASTMATH_FLAG}" )
# Default emulators to build (all of them! ;) # Default emulators to build (all of them! ;)
if (NOT DEFINED USE_GME_AY) # [ZDoom] No options, enable all of them by default.
SET(USE_GME_AY 1 CACHE BOOL "Enable support for Spectrum ZX music emulation") #if (NOT DEFINED USE_GME_AY)
endif() SET(USE_GME_AY 1 BOOL "Enable support for Spectrum ZX music emulation")
#endif()
if (NOT DEFINED USE_GME_GBS) #if (NOT DEFINED USE_GME_GBS)
SET(USE_GME_GBS 1 CACHE BOOL "Enable support for Game Boy music emulation") SET(USE_GME_GBS 1 BOOL "Enable support for Game Boy music emulation")
endif() #endif()
if (NOT DEFINED USE_GME_GYM) #if (NOT DEFINED USE_GME_GYM)
SET(USE_GME_GYM 1 CACHE BOOL "Enable Sega MegaDrive/Genesis music emulation") SET(USE_GME_GYM 1 BOOL "Enable Sega MegaDrive/Genesis music emulation")
endif() #endif()
if (NOT DEFINED USE_GME_HES) #if (NOT DEFINED USE_GME_HES)
SET(USE_GME_HES 1 CACHE BOOL "Enable PC Engine/TurboGrafx-16 music emulation") SET(USE_GME_HES 1 BOOL "Enable PC Engine/TurboGrafx-16 music emulation")
endif() #endif()
if (NOT DEFINED USE_GME_KSS) #if (NOT DEFINED USE_GME_KSS)
SET(USE_GME_KSS 1 CACHE BOOL "Enable MSX or other Z80 systems music emulation") SET(USE_GME_KSS 1 BOOL "Enable MSX or other Z80 systems music emulation")
endif() #endif()
if (NOT DEFINED USE_GME_NSF) #if (NOT DEFINED USE_GME_NSF)
SET(USE_GME_NSF 1 CACHE BOOL "Enable NES NSF music emulation") SET(USE_GME_NSF 1 BOOL "Enable NES NSF music emulation")
endif() #endif()
if (NOT DEFINED USE_GME_NSFE) #if (NOT DEFINED USE_GME_NSFE)
SET(USE_GME_NSFE 1 CACHE BOOL "Enable NES NSFE and NSF music emulation") SET(USE_GME_NSFE 1 BOOL "Enable NES NSFE and NSF music emulation")
endif() #endif()
if (NOT DEFINED USE_GME_SAP) #if (NOT DEFINED USE_GME_SAP)
SET(USE_GME_SAP 1 CACHE BOOL "Enable Atari SAP music emulation") SET(USE_GME_SAP 1 BOOL "Enable Atari SAP music emulation")
endif() #endif()
if (NOT DEFINED USE_GME_SPC) #if (NOT DEFINED USE_GME_SPC)
SET(USE_GME_SPC 1 CACHE BOOL "Enable SNES SPC music emulation") SET(USE_GME_SPC 1 BOOL "Enable SNES SPC music emulation")
endif() #endif()
if (NOT DEFINED USE_GME_VGM) #if (NOT DEFINED USE_GME_VGM)
SET(USE_GME_VGM 1 CACHE BOOL "Enable Sega VGM/VGZ music emulation") SET(USE_GME_VGM 1 BOOL "Enable Sega VGM/VGZ music emulation")
endif() #endif()
if (USE_GME_NSFE AND NOT USE_GME_NSF) #if (USE_GME_NSFE AND NOT USE_GME_NSF)
MESSAGE(" -- NSFE support requires NSF, enabling NSF support. --") # MESSAGE(" -- NSFE support requires NSF, enabling NSF support. --")
SET(USE_GME_NSF 1 CACHE BOOL "Enable NES NSF music emulation" FORCE) SET(USE_GME_NSF 1 BOOL "Enable NES NSF music emulation")
endif() #endif()
# Check for GCC "visibility" support. # Check for GCC "visibility" support.
if (CMAKE_COMPILER_IS_GNUCXX) if (CMAKE_COMPILER_IS_GNUCXX)

View file

@ -8,8 +8,8 @@ if( MSVC )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4554 /wd4102" ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4554 /wd4102" )
endif() endif()
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE ) if( ZD_CMAKE_COMPILER_IS_GNUC_COMPATIBLE )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra" ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra" )
endif() endif()
# Enable fast flag for gdtoa # Enable fast flag for gdtoa

View file

@ -2,7 +2,7 @@ cmake_minimum_required( VERSION 2.8.7 )
if( COMMAND cmake_policy ) if( COMMAND cmake_policy )
cmake_policy( SET CMP0003 NEW ) cmake_policy( SET CMP0003 NEW )
endif( COMMAND cmake_policy ) endif()
include( CheckCXXSourceCompiles ) include( CheckCXXSourceCompiles )
include( CheckFunctionExists ) include( CheckFunctionExists )
@ -50,7 +50,7 @@ endif()
# a system-wide version. # a system-wide version.
# Construct version numbers for searching for the FMOD library on Linux. # Construct version numbers for searching for the FMOD library on Linux.
set( MINOR_VERSIONS "50" "49" "48" "47" "46" "45" "44" "43" "42" "41" set( MINOR_VERSIONS "61" "50" "49" "48" "47" "46" "45" "44" "43" "42" "41"
"40" "39" "38" "37" "36" "35" "34" "33" "32" "31" "30" "29" "28" "40" "39" "38" "37" "36" "35" "34" "33" "32" "31" "30" "29" "28"
"27" "26" "25" "24" "23" "22" "21" "20" "21" "19" "18" "17" "16" "27" "26" "25" "24" "23" "22" "21" "20" "21" "19" "18" "17" "16"
"15" "14" "13" "12" "11" "10" "09" "08" "07" "06" "05" "04" "03" "15" "14" "13" "12" "11" "10" "09" "08" "07" "06" "05" "04" "03"
@ -74,7 +74,12 @@ set( FMOD_DIR_VERSIONS ${FMOD_DIR_VERSIONS} "../fmod" )
foreach( majver ${MAJOR_VERSIONS} ) foreach( majver ${MAJOR_VERSIONS} )
foreach( minver ${MINOR_VERSIONS} ) foreach( minver ${MINOR_VERSIONS} )
set( FMOD_VERSIONS ${FMOD_VERSIONS} "fmodex${X64}-4.${majver}.${minver}" ) set( FMOD_VERSIONS ${FMOD_VERSIONS} "fmodex${X64}-4.${majver}.${minver}" )
set( FMOD_DIR_VERSIONS ${FMOD_DIR_VERSIONS} "${CMAKE_HOME_DIRECTORY}/fmodapi4${majver}${minver}linux${X64}" ) # FMOD Ex version 4.44 unified 32-bit and 64-bit linux packages into one.
if( NOT majver EQUAL "44" )
set( FMOD_DIR_VERSIONS ${FMOD_DIR_VERSIONS} "${CMAKE_HOME_DIRECTORY}/fmodapi4${majver}${minver}linux${X64}" )
else()
set( FMOD_DIR_VERSIONS ${FMOD_DIR_VERSIONS} "${CMAKE_HOME_DIRECTORY}/fmodapi4${majver}${minver}linux" )
endif()
endforeach() endforeach()
foreach( dir ${FMOD_DIR_VERSIONS} ) foreach( dir ${FMOD_DIR_VERSIONS} )
set( FMOD_LOCAL_INC_DIRS ${FMOD_LOCAL_INC_DIRS} "${dir}/api/inc" ) set( FMOD_LOCAL_INC_DIRS ${FMOD_LOCAL_INC_DIRS} "${dir}/api/inc" )
@ -355,7 +360,7 @@ if( NOT NO_ASM )
# string( REGEX REPLACE ".*version ([0-9]+[.][0-9]+).*" "\\1" NASM_VER "${NASM_VER_STRING}" ) # string( REGEX REPLACE ".*version ([0-9]+[.][0-9]+).*" "\\1" NASM_VER "${NASM_VER_STRING}" )
# if( NOT NASM_VER LESS 2 ) # if( NOT NASM_VER LESS 2 )
# message( SEND_ERROR "NASM version should be 2 or later. (Installed version is ${NASM_VER}.)" ) # message( SEND_ERROR "NASM version should be 2 or later. (Installed version is ${NASM_VER}.)" )
# endif( NOT NASM_VER LESS 2 ) # endif()
endif() endif()
if( NOT NO_ASM ) if( NOT NO_ASM )
@ -430,7 +435,7 @@ if (NOT ZDOOM_USE_SSE2)
set( SSE1_ENABLE -arch:SSE ) set( SSE1_ENABLE -arch:SSE )
set( SSE2_ENABLE -arch:SSE2 ) set( SSE2_ENABLE -arch:SSE2 )
set( SSE_MATTERS YES ) set( SSE_MATTERS YES )
endif( ) endif()
endif() endif()
endif() endif()
@ -544,7 +549,7 @@ if( UNIX )
message( STATUS "Could not find clock_gettime. Timing statistics will not be available." ) message( STATUS "Could not find clock_gettime. Timing statistics will not be available." )
add_definitions( -DNO_CLOCK_GETTIME ) add_definitions( -DNO_CLOCK_GETTIME )
endif() endif()
else( NOT CLOCK_GETTIME_IN_RT ) else()
set( ZDOOM_LIBS ${ZDOOM_LIBS} rt ) set( ZDOOM_LIBS ${ZDOOM_LIBS} rt )
endif() endif()
endif() endif()
@ -592,12 +597,12 @@ if( MPG123_FOUND )
set( ZDOOM_LIBS ${ZDOOM_LIBS} "${MPG123_LIBRARIES}" ) set( ZDOOM_LIBS ${ZDOOM_LIBS} "${MPG123_LIBRARIES}" )
include_directories( "${MPG123_INCLUDE_DIR}" ) include_directories( "${MPG123_INCLUDE_DIR}" )
endif() endif()
if( NOT DYN_FLUIDSYNTH) if( NOT DYN_FLUIDSYNTH )
if( FLUIDSYNTH_FOUND ) if( FLUIDSYNTH_FOUND )
set( ZDOOM_LIBS ${ZDOOM_LIBS} "${FLUIDSYNTH_LIBRARIES}" ) set( ZDOOM_LIBS ${ZDOOM_LIBS} "${FLUIDSYNTH_LIBRARIES}" )
include_directories( "${FLUIDSYNTH_INCLUDE_DIR}" ) include_directories( "${FLUIDSYNTH_INCLUDE_DIR}" )
endif() endif()
else( NOT DYN_FLUIDSYNTH ) else()
set( ZDOOM_LIBS ${ZDOOM_LIBS} ${CMAKE_DL_LIBS} ) set( ZDOOM_LIBS ${ZDOOM_LIBS} ${CMAKE_DL_LIBS} )
endif() endif()

View file

@ -777,15 +777,16 @@ CCMD (warp)
Printf ("You can only warp inside a level.\n"); Printf ("You can only warp inside a level.\n");
return; return;
} }
if (argv.argc() != 3) if (argv.argc() < 3 || argv.argc() > 4)
{ {
Printf ("Usage: warp <x> <y>\n"); Printf ("Usage: warp <x> <y> [z]\n");
} }
else else
{ {
Net_WriteByte (DEM_WARPCHEAT); Net_WriteByte (DEM_WARPCHEAT);
Net_WriteWord (atoi (argv[1])); Net_WriteWord (atoi (argv[1]));
Net_WriteWord (atoi (argv[2])); Net_WriteWord (atoi (argv[2]));
Net_WriteWord (argv.argc() == 3 ? ONFLOORZ/65536 : atoi (argv[3]));
} }
} }

View file

@ -2199,10 +2199,11 @@ void Net_DoCommand (int type, BYTE **stream, int player)
case DEM_WARPCHEAT: case DEM_WARPCHEAT:
{ {
int x, y; int x, y, z;
x = ReadWord (stream); x = ReadWord (stream);
y = ReadWord (stream); y = ReadWord (stream);
P_TeleportMove (players[player].mo, x * 65536, y * 65536, ONFLOORZ, true); z = ReadWord (stream);
P_TeleportMove (players[player].mo, x * 65536, y * 65536, z * 65536, true);
} }
break; break;
@ -2744,9 +2745,12 @@ void Net_SkipCommand (int type, BYTE **stream)
skip = strlen ((char *)(*stream)) + 1; skip = strlen ((char *)(*stream)) + 1;
break; break;
case DEM_WARPCHEAT:
skip = 6;
break;
case DEM_INVUSE: case DEM_INVUSE:
case DEM_INVDROP: case DEM_INVDROP:
case DEM_WARPCHEAT:
skip = 4; skip = 4;
break; break;

View file

@ -121,7 +121,8 @@ public:
bool Activate() bool Activate()
{ {
M_StartMessage("Do you really want to do this?", 0); const char *msg = GStrings("SAFEMESSAGE");
if (msg) M_StartMessage(msg, 0);
return true; return true;
} }
}; };

View file

@ -323,6 +323,10 @@ static const UINT32 ksl_tab[8*16]=
}; };
#undef DV #undef DV
/* 0 / 3.0 / 1.5 / 6.0 dB/OCT */
static const UINT32 ksl_shift[4] = { 31, 1, 2, 0 };
/* sustain level table (3dB per step) */ /* sustain level table (3dB per step) */
/* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,93 (dB)*/ /* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,93 (dB)*/
#define SC(db) (UINT32) ( db * (2.0/ENV_STEP) ) #define SC(db) (UINT32) ( db * (2.0/ENV_STEP) )
@ -1271,9 +1275,8 @@ void set_ksl_tl(FM_OPL *OPL,int slot,int v)
{ {
OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_CH *CH = &OPL->P_CH[slot/2];
OPL_SLOT *SLOT = &CH->SLOT[slot&1]; OPL_SLOT *SLOT = &CH->SLOT[slot&1];
int ksl = v>>6; /* 0 / 1.5 / 3.0 / 6.0 dB/OCT */
SLOT->ksl = ksl ? 3-ksl : 31; SLOT->ksl = ksl_shift[v >> 6];
SLOT->TL = (v&0x3f)<<(ENV_BITS-1-7); /* 7 bits TL (bit 6 = always 0) */ SLOT->TL = (v&0x3f)<<(ENV_BITS-1-7); /* 7 bits TL (bit 6 = always 0) */
SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl);

View file

@ -4564,13 +4564,13 @@ bool GetVarAddrType(AActor *self, FName varname, int index, void *&addr, PType *
{ {
PField *var = dyn_cast<PField>(self->GetClass()->Symbols.FindSymbol(varname, true)); PField *var = dyn_cast<PField>(self->GetClass()->Symbols.FindSymbol(varname, true));
PArray *arraytype; PArray *arraytype;
BYTE *baddr = reinterpret_cast<BYTE *>(self) + var->Offset;
if (var == NULL || (var->Flags & VARF_Native)) if (var == NULL || (var->Flags & VARF_Native))
{ {
return false; return false;
} }
type = var->Type; type = var->Type;
BYTE *baddr = reinterpret_cast<BYTE *>(self) + var->Offset;
arraytype = dyn_cast<PArray>(type); arraytype = dyn_cast<PArray>(type);
if (arraytype != NULL) if (arraytype != NULL)
{ {

View file

@ -5495,7 +5495,7 @@ bool P_ChangeSector(sector_t *sector, int crunch, int amt, int floorOrCeil, bool
// Also process all sectors that have 3D floors transferred from the // Also process all sectors that have 3D floors transferred from the
// changed sector. // changed sector.
if (sector->e->XFloor.attached.Size()) if (sector->e->XFloor.attached.Size() && floorOrCeil != 2)
{ {
unsigned i; unsigned i;
sector_t* sec; sector_t* sec;
@ -5601,7 +5601,7 @@ bool P_ChangeSector(sector_t *sector, int crunch, int amt, int floorOrCeil, bool
} }
} while (n); // repeat from scratch until all things left are marked valid } while (n); // repeat from scratch until all things left are marked valid
sector->CheckPortalPlane(floorOrCeil); // check for portal obstructions after everything is done. if (floorOrCeil != 2) sector->CheckPortalPlane(floorOrCeil); // check for portal obstructions after everything is done.
if (!cpos.nofit && !isreset /* && sector->MoreFlags & (SECF_UNDERWATERMASK)*/) if (!cpos.nofit && !isreset /* && sector->MoreFlags & (SECF_UNDERWATERMASK)*/)
{ {

View file

@ -55,6 +55,8 @@ std2:
/*!re2c /*!re2c
"/*" { goto comment; } /* C comment */ "/*" { goto comment; } /* C comment */
"//" (any\"\n")* "\n" { goto newline; } /* C++ comment */ "//" (any\"\n")* "\n" { goto newline; } /* C++ comment */
("#region"|"#endregion") (any\"\n")* "\n"
{ goto newline; } /* Region blocks [mxd] */
(["](([\\]["])|[^"])*["]) { RET(TK_StringConst); } (["](([\\]["])|[^"])*["]) { RET(TK_StringConst); }
'stop' { RET(TK_Stop); } 'stop' { RET(TK_Stop); }
@ -80,6 +82,8 @@ std2:
/*!re2c /*!re2c
"/*" { goto comment; } /* C comment */ "/*" { goto comment; } /* C comment */
"//" (any\"\n")* "\n" { goto newline; } /* C++ comment */ "//" (any\"\n")* "\n" { goto newline; } /* C++ comment */
("#region"|"#endregion") (any\"\n")* "\n"
{ goto newline; } /* Region blocks [mxd] */
/* C Keywords */ /* C Keywords */
'break' { RET(TK_Break); } 'break' { RET(TK_Break); }
@ -269,6 +273,8 @@ std2:
/*!re2c /*!re2c
"/*" { goto comment; } /* C comment */ "/*" { goto comment; } /* C comment */
("//"|";") (any\"\n")* "\n" { goto newline; } /* C++/Hexen comment */ ("//"|";") (any\"\n")* "\n" { goto newline; } /* C++/Hexen comment */
("#region"|"#endregion") (any\"\n")* "\n"
{ goto newline; } /* Region blocks [mxd] */
WSP+ { goto std1; } /* whitespace */ WSP+ { goto std1; } /* whitespace */
"\n" { goto newline; } "\n" { goto newline; }
@ -287,6 +293,8 @@ std2:
/*!re2c /*!re2c
"/*" { goto comment; } /* C comment */ "/*" { goto comment; } /* C comment */
"//" (any\"\n")* "\n" { goto newline; } /* C++ comment */ "//" (any\"\n")* "\n" { goto newline; } /* C++ comment */
("#region"|"#endregion") (any\"\n")* "\n"
{ goto newline; } /* Region blocks [mxd] */
WSP+ { goto std1; } /* whitespace */ WSP+ { goto std1; } /* whitespace */
"\n" { goto newline; } "\n" { goto newline; }

View file

@ -555,8 +555,11 @@ protected:
BYTE *Pixels; BYTE *Pixels;
Span **Spans; Span **Spans;
float Speed; float Speed;
int WidthOffsetMultipiler, HeightOffsetMultipiler; // [mxd]
virtual void MakeTexture (DWORD time); virtual void MakeTexture (DWORD time);
int NextPo2 (int v); // [mxd]
void SetupMultipliers (int width, int height); // [mxd]
}; };
// [GRB] Eternity-like warping // [GRB] Eternity-like warping

View file

@ -44,6 +44,7 @@ FWarpTexture::FWarpTexture (FTexture *source)
: GenTime (0), SourcePic (source), Pixels (0), Spans (0), Speed (1.f) : GenTime (0), SourcePic (source), Pixels (0), Spans (0), Speed (1.f)
{ {
CopyInfo(source); CopyInfo(source);
SetupMultipliers(128, 128); // [mxd]
bWarped = 1; bWarped = 1;
} }
@ -138,6 +139,8 @@ void FWarpTexture::MakeTexture (DWORD time)
BYTE *buffer = (BYTE *)alloca (MAX (Width, Height)); BYTE *buffer = (BYTE *)alloca (MAX (Width, Height));
int xsize = Width; int xsize = Width;
int ysize = Height; int ysize = Height;
int xmul = WidthOffsetMultipiler; // [mxd]
int ymul = HeightOffsetMultipiler; // [mxd]
int xmask = WidthMask; int xmask = WidthMask;
int ymask = Height - 1; int ymask = Height - 1;
int ybits = HeightBits; int ybits = HeightBits;
@ -149,30 +152,58 @@ void FWarpTexture::MakeTexture (DWORD time)
} }
DWORD timebase = DWORD(time * Speed * 32 / 28); DWORD timebase = DWORD(time * Speed * 32 / 28);
// [mxd] Rewrote to fix animation for NPo2 textures
for (y = ysize-1; y >= 0; y--) for (y = ysize-1; y >= 0; y--)
{ {
int xt, xf = (finesine[(timebase+y*128)&FINEMASK]>>13) & xmask; int xf = (finesine[(timebase+y*ymul)&FINEMASK]>>13) % xsize;
if(xf < 0) xf += xsize;
int xt = xf;
const BYTE *source = otherpix + y; const BYTE *source = otherpix + y;
BYTE *dest = Pixels + y; BYTE *dest = Pixels + y;
for (xt = xsize; xt; xt--, xf = (xf+1)&xmask, dest += ysize) for (xt = xsize; xt; xt--, xf = (xf+1)%xsize, dest += ysize)
*dest = source[xf << ybits]; *dest = source[xf + ymask * xf];
} }
timebase = DWORD(time * Speed * 23 / 28); timebase = DWORD(time * Speed * 23 / 28);
for (x = xsize-1; x >= 0; x--) for (x = xsize-1; x >= 0; x--)
{ {
int yt, yf = (finesine[(time+(x+17)*128)&FINEMASK]>>13) & ymask; int yf = (finesine[(time+(x+17)*xmul)&FINEMASK]>>13) % ysize;
const BYTE *source = Pixels + (x << ybits); if(yf < 0) yf += ysize;
int yt = yf;
const BYTE *source = Pixels + (x + ymask * x);
BYTE *dest = buffer; BYTE *dest = buffer;
for (yt = ysize; yt; yt--, yf = (yf+1)&ymask) for (yt = ysize; yt; yt--, yf = (yf+1)%ysize)
*dest++ = source[yf]; *dest++ = source[yf];
memcpy (Pixels+(x<<ybits), buffer, ysize); memcpy (Pixels+(x+ymask*x), buffer, ysize);
} }
} }
// [mxd] Non power of 2 textures need different offset multipliers, otherwise warp animation won't sync across texture
void FWarpTexture::SetupMultipliers (int width, int height)
{
WidthOffsetMultipiler = width;
HeightOffsetMultipiler = height;
int widthpo2 = NextPo2(Width);
int heightpo2 = NextPo2(Height);
if(widthpo2 != Width) WidthOffsetMultipiler = (int)(WidthOffsetMultipiler * ((float)widthpo2 / Width));
if(heightpo2 != Height) HeightOffsetMultipiler = (int)(HeightOffsetMultipiler * ((float)heightpo2 / Height));
}
int FWarpTexture::NextPo2 (int v)
{
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
return ++v;
}
// [GRB] Eternity-like warping // [GRB] Eternity-like warping
FWarp2Texture::FWarp2Texture (FTexture *source) FWarp2Texture::FWarp2Texture (FTexture *source)
: FWarpTexture (source) : FWarpTexture (source)
{ {
SetupMultipliers(256, 128); // [mxd]
bWarped = 2; bWarped = 2;
} }
@ -194,6 +225,8 @@ void FWarp2Texture::MakeTexture (DWORD time)
int xsize = Width; int xsize = Width;
int ysize = Height; int ysize = Height;
int xmul = WidthOffsetMultipiler; // [mxd]
int ymul = HeightOffsetMultipiler; // [mxd]
int xmask = WidthMask; int xmask = WidthMask;
int ymask = Height - 1; int ymask = Height - 1;
int ybits = HeightBits; int ybits = HeightBits;
@ -205,18 +238,21 @@ void FWarp2Texture::MakeTexture (DWORD time)
} }
DWORD timebase = DWORD(time * Speed * 40 / 28); DWORD timebase = DWORD(time * Speed * 40 / 28);
for (x = 0; x < xsize; ++x) // [mxd] Rewrote to fix animation for NPo2 textures
for (x = 0; x < xsize; x++)
{ {
BYTE *dest = Pixels + (x << ybits); BYTE *dest = Pixels + (x + ymask * x);
for (y = 0; y < ysize; ++y) for (y = 0; y < ysize; y++)
{ {
int xt = (x + 128 int xt = (x + 128
+ ((finesine[(y*128 + timebase*5 + 900) & FINEMASK]*2)>>FRACBITS) + ((finesine[(y*ymul + timebase*5 + 900) & FINEMASK]*2)>>FRACBITS)
+ ((finesine[(x*256 + timebase*4 + 300) & FINEMASK]*2)>>FRACBITS)) & xmask; + ((finesine[(x*xmul + timebase*4 + 300) & FINEMASK]*2)>>FRACBITS)) % xsize;
int yt = (y + 128 int yt = (y + 128
+ ((finesine[(y*128 + timebase*3 + 700) & FINEMASK]*2)>>FRACBITS) + ((finesine[(y*ymul + timebase*3 + 700) & FINEMASK]*2)>>FRACBITS)
+ ((finesine[(x*256 + timebase*4 + 1200) & FINEMASK]*2)>>FRACBITS)) & ymask; + ((finesine[(x*xmul + timebase*4 + 1200) & FINEMASK]*2)>>FRACBITS)) % ysize;
*dest++ = otherpix[(xt << ybits) + yt];
*dest++ = otherpix[(xt + ymask * xt) + yt];
} }
} }
} }

View file

@ -165,7 +165,7 @@ bool ACustomInventory::CallStateChain (AActor *actor, FState *state)
stack.Call(state->ActionFunc, params, countof(params), wantret, numret); stack.Call(state->ActionFunc, params, countof(params), wantret, numret);
// As long as even one state succeeds, the whole chain succeeds unless aborted below. // As long as even one state succeeds, the whole chain succeeds unless aborted below.
// A state that wants to jump does not count as "succeeded". // A state that wants to jump does not count as "succeeded".
if (nextstate != NULL) if (nextstate == NULL)
{ {
result |= retval; result |= retval;
} }
@ -2008,13 +2008,15 @@ static bool DoGiveInventory(AActor *receiver, bool orresult, VM_ARGS)
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveInventory) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveInventory)
{ {
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
ACTION_RETURN_BOOL(DoGiveInventory(self, false, VM_ARGS_NAMES)); bool result = DoGiveInventory(self, false, VM_ARGS_NAMES);
ACTION_RETURN_BOOL(result);
} }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToTarget) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToTarget)
{ {
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
ACTION_RETURN_BOOL(DoGiveInventory(self->target, false, VM_ARGS_NAMES)); bool result = DoGiveInventory(self->target, false, VM_ARGS_NAMES);
ACTION_RETURN_BOOL(result);
} }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToChildren) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToChildren)
@ -2094,13 +2096,15 @@ bool DoTakeInventory(AActor *receiver, bool orresult, VM_ARGS)
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeInventory) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeInventory)
{ {
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
ACTION_RETURN_BOOL(DoTakeInventory(self, false, VM_ARGS_NAMES)); bool result = DoTakeInventory(self, false, VM_ARGS_NAMES);
ACTION_RETURN_BOOL(result);
} }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeFromTarget) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeFromTarget)
{ {
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
ACTION_RETURN_BOOL(DoTakeInventory(self->target, false, VM_ARGS_NAMES)); bool result = DoTakeInventory(self->target, false, VM_ARGS_NAMES);
ACTION_RETURN_BOOL(result);
} }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeFromChildren) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeFromChildren)
@ -2401,7 +2405,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnItem)
AActor *mo = Spawn( missile, self->Vec3Angle(distance, self->angle, -self->floorclip + self->GetBobOffset() + zheight), ALLOW_REPLACE); AActor *mo = Spawn( missile, self->Vec3Angle(distance, self->angle, -self->floorclip + self->GetBobOffset() + zheight), ALLOW_REPLACE);
int flags = (transfer_translation ? SIXF_TRANSFERTRANSLATION : 0) + (useammo ? SIXF_SETMASTER : 0); int flags = (transfer_translation ? SIXF_TRANSFERTRANSLATION : 0) + (useammo ? SIXF_SETMASTER : 0);
ACTION_RETURN_BOOL(InitSpawnedItem(self, mo, flags)); // for an inventory item's use state bool result = InitSpawnedItem(self, mo, flags);
ACTION_RETURN_BOOL(result); // for an inventory item's use state
} }
//=========================================================================== //===========================================================================
@ -3250,7 +3255,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIf)
PARAM_BOOL (condition); PARAM_BOOL (condition);
PARAM_STATE (jump); PARAM_STATE (jump);
ACTION_RETURN_STATE(condition ? jump : NULL); if (!condition) jump = NULL;
ACTION_RETURN_STATE(jump);
} }
//=========================================================================== //===========================================================================

View file

@ -361,6 +361,10 @@ endofstate:
void AddImplicitReturn(FxSequence *code, const PPrototype *proto, FScanner &sc) void AddImplicitReturn(FxSequence *code, const PPrototype *proto, FScanner &sc)
{ {
if (code == NULL)
{
return;
}
if (proto == NULL || proto->ReturnTypes.Size() == 0) if (proto == NULL || proto->ReturnTypes.Size() == 0)
{ // Returns nothing. Good. We can safely add an implied return. { // Returns nothing. Good. We can safely add an implied return.
code->Add(new FxReturnStatement(NULL, sc)); code->Add(new FxReturnStatement(NULL, sc));
@ -368,7 +372,7 @@ void AddImplicitReturn(FxSequence *code, const PPrototype *proto, FScanner &sc)
else else
{ // Something was returned earlier in the sequence. Make it an error { // Something was returned earlier in the sequence. Make it an error
// instead of adding an implicit one. // instead of adding an implicit one.
sc.ScriptError("Action list must end with a return statement"); sc.ScriptError("Action list must return a value");
} }
} }
@ -483,8 +487,9 @@ FxExpression *ParseActions(FScanner &sc, FState state, FString statestring, Bagg
proto = ReturnCheck(proto, true_proto, sc); proto = ReturnCheck(proto, true_proto, sc);
proto = ReturnCheck(proto, false_proto, sc); proto = ReturnCheck(proto, false_proto, sc);
// If one side does not end with a return, we don't consider the if statement // If one side does not end with a return, we don't consider the if statement
// to end with a return. // to end with a return. If the else case is missing, it can never be considered
if (true_ret && (false_proto == NULL || false_ret)) // as ending with a return.
if (true_ret && false_ret)
{ {
lastwasret = true; lastwasret = true;
} }

View file

@ -61,11 +61,11 @@ const char *GetVersionString();
// Protocol version used in demos. // Protocol version used in demos.
// Bump it if you change existing DEM_ commands or add new ones. // Bump it if you change existing DEM_ commands or add new ones.
// Otherwise, it should be safe to leave it alone. // Otherwise, it should be safe to leave it alone.
#define DEMOGAMEVERSION 0x21D #define DEMOGAMEVERSION 0x21E
// Minimum demo version we can play. // Minimum demo version we can play.
// Bump it whenever you change or remove existing DEM_ commands. // Bump it whenever you change or remove existing DEM_ commands.
#define MINDEMOVERSION 0x21D #define MINDEMOVERSION 0x21E
// SAVEVER is the version of the information stored in level snapshots. // SAVEVER is the version of the information stored in level snapshots.
// Note that SAVEVER is not directly comparable to VERSION. // Note that SAVEVER is not directly comparable to VERSION.

View file

@ -1,9 +1,6 @@
cmake_minimum_required( VERSION 2.8.7 ) cmake_minimum_required( VERSION 2.8.7 )
if(NOT CMAKE_CROSSCOMPILING) if( NOT CMAKE_CROSSCOMPILING )
message(STATUS "${ZLIB_INCLUDE_DIR}" )
message(STATUS "${BZIP2_INCLUDE_DIR}" )
message(STATUS "${LZMA_INCLUDE_DIR}" )
include_directories( "${ZLIB_INCLUDE_DIR}" "${BZIP2_INCLUDE_DIR}" "${LZMA_INCLUDE_DIR}" ) include_directories( "${ZLIB_INCLUDE_DIR}" "${BZIP2_INCLUDE_DIR}" "${LZMA_INCLUDE_DIR}" )
add_executable( zipdir add_executable( zipdir
zipdir.c ) zipdir.c )

View file

@ -23,3 +23,32 @@ GOTCHEXARMOR = "Picked up the Chex(R) Armour.";
GOTSUPERCHEXARMOR = "Picked up the Super Chex(R) Armour!"; GOTSUPERCHEXARMOR = "Picked up the Super Chex(R) Armour!";
OB_BIPEDICUS2 = "%o was slimed by an armoured bipedicus."; OB_BIPEDICUS2 = "%o was slimed by an armoured bipedicus.";
MNU_COLORPICKER = "SELECT COLOUR";
PLYRMNU_PLAYERCOLOR = "Colour";
DSPLYMNU_DIMCOLOR = "Dim colour";
HUDMNU_CROSSHAIRCOLOR = "Crosshair colour";
HUDMNU_NAMETAGCOLOR = "Nametag colour";
ALTHUDMNU_TIMECOLOR = "Time colour";
ALTHUDMNU_ARMORRED = "Red armour display below";
ALTHUDMNU_ARMORYELLOW = "Yellow armour display below";
ALTHUDMNU_ARMORGREEN = "Green armour display below";
ALTHUDMNU_TITLECOLOR = "Map title colour";
ALTHUDMNU_MAPTIMECOLOR = "Map time colour";
ALTHUDMNU_HUBTIMECOLOR = "Hub time colour";
ALTHUDMNU_TOTALTIMECOLOR = "Total time colour";
ALTHUDMNU_COORDINATECOLOR = "Coordinate colour";
ALTHUDMNU_STATSNAMECOLOR = "Statistics name colour";
ALTHUDMNU_STATSCOLOR = "Statistics colour";
AUTOMAPMNU_COLORSET = "Map colour set";
AUTOMAPMNU_CUSTOMCOLORS = "Allow map defined colours";
AUTOMAPMNU_SETCUSTOMCOLORS = "Set custom colours";
MAPCOLORMNU_TITLE = "CUSTOMIZE MAP COLOURS";
MAPCOLORMNU_DEFAULTMAPCOLORS = "Restore default custom colours";
MSGMNU_MESSAGECOLORS = "Message Colours";
SCRBRDMNU_HEADERCOLOR = "Header Colour";
SCRBRDMNU_YOURCOLOR = "Your Player Colour";
SCRBRDMNU_OTHERPLAYERCOLOR = "Other Players' Colour";
GMPLYMNU_ALLOWARMOR = "Allow armour";
GMPLYMNU_KEEPARMOR = "Keep armour";
OPTVAL_MAPDEFINEDCOLORSONLY = "Map defined colours only";

View file

@ -1554,7 +1554,17 @@ TXT_COMM0 = "Incoming Message";
TXT_COMM1 = "Incoming Message from BlackBird"; TXT_COMM1 = "Incoming Message from BlackBird";
// Skills: // Menu Strings
// Main Menu
MNU_NEWGAME = "NEW GAME";
MNU_OPTIONS = "OPTIONS";
MNU_GAMEFILES = "GAME FILES";
MNU_INFO = "INFO";
MNU_QUITGAME = "QUIT GAME";
// Skills
MNU_CHOOSESKILL = "CHOOSE SKILL LEVEL:";
SKILL_BABY = "I'm too young to die"; SKILL_BABY = "I'm too young to die";
SKILL_EASY = "Hey, not too rough"; SKILL_EASY = "Hey, not too rough";
@ -1574,40 +1584,12 @@ SSKILL_NORMAL = "Veteran";
SSKILL_HARD = "Elite"; SSKILL_HARD = "Elite";
SSKILL_NIGHTMARE = "Bloodbath"; SSKILL_NIGHTMARE = "Bloodbath";
// Menu
MNU_NEWGAME = "NEW GAME";
MNU_OPTIONS = "OPTIONS";
MNU_GAMEFILES = "GAME FILES";
MNU_INFO = "INFO";
MNU_QUITGAME = "QUIT GAME";
MNU_FIGHTER = "FIGHTER";
MNU_CLERIC = "CLERIC";
MNU_MAGE = "MAGE";
MNU_RANDOM = "RANDOM";
MNU_LOADGAME = "LOAD GAME";
MNU_SAVEGAME = "SAVE GAME";
MNU_COTD = "CITY OF THE DAMNED";
MNU_HELLSMAW = "HELL'S MAW";
MNU_DOME = "THE DOME OF D'SPARIL";
MNU_OSSUARY = "THE OSSUARY";
MNU_DEMESNE = "THE STAGNANT DEMESNE";
MNU_WETNURSE = "THOU NEEDETH A WET-NURSE"; MNU_WETNURSE = "THOU NEEDETH A WET-NURSE";
MNU_YELLOWBELLIES = "YELLOWBELLIES-R-US"; MNU_YELLOWBELLIES = "YELLOWBELLIES-R-US";
MNU_BRINGEST = "BRINGEST THEM ONETH"; MNU_BRINGEST = "BRINGEST THEM ONETH";
MNU_SMITE = "THOU ART A SMITE-MEISTER"; MNU_SMITE = "THOU ART A SMITE-MEISTER";
MNU_BLACKPLAGUE = "BLACK PLAGUE POSSESSES THEE"; MNU_BLACKPLAGUE = "BLACK PLAGUE POSSESSES THEE";
MNU_NOPICTURE = "No Picture";
MNU_DIFFVERSION = "Different\nVersion";
MNU_NOFILES = "No files";
MNU_CHOOSECLASS = "CHOOSE CLASS:";
MNU_CHOOSESKILL = "CHOOSE SKILL LEVEL:";
MNU_SQUIRE = "SQUIRE"; MNU_SQUIRE = "SQUIRE";
MNU_KNIGHT = "KNIGHT"; MNU_KNIGHT = "KNIGHT";
MNU_WARRIOR = "WARRIOR"; MNU_WARRIOR = "WARRIOR";
@ -1626,13 +1608,725 @@ MNU_SORCERER = "SORCERER";
MNU_WARLOCK = "WARLOCK"; MNU_WARLOCK = "WARLOCK";
MNU_ARCHMAGE = "ARCHMAGE"; MNU_ARCHMAGE = "ARCHMAGE";
MNU_PLAYERSETUP = "PLAYER SETUP"; // Classes
MNU_CHOOSECLASS = "CHOOSE CLASS:";
MNU_FIGHTER = "FIGHTER";
MNU_CLERIC = "CLERIC";
MNU_MAGE = "MAGE";
MNU_RANDOM = "RANDOM";
// Game Files
MNU_LOADGAME = "LOAD GAME";
MNU_SAVEGAME = "SAVE GAME";
MNU_NOPICTURE = "No Picture";
MNU_DIFFVERSION = "Different\nVersion";
MNU_NOFILES = "No files";
MNU_DELETESG = "Do you really want to delete the savegame\n"; MNU_DELETESG = "Do you really want to delete the savegame\n";
// Episodes
MNU_EPISODE = "Select Episode";
MNU_COTD = "CITY OF THE DAMNED";
MNU_HELLSMAW = "HELL'S MAW";
MNU_DOME = "THE DOME OF D'SPARIL";
MNU_OSSUARY = "THE OSSUARY";
MNU_DEMESNE = "THE STAGNANT DEMESNE";
$ifgame(heretic) SWSTRING = "ONLY AVAILABLE IN THE REGISTERED VERSION"; $ifgame(heretic) SWSTRING = "ONLY AVAILABLE IN THE REGISTERED VERSION";
MNU_EPISODE = "Select Episode"; // Options Menu
OPTMNU_TITLE = "OPTIONS";
OPTMNU_CONTROLS = "Customize Controls";
OPTMNU_MOUSE = "Mouse options";
OPTMNU_JOYSTICK = "Joystick options";
OPTMNU_PLAYER = "Player Setup";
OPTMNU_GAMEPLAY = "Gameplay Options";
OPTMNU_COMPATIBILITY = "Compatibility Options";
OPTMNU_AUTOMAP = "Automap Options";
OPTMNU_HUD = "HUD Options";
OPTMNU_MISCELLANEOUS = "Miscellaneous Options";
OPTMNU_NETWORK = "Network Options";
OPTMNU_SOUND = "Sound Options";
OPTMNU_DISPLAY = "Display Options";
OPTMNU_VIDEO = "Set video mode";
OPTMNU_DEFAULTS = "Reset to defaults";
OPTMNU_RESETTOSAVED = "Reset to last saved";
OPTMNU_CONSOLE = "Go to console";
// Controls Menu
CNTRLMNU_TITLE = "CUSTOMIZE CONTROLS";
CNTRLMNU_SWITCHTEXT1 = "ENTER to change, BACKSPACE to clear";
CNTRLMNU_SWITCHTEXT2 = "Press new key for control, ESC to cancel";
CNTRLMNU_CONTROLS = "Controls";
CNTRLMNU_ATTACK = "Fire";
CNTRLMNU_ALTATTACK = "Secondary Fire";
CNTRLMNU_RELOAD = "Weapon Reload";
CNTRLMNU_ZOOM = "Weapon Zoom";
CNTRLMNU_USER1 = "Weapon State 1";
CNTRLMNU_USER2 = "Weapon State 2";
CNTRLMNU_USER3 = "Weapon State 3";
CNTRLMNU_USER4 = "Weapon State 4";
CNTRLMNU_USE = "Use / Open";
CNTRLMNU_FORWARD = "Move forward";
CNTRLMNU_BACK = "Move backward";
CNTRLMNU_MOVELEFT = "Strafe left";
CNTRLMNU_MOVERIGHT = "Strafe right";
CNTRLMNU_TURNLEFT = "Turn left";
CNTRLMNU_TURNRIGHT = "Turn right";
CNTRLMNU_TURN180 = "Quick Turn";
CNTRLMNU_JUMP = "Jump";
CNTRLMNU_CROUCH = "Crouch";
CNTRLMNU_TOGGLECROUCH = "Crouch Toggle";
CNTRLMNU_MOVEUP = "Fly / Swim up";
CNTRLMNU_MOVEDOWN = "Fly / Swim down";
CNTRLMNU_LAND = "Stop flying";
CNTRLMNU_MOUSELOOK = "Mouse look";
CNTRLMNU_KEYBOARDLOOK = "Keyboard look";
CNTRLMNU_LOOKUP = "Look up";
CNTRLMNU_LOOKDOWN = "Look down";
CNTRLMNU_CENTERVIEW = "Center view";
CNTRLMNU_RUN = "Run";
CNTRLMNU_TOGGLERUN = "Toggle Run";
CNTRLMNU_STRAFE = "Strafe";
CNTRLMNU_SCOREBOARD = "Show Scoreboard";
CNTRLMNU_TOGGLESCOREBOARD = "Toggle Scoreboard";
CNTRLMNU_CHAT = "Chat";
CNTRLMNU_SAY = "Say";
CNTRLMNU_TEAMSAY = "Team say";
CNTRLMNU_WEAPONS = "Weapons";
CNTRLMNU_NEXTWEAPON = "Next weapon";
CNTRLMNU_PREVIOUSWEAPON = "Previous weapon";
CNTRLMNU_SLOT1 = "Weapon Slot 1";
CNTRLMNU_SLOT2 = "Weapon Slot 2";
CNTRLMNU_SLOT3 = "Weapon Slot 3";
CNTRLMNU_SLOT4 = "Weapon Slot 4";
CNTRLMNU_SLOT5 = "Weapon Slot 5";
CNTRLMNU_SLOT6 = "Weapon Slot 6";
CNTRLMNU_SLOT7 = "Weapon Slot 7";
CNTRLMNU_SLOT8 = "Weapon Slot 8";
CNTRLMNU_SLOT9 = "Weapon Slot 9";
CNTRLMNU_SLOT0 = "Weapon Slot 0";
CNTRLMNU_INVENTORY = "Inventory";
CNTRLMNU_USEITEM = "Activate item";
CNTRLMNU_USEALLITEMS = "Activate all items";
CNTRLMNU_NEXTITEM = "Next item";
CNTRLMNU_PREVIOUSITEM = "Previous item";
CNTRLMNU_DROPITEM = "Drop item";
CNTRLMNU_QUERYITEM = "Query item";
CNTRLMNU_DROPWEAPON = "Drop weapon";
CNTRLMNU_OTHER = "Other";
CNTRLMNU_AUTOMAP = "Toggle automap";
CNTRLMNU_CHASECAM = "Chasecam";
CNTRLMNU_COOPSPY = "Coop spy";
CNTRLMNU_SCREENSHOT = "Screenshot";
CNTRLMNU_CONSOLE = "Open console";
CNTRLMNU_POPUPS = "Strife Popup Screens";
CNTRLMNU_MISSION = "Mission objectives";
CNTRLMNU_KEYS = "Keys list";
CNTRLMNU_STATS = "Weapons/ammo/stats";
// Mouse Menu
MOUSEMNU_TITLE = "MOUSE OPTIONS";
MOUSEMNU_ENABLEMOUSE = "Enable mouse";
MOUSEMNU_MOUSEINMENU = "Enable mouse in menus";
MOUSEMNU_SHOWBACKBUTTON = "Show back button";
MOUSEMNU_CURSOR = "Cursor";
MOUSEMNU_SENSITIVITY = "Overall sensitivity";
MOUSEMNU_NOPRESCALE = "Prescale mouse movement";
MOUSEMNU_SMOOTHMOUSE = "Smooth mouse movement";
MOUSEMNU_TURNSPEED = "Turning speed";
MOUSEMNU_MOUSELOOKSPEED = "Mouselook speed";
MOUSEMNU_FORWBACKSPEED = "Forward/Backward speed";
MOUSEMNU_STRAFESPEED = "Strafing speed";
MOUSEMNU_ALWAYSMOUSELOOK = "Always Mouselook";
MOUSEMNU_INVERTMOUSE = "Invert Mouse";
MOUSEMNU_LOOKSPRING = "Lookspring";
MOUSEMNU_LOOKSTRAFE = "Lookstrafe";
// Joystick Menu
JOYMNU_CONFIG = "CONFIGURE CONTROLLER";
JOYMNU_OPTIONS = "CONTROLLER OPTIONS";
// Player Setup Menu
PLYRMNU_PLAYERSETUP = "PLAYER SETUP";
PLYRMNU_NAME = "Name";
PLYRMNU_TEAM = "Team";
PLYRMNU_PLAYERCOLOR = "Color";
PLYRMNU_RED = "Red";
PLYRMNU_GREEN = "Green";
PLYRMNU_BLUE = "Blue";
PLYRMNU_PLAYERCLASS = "Class";
PLYRMNU_PLAYERSKIN = "Skin";
PLYRMNU_PLAYERGENDER = "Gender";
PLYRMNU_AUTOAIM = "Autoaim";
PLYRMNU_SWITCHONPICKUP = "Switch on pickup";
PLYRMNU_ALWAYSRUN = "Always Run";
// Display Options
DSPLYMNU_TITLE = "DISPLAY OPTIONS";
DSPLYMNU_SCOREBOARD = "Scoreboard Options";
DSPLYMNU_SCREENSIZE = "Screen size";
DSPLYMNU_BRIGHTNESS = "Brightness";
DSPLYMNU_VSYNC = "Vertical Sync";
DSPLYMNU_CAPFPS = "Rendering Interpolation";
DSPLYMNU_COLUMNMETHOD = "Column render mode";
DSPLYMNU_WIPETYPE = "Screen wipe style";
DSPLYMNU_SHOWENDOOM = "Show ENDOOM screen";
DSPLYMNU_PALLETEHACK = "DirectDraw palette hack"; // Not used
DSPLYMNU_ATTACHEDSURFACES = "Use attached surfaces"; // Not used
DSPLYMNU_STRETCHSKY = "Stretch short skies";
DSPLYMNU_DRAWFUZZ = "Use fuzz effect";
DSPLYMNU_TRANSSOUL = "Lost Soul translucency";
DSPLYMNU_FAKECONTRAST = "Use fake contrast";
DSPLYMNU_ROCKETTRAILS = "Rocket Trails";
DSPLYMNU_BLOODTYPE = "Blood Type";
DSPLYMNU_PUFFTYPE = "Bullet Puff Type";
DSPLYMNU_MAXPARTICLES = "Number of particles";
DSPLYMNU_MAXDECALS = "Number of decals";
DSPLYMNU_PLAYERSPRITES = "Show player sprites";
DSPLYMNU_DEATHCAM = "Death camera";
DSPLYMNU_TELEZOOM = "Teleporter zoom";
DSPLYMNU_QUAKEINTENSITY = "Earthquake shake intensity";
DSPLYMNU_NOMONSTERINTERPOLATION = "Interpolate monster movement";
DSPLYMNU_MENUDIM = "Menu dim";
DSPLYMNU_DIMCOLOR = "Dim color";
// HUD Options
HUDMNU_TITLE = "HUD Options";
HUDMNU_ALTHUD = "Alternative HUD";
HUDMNU_MESSAGE = "Message Options";
HUDMNU_CROSSHAIR = "Default Crosshair";
HUDMNU_FORCECROSSHAIR = "Force default crosshair";
HUDMNU_GROWCROSSHAIR = "Grow crosshair when picking up items";
HUDMNU_CROSSHAIRCOLOR = "Crosshair color";
HUDMNU_CROSSHAIRHEALTH = "Crosshair shows health";
HUDMNU_CROSSHAIRSCALE = "Scale crosshair";
HUDMNU_NAMETAGS = "Display nametags";
HUDMNU_NAMETAGCOLOR = "Nametag color";
HUDMNU_SCALESTATBAR = "Stretch status bar";
HUDMNU_SCALEFULLSCREENHUD = "Stretch Fullscreen HUD";
HUDMNU_OLDOUCH = "Use old ouch mug shot formula";
HUDMNU_HEXENFLASHES = "Hexen weapon flashes";
HUDMNU_POISONFLASHES = "Poison damage flashes";
HUDMNU_ICEFLASHES = "Ice death flashes";
HUDMNU_HAZARDFLASHES = "Poison Buildup flashes";
// AltHUD Options
ALTHUDMNU_TITLE = "Alternative HUD";
ALTHUDMNU_ENABLE = "Enable alternative HUD";
ALTHUDMNU_SCALEHUD = "Stretch alternative HUD";
ALTHUDMNU_SHOWSECRETS = "Show secret count";
ALTHUDMNU_SHOWMONSTERS = "Show monster count";
ALTHUDMNU_SHOWITEMS = "Show item count";
ALTHUDMNU_SHOWSTATS = "Show stamina and accuracy";
ALTHUDMNU_SHOWBERSERK = "Show berserk";
ALTHUDMNU_SHOWWEAPONS = "Show weapons";
ALTHUDMNU_SHOWAMMO = "Show ammo for";
ALTHUDMNU_SHOWTIME = "Show time";
ALTHUDMNU_TIMECOLOR = "Time color";
ALTHUDMNU_SHOWLAG = "Show network latency";
ALTHUDMNU_AMMORED = "Red ammo display below %";
ALTHUDMNU_AMMOYELLOW = "Yellow ammo display below %";
ALTHUDMNU_HEALTHRED = "Red health display below";
ALTHUDMNU_HEALTHYELLOW = "Yellow health display below";
ALTHUDMNU_HEALTHGREEN = "Green health display below";
ALTHUDMNU_ARMORRED = "Red armor display below";
ALTHUDMNU_ARMORYELLOW = "Yellow armor display below";
ALTHUDMNU_ARMORGREEN = "Green armor display below";
ALTHUDMNU_AUTOMAPHUD = "Alternative Automap HUD";
ALTHUDMNU_TITLECOLOR = "Map title color";
ALTHUDMNU_MAPTIMECOLOR = "Map time color";
ALTHUDMNU_HUBTIMECOLOR = "Hub time color";
ALTHUDMNU_TOTALTIMECOLOR = "Total time color";
ALTHUDMNU_COORDINATECOLOR = "Coordinate color";
ALTHUDMNU_COORDINATEMODE = "Coordinate mode";
ALTHUDMNU_STATSNAMECOLOR = "Statistics name color";
ALTHUDMNU_STATSCOLOR = "Statistics color";
// Misc. Options
MISCMNU_TITLE = "Miscellaneous Options";
MISCMNU_MERGEKEYS = "Merge left+right Alt/Ctrl/Shift";
MISCMNU_WINFULLSCREENTOGGLE = "Alt-Enter toggles fullscreen";
MISCMNU_MACFULLSCREENTOGGLE = "Command-F toggles fullscreen";
MISCMNU_QUERYIWAD = "Show IWAD selection dialog";
MISCMNU_ALLCHEATS = "Enable cheats from all games";
MISCMNU_ENABLEAUTOSAVES = "Enable autosaves";
MISCMNU_AUTOSAVECOUNT = "Number of autosaves";
MISCMNU_DEHLOAD = "Load *.deh/*.bex lumps";
MISCMNU_CACHENODES = "Cache nodes";
MISCMNU_CACHETIME = "Time threshold for node caching";
MISCMNU_CLEARNODECACHE = "Clear node cache";
// Automap Options
AUTOMAPMNU_TITLE = "AUTOMAP OPTIONS";
AUTOMAPMNU_COLORSET = "Map color set";
AUTOMAPMNU_CUSTOMCOLORS = "Allow map defined colors";
AUTOMAPMNU_SETCUSTOMCOLORS = "Set custom colors";
AUTOMAPMNU_CONTROLS = "Customize map controls";
AUTOMAPMNU_ROTATE = "Rotate automap";
AUTOMAPMNU_OVERLAY = "Overlay automap";
AUTOMAPMNU_TEXTURED = "Enable textured display";
AUTOMAPMNU_FOLLOW = "Follow player";
AUTOMAPMNU_SHOWITEMS = "Show item counts";
AUTOMAPMNU_SHOWMONSTERS = "Show monster counts";
AUTOMAPMNU_SHOWSECRETS = "Show secret counts";
AUTOMAPMNU_SHOWTIME = "Show time elapsed";
AUTOMAPMNU_SHOWTOTALTIME = "Show total time elapsed";
AUTOMAPMNU_MAPSECRETS = "Show secrets on map";
AUTOMAPMNU_SHOWMAPLABEL = "Show map label";
AUTOMAPMNU_DRAWMAPBACK = "Draw map background";
AUTOMAPMNU_SHOWKEYS = "Show keys (cheat)";
AUTOMAPMNU_SHOWTRIGGERLINES = "Show trigger lines";
AUTOMAPMNU_SHOWTHINGSPRITES = "Show things as sprites";
// Automap Controls
MAPCNTRLMNU_TITLE = "CUSTOMIZE MAP CONTROLS";
MAPCNTRLMNU_CONTROLS = "Map Controls";
MAPCNTRLMNU_PANLEFT = "Pan left";
MAPCNTRLMNU_PANRIGHT = "Pan right";
MAPCNTRLMNU_PANUP = "Pan up";
MAPCNTRLMNU_PANDOWN = "Pan down";
MAPCNTRLMNU_ZOOMIN = "Zoom in";
MAPCNTRLMNU_ZOOMOUT = "Zoom out";
MAPCNTRLMNU_TOGGLEZOOM = "Toggle zoom";
MAPCNTRLMNU_TOGGLEFOLLOW = "Toggle follow";
MAPCNTRLMNU_TOGGLEGRID = "Toggle grid";
MAPCNTRLMNU_TOGGLETEXTURE = "Toggle texture";
MAPCNTRLMNU_SETMARK = "Set mark";
MAPCNTRLMNU_CLEARMARK = "Clear mark";
// Automap Colors
MAPCOLORMNU_TITLE = "CUSTOMIZE MAP COLORS";
MAPCOLORMNU_DEFAULTMAPCOLORS = "Restore default custom colors";
MAPCOLORMNU_BACKCOLOR = "Background";
MAPCOLORMNU_YOURCOLOR = "You";
MAPCOLORMNU_WALLCOLOR = "1-sided walls";
MAPCOLORMNU_FDWALLCOLOR = "2-sided walls with different floors";
MAPCOLORMNU_CDWALLCOLOR = "2-sided walls with different ceilings";
MAPCOLORMNU_EFWALLCOLOR = "2-sided walls with 3D floors";
MAPCOLORMNU_GRIDCOLOR = "Map grid";
MAPCOLORMNU_XHAIRCOLOR = "Center point";
MAPCOLORMNU_NOTSEENCOLOR = "Not-yet-seen walls";
MAPCOLORMNU_LOCKEDCOLOR = "Locked doors";
MAPCOLORMNU_INTRALEVELCOLOR = "Teleporter to the same map";
MAPCOLORMNU_INTERLEVELCOLOR = "Teleporter to a different map";
MAPCOLORMNU_SECRETSECTORCOLOR = "Secret sector";
MAPCOLORMNU_SPECIALWALLCOLOR = "Special trigger lines";
MAPCOLORMNU_CHEATMODE = "Cheat Mode";
MAPCOLORMNU_TSWALLCOLOR = "Invisible 2-sided walls";
MAPCOLORMNU_SECRETWALLCOLOR = "Secret walls";
MAPCOLORMNU_THINGCOLOR = "Actors";
MAPCOLORMNU_MONSTERCOLOR = "Monsters";
MAPCOLORMNU_NONCOUNTINGMONSTERCOLOR = "non-counting Monsters";
MAPCOLORMNU_FRIENDCOLOR = "Friends";
MAPCOLORMNU_ITEMCOLOR = "Items";
MAPCOLORMNU_COUNTITEMCOLOR = "Count Items";
MAPCOLORMNU_OVERLAY = "Overlay Mode";
MAPCOLORMNU_OVCHEATMODE = "Overlay Cheat Mode";
// Message Options
MSGMNU_TITLE = "MESSAGES";
MSGMNU_SHOWMESSAGES = "Show messages";
MSGMNU_SHOWOBITUARIES = "Show obituaries";
MSGMNU_SHOWSECRETS = "Show secret notifications";
MSGMNU_SCALETEXT = "Scale text in high res";
MSGMNU_MESSAGELEVEL = "Minimum message level";
MSGMNU_CENTERMESSAGES = "Center messages";
MSGMNU_MESSAGECOLORS = "Message Colors";
MSGMNU_ITEMPICKUP = "Item Pickup";
MSGMNU_OBITUARIES = "Obituaries";
MSGMNU_CRITICALMESSAGES = "Critical Messages";
MSGMNU_CHATMESSAGES = "Chat Messages";
MSGMNU_TEAMMESSAGES = "Team Messages";
MSGMNU_CENTEREDMESSAGES = "Centered Messages";
MSGMNU_SCREENSHOTMESSAGES = "Screenshot messages";
MSGMNU_LONGSAVEMESSAGES = "Detailed save messages";
// Scoreboard Options
SCRBRDMNU_TITLE = "SCOREBOARD OPTIONS";
SCRBRDMNU_COOPERATIVE = "Cooperative Options";
SCRBRDMNU_ENABLE = "Enable Scoreboard";
SCRBRDMNU_HEADERCOLOR = "Header Color";
SCRBRDMNU_YOURCOLOR = "Your Player Color";
SCRBRDMNU_OTHERPLAYERCOLOR = "Other Players' Color";
SCRBRDMNU_DEATHMATCH = "Deathmatch Options";
SCRBRDMNU_TEAMDEATHMATCH = "Team Deathmatch Options";
// Gameplay Menu
GMPLYMNU_TITLE = "GAMEPLAY OPTIONS";
GMPLYMNU_TEAMPLAY = "Teamplay";
GMPLYMNU_TEAMDAMAGE = "Team damage scalar";
GMPLYMNU_SMARTAUTOAIM = "Smart Autoaim";
GMPLYMNU_FALLINGDAMAGE = "Falling damage";
GMPLYMNU_DROPWEAPON = "Drop weapon";
GMPLYMNU_DOUBLEAMMO = "Double ammo";
GMPLYMNU_INFINITEAMMO = "Infinite ammo";
GMPLYMNU_INFINITEINVENTORY = "Infinite inventory";
GMPLYMNU_NOMONSTERS = "No monsters";
GMPLYMNU_NOMONSTERSTOEXIT = "No monsters to exit";
GMPLYMNU_MONSTERSRESPAWN = "Monsters respawn";
GMPLYMNU_NORESPAWN = "No respawn";
GMPLYMNU_ITEMSRESPAWN = "Items respawn";
GMPLYMNU_SUPERRESPAWN = "Big powerups respawn";
GMPLYMNU_FASTMONSTERS = "Fast monsters";
GMPLYMNU_DEGENERATION = "Degeneration";
GMPLYMNU_NOAUTOAIM = "Allow Autoaim";
GMPLYMNU_ALLOWSUICIDE = "Allow Suicide";
GMPLYMNU_ALLOWJUMP = "Allow jump";
GMPLYMNU_ALLOWCROUCH = "Allow crouch";
GMPLYMNU_ALLOWFREELOOK = "Allow freelook";
GMPLYMNU_ALLOWFOV = "Allow FOV";
GMPLYMNU_BFGFREEAIM = "Allow BFG aiming";
GMPLYMNU_ALLOWAUTOMAP = "Allow automap";
GMPLYMNU_AUTOMAPALLIES = "Automap allies";
GMPLYMNU_ALLOWSPYING = "Allow spying";
GMPLYMNU_CHASECAM = "Chasecam cheat";
GMPLYMNU_DONTCHECKAMMO = "Check ammo for weapon switch";
GMPLYMNU_KILLBOSSSPAWNS = "Icon's death kills its spawns";
GMPLYMNU_NOCOUNTENDMONSTER = "End sector counts for kill %";
GMPLYMNU_DEATHMATCH = "Deathmatch Settings";
GMPLYMNU_WEAPONSSTAY = "Weapons stay";
GMPLYMNU_ALLOWPOWERUPS = "Allow powerups";
GMPLYMNU_ALLOWHEALTH = "Allow health";
GMPLYMNU_ALLOWARMOR = "Allow armor";
GMPLYMNU_SPAWNFARTHEST = "Spawn farthest";
GMPLYMNU_SAMEMAP = "Same map";
GMPLYMNU_FORCERESPAWN = "Force respawn";
GMPLYMNU_ALLOWEXIT = "Allow exit";
GMPLYMNU_BARRELSRESPAWN = "Barrels respawn";
GMPLYMNU_RESPAWNPROTECTION = "Respawn protection";
GMPLYMNU_LOSEFRAG = "Lose frag if fragged";
GMPLYMNU_KEEPFRAGS = "Keep frags gained";
GMPLYMNU_NOTEAMSWITCH = "No team switching";
GMPLYMNU_COOPERATIVE = "Cooperative Settings";
GMPLYMNU_MULTIPLAYERWEAPONS = "Spawn multi. weapons";
GMPLYMNU_LOSEINVENTORY = "Lose entire inventory";
GMPLYMNU_KEEPKEYS = "Keep keys";
GMPLYMNU_KEEPWEAPONS = "Keep weapons";
GMPLYMNU_KEEPARMOR = "Keep armor";
GMPLYMNU_KEEPPOWERUPS = "Keep powerups";
GMPLYMNU_KEEPAMMO = "Keep ammo";
GMPLYMNU_LOSEHALFAMMO = "Lose half ammo";
GMPLYMNU_SPAWNWHEREDIED = "Spawn where died";
// Compatibility Options
CMPTMNU_TITLE = "COMPATIBILITY OPTIONS";
CMPTMNU_MODE = "Compatibility mode";
CMPTMNU_ACTORBEHAVIOR = "Actor Behavior";
CMPTMNU_CORPSEGIBS = "Crushed monsters can be resurrected";
CMPTMNU_NOBLOCKFRIENDS = "Friendly monsters aren't blocked";
CMPTMNU_LIMITPAIN = "Limit Pain Elementals' Lost Souls";
CMPTMNU_MBFMONSTERMOVE = "Monster movement is affected by effects";
CMPTMNU_CROSSDROPOFF = "Monsters cannot cross dropoffs";
CMPTMNU_DROPOFF = "Monsters get stuck over dropoffs";
CMPTMNU_INVISIBILITY = "Monsters see invisible players";
CMPTMNU_MINOTAUR = "No Minotaur floor flames in water";
CMPTMNU_NOTOSSDROPS = "Spawn item drops on the floor";
CMPTMNU_DEHACKEDBEHAVIOR = "DehackEd Behavior";
CMPTMNU_DEHHEALTH = "DEH health settings like Doom2.exe";
CMPTMNU_MUSHROOM = "Original A_Mushroom speed in DEH mods";
CMPTMNU_MAPACTIONBEHAVIOR = "Map/Action Behavior";
CMPTMNU_USEBLOCKING = "All special lines can block <use>";
CMPTMNU_ANYBOSSDEATH = "Allow any bossdeath for level special";
CMPTMNU_NODOORLIGHT = "Disable BOOM door light effect";
CMPTMNU_LIGHT = "Find neighboring light like Doom";
CMPTMNU_SHORTTEX = "Find shortest textures like Doom";
CMPTMNU_STAIRS = "Use buggier stair building";
CMPTMNU_FLOORMOVE = "Use Doom's floor motion behavior";
CMPTMNU_POINTONLINE = "Use Doom's point-on-line algorithm";
CMPTMNU_PHYSICSBEHAVIOR = "Physics Behavior";
CMPTMNU_NOPASSOVER = "Actors are infinitely tall";
CMPTMNU_BOOMSCROLL = "Boom scrollers are additive";
CMPTMNU_BADANGLES = "Cannot travel straight NSEW";
CMPTMNU_WALLRUN = "Enable wall running";
CMPTMNU_RAVENSCROLL = "Raven scrollers use original speed";
CMPTMNU_TRACE = "Self ref. sectors don't block shots";
CMPTMNU_HITSCAN = "Use Doom code for hitscan checks";
CMPTMNU_MISSILECLIP = "Use Doom heights for missile clipping";
CMPTMNU_RENDERINGBEHAVIOR = "Rendering Behavior";
CMPTMNU_POLYOBJ = "Draw polyobjects like Hexen";
CMPTMNU_MASKEDMIDTEX = "Ignore Y offsets on masked midtextures";
CMPTMNU_SPRITESORT = "Invert sprite sorting";
CMPTMNU_SOUNDBEHAVIOR = "Sound Behavior";
CMPTMNU_SOUNDSLOTS = "Cripple sound for silent BFG trick";
CMPTMNU_SILENTPICKUP = "Don't let others hear your pickups";
CMPTMNU_SILENTINSTANTFLOORS = "Inst. moving floors are not silent";
CMPTMNU_SECTORSOUNDS = "Sector sounds use center as source";
CMPTMNU_SOUNDCUTOFF = "Sounds stop when actor vanishes";
CMPTMNU_SOUNDTARGET = "Use original sound target handling";
// Sound Options
SNDMNU_TITLE = "SOUND OPTIONS";
SNDMNU_SFXVOLUME = "Sounds volume";
SNDMNU_MENUVOLUME = "Menu volume";
SNDMNU_MUSICVOLUME = "Music volume";
SNDMNU_MIDIDEVICE = "MIDI device";
SNDMNU_UNDERWATERREVERB = "Underwater reverb";
SNDMNU_RANDOMIZEPITCHES = "Randomize pitches";
SNDMNU_CHANNELS = "Sound channels";
SNDMNU_BACKEND = "Sound backend";
SNDMNU_FMOD = "FMOD options";
SNDMNU_OPENAL = "OpenAL options";
SNDMNU_RESTART = "Restart sound";
SNDMNU_ADVANCED = "Advanced options";
SNDMNU_MODREPLAYER = "Module replayer options";
// Fmod Options
FMODMNU_TITLE = "FMOD OPTIONS";
FMODMNU_WATERCUTOFF = "Underwater cutoff";
FMODMNU_OUTPUTSYSTEM = "Output system";
FMODMNU_OUTPUTFORMAT = "Output format";
FMODMNU_SPEAKERMODE = "Speaker mode";
FMODMNU_RESAMPLER = "Resampler";
FMODMNU_HRTFFILTER = "HRTF filter";
FMODMNU_BUFFERSIZE = "Buffer size";
FMODMNU_BUFFERCOUNT = "Buffer count";
// OpenAL Options
OPENALMNU_TITLE = "OPENAL OPTIONS";
OPENALMNU_PLAYBACKDEVICE = "Playback device";
OPENALMNU_ENABLEEFX = "Enable EFX";
// Advanced Sound Options
ADVSNDMNU_TITLE = "ADVANCED SOUND OPTIONS";
ADVSNDMNU_SAMPLERATE = "Sample rate";
ADVSNDMNU_OPLSYNTHESIS = "OPL Synthesis";
ADVSNDMNU_OPLNUMCHIPS = "Number of emulated OPL chips";
ADVSNDMNU_OPLFULLPAN = "Full MIDI stereo panning";
ADVSNDMNU_OPLCORES = "OPL Emulator Core";
ADVSNDMNU_GUSEMULATION = "GUS Emulation";
ADVSNDMNU_GUSCONFIG = "GUS config file";
ADVSNDMNU_MIDIVOICES = "MIDI voices";
ADVSNDMNU_DMXGUS = "Read DMXGUS lumps";
ADVSNDMNU_GUSMEMSIZE = "GUS memory size";
ADVSNDMNU_FLUIDSYNTH = "FluidSynth";
ADVSNDMNU_FLUIDPATCHSET = "Patch set";
ADVSNDMNU_FLUIDGAIN = "Gain";
ADVSNDMNU_REVERB = "Reverb";
ADVSNDMNU_FLUIDVOICES = "MIDI voices";
ADVSNDMNU_TIMIDITY = "Timidity++";
ADVSNDMNU_TIMIDITYEXE = "Path for executable";
ADVSNDMNU_TIMIDITYCHORUS = "Chorus";
ADVSNDMNU_TIMIDITYVOLUME = "Relative volume";
ADVSNDMNU_WILDMIDI = "WildMidi";
ADVSNDMNU_WILDMIDICONFIG = "WildMidi config file";
// Module Replayer Options
MODMNU_TITLE = "MODULE REPLAYER OPTIONS";
MODMNU_REPLAYERENGINE = "Replayer engine";
MODMNU_MASTERVOLUME = "Master Volume";
MODMNU_QUALITY = "Quality";
MODMNU_VOLUMERAMPING = "Volume ramping";
MODMNU_CHIPOMATIC = "Chip-o-matic";
// Video Options
VIDMNU_TITLE = "VIDEO MODE";
VIDMNU_FULLSCREEN = "Fullscreen";
VIDMNU_HIDPI = "Retina/HiDPI support";
VIDMNU_ASPECTRATIO = "Aspect ratio";
VIDMNU_FORCEASPECT = "Force aspect ratio";
VIDMNU_5X4ASPECTRATIO = "Enable 5:4 aspect ratio";
VIDMNU_ENTERTEXT = "Press ENTER to set mode";
VIDMNU_TESTTEXT1 = "T to test mode for 5 seconds";
VIDMNU_TESTTEXT2 = "Please wait 5 seconds...";
// Network Options
NETMNU_TITLE = "NETWORK OPTIONS";
NETMNU_LOCALOPTIONS = "Local options";
NETMNU_MOVEPREDICTION = "Movement prediction";
NETMNU_LINESPECIALPREDICTION = "Predict line actions";
NETMNU_PREDICTIONLERPSCALE = "Prediction Lerp Scale";
NETMNU_LERPTHRESHOLD = "Lerp Threshold";
NETMNU_HOSTOPTIONS = "Host options";
NETMNU_EXTRATICS = "Extra Tics";
NETMNU_TICBALANCE = "Latency balancing";
// Option Values
OPTVAL_OFF = "Off";
OPTVAL_ON = "On";
OPTVAL_MALE = "Male";
OPTVAL_FEMALE = "Female";
OPTVAL_OTHER = "Other";
OPTVAL_UPPERLEFT = "Upper left";
OPTVAL_UPPERRIGHT = "Upper right";
OPTVAL_LOWERLEFT = "Lower left";
OPTVAL_LOWERRIGHT = "Lower right";
OPTVAL_TOUCHSCREENLIKE = "Touchscreen-like";
OPTVAL_NONE = "None";
OPTVAL_TURNING = "Turning";
OPTVAL_LOOKINGUPDOWN = "Looking Up/Down";
OPTVAL_MOVINGFORWARD = "Moving Forward";
OPTVAL_STRAFING = "Strafing";
OPTVAL_MOVINGUPDOWN = "Moving Up/Down";
OPTVAL_INVERTED = "Inverted";
OPTVAL_NOTINVERTED = "Not Inverted";
OPTVAL_ORIGINAL = "Original";
OPTVAL_OPTIMIZED = "Optimized";
OPTVAL_PARTICLES = "Particles";
OPTVAL_SPRITES = "Sprites";
OPTVAL_SPRITESPARTICLES = "Sprites & Particles";
OPTVAL_MELT = "Melt";
OPTVAL_BURN = "Burn";
OPTVAL_CROSSFADE = "Crossfade";
OPTVAL_ONLYMODIFIED = "Only modified";
OPTVAL_SMOOTH = "Smooth";
OPTVAL_TRANSLUCENT = "Translucent";
OPTVAL_FUZZ = "Fuzz";
OPTVAL_SHADOW = "Shadow";
OPTVAL_ITEMS = "Items";
OPTVAL_WEAPONS = "Weapons";
OPTVAL_BOTH = "Both";
OPTVAL_ZDOOM = "ZDoom";
OPTVAL_STRIFE = "Strife";
OPTVAL_PLAYER = "Player";
OPTVAL_MAP = "Map";
OPTVAL_SCALETO640X400 = "Scale to 640x400";
OPTVAL_PIXELDOUBLE = "Pixel double";
OPTVAL_CURRENTWEAPON = "Current weapon";
OPTVAL_AVAILABLEWEAPONS = "Available weapons";
OPTVAL_ALLWEAPONS = "All weapons";
OPTVAL_LEVELMILLISECONDS = "Level, milliseconds";
OPTVAL_LEVELSECONDS = "Level, seconds";
OPTVAL_LEVEL = "Level";
OPTVAL_HUBSECONDS = "Hub, seconds";
OPTVAL_HUB = "Hub";
OPTVAL_TOTALSECONDS = "Total, seconds";
OPTVAL_TOTAL = "Total";
OPTVAL_SYSTEMSECONDS = "System, seconds";
OPTVAL_SYSTEM = "System";
OPTVAL_NETGAMESONLY = "Netgames only";
OPTVAL_ALWAYS = "Always";
OPTVAL_SCRIPTSONLY = "Scripts Only";
OPTVAL_NEVER = "Never";
OPTVAL_ALL = "All";
OPTVAL_ONLYLASTONE = "Only last one";
OPTVAL_CUSTOM = "Custom";
OPTVAL_TRADITIONALDOOM = "Traditional Doom";
OPTVAL_TRADITIONALSTRIFE = "Traditional Strife";
OPTVAL_TRADITIONALRAVEN = "Traditional Raven";
OPTVAL_ONLYWHENFOUND = "Only when found";
OPTVAL_ONFOROVERLAYONLY = "On for overlay only";
OPTVAL_OVERLAYNORMAL = "Overlay+Normal";
OPTVAL_OVERLAYONLY = "Overlay Only";
OPTVAL_NOTFORHUBS = "Not for hubs";
OPTVAL_FRONT = "Front";
OPTVAL_ANIMATED = "Animated";
OPTVAL_ROTATED = "Rotated";
OPTVAL_MAPDEFINEDCOLORSONLY = "Map defined colors only";
OPTVAL_DOUBLE = "Double";
OPTVAL_ITEMPICKUP = "Item Pickup";
OPTVAL_OBITUARIES = "Obituaries";
OPTVAL_CRITICALMESSAGES = "Critical Messages";
OPTVAL_NEVERFRIENDS = "Never friends";
OPTVAL_ONLYMONSTERS = "Only monsters";
OPTVAL_HEXEN = "Hexen";
OPTVAL_OLD = "Old";
OPTVAL_DEFAULT = "Default";
OPTVAL_DOOM = "Doom";
OPTVAL_DOOMSTRICT = "Doom (strict)";
OPTVAL_BOOM = "Boom";
OPTVAL_BOOMSTRICT = "Boom (strict)";
OPTVAL_MBF = "MBF";
OPTVAL_ZDOOM2063 = "ZDoom 2.0.63";
OPTVAL_4000HZ = "4000 Hz";
OPTVAL_8000HZ = "8000 Hz";
OPTVAL_11025HZ = "11025 Hz";
OPTVAL_22050HZ = "22050 Hz";
OPTVAL_32000HZ = "32000 Hz";
OPTVAL_44100HZ = "44100 Hz";
OPTVAL_48000HZ = "48000 Hz";
OPTVAL_64SAMPLES = "64 samples";
OPTVAL_128SAMPLES = "128 samples";
OPTVAL_256SAMPLES = "256 samples";
OPTVAL_512SAMPLES = "512 samples";
OPTVAL_1024SAMPLES = "1024 samples";
OPTVAL_2048SAMPLES = "2048 samples";
OPTVAL_4096SAMPLES = "4096 samples";
OPTVAL_UNLIMITED = "Unlimited";
OPTVAL_256K = "256K";
OPTVAL_512K = "512K";
OPTVAL_768K = "768K";
OPTVAL_1024K = "1024K";
OPTVAL_MAMEOPL2 = "MAME OPL2";
OPTVAL_DOSBOXOPL3 = "DOSBox OPL3";
OPTVAL_JAVAOPL3 = "Java OPL3";
OPTVAL_NUKEDOPL3 = "Nuked OPL3";
OPTVAL_SOUNDSYSTEM = "Sound System";
OPTVAL_FOO_DUMB = "foo_dumb";
OPTVAL_ALIASING = "Aliasing";
OPTVAL_LINEAR = "Linear";
OPTVAL_CUBIC = "Cubic";
OPTVAL_BLEP = "Band-limited step"
OPTVAL_LINEARSLOW = "Linear (Slower)";
OPTVAL_BLAM = "Band-limited linear";
OPTVAL_CUBICSLOW = "Cubic (Slower)";
OPTVAL_SINC = "Sinc";
OPTVAL_NOTEONOFFONLY = "Note on/off only";
OPTVAL_FULLRAMPING = "Full ramping";
OPTVAL_ALLUNACKNOWLEDGED = "All unacknowledged";
// Colors
C_BRICK = "\cabrick";
C_TAN = "\cbtan";
C_GRAY = "\ccgray";
C_GREEN = "\cdgreen";
C_BROWN = "\cebrown";
C_GOLD = "\cfgold";
C_RED = "\cgred";
C_BLUE = "\chblue";
C_ORANGE = "\ciorange";
C_WHITE = "\cjwhite";
C_YELLOW = "\ckyellow";
C_DEFAULT = "\cldefault";
C_BLACK = "\cmblack";
C_LIGHTBLUE = "\cnlight blue";
C_CREAM = "\cocream";
C_OLIVE = "\cpolive";
C_DARKGREEN = "\cqdark green";
C_DARKRED = "\crdark red";
C_DARKBROWN = "\csdark brown";
C_PURPLE = "\ctpurple";
C_DARKGRAY = "\cudark gray";
C_CYAN = "\cvcyan";
// Option Strings
OPTSTR_SIMPLEARROW = "Simple arrow";
OPTSTR_HERETIC = "Heretic";
OPTSTR_CHEX = "Chex";
OPTSTR_SYSTEMCURSOR = "System cursor";
OPTSTR_DIRECTSOUND = "DirectSound";
OPTSTR_WASAPI = "Vista WASAPI";
OPTSTR_ASIO = "ASIO";
OPTSTR_WAVEOUT = "WaveOut";
OPTSTR_NOSOUND = "No Sound";
OPTSTR_OSS = "OSS";
OPTSTR_ALSA = "ALSA";
OPTSTR_SDL = "SDL";
OPTSTR_ESD = "ESD";
OPTSTR_PULSEAUDIO = "PulseAudio";
OPTSTR_COREAUDIO = "Core Audio";
OPTSTR_PCM8BIT = "8-bit";
OPTSTR_PCM16BIT = "16-bit";
OPTSTR_PCM24BIT = "24-bit";
OPTSTR_PCM32BIT = "32-bit";
OPTSTR_PCMFLOAT = "32-bit float";
OPTSTR_AUTO = "Auto";
OPTSTR_MONO = "Mono";
OPTSTR_STEREO = "Stereo";
OPTSTR_PROLOGIC = "Dolby Prologic Decoder";
OPTSTR_QUAD = "Quad";
OPTSTR_SURROUND = "5 speakers";
OPTSTR_5POINT1 = "5.1 speakers";
OPTSTR_7POINT1 = "7.1 speakers";
OPTSTR_NOINTERPOLATION = "No interpolation";
OPTSTR_SPLINE = "Spline";
OPTSTR_FMOD = "FMOD Ex";
OPTSTR_OPENAL = "OpenAL";
SAFEMESSAGE = "Do you really want to do this?";
MNU_COLORPICKER = "SELECT COLOR";
WI_FINISHED = "finished"; WI_FINISHED = "finished";
WI_ENTERING = "Now entering:"; WI_ENTERING = "Now entering:";

File diff suppressed because it is too large Load diff