diff options
-rw-r--r-- | engines/startrek/room.cpp | 5 | ||||
-rw-r--r-- | engines/startrek/room.h | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/engines/startrek/room.cpp b/engines/startrek/room.cpp index a34af48b0b..9fc0431e81 100644 --- a/engines/startrek/room.cpp +++ b/engines/startrek/room.cpp @@ -49,6 +49,7 @@ Room::Room(StarTrekEngine *vm, const Common::String &name) : _vm(vm), _awayMissi int size = rdfFile->size(); _rdfData = new byte[size]; + _rdfSize = size; rdfFile->read(_rdfData, size); delete rdfFile; @@ -279,7 +280,9 @@ Common::String Room::patchRoomMessage(const char *text) { void Room::loadOtherRoomMessages() { uint16 startOffset = readRdfWord(14); - uint16 endOffset = readRdfWord(16); + // Some RDF files, lile MUDD0, contain text beyond the end offset, + // so we read up to the end of the file + uint16 endOffset = _rdfSize; // readRdfWord(16); uint16 offset = startOffset; const char *validPrefixes[] = { "BRI", "COM", "DEM", "FEA", "GEN", "LOV", "MUD", "SIN", "TRI", "TUG", "VEN" diff --git a/engines/startrek/room.h b/engines/startrek/room.h index f507b9fd0d..6aeed92c41 100644 --- a/engines/startrek/room.h +++ b/engines/startrek/room.h @@ -149,10 +149,11 @@ public: */ Common::Point getSpawnPosition(int crewmanIndex); -public: byte *_rdfData; private: + uint16 _rdfSize; + StarTrekEngine *_vm; AwayMission *_awayMission; |