mirror of
https://git.citron-emu.org/citron/emulator
synced 2025-12-19 10:43:33 +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,
|
||||
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 =
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user