Skip to content

Commit 62ddf36

Browse files
committed
Use PagedStateManager in TAStudio.
1 parent ba96322 commit 62ddf36

File tree

7 files changed

+25
-23
lines changed

7 files changed

+25
-23
lines changed

src/BizHawk.Client.Common/config/MovieConfig.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public interface IMovieConfig
88
public int MovieCompressionLevel { get; }
99
public bool VBAStyleMovieLoadState { get; }
1010
public bool PlaySoundOnMovieEnd { get; set; }
11-
ZwinderStateManagerSettings DefaultTasStateManagerSettings { get; }
11+
PagedStateManager.PagedSettings DefaultTasStateManagerSettings { get; }
1212
}
1313

1414
public class MovieConfig : IMovieConfig
@@ -20,6 +20,6 @@ public class MovieConfig : IMovieConfig
2020
public bool VBAStyleMovieLoadState { get; set; }
2121
public bool PlaySoundOnMovieEnd { get; set; }
2222

23-
public ZwinderStateManagerSettings DefaultTasStateManagerSettings { get; set; } = new ZwinderStateManagerSettings();
23+
public PagedStateManager.PagedSettings DefaultTasStateManagerSettings { get; set; } = new();
2424
}
2525
}

src/BizHawk.Client.Common/movie/interfaces/ITasMovie.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public interface ITasMovie : IMovie, INotifyPropertyChanged, IDisposable
99
bool BindMarkersToInput { get; set; }
1010

1111
IMovieChangeLog ChangeLog { get; }
12-
IStateManager<ZwinderStateManagerSettings> TasStateManager { get; set; }
12+
IStateManager<PagedStateManager.PagedSettings> TasStateManager { get; set; }
1313
Func<string> InputRollSettingsForSave { get; set; }
1414
string InputRollSettings { get; }
1515
ITasMovieRecord this[int index] { get; }

src/BizHawk.Client.Common/movie/tasproj/TasMovie.IO.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,13 +135,13 @@ private void LoadTasprojExtras(ZipStateLoader bl)
135135
}
136136
});
137137

