diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index 2190d43..98f1bbf 100644 Binary files a/!TheEsc/!RunImage,ff8 and b/!TheEsc/!RunImage,ff8 differ diff --git a/!TheEsc/c/Intro b/!TheEsc/c/Intro index a32a322..6b32551 100644 --- a/!TheEsc/c/Intro +++ b/!TheEsc/c/Intro @@ -14,58 +14,9 @@ void intro() sound_set_voice(3,"WaveSynth-Beep"); sound_set_voice(4,"WaveSynth-Beep"); sound_composition_init(); - - // DUn, dun, daan duhhn - sound_composition_element_add(currentstart,1,sound_note("A4#"),200); - sound_composition_element_add(currentstart,2,sound_note("A5#"),200); - currentstart += 200; - sound_composition_element_add(currentstart,3,sound_note("F3"),200); - sound_composition_element_add(currentstart,4,sound_note("F4"),200); - currentstart += 200; - sound_composition_element_add(currentstart,1,sound_note("G3#"),200); - sound_composition_element_add(currentstart,2,sound_note("G4#"),200); - currentstart += 200; - sound_composition_element_add(currentstart,3,sound_note("C3"),200); - sound_composition_element_add(currentstart,4,sound_note("C4"),200); - currentstart += 200; - - // DUn, dun, daan duhhn - sound_composition_element_add(currentstart,1,sound_note("A3#"),200); - sound_composition_element_add(currentstart,2,sound_note("A4#"),200); - currentstart += 200; - sound_composition_element_add(currentstart,3,sound_note("F2"),200); - currentstart += 200; - sound_composition_element_add(currentstart,4,sound_note("G2#"),200); - currentstart += 200; - sound_composition_element_add(currentstart,1,sound_note("C2"),200); - currentstart += 200; - - // Duh - sound_composition_element_add(currentstart,2,sound_note("A3#"),400); - sound_composition_element_add(currentstart,3,sound_note("A2#"),400); - currentstart += 250; - - // Dun De Da - sound_composition_element_add(currentstart,1,sound_note("F1"),20); - currentstart += 50; - sound_composition_element_add(currentstart,4,sound_note("A2#"),5); - currentstart += 20; - sound_composition_element_add(currentstart,2,sound_note("D2#"),200); - currentstart += 180; - - - sound_composition_element_add(currentstart,3,sound_note("D2"),50); - currentstart += 50; - sound_composition_element_add(currentstart,1,sound_note("A2#"),30); - currentstart += 30; - sound_composition_element_add(currentstart,2,sound_note("G1"),50); - currentstart += 50; - sound_composition_element_add(currentstart,5,sound_note("C2"),50); - currentstart += 50; - sound_composition_element_add(currentstart,3,sound_note("A2#"),100); - sound_composition_element_add(currentstart,1,sound_note("F2"),100); - currentstart += 100; + sound_composition_load("cmpintro"); + tick = clock(); sound_composition_start(clock()); diff --git a/!TheEsc/c/Mission1 b/!TheEsc/c/Mission1 index 0bb1317..b96c6f5 100644 --- a/!TheEsc/c/Mission1 +++ b/!TheEsc/c/Mission1 @@ -8,6 +8,8 @@ //#defene PROFILE(X) lastprofile = clock(); X; printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t%s %i\n", #X, (clock() - lastprofile)) #define PROFILE(X) X +extern sound_composition_save(char *filename); +extern sound_composition_load(char *filename); enum sprite_e{player_ship, durno_ship, ship_trgt, durno_ship2, ship2_trgt, player_shipl,player_shipr,explode_start,explode_shp2,explode_shp3,explode_end,photon1,photon2,plasma1,plasma2}; char *sprites[] = {"player_ship","durno_ship","ship_trgt","durno_ship2","ship2_trgt","player_shipl","player_shipr","explode_shp1","explode_shp2","explode_shp3","explode_shp4","photon1","photon2","plasma1","plasma2"}; @@ -842,40 +844,9 @@ void game1_death() sound_set_voice(3,"WaveSynth-Beep"); sound_set_voice(4,"WaveSynth-Beep"); sound_composition_init(); - - currentstart += 100; - sound_composition_element_add(currentstart,1,sound_note("D2"),150); - currentstart += 100; - sound_composition_element_add(currentstart,2,sound_note("G2"),200); - currentstart += 200; - sound_composition_element_add(currentstart,3,sound_note("B3"),75); - currentstart += 40; - sound_composition_element_add(currentstart,4,sound_note("G2"),75); - currentstart += 50; - sound_composition_element_add(currentstart,2,sound_note("B3"),200); - currentstart += 200; - sound_composition_element_add(currentstart,1,sound_note("A3"),100); - currentstart += 100; - sound_composition_element_add(currentstart,3,sound_note("G2"),150); - currentstart += 150; - sound_composition_element_add(currentstart,2,sound_note("E2"),100); - currentstart += 100; - sound_composition_element_add(currentstart,1,sound_note("D2"),150); - currentstart += 150; - sound_composition_element_add(currentstart,3,sound_note("D2"),150); - currentstart += 100; - sound_composition_element_add(currentstart,4,sound_note("G2"),150); - currentstart += 150; - sound_composition_element_add(currentstart,1,sound_note("B3"),75); - currentstart += 40; - sound_composition_element_add(currentstart,2,sound_note("G2"),75); - currentstart += 40; - sound_composition_element_add(currentstart,3,sound_note("B3"),150); - currentstart += 150; - sound_composition_element_add(currentstart,4,sound_note("A3"),130); - currentstart += 100; - sound_composition_element_add(currentstart,1,sound_note("G2"),200); - currentstart += 300; + + sound_composition_load("cmpagrac"); + tick = clock(); sound_composition_start(clock()); diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index a729141..0cdd61c 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -74,40 +74,9 @@ void game2_death() sound_set_voice(3,"WaveSynth-Beep"); sound_set_voice(4,"WaveSynth-Beep"); sound_composition_init(); - - currentstart += 100; - sound_composition_element_add(currentstart,1,sound_note("D2"),150); - currentstart += 100; - sound_composition_element_add(currentstart,2,sound_note("G2"),200); - currentstart += 200; - sound_composition_element_add(currentstart,3,sound_note("B3"),75); - currentstart += 40; - sound_composition_element_add(currentstart,4,sound_note("G2"),75); - currentstart += 50; - sound_composition_element_add(currentstart,2,sound_note("B3"),200); - currentstart += 200; - sound_composition_element_add(currentstart,1,sound_note("A3"),100); - currentstart += 100; - sound_composition_element_add(currentstart,3,sound_note("G2"),150); - currentstart += 150; - sound_composition_element_add(currentstart,2,sound_note("E2"),100); - currentstart += 100; - sound_composition_element_add(currentstart,1,sound_note("D2"),150); - currentstart += 150; - sound_composition_element_add(currentstart,3,sound_note("D2"),150); - currentstart += 100; - sound_composition_element_add(currentstart,4,sound_note("G2"),150); - currentstart += 150; - sound_composition_element_add(currentstart,1,sound_note("B3"),75); - currentstart += 40; - sound_composition_element_add(currentstart,2,sound_note("G2"),75); - currentstart += 40; - sound_composition_element_add(currentstart,3,sound_note("B3"),150); - currentstart += 150; - sound_composition_element_add(currentstart,4,sound_note("A3"),130); - currentstart += 100; - sound_composition_element_add(currentstart,1,sound_note("G2"),200); - currentstart += 300; + + sound_composition_load("cmpagrac"); + tick = clock(); sound_composition_start(clock()); diff --git a/!TheEsc/c/Sound b/!TheEsc/c/Sound index 84dacc6..9def5ea 100644 --- a/!TheEsc/c/Sound +++ b/!TheEsc/c/Sound @@ -21,6 +21,35 @@ void sound_on() _kernel_swi(Sound_Enable,&inreg,&outreg); } +void sound_composition_load(char* filename) +{ + int length; + + // Attempt to get file info + inreg.r[0] = 13; + inreg.r[1] = (int) filename; + _kernel_swi(OS_File,&inreg,&outreg); + + // Length will be in R4 if it exists + length = outreg.r[4]; + + if(length > sizeof(composition)) + { + screen_nobuffer(); + printf("Composition exceeds %d bytes (%d bytes)",sizeof(composition),length); + exit(0); + } + + // Attempt to get file info + inreg.r[0] = 16; + inreg.r[1] = (int) filename; + inreg.r[2] = (int) composition; + inreg.r[3] = 0; + + _kernel_swi(OS_File,&inreg,&outreg); + +} + void sound_voices(int num) { inreg.r[0] = num; @@ -73,6 +102,17 @@ void sound_composition_element_add(int start, int channel, int note, int length) composition[current_element].Length = length; current_element++; } +void sound_composition_save(char *filename) +{ + // Attempt to get file info + inreg.r[0] = 10; + inreg.r[1] = (int) filename; + inreg.r[2] = 0xffd; + inreg.r[4] = (int) composition; + inreg.r[5] = (int) composition+(sizeof(composition[0]) * COMPOSITION_MAX); + + _kernel_swi(OS_File,&inreg,&outreg); +} void sound_composition_debug() { @@ -93,8 +133,6 @@ void sound_composition_debug() ); } } - - printf("%i elements at %i bytes each\n",current_element,sizeof(composition[0])); printf("------------------------------\n"); } diff --git a/!TheEsc/cmpagrac,ffd b/!TheEsc/cmpagrac,ffd new file mode 100644 index 0000000..4fe45cc Binary files /dev/null and b/!TheEsc/cmpagrac,ffd differ diff --git a/!TheEsc/cmpintro,ffd b/!TheEsc/cmpintro,ffd new file mode 100644 index 0000000..fd955a4 Binary files /dev/null and b/!TheEsc/cmpintro,ffd differ diff --git a/!TheEsc/comp,ffd b/!TheEsc/comp,ffd new file mode 100644 index 0000000..fd955a4 Binary files /dev/null and b/!TheEsc/comp,ffd differ diff --git a/!TheEsc/h/Sound b/!TheEsc/h/Sound index b20cdac..12a4d51 100644 --- a/!TheEsc/h/Sound +++ b/!TheEsc/h/Sound @@ -5,5 +5,6 @@ struct CompositionElement { unsigned char Note; signed char Volume; unsigned char Channel; + /*unsigned char word alignment*/ unsigned short int Length; };