From dbc3a5cb2c3cfd912d6f64ad66c847b19675b738 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 26 Apr 2015 12:40:21 +0000 Subject: [PATCH] Apple II - wire up the lag counter, may or may not be correct logic, don't know too much about Apple II internals, but eyeballing the code, it looks like a reasonable place to decide if input was polled. --- .../BizHawk.Emulation.Cores.csproj | 3 +++ .../Computers/AppleII/AppleII.IEmulator.cs | 3 ++- .../Computers/AppleII/AppleII.IStatable.cs | 4 ++++ .../Computers/AppleII/AppleII.cs | 5 +++++ ExternalCoreProjects/Virtu/Machine.cs | 5 ++++- ExternalCoreProjects/Virtu/Memory.cs | 3 ++- References/Virtu.dll | Bin 171008 -> 171520 bytes 7 files changed, 20 insertions(+), 3 deletions(-) diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index 70c819165d..22418902bb 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -122,6 +122,9 @@ AppleII.cs + + AppleII.cs + AppleII.cs diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IEmulator.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IEmulator.cs index cf07fe2e33..2b1726e992 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IEmulator.cs +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IEmulator.cs @@ -34,7 +34,6 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII public IController Controller { get; set; } - public int Frame { get; set; } public string SystemId { get { return "AppleII"; } } @@ -51,6 +50,8 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII public void ResetCounters() { Frame = 0; + LagCount = 0; + IsLagFrame = false; } public CoreComm CoreComm { get; private set; } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IStatable.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IStatable.cs index 99f971cb93..1226b5a44a 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IStatable.cs +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IStatable.cs @@ -22,6 +22,8 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII public void SaveStateBinary(BinaryWriter writer) { writer.Write(Frame); + writer.Write(LagCount); + writer.Write(IsLagFrame); writer.Write(CurrentDisk); _machine.SaveState(writer); } @@ -29,6 +31,8 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII public void LoadStateBinary(BinaryReader reader) { Frame = reader.ReadInt32(); + LagCount = reader.ReadInt32(); + IsLagFrame = reader.ReadBoolean(); CurrentDisk = reader.ReadInt32(); InitDisk(); _machine.LoadState(reader); diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs index 8b4c76f394..08c4e96546 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs @@ -172,6 +172,11 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII _machine.Buttons = GetButtons(); _machine.BizFrameAdvance(); + if (IsLagFrame) + { + LagCount++; + } + Frame++; } diff --git a/ExternalCoreProjects/Virtu/Machine.cs b/ExternalCoreProjects/Virtu/Machine.cs index fe25d4522a..5334d67569 100644 --- a/ExternalCoreProjects/Virtu/Machine.cs +++ b/ExternalCoreProjects/Virtu/Machine.cs @@ -327,7 +327,8 @@ namespace Jellyfish.Virtu public void BizFrameAdvance() { - Services.GetService().Update(); + Lagged = true; + Services.GetService().Update(); Services.GetService().Update(); //frame begins at vsync.. beginning of vblank while (Video.IsVBlank) @@ -384,5 +385,7 @@ namespace Jellyfish.Virtu private AutoResetEvent _pauseEvent = new AutoResetEvent(false); private AutoResetEvent _unpauseEvent = new AutoResetEvent(false); + + public bool Lagged { get; set; } } } diff --git a/ExternalCoreProjects/Virtu/Memory.cs b/ExternalCoreProjects/Virtu/Memory.cs index 991a8335c4..6c90939738 100644 --- a/ExternalCoreProjects/Virtu/Memory.cs +++ b/ExternalCoreProjects/Virtu/Memory.cs @@ -286,7 +286,8 @@ namespace Jellyfish.Virtu [SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode")] private int ReadIoRegionC0C0(int address) { - switch (address) + Machine.Lagged = false; + switch (address) { case 0xC000: case 0xC001: case 0xC002: case 0xC003: case 0xC004: case 0xC005: case 0xC006: case 0xC007: // [7-15] case 0xC008: case 0xC009: case 0xC00A: case 0xC00B: case 0xC00C: case 0xC00D: case 0xC00E: case 0xC00F: diff --git a/References/Virtu.dll b/References/Virtu.dll index accbb4d4f0fdd716cf92e5866a5a31dca25c4deb..13786ad65e46746382e6b72bf0098cb435f95d6e 100644 GIT binary patch delta 41949 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 I$p1n9KT*<}XaE2J