mirror of
https://github.com/stenzek/duckstation.git
synced 2025-06-06 11:35:53 +00:00
GameDatabase: Add DisableFullTrueColor trait
This commit is contained in:
parent
1fca8ae6bf
commit
4ce001aef3
@ -19400,6 +19400,7 @@ SLES-03552:
|
|||||||
traits:
|
traits:
|
||||||
- ForceRecompilerICache
|
- ForceRecompilerICache
|
||||||
- DisableWidescreen # Breaks sprite sizes.
|
- DisableWidescreen # Breaks sprite sizes.
|
||||||
|
- DisableFullTrueColor # Breaks menu background colour.
|
||||||
metadata:
|
metadata:
|
||||||
publisher: "Capcom"
|
publisher: "Capcom"
|
||||||
developer: "Capcom"
|
developer: "Capcom"
|
||||||
@ -19425,6 +19426,7 @@ SLUS-01324:
|
|||||||
traits:
|
traits:
|
||||||
- ForceRecompilerICache
|
- ForceRecompilerICache
|
||||||
- DisableWidescreen # Breaks sprite sizes.
|
- DisableWidescreen # Breaks sprite sizes.
|
||||||
|
- DisableFullTrueColor # Breaks menu background colour.
|
||||||
metadata:
|
metadata:
|
||||||
publisher: "Capcom"
|
publisher: "Capcom"
|
||||||
developer: "Capcom"
|
developer: "Capcom"
|
||||||
@ -19447,6 +19449,7 @@ SLPS-02728:
|
|||||||
traits:
|
traits:
|
||||||
- ForceRecompilerICache
|
- ForceRecompilerICache
|
||||||
- DisableWidescreen # Breaks sprite sizes.
|
- DisableWidescreen # Breaks sprite sizes.
|
||||||
|
- DisableFullTrueColor # Breaks menu background colour.
|
||||||
codes:
|
codes:
|
||||||
- SLPS-02728
|
- SLPS-02728
|
||||||
- SLPM-87159
|
- SLPM-87159
|
||||||
@ -81489,6 +81492,8 @@ SLUS-01383:
|
|||||||
controllers:
|
controllers:
|
||||||
- AnalogController
|
- AnalogController
|
||||||
- DigitalController
|
- DigitalController
|
||||||
|
traits:
|
||||||
|
- DisableFullTrueColor # Breaks loading screen background colour.
|
||||||
metadata:
|
metadata:
|
||||||
publisher: "Knowledge Adventure"
|
publisher: "Knowledge Adventure"
|
||||||
developer: "Digital Illusions CE, Canada"
|
developer: "Digital Illusions CE, Canada"
|
||||||
|
@ -40,7 +40,7 @@ namespace GameDatabase {
|
|||||||
enum : u32
|
enum : u32
|
||||||
{
|
{
|
||||||
GAME_DATABASE_CACHE_SIGNATURE = 0x45434C48,
|
GAME_DATABASE_CACHE_SIGNATURE = 0x45434C48,
|
||||||
GAME_DATABASE_CACHE_VERSION = 23,
|
GAME_DATABASE_CACHE_VERSION = 24,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Entry* GetEntryForId(std::string_view code);
|
static const Entry* GetEntryForId(std::string_view code);
|
||||||
@ -74,7 +74,7 @@ static constexpr const std::array<const char*, static_cast<size_t>(Compatibility
|
|||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "No Issues", "CompatibilityRating"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "No Issues", "CompatibilityRating"),
|
||||||
}};
|
}};
|
||||||
|
|
||||||
static constexpr const std::array<const char*, static_cast<size_t>(Trait::MaxCount)> s_trait_names = {{
|
static constexpr const std::array s_trait_names = {
|
||||||
"ForceInterpreter",
|
"ForceInterpreter",
|
||||||
"ForceSoftwareRenderer",
|
"ForceSoftwareRenderer",
|
||||||
"ForceSoftwareRendererForReadbacks",
|
"ForceSoftwareRendererForReadbacks",
|
||||||
@ -86,6 +86,7 @@ static constexpr const std::array<const char*, static_cast<size_t>(Trait::MaxCou
|
|||||||
"DisableAutoAnalogMode",
|
"DisableAutoAnalogMode",
|
||||||
"DisableMultitap",
|
"DisableMultitap",
|
||||||
"DisableTrueColor",
|
"DisableTrueColor",
|
||||||
|
"DisableFullTrueColor",
|
||||||
"DisableUpscaling",
|
"DisableUpscaling",
|
||||||
"DisableTextureFiltering",
|
"DisableTextureFiltering",
|
||||||
"DisableSpriteTextureFiltering",
|
"DisableSpriteTextureFiltering",
|
||||||
@ -103,9 +104,10 @@ static constexpr const std::array<const char*, static_cast<size_t>(Trait::MaxCou
|
|||||||
"ForceRecompilerICache",
|
"ForceRecompilerICache",
|
||||||
"ForceCDROMSubQSkew",
|
"ForceCDROMSubQSkew",
|
||||||
"IsLibCryptProtected",
|
"IsLibCryptProtected",
|
||||||
}};
|
};
|
||||||
|
static_assert(s_trait_names.size() == static_cast<size_t>(Trait::MaxCount));
|
||||||
|
|
||||||
static constexpr const std::array<const char*, static_cast<size_t>(Trait::MaxCount)> s_trait_display_names = {{
|
static constexpr const std::array s_trait_display_names = {
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Interpreter", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Interpreter", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Software Renderer", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Software Renderer", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Software Renderer For Readbacks", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Software Renderer For Readbacks", "GameDatabase::Trait"),
|
||||||
@ -117,6 +119,7 @@ static constexpr const std::array<const char*, static_cast<size_t>(Trait::MaxCou
|
|||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Automatic Analog Mode", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Automatic Analog Mode", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Multitap", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Multitap", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable True Color", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable True Color", "GameDatabase::Trait"),
|
||||||
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Full True Color", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Upscaling", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Upscaling", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Texture Filtering", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Texture Filtering", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Sprite Texture Filtering", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Sprite Texture Filtering", "GameDatabase::Trait"),
|
||||||
@ -134,13 +137,15 @@ static constexpr const std::array<const char*, static_cast<size_t>(Trait::MaxCou
|
|||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Recompiler ICache", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Recompiler ICache", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force CD-ROM SubQ Skew", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force CD-ROM SubQ Skew", "GameDatabase::Trait"),
|
||||||
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Is LibCrypt Protected", "GameDatabase::Trait"),
|
TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Is LibCrypt Protected", "GameDatabase::Trait"),
|
||||||
}};
|
};
|
||||||
|
static_assert(s_trait_display_names.size() == static_cast<size_t>(Trait::MaxCount));
|
||||||
|
|
||||||
static constexpr std::array<const char*, static_cast<size_t>(Language::MaxCount)> s_language_names = {{
|
static constexpr std::array s_language_names = {
|
||||||
"Catalan", "Chinese", "Czech", "Danish", "Dutch", "English", "Finnish", "French",
|
"Catalan", "Chinese", "Czech", "Danish", "Dutch", "English", "Finnish", "French",
|
||||||
"German", "Greek", "Hebrew", "Iranian", "Italian", "Japanese", "Korean", "Norwegian",
|
"German", "Greek", "Hebrew", "Iranian", "Italian", "Japanese", "Korean", "Norwegian",
|
||||||
"Polish", "Portuguese", "Russian", "Spanish", "Swedish", "Turkish",
|
"Polish", "Portuguese", "Russian", "Spanish", "Swedish", "Turkish",
|
||||||
}};
|
};
|
||||||
|
static_assert(s_language_names.size() == static_cast<size_t>(Language::MaxCount));
|
||||||
|
|
||||||
static constexpr const char* GAMEDB_YAML_FILENAME = "gamedb.yaml";
|
static constexpr const char* GAMEDB_YAML_FILENAME = "gamedb.yaml";
|
||||||
static constexpr const char* DISCDB_YAML_FILENAME = "discdb.yaml";
|
static constexpr const char* DISCDB_YAML_FILENAME = "discdb.yaml";
|
||||||
@ -521,8 +526,9 @@ void GameDatabase::Entry::ApplySettings(Settings& settings, bool display_osd_mes
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasTrait(Trait::DisableTrueColor) || HasTrait(Trait::DisableScaledDithering) ||
|
if (HasTrait(Trait::DisableTrueColor) || HasTrait(Trait::DisableFullTrueColor) ||
|
||||||
HasTrait(Trait::ForceShaderBlending) || HasTrait(Trait::ForceFullTrueColor))
|
HasTrait(Trait::DisableScaledDithering) || HasTrait(Trait::ForceShaderBlending) ||
|
||||||
|
HasTrait(Trait::ForceFullTrueColor))
|
||||||
{
|
{
|
||||||
// Note: The order these are applied matters.
|
// Note: The order these are applied matters.
|
||||||
const GPUDitheringMode old_mode = settings.gpu_dithering_mode;
|
const GPUDitheringMode old_mode = settings.gpu_dithering_mode;
|
||||||
@ -545,6 +551,10 @@ void GameDatabase::Entry::ApplySettings(Settings& settings, bool display_osd_mes
|
|||||||
{
|
{
|
||||||
settings.gpu_dithering_mode = GPUDitheringMode::TrueColorFull;
|
settings.gpu_dithering_mode = GPUDitheringMode::TrueColorFull;
|
||||||
}
|
}
|
||||||
|
if (HasTrait(Trait::DisableFullTrueColor) && settings.gpu_dithering_mode == GPUDitheringMode::TrueColorFull)
|
||||||
|
{
|
||||||
|
settings.gpu_dithering_mode = GPUDitheringMode::TrueColor;
|
||||||
|
}
|
||||||
|
|
||||||
if (display_osd_messages && settings.gpu_dithering_mode != old_mode)
|
if (display_osd_messages && settings.gpu_dithering_mode != old_mode)
|
||||||
{
|
{
|
||||||
|
@ -44,6 +44,7 @@ enum class Trait : u32
|
|||||||
DisableAutoAnalogMode,
|
DisableAutoAnalogMode,
|
||||||
DisableMultitap,
|
DisableMultitap,
|
||||||
DisableTrueColor,
|
DisableTrueColor,
|
||||||
|
DisableFullTrueColor,
|
||||||
DisableUpscaling,
|
DisableUpscaling,
|
||||||
DisableTextureFiltering,
|
DisableTextureFiltering,
|
||||||
DisableSpriteTextureFiltering,
|
DisableSpriteTextureFiltering,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user