bool Rip(byte[] data, SongSt song, InstrumentMap instrument_map, List <List <byte> > trackdata) { //Rip for (uint track = 0; track < song.tracks; track++) { uint songtrack_pointer = song.header + 8 + (4 * track); uint songtrackdata_pointer = U.u32(data, songtrack_pointer); if (!U.isPointer(songtrackdata_pointer)) { this.ErrorMessage += "\r\n" + R.Error("track:" + track.ToString() + " can not pointer! addr:" + songtrack_pointer.ToString("X08") + " data:" + songtrackdata_pointer.ToString("X08")); return(false); } songtrackdata_pointer = U.toOffset(songtrackdata_pointer); List <byte> track_data = process_track(data, songtrackdata_pointer, instrument_map); trackdata.Add(track_data); } //ドラムがない曲の場合、それは困るので、ダミーのドラムを追加する. instrument_map.appendDrumIfNoDrum(); return(true); }