From f8b39141262d5a4d5348973885f62f02a1d686a0 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Mon, 7 Aug 2023 02:32:32 -0700 Subject: [PATCH] fix broken movie length calculation this happened to work by chance most of the time, but for movies which cant store the number of milliseconds in an int, it breaks down --- src/BizHawk.Client.Common/movie/BasicMovieInfo.cs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/BizHawk.Client.Common/movie/BasicMovieInfo.cs b/src/BizHawk.Client.Common/movie/BasicMovieInfo.cs index 0fef228bc5..82361ffc24 100644 --- a/src/BizHawk.Client.Common/movie/BasicMovieInfo.cs +++ b/src/BizHawk.Client.Common/movie/BasicMovieInfo.cs @@ -45,26 +45,21 @@ namespace BizHawk.Client.Common { get { - double dblSeconds; + double numSeconds; if (Header.TryGetValue(HeaderKeys.CycleCount, out var numCyclesStr) && Header.TryGetValue(HeaderKeys.ClockRate, out var clockRateStr)) { var numCycles = Convert.ToUInt64(numCyclesStr); var clockRate = Convert.ToDouble(clockRateStr, CultureInfo.InvariantCulture); - dblSeconds = numCycles / clockRate; + numSeconds = numCycles / clockRate; } else { var numFrames = (ulong)FrameCount; - dblSeconds = numFrames / FrameRate; + numSeconds = numFrames / FrameRate; } - var seconds = (int)(dblSeconds % 60); - var days = seconds / 86400; - var hours = seconds / 3600; - var minutes = (seconds / 60) % 60; - var milliseconds = (int)((dblSeconds - seconds) * 1000); - return new TimeSpan(days, hours, minutes, seconds, milliseconds); + return TimeSpan.FromSeconds(numSeconds); } }