X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fdfsound%2Fspu.c;h=502567bd4d142a051b6372243eb743b6ce128d2b;hb=9bcccb919c8a2b112b5449e910ecf87bce686ec2;hp=057502e438ac61f19f841f1cd675d441ac669c9b;hpb=c2eee46bfb8a3fde297735a8b115330498d442b4;p=pcsx_rearmed.git diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c index 057502e4..502567bd 100644 --- a/plugins/dfsound/spu.c +++ b/plugins/dfsound/spu.c @@ -211,7 +211,7 @@ static int check_irq(int ch, unsigned char *pos) { if((spu.spuCtrl & (CTRL_ON|CTRL_IRQ)) == (CTRL_ON|CTRL_IRQ) && pos == spu.pSpuIrq) { - //printf("ch%d irq %04x\n", ch, pos - spu.spuMemC); + //printf("ch%d irq %04zx\n", ch, pos - spu.spuMemC); do_irq(); return 1; } @@ -816,7 +816,9 @@ static void do_channels(int ns_to) if (s_chan->bFMod == 2) // fmod freq channel memcpy(iFMod, &ChanBuf, ns_to * sizeof(iFMod[0])); - if (s_chan->bRVBActive && do_rvb) + if (!(spu.spuCtrl & CTRL_MUTE)) + ; + else if (s_chan->bRVBActive && do_rvb) mix_chan_rvb(spu.SSumLR, ns_to, s_chan->iLeftVolume, s_chan->iRightVolume, RVB); else mix_chan(spu.SSumLR, ns_to, s_chan->iLeftVolume, s_chan->iRightVolume); @@ -1237,7 +1239,7 @@ static void do_samples_finish(int *SSumLR, int ns_to, vol_l = vol_l * spu_config.iVolume >> 10; vol_r = vol_r * spu_config.iVolume >> 10; - if (!(spu.spuCtrl & CTRL_MUTE) || !(vol_l | vol_r)) + if (!(vol_l | vol_r)) { // muted? (rare) memset(spu.pS, 0, ns_to * 2 * sizeof(spu.pS[0])); @@ -1338,12 +1340,12 @@ void CALLBACK SPUupdate(void) // XA AUDIO -void CALLBACK SPUplayADPCMchannel(xa_decode_t *xap, unsigned int cycle, int is_start) +void CALLBACK SPUplayADPCMchannel(xa_decode_t *xap, unsigned int cycle, int unused) { if(!xap) return; if(!xap->freq) return; // no xa freq ? bye - if (is_start) + if (spu.XAPlay == spu.XAFeed) do_samples(cycle, 1); // catch up to prevent source underflows later FeedXA(xap); // call main XA feeder @@ -1351,12 +1353,12 @@ void CALLBACK SPUplayADPCMchannel(xa_decode_t *xap, unsigned int cycle, int is_s } // CDDA AUDIO -int CALLBACK SPUplayCDDAchannel(short *pcm, int nbytes, unsigned int cycle, int is_start) +int CALLBACK SPUplayCDDAchannel(short *pcm, int nbytes, unsigned int cycle, int unused) { if (!pcm) return -1; if (nbytes<=0) return -1; - if (is_start) + if (spu.CDDAPlay == spu.CDDAFeed) do_samples(cycle, 1); // catch up to prevent source underflows later FeedCDDA((unsigned char *)pcm, nbytes);