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

version 1.1.1.1, 2003/10/16 17:58:07 version 1.7, 2005/05/13 05:47:25
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 20  void adpcm_setvol(UINT vol) { Line 19  void adpcm_setvol(UINT vol) {
 void adpcm_reset(ADPCM ad) {  void adpcm_reset(ADPCM ad) {
   
         ZeroMemory(ad, sizeof(_ADPCM));          ZeroMemory(ad, sizeof(_ADPCM));
         ad->mask = 0;                                   // (BYTE)~0x1c;          ad->mask = 0;                                   // (UINT8)~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, UINT reg, REG8 value) {
   
         UINT32  addr;          UINT32  addr;
   
         ((BYTE *)(&ad->reg))[reg] = value;          sound_sync();
           ((UINT8 *)(&ad->reg))[reg] = value;
         switch(reg) {          switch(reg) {
                 case 0x00:                                                              // control1                  case 0x00:                                                              // control1
                         if ((value & 0x80) && (!ad->play)) {                          if ((value & 0x80) && (!ad->play)) {
                                 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.7


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