mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-26 06:20:48 +00:00
snd_mix.c aufgeräumt
This commit is contained in:
parent
5c221e74c0
commit
5ddc0f5fab
1 changed files with 18 additions and 16 deletions
|
@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "snd_loc.h"
|
#include "snd_loc.h"
|
||||||
|
|
||||||
#define PAINTBUFFER_SIZE 2048
|
#define PAINTBUFFER_SIZE 8192
|
||||||
portable_samplepair_t paintbuffer[PAINTBUFFER_SIZE];
|
portable_samplepair_t paintbuffer[PAINTBUFFER_SIZE];
|
||||||
int snd_scaletable[32][256];
|
int snd_scaletable[32][256];
|
||||||
int *snd_p, snd_linear_count, snd_vol;
|
int *snd_p, snd_linear_count, snd_vol;
|
||||||
|
@ -115,7 +115,7 @@ void S_TransferStereo16 (unsigned long *pbuf, int endtime)
|
||||||
|
|
||||||
while (lpaintedtime < endtime)
|
while (lpaintedtime < endtime)
|
||||||
{
|
{
|
||||||
// handle recirculating buffer issues
|
// handle recirculating buffer issues
|
||||||
lpos = lpaintedtime & ((dma.samples>>1)-1);
|
lpos = lpaintedtime & ((dma.samples>>1)-1);
|
||||||
|
|
||||||
snd_out = (short *) pbuf + (lpos<<1);
|
snd_out = (short *) pbuf + (lpos<<1);
|
||||||
|
@ -126,7 +126,7 @@ void S_TransferStereo16 (unsigned long *pbuf, int endtime)
|
||||||
|
|
||||||
snd_linear_count <<= 1;
|
snd_linear_count <<= 1;
|
||||||
|
|
||||||
// write a linear blast of samples
|
// write a linear blast of samples
|
||||||
S_WriteLinearBlastStereo16 ();
|
S_WriteLinearBlastStereo16 ();
|
||||||
|
|
||||||
snd_p += snd_linear_count;
|
snd_p += snd_linear_count;
|
||||||
|
@ -154,13 +154,21 @@ void S_TransferPaintBuffer(int endtime)
|
||||||
|
|
||||||
if (s_testsound->value)
|
if (s_testsound->value)
|
||||||
{
|
{
|
||||||
|
static float x = 0.05;
|
||||||
|
static float y = 0.0001;
|
||||||
int i;
|
int i;
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
|
x += y;
|
||||||
|
if (x > 0.15)
|
||||||
|
y = -0.0001;
|
||||||
|
else if (x < 0.0005)
|
||||||
|
y = 0.0001;
|
||||||
|
|
||||||
// write a fixed sine wave
|
// write a fixed sine wave
|
||||||
count = (endtime - paintedtime);
|
count = (endtime - paintedtime);
|
||||||
for (i=0 ; i<count ; i++)
|
for (i=0 ; i<count ; i++)
|
||||||
paintbuffer[i].left = paintbuffer[i].right = sin((paintedtime+i)*0.1)*20000*256;
|
paintbuffer[i].left = paintbuffer[i].right = (int)((float)sin((paintedtime+i)*0.1f)*20000*256);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -232,7 +240,6 @@ void S_PaintChannels(int endtime)
|
||||||
|
|
||||||
snd_vol = s_volume->value*256;
|
snd_vol = s_volume->value*256;
|
||||||
|
|
||||||
//Com_Printf ("%i to %i\n", paintedtime, endtime);
|
|
||||||
while (paintedtime < endtime)
|
while (paintedtime < endtime)
|
||||||
{
|
{
|
||||||
// if paintbuffer is smaller than DMA buffer
|
// if paintbuffer is smaller than DMA buffer
|
||||||
|
@ -257,10 +264,9 @@ void S_PaintChannels(int endtime)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear the paint buffer
|
// clear the paint buffer
|
||||||
if (s_rawend < paintedtime)
|
if (s_rawend < paintedtime)
|
||||||
{
|
{
|
||||||
// Com_Printf ("clear\n");
|
|
||||||
memset(paintbuffer, 0, (end - paintedtime) * sizeof(portable_samplepair_t));
|
memset(paintbuffer, 0, (end - paintedtime) * sizeof(portable_samplepair_t));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -275,10 +281,6 @@ void S_PaintChannels(int endtime)
|
||||||
s = i&(MAX_RAW_SAMPLES-1);
|
s = i&(MAX_RAW_SAMPLES-1);
|
||||||
paintbuffer[i-paintedtime] = s_rawsamples[s];
|
paintbuffer[i-paintedtime] = s_rawsamples[s];
|
||||||
}
|
}
|
||||||
// if (i != end)
|
|
||||||
// Com_Printf ("partial stream\n");
|
|
||||||
// else
|
|
||||||
// Com_Printf ("full stream\n");
|
|
||||||
for ( ; i<end ; i++)
|
for ( ; i<end ; i++)
|
||||||
{
|
{
|
||||||
paintbuffer[i-paintedtime].left =
|
paintbuffer[i-paintedtime].left =
|
||||||
|
@ -287,7 +289,7 @@ void S_PaintChannels(int endtime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// paint in the channels.
|
// paint in the channels.
|
||||||
ch = channels;
|
ch = channels;
|
||||||
for (i=0; i<MAX_CHANNELS ; i++, ch++)
|
for (i=0; i<MAX_CHANNELS ; i++, ch++)
|
||||||
{
|
{
|
||||||
|
@ -319,7 +321,7 @@ void S_PaintChannels(int endtime)
|
||||||
ltime += count;
|
ltime += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if at end of loop, restart
|
// if at end of loop, restart
|
||||||
if (ltime >= ch->end)
|
if (ltime >= ch->end)
|
||||||
{
|
{
|
||||||
if (ch->autosound)
|
if (ch->autosound)
|
||||||
|
@ -341,7 +343,7 @@ void S_PaintChannels(int endtime)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// transfer out according to DMA format
|
// transfer out according to DMA format
|
||||||
S_TransferPaintBuffer(end);
|
S_TransferPaintBuffer(end);
|
||||||
paintedtime = end;
|
paintedtime = end;
|
||||||
}
|
}
|
||||||
|
@ -355,7 +357,7 @@ void S_InitScaletable (void)
|
||||||
s_volume->modified = false;
|
s_volume->modified = false;
|
||||||
for (i=0 ; i<32 ; i++)
|
for (i=0 ; i<32 ; i++)
|
||||||
{
|
{
|
||||||
scale = i * 8 * 256 * s_volume->value;
|
scale = (int)(i * 8 * 256 * s_volume->value);
|
||||||
for (j=0 ; j<256 ; j++)
|
for (j=0 ; j<256 ; j++)
|
||||||
snd_scaletable[i][j] = ((signed char)j) * scale;
|
snd_scaletable[i][j] = ((signed char)j) * scale;
|
||||||
}
|
}
|
||||||
|
@ -382,7 +384,7 @@ void S_PaintChannelFrom8 (channel_t *ch, sfxcache_t *sc, int count, int offset)
|
||||||
//as it would always be zero.
|
//as it would always be zero.
|
||||||
lscale = snd_scaletable[ ch->leftvol >> 3];
|
lscale = snd_scaletable[ ch->leftvol >> 3];
|
||||||
rscale = snd_scaletable[ ch->rightvol >> 3];
|
rscale = snd_scaletable[ ch->rightvol >> 3];
|
||||||
sfx = (signed char *)sc->data + ch->pos;
|
sfx = sc->data + ch->pos;
|
||||||
|
|
||||||
samp = &paintbuffer[offset];
|
samp = &paintbuffer[offset];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue