Added kode54's MMX sound copy code

This commit is contained in:
pagefault
2001-09-06 21:23:46 +00:00
parent ed35e58345
commit 425a9970aa

View File

@@ -1804,7 +1804,7 @@ void CheckTimers(void)
start2 += update_ticks_pc2;
}
if (T60HZEnabled)
if (T60HZEnabled == 1)
{
if (AltTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end);
else end = timeGetTime();
@@ -1820,7 +1820,7 @@ void CheckTimers(void)
}
}
if (T36HZEnabled)
if (T36HZEnabled == 1)
{
if (AltTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end);
else end = timeGetTime();
@@ -1837,6 +1837,8 @@ void CheckTimers(void)
}
}
extern "C" BYTE FPUCopy;
void UpdateVFrame(void)
{
if (GUIOn2 == 1 && IsActivated == 0) WaitMessage();
@@ -1882,13 +1884,61 @@ void UpdateVFrame(void)
DSPBuffer1=(int *)&DSPBuffer;
for(i=0;i<SPCSize;i++)
{
Buffer[i]=DSPBuffer1[i];
if (DSPBuffer1[i]>32767)Buffer[i]=32767;
if (DSPBuffer1[i]<-32767)Buffer[i]=-32767;
if (T36HZEnabled)Buffer[i]=0;
}
int buffer_ptr = (int)&Buffer[0];
if (T36HZEnabled == 1)
if (FPUCopy == 2)
_asm
{
mov edi,buffer_ptr
mov ecx,SPCSize
shr ecx,2
pxor mm0,mm0
_blank_top_fpu:
movq [edi],mm0
add edi,8
dec ecx
jne _blank_top_fpu
emms
}
else
_asm
{
mov edi,buffer_ptr
mov ecx,SPCSize
shr ecx,1
xor eax,eax
_blank_top:
mov [edi],eax
add edi,4
dec ecx
jne _blank_top
}
else
if (FPUCopy == 2)
_asm
{
mov esi,DSPBuffer1
mov edi,buffer_ptr
mov ecx,SPCSize
shr ecx,2
_top_mmx:
movq mm0,[esi]
packssdw mm0,[esi+8]
movq [edi],mm0
add esi,16
add edi,8
dec ecx
jne _top_mmx
emms
}
else
for(i=0;i<SPCSize;i++)
{
Buffer[i]=DSPBuffer1[i];
if (DSPBuffer1[i]>32767)Buffer[i]=32767;
if (DSPBuffer1[i]<-32767)Buffer[i]=-32767;
}
if (DS_OK!=lpSoundBuffer->Lock(LastUsedPos,
SPCSize*2, &lpvPtr1,