CDROM: Add option to choose emulated mechacon version
This commit is contained in:
@ -259,6 +259,10 @@ void Settings::Load(SettingsInterface& si)
|
||||
|
||||
cdrom_readahead_sectors =
|
||||
static_cast<u8>(si.GetIntValue("CDROM", "ReadaheadSectors", DEFAULT_CDROM_READAHEAD_SECTORS));
|
||||
cdrom_mechacon_version =
|
||||
ParseCDROMMechVersionName(
|
||||
si.GetStringValue("CDROM", "MechaconVersion", GetCDROMMechVersionName(DEFAULT_CDROM_MECHACON_VERSION)).c_str())
|
||||
.value_or(DEFAULT_CDROM_MECHACON_VERSION);
|
||||
cdrom_region_check = si.GetBoolValue("CDROM", "RegionCheck", false);
|
||||
cdrom_load_image_to_ram = si.GetBoolValue("CDROM", "LoadImageToRAM", false);
|
||||
cdrom_load_image_patches = si.GetBoolValue("CDROM", "LoadImagePatches", false);
|
||||
@ -489,6 +493,7 @@ void Settings::Save(SettingsInterface& si) const
|
||||
si.SetFloatValue("Display", "OSDScale", display_osd_scale);
|
||||
|
||||
si.SetIntValue("CDROM", "ReadaheadSectors", cdrom_readahead_sectors);
|
||||
si.SetStringValue("CDROM", "MechaconVersion", GetCDROMMechVersionName(cdrom_mechacon_version));
|
||||
si.SetBoolValue("CDROM", "RegionCheck", cdrom_region_check);
|
||||
si.SetBoolValue("CDROM", "LoadImageToRAM", cdrom_load_image_to_ram);
|
||||
si.SetBoolValue("CDROM", "LoadImagePatches", cdrom_load_image_patches);
|
||||
@ -1403,6 +1408,37 @@ const char* Settings::GetMultitapModeDisplayName(MultitapMode mode)
|
||||
return Host::TranslateToCString("MultitapMode", s_multitap_enable_mode_display_names[static_cast<size_t>(mode)]);
|
||||
}
|
||||
|
||||
static constexpr const std::array s_mechacon_version_names = {"VC0A", "VC0B", "VC1A", "VC1B", "VD1", "VC2", "VC1",
|
||||
"VC2J", "VC2A", "VC2B", "VC3A", "VC3B", "VC3C"};
|
||||
static constexpr const std::array s_mechacon_version_display_names = {
|
||||
"94/09/19 (VC0A)", "94/11/18 (VC0B)", "95/05/16 (VC1A)", "95/07/24 (VC1B)", "95/07/24 (VD1)",
|
||||
"96/08/15 (VC2)", "96/08/18 (VC1)", "96/09/12 (VC2J)", "97/01/10 (VC2A)", "97/08/14 (VC2B)",
|
||||
"98/06/10 (VC3A)", "99/02/01 (VC3B)", "01/03/06 (VC3C)"};
|
||||
|
||||
std::optional<CDROMMechaconVersion> Settings::ParseCDROMMechVersionName(const char* str)
|
||||
{
|
||||
u32 index = 0;
|
||||
for (const char* name : s_mechacon_version_names)
|
||||
{
|
||||
if (StringUtil::Strcasecmp(name, str) == 0)
|
||||
return static_cast<CDROMMechaconVersion>(index);
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
const char* Settings::GetCDROMMechVersionName(CDROMMechaconVersion mode)
|
||||
{
|
||||
return s_mechacon_version_names[static_cast<u32>(mode)];
|
||||
}
|
||||
|
||||
const char* Settings::GetCDROMMechVersionDisplayName(CDROMMechaconVersion mode)
|
||||
{
|
||||
return s_mechacon_version_display_names[static_cast<size_t>(mode)];
|
||||
}
|
||||
|
||||
std::string EmuFolders::AppRoot;
|
||||
std::string EmuFolders::DataRoot;
|
||||
std::string EmuFolders::Bios;
|
||||
|
||||
Reference in New Issue
Block a user