public ShuffleARC_M(string path) { if (!File.Exists(path)) { Valid = false; return; } FileName = Path.GetFileNameWithoutExtension(path); if (FileName.Length != 8 || !Util.IsHex(FileName)) { Valid = false; return; } FilePath = Path.GetDirectoryName(path); Extension = Path.GetExtension(path); using (BinaryReader br = new BinaryReader(File.OpenRead(path))) { if ((FileType = br.ReadUInt32()) != 0xC) { Valid = false; return; } Magic = br.ReadUInt32(); if (Magic != uint.Parse(FileName, NumberStyles.AllowHexSpecifier)) { Valid = false; return; } Valid = true; // Error Checking done. Unknown = br.ReadUInt32(); Unknown2 = br.ReadUInt32(); FileCount = br.ReadUInt32(); Padding = br.ReadUInt32(); Files = new ShuffleFile[FileCount]; for (int i = 0; i < FileCount; i++) { Files[i] = new ShuffleFile { NameHash = br.ReadUInt32(), _B = br.ReadUInt32(), Length = br.ReadUInt32(), Offset = br.ReadUInt32(), F0 = br.ReadUInt32(), F1 = br.ReadUInt32(), F2 = br.ReadUInt32(), F3 = br.ReadUInt32(), }; } } }