sind_dma.c aufgeräumt

This commit is contained in:
Yamagi Burmeister 2009-03-03 11:00:08 +00:00
parent ca7ab15c1c
commit 1c161a9930
2 changed files with 33 additions and 87 deletions

View file

@ -34,7 +34,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define SHELL_BLUE_COLOR 0xF3
#define SHELL_RG_COLOR 0xDC
//#define SHELL_RB_COLOR 0x86
#define SHELL_RB_COLOR 0x68
#define SHELL_BG_COLOR 0x78
@ -74,20 +73,12 @@ typedef struct entity_s
struct image_s *skin; // NULL for inline skin
int flags;
#ifdef QMAX
int renderfx;
#endif
} entity_t;
#define ENTITY_FLAGS 68
typedef struct
{
#ifdef QMAX
qboolean spotlight;
vec3_t direction;
#endif
vec3_t origin;
vec3_t color;
float intensity;
@ -98,17 +89,6 @@ typedef struct
vec3_t origin;
int color;
float alpha;
#ifdef QMAX
vec3_t angle;
float size;
int flags;
float red;
float green;
float blue;
int image;
#endif
} particle_t;
typedef struct
@ -141,8 +121,6 @@ typedef struct
particle_t *particles;
} refdef_t;
#define API_VERSION 3
//
@ -180,18 +158,8 @@ typedef struct
void (*EndRegistration) (void);
void (*RenderFrame) (refdef_t *fd);
#ifdef QMAX
void (*AddStain) (vec3_t org, float intensity, float r, float g, float b);
void (*SetParticlePicture) (int num, char *name);
void (*DrawScaledPic) (int x, int y, float scale, float alpha, char *name);
float (*CharMap_Scale) (void);
void (*DrawStretchPic) (int x, int y, int w, int h, char *name, float alpha);
void (*DrawChar) (int x, int y, int c, int alpha);
#else
void (*DrawStretchPic) (int x, int y, int w, int h, char *name);
void (*DrawChar) (int x, int y, int c);
#endif
void (*DrawGetPicSize) (int *w, int *h, char *name); // will return 0 0 if not found
void (*DrawPic) (int x, int y, char *name);
void (*DrawTileClear) (int x, int y, int w, int h, char *name);
@ -246,28 +214,8 @@ typedef struct
qboolean (*Vid_GetModeInfo)( int *width, int *height, int mode );
void (*Vid_MenuInit)( void );
void (*Vid_NewWindow)( int width, int height );
#ifdef QMAX
void (*SetParticlePics) (void);
#endif
} refimport_t;
#ifdef QMAX
#define DIV254BY255 (0.9960784313725490196078431372549f)
#define DIV255 (0.003921568627450980392156862745098f)
#define DIV256 (0.00390625f)
#define DIV512 (0.001953125f)
#define TWOTHIRDS (0.666666666666666666666666666666666666666f)
typedef struct
{
vec3_t origin;
vec3_t color;
float intensity;
} dstain_t;
#endif
// this is the only function actually exported at the linker level
typedef refexport_t (*GetRefAPI_t) (refimport_t);

View file

