Diff for /np2/sound/psggenc.c between versions 1.2 and 1.11

version 1.2, 2003/10/19 16:54:51 version 1.11, 2004/07/26 18:52:55
Line 7 Line 7
   
         PSGGENCFG       psggencfg;          PSGGENCFG       psggencfg;
   
 static const BYTE psggen_deftbl[0x10] =  static const UINT8 psggen_deftbl[0x10] =
                                 {0, 0, 0, 0, 0, 0, 0, 0xbf, 0, 0, 0, 0, 0, 0, 0xff, 0xff};                                  {0, 0, 0, 0, 0, 0, 0, 0xbf, 0, 0, 0, 0, 0, 0, 0xff, 0xff};
   
 static const BYTE psgenv_pat[16] = {  static const UINT8 psgenv_pat[16] = {
                                         PSGENV_ONESHOT,                                          PSGENV_ONESHOT,
                                         PSGENV_ONESHOT,                                          PSGENV_ONESHOT,
                                         PSGENV_ONESHOT,                                          PSGENV_ONESHOT,
Line 45  void psggen_initialize(UINT rate) { Line 45  void psggen_initialize(UINT rate) {
         if (psggencfg.puchidec == 0) {          if (psggencfg.puchidec == 0) {
                 psggencfg.puchidec = 1;                  psggencfg.puchidec = 1;
         }          }
         psggencfg.base = (5000 * (1 << (32 - PSGFREQPADBIT - PSGADDEDBIT)))          if (rate) {
                   psggencfg.base = (5000 * (1 << (32 - PSGFREQPADBIT - PSGADDEDBIT)))
                                                                                                                         / (rate / 25);                                                                                                                          / (rate / 25);
           }
 }  }
   
 void psggen_setvol(UINT vol) {  void psggen_setvol(UINT vol) {
Line 65  void psggen_reset(PSGGEN psg) { Line 67  void psggen_reset(PSGGEN psg) {
   
         ZeroMemory(psg, sizeof(_PSGGEN));          ZeroMemory(psg, sizeof(_PSGGEN));
         for (i=0; i<3; i++) {          for (i=0; i<3; i++) {
                 psg->tone[i].pvol = &psg->envvol;                  psg->tone[i].pvol = psggencfg.volume + 0;
         }          }
         for (i=0; i<sizeof(psggen_deftbl); i++) {          for (i=0; i<sizeof(psggen_deftbl); i++) {
                 psggen_setreg(psg, (BYTE)i, psggen_deftbl[i]);                  psggen_setreg(psg, (REG8)i, psggen_deftbl[i]);
           }
   }
   
   void psggen_restore(PSGGEN psg) {
   
           REG8    i;
   
           for (i=0; i<0x0e; i++) {
                   psggen_setreg(psg, i, ((UINT8 *)&psg->reg)[i]);
         }          }
 }  }
   
 void psggen_setreg(PSGGEN psg, BYTE reg, BYTE value) {  void psggen_setreg(PSGGEN psg, REG8 reg, REG8 value) {
   
         UINT    freq;          UINT    freq;
         UINT    ch;          UINT    ch;
   
         reg &= 15;          reg &= 15;
         ((BYTE *)&psg->reg)[reg] = value;  
         if (reg < 14) {          if (reg < 14) {
                 sound_sync();                  sound_sync();
         }          }
           ((UINT8 *)&psg->reg)[reg] = value;
         switch(reg) {          switch(reg) {
                 case 0:                  case 0:
                 case 1:                  case 1:
Line 111  void psggen_setreg(PSGGEN psg, BYTE reg, Line 122  void psggen_setreg(PSGGEN psg, BYTE reg,
                 case 7:                  case 7:
                         keydisp_psgmix(psg);                          keydisp_psgmix(psg);
                         psg->mixer = ~value;                          psg->mixer = ~value;
                           psg->puchicount = psggencfg.puchidec;
   //                      TRACEOUT(("psg %x 7 %d", (long)psg, value));
                         break;                          break;
   
                 case 8:                  case 8:
                 case 9:                  case 9:
                 case 10:                  case 10:
                         ch = reg - 8;                          ch = reg - 8;
                         keydisp_psgvol(psg, (BYTE)ch);                          keydisp_psgvol(psg, (UINT8)ch);
                         if (value & 0x10) {                          if (value & 0x10) {
                                 psg->tone[ch].pvol = &psg->envvol;                                  psg->tone[ch].pvol = &psg->evol;
                         }                          }
                         else {                          else {
                                 psg->tone[ch].pvol = ((BYTE *)&psg->reg) + reg;                                  psg->tone[ch].pvol = psggencfg.volume + (value & 15);
                         }                          }
                         psg->tone[ch].puchi = psggencfg.puchidec;                          psg->tone[ch].puchi = psggencfg.puchidec;
 //                      TRACEOUT(("%d", value));                          psg->puchicount = psggencfg.puchidec;
   //                      TRACEOUT(("psg %x %x %d", (long)psg, reg, value));
                         break;                          break;
   
                 case 11:                  case 11:
Line 146  void psggen_setreg(PSGGEN psg, BYTE reg, Line 160  void psggen_setreg(PSGGEN psg, BYTE reg,
         }          }
 }  }
   
 BYTE psggen_getreg(PSGGEN psg, BYTE reg) {  REG8 psggen_getreg(PSGGEN psg, REG8 reg) {
   
           return(((UINT8 *)&psg->reg)[reg & 15]);
   }
   
         return(((BYTE *)&psg->reg)[reg & 15]);  void psggen_setpan(PSGGEN psg, UINT ch, REG8 pan) {
   
           if ((psg) && (ch < 3)) {
                   psg->tone[ch].pan = pan;
           }
 }  }
   

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


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