--- np2/sound/psggenc.c 2003/10/16 17:58:05 1.1 +++ np2/sound/psggenc.c 2003/11/08 21:43:01 1.5 @@ -45,8 +45,10 @@ void psggen_initialize(UINT rate) { if (psggencfg.puchidec == 0) { psggencfg.puchidec = 1; } - psggencfg.base = (5000 * (1 << (32 - PSGFREQPADBIT - PSGADDEDBIT))) + if (rate) { + psggencfg.base = (5000 * (1 << (32 - PSGFREQPADBIT - PSGADDEDBIT))) / (rate / 25); + } } void psggen_setvol(UINT vol) { @@ -111,6 +113,8 @@ void psggen_setreg(PSGGEN psg, BYTE reg, case 7: keydisp_psgmix(psg); psg->mixer = ~value; + psg->puchicount = psggencfg.puchidec; +// TRACEOUT(("psg %x 7 %d", (long)psg, value)); break; case 8: @@ -125,6 +129,8 @@ void psggen_setreg(PSGGEN psg, BYTE reg, psg->tone[ch].pvol = ((BYTE *)&psg->reg) + reg; } psg->tone[ch].puchi = psggencfg.puchidec; + psg->puchicount = psggencfg.puchidec; +// TRACEOUT(("psg %x %x %d", (long)psg, reg, value)); break; case 11: