MCUME/MCUME_teensy41/teensypce/psg.h

37 wiersze
1.1 KiB
C

#ifndef _PSG_H_
#define _PSG_H_
/* Macro to access currently selected PSG channel */
#define PSGCH psg.channel[psg.select]
/* PSG structure */
typedef struct {
uint8 select; /* Selected channel (0-5) */
uint8 globalbalance; /* Global sound balance */
uint8 noisectrl; /* Noise enable and frequency */
uint8 lfofreq; /* LFO frequency */
uint8 lfoctrl; /* LFO control */
struct {
int counter; /* Waveform index counter */
uint16 frequency; /* Channel frequency */
uint8 control; /* Channel enable, DDA, volume */
uint8 balance; /* Channel balance */
uint8 waveform[32]; /* Waveform data */
uint8 waveform_index; /* Waveform data index */
} channel[8];
}t_psg;
/* Global variables */
extern t_psg psg;
/* Function prototypes */
int psg_init(void);
void psg_reset(void);
void psg_shutdown(void);
void psg_w(uint16 address, uint8 data);
void psg_update(int16 *bufl, int16 *bufr, int length);
#endif /* _PSG_H_ */