File:  [RetroPC.NET] / np2 / sound / cs4231.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Fri Oct 17 02:58:08 2003 JST (22 years ago) by yui
Branches: mie
CVS tags: start, rel_036
Neko Project II


typedef BYTE (*CS4231DMA)(void);

enum {
	CS4231_BUFFERS	= (1 << 6),
	CS4231_BUFBYTES	= (CS4231_BUFFERS * 4)
};

typedef struct {
	BYTE	adc_l;				// 0
	BYTE	adc_r;				// 1
	BYTE	aux1_l;				// 2
	BYTE	aux1_r;				// 3
	BYTE	aux2_l;				// 4
	BYTE	aux2_r;				// 5
	BYTE	dac_l;				// 6
	BYTE	dac_r;				// 7
	BYTE	datafmt;			// 8
	BYTE	intconfig;			// 9
	BYTE	pinctrl;			// a
	BYTE	errorstatus;
	BYTE	mode_id;
	BYTE	loopctrl;
	BYTE	playcount[2];

	BYTE	featurefunc[2];
	BYTE	line_l;
	BYTE	line_r;
	BYTE	timer[2];
	BYTE	reserved1;
	BYTE	reserved2;
	BYTE	featurestatus;
	BYTE	chipid;
	BYTE	monoinput;
	BYTE	reserved3;
	BYTE	cap_datafmt;
	BYTE	reserved4;
	BYTE	cap_basecount[2];
} CS4231REG;

typedef struct {
	UINT		bufsize;
	UINT		readpos;
	UINT		writepos;
	UINT32		curtime;
	UINT32		step;
	SINT16		pcmdata[2];
	CS4231DMA	proc;

	BYTE		enable;
	BYTE		portctrl;
	UINT16		port;
	BYTE		dmairq;
	BYTE		dmach;
	BYTE		adrs;
	BYTE		index;
	BYTE		intflag;
	BYTE		outenable;
	BYTE		extfunc;
	BYTE		padding;

	CS4231REG	reg;
	BYTE		buffer[CS4231_BUFBYTES];
} _CS4231, *CS4231;


#ifdef __cplusplus
extern "C" {
#endif

extern const CS4231DMA cs4231dec[16];

BYTE cs4231_nodecode(void);
void cs4231_dma(NEVENTITEM item);
BYTE DMACCALL cs4231dmafunc(BYTE func);

void cs4231_initialize(UINT rate);
void cs4231_setvol(UINT vol);

void cs4231_reset(void);
void cs4231_update(void);
void cs4231_control(UINT index, BYTE value);

void SOUNDCALL cs4231_getpcm(CS4231 cs, SINT32 *pcm, UINT count);

#ifdef __cplusplus
}
#endif


RetroPC.NET-CVS <cvs@retropc.net>