Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30379/src

Modified Files:
	beeplite.c cowmain.c findslot.c input.c local.c makefile 
	newwin.c playback.c sound.c 
Log Message:
Initial SDL patch for multilayered sounds.

Index: findslot.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/findslot.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- findslot.c	21 Apr 2006 12:00:06 -0000	1.2
+++ findslot.c	24 Apr 2006 14:13:25 -0000	1.3
@@ -111,9 +111,9 @@
         socketPause ();
         if (isServerDead ())
         {
-
-#ifdef SOUND
-            Exit_Sound ();
+        	
+#if defined(SOUND) && !defined(HAVE_SDL)
+            Exit_Sound();
 #endif
 
             LineToConsole ("Shit!  Ghostbusted!\n");
@@ -158,8 +158,8 @@
         if (isServerDead ())
         {
 
-#ifdef SOUND
-            Exit_Sound ();
+#if defined(SOUND) && !defined(HAVE_SDL)
+            Exit_Sound();
 #endif
 
             LineToConsole ("Damn, We've been ghostbusted!\n");
@@ -217,8 +217,8 @@
                 else if (event.Window == qwin)
                 {
 
-#ifdef SOUND
-                    Exit_Sound ();
+#if defined(SOUND) && !defined(HAVE_SDL)
+                    Exit_Sound();
 #endif
 
                     LineToConsole ("OK, bye!\n");

Index: sound.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/sound.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- sound.c	21 Apr 2006 12:00:07 -0000	1.2
+++ sound.c	24 Apr 2006 14:13:25 -0000	1.3
@@ -10,6 +10,11 @@
 #include "config.h"
 
 #ifdef SOUND
+#if defined(HAVE_SDL)
+#include "SDL.h"
+#include "SDL_mixer.h"
+#endif
+
 #include "copyright.h"
 
 #include <stdio.h>
@@ -25,6 +30,11 @@
 #include "audio.h"
 #include "proto.h"
 
+#if defined(HAVE_SDL)
+/* This is probably unix specific path */
+Mix_Chunk *sounds[NUM_WAVES];
+
+#else 
 /* Each sound has a priority which controls what can override what
    Currently these are set as follows:
 
@@ -69,21 +79,73 @@
     {"nt_explosion_other", 10, 1}
 };
 
-static char sound_prefix[PATH_MAX];
 static int current_sound = NO_SOUND;
 static int sound_other = 1;     /* Play other ship's sounds? */
+#endif // Not SDL sound
 
-extern void
-Exit_Sound (void)
+static char sound_prefix[PATH_MAX];
+
+#if defined(HAVE_SDL)
+
+/*
+ * Build the patch to the sound files 
+ */
+char *DATAFILE(const char* wav) {    
+    strcpy(sound_prefix, sounddir);
+    strcat(sound_prefix, "/");
+    strcat(sound_prefix, wav);
+    return sound_prefix;
+} 
+
+/*
+ * Load the .wave files into the sounds array
+ */
+int loadSounds(void) {
+  int i;
+
+  sounds[CLOAKED_WAV] = Mix_LoadWAV(DATAFILE("nt_cloaked.wav"));
+  sounds[ENGINE_WAV] = Mix_LoadWAV(DATAFILE("nt_engine.wav"));
+  sounds[ENTER_SHIP_WAV] = Mix_LoadWAV(DATAFILE("nt_enter_ship.wav"));
+  sounds[EXPLOSION_WAV] = Mix_LoadWAV(DATAFILE("nt_explosion.wav"));
+  sounds[EXPLOSION_OTHER_WAV] = Mix_LoadWAV(DATAFILE("nt_explosion_other.wav"));
+  sounds[FIRE_PLASMA_WAV] = Mix_LoadWAV(DATAFILE("nt_fire_plasma.wav"));
+  sounds[FIRE_TORP_WAV] = Mix_LoadWAV(DATAFILE("nt_fire_torp.wav"));
+  sounds[FIRE_TORP_OTHER_WAV] = Mix_LoadWAV(DATAFILE("nt_fire_torp_other.wav"));
+  sounds[INTRO_WAV] = Mix_LoadWAV(DATAFILE("nt_intro.wav"));
+  sounds[MESSAGE_WAV] = Mix_LoadWAV(DATAFILE("nt_message.wav"));
+  sounds[PHASER_WAV] = Mix_LoadWAV(DATAFILE("nt_phaser.wav"));
+  sounds[PHASER_OTHER_WAV] = Mix_LoadWAV(DATAFILE("nt_phaser_other.wav"));
+  sounds[PLASMA_HIT_WAV] = Mix_LoadWAV(DATAFILE("nt_plasma_hit.wav"));
+  sounds[RED_ALERT_WAV] = Mix_LoadWAV(DATAFILE("nt_red_alert.wav"));
+  sounds[SELF_DESTRUCT_WAV] = Mix_LoadWAV(DATAFILE("nt_self_destruct.wav"));
+  sounds[SHIELD_DOWN_WAV] = Mix_LoadWAV(DATAFILE("nt_shield_down.wav"));
+  sounds[SHIELD_UP_WAV] = Mix_LoadWAV(DATAFILE("nt_shield_up.wav"));
+  sounds[TORP_HIT_WAV] = Mix_LoadWAV(DATAFILE("nt_torp_hit.wav"));
+  sounds[UNCLOAK_WAV] = Mix_LoadWAV(DATAFILE("nt_uncloak.wav"));
+  sounds[WARNING_WAV] = Mix_LoadWAV(DATAFILE("nt_warning.wav"));
+
+  for (i=0; i < NUM_WAVES; i++) {
+    if (!sounds[i]) {
+      LineToConsole("Mix_LoadWAV sound[%d] could not be loaded. Check soundDir in your .netrekrc: %s\n", i, Mix_GetError());
+      return(-1);
+    }
+  }
+
+  return(1);
+}
+#endif
+
+#if !defined(HAVE_SDL)
+extern void Exit_Sound (void)
 {
     if (sound_init)
         ExitSound ();
     sound_init = 0;
     sound_toggle = 0;
 }
+#endif
 
-extern void
-Init_Sound (void)
+extern void Init_Sound (void)
 {
     char buf[PATH_MAX];
 
@@ -101,7 +163,33 @@
             else
                 sounddir = "./sounds";
         }
+        
+#if defined(HAVE_SDL)
+#ifdef DEBUG
+	LineToConsole ("Init_Sound using SDL\n");
+#endif
+
+    	/* Initialize the SDL library */
+    	if (SDL_Init(SDL_INIT_AUDIO) < 0)
+      		LineToConsole("Couldn't initialize SDL: %s\n",SDL_GetError());
 
+    	atexit(SDL_Quit);
+
+    	/* Open the audio device at 22050 Hz 8 bit Microsoft PCM with stereo */
+    	if (Mix_OpenAudio(22050, AUDIO_U8, 2, 1024) < 0) 
+      		LineToConsole("Mix_OpenAudio: %s\n", Mix_GetError());
+
+    	/* If we successfully loaded the wav files, so shut-off sound_init and play
+    	 * the introduction
+    	 */
+    	if (loadSounds())
+    	{
+     	  if (Mix_PlayChannel(-1, sounds[INTRO_WAV], 0) < 0)
+		LineToConsole("Mix_PlayChannel: %s\n", Mix_GetError());
+      	}
+      	/* Default of 8 channels not enough */
+      	Mix_AllocateChannels(16);
+#else
         if (InitSound () == -1)
         {
             sound_toggle = 0;
@@ -122,12 +210,25 @@
             strcat (buf, "/nt_intro");
             StartSound (buf);
         }
+#endif
     }
 }
 
-extern void
-Play_Sound (int type)
+extern void Play_Sound (int type)
 {
+#if defined(HAVE_SDL)
+
+    if (!sound_init)
+	return;
+
+    if ((type >= NUM_WAVES) || (type < 0))
+        LineToConsole("Invalid sound type %d\n", type);
+
+    if (Mix_PlayChannel(-1, sounds[type], 0) < 0)
+        LineToConsole("Mix_PlayChannel: %s\n", Mix_GetError());
+
+
+#else
     char buf[PATH_MAX];
 
     /*  Don't play other ship's sounds if turned off */
@@ -146,15 +247,16 @@
 
     if (!(sound_toggle))
         current_sound = NO_SOUND;
+#endif
 }
 
-extern void
-Abort_Sound (int type)
+#if !defined(HAVE_SDL)
+extern void Abort_Sound (int type)
 {
     if ((current_sound != NO_SOUND) && (type == current_sound))
         StopSound ();
 }
-
+#endif
 
 /* Sound options window stuff */
 
@@ -165,20 +267,24 @@
 
 static void soundrefresh (int i);
 
-extern void
-soundwindow (void)
+extern void soundwindow (void)
 {
+#if defined(HAVE_SDL)
+    char *buf="All or nothing with SDL sound. Sorry";
+    W_WriteText(soundWin, 0, 0, textColor, buf, strlen(buf), 0);
+#else
     int i;
 
     for (i = 0; i <= SOUND_DONE; i++)
         soundrefresh (i);
+#endif
 
     /* Map window */
     W_MapWindow (soundWin);
 }
 
-static void
-soundrefresh (int i)
+#if !defined(HAVE_SDL)
+static void soundrefresh (int i)
 {
     char buf[BUFSIZ], *flag;
 
@@ -265,10 +371,11 @@
 
     W_WriteText (soundWin, 0, i, textColor, buf, strlen (buf), 0);
 }
+#endif /* HAVE_SDL */
 
-void
-soundaction (W_Event * data)
+void soundaction (W_Event * data)
 {
+#if !defined(HAVE_SDL)
     int i, j;
 
     i = data->y;
@@ -322,10 +429,10 @@
     {
         sounddone ();
     }
+#endif /* HAVE_SDL */
 }
 
-extern void
-sounddone (void)
+extern void sounddone (void)
 {
     W_UnmapWindow (soundWin);
 }

Index: newwin.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- newwin.c	21 Apr 2006 12:00:07 -0000	1.9
+++ newwin.c	24 Apr 2006 14:13:25 -0000	1.10
@@ -579,10 +579,15 @@
 #endif
 
 #ifdef SOUND
-    soundWin = W_MakeMenu ("sound", WINSIDE + 20, -BORDER + 10, 30, MESSAGE_SOUND + 4, NULL, 2);
-    W_SetWindowKeyDownHandler (soundWin, soundaction);
-    W_SetWindowButtonHandler (soundWin, soundaction);
-    W_DefineArrowCursor (soundWin);
+#if defined(HAVE_SDL)
+    soundWin = W_MakeMenu("sound", WINSIDE + 20, -BORDER + 10, 40, 1, NULL, 2);
+#else
+    soundWin = W_MakeMenu("sound", WINSIDE + 20, -BORDER + 10, 30,
+			MESSAGE_SOUND + 4, NULL, 2);
+    W_SetWindowKeyDownHandler(soundWin, soundaction);
+    W_SetWindowButtonHandler(soundWin, soundaction);
+    W_DefineArrowCursor(soundWin);
+#endif
 #endif
 
 #ifdef TOOLS

Index: input.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/input.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- input.c	21 Apr 2006 12:00:07 -0000	1.4
+++ input.c	24 Apr 2006 14:13:25 -0000	1.5
@@ -1510,7 +1510,11 @@
 			/* Here we will have to enter message_on () followed by
 			   smessage to player */
 #ifdef SOUND
-			Play_Sound (MESSAGE_SOUND);
+#if defined(HAVE_SDL)
+  			Play_Sound(MESSAGE_WAV);
+#else
+  			Play_Sound(MESSAGE_SOUND);
+#endif
 #endif
 			message_on ();
 			data->key = players[target->o_num].p_mapchars[1];
@@ -1524,7 +1528,11 @@
 			/* Here we will have to enter message_on () followed by
 			   smessage to player */
 #ifdef SOUND
-			Play_Sound (MESSAGE_SOUND);
+#if defined(HAVE_SDL)
+  			Play_Sound(MESSAGE_WAV);
+#else
+  			Play_Sound(MESSAGE_SOUND);
+#endif
 #endif
 			message_on ();
 			data->key = 'T';
@@ -1538,7 +1546,11 @@
 			/* Here we will have to enter message_on () followed by
 			   smessage to player */
 #ifdef SOUND
-			Play_Sound (MESSAGE_SOUND);
+#if defined(HAVE_SDL)
+  			Play_Sound(MESSAGE_WAV);
+#else
+  			Play_Sound(MESSAGE_SOUND);
+#endif
 #endif
 			message_on ();
 			data->key = 'A';
@@ -2713,7 +2725,11 @@
 {
 
 #ifdef SOUND
-    Play_Sound (SELF_DESTRUCT_SOUND);
+#if defined(HAVE_SDL)
+    Play_Sound(SELF_DESTRUCT_WAV);
+#else
+    Play_Sound(SELF_DESTRUCT_SOUND);
+#endif
 #endif
 
     sendQuitReq ();
@@ -3133,7 +3149,11 @@
 {
 
 #ifdef SOUND
-    Play_Sound (MESSAGE_SOUND);
+#if defined(HAVE_SDL)
+    Play_Sound(MESSAGE_WAV);
+#else
+    Play_Sound(MESSAGE_SOUND);
+#endif
 #endif
 
     message_on ();
@@ -3197,7 +3217,11 @@
 {
 
 #ifdef SOUND
-    Play_Sound (SELF_DESTRUCT_SOUND);
+#if defined(HAVE_SDL)
+    Play_Sound(SELF_DESTRUCT_WAV);
+#else
+    Play_Sound(SELF_DESTRUCT_SOUND);
+#endif
 #endif
 
     fastQuit = 1;

Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- local.c	21 Apr 2006 12:00:07 -0000	1.6
+++ local.c	24 Apr 2006 14:13:25 -0000	1.7
@@ -148,8 +148,6 @@
 
         /* redraw upper sector */
         redrawStarSector (sectorx, sectory-1);
-        /* redraw upper sector */
-        redrawStarSector (sectorx, sectory-1);
 
         if (r)          
             /* redraw upper-right sector */
@@ -481,8 +479,12 @@
             {
 
 #ifdef SOUND
-                if (myPlayer (j) && (j->p_cloakphase == 0))
-                    Play_Sound (CLOAK_SOUND);
+                if (myPlayer(j) && (j->p_cloakphase == 0))
+#if defined(HAVE_SDL)
+                    Play_Sound(CLOAKED_WAV);
+#else
+                    Play_Sound(CLOAK_SOUND);
+#endif
 #endif
 
                 j->p_cloakphase++;
@@ -492,13 +494,19 @@
         {
             if (j->p_cloakphase)
             {
+            	
 #ifdef SOUND
-                if (myPlayer (j))
+                if (myPlayer(j))
                     if (j->p_cloakphase == CLOAK_PHASES - 1)
-                        Play_Sound (UNCLOAK_SOUND);
+#if defined(HAVE_SDL)
+                        Play_Sound(UNCLOAK_WAV);
+#else
+                        Play_Sound(UNCLOAK_SOUND);
                     else
-                        Abort_Sound (CLOAK_SOUND);
+                        Abort_Sound(CLOAK_SOUND);
+#endif     	
 #endif
+            	
                 j->p_cloakphase--;
             }
         }
@@ -704,9 +712,17 @@
             if (j->p_no == me->p_no)
             {
                 if ((sound_flags & PFSHIELD) && !(j->p_flags & PFSHIELD))
-                    Play_Sound (SHIELD_DOWN_SOUND);
+#if defined(HAVE_SDL)
+                    Play_Sound(SHIELD_DOWN_WAV);
+#else
+                    Play_Sound(SHIELD_DOWN_SOUND);
+#endif
                 if (!(sound_flags & PFSHIELD) && (j->p_flags & PFSHIELD))
-                    Play_Sound (SHIELD_UP_SOUND);
+#if defined(HAVE_SDL)
+                    Play_Sound(SHIELD_UP_WAV);
+#else
+                    Play_Sound(SHIELD_UP_SOUND);
+#endif
             }
 #endif
 
@@ -853,11 +869,14 @@
             int i;
 
             i = j->p_explode;
-
+            
 #ifdef SOUND
             if (i == 1)
-                Play_Sound (j ==
-                            me ? EXPLOSION_SOUND : OTHER_EXPLOSION_SOUND);
+#if defined(HAVE_SDL)
+                Play_Sound(j == me ? EXPLOSION_WAV : EXPLOSION_OTHER_WAV);
+#else
+                Play_Sound(j == me ? EXPLOSION_SOUND : OTHER_EXPLOSION_SOUND);
+#endif
 #endif
 
             if (i < BMP_SHIPEXPL_FRAMES ||
@@ -900,13 +919,19 @@
 
         if (php->ph_status != PHFREE)
         {
+        	
 #ifdef SOUND
             if (!sound_phaser)
             {
-                Play_Sound (j == me ? PHASER_SOUND : OTHER_PHASER_SOUND);
+#if defined(HAVE_SDL)
+                Play_Sound(j == me ? PHASER_WAV : PHASER_OTHER_WAV);
+#else
+                Play_Sound(j == me ? PHASER_SOUND : OTHER_PHASER_SOUND);
+#endif
                 sound_phaser++;
             }
 #endif
+
             if ((php->ph_updateFuse -= weaponUpdate) == 0)
             {
                 /* Expire the phaser */
@@ -1342,8 +1367,13 @@
 
 #ifdef SOUND
                 if (k->t_fuse == BMP_TORPDET_FRAMES - 1)
-                    Play_Sound (TORP_HIT_SOUND);
+#if defined(HAVE_SDL)
+                    Play_Sound(TORP_HIT_WAV);
+#else
+                    Play_Sound(TORP_HIT_SOUND);
 #endif
+#endif
+
 #ifdef COLORIZEWEAPON
                 switch (j->p_team)
                 {
@@ -1516,11 +1546,16 @@
             {
                 pt->pt_fuse = BMP_TORPDET_FRAMES - 1;
             }
-
+            
 #ifdef SOUND
             if (pt->pt_fuse == BMP_TORPDET_FRAMES - 1)
-                Play_Sound (PLASMA_HIT_SOUND);
+#if defined(HAVE_SDL)
+                Play_Sound(PLASMA_HIT_WAV);
+#else
+                Play_Sound(PLASMA_HIT_SOUND);
 #endif
+#endif
+
 #ifdef COLORIZEWEAPON
             switch (players[pt->pt_owner].p_team)
             {
@@ -1820,8 +1855,8 @@
             }
             W_ChangeBorder (baseWin, gColor);
 
-#ifdef SOUND
-            Abort_Sound (WARNING_SOUND);
+#if defined(SOUND) && !defined(HAVE_SDL)
+            Abort_Sound(WARNING_SOUND);
 #endif
 
             break;
@@ -1835,8 +1870,8 @@
             }
             W_ChangeBorder (baseWin, yColor);
 
-#ifdef SOUND
-            Abort_Sound (WARNING_SOUND);
+#if defined(SOUND) && !defined(HAVE_SDL)
+            Abort_Sound(WARNING_SOUND);
 #endif
 
             break;
@@ -1849,9 +1884,13 @@
                 //W_ChangeBorderDB (localSDB, rColor);
             }
             W_ChangeBorder (baseWin, rColor);
-
+            
 #ifdef SOUND
-            Play_Sound (WARNING_SOUND);
+#if defined(HAVE_SDL)
+            Play_Sound(WARNING_WAV);
+#else
+            Play_Sound(WARNING_SOUND);
+#endif
 #endif
 
             break;
@@ -1859,12 +1898,21 @@
     }
 
 #ifdef SOUND
+#if defined(HAVE_SDL)
     if (sound_torps < me->p_ntorp)
-        Play_Sound (FIRE_TORP_SOUND);
+        Play_Sound(FIRE_TORP_WAV);
     if (sound_other_torps < num_other_torps)
-        Play_Sound (OTHER_FIRE_TORP_SOUND);
+        Play_Sound(FIRE_TORP_OTHER_WAV);
     if (sound_plasma < me->p_nplasmatorp)
-        Play_Sound (FIRE_PLASMA_SOUND);
+        Play_Sound(FIRE_PLASMA_WAV);
+#else
+    if (sound_torps < me->p_ntorp)
+        Play_Sound(FIRE_TORP_SOUND);
+    if (sound_other_torps < num_other_torps)
+        Play_Sound(OTHER_FIRE_TORP_SOUND);
+    if (sound_plasma < me->p_nplasmatorp)
+        Play_Sound(FIRE_PLASMA_SOUND);
+#endif
 
     sound_flags = me->p_flags;
     sound_torps = me->p_ntorp;

Index: makefile
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/makefile,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- makefile	21 Apr 2006 12:00:07 -0000	1.5
+++ makefile	24 Apr 2006 14:13:25 -0000	1.6
@@ -48,7 +48,7 @@
 #
 
 !IFDEF DEBUG
-ldebug = /Gn /v 
+ldebug = /Gn /v
 !ELSE
 ldebug = /Gn /w-dup
 !ENDIF
@@ -72,7 +72,7 @@
 #..\Win32\lib\libmpbcc.lib
 !ENDIF
 
-LIBS = CW32mt.LIB IMPORT32.LIB user32.lib gdi32.lib wsock32.lib kernel32.lib shell32.lib winmm.lib mpr.lib $(GMPLIB)
+LIBS = SDL.LIB SDL_mixer.LIB SDL_main.LIB CW32mt.LIB IMPORT32.LIB user32.lib gdi32.lib wsock32.lib kernel32.lib shell32.lib winmm.lib mpr.lib $(GMPLIB)
 
 # ---------------------------------------------------------------------------
 # - Start of makefile proper

Index: playback.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/playback.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- playback.c	21 Apr 2006 12:00:07 -0000	1.8
+++ playback.c	24 Apr 2006 14:13:25 -0000	1.9
@@ -282,8 +282,8 @@
     if (i >= RETURNBASE)
         return (i - RETURNBASE);        /* Terminate with retcode */
 
-#ifdef SOUND
-    Abort_Sound (ENGINE_SOUND);
+#if defined(SOUND) && !defined(HAVE_SDL)
+    Abort_Sound(ENGINE_SOUND);
 #endif
 
 //#ifdef nodef
@@ -326,8 +326,13 @@
         redrawPStats ();
 
 #ifdef SOUND
-    Play_Sound (ENTER_SHIP_SOUND);
-    Play_Sound (ENGINE_SOUND);
+#if defined(HAVE_SDL)
+    Mix_HaltChannel(-1); /* Kill all currently playing sounds when entering game */
+    Play_Sound(ENTER_SHIP_WAV);
+#else
+    Play_Sound(ENTER_SHIP_SOUND);
+    Play_Sound(ENGINE_SOUND);
+#endif
 #endif
 
     while (1)

Index: beeplite.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/beeplite.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- beeplite.c	19 Apr 2006 15:18:27 -0000	1.3
+++ beeplite.c	24 Apr 2006 14:13:25 -0000	1.4
@@ -1,6 +1,9 @@
 /* beeplite.c
  *
  * $Log$
+ * Revision 1.4  2006/04/24 14:13:25  modemhero
+ * Initial SDL patch for multilayered sounds.
+ *
  * Revision 1.3  2006/04/19 15:18:27  modemhero
  * Tidied up the save_options function, fixing some spacing errors, and puttting the
  * keymap/buttonmap on the top of the list due to its importance.  Also added the
@@ -217,17 +220,24 @@
 	        if (F_beeplite_flags & LITE_SOUNDS)
 		{
 
-#ifdef SOUND
-		    if (sound_toggle)
-		      Play_Sound(MESSAGE_SOUND);
-		    else
+#if defined(SOUND)
+#if defined(HAVE_SDL)
+                    Play_Sound(MESSAGE_WAV);
+#else
+                    if (sound_toggle)
+                        Play_Sound(MESSAGE_SOUND);
+                    else
+		        W_Beep();
+#endif
 #endif
-
-		    W_Beep();
 		}
 	        break;
 
+/* The sound files don't even exist in standard client, and
+   are not loaded into SDL library currently - can change at
+   a later time. */
 #ifdef SOUND
+#if !defined(HAVE_SDL)
 	    case '1':
 	        if (F_beeplite_flags & LITE_SOUNDS)
 		  Play_Sound(MESSAGE1_SOUND);
@@ -265,6 +275,7 @@
 		  Play_Sound(MESSAGE9_SOUND);
 	        break;
 #endif
+#endif
 
 	      /* Text between:  /|    |   will be displayed with TTS */
 	    case '|':

Index: cowmain.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/cowmain.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- cowmain.c	21 Apr 2006 12:00:06 -0000	1.7
+++ cowmain.c	24 Apr 2006 14:13:25 -0000	1.8
@@ -768,6 +768,10 @@
 
     resetdefaults ();
     savebitmaps ();
+    
+#if defined(SOUND) && defined(HAVE_SDL)
+    Init_Sound();
+#endif
 
     /* open memory...? */
     openmem ();
@@ -892,18 +896,21 @@
     init_hockey_lines ();
 #endif
 
-#ifdef SOUND
-    Init_Sound ();
+  /* Moved SDL sound initialization to right after readdefaults() so
+   * the intro can start playing ASAP */
+#if defined(SOUND) && !defined(HAVE_SDL)
+    Init_Sound();
 #endif
 
+
     isFirstEntry = 1;           /* First entry into game */
 
     i = setjmp (env);           /* Reentry point of game */
     if (i >= RETURNBASE)
         return (i - RETURNBASE);        /* Terminate with retcode */
 
-#ifdef SOUND
-    Abort_Sound (ENGINE_SOUND);
+#if defined(SOUND) && !defined(HAVE_SDL)
+    Abort_Sound(ENGINE_SOUND);
 #endif
 
     /* give the player the motd and find out which team he wants */
@@ -950,8 +957,8 @@
 
         sendByeReq ();
 
-#ifdef SOUND
-        Exit_Sound ();
+#if defined(SOUND) && !defined(HAVE_SDL)
+        Exit_Sound();
 #endif
 
         sleep (1);
@@ -1034,8 +1041,13 @@
 
 
 #ifdef SOUND
-    Play_Sound (ENTER_SHIP_SOUND);
-    Play_Sound (ENGINE_SOUND);
+#if defined(HAVE_SDL)
+    Mix_HaltChannel(-1); /* Kill all currently playing sounds when entering game */
+    Play_Sound(ENTER_SHIP_WAV);
+#else
+    Play_Sound(ENTER_SHIP_SOUND);
+    Play_Sound(ENGINE_SOUND);
+#endif /* HAVE_SDL */
 #endif
 
     /* Get input until the player quits or dies */