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:
Zephyron
2025-09-25 16:52:04 +10:00
parent 1bcabda885
commit 5ed7df1e68
3 changed files with 78 additions and 0 deletions

View File

@@ -54,6 +54,12 @@ enum class SupportTags {
AudioRendererProcessingTimeLimit50Percent,
VoiceChannelResourceLimit,
EffectProcessingVersion3,
AudioRendererRenderingTimeLimit,
AudioRendererVoiceDropParameter,
AudioRendererExecutionMode,
AudioRendererRenderingDevice,
AudioRendererExclusiveControlLeakageCheck,
AudioRendererElapsedFrameCount,
// Not a real tag, just here to get the count.
Size
@@ -107,6 +113,12 @@ constexpr bool CheckFeatureSupported(SupportTags tag, u32 user_revision) {
{SupportTags::AudioRendererProcessingTimeLimit50Percent, 15},
{SupportTags::VoiceChannelResourceLimit, 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 =

View File

@@ -218,4 +218,28 @@ bool BehaviorInfo::IsEffectProcessingVersion3Supported() const {
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

View File

@@ -410,6 +410,48 @@ public:
*/
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
u32 process_revision;
/// User version