diff -urN antigrav-0.0.2.orig/src/main.cpp antigrav-0.0.2/src/main.cpp
--- antigrav-0.0.2.orig/src/main.cpp	2006-08-04 15:38:31.000000000 -0400
+++ antigrav-0.0.2/src/main.cpp	2007-12-15 11:27:56.000000000 -0500
@@ -22,6 +22,7 @@
 MFNGLACTIVETEXTUREARBPROC mglActiveTextureARB = NULL;
 #endif
 
+bool opt_sound = true;
 bool opt_fullscreen = true;
 bool opt_fsaa = false;
 int opt_width = 1024;
@@ -135,7 +136,8 @@
 	if(alutInit(&argc, argv) != AL_TRUE)
 	{
 		fprintf(stderr, "Can't initialize OpenAL: %s\n", alutGetErrorString(alutGetError()));
-		return -1;
+		fprintf(stderr, "Turning off sound effects.\n");
+		opt_sound = false;
 	}
 
 	if(chdir(DATADIR) != 0)
@@ -167,6 +169,11 @@
 	return 0;
 }
 
+void swapWavBytes(Uint8 *buffer, Uint32 length)
+{
+       swab(buffer, buffer, length);
+}
+
 ALuint loadWavBuffer(const char *filename)
 {
 	ALuint buffer;
@@ -188,20 +195,40 @@
 	
 	if(wav_spec.channels == 1)
 	{
-		if(wav_spec.format == AUDIO_U8) format = AL_FORMAT_MONO8;
-		else if(wav_spec.format == AUDIO_S16SYS) format = AL_FORMAT_MONO16;
-		else
+		switch(wav_spec.format)
 		{
+		case AUDIO_U8:
+			format = AL_FORMAT_MONO8;
+			break;
+		case AUDIO_S16LSB:
+		case AUDIO_S16MSB:
+			format = AL_FORMAT_MONO16;
+			if (wav_spec.format != AUDIO_S16SYS)
+			{
+				swapWavBytes(wav_buffer, wav_length);
+			}
+			break;
+		default:
 			fprintf(stderr, "Can't open %s : unknown audio format\n", filename);
 			SDL_FreeWAV(wav_buffer);
 			return AL_NONE;
 		}
 	} else if(wav_spec.channels == 2)
 	{
-		if(wav_spec.format == AUDIO_U8) format = AL_FORMAT_STEREO8;
-		else if(wav_spec.format == AUDIO_S16SYS) format = AL_FORMAT_STEREO16;
-		else
+		switch(wav_spec.format)
 		{
+		case AUDIO_U8:
+			format = AL_FORMAT_STEREO8;
+			break;
+		case AUDIO_S16LSB:
+		case AUDIO_S16MSB:
+			format = AL_FORMAT_STEREO16;
+			if (wav_spec.format != AUDIO_S16SYS)
+			{
+				swapWavBytes(wav_buffer, wav_length);
+			}
+			break;
+		default:
 			fprintf(stderr, "Can't open %s : unknown audio format\n", filename);
 			SDL_FreeWAV(wav_buffer);
 			return AL_NONE;
