1 |
// Tento soubor definuje vse potrebne pro ulozeni skladeb do pameti programu. |
1 |
// Tento soubor definuje vse potrebne pro ulozeni skladeb do pameti programu. |
2 |
// Dale definuje pislusna makra pro snadne definice. Tyto definice jsou voleny |
2 |
// Dale definuje pislusna makra pro snadne definice. Tyto definice jsou voleny |
3 |
// zamerne tak, aby mohl byt pouzit stejny soubor s definici skladby jak |
3 |
// zamerne tak, aby mohl byt pouzit stejny soubor s definici skladby jak |
4 |
// pro vlozeni primo do firmwaru v dobe prekladu tak i k dodatecnemu nahrani |
4 |
// pro vlozeni primo do firmwaru v dobe prekladu tak i k dodatecnemu nahrani |
5 |
// skladby pres seriovou linku. |
5 |
// skladby pres seriovou linku. |
6 |
|
6 |
|
7 |
// Definice hranic pameti pro ulozeni pisnicek |
7 |
// Definice hranic pameti pro ulozeni pisnicek |
8 |
#define STARTMEM 0x600 // Zde zacina pametoa oblast pro pisnicky |
8 |
#define STARTMEM 0x600 // Zde zacina pametoa oblast pro pisnicky |
9 |
#define ENDMEM 0x7ff // Zde konci pametova oblast pro pisnicky |
9 |
#define ENDMEM 0x7ff // Zde konci pametova oblast pro pisnicky |
10 |
|
10 |
|
11 |
// Definice konstant pro kodovani dat |
11 |
// Definice konstant pro kodovani dat |
12 |
#define ENDOFDATA 0x3FFF // Priznak konce pisnicek (prazdna pamet) |
12 |
#define ENDOFDATA 0x3FFF // Priznak konce pisnicek (prazdna pamet) |
13 |
#define DATABEGIN 0x2000 // Kod zacatku skladby |
13 |
#define DATABEGIN 0x2000 // Kod zacatku skladby |
14 |
#define MASKBEGIN 0x3800 |
14 |
#define MASKBEGIN 0x3800 |
15 |
#define DATATEMPO 0x2800 // Kod pro nastaveni tempa |
15 |
#define DATATEMPO 0x2800 // Kod pro nastaveni tempa |
16 |
#define MASKTEMPO 0x3800 |
16 |
#define MASKTEMPO 0x3800 |
17 |
#define DATAPAUSE 0x3000 // Kod pro nastaveni mezery mezi notami |
17 |
#define DATAPAUSE 0x3000 // Kod pro nastaveni mezery mezi notami |
18 |
#define MASKPAUSE 0x3800 |
18 |
#define MASKPAUSE 0x3800 |
19 |
#define MASKNOTE 0x2000 // Nejvissi bit 0 urcuje, ze jde o notu |
19 |
#define MASKNOTE 0x2000 // Nejvissi bit 0 urcuje, ze jde o notu |
20 |
|
20 |
|
21 |
// Pseudomakra pro jednoduchy zapis skladeb do zdrojaku jazyka C |
21 |
// Pseudomakra pro jednoduchy zapis skladeb do zdrojaku jazyka C |
22 |
#define BEGIN DATABEGIN+ // Zacatek pisnicky + posunuti oktav |
22 |
#define BEGIN DATABEGIN+ // Zacatek pisnicky + posunuti oktav |
23 |
#define TEMPO DATATEMPO+ // Delka nejskratsi noty v ms |
23 |
#define TEMPO DATATEMPO+ // Delka nejskratsi noty v ms |
24 |
#define PAUSE DATAPAUSE+ // Delka mezery mezi notami |
24 |
#define PAUSE DATAPAUSE+ // Delka mezery mezi notami |
25 |
#define END // Konec skladby, zde nic neznamena |
25 |
#define END // Konec skladby, zde nic neznamena |
26 |
|
26 |
|
27 |
// Pseudomakra pro zapis not, zapisuje se cislo oktavy, nota, delka noty |
27 |
// Pseudomakra pro zapis not, zapisuje se cislo oktavy, nota, delka noty |
28 |
#define C *16 + SOUND_C + 128 * |
28 |
#define C *16 + SOUND_C + 128 * |
29 |
#define Cis *16 + SOUND_Cis + 128 * |
29 |
#define Cis *16 + SOUND_Cis + 128 * |
30 |
#define D *16 + SOUND_D + 128 * |
30 |
#define D *16 + SOUND_D + 128 * |
31 |
#define Dis *16 + SOUND_Dis + 128 * |
31 |
#define Dis *16 + SOUND_Dis + 128 * |
32 |
#define E *16 + SOUND_E + 128 * |
32 |
#define E *16 + SOUND_E + 128 * |
33 |
#define F *16 + SOUND_F + 128 * |
33 |
#define F *16 + SOUND_F + 128 * |
34 |
#define Fis *16 + SOUND_Fis + 128 * |
34 |
#define Fis *16 + SOUND_Fis + 128 * |
35 |
#define G *16 + SOUND_G + 128 * |
35 |
#define G *16 + SOUND_G + 128 * |
36 |
#define Gis *16 + SOUND_Gis + 128 * |
36 |
#define Gis *16 + SOUND_Gis + 128 * |
37 |
#define A *16 + SOUND_A + 128 * |
37 |
#define A *16 + SOUND_A + 128 * |
38 |
#define Ais *16 + SOUND_Ais + 128 * |
38 |
#define Ais *16 + SOUND_Ais + 128 * |
39 |
#define H *16 + SOUND_H + 128 * |
39 |
#define H *16 + SOUND_H + 128 * |
40 |
#define Space SOUND_Space + 128 * |
40 |
#define Space SOUND_Space + 128 * |
41 |
|
41 |
|
42 |
// Pametova oblast |
42 |
// Pametova oblast |
43 |
#ORG 0x600,0x7FF {} // Vyhrazeni oblasti pameti pro ulozeni pisnicek |
43 |
#ORG 0x600,0x7FF {} // Vyhrazeni oblasti pameti pro ulozeni pisnicek |
44 |
#ROM 0x600 = { // Naplneni oblasti pameti daty |
44 |
#ROM 0x600 = { // Naplneni oblasti pameti daty |
45 |
|
45 |
|
46 |
// Pisnicky jako soucast firwaru se vkladaji sem |
46 |
// Pisnicky jako soucast firwaru se vkladaji sem |
47 |
// Museji mit stejny format jako uvedene priklady aby zafungovaly makra |
47 |
// Museji mit stejny format jako uvedene priklady aby zafungovaly makra |
48 |
#include "Skladby\TheFinalSoundDown.txt" |
48 |
#include "Skladby\TheFinalSoundDown.txt" |
49 |
#include "Skladby\BednaOdWhisky.txt" |
49 |
#include "Skladby\BednaOdWhisky.txt" |
50 |
#include "Skladby\KdyzMeBaliZaVojacka.txt" |
50 |
#include "Skladby\KdyzMeBaliZaVojacka.txt" |
51 |
#include "Skladby\Medvedi.txt" |
51 |
#include "Skladby\Medvedi.txt" |
52 |
|
52 |
|
53 |
// Koncova znacka a konec oblasti pro skladby |
53 |
// Koncova znacka a konec oblasti pro skladby |
54 |
ENDOFDATA |
54 |
ENDOFDATA |
55 |
} |
55 |
} |
56 |
|
56 |
|
57 |
// Zruseni definic maker pro definici skladeb |
57 |
// Zruseni definic maker pro definici skladeb |
58 |
// V dalsim programu uz nebudou potreba |
58 |
// V dalsim programu uz nebudou potreba |
59 |
#undef BEGIN |
59 |
#undef BEGIN |
60 |
#undef TEMPO |
60 |
#undef TEMPO |
61 |
#undef PAUSE |
61 |
#undef PAUSE |
62 |
#undef END |
62 |
#undef END |
63 |
#undef C |
63 |
#undef C |
64 |
#undef Cis |
64 |
#undef Cis |
65 |
#undef D |
65 |
#undef D |
66 |
#undef Dis |
66 |
#undef Dis |
67 |
#undef E |
67 |
#undef E |
68 |
#undef F |
68 |
#undef F |
69 |
#undef Fis |
69 |
#undef Fis |
70 |
#undef G |
70 |
#undef G |
71 |
#undef Gis |
71 |
#undef Gis |
72 |
#undef A |
72 |
#undef A |
73 |
#undef Ais |
73 |
#undef Ais |
74 |
#undef H |
74 |
#undef H |
75 |
#undef Space |
75 |
#undef Space |