Minor sound updates. Small speedup for dac.
This commit is contained in:
parent
ce5e77940d
commit
4c03d8c704
|
@ -46,21 +46,22 @@ static void UpdateStream(INT32 chip, INT32 length)
|
||||||
if (length <= 0) return;
|
if (length <= 0) return;
|
||||||
|
|
||||||
INT16 *lbuf = lBuffer + ptr->nCurrentPosition;
|
INT16 *lbuf = lBuffer + ptr->nCurrentPosition;
|
||||||
INT16 *rbuf = rBuffer + ptr->nCurrentPosition;
|
INT16 *rbuf = rBuffer + ptr->nCurrentPosition;
|
||||||
|
|
||||||
INT16 Out = ptr->Output;
|
INT16 lOut = ((ptr->OutputDir & BURN_SND_ROUTE_LEFT ) == BURN_SND_ROUTE_LEFT ) ? ptr->Output : 0;
|
||||||
|
INT16 rOut = ((ptr->OutputDir & BURN_SND_ROUTE_RIGHT) == BURN_SND_ROUTE_RIGHT) ? ptr->Output : 0;
|
||||||
|
|
||||||
ptr->nCurrentPosition += length;
|
ptr->nCurrentPosition += length;
|
||||||
|
|
||||||
if (Out) {
|
if (rOut && lOut) {
|
||||||
while (length--) {
|
while (length--) {
|
||||||
if ((ptr->OutputDir & BURN_SND_ROUTE_LEFT) == BURN_SND_ROUTE_LEFT) {
|
*lbuf++ = *lbuf + lOut;
|
||||||
*lbuf++ = *lbuf + Out;
|
*rbuf++ = *rbuf + rOut;
|
||||||
}
|
|
||||||
if ((ptr->OutputDir & BURN_SND_ROUTE_RIGHT) == BURN_SND_ROUTE_RIGHT) {
|
|
||||||
*rbuf++ = *rbuf + Out;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else if (lOut) {
|
||||||
|
while (length--) *lbuf++ = *lbuf + lOut;
|
||||||
|
} else if (rOut) {
|
||||||
|
while (length--) *rbuf++ = *rbuf + rOut;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,17 +34,17 @@ static void make_raw(UINT8 *src, UINT32 len)
|
||||||
if (ptr[0] != 'R' || ptr[1] != 'I' || ptr[2] != 'F' || ptr[3] != 'F') return;
|
if (ptr[0] != 'R' || ptr[1] != 'I' || ptr[2] != 'F' || ptr[3] != 'F') return;
|
||||||
ptr += 4; // skip RIFF
|
ptr += 4; // skip RIFF
|
||||||
|
|
||||||
UINT32 length = get_long(); ptr += 4; // total length of file
|
UINT32 length = get_long(); ptr += 4; // total length of file
|
||||||
if (len < length) length = len - 8; // first 8 bytes (RIFF + Len)
|
if (len < length) length = len - 8; // first 8 bytes (RIFF + Len)
|
||||||
|
|
||||||
/* "WAVEfmt " */ ptr += 8; // WAVEfmt + 1 space
|
/* "WAVEfmt " */ ptr += 8; // WAVEfmt + 1 space
|
||||||
UINT32 length2 = get_long(); ptr += 4; // Wavefmt length
|
UINT32 length2 = get_long(); ptr += 4; // Wavefmt length
|
||||||
/* unsigned short format = get_short(); */ptr += 2; // format?
|
/* unsigned short format = get_short(); */ptr += 2; // format?
|
||||||
UINT16 channels = get_short(); ptr += 2; // channels
|
UINT16 channels = get_short(); ptr += 2; // channels
|
||||||
UINT32 sample_rate = get_long(); ptr += 4; // sample rate
|
UINT32 sample_rate = get_long(); ptr += 4; // sample rate
|
||||||
/* unsigned int speed = get_long(); */ptr += 4; // speed - should equal (bits * channels * sample_rate)
|
/* unsigned int speed = get_long(); */ptr += 4; // speed - should equal (bits * channels * sample_rate)
|
||||||
/* unsigned short align = get_short(); */ptr += 2; // block align should be ((bits / 8) * channels)
|
/* unsigned short align = get_short(); */ptr += 2; // block align should be ((bits / 8) * channels)
|
||||||
UINT16 bits = get_short() / 8; ptr += 2; // bits per sample (0010)
|
UINT16 bits = get_short() / 8; ptr += 2; // bits per sample (0010)
|
||||||
ptr += length2 - 16; // get past the wave format chunk
|
ptr += length2 - 16; // get past the wave format chunk
|
||||||
|
|
||||||
// are we in the 'data' chunk? if not, skip this chunk.
|
// are we in the 'data' chunk? if not, skip this chunk.
|
||||||
|
|
Loading…
Reference in New Issue