138-
var settings = new ZwinderStateManagerSettings();
138+
PagedStateManager.PagedSettings settings = new();
139139
bl.GetLump(BinaryStateLump.StateHistorySettings, abort: false, tr =>
140140
{
141141
var json = tr.ReadToEnd();
142142
try
143143
{
144-
settings = JsonConvert.DeserializeObject<ZwinderStateManagerSettings>(json);
144+
settings = JsonConvert.DeserializeObject<PagedStateManager.PagedSettings>(json);
145145
}
146146
catch
147147
{
@@ -150,34 +150,33 @@ private void LoadTasprojExtras(ZipStateLoader bl)
150150
});
151151

152152
TasStateManager?.Dispose();
153+
bool badHistory = false;
153154
var hasHistory = bl.GetLump(BinaryStateLump.StateHistory, abort: false, br =>
154155
{
155156
try
156157
{
157-
TasStateManager = new ZwinderStateManager(settings, IsReserved);
158+
TasStateManager = new PagedStateManager(settings, IsReserved);
158159
TasStateManager.LoadStateHistory(br);
159160
}
160161
catch
161162
{
162163
// Continue with a fresh manager. If state history got corrupted, the file is still very much useable
163164
// and we would want the user to be able to load, and regenerate their state history
164165
// however, we still have an issue of how state history got corrupted
165-
TasStateManager = new ZwinderStateManager(
166-
Session.Settings.DefaultTasStateManagerSettings,
167-
IsReserved);
166+
badHistory = true;
168167
Session.PopupMessage("State history was corrupted, clearing and working with a fresh history.");
169168
}
170169
});
171170

172-
if (!hasHistory)
171+
if (!hasHistory || badHistory)
173172
{
174173
try
175174
{
176-
TasStateManager = new ZwinderStateManager(settings, IsReserved);
175+
TasStateManager = new PagedStateManager(settings, IsReserved);
177176
}
178177
catch
179178
{
180-
TasStateManager = new ZwinderStateManager(
179+
TasStateManager = new PagedStateManager(
181180
Session.Settings.DefaultTasStateManagerSettings,
182181
IsReserved);
183182
}

src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public override void Attach(IEmulator emulator)
4141

4242
_inputPollable = emulator.AsInputPollable();
4343

44-
TasStateManager ??= new ZwinderStateManager(Session.Settings.DefaultTasStateManagerSettings, IsReserved);
44+
TasStateManager ??= new PagedStateManager(Session.Settings.DefaultTasStateManagerSettings, IsReserved);
4545
if (StartsFromSavestate)
4646
{
4747
TasStateManager.Engage(BinarySavestate);
@@ -81,7 +81,7 @@ public override bool StartsFromSavestate
8181
public TasLagLog LagLog { get; } = new TasLagLog();
8282

8383
public override string PreferredExtension => Extension;
84-
public IStateManager<ZwinderStateManagerSettings> TasStateManager { get; set; }
84+
public IStateManager<PagedStateManager.PagedSettings> TasStateManager { get; set; }
8585

8686
public Action<int> GreenzoneInvalidated { get; set; }
8787

src/BizHawk.Client.EmuHawk/tools/TAStudio/GreenzoneSettings.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ namespace BizHawk.Client.EmuHawk
66
{
77
public partial class GreenzoneSettings : Form, IDialogParent
88
{
9-
private readonly Action<ZwinderStateManagerSettings, bool> _saveSettings;
10-
private ZwinderStateManagerSettings _settings;
9+
private readonly Action<PagedStateManager.PagedSettings, bool> _saveSettings;
10+
private PagedStateManager.PagedSettings _settings;
1111
private readonly bool _isDefault;
1212

1313
public IDialogController DialogController { get; }
1414

15-
public GreenzoneSettings(IDialogController dialogController, ZwinderStateManagerSettings settings, Action<ZwinderStateManagerSettings, bool> saveSettings, bool isDefault)
15+
public GreenzoneSettings(IDialogController dialogController, PagedStateManager.PagedSettings settings, Action<PagedStateManager.PagedSettings, bool> saveSettings, bool isDefault)
1616
{
1717
DialogController = dialogController;
1818
InitializeComponent();
@@ -45,7 +45,7 @@ private void CancelBtn_Click(object sender, EventArgs e)
4545

4646
private void DefaultsButton_Click(object sender, EventArgs e)
4747
{
48-
_settings = new ZwinderStateManagerSettings();
48+
_settings = new PagedStateManager.PagedSettings();
4949
SettingsPropertyGrid.SelectedObject = _settings;
5050
}
5151
}

src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -915,7 +915,7 @@ private void StateHistorySettingsMenuItem_Click(object sender, EventArgs e)
915915
{
916916
using GreenzoneSettings form = new(
917917
DialogController,
918-
new ZwinderStateManagerSettings(CurrentTasMovie.TasStateManager.Settings),
918+
new PagedStateManager.PagedSettings(CurrentTasMovie.TasStateManager.Settings),
919919
(s, k) => { CurrentTasMovie.TasStateManager = CurrentTasMovie.TasStateManager.UpdateSettings(s, k); },
920920
false)
921921
{
@@ -955,7 +955,7 @@ private void DefaultStateSettingsMenuItem_Click(object sender, EventArgs e)
955955
{
956956
using GreenzoneSettings form = new(
957957
DialogController,
958-
new ZwinderStateManagerSettings(Config.Movies.DefaultTasStateManagerSettings),
958+
new PagedStateManager.PagedSettings(Config.Movies.DefaultTasStateManagerSettings),
959959
(s, k) => { Config.Movies.DefaultTasStateManagerSettings = s; },
960960
true)
961961
{

src/BizHawk.Tests/Client.Common/config/SerializationStabilityTests.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ public sealed class SerializationStabilityTests
1616

1717
private const string RECENT_SER = @"{""recentlist"":[],""MAX_RECENT_FILES"":8,""AutoLoad"":false,""Frozen"":false}";
1818

19-
private const string ZWINDER_SER = @"{""CurrentUseCompression"":false,""CurrentBufferSize"":256,""CurrentTargetFrameLength"":500,""CurrentStoreType"":0,""RecentUseCompression"":false,""RecentBufferSize"":128,""RecentTargetFrameLength"":2000,""RecentStoreType"":0,""GapsUseCompression"":false,""GapsBufferSize"":64,""GapsTargetFrameLength"":125,""GapsStoreType"":0,""AncientStateInterval"":5000,""AncientStoreType"":0}";
19+
//private const string ZWINDER_SER = @"{""CurrentUseCompression"":false,""CurrentBufferSize"":256,""CurrentTargetFrameLength"":500,""CurrentStoreType"":0,""RecentUseCompression"":false,""RecentBufferSize"":128,""RecentTargetFrameLength"":2000,""RecentStoreType"":0,""GapsUseCompression"":false,""GapsBufferSize"":64,""GapsTargetFrameLength"":125,""GapsStoreType"":0,""AncientStateInterval"":5000,""AncientStoreType"":0}";
20+
21+
private const string PAGED_SER = @"{""TotalMemoryLimitMB"":1024,""FramesBetweenNewStates"":4,""FramesBetweenMidStates"":20,""FramesBetweenOldStates"":400,""NewToMidRatio"":2.0,""FramesBetweenSavedStates"":100,""ForceSaveMarkerStates"":false}";
2022

2123
#if NET5_0_OR_GREATER
2224
private static readonly IReadOnlySet<Type> KnownGoodFromStdlib = new HashSet<Type>
@@ -45,14 +47,15 @@ public sealed class SerializationStabilityTests
4547
[typeof(CheatConfig)] = $@"{{""DisableOnLoad"":false,""LoadFileByGame"":true,""AutoSaveOnClose"":true,""Recent"":{RECENT_SER}}}",
4648
[typeof(FeedbackBind)] = @"{""Channels"":""Left+Right"",""GamepadPrefix"":""X1 "",""Prescale"":1.0}",
4749
[typeof(MessagePosition)] = @"{""X"":0,""Y"":0,""Anchor"":0}",
48-
[typeof(MovieConfig)] = $@"{{""MovieEndAction"":3,""EnableBackupMovies"":true,""MoviesOnDisk"":false,""MovieCompressionLevel"":2,""VBAStyleMovieLoadState"":false,""PlaySoundOnMovieEnd"":false,""DefaultTasStateManagerSettings"":{ZWINDER_SER}}}",
50+
[typeof(MovieConfig)] = $@"{{""MovieEndAction"":3,""EnableBackupMovies"":true,""MoviesOnDisk"":false,""MovieCompressionLevel"":2,""VBAStyleMovieLoadState"":false,""PlaySoundOnMovieEnd"":false,""DefaultTasStateManagerSettings"":{PAGED_SER}}}",
4951
[typeof(PathEntry)] = PATHENTRY_SER,
5052
[typeof(PathEntryCollection)] = $@"{{""Paths"":[{PATHENTRY_SER}],""UseRecentForRoms"":false,""LastRomPath"":"".""}}",
5153
[typeof(RecentFiles)] = RECENT_SER,
5254
[typeof(RewindConfig)] = @"{""UseCompression"":false,""UseDelta"":false,""Enabled"":true,""AllowSlowStates"":false,""BufferSize"":512,""UseFixedRewindInterval"":false,""TargetFrameLength"":600,""TargetRewindInterval"":5,""AllowOutOfOrderStates"":true,""BackingStore"":0}",
5355
[typeof(SaveStateConfig)] = @"{""Type"":0,""CompressionLevelNormal"":1,""CompressionLevelRewind"":0,""MakeBackups"":true,""SaveScreenshot"":true,""BigScreenshotSize"":131072,""NoLowResLargeScreenshots"":false}",
5456
[typeof(ToolDialogSettings)] = @"{""_wndx"":52,""_wndy"":44,""Width"":796,""Height"":455,""SaveWindowPosition"":true,""TopMost"":false,""FloatingWindow"":true,""AutoLoad"":false}",
55-
[typeof(ZwinderStateManagerSettings)] = ZWINDER_SER,
57+
//[typeof(ZwinderStateManagerSettings)] = ZWINDER_SER,
58+
[typeof(PagedStateManager.PagedSettings)] = PAGED_SER,
5659
};
5760

5861
[TestMethod]

0 commit comments

Comments
 (0)