public virtual void Read(BinaryReaderExt r) { EntryFlags = r.ReadInt64(); EntryNumber = r.ReadInt32(); bool hasString = r.ReadBoolean(); EntryName = r.ReadString(0x38); bool hasLabel = r.ReadBoolean(); EntryLabel = r.ReadString(0x40); bool hasStartPosition = r.ReadBoolean(); StartPosition = new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); UseStartPosition = r.ReadBoolean(); // Unknown r.Skip(1); UnknownIndex2 = r.ReadInt32(); r.Skip(1); UnknownVector = new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); UnknownIndex = r.ReadInt32(); r.Skip(1); BoneName = r.ReadString(0x40); }
public static List <Anim> UnpackMOT(string path) { var anims = new List <Anim>(); using (BinaryReaderExt r = new BinaryReaderExt(new FileStream(path, FileMode.Open))) { r.BigEndian = true; r.ReadInt32(); // unknown int count = r.ReadInt32(); uint headerSize = r.ReadUInt32(); uint fileLength = r.ReadUInt32(); if (fileLength != r.Length) { throw new Exception("File Length Mismatch"); } for (uint i = 0; i < count; i++) { r.Seek(headerSize + i * 4); r.Seek(r.ReadUInt32()); Anim anim = new Anim(); if (r.Position != 0) { anim.Parse(r); } anims.Add(anim); } } return(anims); }
private void RoadReader(BinaryReaderExt reader) { ReadRoad(reader); reader.ReadInt32(); // ndNodeIdx reader.ReadInt32(); // ndPathIdx }
private void Load(string fileName) { var fileBytes = File.ReadAllBytes(fileName); using (var ms = new MemoryStream(fileBytes)) { using (var reader = new BinaryReaderExt(ms)) { reader.ReadBytes(16); var fileCount = reader.ReadInt32(); reader.ReadInt32(); for (var i = 0; i < fileCount; i++) { var file = new FILE(); file.Index = reader.ReadInt32(); reader.ReadBytes(21); file.FileName = reader.ReadAscii(); file.FileName = file.FileName.Substring(0, file.FileName.IndexOf('\0')); // Otherwise windows will crap out reader.ReadBytes(12); var filePos = reader.ReadInt32(); var fileLength = reader.ReadInt32(); var pos = reader.BaseStream.Position; reader.BaseStream.Seek(filePos, SeekOrigin.Begin); file.File = reader.ReadBytes(fileLength); reader.BaseStream.Seek(pos, SeekOrigin.Begin); Files.Add(file); } } } }
public void UdpCastTcsSignalAnswerTest() { var packet = new UdpCastTcsSignalAnswerPacket() { Signal = Utilities.Rand.Next(), State = Utilities.Rand.Next(), Time = Utilities.Rand.Next() }; var bytes = packet.GetBytes(); using (var ms = new MemoryStream(bytes)) { using (var bs = new BinaryReaderExt(ms)) { var time = bs.ReadInt32(); Assert.AreEqual(packet.Time, time); var signal = bs.ReadInt32(); Assert.AreEqual(packet.Signal, signal); var state = bs.ReadInt32(); Assert.AreEqual(packet.State, state); } } }
public override void Read(BinaryReaderExt r) { base.Read(r); r.Skip(1); Type = (LVDDamageShapeType)r.ReadInt32(); if (!Enum.IsDefined(typeof(LVDDamageShapeType), Type)) { throw new NotImplementedException($"Unknown damage shape type {Type} at offset {r.BaseStream.Position - 4}"); } X = r.ReadSingle(); Y = r.ReadSingle(); Z = r.ReadSingle(); if (Type == LVDDamageShapeType.Sphere) { Radius = r.ReadSingle(); Dx = r.ReadSingle(); Dy = r.ReadSingle(); Dz = r.ReadSingle(); } if (Type == LVDDamageShapeType.Capsule) { Dx = r.ReadSingle(); Dy = r.ReadSingle(); Dz = r.ReadSingle(); Radius = r.ReadSingle(); } Unknown1 = r.ReadByte(); Unknown2 = r.ReadInt32(); }
public void Read(BinaryReaderExt reader) { dxgiFormat = (DXGI_FORMAT)reader.ReadInt32(); resourceDimension = (D3D10_RESOURCE_DIMENSION)reader.ReadInt32(); miscFlag = reader.ReadUInt32(); arraySize = reader.ReadUInt32(); miscFlags2 = reader.ReadUInt32(); }
private void SignalReader(BinaryReaderExt reader) { reader.ReadInt32(); // AID reader.ReadInt32(); // RID reader.ReadSingle(); // PosTime reader.ReadSingle(); // Dist reader.ReadInt32(); // DefaultState reader.ReadInt32(); // pathRID }
private void SignalControlReader(BinaryReaderExt reader) { var max = reader.ReadInt32(); // max for (var i = 0; i < max; i++) { reader.ReadInt32(); // rID } }
private void Signals4CLCtlReader(BinaryReaderExt reader) { var count = reader.ReadInt32(); // count for (var i = 0; i < count; i++) { reader.ReadInt32(); // id reader.ReadInt32(); // signalID } }
private void CrossRoadReader(BinaryReaderExt reader) { ReadRoad(reader); reader.ReadInt32(); // RID reader.ReadInt32(); // nodeIdx2 reader.ReadInt32(); // arcIdx2 reader.ReadInt32(); // nodeIdx3 reader.ReadInt32(); // arcIdx3 }
/// <summary> /// /// </summary> /// <param name="path"></param> private void OpenSEMFile(string path) { using (BinaryReaderExt r = new BinaryReaderExt(new FileStream(path, FileMode.Open))) { r.BigEndian = true; r.Seek(8); var entryCount = r.ReadInt32(); var offsetTableStart = r.Position + (entryCount + 1) * 4; for (uint i = 0; i < entryCount; i++) { SEMEntry e = new SEMEntry(); e.Index = (int)i; Entries.Add(e); r.Seek(0x0C + i * 4); var startIndex = r.ReadInt32(); var endIndex = r.ReadInt32(); HashSet <int> UniqueEntries = new HashSet <int>(); int largestEntry = 0; for (uint j = 0; j < endIndex - startIndex; j++) { SEMSound s = new SEMSound(); s.Index = (int)j; r.Seek((uint)(offsetTableStart + startIndex * 4 + j * 4)); var dataOffsetStart = r.ReadUInt32(); var dataOffsetEnd = r.ReadUInt32(); if (dataOffsetEnd == 0) { dataOffsetEnd = (uint)r.Length; } r.Seek(dataOffsetStart); s.CommandData = r.ReadBytes((int)(dataOffsetEnd - dataOffsetStart)); e.Sounds.Add(s); var entryId = ((s.CommandData[1] & 0xFF) << 16) | ((s.CommandData[2] & 0xFF) << 8) | ((s.CommandData[3] & 0xFF)); if (!UniqueEntries.Contains(entryId)) { UniqueEntries.Add(entryId); } } e.UniqueCount = UniqueEntries.Count; //e.UniqueCount = largestEntry; } } }
public void Read(BinaryReaderExt reader) { dwSize = reader.ReadUInt32(); dwFlags = (DDPF)reader.ReadInt32(); dwFourCC = reader.ReadInt32(); dwRGBBitCount = reader.ReadUInt32(); dwRBitMask = reader.ReadUInt32(); dwGBitMask = reader.ReadUInt32(); dwBBitMask = reader.ReadUInt32(); dwABitMask = reader.ReadUInt32(); }
/// <summary> /// Reads the texture from NTX /// </summary> /// <param name="reader">The reader.</param> public void Read(BinaryReaderExt reader) { TextureName = reader.ReadAsciiStatic(64); var textureSize = reader.ReadInt32(); #if DEBUG Unknown = reader.ReadInt32(); #else reader.ReadInt32(); #endif Texture = reader.ReadBytes(textureSize); }
/// <summary> /// /// </summary> /// <param name="filePath"></param> public void Open(string name, Stream s) { Name = name; using (BinaryReaderExt r = new BinaryReaderExt(s)) { r.BigEndian = true; var headerLength = r.ReadInt32() + 0x10; var dataOff = r.ReadInt32(); var soundCount = r.ReadInt32(); StartIndex = r.ReadInt32(); Sounds = new DSP[soundCount]; for (int i = 0; i < soundCount; i++) { var sound = new DSP(); var ChannelCount = r.ReadInt32(); sound.Frequency = r.ReadInt32(); sound.Channels.Clear(); for (int j = 0; j < ChannelCount; j++) { var channel = new DSPChannel(); channel.LoopFlag = r.ReadInt16(); channel.Format = r.ReadInt16(); var LoopStartOffset = r.ReadInt32(); var LoopEndOffset = r.ReadInt32(); var CurrentAddress = r.ReadInt32(); for (int k = 0; k < 0x10; k++) { channel.COEF[k] = r.ReadInt16(); } channel.Gain = r.ReadInt16(); channel.InitialPredictorScale = r.ReadInt16(); channel.InitialSampleHistory1 = r.ReadInt16(); channel.InitialSampleHistory2 = r.ReadInt16(); channel.LoopPredictorScale = r.ReadInt16(); channel.LoopSampleHistory1 = r.ReadInt16(); channel.LoopSampleHistory2 = r.ReadInt16(); r.ReadInt16(); // padding channel.NibbleCount = LoopEndOffset - CurrentAddress; channel.LoopStart = LoopStartOffset - CurrentAddress; sound.Channels.Add(channel); var DataOffset = headerLength + (int)Math.Ceiling(CurrentAddress / 2d) - 1; channel.Data = r.GetSection((uint)DataOffset, (int)Math.Ceiling(channel.NibbleCount / 2d) + 1); } Sounds[i] = sound; } } }
/// <summary> /// Melee's sound format /// </summary> /// <param name="filePath"></param> private void OpenSSM(string filePath) { using (BinaryReaderExt r = new BinaryReaderExt(new FileStream(filePath, FileMode.Open))) { r.BigEndian = true; var headerLength = r.ReadInt32() + 0x10; var dataOff = r.ReadInt32(); var soundCount = r.ReadInt32(); Unknown = r.ReadInt32(); for (int i = 0; i < soundCount; i++) { var sound = new DSP(); sound.Index = i; var ChannelCount = r.ReadInt32(); sound.Frequency = r.ReadInt32(); sound.Channels.Clear(); for (int j = 0; j < ChannelCount; j++) { var channel = new DSPChannel(); channel.LoopFlag = r.ReadInt16(); channel.Format = r.ReadInt16(); var LoopStartOffset = r.ReadInt32(); var LoopEndOffset = r.ReadInt32(); var CurrentAddress = r.ReadInt32(); for (int k = 0; k < 0x10; k++) { channel.COEF[k] = r.ReadInt16(); } channel.Gain = r.ReadInt16(); channel.InitialPredictorScale = r.ReadInt16(); channel.InitialSampleHistory1 = r.ReadInt16(); channel.InitialSampleHistory2 = r.ReadInt16(); channel.LoopPredictorScale = r.ReadInt16(); channel.LoopSampleHistory1 = r.ReadInt16(); channel.LoopSampleHistory2 = r.ReadInt16(); r.ReadInt16(); // padding channel.NibbleCount = LoopEndOffset - CurrentAddress; channel.LoopStart = LoopStartOffset - CurrentAddress; sound.Channels.Add(channel); var DataOffset = headerLength + (int)Math.Ceiling(CurrentAddress / 2d) - 1; channel.Data = r.GetSection((uint)DataOffset, (int)Math.Ceiling(channel.NibbleCount / 2d) + 1); } Sounds.Add(sound); } } }
public override void Read(BinaryReaderExt r) { base.Read(r); r.Skip(1); ID = r.ReadInt32(); r.Skip(1); Type = r.ReadInt32(); X = r.ReadSingle(); Y = r.ReadSingle(); Z = r.ReadSingle(); r.Skip(0x10); }
private void CrossSignalReader(BinaryReaderExt reader) { reader.ReadInt32(); // step1 aka AID reader.ReadInt32(); // v11 aka RID var roadSize = reader.ReadInt32(); // roadSize for (var i = 0; i < roadSize; i++) { var signalSize = reader.ReadInt32(); for (var j = 0; j < signalSize; j++) { reader.ReadInt32(); // RID } } }
private void TimeKeyDataReader(BinaryReaderExt reader) { reader.ReadInt32(); // id var keySize = reader.ReadInt32(); // keySize for (var i = 0; i < keySize; i++) { reader.ReadSingle(); // time0 reader.ReadVector3(); // pos reader.ReadVector3(); // right reader.ReadVector3(); // dir reader.ReadVector3(); // normal reader.ReadVector4(); // quat } }
private void Path4SReader(BinaryReaderExt reader) { reader.ReadInt32(); // AID reader.ReadInt32(); // RID reader.ReadSingle(); // delta var size = reader.ReadInt32(); // size for (var i = 0; i < size; i++) { reader.ReadSingle(); // f reader.ReadSingle(); // f reader.ReadSingle(); // f } //LoadPathIndex(&this->m_Input, this->m_pTCS); }
public override void Read(BinaryReaderExt r) { base.Read(r); r.Skip(0x2); //x01 01 int spawnCount = r.ReadInt32(); for (int i = 0; i < spawnCount; i++) { r.Skip(1); var shape = new LVDShape(); shape.Read(r); Spawns.Add(shape); } r.Skip(0x2); //x01 01 int zoneCount = r.ReadInt32(); for (int i = 0; i < zoneCount; i++) { r.Skip(1); var shape = new LVDShape(); shape.Read(r); Zones.Add(shape); } r.Skip(0x2); //x01 01 Unknown1 = r.ReadInt32(); //Only seen as 0 r.Skip(1); //x01 ID = r.ReadInt32(); r.Skip(1); //x01 int spawnIdCount = r.ReadInt32(); for (int i = 0; i < spawnIdCount; i++) { r.Skip(1); SpawnIDs.Add(r.ReadInt32()); } r.Skip(1); //x01 Unknown2 = r.ReadInt32(); //Only seen as 0 r.Skip(1); //x01 int zoneIdCount = r.ReadInt32(); for (int i = 0; i < zoneIdCount; i++) { r.Skip(1); ZoneIDs.Add(r.ReadInt32()); } }
public override void Read(BinaryReaderExt r) { base.Read(r); r.ReadByte(); Vector1 = new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); r.ReadByte(); Vector2 = new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); r.ReadByte(); int vec3Count = r.ReadInt32(); for (int i = 0; i < vec3Count; i++) { r.ReadByte(); Vectors.Add(new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle())); } r.ReadByte(); Mat4x4_1 = new float[16]; for (int i = 0; i < 16; i++) { Mat4x4_1[i] = r.ReadSingle(); } r.ReadByte(); Mat4x4_2 = new float[16]; for (int i = 0; i < 16; i++) { Mat4x4_2[i] = r.ReadSingle(); } }
public void CheckInLobbyAnswerTest() { var packet = new CheckInLobbyAnswerPacket(); var bytes = packet.GetBytes(); using (var ms = new MemoryStream(bytes)) { using (var bs = new BinaryReaderExt(ms)) { var result = bs.ReadInt32(); Assert.AreEqual(packet.Result, result); var permission = bs.ReadInt32(); Assert.AreEqual(packet.Permission, permission); } } }
public override void Read(BinaryReaderExt r) { base.Read(r); ID = r.ReadInt32(); r.Skip(1); Name = r.ReadString(0x40); X = r.ReadSingle(); Y = r.ReadSingle(); Z = r.ReadSingle(); W = r.ReadSingle(); Unknown1 = r.ReadInt32(); Unknown2 = r.ReadInt32(); }
public void Read(BinaryReaderExt reader) { reader.ReadChars(4); dwSize = reader.ReadUInt32(); dwFlags = (DDSD)reader.ReadUInt32(); dwHeight = reader.ReadInt32(); dwWidth = reader.ReadInt32(); dwPitchOrLinearSize = reader.ReadInt32(); dwDepth = reader.ReadInt32(); dwMipMapCount = reader.ReadInt32(); dwReserved1 = new uint[11]; for (int i = 0; i < 11; i++) { dwReserved1[i] = reader.ReadUInt32(); } ddspf.Read(reader); dwCaps = (DDSCAPS)reader.ReadInt32(); dwCaps2 = (DDSCAPS2)reader.ReadInt32(); dwCaps3 = reader.ReadUInt32(); dwCaps4 = reader.ReadUInt32(); dwReserved2 = reader.ReadUInt32(); if (ddspf.dwFlags.HasFlag(DDPF.FOURCC) && ddspf.dwFourCC == 0x30315844) { DXT10Header.Read(reader); } }
public override void Read(BinaryReaderExt r) { base.Read(r); r.Skip(1); ID = r.ReadInt32(); Shape = new LVDShape(); Shape.Read(r); }
public override void Read(BinaryReaderExt r) { base.Read(r); r.Skip(1); ID = r.ReadInt32(); r.Skip(1); r.Skip(1); int sectionCount = r.ReadInt32(); for (int i = 0; i < sectionCount; i++) { r.Skip(1); var shape = new LVDShape(); shape.Read(r); Sections.Add(shape); } }
public override void Read(BinaryReaderExt r) { base.Read(r); r.Skip(1); Position.X = r.ReadSingle(); Position.Y = r.ReadSingle(); Angle = r.ReadSingle(); LineIndex = r.ReadInt32(); }
public void Read(BinaryReaderExt r) { r.ReadByte(); Type = (LVDShapeType)r.ReadInt32(); X = r.ReadSingle(); Y = r.ReadSingle(); Z = r.ReadSingle(); W = r.ReadSingle(); r.ReadByte(); r.ReadByte(); int pointCount = r.ReadInt32(); for (int i = 0; i < pointCount; i++) { r.Skip(1); Points.Add(new LVDVector2(r.ReadSingle(), r.ReadSingle())); } }
private void ReadNdNode(BinaryReaderExt reader) { var id = reader.ReadInt32(); // Id var x = reader.ReadSingle(); // Pos var y = reader.ReadSingle(); // PosXYZ var z = reader.ReadSingle(); // PosRGB var pathSize = reader.ReadInt32(); // PathSize var arcSize = reader.ReadInt32(); // ArcSize //if ( v6 >= 20061102 ) var eType = 0; if (FileVersion >= 20061102) { eType = reader.ReadInt32(); // eType? } Nodes.Add(new NdNode { Position = new Vector3(x, y, z), Type = eType }); }