diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs b/src/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs index 49765bffba..3c4dc036d1 100644 --- a/src/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs +++ b/src/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs @@ -25,13 +25,12 @@ namespace BizHawk.Client.Common private readonly ITasMovie _movie; private readonly SortedList _states; - private readonly ulong _expectedStateSize; + private readonly double _expectedStateSizeInMb; private ulong _used; private int _stateFrequency; - private int MaxStates => (int)(Settings.Cap / _expectedStateSize) + - (int)((ulong)Settings.DiskCapacityMb * 1024 * 1024 / _expectedStateSize); + private int MaxStates => (int)(Settings.CapacityMb / _expectedStateSizeInMb + 1); private int FileStateGap => 1 << Settings.FileStateGap; /// loaded core expects savestate size of 0 B @@ -47,8 +46,8 @@ namespace BizHawk.Client.Common _decay = new StateManagerDecay(_movie, this); - _expectedStateSize = (ulong)Core.CloneSavestate().Length; // TODO: why do we store this in a ulong? - if (_expectedStateSize == 0) + _expectedStateSizeInMb = Core.CloneSavestate().Length / (double)(1024 * 1024); + if (_expectedStateSizeInMb.HawkFloatEquality(0)) { throw new InvalidOperationException("Savestate size can not be zero!"); } @@ -103,7 +102,7 @@ namespace BizHawk.Client.Common public void UpdateStateFrequency() { - _stateFrequency = ((int)_expectedStateSize / Settings.MemStateGapDivider / 1024) + _stateFrequency = ((int)_expectedStateSizeInMb / Settings.MemStateGapDivider / 1024) .Clamp(MinFrequency, MaxFrequency); _decay.UpdateSettings(MaxStates, _stateFrequency, 4); diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasStateManagerSettings.cs b/src/BizHawk.Client.Common/movie/tasproj/TasStateManagerSettings.cs index 3da6d23119..31e0b0fbf4 100644 --- a/src/BizHawk.Client.Common/movie/tasproj/TasStateManagerSettings.cs +++ b/src/BizHawk.Client.Common/movie/tasproj/TasStateManagerSettings.cs @@ -1,5 +1,4 @@ using System.ComponentModel; -using Newtonsoft.Json; namespace BizHawk.Client.Common { @@ -64,12 +63,5 @@ namespace BizHawk.Client.Common [DisplayName("State interval for .tasproj")] [Description("The actual state gap in frames is calculated as Nth power on 2")] public int FileStateGap { get; set; } - - /// - /// The memory state capacity in bytes. - /// - [JsonIgnore] - [Browsable(false)] - public ulong Cap => (ulong)CapacityMb * 1024UL * 1024UL; } }