diff options
-rw-r--r-- | engines/glk/adrift/scprotos.h | 3 | ||||
-rw-r--r-- | engines/glk/adrift/sctaffil.cpp | 47 | ||||
-rw-r--r-- | engines/glk/adrift/scutils.cpp | 2 |
3 files changed, 30 insertions, 22 deletions
diff --git a/engines/glk/adrift/scprotos.h b/engines/glk/adrift/scprotos.h index 39fba6bbe4..6fd383cba8 100644 --- a/engines/glk/adrift/scprotos.h +++ b/engines/glk/adrift/scprotos.h @@ -97,10 +97,11 @@ extern sc_uint sc_hash(const sc_char *string); /* TAF file reader/decompressor enumerations, opaque typedef and functions. */ enum { TAF_VERSION_NONE = 0, + TAF_VERSION_SAVE = 999, TAF_VERSION_500 = 500, TAF_VERSION_400 = 400, TAF_VERSION_390 = 390, - TAF_VERSION_380 = 380 + TAF_VERSION_380 = 380, }; typedef struct sc_taf_s *sc_tafref_t; diff --git a/engines/glk/adrift/sctaffil.cpp b/engines/glk/adrift/sctaffil.cpp index 0cda5ec20b..e5c94a58ce 100644 --- a/engines/glk/adrift/sctaffil.cpp +++ b/engines/glk/adrift/sctaffil.cpp @@ -50,22 +50,22 @@ static const sc_char NEWLINE = '\n'; static const sc_char CARRIAGE_RETURN = '\r'; static const sc_char NUL = '\0'; -/* Version 4.0, version 3.9, and version 3.8 TAF file signatures. */ -static const sc_byte -V400_SIGNATURE[VERSION_HEADER_SIZE] = {0x3c, 0x42, 0x3f, 0xc9, 0x6a, 0x87, - 0xc2, 0xcf, 0x93, 0x45, 0x3e, 0x61, - 0x39, 0xfa - }; -static const sc_byte -V390_SIGNATURE[VERSION_HEADER_SIZE] = {0x3c, 0x42, 0x3f, 0xc9, 0x6a, 0x87, - 0xc2, 0xcf, 0x94, 0x45, 0x37, 0x61, - 0x39, 0xfa - }; -static const sc_byte -V380_SIGNATURE[VERSION_HEADER_SIZE] = {0x3c, 0x42, 0x3f, 0xc9, 0x6a, 0x87, - 0xc2, 0xcf, 0x94, 0x45, 0x36, 0x61, - 0x39, 0xfa - }; +/* Various version TAF file signatures. */ +static const sc_byte V500_SIGNATURE[VERSION_HEADER_SIZE] = { + 0x3c, 0x42, 0x3f, 0xc9, 0x6a, 0x87, 0xc2, 0xcf, 0x92, 0x45, 0x3e, 0x61, 0x30, 0x30 +}; + +static const sc_byte V400_SIGNATURE[VERSION_HEADER_SIZE] = { + 0x3c, 0x42, 0x3f, 0xc9, 0x6a, 0x87, 0xc2, 0xcf, 0x93, 0x45, 0x3e, 0x61, 0x39, 0xfa +}; + +static const sc_byte V390_SIGNATURE[VERSION_HEADER_SIZE] = { + 0x3c, 0x42, 0x3f, 0xc9, 0x6a, 0x87, 0xc2, 0xcf, 0x94, 0x45, 0x37, 0x61, 0x39, 0xfa +}; + +static const sc_byte V380_SIGNATURE[VERSION_HEADER_SIZE] = { + 0x3c, 0x42, 0x3f, 0xc9, 0x6a, 0x87, 0xc2, 0xcf, 0x94, 0x45, 0x36, 0x61, 0x39, 0xfa +}; /* * Game TAF data structure. The game structure contains the original TAF @@ -499,7 +499,10 @@ static sc_tafref_t taf_create_from_callback(sc_read_callbackref_t callback, * Compare the header with the known TAF signatures, and set TAF version * appropriately. */ - if (memcmp(taf->header, V400_SIGNATURE, VERSION_HEADER_SIZE) == 0) { + if (memcmp(taf->header, V500_SIGNATURE, VERSION_HEADER_SIZE) == 0) { + taf->version = TAF_VERSION_500; + + } else if (memcmp(taf->header, V400_SIGNATURE, VERSION_HEADER_SIZE) == 0) { /* Read in the version 4.0 header extension. */ in_bytes = callback(opaque, taf->header + VERSION_HEADER_SIZE, @@ -522,7 +525,7 @@ static sc_tafref_t taf_create_from_callback(sc_read_callbackref_t callback, } } else { /* Saved games are always considered to be for ScummVM, version 5.0. */ - taf->version = TAF_VERSION_500; + taf->version = TAF_VERSION_SAVE; } /* @@ -531,10 +534,14 @@ static sc_tafref_t taf_create_from_callback(sc_read_callbackref_t callback, * it's obfuscated with the Visual Basic PRNG. */ switch (taf->version) { - case TAF_VERSION_500: + case TAF_VERSION_SAVE: status = taf_read_raw(taf, callback, opaque, is_gamefile); break; - + + case TAF_VERSION_500: + sc_error("taf_create: ADRIFT 5 games are not yet supported"); + break; + case TAF_VERSION_400: status = taf_decompress(taf, callback, opaque, is_gamefile); break; diff --git a/engines/glk/adrift/scutils.cpp b/engines/glk/adrift/scutils.cpp index 0c8165d581..d1dc5141e9 100644 --- a/engines/glk/adrift/scutils.cpp +++ b/engines/glk/adrift/scutils.cpp @@ -65,7 +65,7 @@ void sc_error(const sc_char *format, ...) { assert(format); va_start(ap, format); - Common::String s = Common::String::format(format, ap); + Common::String s = Common::String::vformat(format, ap); va_end(ap); warning("%s", s.c_str()); } |