From c7b38c45101cfcaafc60aaec4a8817c45dffca7c Mon Sep 17 00:00:00 2001 From: Arnaud Boutonné Date: Thu, 16 Sep 2010 23:03:03 +0000 Subject: HUGO: Fix H1 DOS initialization Fix a bug in hugo.dat loading and initialize properly Hugo1 DOS svn-id: r52755 --- engines/hugo/file.cpp | 12 +++++------- engines/hugo/hugo.cpp | 7 ++++++- engines/hugo/hugo.h | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) (limited to 'engines') diff --git a/engines/hugo/file.cpp b/engines/hugo/file.cpp index 8e0c817e76..3219ec44b9 100644 --- a/engines/hugo/file.cpp +++ b/engines/hugo/file.cpp @@ -231,6 +231,8 @@ void FileManager::readImage(int objNum, object_t *objPtr) { case CYCLE_BACKWARD: objPtr->currImagePtr = seqPtr; break; + default: + warning("Unexpected cycling: %d", objPtr->cycling); } if (!_vm.isPacked()) @@ -791,13 +793,9 @@ void FileManager_v1d::readBackground(int screenIndex) { debugC(1, kDebugFile, "readBackground(%d)", screenIndex); char *buf = (char *) malloc(2048 + 1); // Buffer for file access - strcat(strcat(strcpy(buf, _vm._picDir), _vm._screenNames[screenIndex]), BKGEXT); - if (!_sceneryArchive1.open(buf)) { - warning("File %s not found, trying again with %s.ART", buf, _vm._screenNames[screenIndex]); - strcat(strcpy(buf, _vm._screenNames[screenIndex]), ".ART"); - if (!_sceneryArchive1.open(buf)) - Utils::Error(FILE_ERR, "%s", buf); - } + strcat(strcpy(buf, _vm._screenNames[screenIndex]), ".ART"); + if (!_sceneryArchive1.open(buf)) + Utils::Error(FILE_ERR, "%s", buf); // Read the image into dummy seq and static dib_a readPCX(_sceneryArchive1, &seq, _vm.screen().getFrontBuffer(), true, _vm._screenNames[screenIndex]); diff --git a/engines/hugo/hugo.cpp b/engines/hugo/hugo.cpp index 8dc1ada4d5..80ae532cf9 100644 --- a/engines/hugo/hugo.cpp +++ b/engines/hugo/hugo.cpp @@ -258,7 +258,10 @@ Common::Error HugoEngine::run() { } void HugoEngine::initMachine() { - file().readBackground(_numScreens - 1); // Splash screen + if (_gameVariant == 3) + readScreenFiles(0); + else + file().readBackground(_numScreens - 1); // Splash screen readObjectImages(); // Read all object images if (_platform == Common::kPlatformWindows) readUIFImages(); // Read all uif images (only in Win versions) @@ -1397,6 +1400,7 @@ char **HugoEngine::loadTextsVariante(Common::File &in, uint16 *arraySize) { res = (char **)malloc(sizeof(char *) * numTexts); res[0] = pos; in.read(res[0], entryLen); + res[0] += DATAALIGNMENT; } else { in.read(pos, entryLen); } @@ -1467,6 +1471,7 @@ char ***HugoEngine::loadTextsArray(Common::File &in) { res = (char **)malloc(sizeof(char *) * numTexts); res[0] = pos; in.read(res[0], entryLen); + res[0] += DATAALIGNMENT; } else { in.read(pos, entryLen); } diff --git a/engines/hugo/hugo.h b/engines/hugo/hugo.h index 5128d4e093..e59c4dfdf5 100644 --- a/engines/hugo/hugo.h +++ b/engines/hugo/hugo.h @@ -48,7 +48,7 @@ enum GameType { kGameTypeHugo3 }; -enum HugoebugChannels { +enum HugoDebugChannels { kDebugSchedule = 1 << 0, kDebugEngine = 1 << 1, kDebugDisplay = 1 << 2, -- cgit v1.2.3