public static SMDH Read(Stream s)
{
if (!s.CanSeek)
{
throw new ArgumentException("Stream can't Seek", nameof(s));
}
var smdh = new SMDH(true);
using (var br = new BinaryReader(s, Encoding.ASCII, true))
{
var flag = br.ReadUInt32() == BitConverter.ToUInt32(MAGIC, 0);
if (!flag)
{
throw new InvalidDataException("Not a SMDH File");
}
smdh.Version = br.ReadInt16();
smdh.Reserved_1 = br.ReadInt16();
smdh.AppTitles = new AppTitle[16];
for (int i = 0; i < 16; i++)
{
smdh.AppTitles[i] = AppTitle.Read(s);
}
smdh.Settings = AppSettings.Read(s);
smdh.Reserved_2 = br.ReadInt64();
smdh.SmallIcon.Read(s);
smdh.LargeIcon.Read(s);
}
return(smdh);
}