--- np2/sound/adpcmc.c 2003/10/20 06:36:33 1.2 +++ np2/sound/adpcmc.c 2005/02/07 14:46:12 1.6 @@ -6,7 +6,6 @@ ADPCMCFG adpcmcfg; - void adpcm_initialize(UINT rate) { adpcmcfg.rate = rate; @@ -20,8 +19,8 @@ void adpcm_setvol(UINT vol) { void adpcm_reset(ADPCM ad) { ZeroMemory(ad, sizeof(_ADPCM)); - ad->mask = 0; // (BYTE)~0x1c; - ad->delta = 128; + ad->mask = 0; // (UINT8)~0x1c; + ad->delta = 127; STOREINTELWORD(ad->reg.stop, 0x0002); STOREINTELWORD(ad->reg.limit, 0xffff); ad->stop = 0x000060; @@ -46,18 +45,19 @@ void adpcm_update(ADPCM ad) { 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; - ((BYTE *)(&ad->reg))[reg] = value; + sound_sync(); + ((UINT8 *)(&ad->reg))[reg] = value; switch(reg) { case 0x00: // control1 if ((value & 0x80) && (!ad->play)) { ad->play = 0x20; ad->pos = ad->start; ad->samp = 0; - ad->delta = 128; + ad->delta = 127; ad->remain = 0; } if (value & 1) { @@ -115,7 +115,7 @@ 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); }