|
|
| version 1.1.1.1, 2003/10/16 17:58:07 | version 1.4, 2004/02/03 08:24:40 |
|---|---|
| Line 33 void adpcm_update(ADPCM ad) { | Line 33 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 46 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 113 void adpcm_setreg(ADPCM ad, BYTE reg, BY | Line 116 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); |
| } | } |