public static IKompressionConfiguration GetConfiguration(NintendoCompressionMethod method)
        {
            switch (method)
            {
            case NintendoCompressionMethod.Lz10:
                return(Kompression.Implementations.Compressions.Nintendo.Lz10);

            case NintendoCompressionMethod.Lz11:
                return(Kompression.Implementations.Compressions.Nintendo.Lz11);

            case NintendoCompressionMethod.Lz40:
                return(Kompression.Implementations.Compressions.Nintendo.Lz40);

            case NintendoCompressionMethod.Lz60:
                return(Kompression.Implementations.Compressions.Nintendo.Lz60);

            case NintendoCompressionMethod.Huffman4:
                return(Kompression.Implementations.Compressions.Nintendo.Huffman4Bit);

            case NintendoCompressionMethod.Huffman8:
                return(Kompression.Implementations.Compressions.Nintendo.Huffman8Bit);

            case NintendoCompressionMethod.Rle:
                return(Kompression.Implementations.Compressions.Nintendo.Rle);

            default:
                throw new NotSupportedException($"Unknown compression method {method}");
            }
        }
Beispiel #2
0
        private Stream Decompress(Stream input)
        {
            using var br = new BinaryReaderX(input, true);

            input.Position = 5;
            var magic = br.ReadString(4);

            if (magic != "F3XT")
            {
                _wasCompressed = false;
                return(input);
            }

            _wasCompressed = true;

            var ms = new MemoryStream();

            input.Position = 0;

            _compMethod = NintendoCompressor.PeekCompressionMethod(input);
            NintendoCompressor.Decompress(input, ms);

            ms.Position = 0;
            return(ms);
        }
        public static void Compress(Stream input, Stream output, NintendoCompressionMethod method)
        {
            var configuration = GetConfiguration(method);

            configuration.Build().Compress(input, output);
        }
Beispiel #4
0
 public static bool IsValidCompressionMethod(NintendoCompressionMethod method)
 {
     return(Enum.IsDefined(typeof(NintendoCompressionMethod), method));
 }