public int GetDecompressedSize(MtArcPlatform mtArcPlatform) { switch (mtArcPlatform) { case MtArcPlatform.LittleEndian: return(DecompSize & 0x00FFFFFF); case MtArcPlatform.BigEndian: return(DecompSize >> 3); default: return(DecompSize); } }
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; } }
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(); } }
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))); }