Add Turbo Mode to CPU settings

This commit is contained in:
KeatonTheBot
2026-09-05 14:13:06 -05:00
parent 19a8d1445e
commit 2cce274f58
4 changed files with 76 additions and 4 deletions
@@ -78,6 +78,7 @@ namespace Ryujinx.UI.Common.Helper
ConfigurationState.Instance.System.EnableLowPowerPptc.Value = customSettingsModel.EnableLowPowerPptc;
ConfigurationState.Instance.System.MemoryManagerMode.Value = (MemoryManagerMode)customSettingsModel.MemoryManagerMode;
ConfigurationState.Instance.System.UseHypervisor.Value = customSettingsModel.UseHypervisor;
ConfigurationState.Instance.System.TickScalar.Value = customSettingsModel.TickScalar;
ConfigurationState.Instance.System.AudioBackend.Value = customSettingsModel.AudioBackend;
ConfigurationState.Instance.System.AudioVolume.Value = customSettingsModel.AudioVolume;
ConfigurationState.Instance.Graphics.GraphicsBackend.Value = (GraphicsBackend)customSettingsModel.GraphicsBackend;
@@ -19,6 +19,7 @@ namespace Ryujinx.UI.Common.Models
public bool EnableLowPowerPptc { get; set; }
public int MemoryManagerMode { get; set; }
public bool UseHypervisor { get; set; }
public long TickScalar { get; set; }
public int GraphicsBackend { get; set; }
public string PreferredGpu { get; set; }
public bool EnableShaderCache { get; set; }
@@ -28,9 +29,6 @@ namespace Ryujinx.UI.Common.Models
public float ResScale { get; set; }
public float MaxAnisotropy { get; set; }
public int BackendThreading { get; set; }
public int IsOpenAlEnabled { get; set; }
public int IsSDL2Enabled { get; set; }
public int IsSoundIoEnabled { get; set; }
public AudioBackend AudioBackend { get; set; }
public float AudioVolume { get; set; }
}
@@ -116,10 +116,28 @@ namespace Ryujinx.Ava.UI.ViewModels
public int DramSize { get; set; }
public bool EnableFsIntegrityChecks { get; set; }
public bool IgnoreMissingServices { get; set; }
// CPU settings
public bool EnablePptc { get; set; }
public bool EnableLowPowerPptc { get; set; }
public int MemoryManagerMode { get; set; }
public bool UseHypervisor { get; set; }
public long TurboMultiplier
{
get;
set
{
if (field != value)
{
field = value;
OnPropertyChanged();
OnPropertyChanged((nameof(TurboMultiplierPercentageText)));
}
}
}
public string TurboMultiplierPercentageText => $"{TurboMultiplier}%";
// Graphics settings
public int VSyncMode { get; set; }
@@ -235,6 +253,7 @@ namespace Ryujinx.Ava.UI.ViewModels
EnableLowPowerPptc = config.System.EnableLowPowerPptc.Value;
MemoryManagerMode = (int)config.System.MemoryManagerMode.Value;
UseHypervisor = config.System.UseHypervisor.Value;
TurboMultiplier = config.System.TickScalar.Value;
GraphicsBackend = (int)config.Graphics.GraphicsBackend.Value;
PreferredGpuIndex = ComputePreferredGpuIndex(config.Graphics.PreferredGpu.Value);
EnableShaderCache = config.Graphics.EnableShaderCache.Value;
@@ -261,6 +280,7 @@ namespace Ryujinx.Ava.UI.ViewModels
EnableLowPowerPptc = CustomSettingsModel.EnableLowPowerPptc;
MemoryManagerMode = CustomSettingsModel.MemoryManagerMode;
UseHypervisor = CustomSettingsModel.UseHypervisor;
TurboMultiplier = CustomSettingsModel.TickScalar;
GraphicsBackend = CustomSettingsModel.GraphicsBackend;
PreferredGpuIndex = ComputePreferredGpuIndex(CustomSettingsModel.PreferredGpu);
EnableShaderCache = CustomSettingsModel.EnableShaderCache;
@@ -297,6 +317,7 @@ namespace Ryujinx.Ava.UI.ViewModels
CustomSettingsModel.EnableLowPowerPptc = EnableLowPowerPptc;
CustomSettingsModel.MemoryManagerMode = MemoryManagerMode;
CustomSettingsModel.UseHypervisor = UseHypervisor;
CustomSettingsModel.TickScalar = TurboMultiplier;
CustomSettingsModel.GraphicsBackend = GraphicsBackend;
CustomSettingsModel.PreferredGpu = ComputePreferredGpu(PreferredGpuIndex);
CustomSettingsModel.EnableShaderCache = EnableShaderCache;
@@ -6,10 +6,11 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
mc:Ignorable="d"
x:DataType="viewModels:CustomSettingsViewModel">
<Design.DataContext>
<viewModels:CustomSettingsViewModel />
<viewModels:SettingsViewModel />
</Design.DataContext>
<ScrollViewer
Name="CpuPage"
@@ -70,6 +71,57 @@
ToolTip.Tip="{locale:Locale UseHypervisorTooltip}" />
</CheckBox>
</StackPanel>
<Separator Height="1" />
<StackPanel
Orientation="Vertical"
Spacing="5">
<TextBlock
Classes="h1"
Text="{locale:Locale SettingsTabSystemHacks}" />
<TextBlock
Foreground="{DynamicResource SecondaryTextColor}"
TextDecorations="Underline"
Text="{locale:Locale SettingsTabSystemHacksNote}" />
</StackPanel>
<StackPanel
Margin="10,0,0,0"
HorizontalAlignment="Stretch"
Orientation="Vertical">
<StackPanel Margin="0,0,0,10"
Orientation="Horizontal">
<TextBlock
VerticalAlignment="Center"
Background="Transparent"
Text="{locale:Locale SettingsTabSystemTurboMultiplier}"
ToolTip.Tip="{locale:Locale SettingsTabSystemTurboMultiplierToolTip}"
Width="250" />
<ui:NumberBox ToolTip.Tip="{locale:Locale SettingsTabSystemTurboMultiplierValueToolTip}"
Value="{Binding TurboMultiplier}"
Width="165"
SmallChange="1.0"
LargeChange="10"
SimpleNumberFormat="F0"
SpinButtonPlacementMode="Hidden"
Minimum="50"
Maximum="1000" />
<Slider Value="{Binding TurboMultiplier}"
ToolTip.Tip="{locale:Locale SettingsTabSystemTurboMultiplierValueToolTip}"
MinWidth="175"
Margin="10,-3,0,0"
Height="32"
Padding="0,-5"
TickFrequency="1"
IsSnapToTickEnabled="True"
LargeChange="10"
SmallChange="1"
VerticalAlignment="Center"
Minimum="50"
Maximum="1000" />
<TextBlock Margin="5,0"
Width="40"
Text="{Binding TurboMultiplierPercentageText}"/>
</StackPanel>
</StackPanel>
</StackPanel>
</Border>
</ScrollViewer>