2024-03-26 14:43:02 +01:00
|
|
|
#ifndef _PSG_H_
|
|
|
|
#define _PSG_H_
|
|
|
|
|
2024-03-26 16:47:42 +01:00
|
|
|
#include <stdint.h>
|
2024-03-26 14:43:02 +01:00
|
|
|
|
2024-03-26 15:05:39 +01:00
|
|
|
typedef enum {
|
|
|
|
e_O_1 = 0,
|
|
|
|
e_O_2,
|
|
|
|
e_O_3,
|
|
|
|
e_O_4,
|
|
|
|
e_O_5,
|
|
|
|
e_O_6,
|
|
|
|
e_O_7,
|
2024-03-26 21:05:48 +01:00
|
|
|
e_O_8,
|
|
|
|
e_O_Null
|
2024-03-26 15:05:39 +01:00
|
|
|
} t_octave;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
e_C = 0,
|
|
|
|
e_Cis,
|
|
|
|
e_D,
|
|
|
|
e_Dis,
|
|
|
|
e_E,
|
|
|
|
e_F,
|
|
|
|
e_Fis,
|
|
|
|
e_G,
|
|
|
|
e_Gis,
|
|
|
|
e_A,
|
|
|
|
e_Ais,
|
2024-03-26 21:05:48 +01:00
|
|
|
e_H,
|
|
|
|
e_Pause,
|
|
|
|
e_Null
|
2024-03-26 15:05:39 +01:00
|
|
|
} t_note;
|
|
|
|
|
2024-03-26 22:12:46 +01:00
|
|
|
#define e_Es e_Dis
|
|
|
|
#define e_As e_Gis
|
|
|
|
#define e_B e_Ais
|
|
|
|
|
2024-03-26 15:05:39 +01:00
|
|
|
|
|
|
|
void psgInit();
|
2024-03-26 22:12:46 +01:00
|
|
|
|
2024-03-26 14:43:02 +01:00
|
|
|
void psgPlayTone(uint8_t channel, t_octave octave, t_note note);
|
2024-03-26 22:12:46 +01:00
|
|
|
void psgAmplitude(uint8_t channel, uint8_t volume);
|
|
|
|
|
|
|
|
// low level
|
2024-03-26 16:47:42 +01:00
|
|
|
void psgWriteFrequency(uint8_t channel, uint16_t frequencyCode);
|
2024-03-26 22:12:46 +01:00
|
|
|
|
|
|
|
// very low level
|
2024-03-26 16:47:42 +01:00
|
|
|
void psgWrite(uint8_t address, uint8_t data);
|
2024-03-26 21:05:48 +01:00
|
|
|
uint8_t psgReadShadow(uint8_t address);
|
2024-03-26 14:43:02 +01:00
|
|
|
|
|
|
|
#endif // _PSG_H_
|