X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fcd%2Fpcm.c;h=2b818e01771a9d21904e50c3594e67f43805efbd;hb=48e8482fc2d74c9b96e581241390bade986acb22;hp=1de04d623cdb8c3bf68f43a5474a3e81c94172e1;hpb=abe0ea43b561e2def84cf921b1d6d8c82819ea69;p=picodrive.git diff --git a/Pico/cd/pcm.c b/Pico/cd/pcm.c index 1de04d6..2b818e0 100644 --- a/Pico/cd/pcm.c +++ b/Pico/cd/pcm.c @@ -48,10 +48,11 @@ void pcm_write(unsigned int a, unsigned int d) void pcm_set_rate(int rate) { - double step = 31.8 * 1024.0 / (double) rate; // max <4 @ 8000Hz + float step = 31.8 * 1024.0 / (float) rate; // max <4 @ 8000Hz step *= 256*256/4; g_rate = (unsigned int) step; - printf("g_rate: %08x\n", g_rate); + if (step - (float) g_rate >= 0.5) g_rate++; + printf("g_rate: %f %08x\n", (double)step, g_rate); } @@ -82,7 +83,7 @@ void pcm_update(int *buffer, int length, int stereo) mul_l = ((int)ch->regs[0] * (ch->regs[1] & 0xf)) >> (5+1); // (env * pan) >> 5 mul_r = ((int)ch->regs[0] * (ch->regs[1] >> 4)) >> (5+1); step = ((unsigned int)(*(unsigned short *)&ch->regs[2]) * g_rate) >> 14; // freq step -// printf("step=%i, cstep=%i, mul_l=%i, mul_r=%i, ch=%i, addr=%x, en=%02x\n", +// fprintf(stderr, "step=%i, cstep=%i, mul_l=%i, mul_r=%i, ch=%i, addr=%x, en=%02x\n", // *(unsigned short *)&ch->regs[2], step, mul_l, mul_r, i, addr, Pico_mcd->pcm.enabled); if (!stereo && mul_l < mul_r) mul_l = mul_r;