snes-fix new bugs in audio
This commit is contained in:
parent
8d7da30681
commit
f1401a16e1
|
@ -414,18 +414,20 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
|||
int nsamples = brPipe.ReadInt32();
|
||||
bwPipe.Write(0); //location to store audio buffer in
|
||||
brPipe.ReadInt32(); //dummy synchronization
|
||||
bwPipe.Write(0); //dummy synchronization
|
||||
brPipe.ReadInt32(); //dummy synchronization
|
||||
|
||||
if (audio_sample != null)
|
||||
{
|
||||
ushort* audiobuffer = ((ushort*)mmvaPtr);
|
||||
for (int i = 0; i < nsamples; i++)
|
||||
for (int i = 0; i < nsamples;)
|
||||
{
|
||||
ushort left = audiobuffer[i++];
|
||||
ushort right = audiobuffer[i++];
|
||||
audio_sample(left, right);
|
||||
}
|
||||
}
|
||||
|
||||
bwPipe.Write(0); //dummy synchronization
|
||||
brPipe.ReadInt32(); //dummy synchronization
|
||||
break;
|
||||
}
|
||||
case eMessage.eMessage_snes_cb_scanlineStart:
|
||||
|
|
Binary file not shown.
|
@ -164,13 +164,15 @@ void FlushAudio()
|
|||
|
||||
WritePipe(eMessage_snes_cb_audio_sample);
|
||||
|
||||
int nsamples = audiobuffer_idx/2;
|
||||
int nsamples = audiobuffer_idx;
|
||||
WritePipe(nsamples);
|
||||
int destOfs = ReadPipe<int>();
|
||||
char* buf = (char*)hMapFilePtr + destOfs;
|
||||
memcpy(buf,audiobuffer,nsamples*4);
|
||||
char* buf = ReadPipeSharedPtr();
|
||||
memcpy(buf,audiobuffer,nsamples*2);
|
||||
//extra just in case we had to unexpectedly flush audio and then carry on with some other process... yeah, its rickety.
|
||||
WritePipe(0); //dummy synchronization
|
||||
|
||||
//wait for frontend to consume data
|
||||
|
||||
ReadPipe<int>(); //dummy synchronization
|
||||
WritePipe(0); //dummy synchronization
|
||||
audiobuffer_idx = 0;
|
||||
|
|
Loading…
Reference in New Issue