#include	"compiler.h"
#include	"sound.h"
#include	"rhythm.h"
void SOUNDCALL rhythm_getpcm(RHYTHM rhy, SINT32 *pcm, UINT count) {
	UINT		bit;
	RHYTHMCH	*r;
	UINT		rem;
const SINT16	*src;
	SINT32		*dst;
	SINT32		samp;
	if ((rhy->bitmap == 0) || (count == 0)) {
		return;
	}
	bit = 1;
	r = rhy->r;
	do {
		if (rhy->bitmap & bit) {
			rem = r->remain;
			if (rem > count) {
				rem = count;
				r->remain -= count;
			}
			else {
				rhy->bitmap ^= bit;
				r->remain = 0;
			}
			src = r->ptr;
			dst = pcm;
			do {
				samp = *src++;
				samp *= r->volume;
				samp /= (1 << 12);
				if (r->lr & 0x80) {
					dst[0] += samp;
				}
				if (r->lr & 0x40) {
					dst[1] += samp;
				}
				dst += 2;
			} while(--rem);
			r->ptr = src;
		}
		r++;
		bit <<= 1;
	} while(bit & 0x3f);
}
RetroPC.NET-CVS <cvs@retropc.net>