[Scummvm-cvs-logs] CVS: scummvm/scumm sound.cpp,1.327,1.328
Max Horn
fingolfin at users.sourceforge.net
Sun Apr 11 14:10:00 CEST 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.68,1.69
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.229.2.3,1.229.2.4 script_v5.cpp,1.226.2.1,1.226.2.2 script_v6.cpp,1.293.2.7,1.293.2.8 scumm.h,1.369.2.1,1.369.2.2 scummvm.cpp,2.577.2.7,2.577.2.8 string.cpp,1.193.2.2,1.193.2.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25045
Modified Files:
sound.cpp
Log Message:
Oops! Accidentally copied the HEAD sound.cpp into the 0.6.0 branch
Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.327
retrieving revision 1.328
diff -u -d -r1.327 -r1.328
--- sound.cpp 11 Apr 2004 12:31:46 -0000 1.327
+++ sound.cpp 11 Apr 2004 20:55:46 -0000 1.328
@@ -37,7 +37,6 @@
#include "sound/mp3.h"
#include "sound/voc.h"
#include "sound/vorbis.h"
-#include "sound/flac.h"
namespace Scumm {
@@ -50,31 +49,13 @@
};
-Sound::Sound(ScummEngine *parent)
- :
- _vm(parent),
- _soundQuePos(0),
- _soundQue2Pos(0),
- _sfxFile(0),
- _offsetTable(0),
- _numSoundEffects(0),
- _soundMode(kVOCMode),
- _talk_sound_a1(0),
- _talk_sound_a2(0),
- _talk_sound_b1(0),
- _talk_sound_b2(0),
- _talk_sound_mode(0),
- _talk_sound_frame(0),
- _mouthSyncMode(false),
- _endOfMouthSync(false),
- _curSoundPos(0),
- _currentCDSound(0),
- _soundsPaused(false),
- _sfxMode(0) {
+Sound::Sound(ScummEngine *parent) {
+ memset(this,0,sizeof(Sound)); // palmos
- memset(_soundQue, 0, sizeof(_soundQue));
- memset(_soundQue2, 0, sizeof(_soundQue2));
- memset(_mouthSyncTimes, 0, sizeof(_mouthSyncTimes));
+ _vm = parent;
+ _currentCDSound = 0;
+
+ _sfxFile = 0;
}
Sound::~Sound() {
@@ -442,7 +423,7 @@
_talk_sound_mode = 0;
}
- const int act = _vm->getTalkingActor();
+ const int act = _vm->talkingActor();
if ((_sfxMode & 2) && act != 0) {
Actor *a;
bool b, finished;
@@ -572,11 +553,11 @@
num = (b - 8) >> 1;
}
- if (_offsetTable != NULL) {
+ if (offset_table != NULL) {
MP3OffsetTable *result = NULL, key;
key.org_offset = offset;
- result = (MP3OffsetTable *)bsearch(&key, _offsetTable, _numSoundEffects,
+ result = (MP3OffsetTable *)bsearch(&key, offset_table, num_sound_effects,
sizeof(MP3OffsetTable), compareMP3OffsetTable);
if (result == NULL) {
@@ -851,28 +832,19 @@
void Sound::startSfxSound(File *file, int file_size, PlayingSoundHandle *handle, int id) {
- AudioStream *input = NULL;
+ AudioStream *input = 0;
- switch (_soundMode) {
- case kMP3Mode:
-#ifdef USE_MAD
- assert(file_size > 0);
- input = makeMP3Stream(file, file_size);
-#endif
- break;
- case kVorbisMode:
+ if (file_size > 0) {
+ if (_vorbis_mode) {
#ifdef USE_VORBIS
- assert(file_size > 0);
- input = makeVorbisStream(file, file_size);
+ input = makeVorbisStream(file, file_size);
#endif
- break;
- case kFlacMode:
-#ifdef USE_FLAC
- assert(file_size > 0);
- input = makeFlacStream(file, file_size);
+ } else {
+#ifdef USE_MAD
+ input = makeMP3Stream(file, file_size);
#endif
- break;
- default:
+ }
+ } else {
input = makeVOCStream(_sfxFile);
}
@@ -892,51 +864,32 @@
File *Sound::openSfxFile() {
char buf[256];
File *file = new File();
- _offsetTable = NULL;
-
- struct SoundFileExtensions {
- const char *ext;
- SoundMode mode;
- };
-
- const SoundFileExtensions extensions[] = {
-#ifdef USE_FLAC
- { "sof", kFlacMode },
-#endif
-#ifdef USE_MAD
- { "so3", kMP3Mode },
-#endif
-#ifdef USE_VORBIS
- { "sog", kVorbisMode },
-#endif
- { "sou", kVOCMode },
- { 0, kVOCMode }
- };
/* Try opening the file <_gameName>.sou first, eg tentacle.sou.
* That way, you can keep .sou files for multiple games in the
* same directory */
-
- int i, j;
- const char *basename[3] = { 0, 0, 0 };
- basename[0] = _vm->getGameName();
- basename[1] = "monster";
-
- for (j = 0; basename[j] && !file->isOpen(); ++j) {
- for (i = 0; extensions[i].ext; ++i) {
- sprintf(buf, "%s.%s", basename[j], extensions[i].ext);
- if (file->open(buf)) {
- _soundMode = extensions[i].mode;
- break;
- }
- }
+ offset_table = NULL;
+
+#ifdef USE_MAD
+ sprintf(buf, "%s.so3", _vm->getGameName());
+ if (!file->open(buf, _vm->getGameDataPath())) {
+ file->open("monster.so3", _vm->getGameDataPath());
}
+ if (file->isOpen())
+ _vorbis_mode = false;
+#endif
+#ifdef USE_VORBIS
if (!file->isOpen()) {
- sprintf(buf, "%s.tlk", _vm->getGameName());
- file->open(buf, _vm->getGameDataPath(), File::kFileReadMode, 0x69);
- _soundMode = kVOCMode;
- } else if (_soundMode != kVOCMode) {
+ sprintf(buf, "%s.sog", _vm->getGameName());
+ if (!file->open(buf, _vm->getGameDataPath()))
+ file->open("monster.sog", _vm->getGameDataPath());
+ if (file->isOpen())
+ _vorbis_mode = true;
+ }
+#endif
+
+ if (file->isOpen()) {
/* Now load the 'offset' index in memory to be able to find the MP3 data
The format of the .SO3 file is easy :
@@ -954,21 +907,31 @@
int size, compressed_offset;
MP3OffsetTable *cur;
compressed_offset = file->readUint32BE();
- _offsetTable = (MP3OffsetTable *) malloc(compressed_offset);
- _numSoundEffects = compressed_offset / 16;
+ offset_table = (MP3OffsetTable *) malloc(compressed_offset);
+ num_sound_effects = compressed_offset / 16;
size = compressed_offset;
- cur = _offsetTable;
+ cur = offset_table;
while (size > 0) {
- cur->org_offset = file->readUint32BE();
- cur->new_offset = file->readUint32BE() + compressed_offset + 4; /* The + 4 is to take into accound the 'size' field */
- cur->num_tags = file->readUint32BE();
- cur->compressed_size = file->readUint32BE();
+ cur[0].org_offset = file->readUint32BE();
+ cur[0].new_offset = file->readUint32BE() + compressed_offset + 4; /* The + 4 is to take into accound the 'size' field */
+ cur[0].num_tags = file->readUint32BE();
+ cur[0].compressed_size = file->readUint32BE();
size -= 4 * 4;
cur++;
}
+ return file;
}
+ sprintf(buf, "%s.sou", _vm->getGameName());
+ if (!file->open(buf, _vm->getGameDataPath())) {
+ file->open("monster.sou", _vm->getGameDataPath());
+ }
+
+ if (!file->isOpen()) {
+ sprintf(buf, "%s.tlk", _vm->getGameName());
+ file->open(buf, _vm->getGameDataPath(), File::kFileReadMode, 0x69);
+ }
return file;
}
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.68,1.69
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.229.2.3,1.229.2.4 script_v5.cpp,1.226.2.1,1.226.2.2 script_v6.cpp,1.293.2.7,1.293.2.8 scumm.h,1.369.2.1,1.369.2.2 scummvm.cpp,2.577.2.7,2.577.2.8 string.cpp,1.193.2.2,1.193.2.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list