diff --git a/src/BizHawk.Client.EmuHawk/config/RewindConfig.Designer.cs b/src/BizHawk.Client.EmuHawk/config/RewindConfig.Designer.cs index baee3cdc4f..56e15d6cba 100755 --- a/src/BizHawk.Client.EmuHawk/config/RewindConfig.Designer.cs +++ b/src/BizHawk.Client.EmuHawk/config/RewindConfig.Designer.cs @@ -277,6 +277,7 @@ 0, 0, 0}); + this.TargetFrameLengthNumeric.ValueChanged += new System.EventHandler(this.FrameLength_ValueChanged); // // TargetRewindIntervalNumeric // @@ -299,6 +300,7 @@ 0, 0, 0}); + this.TargetRewindIntervalNumeric.ValueChanged += new System.EventHandler(this.RewindInterval_ValueChanged); // // EstTimeLabel // @@ -550,6 +552,7 @@ this.TargetRewindIntervalRadioButton.TabStop = true; this.TargetRewindIntervalRadioButton.Text = "Rewinds every fixed number of frames: "; this.TargetRewindIntervalRadioButton.UseVisualStyleBackColor = true; + this.TargetRewindIntervalRadioButton.CheckedChanged += new System.EventHandler(this.RewindInterval_CheckedChanged); // // RewindConfig // @@ -636,4 +639,4 @@ private System.Windows.Forms.RadioButton TargetFrameLengthRadioButton; private System.Windows.Forms.RadioButton TargetRewindIntervalRadioButton; } -} \ No newline at end of file +} diff --git a/src/BizHawk.Client.EmuHawk/config/RewindConfig.cs b/src/BizHawk.Client.EmuHawk/config/RewindConfig.cs index a6c6f1a1f8..6076cac6af 100755 --- a/src/BizHawk.Client.EmuHawk/config/RewindConfig.cs +++ b/src/BizHawk.Client.EmuHawk/config/RewindConfig.cs @@ -157,15 +157,24 @@ namespace BizHawk.Client.EmuHawk double estFrames = 0.0; var bufferSize = 1L << (int) BufferSizeUpDown.Value; labelEx1.Text = bufferSize.ToString(); + int calculatedRewindInterval = TargetRewindIntervalRadioButton.Checked ? (int) TargetRewindIntervalNumeric.Value : 1; if (_avgStateSize is not 0UL) { bufferSize *= 1024 * 1024; estFrames = bufferSize / (double) _avgStateSize; + if (TargetFrameLengthRadioButton.Checked) + calculatedRewindInterval = (int) Math.Ceiling((int) TargetFrameLengthNumeric.Value / estFrames); } ApproxFramesLabel.Text = $"{estFrames:n0} frames"; - EstTimeLabel.Text = $"{estFrames / _framerate / 60.0:n} minutes"; + EstTimeLabel.Text = $"{estFrames / _framerate / 60.0 * calculatedRewindInterval:n} minutes"; } + private void FrameLength_ValueChanged(object sender, EventArgs e) => CalculateEstimates(); + + private void RewindInterval_ValueChanged(object sender, EventArgs e) => CalculateEstimates(); + + private void RewindInterval_CheckedChanged(object sender, EventArgs e) => CalculateEstimates(); + private void BufferSizeUpDown_ValueChanged(object sender, EventArgs e) { CalculateEstimates();