public int Write(Stream stream, XsbHeader header) { var start = stream.Position; var writer = new BinaryWriter(stream); writer.Write(header.Signature); writer.Write(header.ToolVersion); writer.Write(header.FormatVersion); writer.Write(header.Crc); writer.Write(header.BuildTime); writer.Write(header.Platform); writer.Write(header.SimpleCueCount); writer.Write(header.ComplexCueCount); writer.Write(header.Unk0); writer.Write(header.TotalCueCount); writer.Write(header.WaveBankCount); writer.Write(header.SoundCount); writer.Write(header.CueNameTableLength); writer.Write(header.Unk1); writer.Write(header.SimpleCuesOffset); writer.Write(header.ComplexCuesOffset); writer.Write(header.CueNamesOffset); writer.Write(header.Unk2); writer.Write(header.VariationTablesOffset); writer.Write(header.Unk3); writer.Write(header.WaveBankNameTableOffset); writer.Write(header.CueNameHashTableOffset); writer.Write(header.CueNameHashValuesOffset); writer.Write(header.SoundsOffset); var name = new byte[XwbConstants.WavebankBanknameLength]; header.Name.GetBytes().AsSpan().CopyTo(name); writer.Write(name); return((int)(stream.Position - start)); }
public XsbHeader Read(Stream stream) { var reader = new BinaryReader(stream); var result = new XsbHeader { Signature = reader.ReadInt32(), ToolVersion = reader.ReadInt16(), FormatVersion = reader.ReadInt16(), Crc = reader.ReadInt16(), BuildTime = reader.ReadInt64(), Platform = reader.ReadByte(), SimpleCueCount = reader.ReadInt16(), ComplexCueCount = reader.ReadInt16(), Unk0 = reader.ReadInt16(), TotalCueCount = reader.ReadInt16(), WaveBankCount = reader.ReadByte(), SoundCount = reader.ReadInt16(), CueNameTableLength = reader.ReadInt16(), Unk1 = reader.ReadInt16(), SimpleCuesOffset = reader.ReadInt32(), ComplexCuesOffset = reader.ReadInt32(), CueNamesOffset = reader.ReadInt32(), Unk2 = reader.ReadInt32(), VariationTablesOffset = reader.ReadInt32(), Unk3 = reader.ReadInt32(), WaveBankNameTableOffset = reader.ReadInt32(), CueNameHashTableOffset = reader.ReadInt32(), CueNameHashValuesOffset = reader.ReadInt32(), SoundsOffset = reader.ReadInt32(), Name = reader.ReadBytes(XwbConstants.WavebankBanknameLength) .TakeWhile(b => b != 0x00).ToArray().GetString() }; return(result); }