diff options
author | Johannes Schickel | 2007-01-25 12:52:27 +0000 |
---|---|---|
committer | Johannes Schickel | 2007-01-25 12:52:27 +0000 |
commit | 30b7ac3db529c80d71d89ee41a09bce3d9076309 (patch) | |
tree | 6a54fd0067b914cd96ed30c1b03d09608d2260be | |
parent | 48c2b96c2664afb88b6728c22c80de0b5ffe9dbd (diff) | |
download | scummvm-rg350-30b7ac3db529c80d71d89ee41a09bce3d9076309.tar.gz scummvm-rg350-30b7ac3db529c80d71d89ee41a09bce3d9076309.tar.bz2 scummvm-rg350-30b7ac3db529c80d71d89ee41a09bce3d9076309.zip |
Adds basic support for the FM Towns version with some restrictions:
- just english playable
- no audio
svn-id: r25188
-rw-r--r-- | engines/kyra/plugin.cpp | 3 | ||||
-rw-r--r-- | engines/kyra/script.cpp | 5 | ||||
-rw-r--r-- | engines/kyra/seqplayer.cpp | 2 | ||||
-rw-r--r-- | engines/kyra/sequences_v1.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/staticres.cpp | 10 |
5 files changed, 15 insertions, 9 deletions
diff --git a/engines/kyra/plugin.cpp b/engines/kyra/plugin.cpp index 7b4a51c939..2894d19647 100644 --- a/engines/kyra/plugin.cpp +++ b/engines/kyra/plugin.cpp @@ -42,6 +42,7 @@ namespace { #define FLAGS(x, y, z, w, id) { UNK_LANG, kPlatformUnknown, x, y, z, w, id } #define KYRA1_FLOPPY_FLAGS FLAGS(false, false, false, false, GI_KYRA1) +#define KYRA1_TOWNS_FLAGS FLAGS(false, true, true, false, GI_KYRA1) #define KYRA1_CD_FLAGS FLAGS(false, true, false, true, GI_KYRA1) #define KYRA1_DEMO_FLAGS FLAGS(true, false, false, false, GI_KYRA1) @@ -59,6 +60,8 @@ static const KYRAGameDescription adGameDescs[] = { { { "kyra1", 0, AD_ENTRY1("GEMCUT.EMC", "747861d2a9c643c59fdab570df5b9093"), ES_ESP, kPlatformPC }, KYRA1_FLOPPY_FLAGS }, // floppy 1.8 from clemmy { { "kyra1", 0, AD_ENTRY1("GEMCUT.EMC", "ef08c8c237ee1473fd52578303fc36df"), IT_ITA, kPlatformPC }, KYRA1_FLOPPY_FLAGS }, // from gourry + { { "kyra1", 0, AD_ENTRY1("TWMUSIC.PAK", "e53bca3a3e3fb49107d59463ec387a59"), EN_ANY, kPlatformFMTowns }, KYRA1_TOWNS_FLAGS }, + { { "kyra1", "CD", AD_ENTRY1("GEMCUT.PAK", "fac399fe62f98671e56a005c5e94e39f"), EN_ANY, kPlatformPC }, KYRA1_CD_FLAGS }, { { "kyra1", "CD", AD_ENTRY1("GEMCUT.PAK", "230f54e6afc007ab4117159181a1c722"), DE_DEU, kPlatformPC }, KYRA1_CD_FLAGS }, { { "kyra1", "CD", AD_ENTRY1("GEMCUT.PAK", "b037c41768b652a040360ffa3556fd2a"), FR_FRA, kPlatformPC }, KYRA1_CD_FLAGS }, diff --git a/engines/kyra/script.cpp b/engines/kyra/script.cpp index 5266369a08..a674fe4b2d 100644 --- a/engines/kyra/script.cpp +++ b/engines/kyra/script.cpp @@ -184,7 +184,10 @@ bool ScriptHelper::startScript(ScriptState *script, int function) { if (functionOffset == (uint16)-1) { return false; } - script->ip = &script->dataPtr->data[functionOffset*2]; + if (_vm->gameFlags().platform == Common::kPlatformFMTowns) + script->ip = &script->dataPtr->data[functionOffset*2+2]; + else + script->ip = &script->dataPtr->data[functionOffset*2]; return true; } diff --git a/engines/kyra/seqplayer.cpp b/engines/kyra/seqplayer.cpp index e2ed0b1c65..f21def3922 100644 --- a/engines/kyra/seqplayer.cpp +++ b/engines/kyra/seqplayer.cpp @@ -74,7 +74,7 @@ uint8 *SeqPlayer::setPanPages(int pageNum, int shape) { uint16 numShapes = READ_LE_UINT16(data); if (shape < numShapes) { uint32 offs = 0; - if (_vm->gameFlags().isTalkie) { + if (_vm->gameFlags().useAltShapeHeader) { offs = READ_LE_UINT32(data + 2 + shape * 4); } else { offs = READ_LE_UINT16(data + 2 + shape * 2); diff --git a/engines/kyra/sequences_v1.cpp b/engines/kyra/sequences_v1.cpp index 6e76b95347..4cf1413e09 100644 --- a/engines/kyra/sequences_v1.cpp +++ b/engines/kyra/sequences_v1.cpp @@ -196,9 +196,9 @@ void KyraEngine::seq_introStory() { _screen->clearPage(0); if (_flags.isTalkie) { return; - } else if (_flags.lang == Common::EN_ANY && _flags.platform != Common::kPlatformMacintosh) { + } else if (_flags.lang == Common::EN_ANY && _flags.platform == Common::kPlatformPC) { _screen->loadBitmap("TEXT.CPS", 3, 3, 0); - } else if (_flags.lang == Common::EN_ANY && _flags.platform == Common::kPlatformMacintosh) { + } else if (_flags.lang == Common::EN_ANY) { _screen->loadBitmap("TEXT_ENG.CPS", 3, 3, 0); } else if (_flags.lang == Common::DE_DEU) { _screen->loadBitmap("TEXT_GER.CPS", 3, 3, 0); diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp index 0de0001841..3bb163580e 100644 --- a/engines/kyra/staticres.cpp +++ b/engines/kyra/staticres.cpp @@ -62,7 +62,7 @@ enum { GF_AMIGA = 1 << 17 // this is no special version flag yet! }; -#define GAME_FLAGS (GF_FLOPPY | GF_TALKIE | GF_DEMO | GF_AUDIOCD) +#define GAME_FLAGS (GF_FLOPPY | GF_TALKIE | GF_DEMO/* | GF_AUDIOCD*/) #define LANGUAGE_FLAGS (GF_ENGLISH | GF_FRENCH | GF_GERMAN | GF_SPANISH | GF_ITALIAN | GF_LNGUNK) uint32 createFeatures(const GameFlags &flags) { @@ -70,8 +70,8 @@ uint32 createFeatures(const GameFlags &flags) { return GF_TALKIE; if (flags.isDemo) return GF_DEMO; - if (flags.hasAudioCD) - return GF_AUDIOCD; + //if (flags.hasAudioCD) + // return GF_AUDIOCD; return GF_FLOPPY; } @@ -817,9 +817,9 @@ void KyraEngine::loadButtonShapes() { void KyraEngine::loadMainScreen(int page) { _screen->clearPage(page); - if (_flags.lang == Common::EN_ANY && !_flags.isTalkie && _flags.platform != Common::kPlatformMacintosh) + if (_flags.lang == Common::EN_ANY && !_flags.isTalkie && _flags.platform == Common::kPlatformPC) _screen->loadBitmap("MAIN15.CPS", page, page, 0); - else if (_flags.lang == Common::EN_ANY && (_flags.isTalkie || _flags.platform == Common::kPlatformMacintosh)) + else if (_flags.lang == Common::EN_ANY) _screen->loadBitmap("MAIN_ENG.CPS", page, page, 0); else if (_flags.lang == Common::FR_FRA) _screen->loadBitmap("MAIN_FRE.CPS", page, page, 0); |