mirror of
https://git.citron-emu.org/citron/emulator
synced 2025-12-20 02:53:57 +00:00
audio_core: Implement further Audio REV 15 support for SDK 19.0.0+ compatibility
This commit adds further Audio REV 15 support to enable compatibility with games compiled against Nintendo Switch SDK 19.0.0 and later versions. Fixes: Audio compatibility issues with SDK 19.0.0+ games Resolves: Missing Audio REV 15 feature support Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
@@ -54,6 +54,12 @@ enum class SupportTags {
|
|||||||
AudioRendererProcessingTimeLimit50Percent,
|
AudioRendererProcessingTimeLimit50Percent,
|
||||||
VoiceChannelResourceLimit,
|
VoiceChannelResourceLimit,
|
||||||
EffectProcessingVersion3,
|
EffectProcessingVersion3,
|
||||||
|
AudioRendererRenderingTimeLimit,
|
||||||
|
AudioRendererVoiceDropParameter,
|
||||||
|
AudioRendererExecutionMode,
|
||||||
|
AudioRendererRenderingDevice,
|
||||||
|
AudioRendererExclusiveControlLeakageCheck,
|
||||||
|
AudioRendererElapsedFrameCount,
|
||||||
|
|
||||||
// Not a real tag, just here to get the count.
|
// Not a real tag, just here to get the count.
|
||||||
Size
|
Size
|
||||||
@@ -107,6 +113,12 @@ constexpr bool CheckFeatureSupported(SupportTags tag, u32 user_revision) {
|
|||||||
{SupportTags::AudioRendererProcessingTimeLimit50Percent, 15},
|
{SupportTags::AudioRendererProcessingTimeLimit50Percent, 15},
|
||||||
{SupportTags::VoiceChannelResourceLimit, 15},
|
{SupportTags::VoiceChannelResourceLimit, 15},
|
||||||
{SupportTags::EffectProcessingVersion3, 15},
|
{SupportTags::EffectProcessingVersion3, 15},
|
||||||
|
{SupportTags::AudioRendererRenderingTimeLimit, 15},
|
||||||
|
{SupportTags::AudioRendererVoiceDropParameter, 15},
|
||||||
|
{SupportTags::AudioRendererExecutionMode, 15},
|
||||||
|
{SupportTags::AudioRendererRenderingDevice, 15},
|
||||||
|
{SupportTags::AudioRendererExclusiveControlLeakageCheck, 15},
|
||||||
|
{SupportTags::AudioRendererElapsedFrameCount, 15},
|
||||||
}};
|
}};
|
||||||
|
|
||||||
const auto& feature =
|
const auto& feature =
|
||||||
|
|||||||
@@ -218,4 +218,28 @@ bool BehaviorInfo::IsEffectProcessingVersion3Supported() const {
|
|||||||
return CheckFeatureSupported(SupportTags::EffectProcessingVersion3, user_revision);
|
return CheckFeatureSupported(SupportTags::EffectProcessingVersion3, user_revision);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BehaviorInfo::IsAudioRendererRenderingTimeLimitSupported() const {
|
||||||
|
return CheckFeatureSupported(SupportTags::AudioRendererRenderingTimeLimit, user_revision);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BehaviorInfo::IsAudioRendererVoiceDropParameterSupported() const {
|
||||||
|
return CheckFeatureSupported(SupportTags::AudioRendererVoiceDropParameter, user_revision);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BehaviorInfo::IsAudioRendererExecutionModeSupported() const {
|
||||||
|
return CheckFeatureSupported(SupportTags::AudioRendererExecutionMode, user_revision);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BehaviorInfo::IsAudioRendererRenderingDeviceSupported() const {
|
||||||
|
return CheckFeatureSupported(SupportTags::AudioRendererRenderingDevice, user_revision);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BehaviorInfo::IsAudioRendererExclusiveControlLeakageCheckSupported() const {
|
||||||
|
return CheckFeatureSupported(SupportTags::AudioRendererExclusiveControlLeakageCheck, user_revision);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BehaviorInfo::IsAudioRendererElapsedFrameCountSupported() const {
|
||||||
|
return CheckFeatureSupported(SupportTags::AudioRendererElapsedFrameCount, user_revision);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace AudioCore::Renderer
|
} // namespace AudioCore::Renderer
|
||||||
|
|||||||
@@ -410,6 +410,48 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool IsEffectProcessingVersion3Supported() const;
|
bool IsEffectProcessingVersion3Supported() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if audio renderer rendering time limit is supported.
|
||||||
|
*
|
||||||
|
* @return True if supported, otherwise false.
|
||||||
|
*/
|
||||||
|
bool IsAudioRendererRenderingTimeLimitSupported() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if audio renderer voice drop parameter is supported.
|
||||||
|
*
|
||||||
|
* @return True if supported, otherwise false.
|
||||||
|
*/
|
||||||
|
bool IsAudioRendererVoiceDropParameterSupported() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if audio renderer execution mode is supported.
|
||||||
|
*
|
||||||
|
* @return True if supported, otherwise false.
|
||||||
|
*/
|
||||||
|
bool IsAudioRendererExecutionModeSupported() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if audio renderer rendering device is supported.
|
||||||
|
*
|
||||||
|
* @return True if supported, otherwise false.
|
||||||
|
*/
|
||||||
|
bool IsAudioRendererRenderingDeviceSupported() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if audio renderer exclusive control leakage check is supported.
|
||||||
|
*
|
||||||
|
* @return True if supported, otherwise false.
|
||||||
|
*/
|
||||||
|
bool IsAudioRendererExclusiveControlLeakageCheckSupported() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if audio renderer elapsed frame count is supported.
|
||||||
|
*
|
||||||
|
* @return True if supported, otherwise false.
|
||||||
|
*/
|
||||||
|
bool IsAudioRendererElapsedFrameCountSupported() const;
|
||||||
|
|
||||||
/// Host version
|
/// Host version
|
||||||
u32 process_revision;
|
u32 process_revision;
|
||||||
/// User version
|
/// User version
|
||||||
|
|||||||
Reference in New Issue
Block a user