aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/parallaction/archive.cpp9
-rw-r--r--engines/parallaction/detection.cpp4
-rw-r--r--engines/parallaction/disk.cpp16
-rw-r--r--engines/parallaction/menu.cpp4
-rw-r--r--engines/parallaction/parallaction.h3
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
};