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