aboutsummaryrefslogtreecommitdiff
path: root/engines/tinsel
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2013-04-18 23:34:29 +0200
committerWillem Jan Palenstijn2013-05-08 20:39:44 +0200
commit01f3f3a8dd0ad2891939d03b0ce47cbf36ea9bc6 (patch)
tree544b07f3aa41abe7907bcd2040cdad11ebc324bb /engines/tinsel
parent9cf2c83e5e5a35816ab153bf8443dac691829ea8 (diff)
parenta41d72a44a660c72fdadbc3a8ef580e5e03cb890 (diff)
downloadscummvm-rg350-01f3f3a8dd0ad2891939d03b0ce47cbf36ea9bc6.tar.gz
scummvm-rg350-01f3f3a8dd0ad2891939d03b0ce47cbf36ea9bc6.tar.bz2
scummvm-rg350-01f3f3a8dd0ad2891939d03b0ce47cbf36ea9bc6.zip
Merge branch 'master'
Diffstat (limited to 'engines/tinsel')
-rw-r--r--engines/tinsel/actors.cpp13
-rw-r--r--engines/tinsel/actors.h2
-rw-r--r--engines/tinsel/adpcm.cpp2
-rw-r--r--engines/tinsel/config.cpp6
-rw-r--r--engines/tinsel/coroutine.cpp1
-rw-r--r--engines/tinsel/detection.cpp16
-rw-r--r--engines/tinsel/detection_tables.h91
-rw-r--r--engines/tinsel/pcode.h2
-rw-r--r--engines/tinsel/saveload.cpp16
-rw-r--r--engines/tinsel/savescn.cpp4
-rw-r--r--engines/tinsel/sound.cpp9
-rw-r--r--engines/tinsel/strres.h1
-rw-r--r--engines/tinsel/tinsel.cpp6
-rw-r--r--engines/tinsel/tinsel.h10
14 files changed, 107 insertions, 72 deletions
diff --git a/engines/tinsel/actors.cpp b/engines/tinsel/actors.cpp
index 4e9847f8b4..acacd89667 100644
--- a/engines/tinsel/actors.cpp
+++ b/engines/tinsel/actors.cpp
@@ -314,10 +314,19 @@ static void ActorRestoredProcess(CORO_PARAM, const void *param) {
// get the stuff copied to process when it was created
const RATP_INIT *r = (const RATP_INIT *)param;
+ bool isSavegame = r->pic->resumeState == RES_SAVEGAME;
CORO_BEGIN_CODE(_ctx);
_ctx->pic = RestoreInterpretContext(r->pic);
+
+ // The newly added check here specially sets the process to RES_NOT when loading a savegame.
+ // This is needed particularly for the Psychiatrist scene in Discworld 1 - otherwise Rincewind
+ // can't go upstairs without leaving the building and returning. If this patch causes problems
+ // in other scenes, an added check for the hCode == 1174490602 could be added.
+ if (isSavegame && TinselV1)
+ _ctx->pic->resumeState = RES_NOT;
+
CORO_INVOKE_1(Interpret, _ctx->pic);
// If it gets here, actor's code has run to completion
@@ -326,8 +335,10 @@ static void ActorRestoredProcess(CORO_PARAM, const void *param) {
CORO_END_CODE;
}
-void RestoreActorProcess(int id, INT_CONTEXT *pic) {
+void RestoreActorProcess(int id, INT_CONTEXT *pic, bool savegameFlag) {
RATP_INIT r = { pic, id };
+ if (savegameFlag)
+ pic->resumeState = RES_SAVEGAME;
g_scheduler->createProcess(PID_TCODE, ActorRestoredProcess, &r, sizeof(r));
}
diff --git a/engines/tinsel/actors.h b/engines/tinsel/actors.h
index e707db77ba..6ebe32505a 100644
--- a/engines/tinsel/actors.h
+++ b/engines/tinsel/actors.h
@@ -156,7 +156,7 @@ struct Z_POSITIONS {
int z;
};
-void RestoreActorProcess(int id, INT_CONTEXT *pic);
+void RestoreActorProcess(int id, INT_CONTEXT *pic, bool savegameFlag);
int SaveActors(PSAVED_ACTOR sActorInfo);
void RestoreActors(int numActors, PSAVED_ACTOR sActorInfo);
diff --git a/engines/tinsel/adpcm.cpp b/engines/tinsel/adpcm.cpp
index 4ea835586b..ca3150ca3d 100644
--- a/engines/tinsel/adpcm.cpp
+++ b/engines/tinsel/adpcm.cpp
@@ -61,7 +61,7 @@ void Tinsel_ADPCMStream::readBufferTinselHeader() {
int16 Tinsel_ADPCMStream::decodeTinsel(int16 code, double eVal) {
double sample;
- sample = (double) code;
+ sample = (double)code;
sample *= eVal * _status.predictor;
sample += (_status.d0 * _status.K0) + (_status.d1 * _status.K1);
diff --git a/engines/tinsel/config.cpp b/engines/tinsel/config.cpp
index fd278db972..050573028a 100644
--- a/engines/tinsel/config.cpp
+++ b/engines/tinsel/config.cpp
@@ -76,6 +76,9 @@ void Config::writeToDisk() {
case TXT_ITALIAN:
lang = Common::IT_ITA;
break;
+ case TXT_US:
+ lang = Common::EN_USA;
+ break;
default:
lang = Common::EN_ANY;
}
@@ -132,6 +135,9 @@ void Config::readFromDisk() {
case Common::IT_ITA:
_language = TXT_ITALIAN;
break;
+ case Common::EN_USA:
+ _language = TXT_US;
+ break;
default:
_language = TXT_ENGLISH;
}
diff --git a/engines/tinsel/coroutine.cpp b/engines/tinsel/coroutine.cpp
index 998d98b52a..ef0097f043 100644
--- a/engines/tinsel/coroutine.cpp
+++ b/engines/tinsel/coroutine.cpp
@@ -80,4 +80,3 @@ CoroBaseContext::~CoroBaseContext() {
}
} // End of namespace Tinsel
-
diff --git a/engines/tinsel/detection.cpp b/engines/tinsel/detection.cpp
index 9c52305a1c..1fce032633 100644
--- a/engines/tinsel/detection.cpp
+++ b/engines/tinsel/detection.cpp
@@ -322,9 +322,21 @@ int TinselMetaEngine::getMaximumSaveSlot() const { return 99; }
void TinselMetaEngine::removeSaveState(const char *target, int slot) const {
Tinsel::setNeedLoad();
- Tinsel::getList(g_system->getSavefileManager(), target);
+ // Same issue here as with loadGameState(): we need the physical savegame
+ // slot. Refer to bug #3387551.
+ int listSlot = -1;
+ const int numStates = Tinsel::getList(g_system->getSavefileManager(), target);
+ for (int i = 0; i < numStates; ++i) {
+ const char *fileName = Tinsel::ListEntry(i, Tinsel::LE_NAME);
+ const int saveSlot = atoi(fileName + strlen(fileName) - 3);
+
+ if (saveSlot == slot) {
+ listSlot = i;
+ break;
+ }
+ }
- g_system->getSavefileManager()->removeSavefile(Tinsel::ListEntry(slot, Tinsel::LE_NAME));
+ g_system->getSavefileManager()->removeSavefile(Tinsel::ListEntry(listSlot, Tinsel::LE_NAME));
Tinsel::setNeedLoad();
Tinsel::getList(g_system->getSavefileManager(), target);
}
diff --git a/engines/tinsel/detection_tables.h b/engines/tinsel/detection_tables.h
index 116322aa89..64a0af8404 100644
--- a/engines/tinsel/detection_tables.h
+++ b/engines/tinsel/detection_tables.h
@@ -22,11 +22,6 @@
namespace Tinsel {
-using Common::GUIO_NONE;
-using Common::GUIO_NOSPEECH;
-using Common::GUIO_NOSFX;
-using Common::GUIO_NOMUSIC;
-
static const TinselGameDescription gameDescriptions[] = {
// Note: The following is the (hopefully) definitive list of version details:
@@ -48,7 +43,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformPC,
ADGF_DEMO,
- GUIO_NOSPEECH | GUIO_NOSFX | GUIO_NOMUSIC
+ GUIO3(GUIO_NOSPEECH, GUIO_NOSFX, GUIO_NOMUSIC)
},
GID_DW1,
0,
@@ -67,7 +62,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformPC,
ADGF_DEMO,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -87,7 +82,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformMacintosh,
ADGF_DEMO,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -111,7 +106,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::FR_FRA,
Common::kPlatformPC,
ADGF_DROPLANGUAGE,
- GUIO_NOSPEECH
+ GUIO1(GUIO_NOSPEECH)
},
GID_DW1,
0,
@@ -134,7 +129,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::DE_DEU,
Common::kPlatformPC,
ADGF_DROPLANGUAGE,
- GUIO_NOSPEECH
+ GUIO1(GUIO_NOSPEECH)
},
GID_DW1,
0,
@@ -157,7 +152,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::IT_ITA,
Common::kPlatformPC,
ADGF_DROPLANGUAGE,
- GUIO_NOSPEECH
+ GUIO1(GUIO_NOSPEECH)
},
GID_DW1,
0,
@@ -180,7 +175,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::ES_ESP,
Common::kPlatformPC,
ADGF_DROPLANGUAGE,
- GUIO_NOSPEECH
+ GUIO1(GUIO_NOSPEECH)
},
GID_DW1,
0,
@@ -196,7 +191,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformPC,
ADGF_NO_FLAGS,
- GUIO_NOSPEECH
+ GUIO1(GUIO_NOSPEECH)
},
GID_DW1,
0,
@@ -214,8 +209,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformPC,
- ADGF_NO_FLAGS,
- GUIO_NONE
+ ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -236,8 +231,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::IT_ITA,
Common::kPlatformPC,
- ADGF_DROPLANGUAGE,
- GUIO_NONE
+ ADGF_DROPLANGUAGE | ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -261,8 +256,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::FR_FRA,
Common::kPlatformPC,
- ADGF_DROPLANGUAGE,
- GUIO_NONE
+ ADGF_DROPLANGUAGE | ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -285,8 +280,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::DE_DEU,
Common::kPlatformPC,
- ADGF_DROPLANGUAGE,
- GUIO_NONE
+ ADGF_DROPLANGUAGE | ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -308,8 +303,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::IT_ITA,
Common::kPlatformPC,
- ADGF_DROPLANGUAGE,
- GUIO_NONE
+ ADGF_DROPLANGUAGE | ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -331,8 +326,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::ES_ESP,
Common::kPlatformPC,
- ADGF_DROPLANGUAGE,
- GUIO_NONE
+ ADGF_DROPLANGUAGE | ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -351,8 +346,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformPC,
- ADGF_NO_FLAGS,
- GUIO_NONE
+ ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -371,8 +366,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::HE_ISR,
Common::kPlatformPC,
- ADGF_NO_FLAGS,
- GUIO_NONE
+ ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -390,8 +385,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformPSX,
- ADGF_NO_FLAGS,
- GUIO_NONE
+ ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -414,7 +409,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformPSX,
ADGF_DEMO,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -434,8 +429,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformPC,
- ADGF_NO_FLAGS,
- GUIO_NONE
+ ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -456,8 +451,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformMacintosh,
- ADGF_NO_FLAGS,
- GUIO_NONE
+ ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -475,8 +470,8 @@ static const TinselGameDescription gameDescriptions[] = {
AD_ENTRY1s("dw.scn", "6182c7986eaec893c62fb6ea13a9f225", 774556),
Common::DE_DEU,
Common::kPlatformPC,
- ADGF_NO_FLAGS,
- GUIO_NONE
+ ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -496,8 +491,8 @@ static const TinselGameDescription gameDescriptions[] = {
},
Common::RU_RUS,
Common::kPlatformPC,
- ADGF_NO_FLAGS,
- GUIO_NONE
+ ADGF_CD,
+ GUIO1(GUIO_NONE)
},
GID_DW1,
0,
@@ -517,7 +512,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformPC,
ADGF_DEMO,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW2,
0,
@@ -537,7 +532,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::EN_GRB,
Common::kPlatformPC,
ADGF_NO_FLAGS,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW2,
0,
@@ -557,7 +552,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::EN_USA,
Common::kPlatformPC,
ADGF_NO_FLAGS,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW2,
0,
@@ -577,7 +572,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::FR_FRA,
Common::kPlatformPC,
ADGF_NO_FLAGS,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW2,
0,
@@ -597,7 +592,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::DE_DEU,
Common::kPlatformPC,
ADGF_NO_FLAGS,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW2,
0,
@@ -618,7 +613,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::IT_ITA,
Common::kPlatformPC,
ADGF_NO_FLAGS,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW2,
0,
@@ -638,7 +633,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::ES_ESP,
Common::kPlatformPC,
ADGF_NO_FLAGS,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW2,
0,
@@ -659,7 +654,7 @@ static const TinselGameDescription gameDescriptions[] = {
Common::RU_RUS,
Common::kPlatformPC,
ADGF_NO_FLAGS,
- GUIO_NONE
+ GUIO1(GUIO_NONE)
},
GID_DW2,
0,
diff --git a/engines/tinsel/pcode.h b/engines/tinsel/pcode.h
index 971a42d7bd..5d16dae432 100644
--- a/engines/tinsel/pcode.h
+++ b/engines/tinsel/pcode.h
@@ -37,7 +37,7 @@ namespace Tinsel {
struct INV_OBJECT;
enum RESUME_STATE {
- RES_NOT, RES_1, RES_2
+ RES_NOT, RES_1, RES_2, RES_SAVEGAME
};
enum {
diff --git a/engines/tinsel/saveload.cpp b/engines/tinsel/saveload.cpp
index 7a973ba4be..a0801d8247 100644
--- a/engines/tinsel/saveload.cpp
+++ b/engines/tinsel/saveload.cpp
@@ -84,6 +84,8 @@ extern void syncPolyInfo(Common::Serializer &s);
extern int sceneCtr;
+extern bool ASceneIsSaved;
+
//----------------- LOCAL DEFINES --------------------
struct SaveGameHeader {
@@ -154,8 +156,15 @@ static bool syncSaveGameHeader(Common::Serializer &s, SaveGameHeader &hdr) {
syncTime(s, hdr.dateTime);
int tmp = hdr.size - s.bytesSynced();
+
+ // NOTE: We can't use SAVEGAME_ID here when attempting to remove a saved game from the launcher,
+ // as there is no TinselEngine initialized then. This means that we can't check if this is a DW1
+ // or DW2 savegame in this case, but it doesn't really matter, as the saved game is about to be
+ // deleted anyway. Refer to bug #3387551.
+ bool correctID = _vm ? (hdr.id == SAVEGAME_ID) : (hdr.id == DW1_SAVEGAME_ID || hdr.id == DW2_SAVEGAME_ID);
+
// Perform sanity check
- if (tmp < 0 || hdr.id != SAVEGAME_ID || hdr.ver > CURRENT_VER || hdr.size > 1024)
+ if (tmp < 0 || !correctID || hdr.ver > CURRENT_VER || hdr.size > 1024)
return false;
// Skip over any extra bytes
s.skip(tmp);
@@ -431,6 +440,11 @@ static void DoSync(Common::Serializer &s) {
SAVED_DATA *sdPtr = SaveSceneSsData;
for (int i = 0; i < *SaveSceneSsCount; ++i, ++sdPtr)
syncSavedData(s, *sdPtr);
+
+ // Flag that there is a saved scene to return to. Note that in this context 'saved scene'
+ // is a stored scene to return to from another scene, such as from the Summoning Book close-up
+ // in Discworld 1 to whatever scene Rincewind was in prior to that
+ ASceneIsSaved = true;
}
if (!TinselV2)
diff --git a/engines/tinsel/savescn.cpp b/engines/tinsel/savescn.cpp
index 89d68a611e..39a8033d45 100644
--- a/engines/tinsel/savescn.cpp
+++ b/engines/tinsel/savescn.cpp
@@ -83,7 +83,7 @@ extern SRSTATE SRstate;
// FIXME: Avoid non-const global vars
-static bool ASceneIsSaved = false;
+bool ASceneIsSaved = false;
static int savedSceneCount = 0;
@@ -281,7 +281,7 @@ void ResumeInterprets() {
if (TinselV2)
RestoreProcess(&rsd->SavedICInfo[i]);
else
- RestoreActorProcess(rsd->SavedICInfo[i].idActor, &rsd->SavedICInfo[i]);
+ RestoreActorProcess(rsd->SavedICInfo[i].idActor, &rsd->SavedICInfo[i], rsd == &sgData);
break;
case GS_POLYGON:
diff --git a/engines/tinsel/sound.cpp b/engines/tinsel/sound.cpp
index bf48dd1511..130928d885 100644
--- a/engines/tinsel/sound.cpp
+++ b/engines/tinsel/sound.cpp
@@ -41,8 +41,9 @@
#include "audio/decoders/flac.h"
#include "audio/decoders/mp3.h"
#include "audio/decoders/raw.h"
-#include "audio/decoders/vag.h"
#include "audio/decoders/vorbis.h"
+#include "audio/decoders/xa.h"
+
#include "gui/message.h"
@@ -106,8 +107,8 @@ bool SoundManager::playSample(int id, Audio::Mixer::SoundType type, Audio::Sound
error(FILE_IS_CORRUPT, _vm->getSampleFile(sampleLanguage));
if (TinselV1PSX) {
- // Read the stream and create a VAG Audio stream
- Audio::AudioStream *vagStream = Audio::makeVagStream(_sampleStream.readStream(sampleLen), 44100);
+ // Read the stream and create a XA ADPCM audio stream
+ Audio::AudioStream *xaStream = Audio::makeXAStream(_sampleStream.readStream(sampleLen), 44100);
// FIXME: Should set this in a different place ;)
_vm->_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, _vm->_config->_soundVolume);
@@ -115,7 +116,7 @@ bool SoundManager::playSample(int id, Audio::Mixer::SoundType type, Audio::Sound
_vm->_mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, _vm->_config->_voiceVolume);
// Play the audio stream
- _vm->_mixer->playStream(type, &curChan.handle, vagStream);
+ _vm->_mixer->playStream(type, &curChan.handle, xaStream);
} else {
// allocate a buffer
byte *sampleBuf = (byte *)malloc(sampleLen);
diff --git a/engines/tinsel/strres.h b/engines/tinsel/strres.h
index a63824a863..f6e86951b6 100644
--- a/engines/tinsel/strres.h
+++ b/engines/tinsel/strres.h
@@ -96,4 +96,3 @@ SCNHANDLE LanguageFlag(LANGUAGE thisOne);
} // End of namespace Tinsel
#endif
-
diff --git a/engines/tinsel/tinsel.cpp b/engines/tinsel/tinsel.cpp
index 80f02ff8d1..635845ab26 100644
--- a/engines/tinsel/tinsel.cpp
+++ b/engines/tinsel/tinsel.cpp
@@ -778,7 +778,7 @@ static const GameSettings tinselSettings[] = {
// For the languages, refer to the LANGUAGE enum in dw.h
-const char *TinselEngine::_sampleIndices[][3] = {
+const char *const TinselEngine::_sampleIndices[][3] = {
{ "english.idx", "english1.idx", "english2.idx" }, // English
{ "french.idx", "french1.idx", "french2.idx" }, // French
{ "german.idx", "german1.idx", "german2.idx" }, // German
@@ -789,7 +789,7 @@ const char *TinselEngine::_sampleIndices[][3] = {
{ "english.idx", "english1.idx", "english2.idx" }, // Japanese (FIXME: not sure if this is correct)
{ "us.idx", "us1.idx", "us2.idx" } // US English
};
-const char *TinselEngine::_sampleFiles[][3] = {
+const char *const TinselEngine::_sampleFiles[][3] = {
{ "english.smp", "english1.smp", "english2.smp" }, // English
{ "french.smp", "french1.smp", "french2.smp" }, // French
{ "german.smp", "german1.smp", "german2.smp" }, // German
@@ -800,7 +800,7 @@ const char *TinselEngine::_sampleFiles[][3] = {
{ "english.smp", "english1.smp", "english2.smp" }, // Japanese (FIXME: not sure if this is correct)
{ "us.smp", "us1.smp", "us2.smp" }, // US English
};
-const char *TinselEngine::_textFiles[][3] = {
+const char *const TinselEngine::_textFiles[][3] = {
{ "english.txt", "english1.txt", "english2.txt" }, // English
{ "french.txt", "french1.txt", "french2.txt" }, // French
{ "german.txt", "german1.txt", "german2.txt" }, // German
diff --git a/engines/tinsel/tinsel.h b/engines/tinsel/tinsel.h
index 30b060766e..59344c44f4 100644
--- a/engines/tinsel/tinsel.h
+++ b/engines/tinsel/tinsel.h
@@ -31,9 +31,6 @@
#include "common/random.h"
#include "common/util.h"
-#include "audio/mididrv.h"
-#include "audio/mixer.h"
-
#include "engines/engine.h"
#include "tinsel/debugger.h"
#include "tinsel/graphics.h"
@@ -53,6 +50,7 @@ namespace Tinsel {
class BMVPlayer;
class Config;
+class MidiDriver;
class MidiMusicPlayer;
class PCMMusicPlayer;
class Scheduler;
@@ -158,9 +156,9 @@ class TinselEngine : public Engine {
Console *_console;
Scheduler *_scheduler;
- static const char *_sampleIndices[][3];
- static const char *_sampleFiles[][3];
- static const char *_textFiles[][3];
+ static const char *const _sampleIndices[][3];
+ static const char *const _sampleFiles[][3];
+ static const char *const _textFiles[][3];
protected: