public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { var signature = Encoding.ASCII.GetString(reader.ReadBytes(33)); var reserved = reader.ReadBytes(2); var tag = reader.ReadByte(); var version = reader.ReadByte(); var PC = reader.ReadUInt16(); var A = reader.ReadByte(); var X = reader.ReadByte(); var Y = reader.ReadByte(); var PSW = reader.ReadByte(); var SP = reader.ReadByte(); var reserved2 = reader.ReadBytes(2); return(new { Signature = signature, Reserved = reserved, Tag = tag, Version = version, PC, A, X, Y, PSW, SP, Reserved2 = reserved2 }); } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = Offset; var tag = reader.ReadBytes(3); var version = reader.ReadBytes(2); var flags = reader.ReadByte(); var size = reader.ReadBytes(4); var length = size[0] << 21 | size[1] << 14 | size[2] << 7 | size[3]; var tags = reader.ReadBytes(length); return(new { Position = Offset, Tag = tag, Version = version, Flags = flags, Size = length }); } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = 14; var length = reader.ReadUInt32(); var width = reader.ReadInt32(); var height = reader.ReadInt32(); var planeCount = reader.ReadUInt16(); var bitsPerPixel = reader.ReadUInt16(); var compression = reader.ReadUInt32(); var dataLength = reader.ReadUInt32(); var horizontalResolution = reader.ReadUInt32(); var verticalResolution = reader.ReadUInt32(); var paletteEntryCount = reader.ReadUInt32(); var importantColors = reader.ReadUInt32(); return(new { Length = length, Width = width, Height = height, PlaneCount = planeCount, BitsPerPixel = bitsPerPixel, Compression = compression, DataLength = dataLength, HorizontalResolution = horizontalResolution, VerticalResolution = verticalResolution, PaletteEntryCount = paletteEntryCount, ImportantColors = importantColors }); } }
public override void Reload() { Nodes.Clear(); using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = 0x100 + Start; var block = 0; while (true) { var header = reader.ReadByte(); var range = header >> 4; var filter = (header >> 2) & 0x3; var loop = (header & 0x2) != 0; var end = (header & 0x1) != 0; var data = reader.ReadBytes(8); var samples = data.SelectMany(x => new int[] { SignedNibbleToInt(x >> 4), SignedNibbleToInt(x & 0xf) }).ToArray(); Nodes.Add(new SpcCompressedAudioBlock { Text = block.ToString(), Range = range, Filter = filter, Loop = loop, End = end, Samples = samples }); block++; if (end) { break; } } } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = Position; var groupID = Encoding.ASCII.GetString(reader.ReadBytes(4)); var length = reader.ReadUInt32(); var format = reader.ReadUInt16(); var channelCount = reader.ReadUInt16(); var samplesPerSecond = reader.ReadUInt32(); var averageBytesPerSecond = reader.ReadUInt32(); var blockAlignment = reader.ReadUInt16(); var bitsPerSample = reader.ReadUInt16(); return(new { Format = format, ChannelCount = channelCount, SamplesPerSecond = samplesPerSecond, AverageBytesPerSecond = averageBytesPerSecond, BlockAlignment = blockAlignment, BitsPerSample = bitsPerSample }); } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = Offset; var header = reader.ReadBytes(4); var version = (header[1] >> 3) & 0x03; var layer = (header[1] >> 1) & 0x03; var noCrc = header[1] & 0x01; var bitRate = (header[2] >> 4) & 0x0f; var sampleRate = (header[2] >> 2) & 0x03; var padding = (header[2] >> 1) & 0x01; var privateFlag = header[2] & 0x01; var channelMode = (header[3] >> 6) & 0x02; var msStereo = (header[3] >> 4) & 0x01; var intensityStereo = (header[3] >> 3) & 0x01; var copyright = (header[3] >> 2) & 0x01; var original = (header[3] >> 1) & 0x01; var emphasis = (header[3] >> 0) & 0x01; var bitRates = new int[] { 0, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000 }; var sampleRates = new int[] { 22050, 24000, 16000 }; if (bitRate < bitRates.Length && sampleRate < sampleRates.Length && bitRates[bitRate] != 0) { bitRate = bitRates[bitRate]; sampleRate = sampleRates[sampleRate]; } return(new { Version = version, Layer = layer, NoCRC = noCrc, BitRate = bitRate, SampleRate = sampleRate, Padding = padding, Private = privateFlag, ChannelMode = channelMode, MSStereo = msStereo, IntensityStereo = intensityStereo, Copyright = copyright, Original = original, Emphasis = emphasis, Position = Offset }); } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = 0x10100; var dspRegisters = reader.ReadBytes(128); return(new { DspRegisters = dspRegisters }); } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = Position; var groupID = Encoding.ASCII.GetString(reader.ReadBytes(4)); var length = reader.ReadUInt32(); return(new { Data = reader.ReadBytes((int)length) }); } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { var groupID = Encoding.ASCII.GetString(reader.ReadBytes(4)); var fileLength = reader.ReadUInt32(); var type = Encoding.ASCII.GetString(reader.ReadBytes(4)); return(new { GroupID = groupID, FileLength = fileLength, Type = type }); } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = 0; var signature = Encoding.ASCII.GetString(reader.ReadBytes(2)); var length = reader.ReadUInt32(); var reserved = reader.ReadBytes(4); var dataOffset = reader.ReadUInt32(); return(new { Signature = signature, Length = length, Reserved = reserved, DataOffset = dataOffset }); } }
public override void Reload() { Nodes.Clear(); using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = 0x1015d; var sourceDirectory = reader.ReadByte() * 0x100; reader.BaseStream.Position = 0x100 + sourceDirectory; for (var entry = 0; entry < 256; entry++) { var start = reader.ReadUInt16(); var loop = reader.ReadUInt16(); Nodes.Add(new SpcDirectoryEntry { Text = entry.ToString("X2") + ((loop - start) < 0 ? " (Invalid)" : string.Empty), Start = start, Loop = loop, Source = Source }); } } }
public override object GetProperties() { using (var reader = new BinaryReader(Source.GetStream())) { reader.BaseStream.Position = 10; var dataOffset = reader.ReadUInt32(); var length = reader.ReadUInt32(); var width = reader.ReadInt32(); var height = reader.ReadInt32(); var planeCount = reader.ReadUInt16(); var bitsPerPixel = reader.ReadUInt16(); var compression = reader.ReadUInt32(); var dataLength = reader.ReadUInt32(); var horizontalResolution = reader.ReadUInt32(); var verticalResolution = reader.ReadUInt32(); var paletteEntryCount = reader.ReadUInt32(); var importantColors = reader.ReadUInt32(); reader.BaseStream.Position = dataOffset; var flip = false; if (height < 0) { height = -height; flip = true; } var pixels = new Color[width * height]; for (var y = 0; y < height; y++) { for (var x = 0; x < width; x++) { Color pixel; switch (bitsPerPixel) { case 24: var values = reader.ReadBytes(3); pixel = Color.FromArgb(values[2], values[1], values[0]); break; default: pixel = Color.Black; break; } if (flip) { pixels[(y * width) + x] = pixel; } else { pixels[((height - y - 1) * width) + x] = pixel; } } } return(new { Pixels = pixels }); } }