#ifndef SOUND_SN76489_H
#define SOUND_SN76489_H

enum {
    SN76496,
    NCR8496,
    PSSJ
};

extern const device_t sn76489_device;
extern const device_t ncr8496_device;

extern int sn76489_mute;

typedef struct sn76489_t {
    int      stat[4];
    int      latch[4];
    int      count[4];
    int      freqlo[4];
    int      freqhi[4];
    int      vol[4];
    uint32_t shift;
    uint32_t white_noise_tap_1;
    uint32_t white_noise_tap_2;
    uint32_t feedback_mask;
    uint8_t  noise;
    int      lasttone;
    uint8_t  firstdat;
    int      type;
    int      extra_divide;

    int16_t buffer[SOUNDBUFLEN];
    int     pos;

    double psgconst;
} sn76489_t;

void sn76489_init(sn76489_t *sn76489, uint16_t base, uint16_t size, int type, int freq);
void sn74689_set_extra_divide(sn76489_t *sn76489, int enable);

#endif /*SOUND_SN76489_H*/
