aboutsummaryrefslogtreecommitdiff
path: root/engines/tony/tony.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tony/tony.cpp')
-rw-r--r--engines/tony/tony.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/engines/tony/tony.cpp b/engines/tony/tony.cpp
index 67ffd36d57..d8fa45cb5d 100644
--- a/engines/tony/tony.cpp
+++ b/engines/tony/tony.cpp
@@ -82,6 +82,7 @@ TonyEngine::TonyEngine(OSystem *syst, const TonyGameDescription *gameDesc) : Eng
_bQuitNow = false;
_bTimeFreezed = false;
_nTimeFreezed = 0;
+ _vdbCodec = FPCODEC_UNKNOWN;
}
TonyEngine::~TonyEngine() {
@@ -573,18 +574,26 @@ void TonyEngine::loadState(CORO_PARAM, int n) {
}
bool TonyEngine::openVoiceDatabase() {
- char id[4];
- uint32 numfiles;
-
// Open the voices database
if (!_vdbFP.open("voices.vdb"))
- return false;
+ if (!_vdbFP.open("voices.mdb"))
+ if (!_vdbFP.open("voices.odb"))
+ if (!_vdbFP.open("voices.fdb"))
+ return false;
_vdbFP.seek(-8, SEEK_END);
- numfiles = _vdbFP.readUint32LE();
- _vdbFP.read(id, 4);
-
- if (id[0] != 'V' || id[1] != 'D' || id[2] != 'B' || id[3] != '1') {
+ uint32 numfiles = _vdbFP.readUint32LE();
+ int32 id = _vdbFP.readUint32BE();
+
+ if (id == MKTAG('V', 'D', 'B', '1'))
+ _vdbCodec = FPCODEC_ADPCM;
+ else if (id == MKTAG('M', 'D', 'B', '1'))
+ _vdbCodec = FPCODEC_MP3;
+ else if (id == MKTAG('O', 'D', 'B', '1'))
+ _vdbCodec = FPCODEC_OGG;
+ else if (id == MKTAG('F', 'D', 'B', '1'))
+ _vdbCodec = FPCODEC_FLAC;
+ else {
_vdbFP.close();
return false;
}