[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