diff options
-rw-r--r-- | engines/hdb/file-manager.cpp | 33 | ||||
-rw-r--r-- | engines/hdb/hdb.cpp | 5 |
2 files changed, 17 insertions, 21 deletions
diff --git a/engines/hdb/file-manager.cpp b/engines/hdb/file-manager.cpp index 5cfd4cda4f..bc0c648ab8 100644 --- a/engines/hdb/file-manager.cpp +++ b/engines/hdb/file-manager.cpp @@ -19,7 +19,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ - #include "hdb/file-manager.h" #include "common/debug.h" #include "common/file.h" @@ -35,15 +34,11 @@ bool FileMan::openMPC(const Common::String &filename) { uint32 offset; if (!_mpcFile->open(filename)) { - debug("The MPC file doesn't exist."); error("FileMan::openMSD(): Error reading the MSD file"); return false; } - else { - debug("The MPC file exists"); - } - _mpcFile->read(&dataHeader.id, 4); + dataHeader.id = _mpcFile->readUint32BE(); if (dataHeader.id == MKTAG('M', 'P', 'C', 'C')) { _compressed = true; @@ -52,30 +47,30 @@ bool FileMan::openMPC(const Common::String &filename) { } else if (dataHeader.id == MKTAG('M', 'P', 'C', 'U')) { _compressed = false; - - offset = _mpcFile->readUint32LE(); - _mpcFile->seek((int32)offset, SEEK_SET); + + offset = _mpcFile->readUint32BE(); + _mpcFile->seek((int32)offset); // Note: The MPC archive format assumes the offset to be uint32, // but Common::File::seek() takes the offset as int32. - - dataHeader.dirSize = _mpcFile->readUint32LE(); + + dataHeader.dirSize = _mpcFile->readUint32BE(); for (uint32 fileIndex = 0; fileIndex < dataHeader.dirSize; fileIndex++) { MPCEntry *dirEntry = new MPCEntry(); - for (int fileNameIndex = 0; fileNameIndex < 64; fileNameIndex++) { - dirEntry->filename[fileNameIndex] = _mpcFile->readByte(); + for (int i = 0; i < 64; i++) { + dirEntry->filename[i] = _mpcFile->readByte(); } - - dirEntry->offset = _mpcFile->readUint32LE(); - dirEntry->length = _mpcFile->readUint32LE(); - dirEntry->ulength = _mpcFile->readUint32LE(); - dirEntry->type = (DataType)_mpcFile->readUint32LE(); + + dirEntry->offset = _mpcFile->readUint32BE(); + dirEntry->length = _mpcFile->readUint32BE(); + dirEntry->ulength = _mpcFile->readUint32BE(); + dirEntry->type = (DataType)_mpcFile->readUint32BE(); _dir.push_back(dirEntry); } - + return true; } diff --git a/engines/hdb/hdb.cpp b/engines/hdb/hdb.cpp index 310dd7c412..2f5095305f 100644 --- a/engines/hdb/hdb.cpp +++ b/engines/hdb/hdb.cpp @@ -39,6 +39,7 @@ namespace HDB { HDBGame::HDBGame(OSystem *syst, const ADGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) { _console = nullptr; _systemInit = false; + fileMan = new FileMan; DebugMan.addDebugChannel(kDebugExample1, "Example1", "This is just an example to test"); DebugMan.addDebugChannel(kDebugExample2, "Example2", "This is also an example"); @@ -107,8 +108,8 @@ Common::Error HDBGame::run() { initGraphics(640, 480, &format); _console = new Console(); - MPCEntry *titleScreen = fileMan->findFirstData("monkeylogoscreen", DataType::TYPE_PIC); - debug("Hi"); +// MPCEntry *titleScreen = fileMan->findFirstData("monkeylogoscreen", DataType::TYPE_PIC); +// debug("Hi"); //Common::MemoryReadStream *stream = new Common::MemoryReadStream((byte *)titleScreen, titleScreen->ulength); //if (titleScreen == NULL) { //debug("titleScreen: NULL"); |