Esempio n. 1
0
        public int GetDecompressedSize(MtArcPlatform mtArcPlatform)
        {
            switch (mtArcPlatform)
            {
            case MtArcPlatform.LittleEndian:
                return(DecompSize & 0x00FFFFFF);

            case MtArcPlatform.BigEndian:
                return(DecompSize >> 3);

            default:
                return(DecompSize);
            }
        }
Esempio n. 2
0
        public void SetDecompressedSize(int size, MtArcPlatform mtArcPlatform)
        {
            switch (mtArcPlatform)
            {
            case MtArcPlatform.LittleEndian:
                DecompSize = (DecompSize & ~0x00FFFFFF) | size;
                break;

            case MtArcPlatform.BigEndian:
                DecompSize = (DecompSize & 0x00000007) | (size << 3);
                break;

            default:
                DecompSize = size;
                break;
            }
        }
Esempio n. 3
0
        public IList <IArchiveFileInfo> Load(Stream input, MtArcPlatform platform)
        {
            _platform = platform;

            switch (platform)
            {
            case MtArcPlatform.LittleEndian:
                return(LoadLittleEndian(input));

            case MtArcPlatform.BigEndian:
                return(LoadBigEndian(input));

            case MtArcPlatform.Switch:
                return(LoadSwitch(input));

            default:
                throw new InvalidOperationException();
            }
        }
Esempio n. 4
0
        public static IArchiveFileInfo CreateAfi(Stream file, string fileName, IMtEntry entry, MtArcPlatform mtArcPlatform)
        {
            if (entry.CompSize == entry.GetDecompressedSize(mtArcPlatform))
            {
                return(new MtArchiveFileInfo(file, fileName, entry));
            }

            var compMagic = file.ReadByte();

            if ((compMagic & 0xF) != 8 || (compMagic & 0xF0) > 0x70)
            {
                throw new InvalidOperationException("File is marked as compressed but doesn't use ZLib.");
            }

            return(new MtArchiveFileInfo(file, fileName, entry, Kompression.Implementations.Compressions.ZLib, entry.GetDecompressedSize(mtArcPlatform)));
        }