lol its in c
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

119 lines
2.4 KiB

#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