@ -382,7 +382,7 @@ channel_t *S_PickChannel(int entnum, int entchannel)
if (entchannel<0)
Com_Error (ERR_DROP, "S_PickChannel: entchannel<0");
// Check for replacement sound, or find the best one to replace
// Check for replacement sound, or find the best one to replace
first_to_die = -1;
life_left = 0x7fffffff;
for (ch_idx=0 ; ch_idx < MAX_CHANNELS ; ch_idx++)
@ -435,7 +435,7 @@ void S_SpatializeOrigin (vec3_t origin, float master_vol, float dist_mult, int *
return;
}
// calculate stereo seperation and distance attenuation
// calculate stereo seperation and distance attenuation
VectorSubtract(origin, listener_origin, source_vec);
dist = VectorNormalize(source_vec);
@ -448,17 +448,17 @@ void S_SpatializeOrigin (vec3_t origin, float master_vol, float dist_mult, int *
if (dma.channels == 1 || !dist_mult)
{ // no attenuation = no spatialization
rscale = 1.0;
lscale = 1.0;
rscale = 1.0f;
lscale = 1.0f;
}
else
{
rscale = 0.5 * (1.0 + dot);
lscale = 0.5*(1.0 - dot);
rscale = 0.5f * (1.0f + dot);
lscale = 0.5f * (1.0f - dot);
}
// add in distance effect
scale = (1.0 - dist) * rscale;
scale = (1.0f - dist) * rscale;
*right_vol = (int) (master_vol * scale);
if (*right_vol < 0)
*right_vol = 0;
@ -493,7 +493,7 @@ void S_Spatialize(channel_t *ch)
else
CL_GetEntitySoundOrigin (ch->entnum, origin);
S_SpatializeOrigin (origin, ch->master_vol, ch->dist_mult, &ch->leftvol, &ch->rightvol);
S_SpatializeOrigin (origin, (float)ch->master_vol, ch->dist_mult, &ch->leftvol, &ch->rightvol);
}
@ -564,9 +564,9 @@ void S_IssuePlaysound (playsound_t *ps)
// spatialize
if (ps->attenuation == ATTN_STATIC)
ch->dist_mult = ps->attenuation * 0.001;
ch->dist_mult = ps->attenuation * 0.001f;
else
ch->dist_mult = ps->attenuation * 0.0005;
ch->dist_mult = ps->attenuation * 0.0005f;
ch->master_vol = ps->volume;
ch->entnum = ps->entnum;
ch->entchannel = ps->entchannel;
@ -695,16 +695,16 @@ void S_StartSound(vec3_t origin, int entnum, int entchannel, sfx_t *sfx, float f
ps->sfx = sfx;
// drift s_beginofs
start = cl.frame.servertime * 0.001 * dma.speed + s_beginofs;
start = (int)(cl.frame.servertime * 0.001f * dma.speed + s_beginofs);
if (start < paintedtime)
{
start = paintedtime;
s_beginofs = start - (cl.frame.servertime * 0.001 * dma.speed);
s_beginofs = (int)(start - (cl.frame.servertime * 0.001f * dma.speed));
}
else if (start > paintedtime + 0.3 * dma.speed)
else if (start > paintedtime + 0.3f * dma.speed)
{
start = paintedtime + 0.1 * dma.speed;
s_beginofs = start - (cl.frame.servertime * 0.001 * dma.speed);
start = (int)(paintedtime + 0.1f * dma.speed);
s_beginofs = (int)(start - (cl.frame.servertime * 0.001f * dma.speed));
}
else
{
@ -714,7 +714,7 @@ void S_StartSound(vec3_t origin, int entnum, int entchannel, sfx_t *sfx, float f
if (!timeofs)
ps->begin = paintedtime;
else
ps->begin = start + timeofs * dma.speed;
ps->begin = (int)(start + timeofs * dma.speed);
// sort into the pending sound list
for (sort = s_pendingplays.next ;
@ -870,7 +870,7 @@ void S_AddLoopSounds (void)
ent = &cl_parse_entities[num];
// find the total contribution of all sounds of this type
S_SpatializeOrigin (ent->origin, 255.0, SOUND_LOOPATTENUATE,
S_SpatializeOrigin (ent->origin, 255.0f, SOUND_LOOPATTENUATE,
&left_total, &right_total);
for (j=i+1 ; j<cl.frame.num_entities ; j++)
{
@ -881,7 +881,7 @@ void S_AddLoopSounds (void)
num = (cl.frame.parse_entities + j)&(MAX_PARSE_ENTITIES-1);
ent = &cl_parse_entities[num];
S_SpatializeOrigin (ent->origin, 255.0, SOUND_LOOPATTENUATE,
S_SpatializeOrigin (ent->origin, 255.0f, SOUND_LOOPATTENUATE,
&left, &right);
left_total += left;
right_total += right;
@ -948,7 +948,6 @@ void S_RawSamples (int samples, int rate, int width, int channels, byte *data)
s_rawend = paintedtime;
scale = (float)rate / dma.speed;
//Com_Printf ("%i < %i < %i\n", soundtime, paintedtime, s_rawend);
if (channels == 2 && width == 2)
{
if (scale == 1.0)
@ -967,7 +966,7 @@ void S_RawSamples (int samples, int rate, int width, int channels, byte *data)
{
for (i=0 ; ; i++)
{
src = i*scale;
src = (int)(i*scale);
if (src >= samples)
break;
dst = s_rawend&(MAX_RAW_SAMPLES-1);
@ -983,7 +982,7 @@ void S_RawSamples (int samples, int rate, int width, int channels, byte *data)
{
for (i=0 ; ; i++)
{
src = i*scale;
src = (int)(i*scale);
if (src >= samples)
break;
dst = s_rawend&(MAX_RAW_SAMPLES-1);
@ -998,7 +997,7 @@ void S_RawSamples (int samples, int rate, int width, int channels, byte *data)
{
for (i=0 ; ; i++)
{
src = i*scale;
src = (int)(i*scale);
if (src >= samples)
break;
dst = s_rawend&(MAX_RAW_SAMPLES-1);
@ -1013,7 +1012,7 @@ void S_RawSamples (int samples, int rate, int width, int channels, byte *data)
{
for (i=0 ; ; i++)
{
src = i*scale;
src = (int)(i*scale);
if (src >= samples)
break;
dst = s_rawend&(MAX_RAW_SAMPLES-1);
@ -1103,7 +1102,7 @@ void S_Update(vec3_t origin, vec3_t forward, vec3_t right, vec3_t up)
Com_Printf ("----(%i)---- painted: %i\n", total, paintedtime);
}
// mix some sound
// mix some sound
S_Update_();
}
@ -1116,8 +1115,8 @@ void GetSoundtime(void)
fullsamples = dma.samples / dma.channels;
// it is possible to miscount buffers if it has wrapped twice between
// calls to S_Update. Oh well.
// it is possible to miscount buffers if it has wrapped twice between
// calls to S_Update. Oh well.
samplepos = SNDDMA_GetDMAPos();
if (samplepos < oldsamplepos)
@ -1150,19 +1149,18 @@ void S_Update_(void)
if (!dma.buffer)
return;
// Updates DMA time
// Updates DMA time
GetSoundtime();
// check to make sure that we haven't overshot
// check to make sure that we haven't overshot
if (paintedtime < soundtime)
{
Com_DPrintf ("S_Update_ : overflow\n");
paintedtime = soundtime;
}
// mix ahead of current position
endtime = soundtime + s_mixahead->value * dma.speed;
//endtime = (soundtime + 4096) & ~4095;
// mix ahead of current position
endtime = (int)(soundtime + s_mixahead->value * dma.speed);
// mix to an even submission block size
endtime = (endtime + dma.submission_chunk-1)
@ -1195,11 +1193,11 @@ void S_Play(void)
{
if (!strrchr(Cmd_Argv(i), '.'))
{
strcpy(name, Cmd_Argv(i));
strncpy(name, Cmd_Argv(i), sizeof(name)-5);
strcat(name, ".wav");
}
else
strcpy(name, Cmd_Argv(i));
strncpy(name, Cmd_Argv(i), sizeof(name)-1);
sfx = S_RegisterSound(name);
S_StartSound(NULL, cl.playernum+1, 0, sfx, 1.0, 1.0, 0);
i++;