--- np2/sound/adpcmc.c 2003/10/16 17:58:07 1.1 +++ np2/sound/adpcmc.c 2004/02/03 08:24:40 1.4 @@ -33,7 +33,9 @@ void adpcm_update(ADPCM ad) { 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 = (addr * ad->base) >> 16; if (addr < 0x80) { @@ -44,10 +46,11 @@ 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; + sound_sync(); ((BYTE *)(&ad->reg))[reg] = value; switch(reg) { case 0x00: // control1 @@ -113,7 +116,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); }