CDROM: Add option to speed up double speed reads

This commit is contained in:
Connor McLaughlin
2020-10-05 00:05:14 +10:00
parent 51e8eb108e
commit 8ba93b36a0
8 changed files with 106 additions and 7 deletions

View File

@ -620,6 +620,10 @@ TickCount CDROM::GetAckDelayForCommand(Command command)
TickCount CDROM::GetTicksForRead()
{
const TickCount tps = System::GetTicksPerSecond();
if (g_settings.cdrom_read_speedup > 1 && !m_mode.cdda && !m_mode.xa_enable && m_mode.double_speed)
return tps / (150 * g_settings.cdrom_read_speedup);
return m_mode.double_speed ? (tps / 150) : (tps / 75);
}

View File

@ -457,6 +457,7 @@ void HostInterface::SetDefaultSettings(SettingsInterface& si)
si.SetBoolValue("CDROM", "RegionCheck", true);
si.SetBoolValue("CDROM", "LoadImageToRAM", false);
si.SetBoolValue("CDROM", "MuteCDAudio", false);
si.SetIntValue("CDROM", "ReadSpeedup", 1);
si.SetStringValue("Audio", "Backend", Settings::GetAudioBackendName(Settings::DEFAULT_AUDIO_BACKEND));
si.SetIntValue("Audio", "OutputVolume", 100);

View File

@ -176,6 +176,7 @@ void Settings::Load(SettingsInterface& si)
cdrom_region_check = si.GetBoolValue("CDROM", "RegionCheck", true);
cdrom_load_image_to_ram = si.GetBoolValue("CDROM", "LoadImageToRAM", false);
cdrom_mute_cd_audio = si.GetBoolValue("CDROM", "MuteCDAudio", false);
cdrom_read_speedup = si.GetIntValue("CDROM", "ReadSpeedup", 1);
audio_backend =
ParseAudioBackend(si.GetStringValue("Audio", "Backend", GetAudioBackendName(DEFAULT_AUDIO_BACKEND)).c_str())
@ -296,6 +297,7 @@ void Settings::Save(SettingsInterface& si) const
si.SetBoolValue("CDROM", "RegionCheck", cdrom_region_check);
si.SetBoolValue("CDROM", "LoadImageToRAM", cdrom_load_image_to_ram);
si.SetBoolValue("CDROM", "MuteCDAudio", cdrom_mute_cd_audio);
si.SetIntValue("CDROM", "ReadSpeedup", cdrom_read_speedup);
si.SetStringValue("Audio", "Backend", GetAudioBackendName(audio_backend));
si.SetIntValue("Audio", "OutputVolume", audio_output_volume);

View File

@ -123,6 +123,7 @@ struct Settings
bool cdrom_region_check = true;
bool cdrom_load_image_to_ram = false;
bool cdrom_mute_cd_audio = false;
u32 cdrom_read_speedup = 1;
AudioBackend audio_backend = AudioBackend::Cubeb;
s32 audio_output_volume = 100;