2012-08-08 23:05:55 +00:00
|
|
|
|
using System;
|
|
|
|
|
|
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
|
|
|
|
|
{
|
2012-08-10 20:40:34 +00:00
|
|
|
|
private 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;
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|