commodore64: slightly better sound sampling routine for non-sync provider, placeholder until I can get the resampler to work
This commit is contained in:
parent
be37d1dc53
commit
0191b1e507
|
@ -17,12 +17,30 @@ namespace BizHawk.Emulation.Computers.Commodore64.MOS
|
|||
|
||||
public void GetSamples(short[] samples)
|
||||
{
|
||||
bool overrun = false;
|
||||
uint count = (uint)samples.Length;
|
||||
for (uint i = 0; i < count; i++)
|
||||
uint overrunOffset;
|
||||
|
||||
if (bufferIndex == 0)
|
||||
overrunOffset = bufferLength - 1;
|
||||
else
|
||||
overrunOffset = bufferIndex - 1;
|
||||
|
||||
uint i = 0;
|
||||
while (i < count)
|
||||
{
|
||||
samples[i] = buffer[bufferReadOffset];
|
||||
if (bufferReadOffset != bufferIndex)
|
||||
bufferReadOffset++;
|
||||
if (bufferReadOffset == bufferIndex)
|
||||
overrun = true;
|
||||
if (!overrun)
|
||||
{
|
||||
samples[i++] = buffer[bufferReadOffset++];
|
||||
samples[i++] = buffer[bufferReadOffset++];
|
||||
}
|
||||
else
|
||||
{
|
||||
samples[i++] = buffer[overrunOffset];
|
||||
samples[i++] = buffer[overrunOffset];
|
||||
}
|
||||
if (bufferReadOffset == bufferLength)
|
||||
bufferReadOffset = 0;
|
||||
}
|
||||
|
|
|
@ -571,11 +571,10 @@ namespace BizHawk.Emulation.Computers.Commodore64.MOS
|
|||
{
|
||||
switch (newRegion)
|
||||
{
|
||||
case Region.NTSC: cyclesPerSec = 14318181 / 14; break;
|
||||
case Region.PAL: cyclesPerSec = 17734472 / 18; break;
|
||||
case Region.NTSC: cyclesPerSec = 14318181 / 14; bufferLength = (newSampleRate / 60) * 4; break;
|
||||
case Region.PAL: cyclesPerSec = 17734472 / 18; bufferLength = (newSampleRate / 50) * 4; break;
|
||||
}
|
||||
bufferFrequency = cyclesPerSec / newSampleRate;
|
||||
bufferLength = newSampleRate * 2;
|
||||
buffer = new short[bufferLength];
|
||||
|
||||
waveformTable = newWaveformTable;
|
||||
|
|
|
@ -600,6 +600,7 @@ namespace BizHawk.Emulation.Computers.Commodore64.MOS
|
|||
{
|
||||
uint pixel;
|
||||
uint pixelData;
|
||||
bool renderEnabled = bufRect.Contains(bufPoint);
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
|
@ -621,7 +622,7 @@ namespace BizHawk.Emulation.Computers.Commodore64.MOS
|
|||
pixel = pixelBuffer[pixelBufferIndex];
|
||||
|
||||
// plot pixel if within viewing area
|
||||
if (bufRect.Contains(bufPoint))
|
||||
if (renderEnabled)
|
||||
{
|
||||
buf[bufOffset] = palette[pixel];
|
||||
bufOffset++;
|
||||
|
|
Loading…
Reference in New Issue