浏览代码

mcd, fix pcm looping (1st sample lost)

root 2 年之前
父节点
当前提交
be9047dde2
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      pico/cd/pcm.c

+ 3 - 2
pico/cd/pcm.c

@@ -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);