protected void readBinaryHeader(ArkArchive archive) { SaveVersion = archive.GetShort(); if (SaveVersion == 5) { GameTime = archive.GetFloat(); propertiesBlockOffset = 0; } else if (SaveVersion == 6) { nameTableOffset = archive.GetInt(); propertiesBlockOffset = archive.GetInt(); GameTime = archive.GetFloat(); } else if (SaveVersion == 7 || SaveVersion == 8) { binaryDataOffset = archive.GetInt(); var unknownValue = archive.GetInt(); if (unknownValue != 0) { var msg = $"Found unexpected Value {unknownValue} at {archive.Position - 4:X}"; _logger.Error(msg); throw new System.NotSupportedException(msg); } nameTableOffset = archive.GetInt(); propertiesBlockOffset = archive.GetInt(); GameTime = archive.GetFloat(); } else if (SaveVersion == 9) { binaryDataOffset = archive.GetInt(); var unknownValue = archive.GetInt(); if (unknownValue != 0) { var msg = $"Found unexpected Value {unknownValue} at {archive.Position - 4:X}"; _logger.Error(msg); throw new System.NotSupportedException(msg); } nameTableOffset = archive.GetInt(); propertiesBlockOffset = archive.GetInt(); GameTime = archive.GetFloat(); //note: unknown integer value was added in v268.22 with SaveVersion=9 [0x25 (37) on The Island, 0x26 (38) on ragnarok/center/scorched] archive.GetInt(); //unknownValue2 } else { var msg = $"Found unknown Version {SaveVersion}"; _logger.Error(msg); throw new System.NotSupportedException(msg); } }