Intellivision - stubs for savestate logic

This commit is contained in:
adelikat 2016-12-04 08:25:17 -06:00
parent da2d15341f
commit e9d1af2b0c
10 changed files with 136 additions and 10 deletions

View File

@ -404,7 +404,9 @@
<Compile Include="Consoles\Intellivision\Controllers\IntellivisionControllerDeck.cs" />
<Compile Include="Consoles\Intellivision\ICart.cs" />
<Compile Include="Consoles\Intellivision\Intellicart.cs" />
<Compile Include="Consoles\Intellivision\Intellivision.ISettable.cs" />
<Compile Include="Consoles\Intellivision\Intellivision.ISettable.cs">
<DependentUpon>Intellivision.cs</DependentUpon>
</Compile>
<Compile Include="Consoles\Intellivision\Controllers\IntellivisionControllers.cs" />
<Compile Include="Consoles\Intellivision\Intellivision.cs" />
<Compile Include="Consoles\Intellivision\Intellivision.IEmulator.cs">
@ -413,6 +415,9 @@
<Compile Include="Consoles\Intellivision\Intellivision.IMemoryDomains.cs">
<DependentUpon>Intellivision.cs</DependentUpon>
</Compile>
<Compile Include="Consoles\Intellivision\Intellivision.IStatable.cs">
<DependentUpon>Intellivision.cs</DependentUpon>
</Compile>
<Compile Include="Consoles\Intellivision\Intellivision.MemoryMap.cs">
<DependentUpon>Intellivision.cs</DependentUpon>
</Compile>

View File

@ -1,5 +1,7 @@
using BizHawk.Emulation.Common;
using System;
using System;
using BizHawk.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Components.CP1610
{
@ -47,6 +49,15 @@ namespace BizHawk.Emulation.Cores.Components.CP1610
};
}
public void SyncState(Serializer ser)
{
ser.BeginSection("CP1610");
// TODO
ser.EndSection();
}
private void Calc_FlagC(int result)
{
FlagC = ((result & 0x10000) != 0);

View File

@ -1,9 +1,20 @@
namespace BizHawk.Emulation.Cores.Intellivision
using BizHawk.Common;
namespace BizHawk.Emulation.Cores.Intellivision
{
public sealed class Cartridge : ICart
{
private ushort[] Data = new ushort[56320];
public void SyncState(Serializer ser)
{
ser.BeginSection("Cart");
// TODO
ser.EndSection();
}
public int Parse(byte[] Rom)
{
// TODO: Determine which loading method, if either, is correct.

View File

@ -1,9 +1,13 @@
namespace BizHawk.Emulation.Cores.Intellivision
using BizHawk.Common;
namespace BizHawk.Emulation.Cores.Intellivision
{
public interface ICart
{
int Parse(byte[] Rom);
ushort? ReadCart(ushort addr);
bool WriteCart(ushort addr, ushort value);
void SyncState(Serializer ser);
}
}

View File

@ -1,9 +1,19 @@
using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Cores.Intellivision
{
public sealed class Intellicart : ICart
{
public void SyncState(Serializer ser)
{
ser.BeginSection("Cart");
// TODO
ser.EndSection();
}
private ushort[] Data = new ushort[65536];
private bool[][] MemoryAttributes = new bool[32][];
private ushort[][] FineAddresses = new ushort[32][];

View File

@ -43,7 +43,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
else
_cpu.TraceCallback = null;
Frame++;
_frame++;
// read the controller state here for now
get_controller_state();
//_stic.Mobs();
@ -69,7 +69,8 @@ namespace BizHawk.Emulation.Cores.Intellivision
}
public int Frame { get; private set; }
private int _frame;
public int Frame { get { return _frame; } }
public string SystemId
{
@ -83,7 +84,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
public void ResetCounters()
{
Frame = 0;
_frame = 0;
}
public CoreComm CoreComm { get; private set; }

View File

@ -6,7 +6,7 @@ using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Intellivision
{
public partial class Intellivision : ISettable<Intellivision.IntvSettings, Intellivision.IntvSyncSettings>
public partial class Intellivision : IEmulator, IStatable, ISettable<Intellivision.IntvSettings, Intellivision.IntvSyncSettings>
{
public IntvSettings GetSettings()
{

View File

@ -0,0 +1,63 @@
using System.IO;
using BizHawk.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Intellivision
{
public partial class Intellivision : IStatable
{
public bool BinarySaveStatesPreferred
{
get { return true; }
}
public void SaveStateText(TextWriter writer)
{
SyncState(Serializer.CreateTextWriter(writer));
}
public void LoadStateText(TextReader reader)
{
SyncState(Serializer.CreateTextReader(reader));
SetupMemoryDomains(); // resync the memory domains
}
public void SaveStateBinary(BinaryWriter bw)
{
SyncState(Serializer.CreateBinaryWriter(bw));
}
public void LoadStateBinary(BinaryReader br)
{
SyncState(Serializer.CreateBinaryReader(br));
SetupMemoryDomains(); // resync the memory domains
}
public byte[] SaveStateBinary()
{
MemoryStream ms = new MemoryStream();
BinaryWriter bw = new BinaryWriter(ms);
SaveStateBinary(bw);
bw.Flush();
return ms.ToArray();
}
private void SyncState(Serializer ser)
{
int version = 1;
ser.BeginSection("Intellivision");
ser.Sync("version", ref version);
ser.Sync("Frame", ref _frame);
_cpu.SyncState(ser);
_stic.SyncState(ser);
_psg.SyncState(ser);
_cart.SyncState(ser);
ControllerDeck.SyncState(ser);
ser.EndSection();
}
}
}

View File

@ -1,4 +1,5 @@
using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Cores.Intellivision
{
@ -12,6 +13,15 @@ namespace BizHawk.Emulation.Cores.Intellivision
public Func<ushort, ushort> ReadMemory;
public Func<ushort, ushort, bool> WriteMemory;
public void SyncState(Serializer ser)
{
ser.BeginSection("PSG");
// TODO
ser.EndSection();
}
public ushort? ReadPSG(ushort addr)
{
if (addr >= 0x01F0 && addr <= 0x01FF)

View File

@ -1,6 +1,8 @@
using System;
using BizHawk.Emulation.Common;
using BizHawk.Common;
using BizHawk.Common.NumberExtensions;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Intellivision
{
@ -23,6 +25,15 @@ namespace BizHawk.Emulation.Cores.Intellivision
public int[] FrameBuffer = new int[159 * 192];
public ushort[,] Collision = new ushort[167,210];
public void SyncState(Serializer ser)
{
ser.BeginSection("STIC");
// TODO
ser.EndSection();
}
public int[] GetVideoBuffer()
{