aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/simon/intern.h24
-rw-r--r--engines/simon/items.cpp6
-rw-r--r--engines/simon/simon.cpp77
-rw-r--r--engines/simon/sound.cpp73
-rw-r--r--engines/simon/sound.h2
5 files changed, 73 insertions, 109 deletions
diff --git a/engines/simon/intern.h b/engines/simon/intern.h
index b0c036b056..a1fb7094f7 100644
--- a/engines/simon/intern.h
+++ b/engines/simon/intern.h
@@ -146,28 +146,14 @@ struct TimeEvent {
struct GameSpecificSettings {
#ifndef PALMOS_68K
const char *gme_filename;
- const char *wav_filename;
- const char *voc_filename;
- const char *mp3_filename;
- const char *vorbis_filename;
- const char *flac_filename;
- const char *voc_effects_filename;
- const char *mp3_effects_filename;
- const char *vorbis_effects_filename;
- const char *flac_effects_filename;
+ const char *effects_filename;
+ const char *speech_filename;
const char *gamepc_filename;
#else
const char gme_filename[12];
- const char wav_filename[12];
- const char voc_filename[12];
- const char mp3_filename[12];
- const char flac_filename[12];
- const char vorbis_filename[12];
- const char voc_effects_filename[12];
- const char mp3_effects_filename[12];
- const char vorbis_effects_filename[12];
- const char flac_effects_filename[12];
- const char gamepc_filename[12];
+ const char effects_filename[12];
+ const char speech_filename[12];
+ const char gamepc_filename[12];
#endif
};
diff --git a/engines/simon/items.cpp b/engines/simon/items.cpp
index 1e8e788aff..2a612b059b 100644
--- a/engines/simon/items.cpp
+++ b/engines/simon/items.cpp
@@ -1909,12 +1909,12 @@ void SimonEngine::o3_checkCD() {
uint disc = readVariable(97);
if (!strcmp(_gameDescription->extra, "4CD")) {
- _sound->switchVoiceFile(disc);
+ _sound->switchVoiceFile(gss, disc);
} else if (!strcmp(_gameDescription->extra, "2CD")) {
if (disc == 1 || disc == 2)
- _sound->switchVoiceFile(1);
+ _sound->switchVoiceFile(gss, 1);
else if (disc == 3 || disc == 4)
- _sound->switchVoiceFile(2);
+ _sound->switchVoiceFile(gss, 2);
}
debug(0, "Switch to CD number %d", disc);
diff --git a/engines/simon/simon.cpp b/engines/simon/simon.cpp
index fc634e723d..21af9481a8 100644
--- a/engines/simon/simon.cpp
+++ b/engines/simon/simon.cpp
@@ -64,99 +64,50 @@ static const GameSpecificSettings *feeblefiles_settings;
#define PTR(a) &a
static const GameSpecificSettings simon1_settings = {
"SIMON.GME", // gme_filename
- "SIMON.WAV", // wav_filename
- "SIMON.VOC", // voc_filename
- "SIMON.MP3", // mp3_filename
- "SIMON.OGG", // vorbis_filename
- "SIMON.FLA", // flac_filename
- "EFFECTS.VOC", // voc_effects_filename
- "EFFECTS.MP3", // mp3_effects_filename
- "EFFECTS.OGG", // vorbis_effects_filename
- "EFFECTS.FLA", // flac_effects_filename
+ "EFFECTS", // effects_filename
+ "SIMON", // speech_filename
"GAMEPC", // gamepc_filename
};
static const GameSpecificSettings simon1acorn_settings = {
"DATA", // gme_filename
- "", // wav_filename
- "SIMON", // voc_filename
- "SIMON.MP3", // mp3_filename
- "SIMON.OGG", // vorbis_filename
- "SIMON.FLA", // flac_filename
- "EFFECTS", // voc_effects_filename
- "EFFECTS.MP3", // mp3_effects_filename
- "EFFECTS.OGG", // vorbis_effects_filename
- "EFFECTS.FLA", // flac_effects_filename
+ "EFFECTS", // effects_filename
+ "SIMON", // speech_filename
"GAMEBASE", // gamepc_filename
};
static const GameSpecificSettings simon1amiga_settings = {
"", // gme_filename
- "", // wav_filename
- "", // voc_filename
- "SIMON.MP3", // mp3_filename
- "SIMON.OGG", // vorbis_filename
- "SIMON.FLA", // flac_filename
- "", // voc_effects_filename
- "", // mp3_effects_filename
- "", // vorbis_effects_filename
- "", // flac_effects_filename
+ "", // effects_filename
+ "", // speech_filename
"gameamiga", // gamepc_filename
};
static const GameSpecificSettings simon1demo_settings = {
"", // gme_filename
- "", // wav_filename
- "", // voc_filename
- "", // mp3_filename
- "", // vorbis_filename
- "", // flac_filename
- "", // voc_effects_filename
- "", // mp3_effects_filename
- "", // vorbis_effects_filename
- "", // flac_effects_filename
+ "", // effects_filename
+ "", // speech_filename
"GDEMO", // gamepc_filename
};
static const GameSpecificSettings simon2win_settings = {
"SIMON2.GME", // gme_filename
- "SIMON2.WAV", // wav_filename
- "SIMON2.VOC", // voc_filename
- "SIMON2.MP3", // mp3_filename
- "SIMON2.OGG", // vorbis_filename
- "SIMON2.FLA", // flac_filename
- "", // voc_effects_filename
- "", // mp3_effects_filename
- "", // vorbis_effects_filename
- "", // flac_effects_filename
+ "", // effects_filename
+ "SIMON2", // speech_filename
"GSPTR30", // gamepc_filename
};
static const GameSpecificSettings simon2dos_settings = {
"SIMON2.GME", // gme_filename
- "", // wav_filename
- "", // voc_filename
- "", // mp3_filename
- "", // vorbis_filename
- "", // flac_filename
- "", // voc_effects_filename
- "", // mp3_effects_filename
- "", // vorbis_effects_filename
- "", // flac_effects_filename
+ "", // effects_filename
+ "", // speech_filename
"GAME32", // gamepc_filename
};
static const GameSpecificSettings feeblefiles_settings = {
"", // gme_filename
- "VOICES.WAV", // wav_filename
- "VOICES.VOC", // voc_filename
- "VOICES.MP3", // mp3_filename
- "VOICES.OGG", // vorbis_filename
- "VOICES.FLA", // flac_filename
- "", // voc_effects_filename
- "", // mp3_effects_filename
- "", // vorbis_effects_filename
- "", // flac_effects_filename
+ "", // effects_filename
+ "VOICES", // speech_filename
"GAME22", // gamepc_filename
};
#endif
diff --git a/engines/simon/sound.cpp b/engines/simon/sound.cpp
index c9520648a2..c1275b6525 100644
--- a/engines/simon/sound.cpp
+++ b/engines/simon/sound.cpp
@@ -279,11 +279,13 @@ void Sound::loadVoiceFile(const GameSpecificSettings *gss) {
if (_vm->getGameType() == GType_FF || _vm->getGameId() == GID_SIMON1CD32)
return;
+ char filename[16];
File *file = new File();
#ifdef USE_FLAC
- if (!_hasVoiceFile && gss->flac_filename && gss->flac_filename[0]) {
- file->open(gss->flac_filename);
+ if (!_hasVoiceFile) {
+ sprintf(filename, "%s.flac", gss->speech_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasVoiceFile = true;
_voice = new FlacSound(_mixer, file);
@@ -291,8 +293,9 @@ void Sound::loadVoiceFile(const GameSpecificSettings *gss) {
}
#endif
#ifdef USE_MAD
- if (!_hasVoiceFile && gss->mp3_filename && gss->mp3_filename[0]) {
- file->open(gss->mp3_filename);
+ if (!_hasVoiceFile) {
+ sprintf(filename, "%s.mp3", gss->speech_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasVoiceFile = true;
_voice = new MP3Sound(_mixer, file);
@@ -300,8 +303,9 @@ void Sound::loadVoiceFile(const GameSpecificSettings *gss) {
}
#endif
#ifdef USE_VORBIS
- if (!_hasVoiceFile && gss->vorbis_filename && gss->vorbis_filename[0]) {
- file->open(gss->vorbis_filename);
+ if (!_hasVoiceFile) {
+ sprintf(filename, "%s.ogg", gss->speech_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasVoiceFile = true;
_voice = new VorbisSound(_mixer, file);
@@ -325,15 +329,25 @@ void Sound::loadVoiceFile(const GameSpecificSettings *gss) {
_hasVoiceFile = true;
}
}
- if (!_hasVoiceFile && gss->wav_filename && gss->wav_filename[0]) {
- file->open(gss->wav_filename);
+ if (!_hasVoiceFile) {
+ sprintf(filename, "%s.wav", gss->speech_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasVoiceFile = true;
_voice = new WavSound(_mixer, file);
}
}
- if (!_hasVoiceFile && gss->voc_filename && gss->voc_filename[0]) {
- file->open(gss->voc_filename);
+ if (!_hasVoiceFile) {
+ sprintf(filename, "%s.voc", gss->speech_filename);
+ file->open(filename);
+ if (file->isOpen()) {
+ _hasVoiceFile = true;
+ _voice = new VocSound(_mixer, file);
+ }
+ }
+ if (!_hasVoiceFile) {
+ sprintf(filename, "%s", gss->speech_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasVoiceFile = true;
_voice = new VocSound(_mixer, file);
@@ -342,11 +356,13 @@ void Sound::loadVoiceFile(const GameSpecificSettings *gss) {
}
void Sound::loadSfxFile(const GameSpecificSettings *gss) {
+ char filename[16];
File *file = new File();
#ifdef USE_MAD
- if (!_hasEffectsFile && gss->mp3_effects_filename && gss->mp3_effects_filename[0]) {
- file->open(gss->mp3_effects_filename);
+ if (!_hasEffectsFile) {
+ sprintf(filename, "%s.mp3", gss->effects_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasEffectsFile = true;
_effects = new MP3Sound(_mixer, file);
@@ -354,8 +370,9 @@ void Sound::loadSfxFile(const GameSpecificSettings *gss) {
}
#endif
#ifdef USE_VORBIS
- if (!_hasEffectsFile && gss->vorbis_effects_filename && gss->vorbis_effects_filename[0]) {
- file->open(gss->vorbis_effects_filename);
+ if (!_hasEffectsFile) {
+ sprintf(filename, "%s.ogg", gss->effects_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasEffectsFile = true;
_effects = new VorbisSound(_mixer, file);
@@ -363,16 +380,26 @@ void Sound::loadSfxFile(const GameSpecificSettings *gss) {
}
#endif
#ifdef USE_FLAC
- if (!_hasEffectsFile && gss->flac_effects_filename && gss->flac_effects_filename[0]) {
- file->open(gss->flac_effects_filename);
+ if (!_hasEffectsFile) {
+ sprintf(filename, "%s.flac", gss->effects_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasEffectsFile = true;
_effects = new FlacSound(_mixer, file);
}
}
#endif
- if (!_hasEffectsFile && gss->voc_effects_filename && gss->voc_effects_filename[0]) {
- file->open(gss->voc_effects_filename);
+ if (!_hasEffectsFile) {
+ sprintf(filename, "%s.voc", gss->effects_filename);
+ file->open(filename);
+ if (file->isOpen()) {
+ _hasEffectsFile = true;
+ _effects = new VocSound(_mixer, file);
+ }
+ }
+ if (!_hasEffectsFile) {
+ sprintf(filename, "%s", gss->effects_filename);
+ file->open(filename);
if (file->isOpen()) {
_hasEffectsFile = true;
_effects = new VocSound(_mixer, file);
@@ -591,7 +618,7 @@ void Sound::stopSfx5() {
_mixer->stopHandle(_sfx5Handle);
}
-void Sound::switchVoiceFile(uint disc) {
+void Sound::switchVoiceFile(const GameSpecificSettings *gss, uint disc) {
if (_lastVoiceFile == disc)
return;
@@ -606,7 +633,7 @@ void Sound::switchVoiceFile(uint disc) {
#ifdef USE_FLAC
if (!_hasVoiceFile) {
- sprintf(filename, "voices%d.flac",disc);
+ sprintf(filename, "%s%d.flac", gss->speech_filename, disc);
file->open(filename);
if (file->isOpen()) {
_hasVoiceFile = true;
@@ -616,7 +643,7 @@ void Sound::switchVoiceFile(uint disc) {
#endif
#ifdef USE_MAD
if (!_hasVoiceFile) {
- sprintf(filename, "voices%d.mp3",disc);
+ sprintf(filename, "%s%d.mp3", gss->speech_filename, disc);
file->open(filename);
if (file->isOpen()) {
_hasVoiceFile = true;
@@ -626,7 +653,7 @@ void Sound::switchVoiceFile(uint disc) {
#endif
#ifdef USE_VORBIS
if (!_hasVoiceFile) {
- sprintf(filename, "voices%d.ogg",disc);
+ sprintf(filename, "%s%d.ogg", gss->speech_filename, disc);
file->open(filename);
if (file->isOpen()) {
_hasVoiceFile = true;
@@ -635,7 +662,7 @@ void Sound::switchVoiceFile(uint disc) {
}
#endif
if (!_hasVoiceFile) {
- sprintf(filename, "voices%d.ogg",disc);
+ sprintf(filename, "%s%d.ogg", gss->speech_filename, disc);
file->open(filename);
if (file->isOpen() == false) {
warning("switchVoiceFile: Can't load voice file %s", filename);
diff --git a/engines/simon/sound.h b/engines/simon/sound.h
index 17ebd13263..093f36c3f1 100644
--- a/engines/simon/sound.h
+++ b/engines/simon/sound.h
@@ -78,7 +78,7 @@ public:
void playSfx5Data(byte *soundData, uint sound, uint pan, uint vol);
void playSoundData(Audio::SoundHandle *handle, byte *soundData, uint sound, uint pan, uint vol, bool loop);
void playVoiceData(byte *soundData, uint sound);
- void switchVoiceFile(uint disc);
+ void switchVoiceFile(const GameSpecificSettings *gss, uint disc);
bool hasVoice() const;
bool isVoiceActive() const;