diff options
-rw-r--r-- | devtools/create_teenagent/create_teenagent.cpp | 2 | ||||
-rw-r--r-- | dists/engine-data/teenagent.dat | bin | 70047 -> 141090 bytes | |||
-rw-r--r-- | engines/teenagent/resources.cpp | 46 |
3 files changed, 29 insertions, 19 deletions
diff --git a/devtools/create_teenagent/create_teenagent.cpp b/devtools/create_teenagent/create_teenagent.cpp index 9551acbaea..fc2ba4da0e 100644 --- a/devtools/create_teenagent/create_teenagent.cpp +++ b/devtools/create_teenagent/create_teenagent.cpp @@ -106,7 +106,5 @@ int main(int argc, char *argv[]) { fclose(fin); fclose(fout); - fprintf(stderr, "please run \"gzip -n %s\"\n", dat_name); - return 0; } diff --git a/dists/engine-data/teenagent.dat b/dists/engine-data/teenagent.dat Binary files differindex 0dd31dad14..1492326920 100644 --- a/dists/engine-data/teenagent.dat +++ b/dists/engine-data/teenagent.dat diff --git a/engines/teenagent/resources.cpp b/engines/teenagent/resources.cpp index 597ca670c0..74ebae9c9b 100644 --- a/engines/teenagent/resources.cpp +++ b/engines/teenagent/resources.cpp @@ -22,7 +22,6 @@ #include "teenagent/resources.h" #include "teenagent/teenagent.h" #include "common/textconsole.h" -#include "common/zlib.h" namespace TeenAgent { @@ -69,24 +68,37 @@ bool Resources::loadArchives(const ADGameDescription *gd) { warning("%s", errorMessage.c_str()); return false; } - Common::SeekableReadStream *dat = Common::wrapCompressedReadStream(dat_file); - cseg.read(dat, 0xb3b0); - dseg.read(dat, 0xe790); - eseg.read(dat, 0x8be2); - - delete dat; - - { - FilePack varia; - varia.open("varia.res"); - font7.load(varia, 7); - font7.width_pack = 1; - font7.height = 11; - font8.load(varia, 8); - font8.height = 31; - varia.close(); + + // Check if teenagent.dat is compressed (older versions of the file) + uint16 header = dat_file->readUint16BE(); + bool isCompressed = (header == 0x1F8B || + ((header & 0x0F00) == 0x0800 && + header % 31 == 0)); + dat_file->seek(-2, SEEK_CUR); + + if (isCompressed) { + delete dat_file; + Common::String errorMessage = "The teenagent.dat file is compressed. Please decompress it"; + GUIErrorMessage(errorMessage); + warning("%s", errorMessage.c_str()); + return false; } + cseg.read(dat_file, 0xb3b0); + dseg.read(dat_file, 0xe790); + eseg.read(dat_file, 0x8be2); + + delete dat_file; + + FilePack varia; + varia.open("varia.res"); + font7.load(varia, 7); + font7.width_pack = 1; + font7.height = 11; + font8.load(varia, 8); + font8.height = 31; + varia.close(); + off.open("off.res"); on.open("on.res"); ons.open("ons.res"); |