|
|
| version 1.1, 2003/10/16 17:58:08 | version 1.7, 2005/04/08 19:39:09 |
|---|---|
| Line 1 | Line 1 |
| typedef BYTE (*CS4231DMA)(void); | |
| enum { | enum { |
| CS4231_BUFFERS = (1 << 6), | CS4231_BUFFERS = (1 << 9), |
| CS4231_BUFBYTES = (CS4231_BUFFERS * 4) | CS4231_BUFMASK = (CS4231_BUFFERS - 1) |
| }; | }; |
| typedef struct { | typedef struct { |
| BYTE adc_l; // 0 | UINT8 adc_l; // 0 |
| BYTE adc_r; // 1 | UINT8 adc_r; // 1 |
| BYTE aux1_l; // 2 | UINT8 aux1_l; // 2 |
| BYTE aux1_r; // 3 | UINT8 aux1_r; // 3 |
| BYTE aux2_l; // 4 | UINT8 aux2_l; // 4 |
| BYTE aux2_r; // 5 | UINT8 aux2_r; // 5 |
| BYTE dac_l; // 6 | UINT8 dac_l; // 6 |
| BYTE dac_r; // 7 | UINT8 dac_r; // 7 |
| BYTE datafmt; // 8 | UINT8 datafmt; // 8 |
| BYTE intconfig; // 9 | UINT8 iface; // 9 |
| BYTE pinctrl; // a | UINT8 pinctrl; // a |
| BYTE errorstatus; | UINT8 errorstatus; |
| BYTE mode_id; | UINT8 mode_id; |
| BYTE loopctrl; | UINT8 loopctrl; |
| BYTE playcount[2]; | UINT8 playcount[2]; |
| BYTE featurefunc[2]; | UINT8 featurefunc[2]; |
| BYTE line_l; | UINT8 line_l; |
| BYTE line_r; | UINT8 line_r; |
| BYTE timer[2]; | UINT8 timer[2]; |
| BYTE reserved1; | UINT8 reserved1; |
| BYTE reserved2; | UINT8 reserved2; |
| BYTE featurestatus; | UINT8 featurestatus; |
| BYTE chipid; | UINT8 chipid; |
| BYTE monoinput; | UINT8 monoinput; |
| BYTE reserved3; | UINT8 reserved3; |
| BYTE cap_datafmt; | UINT8 cap_datafmt; |
| BYTE reserved4; | UINT8 reserved4; |
| BYTE cap_basecount[2]; | UINT8 cap_basecount[2]; |
| } CS4231REG; | } CS4231REG; |
| typedef struct { | typedef struct { |
| UINT bufsize; | UINT bufsize; |
| UINT readpos; | UINT bufdatas; |
| UINT writepos; | UINT bufpos; |
| UINT32 curtime; | UINT32 pos12; |
| UINT32 step; | UINT32 step12; |
| SINT16 pcmdata[2]; | |
| CS4231DMA proc; | UINT8 enable; |
| UINT8 portctrl; | |
| BYTE enable; | UINT8 dmairq; |
| BYTE portctrl; | UINT8 dmach; |
| UINT16 port; | UINT16 port[8]; |
| BYTE dmairq; | UINT8 adrs; |
| BYTE dmach; | UINT8 index; |
| BYTE adrs; | UINT8 intflag; |
| BYTE index; | UINT8 outenable; |
| BYTE intflag; | UINT8 extfunc; |
| BYTE outenable; | UINT8 extindex; |
| BYTE extfunc; | |
| BYTE padding; | |
| CS4231REG reg; | CS4231REG reg; |
| BYTE buffer[CS4231_BUFBYTES]; | UINT8 buffer[CS4231_BUFFERS]; |
| } _CS4231, *CS4231; | } _CS4231, *CS4231; |
| typedef struct { | |
| UINT rate; | |
| } CS4231CFG; | |
| #ifdef __cplusplus | #ifdef __cplusplus |
| extern "C" { | extern "C" { |
| #endif | #endif |
| extern const CS4231DMA cs4231dec[16]; | |
| BYTE cs4231_nodecode(void); | |
| void cs4231_dma(NEVENTITEM item); | void cs4231_dma(NEVENTITEM item); |
| BYTE DMACCALL cs4231dmafunc(BYTE func); | REG8 DMACCALL cs4231dmafunc(REG8 func); |
| void cs4231_datasend(REG8 dat); | |
| void cs4231_initialize(UINT rate); | void cs4231_initialize(UINT rate); |
| void cs4231_setvol(UINT vol); | void cs4231_setvol(UINT vol); |
| void cs4231_reset(void); | void cs4231_reset(void); |
| void cs4231_update(void); | void cs4231_update(void); |
| void cs4231_control(UINT index, BYTE value); | void cs4231_control(UINT index, REG8 dat); |
| void SOUNDCALL cs4231_getpcm(CS4231 cs, SINT32 *pcm, UINT count); | void SOUNDCALL cs4231_getpcm(CS4231 cs, SINT32 *pcm, UINT count); |