different cue gap sector synth for data and audio sectors

This commit is contained in:
zeromus 2015-07-01 06:00:38 -05:00
parent 9b5daa9e3c
commit 1de6033c0a
3 changed files with 34 additions and 11 deletions

View File

@ -317,22 +317,22 @@ namespace BizHawk.Client.DiscoHawk
{
var hashedOffenders = new HashSet<int>();
for (int i = 0; i < numoffenders; i++) hashedOffenders.Add(offenders[i]);
sw.Write(" ");
sw.Write(" ");
for (int i = 0; i < count; i++) sw.Write((hashedOffenders.Contains(dispaddr + i)) ? "vvv " : " ");
sw.WriteLine();
sw.Write(" ");
sw.Write(" ");
for (int i = 0; i < count; i++) sw.Write("{0:X3} ", dispaddr + i, (i == count - 1) ? " " : " ");
sw.WriteLine();
sw.Write(" ");
sw.Write(" ");
sw.Write(new string('-', count * 4));
sw.WriteLine();
sw_dump_chunk_one(string.Format("SRC #{0,6} ({1})", lba, new Timestamp(lba)), lba, src_databuf, addr, count);
sw_dump_chunk_one(string.Format("DST #{0,6} ({1})", lba, new Timestamp(lba)), lba, dst_databuf, addr, count);
};
//verify each sector contents (skip the pregap junk for now)
//verify each sector contents
int nSectors = src_disc.LBACount;
for (int lba = 0; lba < nSectors; lba++)
for (int lba = -150; lba < nSectors; lba++)
{
if (lba % 1000 == 0)
Console.WriteLine("LBA {0} of {1}", lba, src_disc.LBACount);

View File

@ -213,7 +213,9 @@ namespace BizHawk.Emulation.DiscSystem
for (int s = 0; s < specifiedPregapLength; s++)
{
var se = new SectorEntry(null);
var ss = new SS_Gap();
SS_Base ss;
if (cct.TrackType == CueFile.TrackType.Audio) ss = new SS_AudioGap();
else ss = new SS_DataGap();
//-subq-
byte ADR = 1;
@ -285,6 +287,12 @@ namespace BizHawk.Emulation.DiscSystem
curr_blobOffset += 2048;
break;
default:
case CueFile.TrackType.Mode2_2336:
throw new InvalidOperationException("Not supported: " + cct.TrackType);
case CueFile.TrackType.CDI_2352:
case CueFile.TrackType.Mode1_2352:
case CueFile.TrackType.Mode2_2352:
case CueFile.TrackType.Audio:
ss = new SS_2352() { Blob = curr_blobInfo.Blob, BlobOffset = curr_blobOffset };
@ -335,7 +343,9 @@ namespace BizHawk.Emulation.DiscSystem
for (int s = 0; s < specifiedPostgapLength; s++)
{
var se= new SectorEntry(null);
var ss = new SS_Gap();
SS_Base ss;
if (cct.TrackType == CueFile.TrackType.Audio) ss = new SS_AudioGap();
else ss = new SS_DataGap();
//-subq-
byte ADR = 1;

View File

@ -106,13 +106,26 @@ namespace BizHawk.Emulation.DiscSystem
}
/// <summary>
/// Represents a pregap or postgap sector.
/// The Pause flag isn't set in here because it might need special logic varying between sectors
/// Represents a data pregap or postgap sector.
/// The Pause flag isn't set in here because it might need special logic varying between sectors and so that's setup by the cue loader
/// Implemented as another sector type with a blob reading all zeros
/// </summary>
class SS_Gap : SS_Mode1_2048
class SS_DataGap : SS_Mode1_2048
{
public SS_Gap()
public SS_DataGap()
{
Blob = new Disc.Blob_Zeros();
}
}
/// <summary>
/// Represents an audio pregap or postgap sector.
/// The Pause flag isn't set in here because it might need special logic varying between sectors and so that's setup by the cue loader
/// Implemented as another sector type with a blob reading all zeros
/// </summary>
class SS_AudioGap : SS_2352
{
public SS_AudioGap()
{
Blob = new Disc.Blob_Zeros();
}