|
|
1.1 ! root 1: // snd_loc.h -- private sound functions ! 2: ! 3: // !!! if this is changed, the asm code must change !!! ! 4: typedef struct ! 5: { ! 6: int left; ! 7: int right; ! 8: } portable_samplepair_t; ! 9: ! 10: typedef struct ! 11: { ! 12: int length; ! 13: int loopstart; ! 14: int speed; // not needed, because converted on load? ! 15: int width; ! 16: int stereo; ! 17: byte data[1]; // variable sized ! 18: } sfxcache_t; ! 19: ! 20: typedef struct sfx_s ! 21: { ! 22: char name[MAX_QPATH]; ! 23: int registration_sequence; ! 24: sfxcache_t *cache; ! 25: } sfx_t; ! 26: ! 27: // a playsound_t will be generated by each call to S_StartSound, ! 28: // when the mixer reaches playsound->begin, the playsound will ! 29: // be assigned to a channel ! 30: typedef struct playsound_s ! 31: { ! 32: struct playsound_s *prev, *next; ! 33: sfx_t *sfx; ! 34: float volume; ! 35: float attenuation; ! 36: int entnum; ! 37: int entchannel; ! 38: qboolean fixed_origin; // use origin field instead of entnum's origin ! 39: vec3_t origin; ! 40: unsigned begin; // begin on this sample ! 41: } playsound_t; ! 42: ! 43: typedef struct ! 44: { ! 45: int channels; ! 46: int samples; // mono samples in buffer ! 47: int submission_chunk; // don't mix less than this # ! 48: int samplepos; // in mono samples ! 49: int samplebits; ! 50: int speed; ! 51: byte *buffer; ! 52: } dma_t; ! 53: ! 54: // !!! if this is changed, the asm code must change !!! ! 55: typedef struct ! 56: { ! 57: sfx_t *sfx; // sfx number ! 58: int leftvol; // 0-255 volume ! 59: int rightvol; // 0-255 volume ! 60: int end; // end time in global paintsamples ! 61: int pos; // sample position in sfx ! 62: int looping; // where to loop, -1 = no looping OBSOLETE? ! 63: int entnum; // to allow overriding a specific sound ! 64: int entchannel; // ! 65: vec3_t origin; // only use if fixed_origin is set ! 66: vec_t dist_mult; // distance multiplier (attenuation/clipK) ! 67: int master_vol; // 0-255 master volume ! 68: qboolean fixed_origin; // use origin instead of fetching entnum's origin ! 69: qboolean autosound; // from an entity->sound, cleared each frame ! 70: } channel_t; ! 71: ! 72: typedef struct ! 73: { ! 74: int rate; ! 75: int width; ! 76: int channels; ! 77: int loopstart; ! 78: int samples; ! 79: int dataofs; // chunk starts this many bytes from file start ! 80: } wavinfo_t; ! 81: ! 82: ! 83: /* ! 84: ==================================================================== ! 85: ! 86: SYSTEM SPECIFIC FUNCTIONS ! 87: ! 88: ==================================================================== ! 89: */ ! 90: ! 91: // initializes cycling through a DMA buffer and returns information on it ! 92: qboolean SNDDMA_Init(void); ! 93: ! 94: // gets the current DMA position ! 95: int SNDDMA_GetDMAPos(void); ! 96: ! 97: // shutdown the DMA xfer. ! 98: void SNDDMA_Shutdown(void); ! 99: ! 100: void SNDDMA_BeginPainting (void); ! 101: ! 102: void SNDDMA_Submit(void); ! 103: ! 104: //==================================================================== ! 105: ! 106: #define MAX_CHANNELS 32 ! 107: extern channel_t channels[MAX_CHANNELS]; ! 108: ! 109: extern int paintedtime; ! 110: extern int s_rawend; ! 111: extern vec3_t listener_origin; ! 112: extern vec3_t listener_forward; ! 113: extern vec3_t listener_right; ! 114: extern vec3_t listener_up; ! 115: extern dma_t dma; ! 116: extern playsound_t s_pendingplays; ! 117: ! 118: #define MAX_RAW_SAMPLES 8192 ! 119: extern portable_samplepair_t s_rawsamples[MAX_RAW_SAMPLES]; ! 120: ! 121: extern cvar_t *s_volume; ! 122: extern cvar_t *s_nosound; ! 123: extern cvar_t *s_loadas8bit; ! 124: extern cvar_t *s_khz; ! 125: extern cvar_t *s_show; ! 126: extern cvar_t *s_mixahead; ! 127: extern cvar_t *s_testsound; ! 128: extern cvar_t *s_primary; ! 129: ! 130: wavinfo_t GetWavinfo (char *name, byte *wav, int wavlength); ! 131: ! 132: void S_InitScaletable (void); ! 133: ! 134: sfxcache_t *S_LoadSound (sfx_t *s); ! 135: ! 136: void S_IssuePlaysound (playsound_t *ps); ! 137: ! 138: void S_PaintChannels(int endtime); ! 139: ! 140: // picks a channel based on priorities, empty slots, number of channels ! 141: channel_t *S_PickChannel(int entnum, int entchannel); ! 142: ! 143: // spatializes a channel ! 144: 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.