private void LoadFromStream(Stream stream)
{
BinaryReader binaryReader = new BinaryReader(stream);
NibbleReader nibbleReader = new NibbleReader(binaryReader);
byte type = nibbleReader.ReadByte();
if (type != 0x40)
throw new NotImplementedException();
int size = nibbleReader.ReadByte();
size = (size << 4) | nibbleReader.ReadNibble();
if (size != 0x26C)
throw new InvalidDataException("Size is invalid.");
Title = nibbleReader.ReadString(42);
Author = new User(nibbleReader);
ColorPalette = new Palette(nibbleReader);
nibbleReader.ReadByte(); // Unknown
nibbleReader.ReadByte(); // Unknown, 0x0A
Type = (PatternType)nibbleReader.ReadByte();
nibbleReader.ReadByte(); // Unknown, 0x00
nibbleReader.ReadByte(); // Unknown, 0x00
for (int j = 0; j < Data.GetLength(1); j++)
for (int i = 0; i < Data.GetLength(0); i += 2)
{
Data[i + 1, j] = nibbleReader.ReadNibble();
Data[i, j] = nibbleReader.ReadNibble();
}
}