mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-01-18 23:21:41 +00:00
Merge branch 'master' into Texture_Cleanup
# Conflicts: # src/textures/hires/hqresize.cpp
This commit is contained in:
commit
ab624c8c5a
16 changed files with 235 additions and 178 deletions
|
@ -60,6 +60,8 @@ EXTERN_CVAR (Color, am_fdwallcolor)
|
||||||
EXTERN_CVAR (Color, am_cdwallcolor)
|
EXTERN_CVAR (Color, am_cdwallcolor)
|
||||||
EXTERN_CVAR (Float, spc_amp)
|
EXTERN_CVAR (Float, spc_amp)
|
||||||
EXTERN_CVAR (Bool, wi_percents)
|
EXTERN_CVAR (Bool, wi_percents)
|
||||||
|
EXTERN_CVAR (Int, gl_texture_hqresizemode)
|
||||||
|
EXTERN_CVAR (Int, gl_texture_hqresizemult)
|
||||||
|
|
||||||
FGameConfigFile::FGameConfigFile ()
|
FGameConfigFile::FGameConfigFile ()
|
||||||
{
|
{
|
||||||
|
@ -395,6 +397,93 @@ void FGameConfigFile::DoGlobalSetup ()
|
||||||
FBaseCVar *var = FindCVar("snd_hrtf", NULL);
|
FBaseCVar *var = FindCVar("snd_hrtf", NULL);
|
||||||
if (var != NULL) var->ResetToDefault();
|
if (var != NULL) var->ResetToDefault();
|
||||||
}
|
}
|
||||||
|
if (last < 216)
|
||||||
|
{
|
||||||
|
FBaseCVar *var = FindCVar("gl_texture_hqresize", NULL);
|
||||||
|
if (var != NULL)
|
||||||
|
{
|
||||||
|
auto v = var->GetGenericRep(CVAR_Int);
|
||||||
|
switch (v.Int)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
gl_texture_hqresizemode = 1; gl_texture_hqresizemult = 2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
gl_texture_hqresizemode = 1; gl_texture_hqresizemult = 3;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
gl_texture_hqresizemode = 1; gl_texture_hqresizemult = 4;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
gl_texture_hqresizemode = 2; gl_texture_hqresizemult = 2;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
gl_texture_hqresizemode = 2; gl_texture_hqresizemult = 3;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
gl_texture_hqresizemode = 2; gl_texture_hqresizemult = 4;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
gl_texture_hqresizemode = 3; gl_texture_hqresizemult = 2;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
gl_texture_hqresizemode = 3; gl_texture_hqresizemult = 3;
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
gl_texture_hqresizemode = 3; gl_texture_hqresizemult = 4;
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 2;
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 3;
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 4;
|
||||||
|
break;
|
||||||
|
case 18:
|
||||||
|
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 5;
|
||||||
|
break;
|
||||||
|
case 19:
|
||||||
|
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 6;
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 2;
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 3;
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 4;
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 5;
|
||||||
|
break;
|
||||||
|
case 17:
|
||||||
|
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 6;
|
||||||
|
break;
|
||||||
|
case 20:
|
||||||
|
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 2;
|
||||||
|
break;
|
||||||
|
case 21:
|
||||||
|
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 3;
|
||||||
|
break;
|
||||||
|
case 22:
|
||||||
|
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 4;
|
||||||
|
break;
|
||||||
|
case 23:
|
||||||
|
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 5;
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 6;
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
gl_texture_hqresizemode = 0; gl_texture_hqresizemult = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,9 +32,11 @@
|
||||||
*/
|
*/
|
||||||
// Workaround for GCC Objective-C++ with C++ exceptions bug.
|
// Workaround for GCC Objective-C++ with C++ exceptions bug.
|
||||||
|
|
||||||
#include "doomerrors.h"
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "doomerrors.h"
|
||||||
|
#include "vm.h"
|
||||||
|
|
||||||
// Import some functions from i_main.mm
|
// Import some functions from i_main.mm
|
||||||
void call_terms();
|
void call_terms();
|
||||||
void Mac_I_FatalError(const char* const message);
|
void Mac_I_FatalError(const char* const message);
|
||||||
|
@ -50,10 +52,21 @@ void OriginalMainExcept(int argc, char** argv)
|
||||||
{
|
{
|
||||||
const char* const message = error.what();
|
const char* const message = error.what();
|
||||||
|
|
||||||
if (NULL != message)
|
if (strcmp(message, "NoRunExit"))
|
||||||
{
|
{
|
||||||
if (strcmp(message, "NoRunExit")) fprintf(stderr, "%s\n", message);
|
if (CVMAbortException::stacktrace.IsNotEmpty())
|
||||||
Mac_I_FatalError(message);
|
{
|
||||||
|
Printf("%s", CVMAbortException::stacktrace.GetChars());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (batchrun)
|
||||||
|
{
|
||||||
|
Printf("%s\n", message);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Mac_I_FatalError(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
#include "r_utility.h"
|
#include "r_utility.h"
|
||||||
#include "doomstat.h"
|
#include "doomstat.h"
|
||||||
|
#include "vm.h"
|
||||||
|
|
||||||
// MACROS ------------------------------------------------------------------
|
// MACROS ------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -261,16 +262,31 @@ int main (int argc, char **argv)
|
||||||
catch (std::exception &error)
|
catch (std::exception &error)
|
||||||
{
|
{
|
||||||
I_ShutdownJoysticks();
|
I_ShutdownJoysticks();
|
||||||
if (error.what () && strcmp(error.what(), "NoRunExit"))
|
|
||||||
fprintf (stderr, "%s\n", error.what ());
|
|
||||||
|
|
||||||
|
const char *const message = error.what();
|
||||||
|
|
||||||
|
if (strcmp(message, "NoRunExit"))
|
||||||
|
{
|
||||||
|
if (CVMAbortException::stacktrace.IsNotEmpty())
|
||||||
|
{
|
||||||
|
Printf("%s", CVMAbortException::stacktrace.GetChars());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (batchrun)
|
||||||
|
{
|
||||||
|
Printf("%s\n", message);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
Mac_I_FatalError(error.what());
|
Mac_I_FatalError(message);
|
||||||
#endif // __APPLE__
|
#endif // __APPLE__
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
Linux_I_FatalError(error.what());
|
Linux_I_FatalError(message);
|
||||||
#endif // __linux__
|
#endif // __linux__
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
exit (-1);
|
exit (-1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
void R_ShowCurrentScaling();
|
void R_ShowCurrentScaling();
|
||||||
CUSTOM_CVAR(Float, vid_scalefactor, 1.0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CUSTOM_CVAR(Float, vid_scalefactor, 1.0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
||||||
{
|
{
|
||||||
setsizeneeded = true;
|
setsizeneeded = true;
|
||||||
if (self < 0.05 || self > 2.0)
|
if (self < 0.05 || self > 2.0)
|
||||||
|
|
|
@ -7600,7 +7600,7 @@ FxExpression *FxFunctionCall::Resolve(FCompileContext& ctx)
|
||||||
|
|
||||||
if (ctx.Class != nullptr)
|
if (ctx.Class != nullptr)
|
||||||
{
|
{
|
||||||
PFunction *afd = FindClassMemberFunction(ctx.Class, ctx.Class, MethodName, ScriptPosition, &error);
|
PFunction *afd = FindClassMemberFunction(ctx.Class, ctx.Class, MethodName, ScriptPosition, &error, ctx.Version);
|
||||||
|
|
||||||
if (afd != nullptr)
|
if (afd != nullptr)
|
||||||
{
|
{
|
||||||
|
@ -8002,7 +8002,7 @@ FxExpression *FxMemberFunctionCall::Resolve(FCompileContext& ctx)
|
||||||
if (novirtual)
|
if (novirtual)
|
||||||
{
|
{
|
||||||
bool error;
|
bool error;
|
||||||
PFunction *afd = FindClassMemberFunction(ccls, ctx.Class, MethodName, ScriptPosition, &error);
|
PFunction *afd = FindClassMemberFunction(ccls, ctx.Class, MethodName, ScriptPosition, &error, ctx.Version);
|
||||||
if ((nullptr != afd) && (afd->Variants[0].Flags & VARF_Method) && (afd->Variants[0].Flags & VARF_Virtual))
|
if ((nullptr != afd) && (afd->Variants[0].Flags & VARF_Method) && (afd->Variants[0].Flags & VARF_Virtual))
|
||||||
{
|
{
|
||||||
staticonly = false;
|
staticonly = false;
|
||||||
|
@ -8309,7 +8309,7 @@ FxExpression *FxMemberFunctionCall::Resolve(FCompileContext& ctx)
|
||||||
|
|
||||||
isresolved:
|
isresolved:
|
||||||
bool error = false;
|
bool error = false;
|
||||||
PFunction *afd = FindClassMemberFunction(cls, ctx.Class, MethodName, ScriptPosition, &error);
|
PFunction *afd = FindClassMemberFunction(cls, ctx.Class, MethodName, ScriptPosition, &error, ctx.Version);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
delete this;
|
delete this;
|
||||||
|
|
|
@ -236,7 +236,7 @@ PFunction *CreateAnonymousFunction(PContainerType *containingclass, PType *retur
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
PFunction *FindClassMemberFunction(PContainerType *selfcls, PContainerType *funccls, FName name, FScriptPosition &sc, bool *error)
|
PFunction *FindClassMemberFunction(PContainerType *selfcls, PContainerType *funccls, FName name, FScriptPosition &sc, bool *error, const VersionInfo &version)
|
||||||
{
|
{
|
||||||
// Skip ACS_NamedExecuteWithResult. Anything calling this should use the builtin instead.
|
// Skip ACS_NamedExecuteWithResult. Anything calling this should use the builtin instead.
|
||||||
if (name == NAME_ACS_NamedExecuteWithResult) return nullptr;
|
if (name == NAME_ACS_NamedExecuteWithResult) return nullptr;
|
||||||
|
@ -263,7 +263,7 @@ PFunction *FindClassMemberFunction(PContainerType *selfcls, PContainerType *func
|
||||||
{
|
{
|
||||||
sc.Message(MSG_ERROR, "%s is declared protected and not accessible", symbol->SymbolName.GetChars());
|
sc.Message(MSG_ERROR, "%s is declared protected and not accessible", symbol->SymbolName.GetChars());
|
||||||
}
|
}
|
||||||
else if (funcsym->Variants[0].Flags & VARF_Deprecated)
|
else if ((funcsym->Variants[0].Flags & VARF_Deprecated) && funcsym->mVersion <= version)
|
||||||
{
|
{
|
||||||
sc.Message(MSG_WARNING, "Call to deprecated function %s", symbol->SymbolName.GetChars());
|
sc.Message(MSG_WARNING, "Call to deprecated function %s", symbol->SymbolName.GetChars());
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,7 +204,7 @@ class FxVMFunctionCall *ParseAction(FScanner &sc, FState state, FString statestr
|
||||||
FName CheckCastKludges(FName in);
|
FName CheckCastKludges(FName in);
|
||||||
void SetImplicitArgs(TArray<PType *> *args, TArray<uint32_t> *argflags, TArray<FName> *argnames, PContainerType *cls, uint32_t funcflags, int useflags);
|
void SetImplicitArgs(TArray<PType *> *args, TArray<uint32_t> *argflags, TArray<FName> *argnames, PContainerType *cls, uint32_t funcflags, int useflags);
|
||||||
PFunction *CreateAnonymousFunction(PContainerType *containingclass, PType *returntype, int flags);
|
PFunction *CreateAnonymousFunction(PContainerType *containingclass, PType *returntype, int flags);
|
||||||
PFunction *FindClassMemberFunction(PContainerType *cls, PContainerType *funccls, FName name, FScriptPosition &sc, bool *error);
|
PFunction *FindClassMemberFunction(PContainerType *cls, PContainerType *funccls, FName name, FScriptPosition &sc, bool *error, const VersionInfo &version);
|
||||||
void CreateDamageFunction(PNamespace *ns, const VersionInfo &ver, PClassActor *info, AActor *defaults, FxExpression *id, bool fromDecorate, int lumpnum);
|
void CreateDamageFunction(PNamespace *ns, const VersionInfo &ver, PClassActor *info, AActor *defaults, FxExpression *id, bool fromDecorate, int lumpnum);
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
|
@ -268,7 +268,7 @@ void JitCompiler::SetupSimpleFrame()
|
||||||
for (unsigned int i = 0; i < sfunc->Proto->ArgumentTypes.Size(); i++)
|
for (unsigned int i = 0; i < sfunc->Proto->ArgumentTypes.Size(); i++)
|
||||||
{
|
{
|
||||||
const PType *type = sfunc->Proto->ArgumentTypes[i];
|
const PType *type = sfunc->Proto->ArgumentTypes[i];
|
||||||
if (sfunc->ArgFlags[i] & (VARF_Out | VARF_Ref))
|
if (sfunc->ArgFlags.Size() && sfunc->ArgFlags[i] & (VARF_Out | VARF_Ref))
|
||||||
{
|
{
|
||||||
cc.mov(regA[rega++], x86::ptr(args, argsPos++ * sizeof(VMValue) + offsetof(VMValue, a)));
|
cc.mov(regA[rega++], x86::ptr(args, argsPos++ * sizeof(VMValue) + offsetof(VMValue, a)));
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,18 +45,22 @@
|
||||||
#include "parallel_for.h"
|
#include "parallel_for.h"
|
||||||
#include "hwrenderer/textures/hw_material.h"
|
#include "hwrenderer/textures/hw_material.h"
|
||||||
|
|
||||||
CUSTOM_CVAR(Int, gl_texture_hqresize, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
EXTERN_CVAR(Int, gl_texture_hqresizemult)
|
||||||
|
CUSTOM_CVAR(Int, gl_texture_hqresizemode, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
||||||
{
|
{
|
||||||
if (self < 0 || self > 24)
|
if (self < 0 || self > 6)
|
||||||
{
|
|
||||||
self = 0;
|
self = 0;
|
||||||
}
|
if ((gl_texture_hqresizemult > 4) && (self < 4) && (self > 0))
|
||||||
#ifndef HAVE_MMX
|
gl_texture_hqresizemult = 4;
|
||||||
// This is to allow the menu option to work properly so that these filters can be skipped while cycling through them.
|
FMaterial::FlushAll();
|
||||||
if (self == 7) self = 10;
|
}
|
||||||
if (self == 8) self = 10;
|
|
||||||
if (self == 9) self = 6;
|
CUSTOM_CVAR(Int, gl_texture_hqresizemult, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
||||||
#endif
|
{
|
||||||
|
if (self < 1 || self > 6)
|
||||||
|
self = 1;
|
||||||
|
if ((self > 4) && (gl_texture_hqresizemode < 4) && (gl_texture_hqresizemode > 0))
|
||||||
|
self = 4;
|
||||||
FMaterial::FlushAll();
|
FMaterial::FlushAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,62 +389,58 @@ void FTexture::CreateUpsampledTextureBuffer(FTextureBuffer &texbuffer, bool hasA
|
||||||
|
|
||||||
if (texbuffer.mBuffer)
|
if (texbuffer.mBuffer)
|
||||||
{
|
{
|
||||||
int type = gl_texture_hqresize;
|
int type = gl_texture_hqresizemode;
|
||||||
|
int mult = gl_texture_hqresizemult;
|
||||||
#ifdef HAVE_MMX
|
#ifdef HAVE_MMX
|
||||||
// hqNx MMX does not preserve the alpha channel so fall back to C-version for such textures
|
// hqNx MMX does not preserve the alpha channel so fall back to C-version for such textures
|
||||||
if (hasAlpha && type > 6 && type <= 9)
|
if (hasAlpha && type == 3)
|
||||||
{
|
{
|
||||||
type -= 3;
|
type = 2;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (mult < 2)
|
||||||
|
type = 0;
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
return scaleNxHelper( &scale2x, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
switch(mult)
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
return scaleNxHelper( &scale2x, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
|
case 3:
|
||||||
|
return scaleNxHelper( &scale3x, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
|
default:
|
||||||
|
return scaleNxHelper( &scale4x, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
|
}
|
||||||
case 2:
|
case 2:
|
||||||
return scaleNxHelper( &scale3x, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
switch(mult)
|
||||||
case 3:
|
{
|
||||||
return scaleNxHelper( &scale4x, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
case 2:
|
||||||
case 4:
|
return hqNxHelper( &hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
return hqNxHelper( &hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
case 3:
|
||||||
case 5:
|
return hqNxHelper( &hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
return hqNxHelper( &hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
default:
|
||||||
case 6:
|
return hqNxHelper( &hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
return hqNxHelper( &hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
}
|
||||||
#ifdef HAVE_MMX
|
#ifdef HAVE_MMX
|
||||||
case 7:
|
case 3:
|
||||||
return hqNxAsmHelper( &HQnX_asm::hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
switch(mult)
|
||||||
case 8:
|
{
|
||||||
return hqNxAsmHelper( &HQnX_asm::hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
case 2:
|
||||||
case 9:
|
return hqNxAsmHelper( &HQnX_asm::hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
return hqNxAsmHelper( &HQnX_asm::hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
case 3:
|
||||||
|
return hqNxAsmHelper( &HQnX_asm::hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
|
default:
|
||||||
|
return hqNxAsmHelper( &HQnX_asm::hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
case 10:
|
case 4:
|
||||||
case 11:
|
return xbrzHelper(xbrz::scale, mult, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
case 12:
|
case 5:
|
||||||
return xbrzHelper(xbrz::scale, type - 8, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
return xbrzHelper(xbrzOldScale, mult, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
|
case 6:
|
||||||
case 13:
|
return normalNxHelper( &normalNx, mult, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
case 14:
|
|
||||||
case 15:
|
|
||||||
case 16:
|
|
||||||
case 17:
|
|
||||||
return xbrzHelper(xbrzOldScale, type - 11, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
|
||||||
|
|
||||||
case 18:
|
|
||||||
case 19:
|
|
||||||
return xbrzHelper(xbrz::scale, type - 13, inputBuffer, inWidth, inHeight, outWidth, outHeight);
|
|
||||||
case 20:
|
|
||||||
return normalNxHelper( &normalNx, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
|
||||||
case 21:
|
|
||||||
return normalNxHelper( &normalNx, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
|
||||||
case 22:
|
|
||||||
return normalNxHelper( &normalNx, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
|
||||||
case 23:
|
|
||||||
return normalNxHelper( &normalNx, 5, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
|
||||||
case 24:
|
|
||||||
return normalNxHelper( &normalNx, 6, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return inputBuffer;
|
return inputBuffer;
|
||||||
|
|
|
@ -68,7 +68,7 @@ const char *GetVersionString();
|
||||||
// Version stored in the ini's [LastRun] section.
|
// Version stored in the ini's [LastRun] section.
|
||||||
// Bump it if you made some configuration change that you want to
|
// Bump it if you made some configuration change that you want to
|
||||||
// be able to migrate in FGameConfigFile::DoGlobalSetup().
|
// be able to migrate in FGameConfigFile::DoGlobalSetup().
|
||||||
#define LASTRUNVERSION "215"
|
#define LASTRUNVERSION "216"
|
||||||
|
|
||||||
// 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.
|
||||||
|
|
|
@ -71,6 +71,7 @@
|
||||||
#include "r_utility.h"
|
#include "r_utility.h"
|
||||||
#include "g_levellocals.h"
|
#include "g_levellocals.h"
|
||||||
#include "s_sound.h"
|
#include "s_sound.h"
|
||||||
|
#include "vm.h"
|
||||||
|
|
||||||
#include "stats.h"
|
#include "stats.h"
|
||||||
#include "st_start.h"
|
#include "st_start.h"
|
||||||
|
@ -1057,6 +1058,11 @@ void DoMain (HINSTANCE hInstance)
|
||||||
auto msg = error.what();
|
auto msg = error.what();
|
||||||
if (strcmp(msg, "NoRunExit"))
|
if (strcmp(msg, "NoRunExit"))
|
||||||
{
|
{
|
||||||
|
if (CVMAbortException::stacktrace.IsNotEmpty())
|
||||||
|
{
|
||||||
|
Printf("%s", CVMAbortException::stacktrace.GetChars());
|
||||||
|
}
|
||||||
|
|
||||||
if (!batchrun)
|
if (!batchrun)
|
||||||
{
|
{
|
||||||
ShowErrorPane(msg);
|
ShowErrorPane(msg);
|
||||||
|
|
|
@ -175,6 +175,7 @@ AF40D0E49BD1B76D4B1AADD8212ADC46 // MAP01 (the wad that shall not be named =P)
|
||||||
D5F64E02679A81B82006AF34A6A8EAC3 // plutonia.wad map32
|
D5F64E02679A81B82006AF34A6A8EAC3 // plutonia.wad map32
|
||||||
BA4860C7A2F5D705DB32A1A38DB77EC4 // pl2.wad map10
|
BA4860C7A2F5D705DB32A1A38DB77EC4 // pl2.wad map10
|
||||||
EDA5CE7C462BD171BF8110AC56B67857 // pl2.wad map11
|
EDA5CE7C462BD171BF8110AC56B67857 // pl2.wad map11
|
||||||
|
A9A9A728E689266939C1B71655F320CA // pl2.wad map25
|
||||||
{
|
{
|
||||||
rebuildnodes
|
rebuildnodes
|
||||||
}
|
}
|
||||||
|
|
|
@ -2783,7 +2783,8 @@ GLTEXMNU_ANISOTROPIC = "Anisotropic filter";
|
||||||
GLTEXMNU_TEXFORMAT = "Texture Format";
|
GLTEXMNU_TEXFORMAT = "Texture Format";
|
||||||
GLTEXMNU_ENABLEHIRES = "Enable hires textures";
|
GLTEXMNU_ENABLEHIRES = "Enable hires textures";
|
||||||
GLTEXMNU_HQRESIZE = "High Quality Resize mode";
|
GLTEXMNU_HQRESIZE = "High Quality Resize mode";
|
||||||
GLTEXMNU_HQRESIZEWARN = "This mode requires %d times more video memory";
|
GLTEXMNU_HQRESIZEMULT = "High Quality Resize multiplier";
|
||||||
|
GLTEXMNU_HQRESIZEWARN = "This mode requires %d times more video memory";
|
||||||
GLTEXMNU_RESIZETEX = "Resize textures";
|
GLTEXMNU_RESIZETEX = "Resize textures";
|
||||||
GLTEXMNU_RESIZESPR = "Resize sprites";
|
GLTEXMNU_RESIZESPR = "Resize sprites";
|
||||||
GLTEXMNU_RESIZEFNT = "Resize fonts";
|
GLTEXMNU_RESIZEFNT = "Resize fonts";
|
||||||
|
@ -2881,30 +2882,12 @@ OPTVAL_YAXIS = "Y Axis";
|
||||||
OPTVAL_XYAXIS = "X/Y Axis";
|
OPTVAL_XYAXIS = "X/Y Axis";
|
||||||
OPTVAL_SQUARE = "Square";
|
OPTVAL_SQUARE = "Square";
|
||||||
OPTVAL_ROUND = "Round";
|
OPTVAL_ROUND = "Round";
|
||||||
OPTVAL_SCALE2X = "Scale2x";
|
OPTVAL_SCALENX = "ScaleNx";
|
||||||
OPTVAL_SCALE3X = "Scale3x";
|
OPTVAL_NORMALNX = "NormalNx";
|
||||||
OPTVAL_SCALE4X = "Scale4x";
|
OPTVAL_HQNX = "hqNx";
|
||||||
OPTVAL_NORMAL2X = "Normal2x";
|
OPTVAL_HQNXMMX = "hqNx MMX";
|
||||||
OPTVAL_NORMAL3X = "Normal3x";
|
OPTVAL_NXBRZ = "xBRZ";
|
||||||
OPTVAL_NORMAL4X = "Normal4x";
|
OPTVAL_OLD_NXBRZ = "Old xBRZ";
|
||||||
OPTVAL_NORMAL5X = "Normal5x";
|
|
||||||
OPTVAL_NORMAL6X = "Normal6x";
|
|
||||||
OPTVAL_HQ2X = "hq2x";
|
|
||||||
OPTVAL_HQ3X = "hq3x";
|
|
||||||
OPTVAL_HQ4X = "hq4x";
|
|
||||||
OPTVAL_HQ2XMMX = "hq2x MMX";
|
|
||||||
OPTVAL_HQ3XMMX = "hq3x MMX";
|
|
||||||
OPTVAL_HQ4XMMX = "hq4x MMX";
|
|
||||||
OPTVAL_2XBRZ = "2xBRZ";
|
|
||||||
OPTVAL_3XBRZ = "3xBRZ";
|
|
||||||
OPTVAL_4XBRZ = "4xBRZ";
|
|
||||||
OPTVAL_5XBRZ = "5xBRZ";
|
|
||||||
OPTVAL_6XBRZ = "6xBRZ";
|
|
||||||
OPTVAL_OLD_2XBRZ = "Old 2xBRZ";
|
|
||||||
OPTVAL_OLD_3XBRZ = "Old 3xBRZ";
|
|
||||||
OPTVAL_OLD_4XBRZ = "Old 4xBRZ";
|
|
||||||
OPTVAL_OLD_5XBRZ = "Old 5xBRZ";
|
|
||||||
OPTVAL_OLD_6XBRZ = "Old 6xBRZ";
|
|
||||||
OPTVAL_RADIAL = "Radial";
|
OPTVAL_RADIAL = "Radial";
|
||||||
OPTVAL_PIXELFUZZ = "Pixel fuzz";
|
OPTVAL_PIXELFUZZ = "Pixel fuzz";
|
||||||
OPTVAL_SMOOTHFUZZ = "Smooth fuzz";
|
OPTVAL_SMOOTHFUZZ = "Smooth fuzz";
|
||||||
|
|
|
@ -2151,51 +2151,32 @@ OptionValue "Particles"
|
||||||
OptionValue "HqResizeModes"
|
OptionValue "HqResizeModes"
|
||||||
{
|
{
|
||||||
0, "$OPTVAL_OFF"
|
0, "$OPTVAL_OFF"
|
||||||
1, "$OPTVAL_SCALE2X"
|
1, "$OPTVAL_SCALENX"
|
||||||
2, "$OPTVAL_SCALE3X"
|
2, "$OPTVAL_HQNX"
|
||||||
3, "$OPTVAL_SCALE4X"
|
3, "$OPTVAL_HQNXMMX"
|
||||||
4, "$OPTVAL_HQ2X"
|
4, "$OPTVAL_NXBRZ"
|
||||||
5, "$OPTVAL_HQ3X"
|
5, "$OPTVAL_OLD_NXBRZ"
|
||||||
6, "$OPTVAL_HQ4X"
|
6, "$OPTVAL_NORMALNX"
|
||||||
7, "$OPTVAL_HQ2XMMX"
|
}
|
||||||
8, "$OPTVAL_HQ3XMMX"
|
|
||||||
9, "$OPTVAL_HQ4XMMX"
|
OptionValue "HqResizeMultipliers"
|
||||||
10, "$OPTVAL_2XBRZ"
|
{
|
||||||
11, "$OPTVAL_3XBRZ"
|
1, "$OPTVAL_OFF"
|
||||||
12, "$OPTVAL_4XBRZ"
|
2, "2x"
|
||||||
18, "$OPTVAL_5XBRZ"
|
3, "3x"
|
||||||
19, "$OPTVAL_6XBRZ"
|
4, "4x"
|
||||||
13, "$OPTVAL_OLD_2XBRZ"
|
5, "5x"
|
||||||
14, "$OPTVAL_OLD_3XBRZ"
|
6, "6x"
|
||||||
15, "$OPTVAL_OLD_4XBRZ"
|
|
||||||
16, "$OPTVAL_OLD_5XBRZ"
|
|
||||||
17, "$OPTVAL_OLD_6XBRZ"
|
|
||||||
20, "$OPTVAL_NORMAL2X"
|
|
||||||
21, "$OPTVAL_NORMAL3X"
|
|
||||||
22, "$OPTVAL_NORMAL4X"
|
|
||||||
23, "$OPTVAL_NORMAL5X"
|
|
||||||
24, "$OPTVAL_NORMAL6X"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OptionValue "HqResizeModesNoMMX"
|
OptionValue "HqResizeModesNoMMX"
|
||||||
{
|
{
|
||||||
0, "$OPTVAL_OFF"
|
0, "$OPTVAL_OFF"
|
||||||
1, "$OPTVAL_SCALE2X"
|
1, "$OPTVAL_SCALENX"
|
||||||
2, "$OPTVAL_SCALE3X"
|
2, "$OPTVAL_HQNX"
|
||||||
3, "$OPTVAL_SCALE4X"
|
4, "$OPTVAL_NXBRZ"
|
||||||
4, "$OPTVAL_HQ2X"
|
5, "$OPTVAL_OLD_NXBRZ"
|
||||||
5, "$OPTVAL_HQ3X"
|
6, "$OPTVAL_NORMALNX"
|
||||||
6, "$OPTVAL_HQ4X"
|
|
||||||
10, "$OPTVAL_2XBRZ"
|
|
||||||
11, "$OPTVAL_3XBRZ"
|
|
||||||
12, "$OPTVAL_4XBRZ"
|
|
||||||
18, "$OPTVAL_5XBRZ"
|
|
||||||
19, "$OPTVAL_6XBRZ"
|
|
||||||
13, "$OPTVAL_OLD_2XBRZ"
|
|
||||||
14, "$OPTVAL_OLD_3XBRZ"
|
|
||||||
15, "$OPTVAL_OLD_4XBRZ"
|
|
||||||
16, "$OPTVAL_OLD_5XBRZ"
|
|
||||||
17, "$OPTVAL_OLD_6XBRZ"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OptionValue "FogMode"
|
OptionValue "FogMode"
|
||||||
|
@ -2262,12 +2243,13 @@ OptionMenu "GLTextureGLOptions" protected
|
||||||
|
|
||||||
ifOption(MMX)
|
ifOption(MMX)
|
||||||
{
|
{
|
||||||
Option "$GLTEXMNU_HQRESIZE", gl_texture_hqresize, "HqResizeModes"
|
Option "$GLTEXMNU_HQRESIZE", gl_texture_hqresizemode, "HqResizeModes"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Option "$GLTEXMNU_HQRESIZE", gl_texture_hqresize, "HqResizeModesNoMMX"
|
Option "$GLTEXMNU_HQRESIZE", gl_texture_hqresizemode, "HqResizeModesNoMMX"
|
||||||
}
|
}
|
||||||
|
Option "$GLTEXMNU_HQRESIZEMULT", gl_texture_hqresizemult, "HqResizeMultipliers"
|
||||||
StaticText "!HQRESIZE_WARNING!"
|
StaticText "!HQRESIZE_WARNING!"
|
||||||
|
|
||||||
Option "$GLTEXMNU_RESIZETEX", gl_texture_hqresize_textures, "OnOff"
|
Option "$GLTEXMNU_RESIZETEX", gl_texture_hqresize_textures, "OnOff"
|
||||||
|
|
|
@ -579,47 +579,9 @@ class GLTextureGLOptions : OptionMenu
|
||||||
{
|
{
|
||||||
string message;
|
string message;
|
||||||
|
|
||||||
if (gl_texture_hqresize > 0)
|
if (gl_texture_hqresizemult > 1 && gl_texture_hqresizemode > 0)
|
||||||
{
|
{
|
||||||
int multiplier;
|
int multiplier = gl_texture_hqresizemult * gl_texture_hqresizemult;
|
||||||
|
|
||||||
switch (gl_texture_hqresize)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
case 4:
|
|
||||||
case 7:
|
|
||||||
case 10:
|
|
||||||
case 13:
|
|
||||||
case 20:
|
|
||||||
multiplier = 4;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
case 5:
|
|
||||||
case 8:
|
|
||||||
case 11:
|
|
||||||
case 14:
|
|
||||||
case 21:
|
|
||||||
multiplier = 9;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
case 6:
|
|
||||||
case 9:
|
|
||||||
case 12:
|
|
||||||
case 15:
|
|
||||||
case 22:
|
|
||||||
multiplier = 16;
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
case 18:
|
|
||||||
case 23:
|
|
||||||
multiplier = 25;
|
|
||||||
break;
|
|
||||||
case 17:
|
|
||||||
case 19:
|
|
||||||
case 24:
|
|
||||||
multiplier = 36;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
string localized = StringTable.Localize("$GLTEXMNU_HQRESIZEWARN");
|
string localized = StringTable.Localize("$GLTEXMNU_HQRESIZEWARN");
|
||||||
message = String.Format(localized, multiplier);
|
message = String.Format(localized, multiplier);
|
||||||
|
|
|
@ -2431,6 +2431,11 @@ struct PlayerInfo native play // self is what internally is known as player_t
|
||||||
mo.DropWeapon();
|
mo.DropWeapon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deprecated("3.7") void BringUpWeapon()
|
||||||
|
{
|
||||||
|
if (mo) mo.BringUpWeapon();
|
||||||
|
}
|
||||||
|
|
||||||
bool IsTotallyFrozen()
|
bool IsTotallyFrozen()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue