Diff for /np2/sound/adpcmc.c between versions 1.1.1.1 and 1.5

version 1.1.1.1, 2003/10/16 17:58:07 version 1.5, 2004/02/06 17:10:32
Line 6 Line 6
   
         ADPCMCFG        adpcmcfg;          ADPCMCFG        adpcmcfg;
   
   
 void adpcm_initialize(UINT rate) {  void adpcm_initialize(UINT rate) {
   
         adpcmcfg.rate = rate;          adpcmcfg.rate = rate;
Line 21  void adpcm_reset(ADPCM ad) { Line 20  void adpcm_reset(ADPCM ad) {
   
         ZeroMemory(ad, sizeof(_ADPCM));          ZeroMemory(ad, sizeof(_ADPCM));
         ad->mask = 0;                                   // (BYTE)~0x1c;          ad->mask = 0;                                   // (BYTE)~0x1c;
         ad->delta = 128;          ad->delta = 127;
         STOREINTELWORD(ad->reg.stop, 0x0002);          STOREINTELWORD(ad->reg.stop, 0x0002);
         STOREINTELWORD(ad->reg.limit, 0xffff);          STOREINTELWORD(ad->reg.limit, 0xffff);
         ad->stop = 0x000060;          ad->stop = 0x000060;
Line 33  void adpcm_update(ADPCM ad) { Line 32  void adpcm_update(ADPCM ad) {
   
         UINT32  addr;          UINT32  addr;
   
         ad->base = ADTIMING * (OPNA_CLOCK / 72) / adpcmcfg.rate;          if (adpcmcfg.rate) {
                   ad->base = ADTIMING * (OPNA_CLOCK / 72) / adpcmcfg.rate;
           }
         addr = LOADINTELWORD(ad->reg.delta);          addr = LOADINTELWORD(ad->reg.delta);
         addr = (addr * ad->base) >> 16;          addr = (addr * ad->base) >> 16;
         if (addr < 0x80) {          if (addr < 0x80) {
Line 44  void adpcm_update(ADPCM ad) { Line 45  void adpcm_update(ADPCM ad) {
         ad->level = (ad->reg.level * adpcmcfg.vol) >> 4;          ad->level = (ad->reg.level * adpcmcfg.vol) >> 4;
 }  }
   
 void adpcm_setreg(ADPCM ad, BYTE reg, BYTE value) {  void adpcm_setreg(ADPCM ad, REG8 reg, REG8 value) {
   
         UINT32  addr;          UINT32  addr;
   
           sound_sync();
         ((BYTE *)(&ad->reg))[reg] = value;          ((BYTE *)(&ad->reg))[reg] = value;
         switch(reg) {          switch(reg) {
                 case 0x00:                                                              // control1                  case 0x00:                                                              // control1
Line 55  void adpcm_setreg(ADPCM ad, BYTE reg, BY Line 57  void adpcm_setreg(ADPCM ad, BYTE reg, BY
                                 ad->play = 0x20;                                  ad->play = 0x20;
                                 ad->pos = ad->start;                                  ad->pos = ad->start;
                                 ad->samp = 0;                                  ad->samp = 0;
                                 ad->delta = 128;                                  ad->delta = 127;
                                 ad->remain = 0;                                  ad->remain = 0;
                         }                          }
                         if (value & 1) {                          if (value & 1) {
Line 113  void adpcm_setreg(ADPCM ad, BYTE reg, BY Line 115  void adpcm_setreg(ADPCM ad, BYTE reg, BY
         }          }
 }  }
   
 BYTE adpcm_status(ADPCM ad) {  REG8 adpcm_status(ADPCM ad) {
   
         return(((ad->status | 8) & ad->mask) | ad->play);          return(((ad->status | 8) & ad->mask) | ad->play);
 }  }

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


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