예제 #1
0
        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);
        }
예제 #2
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);
        }