aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk
diff options
context:
space:
mode:
authorBastien Bouclet2019-10-20 09:25:30 +0200
committerBastien Bouclet2019-10-26 19:18:47 +0200
commitecccefcbec2caf5aae5ae6d714cb0584204355b1 (patch)
treec98d9965af604404ebc19e7c07ab794f0daab0c0 /engines/mohawk
parentea52a996926fa91bd5b4c240af7582b4d95ba491 (diff)
downloadscummvm-rg350-ecccefcbec2caf5aae5ae6d714cb0584204355b1.tar.gz
scummvm-rg350-ecccefcbec2caf5aae5ae6d714cb0584204355b1.tar.bz2
scummvm-rg350-ecccefcbec2caf5aae5ae6d714cb0584204355b1.zip
MOHAWK: Cut down on seeks when opening archives
Helps with loading times on systems with slow storage.
Diffstat (limited to 'engines/mohawk')
-rw-r--r--engines/mohawk/resource.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/engines/mohawk/resource.cpp b/engines/mohawk/resource.cpp
index e8e382ad00..1e6ded8c8a 100644
--- a/engines/mohawk/resource.cpp
+++ b/engines/mohawk/resource.cpp
@@ -183,6 +183,7 @@ struct FileTableEntry {
};
struct NameTableEntry {
+ uint16 offset;
uint16 index;
Common::String name;
};
@@ -263,14 +264,15 @@ bool MohawkArchive::openStream(Common::SeekableReadStream *stream) {
debug(3, "Names = %04x", nameTable.size());
for (uint16 j = 0; j < nameTable.size(); j++) {
- uint16 offset = stream->readUint16BE();
- nameTable[j].index = stream->readUint16BE();
+ nameTable[j].offset = stream->readUint16BE();
+ nameTable[j].index = stream->readUint16BE();
- debug(4, "Entry[%02x]: Name List Offset = %04x Index = %04x", j, offset, nameTable[j].index);
+ debug(4, "Entry[%02x]: Name List Offset = %04x Index = %04x", j, nameTable[j].offset, nameTable[j].index);
+ }
+ for (uint16 j = 0; j < nameTable.size(); j++) {
// Name List
- uint32 pos = stream->pos();
- stream->seek(absOffset + stringTableOffset + offset);
+ stream->seek(absOffset + stringTableOffset + nameTable[j].offset);
char c = (char)stream->readByte();
while (c != 0) {
nameTable[j].name += c;
@@ -278,9 +280,6 @@ bool MohawkArchive::openStream(Common::SeekableReadStream *stream) {
}
debug(3, "Name = \'%s\'", nameTable[j].name.c_str());
-
- // Get back to next entry
- stream->seek(pos);
}
// Resource Table