some small discsys cleanup
This commit is contained in:
parent
3ebdfaaf78
commit
57d76317c8
|
@ -413,11 +413,11 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
audioStartLBA = (CommandBuffer[3] << 16) | (CommandBuffer[4] << 8) | CommandBuffer[5];
|
audioStartLBA = (CommandBuffer[3] << 16) | (CommandBuffer[4] << 8) | CommandBuffer[5];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x40: // Set start offset in MSF units
|
case 0x40: // Set start offset in absolute MSF units
|
||||||
byte m = CommandBuffer[2].BCDtoBin();
|
byte m = CommandBuffer[2].BCDtoBin();
|
||||||
byte s = CommandBuffer[3].BCDtoBin();
|
byte s = CommandBuffer[3].BCDtoBin();
|
||||||
byte f = CommandBuffer[4].BCDtoBin();
|
byte f = CommandBuffer[4].BCDtoBin();
|
||||||
audioStartLBA = Disc.ConvertMSFtoLBA(m, s, f);
|
audioStartLBA = DiscUtils.Convert_AMSF_To_LBA(m, s, f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x80: // Set start offset in track units
|
case 0x80: // Set start offset in track units
|
||||||
|
@ -448,11 +448,11 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
audioEndLBA = (CommandBuffer[3] << 16) | (CommandBuffer[4] << 8) | CommandBuffer[5];
|
audioEndLBA = (CommandBuffer[3] << 16) | (CommandBuffer[4] << 8) | CommandBuffer[5];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x40: // Set end offset in MSF units
|
case 0x40: // Set end offset in absolute MSF units
|
||||||
byte m = CommandBuffer[2].BCDtoBin();
|
byte m = CommandBuffer[2].BCDtoBin();
|
||||||
byte s = CommandBuffer[3].BCDtoBin();
|
byte s = CommandBuffer[3].BCDtoBin();
|
||||||
byte f = CommandBuffer[4].BCDtoBin();
|
byte f = CommandBuffer[4].BCDtoBin();
|
||||||
audioEndLBA = Disc.ConvertMSFtoLBA(m, s, f);
|
audioEndLBA = DiscUtils.Convert_AMSF_To_LBA(m, s, f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x80: // Set end offset in track units
|
case 0x80: // Set end offset in track units
|
||||||
|
@ -540,7 +540,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
int totalLbaLength = disc.Session1.LeadoutLBA;
|
int totalLbaLength = disc.Session1.LeadoutLBA;
|
||||||
|
|
||||||
byte m, s, f;
|
byte m, s, f;
|
||||||
Disc.ConvertLBAtoMSF(totalLbaLength, out m, out s, out f);
|
DiscUtils.Convert_LBA_To_AMSF(totalLbaLength + 150, out m, out s, out f);
|
||||||
|
|
||||||
DataIn.Clear();
|
DataIn.Clear();
|
||||||
DataIn.Enqueue(m.BinToBCD());
|
DataIn.Enqueue(m.BinToBCD());
|
||||||
|
@ -565,7 +565,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
lbaPos = tracks[track].LBA;
|
lbaPos = tracks[track].LBA;
|
||||||
|
|
||||||
byte m, s, f;
|
byte m, s, f;
|
||||||
Disc.ConvertLBAtoMSF(lbaPos, out m, out s, out f);
|
DiscUtils.Convert_LBA_To_AMSF(lbaPos, out m, out s, out f);
|
||||||
|
|
||||||
DataIn.Clear();
|
DataIn.Clear();
|
||||||
DataIn.Enqueue(m.BinToBCD());
|
DataIn.Enqueue(m.BinToBCD());
|
||||||
|
|
|
@ -12,21 +12,6 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// converts LBA to minute:second:frame format.
|
|
||||||
//TODO - somewhat redundant with Timestamp, which is due for refactoring into something not cue-related
|
|
||||||
public static void ConvertLBAtoMSF(int lba, out byte m, out byte s, out byte f)
|
|
||||||
{
|
|
||||||
lba += 150;
|
|
||||||
m = (byte)(lba / 75 / 60);
|
|
||||||
s = (byte)((lba - (m * 75 * 60)) / 75);
|
|
||||||
f = (byte)(lba - (m * 75 * 60) - (s * 75));
|
|
||||||
}
|
|
||||||
|
|
||||||
// converts MSF to LBA offset
|
|
||||||
public static int ConvertMSFtoLBA(byte m, byte s, byte f)
|
|
||||||
{
|
|
||||||
return f + (s * 75) + (m * 75 * 60) - 150;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,24 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
ret += (byte)(16 * (val / 10));
|
ret += (byte)(16 * (val / 10));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// converts an LBA to AMSF absolute minute:second:frame format.
|
||||||
|
/// </summary>
|
||||||
|
public static void Convert_LBA_To_AMSF(int lba, out byte m, out byte s, out byte f)
|
||||||
|
{
|
||||||
|
lba += 150; //dont do this anymore
|
||||||
|
m = (byte)(lba / 75 / 60);
|
||||||
|
s = (byte)((lba - (m * 75 * 60)) / 75);
|
||||||
|
f = (byte)(lba - (m * 75 * 60) - (s * 75));
|
||||||
|
}
|
||||||
|
|
||||||
|
// converts MSF to LBA offset
|
||||||
|
public static int Convert_AMSF_To_LBA(byte m, byte s, byte f)
|
||||||
|
{
|
||||||
|
return f + (s * 75) + (m * 75 * 60) - 150;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -25,7 +25,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Track SeekTrack(int lba)
|
public Track SeekTrack(int lba)
|
||||||
{
|
{
|
||||||
var ses = Sessions[0];
|
var ses = Sessions[1];
|
||||||
|
|
||||||
//take care with this loop bounds:
|
//take care with this loop bounds:
|
||||||
for (int i = 1; i <= ses.InformationTrackCount; i++)
|
for (int i = 1; i <= ses.InformationTrackCount; i++)
|
||||||
|
|
Loading…
Reference in New Issue