From 4362692684bf5d937b3fbffb6081acd2ee52e914 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Sat, 16 Jun 2007 02:43:31 +0000 Subject: Add GF_LANG_MULT game flag, for detecting differences between the two Amiga versions. svn-id: r27441 --- engines/parallaction/archive.cpp | 9 +++++++-- engines/parallaction/detection.cpp | 4 ++-- engines/parallaction/disk.cpp | 16 ++++++++++++---- engines/parallaction/menu.cpp | 4 ++-- engines/parallaction/parallaction.h | 3 ++- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/engines/parallaction/archive.cpp b/engines/parallaction/archive.cpp index 0486c6d684..e71b216eac 100644 --- a/engines/parallaction/archive.cpp +++ b/engines/parallaction/archive.cpp @@ -68,8 +68,13 @@ void Archive::open(const char *file) { error("archive '%s' not found", path); bool isSmallArchive = false; - if (_vm->getFeatures() & GF_DEMO) - isSmallArchive = _archive.size() == SIZEOF_SMALL_ARCHIVE; + if (_vm->getPlatform() == Common::kPlatformAmiga) { + if (_vm->getFeatures() & GF_DEMO) { + isSmallArchive = _archive.size() == SIZEOF_SMALL_ARCHIVE; + } else if (_vm->getFeatures() & GF_LANG_MULT) { + isSmallArchive = (_archive.readUint32BE() != MKID_BE('NDOS')); + } + } _numFiles = (isSmallArchive) ? SMALL_ARCHIVE_FILES_NUM : NORMAL_ARCHIVE_FILES_NUM; diff --git a/engines/parallaction/detection.cpp b/engines/parallaction/detection.cpp index 89a0372fac..8e069c5f08 100644 --- a/engines/parallaction/detection.cpp +++ b/engines/parallaction/detection.cpp @@ -75,7 +75,7 @@ static const PARALLACTIONGameDescription gameDescriptions[] = { Common::ADGF_NO_FLAGS }, GType_Nippon, - GF_LANG_EN | GF_LANG_FR | GF_LANG_DE | GF_LANG_IT, + GF_LANG_EN | GF_LANG_FR | GF_LANG_DE | GF_LANG_IT | GF_LANG_MULT, }, { @@ -98,7 +98,7 @@ static const PARALLACTIONGameDescription gameDescriptions[] = { Common::ADGF_NO_FLAGS }, GType_Nippon, - GF_LANG_EN | GF_LANG_FR | GF_LANG_DE, + GF_LANG_EN | GF_LANG_FR | GF_LANG_DE | GF_LANG_MULT, }, { diff --git a/engines/parallaction/disk.cpp b/engines/parallaction/disk.cpp index b44485455f..93a5840fb5 100644 --- a/engines/parallaction/disk.cpp +++ b/engines/parallaction/disk.cpp @@ -1150,11 +1150,19 @@ Font* AmigaFullDisk::loadFont(const char* name) { char path[PATH_LEN]; sprintf(path, "%sfont", name); - Common::File stream; - if (!stream.open(path)) - errorFileNotFound(path); + if (_vm->getFeatures() & GF_LANG_MULT) { + if (!_resArchive.openArchivedFile(path)) + errorFileNotFound(path); - return createFont(name, stream); + return createFont(name, _resArchive); + } else { + // Italian version has separate font files? + Common::File stream; + if (!stream.open(path)) + errorFileNotFound(path); + + return createFont(name, stream); + } } diff --git a/engines/parallaction/menu.cpp b/engines/parallaction/menu.cpp index 457b81e6b6..ec9db51e4d 100644 --- a/engines/parallaction/menu.cpp +++ b/engines/parallaction/menu.cpp @@ -105,7 +105,7 @@ Menu::~Menu() { void Menu::start() { - _vm->_disk->selectArchive((_vm->getPlatform() == Common::kPlatformAmiga) ? "disk0" : "disk1"); + _vm->_disk->selectArchive((_vm->getFeatures() & GF_LANG_MULT) ? "disk1" : "disk0"); splash(); @@ -335,7 +335,7 @@ void Menu::selectCharacter() { _vm->_gfx->setFont(kFontMenu); - _vm->_disk->selectArchive((_vm->getPlatform() == Common::kPlatformAmiga) ? "disk0" : "disk1"); + _vm->_disk->selectArchive((_vm->getFeatures() & GF_LANG_MULT) ? "disk1" : "disk0"); _vm->_disk->loadSlide("password"); // loads background into kBitBack buffer diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h index 327a8cbdf6..d733c17fe9 100644 --- a/engines/parallaction/parallaction.h +++ b/engines/parallaction/parallaction.h @@ -64,7 +64,8 @@ enum { GF_LANG_EN = 1 << 1, GF_LANG_FR = 1 << 2, GF_LANG_DE = 1 << 3, - GF_LANG_IT = 1 << 4 + GF_LANG_IT = 1 << 4, + GF_LANG_MULT = 1 << 5 }; -- cgit v1.2.3