aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra
diff options
context:
space:
mode:
authorJohannes Schickel2007-01-25 12:52:27 +0000
committerJohannes Schickel2007-01-25 12:52:27 +0000
commit30b7ac3db529c80d71d89ee41a09bce3d9076309 (patch)
tree6a54fd0067b914cd96ed30c1b03d09608d2260be /engines/kyra
parent48c2b96c2664afb88b6728c22c80de0b5ffe9dbd (diff)
downloadscummvm-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
Diffstat (limited to 'engines/kyra')
-rw-r--r--engines/kyra/plugin.cpp3
-rw-r--r--engines/kyra/script.cpp5
-rw-r--r--engines/kyra/seqplayer.cpp2
-rw-r--r--engines/kyra/sequences_v1.cpp4
-rw-r--r--engines/kyra/staticres.cpp10
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);