|
|
1.1.1.3 ! root 1: /* ! 2: Copyright (C) 1997-2001 Id Software, Inc. ! 3: ! 4: This program is free software; you can redistribute it and/or ! 5: modify it under the terms of the GNU General Public License ! 6: as published by the Free Software Foundation; either version 2 ! 7: of the License, or (at your option) any later version. ! 8: ! 9: This program is distributed in the hope that it will be useful, ! 10: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ! 12: ! 13: See the GNU General Public License for more details. ! 14: ! 15: You should have received a copy of the GNU General Public License ! 16: along with this program; if not, write to the Free Software ! 17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! 18: ! 19: */ 1.1 root 20: // snd_loc.h -- private sound functions 21: 22: // !!! if this is changed, the asm code must change !!! 23: typedef struct 24: { 25: int left; 26: int right; 27: } portable_samplepair_t; 28: 29: typedef struct 30: { 31: int length; 32: int loopstart; 33: int speed; // not needed, because converted on load? 34: int width; 35: int stereo; 36: byte data[1]; // variable sized 37: } sfxcache_t; 38: 39: typedef struct sfx_s 40: { 41: char name[MAX_QPATH]; 42: int registration_sequence; 43: sfxcache_t *cache; 1.1.1.2 root 44: char *truename; 1.1 root 45: } sfx_t; 46: 47: // a playsound_t will be generated by each call to S_StartSound, 48: // when the mixer reaches playsound->begin, the playsound will 49: // be assigned to a channel 50: typedef struct playsound_s 51: { 52: struct playsound_s *prev, *next; 53: sfx_t *sfx; 54: float volume; 55: float attenuation; 56: int entnum; 57: int entchannel; 58: qboolean fixed_origin; // use origin field instead of entnum's origin 59: vec3_t origin; 60: unsigned begin; // begin on this sample 61: } playsound_t; 62: 63: typedef struct 64: { 65: int channels; 66: int samples; // mono samples in buffer 67: int submission_chunk; // don't mix less than this # 68: int samplepos; // in mono samples 69: int samplebits; 70: int speed; 71: byte *buffer; 72: } dma_t; 73: 74: // !!! if this is changed, the asm code must change !!! 75: typedef struct 76: { 77: sfx_t *sfx; // sfx number 78: int leftvol; // 0-255 volume 79: int rightvol; // 0-255 volume 80: int end; // end time in global paintsamples 81: int pos; // sample position in sfx 82: int looping; // where to loop, -1 = no looping OBSOLETE? 83: int entnum; // to allow overriding a specific sound 84: int entchannel; // 85: vec3_t origin; // only use if fixed_origin is set 86: vec_t dist_mult; // distance multiplier (attenuation/clipK) 87: int master_vol; // 0-255 master volume 88: qboolean fixed_origin; // use origin instead of fetching entnum's origin 89: qboolean autosound; // from an entity->sound, cleared each frame 90: } channel_t; 91: 92: typedef struct 93: { 94: int rate; 95: int width; 96: int channels; 97: int loopstart; 98: int samples; 99: int dataofs; // chunk starts this many bytes from file start 100: } wavinfo_t; 101: 102: 103: /* 104: ==================================================================== 105: 106: SYSTEM SPECIFIC FUNCTIONS 107: 108: ==================================================================== 109: */ 110: 111: // initializes cycling through a DMA buffer and returns information on it 112: qboolean SNDDMA_Init(void); 113: 114: // gets the current DMA position 115: int SNDDMA_GetDMAPos(void); 116: 117: // shutdown the DMA xfer. 118: void SNDDMA_Shutdown(void); 119: 120: void SNDDMA_BeginPainting (void); 121: 122: void SNDDMA_Submit(void); 123: 124: //==================================================================== 125: 126: #define MAX_CHANNELS 32 127: extern channel_t channels[MAX_CHANNELS]; 128: 129: extern int paintedtime; 130: extern int s_rawend; 131: extern vec3_t listener_origin; 132: extern vec3_t listener_forward; 133: extern vec3_t listener_right; 134: extern vec3_t listener_up; 135: extern dma_t dma; 136: extern playsound_t s_pendingplays; 137: 138: #define MAX_RAW_SAMPLES 8192 139: extern portable_samplepair_t s_rawsamples[MAX_RAW_SAMPLES]; 140: 141: extern cvar_t *s_volume; 142: extern cvar_t *s_nosound; 143: extern cvar_t *s_loadas8bit; 144: extern cvar_t *s_khz; 145: extern cvar_t *s_show; 146: extern cvar_t *s_mixahead; 147: extern cvar_t *s_testsound; 148: extern cvar_t *s_primary; 149: 150: wavinfo_t GetWavinfo (char *name, byte *wav, int wavlength); 151: 152: void S_InitScaletable (void); 153: 154: sfxcache_t *S_LoadSound (sfx_t *s); 155: 156: void S_IssuePlaysound (playsound_t *ps); 157: 158: void S_PaintChannels(int endtime); 159: 160: // picks a channel based on priorities, empty slots, number of channels 161: channel_t *S_PickChannel(int entnum, int entchannel); 162: 163: // spatializes a channel 164: void S_Spatialize(channel_t *ch);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.