Diff for /np2/sound/beepc.c between versions 1.7 and 1.11

version 1.7, 2004/01/13 05:30:59 version 1.11, 2005/02/07 14:46:12
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "dosio.h"
 #include        "cpucore.h"  #include        "cpucore.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
Line 11 Line 12
         BEEPCFG         beepcfg;          BEEPCFG         beepcfg;
   
   
   // #define      BEEPLOG
   
   #if defined(BEEPLOG)
   static struct {
           FILEH   fh;
           UINT    events;
           UINT32  event[0x10000];
   } bplog;
   
   static void beeplogflash(void) {
   
           if ((bplog.fh != FILEH_INVALID) && (bplog.events)) {
                   file_write(bplog.fh, bplog.event, bplog.events * sizeof(UINT32));
                   bplog.events = 0;
           }
   }
   #endif
   
   
 void beep_initialize(UINT rate) {  void beep_initialize(UINT rate) {
   
         beepcfg.rate = rate;          beepcfg.rate = rate;
         beepcfg.vol = 2;          beepcfg.vol = 2;
         beepcfg.puchibase = (rate * 3) / (11025 * 2);  #if defined(BEEPLOG)
           bplog.fh = file_create("beeplog");
           bplog.events = 0;
   #endif
   }
   
   void beep_deinitialize(void) {
   
   #if defined(BEEPLOG)
           beeplogflash();
           if (bplog.fh != FILEH_INVALID) {
                   file_close(bplog.fh);
                   bplog.fh = FILEH_INVALID;
           }
   #endif
 }  }
   
 void beep_setvol(UINT vol) {  void beep_setvol(UINT vol) {
Line 53  void beep_hzset(UINT16 cnt) { Line 87  void beep_hzset(UINT16 cnt) {
                         return;                          return;
                 }                  }
         }          }
         beep.puchi = beepcfg.puchibase;  
 }  }
   
 void beep_modeset(void) {  void beep_modeset(void) {
   
         BYTE    newmode;          UINT8   newmode;
   
         newmode = (pit.mode[1] >> 2) & 3;          newmode = (pit.ch[1].ctrl >> 2) & 3;
         beep.puchi = beepcfg.puchibase;  
         if (beep.mode != newmode) {          if (beep.mode != newmode) {
                 sound_sync();                  sound_sync();
                 beep.mode = newmode;                  beep.mode = newmode;
                 if (!newmode) {                                 // mode:#0, #1                  beep_eventinit();
                         beep_eventinit();  
                 }  
         }          }
 }  }
   
Line 79  static void beep_eventset(void) { Line 109  static void beep_eventset(void) {
   
         enable = beep.low & beep.buz;          enable = beep.low & beep.buz;
         if (beep.enable != enable) {          if (beep.enable != enable) {
   #if defined(BEEPLOG)
                   UINT32  tmp;
                   tmp = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK;
                   if (enable) {
                           tmp |= 0x80000000;
                   }
                   else {
                           tmp &= ~0x80000000;
                   }
                   bplog.event[bplog.events++] = tmp;
                   if (bplog.events >= NELEMENTS(bplog.event)) {
                           beeplogflash();
                   }
   #endif
                   if (beep.events >= (BEEPEVENT_MAX / 2)) {
                           sound_sync();
                   }
                 beep.enable = enable;                  beep.enable = enable;
                 if (beep.events < BEEPEVENT_MAX) {                  if (beep.events < BEEPEVENT_MAX) {
                         clock = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK;                          clock = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK;
Line 97  void beep_eventinit(void) { Line 144  void beep_eventinit(void) {
         beep.enable = 0;          beep.enable = 0;
         beep.lastenable = 0;          beep.lastenable = 0;
         beep.clock = soundcfg.lastclock;          beep.clock = soundcfg.lastclock;
                                         // nevent.clock + nevent.baseclock - nevent.remainclock;  
         beep.events = 0;          beep.events = 0;
 }  }
   
Line 108  void beep_eventreset(void) { Line 154  void beep_eventreset(void) {
         beep.events = 0;          beep.events = 0;
 }  }
   
   
 void beep_lheventset(int low) {  void beep_lheventset(int low) {
   
         if (beep.low != low) {          if (beep.low != low) {
                 beep.low = low;                  beep.low = low;
                 if (!beep.mode) {                  beep_eventset();
                         if (beep.events >= (BEEPEVENT_MAX / 2)) {  
                                 sound_sync();  
                         }  
                         beep_eventset();  
                 }  
         }          }
 }  }
   
Line 127  void beep_oneventset(void) { Line 167  void beep_oneventset(void) {
         int             buz;          int             buz;
   
         buz = (sysport.c & 8)?0:1;          buz = (sysport.c & 8)?0:1;
   
         if (beep.buz != buz) {          if (beep.buz != buz) {
                 sound_sync();  
                 beep.buz = buz;                  beep.buz = buz;
                 if (buz) {                  beep_eventset();
                         beep.puchi = beepcfg.puchibase;  
                 }  
                 if (!beep.mode) {  
                         beep_eventset();  
                 }  
                 else {  
                         beep.cnt = 0;  
                 }  
         }          }
 }  }
   

Removed from v.1.7  
changed lines
  Added in v.1.11


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