protected HomeOptional1(HomeGameDataFormat format, ushort size) { Data = new byte[size + HeaderBias]; Offset = HeaderBias; Data[0] = (byte)format; WriteUInt16LittleEndian(Data.AsSpan(1, 2), size); }
protected HomeOptional1(HomeGameDataFormat format, ushort size, byte[] data, int offset = 0) { // Sanity check input format value with backing data value. if ((HomeGameDataFormat)data[offset] != format) { throw new ArgumentOutOfRangeException(nameof(format), format, $"Invalid {nameof(HomeGameDataFormat)} for {format}"); } // Sanity check input structure size with backing data value. var length = ReadUInt16LittleEndian(data.AsSpan(offset + 1)); if (length != size) { throw new ArgumentOutOfRangeException(nameof(size), length, $"Invalid structure size for {format}"); } Data = data; Offset = HeaderBias + offset; }