diff --git a/ChocolArm64/ATranslatorCache.cs b/ChocolArm64/ATranslatorCache.cs
index 218442aeb4..2d6af90b4e 100644
--- a/ChocolArm64/ATranslatorCache.cs
+++ b/ChocolArm64/ATranslatorCache.cs
@@ -138,7 +138,7 @@ namespace ChocolArm64
CacheBucket Bucket = Cache[Node.Value];
- long TimeDelta = RingDelta(Bucket.Timestamp, Timestamp);
+ long TimeDelta = Bucket.Timestamp - Timestamp;
if (TimeDelta <= MinTimeDelta)
{
@@ -159,12 +159,7 @@ namespace ChocolArm64
{
long timestamp = Stopwatch.GetTimestamp();
- return (long)(timestamp * (1000.0f / Stopwatch.Frequency));
- }
-
- private static long RingDelta(long Old, long New)
- {
- return New - Old;
+ return timestamp / (Stopwatch.Frequency / 1000);
}
}
}
\ No newline at end of file
diff --git a/Ryujinx.Common/PerformanceCounter.cs b/Ryujinx.Common/PerformanceCounter.cs
index 01ebdd7904..cd5fb1954a 100644
--- a/Ryujinx.Common/PerformanceCounter.cs
+++ b/Ryujinx.Common/PerformanceCounter.cs
@@ -4,6 +4,40 @@ namespace Ryujinx.Common
{
public static class PerformanceCounter
{
+ static PerformanceCounter()
+ {
+ TicksPerMillisecond = Stopwatch.Frequency / 1000;
+ TicksPerSecond = Stopwatch.Frequency;
+ TicksPerMinute = TicksPerSecond * 60;
+ TicksPerHour = TicksPerMinute * 60;
+ TicksPerDay = TicksPerHour * 24;
+ }
+
+ ///
+ /// Represents the number of ticks in 1 day.
+ ///
+ public static long TicksPerDay { get; }
+
+ ///
+ /// Represents the number of ticks in 1 hour.
+ ///
+ public static long TicksPerHour { get; }
+
+ ///
+ /// Represents the number of ticks in 1 minute.
+ ///
+ public static long TicksPerMinute { get; }
+
+ ///
+ /// Represents the number of ticks in 1 second.
+ ///
+ public static long TicksPerSecond { get; }
+
+ ///
+ /// Represents the number of ticks in 1 millisecond.
+ ///
+ public static long TicksPerMillisecond { get; }
+
///
/// Gets the number of milliseconds elapsed since the system started.
///
@@ -13,7 +47,20 @@ namespace Ryujinx.Common
{
long timestamp = Stopwatch.GetTimestamp();
- return (long)(timestamp * (1000.0f / Stopwatch.Frequency));
+ return timestamp;
+ }
+ }
+
+ ///
+ /// Gets the number of milliseconds elapsed since the system started.
+ ///
+ public static long ElapsedMilliseconds
+ {
+ get
+ {
+ long timestamp = Stopwatch.GetTimestamp();
+
+ return timestamp / TicksPerMillisecond;
}
}
}
diff --git a/Ryujinx.Graphics/Gal/OpenGL/OGLCachedResource.cs b/Ryujinx.Graphics/Gal/OpenGL/OGLCachedResource.cs
index c9c3e41a11..a65ebcbbc2 100644
--- a/Ryujinx.Graphics/Gal/OpenGL/OGLCachedResource.cs
+++ b/Ryujinx.Graphics/Gal/OpenGL/OGLCachedResource.cs
@@ -27,7 +27,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
this.DataSize = DataSize;
this.Node = Node;
- Timestamp = PerformanceCounter.ElapsedTicks;
+ Timestamp = PerformanceCounter.ElapsedMilliseconds;
}
}
@@ -142,7 +142,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
private void ClearCacheIfNeeded()
{
- long Timestamp = PerformanceCounter.ElapsedTicks;
+ long Timestamp = PerformanceCounter.ElapsedMilliseconds;
int Count = 0;
@@ -157,7 +157,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
CacheBucket Bucket = Cache[Node.Value];
- long TimeDelta = RingDelta(Bucket.Timestamp, Timestamp);
+ long TimeDelta = Bucket.Timestamp - Timestamp;
if ((uint)TimeDelta <= (uint)MaxTimeDelta)
{
@@ -171,10 +171,5 @@ namespace Ryujinx.Graphics.Gal.OpenGL
DeleteValueCallback(Bucket.Value);
}
}
-
- private long RingDelta(long Old, long New)
- {
- return New - Old;
- }
}
}
\ No newline at end of file
diff --git a/Ryujinx.Graphics/NvGpuEngine3d.cs b/Ryujinx.Graphics/NvGpuEngine3d.cs
index 7bca66abe2..976e8d7cfc 100644
--- a/Ryujinx.Graphics/NvGpuEngine3d.cs
+++ b/Ryujinx.Graphics/NvGpuEngine3d.cs
@@ -851,7 +851,7 @@ namespace Ryujinx.Graphics
//TODO: Implement counters.
long Counter = 1;
- long Timestamp = PerformanceCounter.ElapsedTicks;
+ long Timestamp = PerformanceCounter.ElapsedMilliseconds;
Timestamp = (long)(Timestamp * 615384.615385);
diff --git a/Ryujinx.HLE/HOS/Kernel/KCoreContext.cs b/Ryujinx.HLE/HOS/Kernel/KCoreContext.cs
index 2e6f5c5726..02354e16ad 100644
--- a/Ryujinx.HLE/HOS/Kernel/KCoreContext.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KCoreContext.cs
@@ -26,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Kernel
if (Thread != null)
{
- Thread.LastScheduledTicks = PerformanceCounter.ElapsedTicks;
+ Thread.LastScheduledTicks = PerformanceCounter.ElapsedMilliseconds;
}
if (SelectedThread != CurrentThread)
diff --git a/Ryujinx.HLE/Hid/Hid.cs b/Ryujinx.HLE/Hid/Hid.cs
index 3416a4cb54..3fb5a34c3c 100644
--- a/Ryujinx.HLE/Hid/Hid.cs
+++ b/Ryujinx.HLE/Hid/Hid.cs
@@ -216,7 +216,7 @@ namespace Ryujinx.HLE.Input
private static long GetTimestamp()
{
- return PerformanceCounter.ElapsedTicks * 19200;
+ return PerformanceCounter.ElapsedMilliseconds * 19200;
}
}
}