[Scummvm-cvs-logs] SF.net SVN: scummvm:[35649] scummvm/trunk/engines/saga

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Thu Jan 1 17:02:43 CET 2009


Revision: 35649
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35649&view=rev
Author:   thebluegr
Date:     2009-01-01 16:02:43 +0000 (Thu, 01 Jan 2009)

Log Message:
-----------
Simplified sound resource loading

Modified Paths:
--------------
    scummvm/trunk/engines/saga/detection_tables.h
    scummvm/trunk/engines/saga/saga.h
    scummvm/trunk/engines/saga/sndres.cpp

Modified: scummvm/trunk/engines/saga/detection_tables.h
===================================================================
--- scummvm/trunk/engines/saga/detection_tables.h	2009-01-01 15:06:43 UTC (rev 35648)
+++ scummvm/trunk/engines/saga/detection_tables.h	2009-01-01 16:02:43 UTC (rev 35649)
@@ -118,7 +118,6 @@
 //                                                         sampleBits,  isSigned
 static const GameSoundInfo ITE_GameSound         = { kSoundPCM,    16,  true  };
 static const GameSoundInfo ITEWINDEMO1_GameSound = { kSoundPCM,     8,  false };
-static const GameSoundInfo ITEMACCD_G_GameSound  = { kSoundMacPCM,  8,  false };
 static const GameSoundInfo ITEDEMO_GameVoice     = { kSoundVOX,    16,  true  };
 
 // Patch files. Files not found will be ignored
@@ -350,8 +349,8 @@
 		&ITE_Resources,
 		ARRAYSIZE(ITEWINDEMO_GameFonts),
 		ITEWINDEMO_GameFonts,
-		&ITEMACCD_G_GameSound,
-		&ITEMACCD_G_GameSound,
+		&ITE_GameSound,
+		&ITE_GameSound,
 		NULL,
 	},
 

Modified: scummvm/trunk/engines/saga/saga.h
===================================================================
--- scummvm/trunk/engines/saga/saga.h	2009-01-01 15:06:43 UTC (rev 35648)
+++ scummvm/trunk/engines/saga/saga.h	2009-01-01 16:02:43 UTC (rev 35649)
@@ -196,12 +196,11 @@
 	kSoundVOX = 1,
 	kSoundVOC = 2,
 	kSoundWAV = 3,
