public void ReadBFG(string FilePath) { FileName = FilePath; BigEndianReader Reader = new BigEndianReader(new MemoryStream(File.ReadAllBytes(FilePath))); BFG.Entries = new List <Entry>(); BFG.Unknown1 = Reader.ReadUInt32(); BFG.Unknown2 = Reader.ReadSingle(); for (int i = 0; i < 3; i++) { BFG.Entries.Add(new Entry() { Distance = Reader.ReadSingle(), RGBA = Reader.ReadUInt32(), Unknown1 = Reader.ReadUInt16(), Unknown2 = Reader.ReadUInt16(), Float1B = Reader.ReadSingle(), Unknown3 = Reader.ReadUInt32(), Unknown4 = Reader.ReadUInt32(), Padding = Reader.ReadUInt32(), }); } BFG.Float4A = Reader.ReadSingle(); BFG.Bytes4A = Reader.ReadUInt32(); BFG.Unknown4A = Reader.ReadUInt16(); BFG.Unknown4B = Reader.ReadUInt16(); BFG.Float4B = Reader.ReadSingle(); BFG.Unknown4C = Reader.ReadUInt32(); bfgComponent1.AddData(BFG); this.Show(); Reader.Close(); }
private void ImportLOBJ_Click(object sender, EventArgs e) { OpenFileDialog o = new OpenFileDialog(); o.Filter = "Binary Light Object (*blobj)|*.blobj"; if (o.ShowDialog() == DialogResult.OK) { BigEndianReader Reader = new BigEndianReader(new MemoryStream(File.ReadAllBytes(o.FileName))); LOBJ.Magic = Encoding.ASCII.GetString(Reader.ReadBytes(0x04)); if (LOBJ.Magic != "LOBJ") { throw new WrongMagicException(LOBJ.Magic, "LOBJ", Reader.BaseStream.Position - 4); } LOBJ.SectionSize = Reader.ReadUInt32(); if (LOBJ.SectionSize != 0x50) { MessageBox.Show("Please give this file to Wexos!"); } LOBJ.Unknown1 = Reader.ReadUInt64(); LOBJ.Unknown2 = Reader.ReadUInt16(); LOBJ.LightType = Reader.ReadByte(); LOBJ.Unknown3 = Reader.ReadByte(); LOBJ.LightID = Reader.ReadUInt16(); LOBJ.Unknown4 = Reader.ReadUInt16(); LOBJ.OriginVector = Reader.ReadSingles(3); LOBJ.DestinationVector = Reader.ReadSingles(3); LOBJ.Scale = Reader.ReadSingle(); LOBJ.RGBA = Reader.ReadBytes(4); LOBJ.Unknown5 = Reader.ReadUInt32(); LOBJ.Unknown6 = Reader.ReadSingle(); LOBJ.Unknown7 = Reader.ReadSingle(); LOBJ.Unknown8 = Reader.ReadSingle(); LOBJ.Padding = Reader.ReadUInt64(); Reader.Close(); dgwLOBJ.Rows.Add(HexUtil.Hex8(Convert.ToByte(dgwLOBJ.Rows.Count)), HexUtil.Hex8(LOBJ.LightType), HexUtil.Hex8(LOBJ.Unknown3), LOBJ.OriginVector[0], LOBJ.OriginVector[1], LOBJ.OriginVector[2], LOBJ.DestinationVector[0], LOBJ.DestinationVector[1], LOBJ.DestinationVector[2], LOBJ.Scale, LOBJ.Unknown6, LOBJ.Unknown7, LOBJ.Unknown8, HexUtil.Hex16(LOBJ.LightID), HexUtil.Hex16(LOBJ.Unknown4), HexUtil.Hex32(LOBJ.Unknown5), HexUtil.Hex8(LOBJ.RGBA[0]), HexUtil.Hex8(LOBJ.RGBA[1]), HexUtil.Hex8(LOBJ.RGBA[2]), HexUtil.Hex8(LOBJ.RGBA[3]), HexUtil.Hex64(LOBJ.Unknown1), HexUtil.Hex16(LOBJ.Unknown2), HexUtil.Hex64(LOBJ.Padding)); } }
public void ReadBLIGHT(string FilePath) { FileName = FilePath; BigEndianReader Reader = new BigEndianReader(new MemoryStream(File.ReadAllBytes(FilePath))); BLIGHT.Magic = Encoding.ASCII.GetString(Reader.ReadBytes(0x04)); if (BLIGHT.Magic != "LGHT") { throw new WrongMagicException(BLIGHT.Magic, "LGHT", Reader.BaseStream.Position - 4); } BLIGHT.FileSize = Reader.ReadUInt32(); BLIGHT.Unknown1 = Reader.ReadUInt32(); BLIGHT.Unknown2 = Reader.ReadUInt32(); BLIGHT.NrLOBJ = Reader.ReadUInt16(); BLIGHT.NrAmbientLight = Reader.ReadUInt16(); BLIGHT.Unknown3 = Reader.ReadUInt32(); BLIGHT.Padding = Reader.ReadUInt64(); BLIGHT.Padding2 = Reader.ReadUInt64(); for (int i = 0; i < BLIGHT.NrLOBJ; i++) { LOBJ.Magic = Encoding.ASCII.GetString(Reader.ReadBytes(0x04)); if (LOBJ.Magic != "LOBJ") { throw new WrongMagicException(LOBJ.Magic, "LOBJ", Reader.BaseStream.Position - 4); } LOBJ.SectionSize = Reader.ReadUInt32(); if (LOBJ.SectionSize != 0x50) { MessageBox.Show("Please give this file to Wexos!"); } LOBJ.Unknown1 = Reader.ReadUInt64(); LOBJ.Unknown2 = Reader.ReadUInt16(); LOBJ.LightType = Reader.ReadByte(); LOBJ.Unknown3 = Reader.ReadByte(); LOBJ.LightID = Reader.ReadUInt16(); LOBJ.Unknown4 = Reader.ReadUInt16(); LOBJ.OriginVector = Reader.ReadSingles(3); LOBJ.DestinationVector = Reader.ReadSingles(3); LOBJ.Scale = Reader.ReadSingle(); LOBJ.RGBA = Reader.ReadBytes(4); LOBJ.Unknown5 = Reader.ReadUInt32(); LOBJ.Unknown6 = Reader.ReadSingle(); LOBJ.Unknown7 = Reader.ReadSingle(); LOBJ.Unknown8 = Reader.ReadSingle(); LOBJ.Padding = Reader.ReadUInt64(); dgwLOBJ.Rows.Add(HexUtil.Hex8(Convert.ToByte(i)), HexUtil.Hex8(LOBJ.LightType), HexUtil.Hex8(LOBJ.Unknown3), LOBJ.OriginVector[0], LOBJ.OriginVector[1], LOBJ.OriginVector[2], LOBJ.DestinationVector[0], LOBJ.DestinationVector[1], LOBJ.DestinationVector[2], LOBJ.Scale, LOBJ.Unknown6, LOBJ.Unknown7, LOBJ.Unknown8, HexUtil.Hex16(LOBJ.LightID), HexUtil.Hex16(LOBJ.Unknown4), HexUtil.Hex32(LOBJ.Unknown5), HexUtil.Hex8(LOBJ.RGBA[0]), HexUtil.Hex8(LOBJ.RGBA[1]), HexUtil.Hex8(LOBJ.RGBA[2]), HexUtil.Hex8(LOBJ.RGBA[3]), HexUtil.Hex64(LOBJ.Unknown1), HexUtil.Hex16(LOBJ.Unknown2), HexUtil.Hex64(LOBJ.Padding)); } for (int i = 0; i < BLIGHT.NrAmbientLight; i++) { Ambient.RGBALight = Reader.ReadBytes(4); Ambient.Padding = Reader.ReadUInt32(); dgwAmbient.Rows.Add(HexUtil.Hex8(Convert.ToByte(i)), HexUtil.Hex8(Ambient.RGBALight[0]), HexUtil.Hex8(Ambient.RGBALight[1]), HexUtil.Hex8(Ambient.RGBALight[2]), HexUtil.Hex8(Ambient.RGBALight[3]), HexUtil.Hex32(Ambient.Padding)); } LOBJColor.BackColor = Color.FromArgb(byte.Parse(dgwLOBJ.Rows[0].Cells[16].Value.ToString(), NumberStyles.HexNumber), byte.Parse(dgwLOBJ.Rows[0].Cells[17].Value.ToString(), NumberStyles.HexNumber), byte.Parse(dgwLOBJ.Rows[0].Cells[18].Value.ToString(), NumberStyles.HexNumber)); AmbientColor.BackColor = Color.FromArgb(byte.Parse(dgwAmbient.Rows[0].Cells[1].Value.ToString(), NumberStyles.HexNumber), byte.Parse(dgwAmbient.Rows[0].Cells[2].Value.ToString(), NumberStyles.HexNumber), byte.Parse(dgwAmbient.Rows[0].Cells[3].Value.ToString(), NumberStyles.HexNumber)); this.Show(); Reader.Close(); }
public Section3(BigEndianReader Reader) { NameOffset = Reader.ReadUInt16(); Alpha = Reader.ReadUInt16(); Animation = Reader.ReadUInt16(); Padding = Reader.ReadUInt16(); Delay = Reader.ReadSingle(); TranslationWS = Reader.ReadSingles(3); ScaleWS = Reader.ReadSingles(2); Translation = Reader.ReadSingles(3); Scale = Reader.ReadSingles(2); Section4ID = Reader.ReadUInt16(); NrSection4 = Reader.ReadUInt16(); Section5ID = Reader.ReadUInt16(); NrSection5 = Reader.ReadUInt16(); }
private void ImportLTEX_Click(object sender, EventArgs e) { OpenFileDialog o = new OpenFileDialog(); o.Filter = "Binary Light Texture (*bltex)|*.bltex"; if (o.ShowDialog() == DialogResult.OK) { BigEndianReader Reader = new BigEndianReader(new MemoryStream(File.ReadAllBytes(o.FileName))); BLMAPLTEX LTEX = new BLMAPLTEX(); LTEX.Magic = Reader.ReadASCII(4); if (LTEX.Magic != "LTEX") { throw new WrongMagicException(LTEX.Magic, "LTEX", Reader.BaseStream.Position - 4); } LTEX.SectionSize = Reader.ReadUInt32(); LTEX.Padding = Reader.ReadUInt32(); LTEX.Unknown = Reader.ReadUInt32(); LTEX.NrEntries = Reader.ReadUInt16(); LTEX.Unknown1 = Reader.ReadUInt16(); LTEX.Texture = Reader.ReadASCII(4); LTEX.Unknown2 = Reader.ReadUInt32(); LTEX.Unknown3 = Reader.ReadUInt32(); LTEX.Unknown4 = Reader.ReadUInt32(); LTEX.Unknown5 = Reader.ReadUInt32(); LTEX.Unknown6 = Reader.ReadUInt32(); LTEX.Unknown7 = Reader.ReadUInt32(); LTEX.Unknown8 = Reader.ReadUInt32(); LTEX.Unknown9 = Reader.ReadUInt32(); LTEX.EntriesSize = Reader.ReadUInt32(); LTEX.Entries = new List <Entry>(); for (int j = 0; j < LTEX.NrEntries; j++) { LTEX.Entries.Add(new Entry() { Unknown1 = Reader.ReadSingle(), Unknown2 = Reader.ReadUInt32() }); } listLTEX.Add(LTEX); treeView1.Nodes[0].Nodes[1].Nodes.Add("LTEX " + HexUtil.ConvertToHex(treeView1.Nodes[0].Nodes[1].Nodes.Count)); treeView1.Nodes[0].Nodes[1].Nodes[treeView1.Nodes[0].Nodes[1].Nodes.Count - 1].ContextMenuStrip = cmsDelete; Reader.Close(); } }
public void ReadBBLM(string FilePath) { FileName = FilePath; BigEndianReader Reader = new BigEndianReader(new MemoryStream(File.ReadAllBytes(FilePath))); BBLM.Magic = Reader.ReadASCII(4); if (BBLM.Magic != "PBLM") { throw new WrongMagicException(BBLM.Magic, "PBLM", Reader.BaseStream.Position - 4); } BBLM.FileSize = Reader.ReadUInt32(); if (BBLM.FileSize != 0xA4) { MessageBox.Show("Please give this file to Wexos!"); } BBLM.Unknown1 = Reader.ReadUInt64(); BBLM.ScaleFactor = Reader.ReadSingle(); BBLM.RGB = Reader.ReadUInt32(); BBLM.blurrRGB = Reader.ReadUInt32(); BBLM.Unknown2 = Reader.ReadUInt16(); BBLM.Unknown3 = Reader.ReadUInt16(); BBLM.Entries = new List <Entry>(); for (int i = 0; i < 3; i++) { BBLM.Entries.Add(new Entry() { Unknown1 = Reader.ReadSingle(), Unknown2 = Reader.ReadSingle(), Unknown3 = Reader.ReadUInt32(), Unknown4 = Reader.ReadUInt32(), Unknown5 = Reader.ReadUInt32(), Unknown6 = Reader.ReadUInt32(), Unknown7 = Reader.ReadUInt32(), Unknown8 = Reader.ReadUInt32() }); } BBLM.Unknown4 = Reader.ReadUInt32(); BBLM.Unknown5 = Reader.ReadUInt32(); BBLM.Unknown6 = Reader.ReadUInt32(); BBLM.Unknown7 = Reader.ReadUInt32(); BBLM.Unknown8 = Reader.ReadUInt32(); BBLM.Unknown9 = Reader.ReadUInt32(); BBLM.float1 = Reader.ReadSingle(); BBLM.float2 = Reader.ReadSingle(); BBLM.float3 = Reader.ReadSingle(); bblmComponent1.AddData(BBLM); Reader.Close(); this.Show(); }
public void ReadBLMAP(string FilePath) { FileName = FilePath; BigEndianReader Reader = new BigEndianReader(new MemoryStream(File.ReadAllBytes(FilePath))); treeView1.Nodes[0].Nodes.Clear(); treeView1.Nodes[0].Text = Path.GetFileName(FilePath); treeView1.Nodes[0].Nodes.Add("Header"); treeView1.Nodes[0].Nodes.Add("LTEX"); listLTEX.Clear(); BLMAP.Magic = Reader.ReadASCII(4); if (BLMAP.Magic != "LMAP") { throw new WrongMagicException(BLMAP.Magic, "LMAP", Reader.BaseStream.Position - 4); } BLMAP.FileSize = Reader.ReadUInt32(); BLMAP.Unknown1 = Reader.ReadUInt32(); BLMAP.Unknown2 = Reader.ReadUInt32(); BLMAP.NrLTEX = Reader.ReadUInt16(); BLMAP.Unknown3 = Reader.ReadUInt16(); BLMAP.Unknown4 = Reader.ReadUInt32(); BLMAP.Unknown5 = Reader.ReadUInt32(); BLMAP.Unknown6 = Reader.ReadUInt32(); for (int i = 0; i < BLMAP.NrLTEX; i++) { BLMAPLTEX LTEX = new BLMAPLTEX(); long Offset = Reader.BaseStream.Position; LTEX.Magic = Reader.ReadASCII(4); if (LTEX.Magic != "LTEX") { throw new WrongMagicException(LTEX.Magic, "LTEX", Reader.BaseStream.Position - 4); } LTEX.SectionSize = Reader.ReadUInt32(); LTEX.Padding = Reader.ReadUInt32(); LTEX.Unknown = Reader.ReadUInt32(); LTEX.NrEntries = Reader.ReadUInt16(); LTEX.Unknown1 = Reader.ReadUInt16(); LTEX.Texture = Reader.ReadASCII(4); LTEX.Unknown2 = Reader.ReadUInt32(); LTEX.Unknown3 = Reader.ReadUInt32(); LTEX.Unknown4 = Reader.ReadUInt32(); LTEX.Unknown5 = Reader.ReadUInt32(); LTEX.Unknown6 = Reader.ReadUInt32(); LTEX.Unknown7 = Reader.ReadUInt32(); LTEX.Unknown8 = Reader.ReadUInt32(); LTEX.Unknown9 = Reader.ReadUInt32(); LTEX.EntriesSize = Reader.ReadUInt32(); LTEX.Entries = new List <Entry>(); for (int j = 0; j < LTEX.NrEntries; j++) { LTEX.Entries.Add(new Entry() { Unknown1 = Reader.ReadSingle(), Unknown2 = Reader.ReadUInt32() }); } listLTEX.Add(LTEX); treeView1.Nodes[0].Nodes[1].Nodes.Add("LTEX " + HexUtil.ConvertToHex(i)); treeView1.Nodes[0].Nodes[1].Nodes[treeView1.Nodes[0].Nodes[1].Nodes.Count - 1].ContextMenuStrip = cmsDelete; Reader.BaseStream.Position = Offset + LTEX.SectionSize; } Reader.Close(); lmapComponent1.AddData(BLMAP); if (BLMAP.NrLTEX >= 1) { ltexComponent1.AddData(listLTEX[0]); AddLTEX(listLTEX[0].Entries); } else { SelectedNode = -1; } this.Show(); }
public Section2(BigEndianReader Reader) { NameOffsets = Reader.ReadUInt16s(4); Unknown = Reader.ReadSingle(); }
public List<TableRow> DeserializeUTFChunk(byte[] chunk) { m_chunk = chunk; if (!Binary.AsciiEqual (m_chunk, 0, "@UTF")) throw new InvalidFormatException(); var chunk_length = BigEndian.ToInt32 (m_chunk, 4); using (var mem = new MemoryStream (m_chunk, 8, chunk_length)) using (var input = new BigEndianReader (mem)) { int rows_offset = input.ReadInt32(); int strings_offset = input.ReadInt32() + 8; int data_offset = input.ReadInt32() + 8; input.Skip (4); int column_count = input.ReadInt16(); int row_length = input.ReadInt16(); int row_count = input.ReadInt32(); var columns = new List<Column> (column_count); for (int i = 0; i < column_count; ++i) { byte flags = input.ReadByte(); if (0 == flags) { input.Skip (3); flags = input.ReadByte(); } int name_offset = strings_offset + input.ReadInt32(); var column = new Column { Flags = (TableFlags)flags, Name = ReadString (name_offset), }; columns.Add (column); } var table = new List<TableRow> (row_count); int next_offset = rows_offset; for (int i = 0; i < row_count; ++i) { input.Position = next_offset; next_offset += row_length; var row = new TableRow (column_count); table.Add (row); foreach (var column in columns) { var storage = column.Flags & TableFlags.StorageMask; if (TableFlags.StorageNone == storage || TableFlags.StorageZero == storage || TableFlags.StorageConstant == storage) continue; switch (column.Flags & TableFlags.TypeMask) { case TableFlags.TypeByte: row[column.Name] = (int)input.ReadByte(); break; case TableFlags.TypeSByte: row[column.Name] = (int)input.ReadSByte(); break; case TableFlags.TypeUInt16: row[column.Name] = (int)input.ReadUInt16(); break; case TableFlags.TypeInt16: row[column.Name] = (int)input.ReadInt16(); break; case TableFlags.TypeUInt32: case TableFlags.TypeInt32: row[column.Name] = input.ReadInt32(); break; case TableFlags.TypeUInt64: case TableFlags.TypeInt64: row[column.Name] = input.ReadInt64(); break; case TableFlags.TypeFloat32: row[column.Name] = input.ReadSingle(); break; case TableFlags.TypeString: { int offset = strings_offset + input.ReadInt32(); row[column.Name] = ReadString (offset); break; } case TableFlags.TypeData: { int offset = data_offset + input.ReadInt32(); int length = input.ReadInt32(); row[column.Name] = m_chunk.Skip (offset).Take (length).ToArray(); break; } default: throw new NotSupportedException(); } } } return table; } }
public NbtTag Read(NbtTagType type) { int length; switch (type) { case NbtTagType.End: return(null); case NbtTagType.Byte: return(NbtTag.Create(_reader.ReadByte())); case NbtTagType.Short: return(NbtTag.Create(_reader.ReadInt16())); case NbtTagType.Int: return(NbtTag.Create(_reader.ReadInt32())); case NbtTagType.Long: return(NbtTag.Create(_reader.ReadInt64())); case NbtTagType.Float: return(NbtTag.Create(_reader.ReadSingle())); case NbtTagType.Double: return(NbtTag.Create(_reader.ReadDouble())); case NbtTagType.ByteArray: length = _reader.ReadInt32(); return(NbtTag.Create(_reader.ReadBytes(length))); case NbtTagType.String: length = _reader.ReadInt16(); byte[] array = _reader.ReadBytes(length); return(NbtTag.Create(Encoding.UTF8.GetString(array))); case NbtTagType.List: NbtTagType listType = (NbtTagType)_reader.ReadByte(); if (listType < NbtTagType.End || listType > NbtTagType.Compound) { throw new FormatException("'" + (int)type + "' is not a valid ListType."); } int count = _reader.ReadInt32(); NbtTag list = NbtTag.CreateList(listType); for (int i = 0; i < count; i++) { list.Add(Read(listType)); } return(list); case NbtTagType.Compound: NbtTag compound = NbtTag.CreateCompound(); while (true) { string name; NbtTag item = Read(out name); if (item == null) { return(compound); } compound.Add(name, item); } case NbtTagType.IntArray: length = _reader.ReadInt32(); int[] intArray = new int[length]; for (int i = 0; i < length; i++) { intArray[i] = _reader.ReadInt32(); } return(NbtTag.Create(intArray)); default: throw new FormatException("'" + (int)type + "' is not a valid TagType."); } }
public IEnumerable GetContents() { var chars = TypeTag.ToArray(); var activeArrays = new Stack <ArrayList>(); using (var reader = new BigEndianReader(GetContentStream())) { for (int i = 1; i < chars.Length; i++) { object content; switch (chars[i]) { case Osc.TypeTag.Int32: content = reader.ReadInt32(); break; case Osc.TypeTag.Float: content = reader.ReadSingle(); break; case Osc.TypeTag.String: case Osc.TypeTag.Alternate: content = MessageParser.ReadString(reader); break; case Osc.TypeTag.Blob: content = MessageParser.ReadBlob(reader); break; case Osc.TypeTag.Int64: content = reader.ReadInt64(); break; case Osc.TypeTag.TimeTag: content = MessageParser.ReadTimeTag(reader); break; case Osc.TypeTag.Double: content = reader.ReadDouble(); break; case Osc.TypeTag.Char: content = MessageParser.ReadChar(reader); break; case Osc.TypeTag.True: content = true; break; case Osc.TypeTag.False: content = false; break; case Osc.TypeTag.Infinitum: content = float.PositiveInfinity; break; case Osc.TypeTag.ArrayBegin: activeArrays.Push(new ArrayList()); continue; case Osc.TypeTag.ArrayEnd: var array = activeArrays.Pop(); content = array.ToArray(); break; default: case Osc.TypeTag.Nil: content = null; break; } if (activeArrays.Count > 0) { var array = activeArrays.Peek(); array.Add(content); } else { yield return(content); } } } }