Exemple #1
0
        public static byte[] RecreateTagWithNewTagSize(byte[] raw, int newSize)
        {
            Debug.Assert(HasTagV2(raw));
            Debug.Assert(TagSize(raw) <= newSize);

            HeaderV2 header = new HeaderV2();

            using (Reader reader = new Reader(raw))
            {
                header.Read(reader);
            }

            int oldSize = header.TotalSize;

            header.Size = newSize - header.HeaderSize;

            byte[] result = null;

            using (Writer writer = new Writer(raw))
            {
                header.Write(writer);
                writer.Seek(0, SeekOrigin.End);

                for (int i = 0; i < (newSize - oldSize); ++i)
                {
                    writer.WriteByte(0);
                }

                result = writer.OutData;
            }

            CheckTagSizeV2(result);

            return(result);
        }
Exemple #2
0
        public static int TagSizeV2(FileInfo file)
        {
            if (VirtualDrive.ExistsFile(file.FullName) && HasTagV2(file))
            {
                HeaderV2 header = new HeaderV2();
                using (Reader reader = new Reader(file))
                {
                    header.Read(reader);
                }
                return(header.TotalSize);
            }

            return(0);
        }
Exemple #3
0
        public static int TagSize(byte[] raw)
        {
            if (HasTagV2(raw))
            {
                HeaderV2 header = new HeaderV2();
                using (Reader reader = new Reader(raw))
                {
                    header.Read(reader);
                }

                return(header.TotalSize);
            }
            else if (HasTagV2(raw))
            {
                return(HeaderV1.totalSize);
            }

            return(0);
        }
Exemple #4
0
 private void ReadHeaderV2(BinaryReader br)
 {
     header2               = new HeaderV2();
     header2.signature     = new string(br.ReadChars(4));
     header2.version       = br.ReadUInt32();
     header2.width         = br.ReadUInt32();
     header2.height        = br.ReadUInt32();
     header2.depth         = br.ReadUInt32();
     header2.faces         = br.ReadUInt32();
     header2.mipCount      = br.ReadUInt32();
     header2.format        = br.ReadUInt32();
     header2.containsSizes = br.ReadUInt32();
     header2.unk1          = br.ReadUInt32();
     header2.unk2          = new UInt32[] { br.ReadUInt32(), br.ReadUInt32(), br.ReadUInt32() };
     header2.unk3          = br.ReadUInt32();
     UInt32[] sizes = new UInt32[14];
     for (int s = 0; s < sizes.Length; s++)
     {
         sizes[s] = br.ReadUInt32();
     }
     header2.sizes = sizes;
 }
Exemple #5
0
 public void ReadHeaderV2()
 {
     log.Debug("Reading ABF Header (v2)");
     br.BaseStream.Seek(0, SeekOrigin.Begin);
     headerV2 = new HeaderV2();
     headerV2.fFileSignature     = FileReadString(-1, 4);        //4s;
     headerV2.fFileVersionNumber = FileReadBytes(-1, 4);         //4b;
     headerV2.uFileInfoSize      = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.lActualEpisodes    = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.uFileStartDate     = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.uFileStartTimeMS   = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.uStopwatchTime     = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.nFileType          = FileReadUnsignedShort(-1, 1); //H;
     headerV2.nDataFormat        = FileReadUnsignedShort(-1, 1); //H;
     headerV2.nSimultaneousScan  = FileReadUnsignedShort(-1, 1); //H;
     headerV2.nCRCEnable         = FileReadUnsignedShort(-1, 1); //H;
     headerV2.uFileCRC           = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.uFileGUID          = FileReadBytes(-1, 16);        //16B;
     headerV2.uCreatorVersion    = FileReadBytes(-1, 4);         //4B;
     headerV2.uCreatorNameIndex  = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.uModifierVersion   = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.uModifierNameIndex = FileReadUnsignedInt(-1, 1);   //I;
     headerV2.uProtocolPathIndex = FileReadUnsignedInt(-1, 1);   //I;
 }