diff --git a/BizHawk.Emulation.DiscSystem/CUE_format.cs b/BizHawk.Emulation.DiscSystem/CUE_format.cs index daae59c46f..d0d75cd63d 100644 --- a/BizHawk.Emulation.DiscSystem/CUE_format.cs +++ b/BizHawk.Emulation.DiscSystem/CUE_format.cs @@ -282,10 +282,12 @@ namespace BizHawk.Emulation.DiscSystem toc_track.Number = curr_track; toc_track.TrackType = cue_track.TrackType; - //choose a Control value based on + //choose a Control value based on track type and other flags from cue + //TODO - this might need to be controlled by cue loading prefs + toc_track.Control = cue_track.Control; if (toc_track.TrackType == ETrackType.Audio) - toc_track.Control = EControlQ.StereoNoPreEmph; - else toc_track.Control = EControlQ.DataUninterrupted; + toc_track.Control |= EControlQ.StereoNoPreEmph; + else toc_track.Control |= EControlQ.DataUninterrupted; if (curr_track == 1) { @@ -532,6 +534,7 @@ namespace BizHawk.Emulation.DiscSystem public class CueTrack { + public EControlQ Control; public ETrackType TrackType; public int TrackNum; public Timestamp PreGap = new Timestamp(); @@ -682,7 +685,13 @@ namespace BizHawk.Emulation.DiscSystem //TODO - keep these for later? //known flags: //FLAGS DCP - //that's all. don't know what it means + { + var flags = clp.ReadToken(); + if (flags == "DCP") + { + currTrack.Control |= EControlQ.CopyPermittedMask; + } else throw new CueBrokenException("Unknown flags: " + flags); + } break; default: throw new CueBrokenException("unsupported cue command: " + key);