diff --git a/DDrawCompat/Config/Config.cpp b/DDrawCompat/Config/Config.cpp index 97f244a..2f488be 100644 --- a/DDrawCompat/Config/Config.cpp +++ b/DDrawCompat/Config/Config.cpp @@ -12,6 +12,7 @@ namespace Config Settings::DisplayResolution displayResolution; Settings::RenderColorDepth renderColorDepth; Settings::ResolutionScale resolutionScale; + Settings::SpriteFilter spriteFilter; Settings::SpriteTexCoord spriteTexCoord; Settings::SupportedResolutions supportedResolutions; Settings::TextureFilter textureFilter; diff --git a/DDrawCompat/Config/Config.h b/DDrawCompat/Config/Config.h index c8fe33c..8c258e2 100644 --- a/DDrawCompat/Config/Config.h +++ b/DDrawCompat/Config/Config.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -30,6 +31,7 @@ namespace Config extern Settings::DisplayResolution displayResolution; extern Settings::RenderColorDepth renderColorDepth; extern Settings::ResolutionScale resolutionScale; + extern Settings::SpriteFilter spriteFilter; extern Settings::SpriteTexCoord spriteTexCoord; extern Settings::SupportedResolutions supportedResolutions; extern Settings::TextureFilter textureFilter; diff --git a/DDrawCompat/Config/Settings/SpriteFilter.cpp b/DDrawCompat/Config/Settings/SpriteFilter.cpp new file mode 100644 index 0000000..5e31246 --- /dev/null +++ b/DDrawCompat/Config/Settings/SpriteFilter.cpp @@ -0,0 +1,17 @@ +#include +#include + +namespace Config +{ + namespace Settings + { + SpriteFilter::SpriteFilter() + : MappedSetting("SpriteFilter", "app", { + {"app", D3DTEXF_NONE}, + {"point", D3DTEXF_POINT}, + {"linear", D3DTEXF_LINEAR} + }) + { + } + } +} diff --git a/DDrawCompat/Config/Settings/SpriteFilter.h b/DDrawCompat/Config/Settings/SpriteFilter.h new file mode 100644 index 0000000..f22383a --- /dev/null +++ b/DDrawCompat/Config/Settings/SpriteFilter.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +namespace Config +{ + namespace Settings + { + class SpriteFilter : public MappedSetting + { + public: + SpriteFilter(); + }; + } +} diff --git a/DDrawCompat/D3dDdi/DeviceState.cpp b/DDrawCompat/D3dDdi/DeviceState.cpp index 341b5ac..3acbf44 100644 --- a/DDrawCompat/D3dDdi/DeviceState.cpp +++ b/DDrawCompat/D3dDdi/DeviceState.cpp @@ -310,7 +310,10 @@ namespace D3dDdi case D3DDDITSS_MAGFILTER: case D3DDDITSS_MINFILTER: - return D3DTEXF_NONE == Config::textureFilter.getFilter() ? value : Config::textureFilter.getFilter(); + { + auto filter = (m_spriteMode && 0 == stage) ? Config::spriteFilter.get() : Config::textureFilter.getFilter(); + return D3DTEXF_NONE == filter ? value : filter; + } case D3DDDITSS_MIPFILTER: return D3DTEXF_NONE == Config::textureFilter.getMipFilter() ? value : Config::textureFilter.getMipFilter(); @@ -646,6 +649,8 @@ namespace D3dDdi m_changedTextureStageStates[0].set(D3DDDITSS_ADDRESSU); m_changedTextureStageStates[0].set(D3DDDITSS_ADDRESSV); } + m_changedTextureStageStates[0].set(D3DDDITSS_MAGFILTER); + m_changedTextureStageStates[0].set(D3DDDITSS_MINFILTER); D3DDDIARG_SETVERTEXSHADERCONSTB data = {}; data.Register = 15; diff --git a/DDrawCompat/DDrawCompat.vcxproj b/DDrawCompat/DDrawCompat.vcxproj index 083e3ad..c8c5055 100644 --- a/DDrawCompat/DDrawCompat.vcxproj +++ b/DDrawCompat/DDrawCompat.vcxproj @@ -227,6 +227,7 @@ + @@ -352,6 +353,7 @@ + diff --git a/DDrawCompat/DDrawCompat.vcxproj.filters b/DDrawCompat/DDrawCompat.vcxproj.filters index 2840f27..34c701e 100644 --- a/DDrawCompat/DDrawCompat.vcxproj.filters +++ b/DDrawCompat/DDrawCompat.vcxproj.filters @@ -531,6 +531,9 @@ Header Files\Config\Settings + + Header Files\Config\Settings + @@ -839,6 +842,9 @@ Source Files\Config\Settings + + Source Files\Config\Settings + diff --git a/DDrawCompat/Overlay/ConfigWindow.cpp b/DDrawCompat/Overlay/ConfigWindow.cpp index 14735aa..6479af4 100644 --- a/DDrawCompat/Overlay/ConfigWindow.cpp +++ b/DDrawCompat/Overlay/ConfigWindow.cpp @@ -16,6 +16,7 @@ namespace Overlay addControl(Config::displayFilter); addControl(Config::renderColorDepth); addControl(Config::resolutionScale); + addControl(Config::spriteFilter); addControl(Config::spriteTexCoord); addControl(Config::textureFilter); } diff --git a/DDrawCompat/Overlay/SettingControl.cpp b/DDrawCompat/Overlay/SettingControl.cpp index 573a084..521cbc3 100644 --- a/DDrawCompat/Overlay/SettingControl.cpp +++ b/DDrawCompat/Overlay/SettingControl.cpp @@ -78,6 +78,7 @@ namespace Overlay if (&Config::antialiasing == &m_setting || &Config::renderColorDepth == &m_setting || &Config::resolutionScale == &m_setting || + &Config::spriteFilter == &m_setting || &Config::spriteTexCoord == &m_setting || &Config::textureFilter == &m_setting) {