BizHawk/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.IVideoProvider.cs

64 lines
1.4 KiB
C#

using System;
using BizHawk.Common;
using BizHawk.Common.BufferExtensions;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Consoles.ChannelF
{
public partial class ChannelF : IVideoProvider, IRegionable
{
public int _frameHz = 60;
public int[] CroppedBuffer = new int[102 * 58];
#region IVideoProvider
public int VirtualWidth => BufferWidth * 2;
public int VirtualHeight => (int)((double)BufferHeight * 1.3) * 2;
public int BufferWidth => 102; //128
public int BufferHeight => 58; //64
public int BackgroundColor => Colors.ARGB(0x00, 0x00, 0x00);
public int VsyncNumerator => _frameHz;
public int VsyncDenominator => 1;
public int[] GetVideoBuffer()
{
BuildFrame();
var lBorderWidth = 4;
var rBorderWidth = 128 - 102 - lBorderWidth;
var tBorderHeight = 4;
var bBorderHeight = 64 - 58 - tBorderHeight;
var startP = 128 * tBorderHeight;
var endP = 128 * bBorderHeight;
int index = 0;
for (int i = startP; i < frameBuffer.Length - endP; i += 128)
{
for (int p = lBorderWidth; p < 128 - rBorderWidth; p++)
{
if (index == CroppedBuffer.Length)
break;
CroppedBuffer[index++] = FPalette[frameBuffer[i + p]];
}
}
return CroppedBuffer;
//return frameBuffer;
}
#endregion
#region IRegionable
public DisplayType Region => DisplayType.NTSC;
#endregion
}
}