public void Decode(Stream input, Stream output) { var compressionHeader = new byte[4]; input.Read(compressionHeader, 0, 4); if (compressionHeader[0] != 0x10) { throw new InvalidCompressionException("Nintendo Lz10"); } var decompressedSize = compressionHeader[1] | (compressionHeader[2] << 8) | (compressionHeader[3] << 16); _decoder.Decode(input, output, decompressedSize); }
public void Decode(Stream input, Stream output) { var compressionHeader = new byte[4]; input.Read(compressionHeader, 0, 4); if ((compressionHeader[0] & 0x7) != 0x1) { throw new InvalidCompressionException("Level5 Lz10"); } var decompressedSize = (compressionHeader[0] >> 3) | (compressionHeader[1] << 5) | (compressionHeader[2] << 13) | (compressionHeader[3] << 21); _decoder.Decode(input, output, decompressedSize); }
public void Decode(Stream input, Stream output) { var compressionHeader = new byte[4]; input.Read(compressionHeader, 0, 4); if (compressionHeader[0] != 0x53 || compressionHeader[1] != 0x53 || compressionHeader[2] != 0x5A || compressionHeader[3] != 0x4C) // "SSZL" { throw new InvalidCompressionException("Lzss"); } input.Position = 0xC; var decompressedSizeBuffer = new byte[4]; input.Read(decompressedSizeBuffer, 0, 4); var decompressedSize = decompressedSizeBuffer[0] | (decompressedSizeBuffer[1] << 8) | (decompressedSizeBuffer[2] << 16) | (decompressedSizeBuffer[3] << 24); _decoder.Decode(input, output, decompressedSize); }