Diff for /np2/sound/pcm86c.c between versions 1.3 and 1.5

version 1.3, 2003/12/08 00:55:33 version 1.5, 2004/02/19 11:32:12
Line 42  void pcm86_reset(void) {           // ve Line 42  void pcm86_reset(void) {           // ve
         pcm86.dactrl = 0x32;          pcm86.dactrl = 0x32;
         pcm86.stepmask = (1 << 2) - 1;          pcm86.stepmask = (1 << 2) - 1;
         pcm86.stepbit = 2;          pcm86.stepbit = 2;
         pcm86.stepclock = (pc.baseclock << 6);          pcm86.stepclock = (pccore.baseclock << 6);
         pcm86.stepclock /= 44100;          pcm86.stepclock /= 44100;
         pcm86.stepclock *= pc.multiple;          pcm86.stepclock *= pccore.multiple;
         pcm86.rescue = (PCM86_RESCUE * 32) << 2;          pcm86.rescue = (PCM86_RESCUE * 32) << 2;
 }  }
   
Line 59  void pcm86_setpcmrate(REG8 val) { Line 59  void pcm86_setpcmrate(REG8 val) {
         SINT32  rate;          SINT32  rate;
   
         rate = pcm86rate8[val & 7];          rate = pcm86rate8[val & 7];
         pcm86.stepclock = (pc.baseclock << 6);          pcm86.stepclock = (pccore.baseclock << 6);
         pcm86.stepclock /= rate;          pcm86.stepclock /= rate;
         pcm86.stepclock *= (pc.multiple << 3);          pcm86.stepclock *= (pccore.multiple << 3);
         if (pcm86cfg.rate) {          if (pcm86cfg.rate) {
                 pcm86.div = (rate << (PCM86_DIVBIT - 3)) / pcm86cfg.rate;                  pcm86.div = (rate << (PCM86_DIVBIT - 3)) / pcm86cfg.rate;
                 pcm86.div2 = (pcm86cfg.rate << (PCM86_DIVBIT + 3)) / rate;                  pcm86.div2 = (pcm86cfg.rate << (PCM86_DIVBIT + 3)) / rate;
Line 95  void pcm86_setnextintr(void) { Line 95  void pcm86_setnextintr(void) {
                         cnt += pcm86.stepmask;                          cnt += pcm86.stepmask;
                         cnt >>= pcm86.stepbit;                          cnt >>= pcm86.stepbit;
 //                      cnt += 4;                                                               // ちょっと延滞させる  //                      cnt += 4;                                                               // ちょっと延滞させる
                         // ここで clk = pc.realclock * cnt / 86pcm_rate                          // ここで clk = pccore.realclock * cnt / 86pcm_rate
                         // clk = ((pc.baseclock / 86pcm_rate) * cnt) * pc.multiple                          // clk = ((pccore.baseclock / 86pcm_rate) * cnt) * pccore.multiple
                         if (pc.baseclock == PCBASECLOCK25) {                          if (pccore.cpumode & CPUMODE_8MHZ) {
                                 clk = clk25_128[pcm86.fifo & 7];                                  clk = clk20_128[pcm86.fifo & 7];
                         }                          }
                         else {                          else {
                                 clk = clk20_128[pcm86.fifo & 7];                                  clk = clk25_128[pcm86.fifo & 7];
                         }                          }
                         // cntは最大 8000h で 32bitで収まるように…                          // cntは最大 8000h で 32bitで収まるように…
                         clk *= cnt;                          clk *= cnt;
                         clk >>= 7;                          clk >>= 7;
 //                      clk++;                                          // roundup  //                      clk++;                                          // roundup
                         clk *= pc.multiple;                          clk *= pccore.multiple;
                         nevent_set(NEVENT_86PCM, clk, pcm86_cb, NEVENT_ABSOLUTE);                          nevent_set(NEVENT_86PCM, clk, pcm86_cb, NEVENT_ABSOLUTE);
                 }                  }
         }          }

Removed from v.1.3  
changed lines
  Added in v.1.5


RetroPC.NET-CVS <cvs@retropc.net>