cue clarifications
This commit is contained in:
parent
675853e7a3
commit
5713346580
|
@ -233,7 +233,7 @@ namespace BizHawk.Client.DiscoHawk
|
||||||
var dmj = new DiscMountJob { IN_DiscInterface = loadDiscInterface, IN_FromPath = infile };
|
var dmj = new DiscMountJob { IN_DiscInterface = loadDiscInterface, IN_FromPath = infile };
|
||||||
if (cmpif == DiscInterface.MednaDisc)
|
if (cmpif == DiscInterface.MednaDisc)
|
||||||
{
|
{
|
||||||
dmj.IN_DiscMountPolicy.CUE_PauseContradictionModeA = false;
|
dmj.IN_DiscMountPolicy.CUE_PregapContradictionModeA = false;
|
||||||
}
|
}
|
||||||
dmj.Run();
|
dmj.Run();
|
||||||
var disc = dmj.OUT_Disc;
|
var disc = dmj.OUT_Disc;
|
||||||
|
|
|
@ -207,8 +207,8 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
int relMSF = -totalPregapLength;
|
int relMSF = -totalPregapLength;
|
||||||
|
|
||||||
//read more at policies declaration
|
//read more at policies declaration
|
||||||
if (!context.DiscMountPolicy.CUE_PauseContradictionModeA)
|
//if (!context.DiscMountPolicy.CUE_PauseContradictionModeA)
|
||||||
relMSF += 1;
|
// relMSF += 1;
|
||||||
//---------------------------------
|
//---------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
@ -250,12 +250,6 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
//WE ARE NOW AT INDEX 1: generate the RawTOCEntry for this track
|
//WE ARE NOW AT INDEX 1: generate the RawTOCEntry for this track
|
||||||
EmitRawTOCEntry(cct);
|
EmitRawTOCEntry(cct);
|
||||||
}
|
}
|
||||||
|
|
||||||
//in the weird mednafen mode, we need to adjust relMSF to be 0 since we pre-adjusted it once
|
|
||||||
if (!context.DiscMountPolicy.CUE_PauseContradictionModeA && relMSF == 1)
|
|
||||||
relMSF = 0;
|
|
||||||
else
|
|
||||||
if (relMSF != 0) throw new InvalidOperationException();
|
|
||||||
}
|
}
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
|
@ -264,9 +258,15 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
//generate a sector:
|
//generate a sector:
|
||||||
SS_Base ss = null;
|
SS_Base ss = null;
|
||||||
EControlQ qFlags = (EControlQ)(int)cct.Flags;
|
EControlQ qFlags = (EControlQ)(int)cct.Flags;
|
||||||
|
int qRelMSF = relMSF;
|
||||||
if (curr_index == 0)
|
if (curr_index == 0)
|
||||||
{
|
{
|
||||||
//generating pregap:
|
//generating pregap:
|
||||||
|
|
||||||
|
//tweak relMSF due to ambiguity/contradiction in yellowbook docs
|
||||||
|
if (!context.DiscMountPolicy.CUE_PregapContradictionModeA)
|
||||||
|
qRelMSF++;
|
||||||
|
|
||||||
bool audioGap = true;
|
bool audioGap = true;
|
||||||
|
|
||||||
//normally the gap takes this track's type
|
//normally the gap takes this track's type
|
||||||
|
@ -279,8 +279,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
//I agree, so let's do it that way
|
//I agree, so let's do it that way
|
||||||
if (t != 1 && cct.TrackType != CueFile.TrackType.Audio && TrackInfos[t - 1].CompiledCueTrack.TrackType == CueFile.TrackType.Audio)
|
if (t != 1 && cct.TrackType != CueFile.TrackType.Audio && TrackInfos[t - 1].CompiledCueTrack.TrackType == CueFile.TrackType.Audio)
|
||||||
{
|
{
|
||||||
//there may be an off by one error here depending on the CUE_PauseContradictionModeA setting.. not really sure.
|
if (relMSF < -150)
|
||||||
if (relMSF <= -150)
|
|
||||||
{
|
{
|
||||||
qFlags = (EControlQ)(int)TrackInfos[t - 1].CompiledCueTrack.Flags;
|
qFlags = (EControlQ)(int)TrackInfos[t - 1].CompiledCueTrack.Flags;
|
||||||
audioGap = true;
|
audioGap = true;
|
||||||
|
@ -321,7 +320,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
ss.sq.q_tno = BCD2.FromDecimal(cct.Number);
|
ss.sq.q_tno = BCD2.FromDecimal(cct.Number);
|
||||||
ss.sq.q_index = BCD2.FromDecimal(curr_index);
|
ss.sq.q_index = BCD2.FromDecimal(curr_index);
|
||||||
ss.sq.AP_Timestamp = new Timestamp(OUT_Disc.Sectors.Count);
|
ss.sq.AP_Timestamp = new Timestamp(OUT_Disc.Sectors.Count);
|
||||||
ss.sq.Timestamp = new Timestamp(relMSF);
|
ss.sq.Timestamp = new Timestamp(qRelMSF);
|
||||||
|
|
||||||
//setup subP
|
//setup subP
|
||||||
if (curr_index == 0)
|
if (curr_index == 0)
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
/// (Mednafen does it this way)
|
/// (Mednafen does it this way)
|
||||||
/// Discs (including PSX) exist using A, or B, or possibly (reference please) neither.
|
/// Discs (including PSX) exist using A, or B, or possibly (reference please) neither.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool CUE_PauseContradictionModeA = true;
|
public bool CUE_PregapContradictionModeA = true;
|
||||||
|
|
||||||
public void SetForPlaystation()
|
public void SetForPlaystation()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue