public virtual ImageMetaData ReadMetaData(CRioArchive arc) { uint object_pos = (uint)arc.Input.Position; arc.ReadInt32(); int x = arc.ReadUInt16(); int y = arc.ReadUInt16(); arc.ReadInt32(); uint w = arc.ReadUInt16(); uint h = arc.ReadUInt16(); int flags = arc.ReadInt32() & 0xFF; if (flags < 1 || flags > 3) { return(null); } return(new RioMetaData { OffsetX = x, OffsetY = y, Width = w, Height = h, BPP = 1 == flags ? 8 : 2 == flags ? 24 : 32, ObjectOffset = object_pos, Rip = this, }); }
public override void Deserialize(CRioArchive arc) { Version = arc.ReadInt32(); if (Version >= 2) { field_04 = arc.ReadString(); } field_08 = arc.ReadString(); field_0C = arc.ReadString(); field_14 = arc.ReadString(); field_1C = arc.ReadString(); field_18 = arc.ReadInt32(); if (0 == Version) { return; } if (Version >= 2) { field_28 = arc.ReadBytes(16); field_38 = arc.ReadInt32(); } field_3C = arc.ReadString(); field_40 = arc.ReadString(); if (Version >= 3) { field_44 = arc.ReadString(); } if (Version >= 4) { field_10 = arc.ReadString(); field_20 = arc.ReadInt32(); } if (Version >= 5) { field_24 = arc.ReadInt32(); } else if (Version >= 2) { if (field_28.ToUInt16(0) < 0x7D3) { field_24 = 2; } else { field_24 = 1; } } if (Version >= 6) { field_48 = arc.ReadString(); field_4C = arc.ReadString(); field_50 = arc.ReadString(); } }
public override void Deserialize(CRioArchive arc) { Version = arc.ReadInt32(); m_x = arc.ReadUInt16(); m_y = arc.ReadUInt16(); m_width = arc.ReadUInt16(); m_height = arc.ReadUInt16(); m_w = arc.ReadUInt16(); m_h = arc.ReadUInt16(); m_flags = arc.ReadInt32(); int size = arc.ReadInt32(); arc.ReadInt32(); // field_34 var data = arc.ReadBytes(size); m_pixels = Uncompress(data); }
void ReadRelic(CRioArchive arc) { Version = arc.ReadInt32(); if (Version >= 0x24) { field_24 = arc.ReadRioReference("CDatabaseBase"); // UnivUI field_28 = arc.ReadRioReference("CDatabaseBase"); field_10 = arc.ReadRioReference("CBoxOcean"); // rvmm field_14 = arc.ReadRioReference("CObjectOcean"); // UnivUI field_18 = arc.ReadRioReference("CObjectOcean"); // UnivUI field_0C = arc.ReadRioReference("CProcessOcean"); // Vm60 if (Version >= 0x25) { field_30 = arc.ReadRioReference("CStdb"); // UnivUI } if (Version >= 0x26) { field_2C = arc.ReadRioReference("CRio"); // UnivUI } if (Version >= 0x27) { field_1C = arc.ReadRioReference("CRio"); } if (Version >= 0x29) { field_38 = arc.ReadRioReference("CRio"); } field_34.Deserialize(arc); if (Version >= 0x28) { field_08 = arc.ReadRioReference("CRio"); } } else if (Version >= 0x20) { field_0C = arc.ReadRioReference("CProcessOcean"); field_10 = arc.ReadRioReference("CBoxOcean"); field_14 = arc.ReadRioReference("CObjectOcean"); field_18 = arc.ReadRioReference("CObjectOcean"); field_1C = arc.ReadRioReference("CSoundManEx"); if (Version >= 0x23) { field_24 = arc.ReadRioReference("CDatabaseBase"); } if (Version >= 0x22) { field_28 = arc.ReadRioReference("CDatabaseBase"); } if (Version >= 0x21) { field_34.Deserialize(arc); } } else { throw new NotSupportedException(string.Format("rUGP schema {0} not supported", Version)); } }
public virtual ImageMetaData ReadMetaData(CRioArchive arc) { uint object_pos = (uint)arc.Input.Position; arc.ReadInt32(); int x = arc.ReadUInt16(); int y = arc.ReadUInt16(); uint w1 = arc.ReadUInt16(); uint h1 = arc.ReadUInt16(); uint w2 = arc.ReadUInt16(); uint h2 = arc.ReadUInt16(); int flags = arc.ReadInt32() & 0xFF; if (flags < 1 || flags > 3) { return(null); } uint width, height; if (3 == flags) { width = w2; height = h2; } else { width = w1; height = h1; } return(new RioMetaData { OffsetX = x, OffsetY = y, Width = width, Height = height, BPP = 1 == flags ? 8 : 32, ObjectOffset = object_pos, Rip = this, }); }
public override void Deserialize(CRioArchive arc) { Version = arc.ReadInt32(); m_width = arc.ReadUInt16(); m_height = arc.ReadUInt16(); m_x = arc.ReadUInt16(); m_y = arc.ReadUInt16(); m_w = arc.ReadUInt16(); m_h = arc.ReadUInt16(); m_flags = arc.ReadInt32(); CompressInfo = arc.ReadBytes(7); if (arc.GetObjectSchema() >= 2) { field_4C = arc.ReadRioReference("CSbm"); } int size = arc.ReadInt32(); arc.ReadInt32(); // field_3C var data = arc.ReadBytes(size); m_pixels = Uncompress(data); Format = HasAlpha ? PixelFormats.Bgra32 : PixelFormats.Bgr32; }
public override ImageMetaData ReadMetaData(CRioArchive arc) { uint object_pos = (uint)arc.Input.Position; arc.ReadInt32(); uint w = arc.ReadUInt16(); uint h = arc.ReadUInt16(); return(new RioMetaData { Width = w, Height = h, BPP = 32, ObjectOffset = object_pos, Rip = this, }); }
public override void Deserialize(CRioArchive arc) { Version = arc.ReadInt32(); field_14 = arc.ReadInt32(); arc.ReadByte(); arc.ReadByte(); if (Version < 10) { field_1C = 0; field_20 = 0; } else { field_1C = arc.ReadInt32(); field_20 = arc.ReadInt32(); } arc.ReadInt32(); arc.ReadInt32(); arc.ReadInt32(); if (Version >= 6) { TocOffset = arc.ReadInt32(); TocSize = arc.ReadInt32(); arc.ReadInt32(); } if (Version >= 8) { field_38 = arc.ReadInt32(); } Title = arc.ReadString(); arc.ReadInt32(); arc.ReadString(); arc.ReadInt32(); arc.ReadString(); arc.ReadString(); // registry branch arc.ReadString(); arc.ReadInt32(); arc.ReadString(); field_80.Deserialize(arc); arc.ReadInt32(); if (Version >= 9) { RioFileName = arc.ReadString(); } if (Version >= 7) { arc.ReadString(); // InstallManual } if (Version >= 5) { field_98 = arc.ReadInt32(); } ArcList.Deserialize(arc); // CPtrArray::Serialize for (int i = 0; i < ArcList.Count; ++i) { var entry = ArcList[i]; if (entry != null) { entry.field_14 = field_1C; entry.field_18 = field_20; } } }
public override void Deserialize(CRioArchive arc) { Version = arc.ReadUInt16(); if (Version >= 7) { field_14 = arc.ReadInt32(); field_18 = arc.ReadInt32(); arc.ReadByte(); arc.ReadString(); } arc.ReadString(); // registry branch arc.ReadString(); // disk name arc.ReadString(); // rio filename [src] arc.ReadString(); arc.ReadString(); arc.ReadInt64(); // rio offset [=0] arc.ReadInt64(); // rio size if (Version < 6) { arc.ReadInt32(); arc.ReadInt32(); } else { arc.ReadInt32(); } RioName = arc.ReadString(); RioOffset = arc.ReadInt64(); RioSize = arc.ReadInt64(); if (Version < 6) { arc.ReadInt64(); } arc.ReadInt32(); arc.ReadString(); arc.ReadInt32(); arc.ReadInt32(); arc.ReadInt32(); arc.ReadInt32(); arc.ReadInt32(); arc.ReadString(); int count = arc.ReadCount(); arc.ReadBytes(count * 4); PrepareBuffer(); // sub_10011700 (this); arc.Read(field_D4, 0, field_D4.Length); }