if (unlikely(s_chan->bFMod == 2))
{
// sucks, have to do double work
- assert(!s_chan->bNoise);
- d = do_samples_gauss(tmpFMod, decode_block, NULL, ch, ns_to,
+ if (s_chan->bNoise)
+ d = do_samples_noise(tmpFMod, ch, ns_to);
+ else
+ d = do_samples_gauss(tmpFMod, decode_block, NULL, ch, ns_to,
&spu.sb[ch], s_chan->sinc, &s_chan->spos, &s_chan->iSBPos);
if (!s_chan->bStarting) {
d = MixADSR(tmpFMod, &s_chan->ADSRX, d);
spu.cycles_played += ns_to * 768;
spu.decode_pos = (spu.decode_pos + ns_to) & 0x1ff;
+ spu.spuStat = (spu.spuStat & ~0x800) | ((spu.decode_pos << 3) & 0x800);
#if 0
static int ccount; static time_t ctime; ccount++;
if (time(NULL) != ctime)