AudioInterface: Use 32029/48043 Hz in more places

In particular, I wanted to do change this in
AudioInterface::Init so that dumped GC audio doesn't need
to have a file split (changing from 32000 Hz to 32029 Hz)
when the emulated software initializes the AI registers.
I've also made the same change to DI's DTK code.
This commit is contained in:
JosJuice
2020-08-29 13:24:39 +02:00
parent 800b2480ec
commit 1a1b89e7e8
3 changed files with 25 additions and 15 deletions

View File

@ -149,8 +149,8 @@ void Init()
s_last_cpu_time = 0;
s_cpu_cycles_per_sample = 0xFFFFFFFFFFFULL;
s_ais_sample_rate = 48000;
s_aid_sample_rate = 32000;
s_ais_sample_rate = Get48KHzSampleRate();
s_aid_sample_rate = Get32KHzSampleRate();
event_type_ai = CoreTiming::RegisterEvent("AICallback", Update);
}
@ -184,10 +184,7 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base)
// AISFR rates below are intentionally inverted wrt yagcd
DEBUG_LOG(AUDIO_INTERFACE, "Change AISFR to %s", tmp_ai_ctrl.AISFR ? "48khz" : "32khz");
s_control.AISFR = tmp_ai_ctrl.AISFR;
if (SConfig::GetInstance().bWii)
s_ais_sample_rate = tmp_ai_ctrl.AISFR ? 48000 : 32000;
else
s_ais_sample_rate = tmp_ai_ctrl.AISFR ? 48043 : 32029;
s_ais_sample_rate = tmp_ai_ctrl.AISFR ? Get48KHzSampleRate() : Get32KHzSampleRate();
g_sound_stream->GetMixer()->SetStreamInputSampleRate(s_ais_sample_rate);
s_cpu_cycles_per_sample = SystemTimers::GetTicksPerSecond() / s_ais_sample_rate;
}
@ -196,10 +193,7 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base)
{
DEBUG_LOG(AUDIO_INTERFACE, "Change AIDFR to %s", tmp_ai_ctrl.AIDFR ? "32khz" : "48khz");
s_control.AIDFR = tmp_ai_ctrl.AIDFR;
if (SConfig::GetInstance().bWii)
s_aid_sample_rate = tmp_ai_ctrl.AIDFR ? 32000 : 48000;
else
s_aid_sample_rate = tmp_ai_ctrl.AIDFR ? 32029 : 48043;
s_aid_sample_rate = tmp_ai_ctrl.AIDFR ? Get32KHzSampleRate() : Get48KHzSampleRate();
g_sound_stream->GetMixer()->SetDMAInputSampleRate(s_aid_sample_rate);
}
@ -304,6 +298,16 @@ unsigned int GetAIDSampleRate()
return s_aid_sample_rate;
}
u32 Get32KHzSampleRate()
{
return SConfig::GetInstance().bWii ? 32000 : 32029;
}
u32 Get48KHzSampleRate()
{
return SConfig::GetInstance().bWii ? 48000 : 48043;
}
static void Update(u64 userdata, s64 cycles_late)
{
if (s_control.PSTAT)