mcd, fix pcm looping (1st sample lost)
authorkub <derkub@gmail.com>
Sun, 31 Oct 2021 21:47:49 +0000 (22:47 +0100)
committerkub <derkub@gmail.com>
Sun, 31 Oct 2021 21:47:49 +0000 (22:47 +0100)
pico/cd/pcm.c

index 795ec3b..9d84ee8 100644 (file)
@@ -92,7 +92,7 @@ void pcd_pcm_sync(unsigned int to)
     mul_l = (int)ch->regs[0] * (ch->regs[1] & 0xf); 
     mul_r = (int)ch->regs[0] * (ch->regs[1] >>  4);
 
-    for (s = 0; s < steps; s++, addr = (addr + inc) & 0x07FFFFFF)
+    for (s = 0; s < steps; s++)
     {
       smp = Pico_mcd->pcm_ram[addr >> PCM_STEP_SHIFT];
 
@@ -104,7 +104,8 @@ void pcd_pcm_sync(unsigned int to)
         addr <<= PCM_STEP_SHIFT;
         if (smp == 0xff)
           break;
-      }
+      } else
+        addr = (addr + inc) & 0x07FFFFFF;
 
       if (smp & 0x80)
         smp = -(smp & 0x7f);