public void Read(Stream input) { X360Reader reader = new X360Reader(input, Encoding.Default, true, true); int unknown1 = reader.ReadInt32(); int hashCount = reader.ReadInt32(); int folderCount = reader.ReadInt32(); int fileCount = reader.ReadInt32(); int unknown2 = reader.ReadInt32(); int unknown3 = reader.ReadInt32(); int unknown4 = reader.ReadInt32(); int unknown5 = reader.ReadInt32(); for (int i = 0; i < hashCount; i++) { _hashes.Add(FileHash.ReadFileHash(input)); } input.AlignRead(16); for (int i = 0; i < hashCount; i++) { _folderInfos.Add(FolderInfo.ReadFolderInfo(input)); } input.AlignRead(16); for (int i = 0; i < folderCount; i++) { _folderStringIndices.Add(StringIndex.ReadStringIndex(input)); } input.AlignRead(16); for (int i = 0; i < fileCount; i++) { _fileStringIndices.Add(StringIndex.ReadStringIndex(input)); } input.AlignRead(16); long stringTableOffset = input.Position; foreach (var folderStringIndex in _folderStringIndices) { input.Position = stringTableOffset + folderStringIndex.Offset; string folderName = reader.ReadNullTerminatedString(); _folderNames.Add(folderName); } foreach (var fileStringIndex in _fileStringIndices) { input.Position = stringTableOffset + fileStringIndex.Offset; string fileName = reader.ReadNullTerminatedString(); _fileNames.Add(fileName); } }
public void Read(Stream inputStream) { BinaryReader reader = new BinaryReader(inputStream, Encoding.Default, true); string magicNumber = reader.ReadString(4); short endianess = reader.ReadInt16(); byte entryCount = reader.ReadByte(); reader.Skip(1); short headerSize = reader.ReadInt16(); inputStream.AlignRead(16); List<FfntEntryHeader> ffntEntryHeaders = new List<FfntEntryHeader>(); for (int i = 0; i < entryCount; i++) { ffntEntryHeaders.Add(FfntEntryHeader.ReadFfntEntryHeader(inputStream)); } foreach (var header in ffntEntryHeaders) { Entries.Add(header.ReadData(inputStream)); } }