-	kSoundMacPCM = 4,
-	kSoundMP3 = 5,
-	kSoundOGG = 6,
-	kSoundFLAC = 7,
-	kSoundAIFF = 8,
-	kSoundShorten = 9
+	kSoundMP3 = 4,
+	kSoundOGG = 5,
+	kSoundFLAC = 6,
+	kSoundAIFF = 7,
+	kSoundShorten = 8
 };
 
 enum TextStringIds {

Modified: scummvm/trunk/engines/saga/sndres.cpp
===================================================================
--- scummvm/trunk/engines/saga/sndres.cpp	2009-01-01 15:06:43 UTC (rev 35648)
+++ scummvm/trunk/engines/saga/sndres.cpp	2009-01-01 16:02:43 UTC (rev 35649)
@@ -178,10 +178,10 @@
 	size_t soundResourceLength;
 	bool result = false;
 	GameSoundTypes resourceType;
-	byte *data;
+	byte *data = 0;
 	int rate;
 	int size;
-	byte flags;
+	byte flags = 0;
 	size_t voxSize;
 	const GameSoundInfo *soundInfo = 0;
 	Common::File* file;
@@ -270,35 +270,30 @@
 	buffer.soundType = resourceType;
 	buffer.originalSize = 0;
 	buffer.stereo = false;
+	buffer.frequency = 22050;		// default for PCM and VOX
+	buffer.buffer = NULL;
 
+	// Older Mac versions of ITE were Macbinary packed
+	int soundOffset = (context->fileType & GAME_MACBINARY) ? 36 : 0;
+
 	switch (resourceType) {
 	case kSoundPCM:
-	case kSoundMacPCM:
-		{
-		int soundOffset = (resourceType == kSoundMacPCM) ? 36 : 0;
-		buffer.frequency = 22050;
 		buffer.isSigned = soundInfo->isSigned;
 		buffer.sampleBits = soundInfo->sampleBits;
 		buffer.size = soundResourceLength - soundOffset;
-		if (onlyHeader) {
-			buffer.buffer = NULL;
-		} else {
+		if (!onlyHeader) {
 			buffer.buffer = (byte *) malloc(buffer.size);
 			if (soundOffset > 0)
 				readS.seek(soundOffset, SEEK_CUR);
 			readS.read(buffer.buffer, buffer.size);
 		}
 		result = true;
-		}
 		break;
 	case kSoundVOX:
-		buffer.frequency = 22050;
 		buffer.isSigned = soundInfo->isSigned;
 		buffer.sampleBits = soundInfo->sampleBits;
 		buffer.size = soundResourceLength * 4;
-		if (onlyHeader) {
-			buffer.buffer = NULL;
-		} else {
+		if (!onlyHeader) {
 			voxStream = Audio::makeADPCMStream(&readS, false, soundResourceLength, Audio::kADPCMOki);
 			buffer.buffer = (byte *)malloc(buffer.size);
 			voxSize = voxStream->readBuffer((int16*)buffer.buffer, soundResourceLength * 2);
@@ -309,70 +304,38 @@
 		}
 		result = true;
 		break;
+	case kSoundWAV:
+	case kSoundAIFF:
+	case kSoundShorten:
 	case kSoundVOC:
-		data = Audio::loadVOCFromStream(readS, size, rate);
-		if (data) {
-			buffer.frequency = rate;
-			buffer.sampleBits = 8;
-			buffer.isSigned = false;
-			buffer.size = size;
-			if (onlyHeader) {
-				buffer.buffer = NULL;
+		if (resourceType == kSoundWAV) {
+			result = Audio::loadWAVFromStream(readS, size, rate, flags);
+		} else if (resourceType == kSoundAIFF) {
+			result = Audio::loadAIFFFromStream(readS, size, rate, flags);
+		} else if (resourceType == kSoundShorten) {
+			result = Audio::loadShortenFromStream(readS, size, rate, flags);
+		} else if (resourceType == kSoundVOC) {
+			data = Audio::loadVOCFromStream(readS, size, rate);
+			result = (data != 0);
+			if (onlyHeader)
 				free(data);
-			} else {
-				buffer.buffer = data;
-			}
-			result = true;
 		}
-		break;
-	case kSoundWAV:
-		if (Audio::loadWAVFromStream(readS, size, rate, flags)) {
+
+		if (result) {
 			buffer.frequency = rate;
 			buffer.sampleBits = (flags & Audio::Mixer::FLAG_16BITS) ? 16 : 8;
 			buffer.stereo = flags & Audio::Mixer::FLAG_STEREO;
-			buffer.isSigned = !(flags & Audio::Mixer::FLAG_UNSIGNED);
+			buffer.isSigned = (resourceType == kSoundVOC) ? false : !(flags & Audio::Mixer::FLAG_UNSIGNED);
 			buffer.size = size;
-			if (onlyHeader) {
-				buffer.buffer = NULL;
-			} else {
+
+			if (!onlyHeader && resourceType != kSoundVOC) {
 				buffer.buffer = (byte *)malloc(size);
 				readS.read(buffer.buffer, size);
+			} else if (!onlyHeader && resourceType == kSoundVOC) {
+				buffer.buffer = data;
 			}
-			result = true;
 		}
 		break;
-	case kSoundAIFF:
-		if (Audio::loadAIFFFromStream(readS, size, rate, flags)) {
-			buffer.frequency = rate;
-			buffer.sampleBits = (flags & Audio::Mixer::FLAG_16BITS) ? 16 : 8;
-			buffer.stereo = flags & Audio::Mixer::FLAG_STEREO;
-			buffer.isSigned = true;
-			buffer.size = size;
-			if (onlyHeader) {
-				buffer.buffer = NULL;
-			} else {
-				buffer.buffer = (byte *)malloc(size);
-				readS.read(buffer.buffer, size);
-			}
-			result = true;
-		}
-		break;
-	case kSoundShorten:
-		if (Audio::loadShortenFromStream(readS, size, rate, flags)) {
-			buffer.frequency = rate;
-			buffer.sampleBits = (flags & Audio::Mixer::FLAG_16BITS) ? 16 : 8;
-			buffer.stereo = flags & Audio::Mixer::FLAG_STEREO;
-			buffer.isSigned = !(flags & Audio::Mixer::FLAG_UNSIGNED);
-			buffer.size = size;
-			if (onlyHeader) {
-				buffer.buffer = NULL;
-			} else {
-				buffer.buffer = (byte *)malloc(size);
-				readS.read(buffer.buffer, size);
-			}
-			result = true;
-		}
-		break;
 	case kSoundMP3:
 	case kSoundOGG:
 	case kSoundFLAC:
@@ -391,8 +354,6 @@
 		buffer.soundFile = context->getFile(resourceData);
 		buffer.fileOffset = resourceData->offset + 9; // skip compressed sfx header: byte + uint16 + uint32 + byte + byte
 
-		buffer.buffer = NULL;
-
 		result = true;
 		break;
 	default:


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list