public Ps2SequenceData(Stream pStream) { this.versionChunk = parseVersionChunk(pStream); this.headerChunk = parseHeaderChunk(pStream); this.midiChunk = parseMidiChunk(pStream); dataBytesPerCommand = new Dictionary <int, int>(); dataBytesPerCommand.Add(0x80, 1); dataBytesPerCommand.Add(0x90, 2); dataBytesPerCommand.Add(0xA0, 2); dataBytesPerCommand.Add(0xB0, 2); dataBytesPerCommand.Add(0xC0, 1); dataBytesPerCommand.Add(0xD0, 1); dataBytesPerCommand.Add(0xE0, 2); dataBytesPerCommand.Add(0xF0, 0); }
public static SequChunkStruct parseHeaderChunk(Stream pStream) { SequChunkStruct ret = new SequChunkStruct(); ret.magicBytes = BitConverter.ToUInt32(ParseFile.ParseSimpleOffset(pStream, HEADER_CHUNK_OFFSET + 0, 4), 0); ret.magicBytesSection = BitConverter.ToUInt32(ParseFile.ParseSimpleOffset(pStream, HEADER_CHUNK_OFFSET + 4, 4), 0); ret.chunkSize = BitConverter.ToUInt32(ParseFile.ParseSimpleOffset(pStream, HEADER_CHUNK_OFFSET + 8, 4), 0); ret.fileSize = BitConverter.ToUInt32(ParseFile.ParseSimpleOffset(pStream, HEADER_CHUNK_OFFSET + 12, 4), 0); ret.songChunkAddrAbsolute = BitConverter.ToUInt32(ParseFile.ParseSimpleOffset(pStream, HEADER_CHUNK_OFFSET + 16, 4), 0); ret.midiChunkAddrAbsolute = BitConverter.ToUInt32(ParseFile.ParseSimpleOffset(pStream, HEADER_CHUNK_OFFSET + 20, 4), 0); ret.seSequenceChunkAddrAbsolute = BitConverter.ToUInt32(ParseFile.ParseSimpleOffset(pStream, HEADER_CHUNK_OFFSET + 24, 4), 0); ret.seSongChunkAddrAbsolute = BitConverter.ToUInt32(ParseFile.ParseSimpleOffset(pStream, HEADER_CHUNK_OFFSET + 28, 4), 0); return(ret); }