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