diff --git a/clean.sh b/clean.sh index e25b8031..ae12a585 100755 --- a/clean.sh +++ b/clean.sh @@ -1 +1,9 @@ rm *.zip +rm -rf src/Zen.Common/bin +rm -rf src/Zen.System/bin +rm -rf src/Zen.Z80/bin +rm -rf src/Zen.Z80.Tests/bin +rm -rf src/Zen.Desktop.Host/bin +rm -rf src/Zen.Utilities/bin +rm -rf src/Zen.Z80.Test.JSMoo/bin +rm -rf src/Zen.Z80.Tests.Fuse/bin diff --git a/src/Zen.Desktop.Host/Infrastructure/Host.cs b/src/Zen.Desktop.Host/Infrastructure/Host.cs index b2616199..e9325d21 100644 --- a/src/Zen.Desktop.Host/Infrastructure/Host.cs +++ b/src/Zen.Desktop.Host/Infrastructure/Host.cs @@ -22,8 +22,6 @@ namespace Zen.Desktop.Host.Infrastructure; public class Host : Game { - private const int StartPause = 30; - // ReSharper disable once PrivateFieldCanBeConvertedToLocalVariable private readonly GraphicsDeviceManager _graphicsDeviceManager; @@ -41,8 +39,6 @@ public class Host : Game private MenuSystem _menuSystem; - private int? _pause = StartPause; - private bool _soundState; private WaveVisualiser _waveVisualiser; @@ -122,6 +118,14 @@ private void SetMotherboard(Model model) _motherboard.Fast = AppSettings.Instance.Speed == Speed.Fast; _motherboard.Slow = AppSettings.Instance.Speed == Speed.Slow; + if (AppSettings.Instance.Speed == Speed.Locked) + { + _motherboard.Worker.Locked = true; + _motherboard.AyAudio.Locked = true; + + TargetElapsedTime = TimeSpan.FromMilliseconds(20); + } + _imageName = $"Standard {model} ROM"; AppSettings.Instance.SystemModel = model; @@ -152,8 +156,6 @@ protected override void OnActivated(object sender, EventArgs args) { _motherboard.Start(); - _motherboard.Pause(); - _hostStarted = true; _motherboard.Fast = AppSettings.Instance.Speed == Speed.Fast; @@ -216,16 +218,9 @@ private void ScanComplete() protected override void Update(GameTime gameTime) { - if (_pause != null) + if (AppSettings.Instance.Speed == Speed.Locked) { - _pause--; - } - - if (_pause == 0) - { - _pause = null; - - _motherboard.Resume(); + _motherboard.Worker.RunFrame(); } if (Keyboard.GetState().IsKeyDown(Keys.Tab) && _menuSystem == null) @@ -261,7 +256,6 @@ private void MenuFinished(MenuResult result, object arguments) SetMotherboard((Model) arguments); _motherboard.Fast = false; _motherboard.Slow = false; - _motherboard.AyAudio.BufferSize = System.Modules.Audio.Constants.DefaultBufferSize; AppSettings.Instance.Speed = Speed.Normal; _motherboard.Start(); @@ -278,35 +272,40 @@ private void MenuFinished(MenuResult result, object arguments) case MenuResult.SpeedNormal: _motherboard.Fast = false; _motherboard.Slow = false; - _motherboard.AyAudio.BufferSize = System.Modules.Audio.Constants.DefaultBufferSize; + _motherboard.Worker.Locked = false; + _motherboard.AyAudio.Locked = false; + + TargetElapsedTime = TimeSpan.FromTicks(166667L); + + break; + + case MenuResult.SpeedLocked: + _motherboard.Fast = false; + _motherboard.Slow = false; + _motherboard.Worker.Locked = true; + _motherboard.AyAudio.Locked = true; + + TargetElapsedTime = TimeSpan.FromMilliseconds(20); break; case MenuResult.SpeedFast: _motherboard.Fast = true; _motherboard.Slow = false; - _motherboard.AyAudio.BufferSize = System.Modules.Audio.Constants.DefaultBufferSize; + _motherboard.Worker.Locked = false; + _motherboard.AyAudio.Locked = false; + + TargetElapsedTime = TimeSpan.FromTicks(166667L); break; case MenuResult.SpeedSlow: _motherboard.Fast = false; _motherboard.Slow = true; - _motherboard.AyAudio.BufferSize = System.Modules.Audio.Constants.DefaultBufferSize; - - break; - - case MenuResult.SpeedHalf: - _motherboard.Fast = false; - _motherboard.Slow = false; - _motherboard.AyAudio.BufferSize = System.Modules.Audio.Constants.DefaultBufferSize * 2; - - break; - - case MenuResult.SpeedQuarter: - _motherboard.Fast = false; - _motherboard.Slow = false; - _motherboard.AyAudio.BufferSize = System.Modules.Audio.Constants.DefaultBufferSize * 4; + _motherboard.Worker.Locked = false; + _motherboard.AyAudio.Locked = false; + + TargetElapsedTime = TimeSpan.FromTicks(166667L); break; diff --git a/src/Zen.Desktop.Host/Infrastructure/Menu/MenuResult.cs b/src/Zen.Desktop.Host/Infrastructure/Menu/MenuResult.cs index a71e4ec5..121c2495 100644 --- a/src/Zen.Desktop.Host/Infrastructure/Menu/MenuResult.cs +++ b/src/Zen.Desktop.Host/Infrastructure/Menu/MenuResult.cs @@ -10,8 +10,7 @@ public enum MenuResult SpeedNormal, SpeedFast, SpeedSlow, - SpeedQuarter, - SpeedHalf, + SpeedLocked, SaveState, LoadState, ChangeScale, diff --git a/src/Zen.Desktop.Host/Infrastructure/Menu/SpeedMenu.cs b/src/Zen.Desktop.Host/Infrastructure/Menu/SpeedMenu.cs index 2dd8a581..cd6e8c9f 100644 --- a/src/Zen.Desktop.Host/Infrastructure/Menu/SpeedMenu.cs +++ b/src/Zen.Desktop.Host/Infrastructure/Menu/SpeedMenu.cs @@ -13,13 +13,13 @@ public override List