Added kode54's MMX sound copy code
This commit is contained in:
@@ -1804,7 +1804,7 @@ void CheckTimers(void)
|
|||||||
start2 += update_ticks_pc2;
|
start2 += update_ticks_pc2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (T60HZEnabled)
|
if (T60HZEnabled == 1)
|
||||||
{
|
{
|
||||||
if (AltTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end);
|
if (AltTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end);
|
||||||
else end = timeGetTime();
|
else end = timeGetTime();
|
||||||
@@ -1820,7 +1820,7 @@ void CheckTimers(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (T36HZEnabled)
|
if (T36HZEnabled == 1)
|
||||||
{
|
{
|
||||||
if (AltTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end);
|
if (AltTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end);
|
||||||
else end = timeGetTime();
|
else end = timeGetTime();
|
||||||
@@ -1837,6 +1837,8 @@ void CheckTimers(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" BYTE FPUCopy;
|
||||||
|
|
||||||
void UpdateVFrame(void)
|
void UpdateVFrame(void)
|
||||||
{
|
{
|
||||||
if (GUIOn2 == 1 && IsActivated == 0) WaitMessage();
|
if (GUIOn2 == 1 && IsActivated == 0) WaitMessage();
|
||||||
@@ -1882,12 +1884,60 @@ void UpdateVFrame(void)
|
|||||||
|
|
||||||
DSPBuffer1=(int *)&DSPBuffer;
|
DSPBuffer1=(int *)&DSPBuffer;
|
||||||
|
|
||||||
|
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++)
|
for(i=0;i<SPCSize;i++)
|
||||||
{
|
{
|
||||||
Buffer[i]=DSPBuffer1[i];
|
Buffer[i]=DSPBuffer1[i];
|
||||||
if (DSPBuffer1[i]>32767)Buffer[i]=32767;
|
if (DSPBuffer1[i]>32767)Buffer[i]=32767;
|
||||||
if (DSPBuffer1[i]<-32767)Buffer[i]=-32767;
|
if (DSPBuffer1[i]<-32767)Buffer[i]=-32767;
|
||||||
if (T36HZEnabled)Buffer[i]=0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DS_OK!=lpSoundBuffer->Lock(LastUsedPos,
|
if (DS_OK!=lpSoundBuffer->Lock(LastUsedPos,
|
||||||
|
|||||||
Reference in New Issue
Block a user