|
|
| version 1.4, 2003/12/08 00:55:33 | version 1.6, 2004/01/05 14:16:35 |
|---|---|
| Line 14 static const UINT16 cs4231samprate[] = { | Line 14 static const UINT16 cs4231samprate[] = { |
| 54840, 37800, 64000, 44100, | 54840, 37800, 64000, 44100, |
| 48000, 33075, 9600, 6620}; | 48000, 33075, 9600, 6620}; |
| static const BYTE dmach[] = {0xff, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff}; | |
| static const BYTE dmairq[] = {0xff, 0x03, 0x06, 0x0a, 0x0c, 0xff, 0xff, 0xff}; | |
| void cs4231_initialize(UINT rate) { | void cs4231_initialize(UINT rate) { |
| Line 31 void cs4231_setvol(UINT vol) { | Line 28 void cs4231_setvol(UINT vol) { |
| void cs4231_dma(NEVENTITEM item) { | void cs4231_dma(NEVENTITEM item) { |
| DMACH dmach; | |
| REG8 ret; | REG8 ret; |
| SINT32 cnt; | SINT32 cnt; |
| if (item->flag & NEVENT_SETEVENT) { | if (item->flag & NEVENT_SETEVENT) { |
| if (dmac.dmach[0].leng.w) { | if (cs4231.dmach != 0xff) { |
| sound_sync(); | dmach = dmac.dmach + cs4231.dmach; |
| ret = cs4231.proc(); | if (dmach->leng.w) { |
| if ((ret) && (cs4231.reg.pinctrl & 2)) { | sound_sync(); |
| dmac.dmach[0].leng.w = 0; | ret = cs4231.proc(dmach); |
| cs4231.intflag = 1; | if ((ret) && (cs4231.reg.pinctrl & 2)) { |
| pic_setirq(0x0c); | dmach->leng.w = 0; |
| if (cs4231.dmairq != 0xff) { | |
| cs4231.intflag = 1; | |
| pic_setirq(cs4231.dmairq); | |
| } | |
| } | |
| } | } |
| } | } |
| if (cs4231cfg.rate) { | if (cs4231cfg.rate) { |
| Line 86 void cs4231_update(void) { | Line 89 void cs4231_update(void) { |
| void cs4231_control(UINT index, REG8 value) { | void cs4231_control(UINT index, REG8 value) { |
| DMACH dmach; | |
| *(((BYTE *)(&cs4231.reg)) + index) = value; | *(((BYTE *)(&cs4231.reg)) + index) = value; |
| switch(index) { | switch(index) { |
| case 8: // playback data format | case 8: // playback data format |
| Line 94 void cs4231_control(UINT index, REG8 val | Line 99 void cs4231_control(UINT index, REG8 val |
| break; | break; |
| case 9: | case 9: |
| if ((value & 0x5) == 0x5) { | if (cs4231.dmach != 0xff) { |
| dmac.dmach[0].ready = 1; | dmach = dmac.dmach + cs4231.dmach; |
| } | if ((value & 0x5) == 0x5) { |
| else { | dmach->ready = 1; |
| dmac.dmach[0].ready = 0; | } |
| else { | |
| dmach->ready = 0; | |
| } | |
| dmac_check(); | |
| } | } |
| dmac_check(); | |
| break; | break; |
| } | } |
| } | } |