|
|
- #ifndef HUGEDRIVER_H_INCLUDE
- #define HUGEDRIVER_H_INCLUDE
-
- #define DN(A, B, C) (unsigned char)(A),(unsigned char)((B << 4) | (C >> 8)),(unsigned char)(C & 0xFF)
-
- #define C_3 0
- #define Cs3 1
- #define D_3 2
- #define Ds3 3
- #define E_3 4
- #define F_3 5
- #define Fs3 6
- #define G_3 7
- #define Gs3 8
- #define A_3 9
- #define As3 10
- #define B_3 11
- #define C_4 12
- #define Cs4 13
- #define D_4 14
- #define Ds4 15
- #define E_4 16
- #define F_4 17
- #define Fs4 18
- #define G_4 19
- #define Gs4 20
- #define A_4 21
- #define As4 22
- #define B_4 23
- #define C_5 24
- #define Cs5 25
- #define D_5 26
- #define Ds5 27
- #define E_5 28
- #define F_5 29
- #define Fs5 30
- #define G_5 31
- #define Gs5 32
- #define A_5 33
- #define As5 34
- #define B_5 35
- #define C_6 36
- #define Cs6 37
- #define D_6 38
- #define Ds6 39
- #define E_6 40
- #define F_6 41
- #define Fs6 42
- #define G_6 43
- #define Gs6 44
- #define A_6 45
- #define As6 46
- #define B_6 47
- #define C_7 48
- #define Cs7 49
- #define D_7 50
- #define Ds7 51
- #define E_7 52
- #define F_7 53
- #define Fs7 54
- #define G_7 55
- #define Gs7 56
- #define A_7 57
- #define As7 58
- #define B_7 59
- #define C_8 60
- #define Cs8 61
- #define D_8 62
- #define Ds8 63
- #define E_8 64
- #define F_8 65
- #define Fs8 66
- #define G_8 67
- #define Gs8 68
- #define A_8 69
- #define As8 70
- #define B_8 71
- #define LAST_NOTE 72
- #define ___ 90
-
- typedef void (*hUGERoutine_t)(unsigned char param, unsigned char ch, unsigned char tick);
-
- typedef struct hUGESong_t {
- unsigned char tempo;
- const unsigned char * order_cnt;
- const unsigned char ** order1, ** order2, ** order3, ** order4;
- const unsigned char * duty_instruments, * wave_instruments, * noise_instruments;
- const hUGERoutine_t ** routines;
- const unsigned char * waves;
- } hUGESong_t;
-
- // initialize the driver with song data
- void hUGE_init(const hUGESong_t * song);
- void hUGE_init_banked(const hUGESong_t * song) __banked;
-
- // driver routine
- void hUGE_dosound();
- void hUGE_dosound_banked() __banked;
-
- enum hUGE_channel_t {HT_CH1 = 0, HT_CH2, HT_CH3, HT_CH4};
- enum hUGE_mute_t {HT_CH_PLAY = 0, HT_CH_MUTE};
-
- void hUGE_mute_channel(enum hUGE_channel_t ch, enum hUGE_mute_t mute);
- void hUGE_mute_channel_banked(enum hUGE_channel_t ch, enum hUGE_mute_t mute) __banked;
-
- void hUGE_set_position(unsigned char pattern);
- void hUGE_set_position_banked(unsigned char pattern) __banked;
-
- extern volatile unsigned char hUGE_current_wave;
- #define hUGE_NO_WAVE 100
-
- inline void hUGE_reset_wave() {
- hUGE_current_wave = hUGE_NO_WAVE;
- }
- inline void hUGE_reset_wave_banked() {
- hUGE_current_wave = hUGE_NO_WAVE;
- }
-
- #endif
|