rnd-20031205-B-src
[rocksndiamonds.git] / src / libgame / sound.c
index 96165fe4ba1a00a9432b044244ea5ba7d60cc881..c8d61a828abbd877fee2c5d641132d970089a470 100644 (file)
@@ -862,7 +862,7 @@ static void Mixer_InsertSound(SoundControl snd_ctrl)
       if (num_music_noconf == 0)       /* no fallback music available */
        return;
 
-      snd_ctrl.nr = (-(snd_ctrl.nr + 1)) % num_music_noconf;
+      snd_ctrl.nr = UNMAP_NOCONF_MUSIC(snd_ctrl.nr) % num_music_noconf;
       snd_info = Music_NoConf[snd_ctrl.nr];
     }
     else
@@ -1868,13 +1868,9 @@ static void *Load_MOD(char *filename)
 
 static void *Load_WAV_or_MOD(char *filename)
 {
-  char *basename = strrchr(filename, '/');
-
-  basename = (basename != NULL ? basename + 1 : filename);
-
-  if (FileIsSound(basename))
+  if (FileIsSound(filename))
     return Load_WAV(filename);
-  else if (FileIsMusic(basename))
+  else if (FileIsMusic(filename))
     return Load_MOD(filename);
   else
     return NULL;
@@ -1889,6 +1885,15 @@ void LoadCustomMusic_NoConf(void)
   struct dirent *dir_entry;
   int num_music = getMusicListSize();
 
+#if 0
+  int ii;
+  for (ii = 0; ii < num_music; ii++)
+  {
+    struct FileInfo *music = getMusicListEntry(ii);
+    printf("sound process: music %d: '%s'\n", ii, music->filename);
+  }
+#endif
+
   if (!audio.sound_available)
     return;
 
@@ -1924,6 +1929,10 @@ void LoadCustomMusic_NoConf(void)
     {
       struct FileInfo *music = getMusicListEntry(i);
 
+#if 0
+      printf("sound process: '%s'\n", music->filename);
+#endif
+
       if (strcmp(basename, music->filename) == 0)
       {
        music_already_used = TRUE;
@@ -1944,10 +1953,15 @@ void LoadCustomMusic_NoConf(void)
 
     filename = getPath2(music_directory, basename);
 
+#if 1
+    if (FileIsMusic(basename))
+      mus_info = Load_WAV_or_MOD(filename);
+#else
     if (FileIsSound(basename))
       mus_info = Load_WAV(filename);
     else if (FileIsMusic(basename))
       mus_info = Load_MOD(filename);
+#endif
 
     free(filename);