1 #define SETA_NUM_CHANNELS	16
2 #define SETA_NUM_BANKS 		(0x100000 / 0x20000)
3 
4 #define FREQ_BASE_BITS		8					// Frequency fixed decimal shift bits
5 #define ENV_BASE_BITS		16					// wave form envelope fixed decimal shift bits
6 #define	VOL_BASE	(2 * 32 * 256 / 30)			// Volume base
7 
8 struct x1_010_info
9 {
10 	INT32	rate;									// Output sampling rate (Hz)
11 	INT32	address;								// address eor data
12 	INT32	sound_enable;							// sound output enable/disable
13 	UINT8 reg[0x2000];					// X1-010 Register & wave form area
14 	UINT8 HI_WORD_BUF[0x2000];			// X1-010 16bit access ram check avoidance work
15 	UINT32 smp_offset[SETA_NUM_CHANNELS];
16 	UINT32 env_offset[SETA_NUM_CHANNELS];
17 	UINT32 base_clock;
18 	UINT32 sound_banks[SETA_NUM_BANKS];
19 	double gain[2];
20 	INT32 output_dir[2];
21 };
22 
23 typedef struct {
24 	UINT8	status;
25 	UINT8	volume;					// volume / wave form no.
26 	UINT8	frequency;		        // frequency / pitch lo
27 	UINT8	pitch_hi;				// reserved / pitch hi
28 	UINT8	start;					// start address / envelope time
29 	UINT8	end;					// end address / envelope no.
30 	UINT8	reserve[2];
31 } X1_010_CHANNEL;
32 
33 extern UINT8 *X1010SNDROM;
34 extern INT32 X1010_Arbalester_Mode;
35 
36 extern struct x1_010_info * x1_010_chip;
37 
38 void x1010_sound_bank_w(UINT32 offset, UINT16 data);
39 UINT8 x1010_sound_read(UINT32 offset);
40 UINT16 x1010_sound_read_word(UINT32 offset);
41 void x1010_sound_update();
42 void x1010_sound_init(UINT32 base_clock, INT32 address);
43 void x1010_set_route(INT32 nIndex, double nVolume, INT32 nRouteDir);
44 void x1010_scan(INT32 nAction,INT32 *pnMin);
45 void x1010_exit();
46 
47 #define BURN_SND_X1010_ROUTE_1		0
48 #define BURN_SND_X1010_ROUTE_2		1
49 
50 #define x1010_set_all_routes(v, d)						\
51 	x1010_set_route(BURN_SND_X1010_ROUTE_1, v, d);		\
52 	x1010_set_route(BURN_SND_X1010_ROUTE_2, v, d);
53