2016-08-14 22:07:17 -04:00
|
|
|
/* Copyright holders: Sarah Walker
|
|
|
|
|
see COPYING for more details
|
|
|
|
|
*/
|
2016-06-26 00:34:39 +02:00
|
|
|
typedef struct opl_t
|
|
|
|
|
{
|
2019-12-21 20:06:34 +01:00
|
|
|
int pos, chip_nr[2];
|
2016-06-26 00:34:39 +02:00
|
|
|
|
2019-12-21 20:06:34 +01:00
|
|
|
int32_t filtbuf[2],
|
|
|
|
|
buffer[SOUNDBUFLEN * 2],
|
|
|
|
|
buffer2[SOUNDBUFLEN * 2];
|
2016-06-26 00:34:39 +02:00
|
|
|
|
2019-12-21 20:06:34 +01:00
|
|
|
pc_timer_t timers[2][2];
|
2016-06-26 00:34:39 +02:00
|
|
|
} opl_t;
|
|
|
|
|
|
|
|
|
|
|
2019-12-21 20:06:34 +01:00
|
|
|
extern uint8_t opl2_read(uint16_t a, void *priv);
|
|
|
|
|
extern void opl2_write(uint16_t a, uint8_t v, void *priv);
|
|
|
|
|
extern uint8_t opl2_l_read(uint16_t a, void *priv);
|
|
|
|
|
extern void opl2_l_write(uint16_t a, uint8_t v, void *priv);
|
|
|
|
|
extern uint8_t opl2_r_read(uint16_t a, void *priv);
|
|
|
|
|
extern void opl2_r_write(uint16_t a, uint8_t v, void *priv);
|
|
|
|
|
extern uint8_t opl3_read(uint16_t a, void *priv);
|
|
|
|
|
extern void opl3_write(uint16_t a, uint8_t v, void *priv);
|
2016-06-26 00:34:39 +02:00
|
|
|
|
2019-12-21 20:06:34 +01:00
|
|
|
extern void opl2_poll(opl_t *opl, int16_t *bufl, int16_t *bufr);
|
|
|
|
|
extern void opl3_poll(opl_t *opl, int16_t *bufl, int16_t *bufr);
|
2016-06-26 00:34:39 +02:00
|
|
|
|
2019-12-21 20:06:34 +01:00
|
|
|
extern void opl2_init(opl_t *opl);
|
|
|
|
|
extern void opl3_init(opl_t *opl);
|
|
|
|
|
|
|
|
|
|
extern void opl2_update2(opl_t *opl);
|
|
|
|
|
extern void opl3_update2(opl_t *opl);
|