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); } }
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)); }