2012-08-08 23:05:55 +00:00
|
|
|
|
using System;
|
2016-12-04 14:25:17 +00:00
|
|
|
|
using BizHawk.Common;
|
2012-08-08 23:05:55 +00:00
|
|
|
|
|
2013-11-13 03:32:25 +00:00
|
|
|
|
namespace BizHawk.Emulation.Cores.Intellivision
|
2012-08-08 23:05:55 +00:00
|
|
|
|
{
|
|
|
|
|
public sealed class PSG
|
|
|
|
|
{
|
2016-11-11 21:47:55 +00:00
|
|
|
|
public ushort[] Register = new ushort[16];
|
2012-08-08 23:05:55 +00:00
|
|
|
|
|
2012-09-06 04:51:17 +00:00
|
|
|
|
public int TotalExecutedCycles;
|
|
|
|
|
public int PendingCycles;
|
|
|
|
|
|
|
|
|
|
public Func<ushort, ushort> ReadMemory;
|
|
|
|
|
public Func<ushort, ushort, bool> WriteMemory;
|
|
|
|
|
|
2016-12-04 14:25:17 +00:00
|
|
|
|
public void SyncState(Serializer ser)
|
|
|
|
|
{
|
|
|
|
|
ser.BeginSection("PSG");
|
|
|
|
|
|
|
|
|
|
// TODO
|
|
|
|
|
|
|
|
|
|
ser.EndSection();
|
|
|
|
|
}
|
|
|
|
|
|
2012-08-08 23:05:55 +00:00
|
|
|
|
public ushort? ReadPSG(ushort addr)
|
|
|
|
|
{
|
|
|
|
|
if (addr >= 0x01F0 && addr <= 0x01FF)
|
2012-12-17 04:23:59 +00:00
|
|
|
|
{
|
2012-08-10 20:40:34 +00:00
|
|
|
|
return Register[addr - 0x01F0];
|
2012-12-17 04:23:59 +00:00
|
|
|
|
}
|
2012-08-08 23:05:55 +00:00
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool WritePSG(ushort addr, ushort value)
|
|
|
|
|
{
|
|
|
|
|
if (addr >= 0x01F0 && addr <= 0x01FF)
|
|
|
|
|
{
|
2012-08-10 20:40:34 +00:00
|
|
|
|
Register[addr - 0x01F0] = value;
|
2012-08-08 23:05:55 +00:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|