Esempio n. 1
0
 private void ReadNames(MemoryTributary fs)
 {
     DebugOutput.PrintLn("Reading Names...");
     fs.Seek(NameOffset, SeekOrigin.Begin);
     Names = new List<string>();
     for (int i = 0; i < NameCount; i++)
     {
         int len = fs.ReadValueS32();
         string s = "";
         if (len > 0)
         {
             s = fs.ReadString((uint)(len - 1));
             fs.Seek(9, SeekOrigin.Current);
         }
         else
         {
             len *= -1;
             for (int j = 0; j < len - 1; j++)
             {
                 s += (char)fs.ReadByte();
                 fs.ReadByte();
             }
             fs.Seek(10, SeekOrigin.Current);
         }
         Names.Add(s);
     }
 }
Esempio n. 2
0
            private void SaveBlockDataToBuffer(ref BinaryWriter DataBufferStream, MemoryTributary pBlockDataStream, UInt32 PageSize = 512)
            {
                UInt32 BlockDataSize = (UInt32)pBlockDataStream.Length;

                if (PageSize < BlockDataSize)
                    PageSize = BlockDataSize;

                stBlockHeader CurBlockHeader = new stBlockHeader();

                CurBlockHeader.EOL_0D = 0xd;
                CurBlockHeader.EOL_0A = 0xa;
                CurBlockHeader.EOL2_0D = 0xd;
                CurBlockHeader.EOL2_0A = 0xa;

                CurBlockHeader.data_size_hex = _intTo_BytesChar(BlockDataSize);
                CurBlockHeader.page_size_hex = _intTo_BytesChar(PageSize);
                CurBlockHeader.next_page_addr_hex = _intTo_BytesChar(0x7fffffff);

                CurBlockHeader.space1 = 0x20;
                CurBlockHeader.space2 = 0x20;
                CurBlockHeader.space3 = 0x20;

                DataBufferStream.BaseStream.Position = 0;
                DataBufferStream.Write(CurBlockHeader.ToBytes());

                pBlockDataStream.Position = 0;
                for (int i = 0; i < pBlockDataStream.Length; i++)
                {
                    DataBufferStream.Write(Convert.ToByte(pBlockDataStream.ReadByte()));
                }

                DataBufferStream.BaseStream.SetLength(DataBufferStream.BaseStream.Length + (PageSize - BlockDataSize));
            }