aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/dataio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/dataio.cpp')
-rw-r--r--engines/gob/dataio.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/engines/gob/dataio.cpp b/engines/gob/dataio.cpp
index a2bb730870..dbb1e66eb2 100644
--- a/engines/gob/dataio.cpp
+++ b/engines/gob/dataio.cpp
@@ -370,6 +370,7 @@ void DataIO::openDataFile(const char *src, bool itk) {
ChunkDesc *dataDesc;
char path[128];
int16 file;
+ char *fakeTotPtr;
strncpy0(path, src, 127);
if (!strchr(path, '.')) {
@@ -409,6 +410,13 @@ void DataIO::openDataFile(const char *src, bool itk) {
Util::replaceChar(dataDesc[i].chunkName, (char) 0x8E, 'O');
Util::replaceChar(dataDesc[i].chunkName, (char) 0x91, 'C');
Util::replaceChar(dataDesc[i].chunkName, (char) 0x92, 'T');
+
+ // Geisha use 0ot files, which are compressed TOT files without the packed byte set.
+ fakeTotPtr = strstr(dataDesc[i].chunkName, "0OT");
+ if (fakeTotPtr != 0) {
+ strncpy(fakeTotPtr, "TOT", 3);
+ dataDesc[i].packed = 1;
+ }
}
for (int i = 0; i < _numDataChunks[file]; i++)