#include #include #include #include #include #define CONDERROR(a) if ((a)) {fprintf(stderr,"Error: %s\n",SDL_GetError());exit(1);} #define NULLERROR(a) CONDERROR((a)==NULL) #define TUNE_TITLE_PAGE 0 #define TUNE_GAMEPLAY 1 #define TUNE_HIGH_SCORE_ENTRY 2 #define NUM_TUNES 3 #define SOUND_BANG 0 #define NUM_SOUNDS 6 static Mix_Music *music[NUM_TUNES]; static int music_volume[NUM_TUNES] = {128,128,128}; static Mix_Chunk *wav[NUM_SOUNDS]; int audio_rate; Uint16 audio_format; int audio_channels; char *load_file(char *); char *wav_file[] = { "booom.wav","cboom.wav","boom.wav","bzboom.wav","speedup.wav","laser.wav" }; char *tune_file[] = {/*{{{*/ "magic.mod", "getzznew.mod", "4est_fulla3s.mod" };/*}}}*/ int init_sound() {/*{{{*/ // Return 1 if the sound is ready to roll, and 0 if not. int i; #ifdef DEBUG printf ("Initialise sound\n"); #endif // Initialise output with SDL_mixer if (Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, AUDIO_S16, MIX_DEFAULT_CHANNELS, 512) < 0) { fprintf(stderr, "Couldn't open SDL_mixer audio: %s\n", SDL_GetError()); return 0; } //#ifdef DEBUG // What kind of sound did we get? Ah who cares. As long as it can play // some basic bangs and simple music. Mix_QuerySpec(&audio_rate, &audio_format, &audio_channels); printf("Opened audio at %d Hz %d bit %s\n", audio_rate, (audio_format&0xFF), (audio_channels > 1) ? "stereo" : "mono"); //#endif // Preload all the tunes into memory for (i=0; i