7800: fix PAL color display
This commit is contained in:
parent
9d0e22292d
commit
6c2aad545f
|
@ -143,7 +143,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800
|
||||||
if (ser.IsReader)
|
if (ser.IsReader)
|
||||||
{
|
{
|
||||||
theMachine = MachineBase.Deserialize(new BinaryReader(new MemoryStream(core, false)));
|
theMachine = MachineBase.Deserialize(new BinaryReader(new MemoryStream(core, false)));
|
||||||
avProvider.ConnectToMachine(theMachine);
|
avProvider.ConnectToMachine(theMachine, GameInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -242,7 +242,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800
|
||||||
throw new Exception("For now, only Atari 7800 ProLine Joystick games are supported.");
|
throw new Exception("For now, only Atari 7800 ProLine Joystick games are supported.");
|
||||||
ControllerDefinition = ControlAdapter.ControlType;
|
ControllerDefinition = ControlAdapter.ControlType;
|
||||||
|
|
||||||
avProvider.ConnectToMachine(theMachine);
|
avProvider.ConnectToMachine(theMachine, GameInfo);
|
||||||
// to sync exactly with audio as this emulator creates and times it, the frame rate should be exactly 60:1 or 50:1
|
// to sync exactly with audio as this emulator creates and times it, the frame rate should be exactly 60:1 or 50:1
|
||||||
CoreComm.VsyncNum = theMachine.FrameHZ;
|
CoreComm.VsyncNum = theMachine.FrameHZ;
|
||||||
CoreComm.VsyncDen = 1;
|
CoreComm.VsyncDen = 1;
|
||||||
|
@ -336,7 +336,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800
|
||||||
class MyAVProvider : IVideoProvider, ISyncSoundProvider, IDisposable
|
class MyAVProvider : IVideoProvider, ISyncSoundProvider, IDisposable
|
||||||
{
|
{
|
||||||
public FrameBuffer framebuffer { get; private set; }
|
public FrameBuffer framebuffer { get; private set; }
|
||||||
public void ConnectToMachine(MachineBase m)
|
public void ConnectToMachine(MachineBase m, EMU7800.Win.GameProgram g)
|
||||||
{
|
{
|
||||||
framebuffer = m.CreateFrameBuffer();
|
framebuffer = m.CreateFrameBuffer();
|
||||||
BufferWidth = framebuffer.VisiblePitch;
|
BufferWidth = framebuffer.VisiblePitch;
|
||||||
|
@ -352,13 +352,18 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800
|
||||||
resampler = new SpeexResampler(3, newsamplerate, 44100, newsamplerate, 44100, null, null);
|
resampler = new SpeexResampler(3, newsamplerate, 44100, newsamplerate, 44100, null, null);
|
||||||
samplerate = newsamplerate;
|
samplerate = newsamplerate;
|
||||||
dcfilter = DCFilter.DetatchedMode(256);
|
dcfilter = DCFilter.DetatchedMode(256);
|
||||||
}
|
}
|
||||||
|
if (g.MachineType == MachineType.A7800PAL || g.MachineType == MachineType.A2600PAL)
|
||||||
|
palette = TIATables.PALPalette;
|
||||||
|
else
|
||||||
|
palette = TIATables.NTSCPalette;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint samplerate;
|
uint samplerate;
|
||||||
int[] vidbuffer;
|
int[] vidbuffer;
|
||||||
SpeexResampler resampler;
|
SpeexResampler resampler;
|
||||||
DCFilter dcfilter;
|
DCFilter dcfilter;
|
||||||
|
int[] palette;
|
||||||
|
|
||||||
public void FillFrameBuffer()
|
public void FillFrameBuffer()
|
||||||
{
|
{
|
||||||
|
@ -366,7 +371,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800
|
||||||
{
|
{
|
||||||
fixed (byte* src_ = framebuffer.VideoBuffer)
|
fixed (byte* src_ = framebuffer.VideoBuffer)
|
||||||
fixed (int* dst_ = vidbuffer)
|
fixed (int* dst_ = vidbuffer)
|
||||||
fixed (int* pal = TIATables.NTSCPalette)
|
fixed (int* pal = palette)
|
||||||
{
|
{
|
||||||
byte* src = src_;
|
byte* src = src_;
|
||||||
int* dst = dst_;
|
int* dst = dst_;
|
||||||
|
|
Loading…
Reference in New Issue