Skip to content

Commit

Permalink
Change TickSource TickMultiplier from static to an instance variable
Browse files Browse the repository at this point in the history
  • Loading branch information
nico-abram committed Mar 14, 2024
1 parent 2339efa commit 25c3b7d
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 4 deletions.
5 changes: 5 additions & 0 deletions src/Ryujinx.Cpu/ITickSource.cs
Expand Up @@ -13,6 +13,11 @@ public interface ITickSource : ICounter
/// </summary>
TimeSpan ElapsedTime { get; }

/// <summary>
/// Clock tick multiplier, in percent points (100 = 1.0).
/// </summary>
long TickMultiplier { get; set; }

/// <summary>
/// Time elapsed since the counter was created, in seconds.
/// </summary>
Expand Down
4 changes: 2 additions & 2 deletions src/Ryujinx.Cpu/TickSource.cs
Expand Up @@ -15,15 +15,15 @@ public class TickSource : ITickSource
/// <inheritdoc/>
public ulong Counter => (ulong)(ElapsedSeconds * Frequency);

public static long s_tickMultiplier = 100;
public long TickMultiplier { get; set; } = 100;
private static long AcumElapsedTicks = 0;
private static long LastElapsedTicks = 0;
private long Elapsedticks
{
get
{
long elapsedTicks = _tickCounter.ElapsedTicks;
AcumElapsedTicks += (elapsedTicks - LastElapsedTicks) * s_tickMultiplier / 100;
AcumElapsedTicks += (elapsedTicks - LastElapsedTicks) * TickMultiplier / 100;
LastElapsedTicks = elapsedTicks;
return AcumElapsedTicks;
}
Expand Down
Expand Up @@ -89,7 +89,7 @@ private void UpdateSwapInterval(int swapInterval)
}
else
{
_ticksPerFrame = (Stopwatch.Frequency / TargetFps * 100) / TickSource.s_tickMultiplier;
_ticksPerFrame = (Stopwatch.Frequency / TargetFps * 100) / (_device.System?.TickSource?.TickMultiplier ?? 100);
}
}

Expand Down
5 changes: 5 additions & 0 deletions src/Ryujinx.HLE/Switch.cs
Expand Up @@ -126,6 +126,11 @@ public float GetVolume()
return AudioDeviceDriver.Volume;
}

public void SetTickSourceMultiplier(long tickMultiplier)
{
System.TickSource.TickMultiplier = tickMultiplier;
}

public void EnableCheats()
{
ModLoader.EnableCheats(Processes.ActiveApplication.ProgramId, TamperMachine);
Expand Down
2 changes: 1 addition & 1 deletion src/Ryujinx/AppHost.cs
Expand Up @@ -1072,7 +1072,7 @@ private bool UpdateFrame()
{
Device.TurboMode = !Device.TurboMode;
long turboMultiplier = Device.TurboMode ? Device.Configuration.TurboMultiplier : 100;
TickSource.s_tickMultiplier = turboMultiplier;
Device.SetTickSourceMultiplier(turboMultiplier);
}
switch (currentHotkeyState)
{
Expand Down

0 comments on commit 25c3b7d

Please sign in to comment.