mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-23 06:15:38 +00:00
GameSettings: Add GPU renderer and 8MB RAM options
This commit is contained in:
parent
99876588c4
commit
e226464a35
|
@ -117,6 +117,7 @@ public class GamePropertiesActivity extends AppCompatActivity {
|
||||||
activity.createListGameSetting(ps, "CPUOverclock", R.string.settings_cpu_overclocking, R.array.settings_advanced_cpu_overclock_entries, R.array.settings_advanced_cpu_overclock_values);
|
activity.createListGameSetting(ps, "CPUOverclock", R.string.settings_cpu_overclocking, R.array.settings_advanced_cpu_overclock_entries, R.array.settings_advanced_cpu_overclock_values);
|
||||||
activity.createListGameSetting(ps, "CDROMReadSpeedup", R.string.settings_cdrom_read_speedup, R.array.settings_cdrom_read_speedup_entries, R.array.settings_cdrom_read_speedup_values);
|
activity.createListGameSetting(ps, "CDROMReadSpeedup", R.string.settings_cdrom_read_speedup, R.array.settings_cdrom_read_speedup_entries, R.array.settings_cdrom_read_speedup_values);
|
||||||
|
|
||||||
|
activity.createListGameSetting(ps, "GPURenderer", R.string.settings_gpu_renderer, R.array.gpu_renderer_entries, R.array.gpu_renderer_values);
|
||||||
activity.createListGameSetting(ps, "DisplayAspectRatio", R.string.settings_aspect_ratio, R.array.settings_display_aspect_ratio_names, R.array.settings_display_aspect_ratio_values);
|
activity.createListGameSetting(ps, "DisplayAspectRatio", R.string.settings_aspect_ratio, R.array.settings_display_aspect_ratio_names, R.array.settings_display_aspect_ratio_values);
|
||||||
activity.createListGameSetting(ps, "DisplayCropMode", R.string.settings_crop_mode, R.array.settings_display_crop_mode_entries, R.array.settings_display_crop_mode_values);
|
activity.createListGameSetting(ps, "DisplayCropMode", R.string.settings_crop_mode, R.array.settings_display_crop_mode_entries, R.array.settings_display_crop_mode_values);
|
||||||
activity.createListGameSetting(ps, "GPUDownsampleMode", R.string.settings_downsample_mode, R.array.settings_downsample_mode_entries, R.array.settings_downsample_mode_values);
|
activity.createListGameSetting(ps, "GPUDownsampleMode", R.string.settings_downsample_mode, R.array.settings_downsample_mode_entries, R.array.settings_downsample_mode_values);
|
||||||
|
|
|
@ -131,6 +131,13 @@ void GamePropertiesDialog::setupAdditionalUi()
|
||||||
GameList::GetGameListCompatibilityRatingString(static_cast<GameListCompatibilityRating>(i))));
|
GameList::GetGameListCompatibilityRatingString(static_cast<GameListCompatibilityRating>(i))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_ui.userRenderer->addItem(tr("(unchanged)"));
|
||||||
|
for (u32 i = 0; i < static_cast<u32>(GPURenderer::Count); i++)
|
||||||
|
{
|
||||||
|
m_ui.userRenderer->addItem(
|
||||||
|
qApp->translate("GPURenderer", Settings::GetRendererDisplayName(static_cast<GPURenderer>(i))));
|
||||||
|
}
|
||||||
|
|
||||||
m_ui.userAspectRatio->addItem(tr("(unchanged)"));
|
m_ui.userAspectRatio->addItem(tr("(unchanged)"));
|
||||||
for (u32 i = 0; i < static_cast<u32>(DisplayAspectRatio::Count); i++)
|
for (u32 i = 0; i < static_cast<u32>(DisplayAspectRatio::Count); i++)
|
||||||
{
|
{
|
||||||
|
@ -303,6 +310,7 @@ void GamePropertiesDialog::populateGameSettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
populateBooleanUserSetting(m_ui.userEnableCPUClockSpeedControl, gs.cpu_overclock_enable);
|
populateBooleanUserSetting(m_ui.userEnableCPUClockSpeedControl, gs.cpu_overclock_enable);
|
||||||
|
populateBooleanUserSetting(m_ui.userEnable8MBRAM, gs.enable_8mb_ram);
|
||||||
updateCPUClockSpeedLabel();
|
updateCPUClockSpeedLabel();
|
||||||
|
|
||||||
if (gs.cdrom_read_speedup.has_value())
|
if (gs.cdrom_read_speedup.has_value())
|
||||||
|
@ -387,6 +395,12 @@ void GamePropertiesDialog::populateGameSettings()
|
||||||
}
|
}
|
||||||
onUserAspectRatioChanged();
|
onUserAspectRatioChanged();
|
||||||
|
|
||||||
|
if (gs.gpu_renderer.has_value())
|
||||||
|
{
|
||||||
|
QSignalBlocker sb(m_ui.userRenderer);
|
||||||
|
m_ui.userRenderer->setCurrentIndex(static_cast<int>(gs.gpu_renderer.value()) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
if (gs.gpu_downsample_mode.has_value())
|
if (gs.gpu_downsample_mode.has_value())
|
||||||
{
|
{
|
||||||
QSignalBlocker sb(m_ui.userDownsampleMode);
|
QSignalBlocker sb(m_ui.userDownsampleMode);
|
||||||
|
@ -545,6 +559,7 @@ void GamePropertiesDialog::connectUi()
|
||||||
});
|
});
|
||||||
|
|
||||||
connectBooleanUserSetting(m_ui.userEnableCPUClockSpeedControl, &m_game_settings.cpu_overclock_enable);
|
connectBooleanUserSetting(m_ui.userEnableCPUClockSpeedControl, &m_game_settings.cpu_overclock_enable);
|
||||||
|
connectBooleanUserSetting(m_ui.userEnable8MBRAM, &m_game_settings.enable_8mb_ram);
|
||||||
connect(m_ui.userEnableCPUClockSpeedControl, &QCheckBox::stateChanged, this,
|
connect(m_ui.userEnableCPUClockSpeedControl, &QCheckBox::stateChanged, this,
|
||||||
&GamePropertiesDialog::updateCPUClockSpeedLabel);
|
&GamePropertiesDialog::updateCPUClockSpeedLabel);
|
||||||
|
|
||||||
|
@ -597,6 +612,14 @@ void GamePropertiesDialog::connectUi()
|
||||||
saveGameSettings();
|
saveGameSettings();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(m_ui.userRenderer, QOverload<int>::of(&QComboBox::currentIndexChanged), [this](int index) {
|
||||||
|
if (index <= 0)
|
||||||
|
m_game_settings.gpu_renderer.reset();
|
||||||
|
else
|
||||||
|
m_game_settings.gpu_renderer = static_cast<GPURenderer>(index - 1);
|
||||||
|
saveGameSettings();
|
||||||
|
});
|
||||||
|
|
||||||
connect(m_ui.userCropMode, QOverload<int>::of(&QComboBox::currentIndexChanged), [this](int index) {
|
connect(m_ui.userCropMode, QOverload<int>::of(&QComboBox::currentIndexChanged), [this](int index) {
|
||||||
if (index <= 0)
|
if (index <= 0)
|
||||||
m_game_settings.display_crop_mode.reset();
|
m_game_settings.display_crop_mode.reset();
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>793</width>
|
<width>769</width>
|
||||||
<height>651</height>
|
<height>706</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -252,6 +252,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QCheckBox" name="userEnable8MBRAM">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable 8MB RAM (Dev Console)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -261,14 +268,14 @@
|
||||||
<string>GPU Screen Display</string>
|
<string>GPU Screen Display</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout_5">
|
<layout class="QFormLayout" name="formLayout_5">
|
||||||
<item row="0" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label_18">
|
<widget class="QLabel" name="label_18">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Aspect Ratio:</string>
|
<string>Aspect Ratio:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="1" column="1">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_8" stretch="1,0,0,0">
|
<layout class="QHBoxLayout" name="horizontalLayout_8" stretch="1,0,0,0">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="userAspectRatio"/>
|
<widget class="QComboBox" name="userAspectRatio"/>
|
||||||
|
@ -302,27 +309,27 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_17">
|
<widget class="QLabel" name="label_17">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Crop Mode:</string>
|
<string>Crop Mode:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QComboBox" name="userCropMode"/>
|
<widget class="QComboBox" name="userCropMode"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QLabel" name="label_31">
|
<widget class="QLabel" name="label_31">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Downsampling:</string>
|
<string>Downsampling:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QComboBox" name="userDownsampleMode"/>
|
<widget class="QComboBox" name="userDownsampleMode"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0" colspan="2">
|
<item row="4" column="0" colspan="2">
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QCheckBox" name="userLinearUpscaling">
|
<widget class="QCheckBox" name="userLinearUpscaling">
|
||||||
|
@ -346,6 +353,16 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_34">
|
||||||
|
<property name="text">
|
||||||
|
<string>Renderer:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="userRenderer"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -172,6 +172,8 @@ bool CommonHostInterface::BootSystem(const SystemBootParameters& parameters)
|
||||||
if (m_display && m_fullscreen_ui_enabled)
|
if (m_display && m_fullscreen_ui_enabled)
|
||||||
FullscreenUI::EnsureGameListLoaded();
|
FullscreenUI::EnsureGameListLoaded();
|
||||||
|
|
||||||
|
ApplyRendererFromGameSettings(parameters.filename);
|
||||||
|
|
||||||
if (!HostInterface::BootSystem(parameters))
|
if (!HostInterface::BootSystem(parameters))
|
||||||
{
|
{
|
||||||
// if in batch mode, exit immediately if booting failed
|
// if in batch mode, exit immediately if booting failed
|
||||||
|
@ -3049,6 +3051,22 @@ void CommonHostInterface::ApplyGameSettings(bool display_osd_messages)
|
||||||
gs->ApplySettings(display_osd_messages);
|
gs->ApplySettings(display_osd_messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CommonHostInterface::ApplyRendererFromGameSettings(const std::string& boot_filename)
|
||||||
|
{
|
||||||
|
if (boot_filename.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// we can't use the code here, since it's not loaded yet. but we can cheekily access the game list
|
||||||
|
const GameListEntry* ge = m_game_list->GetEntryForPath(boot_filename.c_str());
|
||||||
|
if (ge && ge->settings.gpu_renderer.has_value() && ge->settings.gpu_renderer.value() != g_settings.gpu_renderer)
|
||||||
|
{
|
||||||
|
Log_InfoPrintf("Changing renderer from '%s' to '%s' due to game settings.",
|
||||||
|
Settings::GetRendererName(g_settings.gpu_renderer),
|
||||||
|
Settings::GetRendererName(ge->settings.gpu_renderer.value()));
|
||||||
|
g_settings.gpu_renderer = ge->settings.gpu_renderer.value();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CommonHostInterface::ApplyControllerCompatibilitySettings(u64 controller_mask, bool display_osd_messages)
|
void CommonHostInterface::ApplyControllerCompatibilitySettings(u64 controller_mask, bool display_osd_messages)
|
||||||
{
|
{
|
||||||
#define BIT_FOR(ctype) (static_cast<u64>(1) << static_cast<u32>(ctype))
|
#define BIT_FOR(ctype) (static_cast<u64>(1) << static_cast<u32>(ctype))
|
||||||
|
|
|
@ -415,6 +415,7 @@ protected:
|
||||||
void OnHostDisplayResized() override;
|
void OnHostDisplayResized() override;
|
||||||
|
|
||||||
void ApplyGameSettings(bool display_osd_messages);
|
void ApplyGameSettings(bool display_osd_messages);
|
||||||
|
void ApplyRendererFromGameSettings(const std::string& boot_filename);
|
||||||
void ApplyControllerCompatibilitySettings(u64 controller_mask, bool display_osd_messages);
|
void ApplyControllerCompatibilitySettings(u64 controller_mask, bool display_osd_messages);
|
||||||
|
|
||||||
bool CreateHostDisplayResources();
|
bool CreateHostDisplayResources();
|
||||||
|
|
|
@ -130,7 +130,7 @@ private:
|
||||||
enum : u32
|
enum : u32
|
||||||
{
|
{
|
||||||
GAME_LIST_CACHE_SIGNATURE = 0x45434C47,
|
GAME_LIST_CACHE_SIGNATURE = 0x45434C47,
|
||||||
GAME_LIST_CACHE_VERSION = 28
|
GAME_LIST_CACHE_VERSION = 29
|
||||||
};
|
};
|
||||||
|
|
||||||
using CacheMap = std::unordered_map<std::string, GameListEntry>;
|
using CacheMap = std::unordered_map<std::string, GameListEntry>;
|
||||||
|
|
|
@ -108,7 +108,8 @@ bool Entry::LoadFromStream(ByteStream* stream)
|
||||||
if (!stream->Read2(bits.data(), num_bytes) || !ReadOptionalFromStream(stream, &runahead_frames) ||
|
if (!stream->Read2(bits.data(), num_bytes) || !ReadOptionalFromStream(stream, &runahead_frames) ||
|
||||||
!ReadOptionalFromStream(stream, &cpu_overclock_numerator) ||
|
!ReadOptionalFromStream(stream, &cpu_overclock_numerator) ||
|
||||||
!ReadOptionalFromStream(stream, &cpu_overclock_denominator) ||
|
!ReadOptionalFromStream(stream, &cpu_overclock_denominator) ||
|
||||||
!ReadOptionalFromStream(stream, &cpu_overclock_enable) || !ReadOptionalFromStream(stream, &cdrom_read_speedup) ||
|
!ReadOptionalFromStream(stream, &cpu_overclock_enable) || !ReadOptionalFromStream(stream, &enable_8mb_ram) ||
|
||||||
|
!ReadOptionalFromStream(stream, &cdrom_read_speedup) ||
|
||||||
!ReadOptionalFromStream(stream, &display_active_start_offset) ||
|
!ReadOptionalFromStream(stream, &display_active_start_offset) ||
|
||||||
!ReadOptionalFromStream(stream, &display_active_end_offset) ||
|
!ReadOptionalFromStream(stream, &display_active_end_offset) ||
|
||||||
!ReadOptionalFromStream(stream, &display_line_start_offset) ||
|
!ReadOptionalFromStream(stream, &display_line_start_offset) ||
|
||||||
|
@ -124,9 +125,9 @@ bool Entry::LoadFromStream(ByteStream* stream)
|
||||||
!ReadOptionalFromStream(stream, &display_force_4_3_for_24bit) ||
|
!ReadOptionalFromStream(stream, &display_force_4_3_for_24bit) ||
|
||||||
!ReadOptionalFromStream(stream, &display_aspect_ratio_custom_numerator) ||
|
!ReadOptionalFromStream(stream, &display_aspect_ratio_custom_numerator) ||
|
||||||
!ReadOptionalFromStream(stream, &display_aspect_ratio_custom_denominator) ||
|
!ReadOptionalFromStream(stream, &display_aspect_ratio_custom_denominator) ||
|
||||||
!ReadOptionalFromStream(stream, &gpu_resolution_scale) || !ReadOptionalFromStream(stream, &gpu_multisamples) ||
|
!ReadOptionalFromStream(stream, &gpu_renderer) || !ReadOptionalFromStream(stream, &gpu_resolution_scale) ||
|
||||||
!ReadOptionalFromStream(stream, &gpu_per_sample_shading) || !ReadOptionalFromStream(stream, &gpu_true_color) ||
|
!ReadOptionalFromStream(stream, &gpu_multisamples) || !ReadOptionalFromStream(stream, &gpu_per_sample_shading) ||
|
||||||
!ReadOptionalFromStream(stream, &gpu_scaled_dithering) ||
|
!ReadOptionalFromStream(stream, &gpu_true_color) || !ReadOptionalFromStream(stream, &gpu_scaled_dithering) ||
|
||||||
!ReadOptionalFromStream(stream, &gpu_force_ntsc_timings) ||
|
!ReadOptionalFromStream(stream, &gpu_force_ntsc_timings) ||
|
||||||
!ReadOptionalFromStream(stream, &gpu_texture_filter) || !ReadOptionalFromStream(stream, &gpu_widescreen_hack) ||
|
!ReadOptionalFromStream(stream, &gpu_texture_filter) || !ReadOptionalFromStream(stream, &gpu_widescreen_hack) ||
|
||||||
!ReadOptionalFromStream(stream, &gpu_pgxp) || !ReadOptionalFromStream(stream, &gpu_pgxp_projection_precision) ||
|
!ReadOptionalFromStream(stream, &gpu_pgxp) || !ReadOptionalFromStream(stream, &gpu_pgxp_projection_precision) ||
|
||||||
|
@ -163,7 +164,8 @@ bool Entry::SaveToStream(ByteStream* stream) const
|
||||||
return stream->Write2(bits.data(), num_bytes) && WriteOptionalToStream(stream, runahead_frames) &&
|
return stream->Write2(bits.data(), num_bytes) && WriteOptionalToStream(stream, runahead_frames) &&
|
||||||
WriteOptionalToStream(stream, cpu_overclock_numerator) &&
|
WriteOptionalToStream(stream, cpu_overclock_numerator) &&
|
||||||
WriteOptionalToStream(stream, cpu_overclock_denominator) &&
|
WriteOptionalToStream(stream, cpu_overclock_denominator) &&
|
||||||
WriteOptionalToStream(stream, cpu_overclock_enable) && WriteOptionalToStream(stream, cdrom_read_speedup) &&
|
WriteOptionalToStream(stream, cpu_overclock_enable) && WriteOptionalToStream(stream, enable_8mb_ram) &&
|
||||||
|
WriteOptionalToStream(stream, cdrom_read_speedup) &&
|
||||||
WriteOptionalToStream(stream, display_active_start_offset) &&
|
WriteOptionalToStream(stream, display_active_start_offset) &&
|
||||||
WriteOptionalToStream(stream, display_active_end_offset) &&
|
WriteOptionalToStream(stream, display_active_end_offset) &&
|
||||||
WriteOptionalToStream(stream, display_line_start_offset) &&
|
WriteOptionalToStream(stream, display_line_start_offset) &&
|
||||||
|
@ -177,11 +179,12 @@ bool Entry::SaveToStream(ByteStream* stream) const
|
||||||
WriteOptionalToStream(stream, display_force_4_3_for_24bit) &&
|
WriteOptionalToStream(stream, display_force_4_3_for_24bit) &&
|
||||||
WriteOptionalToStream(stream, display_aspect_ratio_custom_numerator) &&
|
WriteOptionalToStream(stream, display_aspect_ratio_custom_numerator) &&
|
||||||
WriteOptionalToStream(stream, display_aspect_ratio_custom_denominator) &&
|
WriteOptionalToStream(stream, display_aspect_ratio_custom_denominator) &&
|
||||||
WriteOptionalToStream(stream, gpu_resolution_scale) && WriteOptionalToStream(stream, gpu_multisamples) &&
|
WriteOptionalToStream(stream, gpu_renderer) && WriteOptionalToStream(stream, gpu_resolution_scale) &&
|
||||||
WriteOptionalToStream(stream, gpu_per_sample_shading) && WriteOptionalToStream(stream, gpu_true_color) &&
|
WriteOptionalToStream(stream, gpu_multisamples) && WriteOptionalToStream(stream, gpu_per_sample_shading) &&
|
||||||
WriteOptionalToStream(stream, gpu_scaled_dithering) && WriteOptionalToStream(stream, gpu_force_ntsc_timings) &&
|
WriteOptionalToStream(stream, gpu_true_color) && WriteOptionalToStream(stream, gpu_scaled_dithering) &&
|
||||||
WriteOptionalToStream(stream, gpu_texture_filter) && WriteOptionalToStream(stream, gpu_widescreen_hack) &&
|
WriteOptionalToStream(stream, gpu_force_ntsc_timings) && WriteOptionalToStream(stream, gpu_texture_filter) &&
|
||||||
WriteOptionalToStream(stream, gpu_pgxp) && WriteOptionalToStream(stream, gpu_pgxp_projection_precision) &&
|
WriteOptionalToStream(stream, gpu_widescreen_hack) && WriteOptionalToStream(stream, gpu_pgxp) &&
|
||||||
|
WriteOptionalToStream(stream, gpu_pgxp_projection_precision) &&
|
||||||
WriteOptionalToStream(stream, gpu_pgxp_depth_buffer) && WriteOptionalToStream(stream, multitap_mode) &&
|
WriteOptionalToStream(stream, gpu_pgxp_depth_buffer) && WriteOptionalToStream(stream, multitap_mode) &&
|
||||||
WriteOptionalToStream(stream, controller_1_type) && WriteOptionalToStream(stream, controller_2_type) &&
|
WriteOptionalToStream(stream, controller_1_type) && WriteOptionalToStream(stream, controller_2_type) &&
|
||||||
WriteOptionalToStream(stream, memory_card_1_type) && WriteOptionalToStream(stream, memory_card_2_type) &&
|
WriteOptionalToStream(stream, memory_card_1_type) && WriteOptionalToStream(stream, memory_card_2_type) &&
|
||||||
|
@ -210,6 +213,9 @@ static void ParseIniSection(Entry* entry, const char* section, const CSimpleIniA
|
||||||
cvalue = ini.GetValue(section, "CPUOverclockEnable", nullptr);
|
cvalue = ini.GetValue(section, "CPUOverclockEnable", nullptr);
|
||||||
if (cvalue)
|
if (cvalue)
|
||||||
entry->cpu_overclock_enable = StringUtil::FromChars<bool>(cvalue);
|
entry->cpu_overclock_enable = StringUtil::FromChars<bool>(cvalue);
|
||||||
|
cvalue = ini.GetValue(section, "Enable8MBRAM", nullptr);
|
||||||
|
if (cvalue)
|
||||||
|
entry->enable_8mb_ram = StringUtil::FromChars<bool>(cvalue);
|
||||||
|
|
||||||
cvalue = ini.GetValue(section, "CDROMReadSpeedup", nullptr);
|
cvalue = ini.GetValue(section, "CDROMReadSpeedup", nullptr);
|
||||||
if (cvalue)
|
if (cvalue)
|
||||||
|
@ -264,6 +270,9 @@ static void ParseIniSection(Entry* entry, const char* section, const CSimpleIniA
|
||||||
entry->display_aspect_ratio_custom_denominator =
|
entry->display_aspect_ratio_custom_denominator =
|
||||||
static_cast<u16>(std::clamp<long>(lvalue, 1, std::numeric_limits<u16>::max()));
|
static_cast<u16>(std::clamp<long>(lvalue, 1, std::numeric_limits<u16>::max()));
|
||||||
}
|
}
|
||||||
|
cvalue = ini.GetValue(section, "GPURenderer", nullptr);
|
||||||
|
if (cvalue)
|
||||||
|
entry->gpu_renderer = Settings::ParseRendererName(cvalue);
|
||||||
cvalue = ini.GetValue(section, "GPUDownsampleMode", nullptr);
|
cvalue = ini.GetValue(section, "GPUDownsampleMode", nullptr);
|
||||||
if (cvalue)
|
if (cvalue)
|
||||||
entry->gpu_downsample_mode = Settings::ParseDownsampleModeName(cvalue);
|
entry->gpu_downsample_mode = Settings::ParseDownsampleModeName(cvalue);
|
||||||
|
@ -355,6 +364,8 @@ static void StoreIniSection(const Entry& entry, const char* section, CSimpleIniA
|
||||||
ini.SetLongValue(section, "CPUOverclockDenominator", static_cast<long>(entry.cpu_overclock_denominator.value()));
|
ini.SetLongValue(section, "CPUOverclockDenominator", static_cast<long>(entry.cpu_overclock_denominator.value()));
|
||||||
if (entry.cpu_overclock_enable.has_value())
|
if (entry.cpu_overclock_enable.has_value())
|
||||||
ini.SetBoolValue(section, "CPUOverclockEnable", entry.cpu_overclock_enable.value());
|
ini.SetBoolValue(section, "CPUOverclockEnable", entry.cpu_overclock_enable.value());
|
||||||
|
if (entry.enable_8mb_ram.has_value())
|
||||||
|
ini.SetBoolValue(section, "Enable8MBRAM", entry.enable_8mb_ram.value());
|
||||||
|
|
||||||
if (entry.cdrom_read_speedup.has_value())
|
if (entry.cdrom_read_speedup.has_value())
|
||||||
ini.SetLongValue(section, "CDROMReadSpeedup", static_cast<long>(entry.cdrom_read_speedup.value()));
|
ini.SetLongValue(section, "CDROMReadSpeedup", static_cast<long>(entry.cdrom_read_speedup.value()));
|
||||||
|
@ -397,6 +408,8 @@ static void StoreIniSection(const Entry& entry, const char* section, CSimpleIniA
|
||||||
ini.SetLongValue(section, "CustomAspectRatioDenominator",
|
ini.SetLongValue(section, "CustomAspectRatioDenominator",
|
||||||
static_cast<long>(entry.display_aspect_ratio_custom_denominator.value()));
|
static_cast<long>(entry.display_aspect_ratio_custom_denominator.value()));
|
||||||
}
|
}
|
||||||
|
if (entry.gpu_renderer.has_value())
|
||||||
|
ini.SetValue(section, "GPURenderer", Settings::GetRendererName(entry.gpu_renderer.value()));
|
||||||
if (entry.gpu_downsample_mode.has_value())
|
if (entry.gpu_downsample_mode.has_value())
|
||||||
{
|
{
|
||||||
ini.SetValue(section, "GPUDownsampleMode", Settings::GetDownsampleModeName(entry.gpu_downsample_mode.value()));
|
ini.SetValue(section, "GPUDownsampleMode", Settings::GetDownsampleModeName(entry.gpu_downsample_mode.value()));
|
||||||
|
@ -457,6 +470,7 @@ u32 Entry::GetUserSettingsCount() const
|
||||||
count += BoolToUInt32(cpu_overclock_numerator.has_value());
|
count += BoolToUInt32(cpu_overclock_numerator.has_value());
|
||||||
count += BoolToUInt32(cpu_overclock_denominator.has_value());
|
count += BoolToUInt32(cpu_overclock_denominator.has_value());
|
||||||
count += BoolToUInt32(cpu_overclock_enable.has_value());
|
count += BoolToUInt32(cpu_overclock_enable.has_value());
|
||||||
|
count += BoolToUInt32(enable_8mb_ram.has_value());
|
||||||
count += BoolToUInt32(cdrom_read_speedup.has_value());
|
count += BoolToUInt32(cdrom_read_speedup.has_value());
|
||||||
count += BoolToUInt32(display_crop_mode.has_value());
|
count += BoolToUInt32(display_crop_mode.has_value());
|
||||||
count += BoolToUInt32(display_aspect_ratio.has_value());
|
count += BoolToUInt32(display_aspect_ratio.has_value());
|
||||||
|
@ -464,6 +478,7 @@ u32 Entry::GetUserSettingsCount() const
|
||||||
count += BoolToUInt32(display_linear_upscaling.has_value());
|
count += BoolToUInt32(display_linear_upscaling.has_value());
|
||||||
count += BoolToUInt32(display_integer_upscaling.has_value());
|
count += BoolToUInt32(display_integer_upscaling.has_value());
|
||||||
count += BoolToUInt32(display_force_4_3_for_24bit.has_value());
|
count += BoolToUInt32(display_force_4_3_for_24bit.has_value());
|
||||||
|
count += BoolToUInt32(gpu_renderer.has_value());
|
||||||
count += BoolToUInt32(gpu_resolution_scale.has_value());
|
count += BoolToUInt32(gpu_resolution_scale.has_value());
|
||||||
count += BoolToUInt32(gpu_multisamples.has_value());
|
count += BoolToUInt32(gpu_multisamples.has_value());
|
||||||
count += BoolToUInt32(gpu_per_sample_shading.has_value());
|
count += BoolToUInt32(gpu_per_sample_shading.has_value());
|
||||||
|
@ -504,6 +519,13 @@ static std::optional<std::string> GetEntryValueForKey(const Entry& entry, const
|
||||||
return std::to_string(Settings::CPUOverclockFractionToPercent(entry.cpu_overclock_numerator.value_or(1),
|
return std::to_string(Settings::CPUOverclockFractionToPercent(entry.cpu_overclock_numerator.value_or(1),
|
||||||
entry.cpu_overclock_denominator.value_or(1)));
|
entry.cpu_overclock_denominator.value_or(1)));
|
||||||
}
|
}
|
||||||
|
else if (key == "Enable8MBRAM")
|
||||||
|
{
|
||||||
|
if (!entry.enable_8mb_ram.has_value())
|
||||||
|
return std::nullopt;
|
||||||
|
else
|
||||||
|
return entry.enable_8mb_ram.value() ? "true" : "false";
|
||||||
|
}
|
||||||
else if (key == "CDROMReadSpeedup")
|
else if (key == "CDROMReadSpeedup")
|
||||||
{
|
{
|
||||||
if (!entry.cdrom_read_speedup.has_value())
|
if (!entry.cdrom_read_speedup.has_value())
|
||||||
|
@ -539,6 +561,13 @@ static std::optional<std::string> GetEntryValueForKey(const Entry& entry, const
|
||||||
else
|
else
|
||||||
return std::to_string(entry.display_aspect_ratio_custom_denominator.value());
|
return std::to_string(entry.display_aspect_ratio_custom_denominator.value());
|
||||||
}
|
}
|
||||||
|
else if (key == "GPURenderer")
|
||||||
|
{
|
||||||
|
if (!entry.gpu_renderer.has_value())
|
||||||
|
return std::nullopt;
|
||||||
|
else
|
||||||
|
return Settings::GetRendererName(entry.gpu_renderer.value());
|
||||||
|
}
|
||||||
else if (key == "GPUDownsampleMode")
|
else if (key == "GPUDownsampleMode")
|
||||||
{
|
{
|
||||||
if (!entry.gpu_downsample_mode.has_value())
|
if (!entry.gpu_downsample_mode.has_value())
|
||||||
|
@ -732,6 +761,13 @@ static void SetEntryValueForKey(Entry& entry, const std::string_view& key, const
|
||||||
entry.cpu_overclock_enable = true;
|
entry.cpu_overclock_enable = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (key == "Enable8MBRAM")
|
||||||
|
{
|
||||||
|
if (!value.has_value())
|
||||||
|
entry.enable_8mb_ram.reset();
|
||||||
|
else
|
||||||
|
entry.enable_8mb_ram = StringUtil::FromChars<bool>(value.value()).value_or(false);
|
||||||
|
}
|
||||||
else if (key == "CDROMReadSpeedup")
|
else if (key == "CDROMReadSpeedup")
|
||||||
{
|
{
|
||||||
if (!value.has_value())
|
if (!value.has_value())
|
||||||
|
@ -767,6 +803,13 @@ static void SetEntryValueForKey(Entry& entry, const std::string_view& key, const
|
||||||
else
|
else
|
||||||
entry.display_aspect_ratio_custom_denominator = StringUtil::FromChars<u16>(value.value());
|
entry.display_aspect_ratio_custom_denominator = StringUtil::FromChars<u16>(value.value());
|
||||||
}
|
}
|
||||||
|
else if (key == "GPURenderer")
|
||||||
|
{
|
||||||
|
if (!value.has_value())
|
||||||
|
entry.gpu_renderer.reset();
|
||||||
|
else
|
||||||
|
entry.gpu_renderer = Settings::ParseRendererName(value->c_str());
|
||||||
|
}
|
||||||
else if (key == "GPUDownsampleMode")
|
else if (key == "GPUDownsampleMode")
|
||||||
{
|
{
|
||||||
if (!value.has_value())
|
if (!value.has_value())
|
||||||
|
@ -1055,6 +1098,8 @@ void Entry::ApplySettings(bool display_osd_messages) const
|
||||||
g_settings.cpu_overclock_denominator = cpu_overclock_denominator.value();
|
g_settings.cpu_overclock_denominator = cpu_overclock_denominator.value();
|
||||||
if (cpu_overclock_enable.has_value())
|
if (cpu_overclock_enable.has_value())
|
||||||
g_settings.cpu_overclock_enable = cpu_overclock_enable.value();
|
g_settings.cpu_overclock_enable = cpu_overclock_enable.value();
|
||||||
|
if (enable_8mb_ram.has_value())
|
||||||
|
g_settings.enable_8mb_ram = enable_8mb_ram.value();
|
||||||
g_settings.UpdateOverclockActive();
|
g_settings.UpdateOverclockActive();
|
||||||
|
|
||||||
if (cdrom_read_speedup.has_value())
|
if (cdrom_read_speedup.has_value())
|
||||||
|
@ -1098,6 +1143,8 @@ void Entry::ApplySettings(bool display_osd_messages) const
|
||||||
if (display_force_4_3_for_24bit.has_value())
|
if (display_force_4_3_for_24bit.has_value())
|
||||||
g_settings.display_force_4_3_for_24bit = display_force_4_3_for_24bit.value();
|
g_settings.display_force_4_3_for_24bit = display_force_4_3_for_24bit.value();
|
||||||
|
|
||||||
|
if (gpu_renderer.has_value())
|
||||||
|
g_settings.gpu_renderer = gpu_renderer.value();
|
||||||
if (gpu_resolution_scale.has_value())
|
if (gpu_resolution_scale.has_value())
|
||||||
g_settings.gpu_resolution_scale = gpu_resolution_scale.value();
|
g_settings.gpu_resolution_scale = gpu_resolution_scale.value();
|
||||||
if (gpu_multisamples.has_value())
|
if (gpu_multisamples.has_value())
|
||||||
|
|
|
@ -54,9 +54,11 @@ struct Entry
|
||||||
std::optional<u32> cpu_overclock_numerator;
|
std::optional<u32> cpu_overclock_numerator;
|
||||||
std::optional<u32> cpu_overclock_denominator;
|
std::optional<u32> cpu_overclock_denominator;
|
||||||
std::optional<bool> cpu_overclock_enable;
|
std::optional<bool> cpu_overclock_enable;
|
||||||
|
std::optional<bool> enable_8mb_ram;
|
||||||
std::optional<u32> cdrom_read_speedup;
|
std::optional<u32> cdrom_read_speedup;
|
||||||
std::optional<DisplayCropMode> display_crop_mode;
|
std::optional<DisplayCropMode> display_crop_mode;
|
||||||
std::optional<DisplayAspectRatio> display_aspect_ratio;
|
std::optional<DisplayAspectRatio> display_aspect_ratio;
|
||||||
|
std::optional<GPURenderer> gpu_renderer;
|
||||||
std::optional<GPUDownsampleMode> gpu_downsample_mode;
|
std::optional<GPUDownsampleMode> gpu_downsample_mode;
|
||||||
std::optional<bool> display_linear_upscaling;
|
std::optional<bool> display_linear_upscaling;
|
||||||
std::optional<bool> display_integer_upscaling;
|
std::optional<bool> display_integer_upscaling;
|
||||||
|
|
Loading…
Reference in a new issue