/programs/games/doom/trunk/i_sound.c |
---|
456,8 → 456,6 |
// Mixing channel index. |
int chan; |
int i; |
int flags; |
int size = 0; |
// Left and right channel |
// are in global mixbuffer, alternating. |
481,7 → 479,6 |
// Love thy L2 chache - made this a loop. |
// Now more channels could be set at compile time |
// as well. Thus loop those channels. |
// flags=0; |
for ( chan = 0; chan < NUM_CHANNELS; chan++ ) |
{ |
488,8 → 485,6 |
// Check channel, if active. |
if (channels[ chan ]) |
{ |
// flags=1; |
// Get the raw data from the channel. |
sample = *channels[ chan ]; |
// Add left and right part |
535,22 → 530,9 |
// Increment current pointers in mixbuffer. |
leftout += step; |
rightout += step; |
// if (flags) |
// size+=4; |
} |
SetBuffer(hMixBuff,mixbuffer,mix_offset,mix_size); |
// WaveOut(hMixBuff,(char*)&mixbuffer[0],4096); |
// if(size) |
// { |
// WaveOut(hMixBuff,(char*)&mixbuffer[0],size); |
// SetBufferPos(hMixBuff, 0); |
// SetBuffer(hMixBuff,(char*)&mixbuffer[0],mix_offset,4096); |
// PlayBuffer(hMixBuff, PCM_SYNC); |
// }; |
} |
/programs/games/doom/trunk/kolibc/include/sound.h |
---|
76,18 → 76,18 |
typedef unsigned int SNDBUF; |
int _stdcall InitSound(); |
int _stdcall InitSound(int *version); |
SNDBUF _stdcall CreateBuffer(unsigned int format,int size); |
int _stdcall CreateBuffer(unsigned int format,int size,SNDBUF *buf); |
int _stdcall DestroyBuffer(SNDBUF hBuff); |
int _stdcall SetFormat(SNDBUF hBuff, unsigned int format); |
int _stdcall GetFormat(SNDBUF hBuff); |
int _stdcall GetFormat(SNDBUF hBuff, unsigned int *format); |
int _stdcall ResetBuffer(SNDBUF hBuff, unsigned int flags); |
int _stdcall SetBufferPos(SNDBUF hBuff, int offset); |
int _stdcall GetBufferPos(SNDBUF hBuff); |
int _stdcall GetBufferSize(SNDBUF hBuff); |
int _stdcall GetBufferPos(SNDBUF hBuff, int *offset); |
int _stdcall GetBufferSize(SNDBUF hBuff, int *size); |
int _stdcall SetBuffer(SNDBUF hBuff,void* buff, |
int offs, int size); |
98,7 → 98,7 |
int _stdcall SetVolume(SNDBUF hBuff, int left, int right); |
int _stdcall GetVolume(SNDBUF hBuff, int *left, int *right); |
int _stdcall SetPan(SNDBUF hBuff, int pan); |
int _stdcall GetPan(SNDBUF hBuff, int pan); |
int _stdcall GetPan(SNDBUF hBuff, int *pan); |
int _stdcall GetMasterVol(int* vol); |
int _stdcall SetMasterVol(int vol); |
/programs/games/doom/trunk/s_sound.c |
---|
178,7 → 178,6 |
{ |
int i; |
char *thread_stack; |
int ver; |
numChannels = NUM_CHANNELS; |
243,21 → 242,48 |
void sound_proc(void) |
{ |
int ver; |
int err; |
SND_EVENT evnt; |
int i; |
if((ver = InitSound())< SOUND_VERSION ) |
if(err = InitSound(&ver)) |
{ |
printf("Error %x Sound service not installed\n\r", err); |
_asm |
{ |
mov eax, -1 |
int 0x40 |
}; |
} |
if(ver< SOUND_VERSION) |
{ |
printf("Sound service version mismatch\n\r"); |
printf("Installed version: %d, required version %d\n\r", |
ver, SOUND_VERSION); |
_asm |
{ |
mov eax, -1 |
int 0x40 |
}; |
}; |
hMixBuff=CreateBuffer(PCM_2_16_11|PCM_RING,0); |
if (err = CreateBuffer(PCM_2_16_11|PCM_RING,0, &hMixBuff)) |
{ |
printf("Error %x sound not available\n\r", err); |
printf("handle = %x\n\r", hMixBuff); |
_asm |
{ |
mov eax, -1 |
int 0x40 |
}; |
} |
if(!hMixBuff) |
if(err = GetBufferSize(hMixBuff, &mix_size)) |
{ |
printf("sound not available\n\r"); |
printf("Error %x get buffer size\n\r", err); |
printf("size = %x\n\r", mix_size); |
_asm |
{ |
mov eax, -1 |
264,13 → 290,22 |
int 0x40 |
}; |
}; |
mix_size= mix_size/2; |
mix_size=GetBufferSize(hMixBuff)/2; |
printf("mixer size %d\n\r", mix_size); |
if(err=PlayBuffer(hMixBuff, 0)) |
{ |
printf("Error %x play buffer\n\r", err); |
_asm |
{ |
mov eax, -1 |
int 0x40 |
}; |
} |
mixbuffer = malloc(mix_size); |
PlayBuffer(hMixBuff, 0); |
while(sound_state) |
{ |
GetNotify(&evnt); |