Skip to content

Commit 3c7fd55

Browse files
Mode2/2336 support (fixes #3387)
1 parent 6c8d4c5 commit 3c7fd55

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

src/BizHawk.Emulation.DiscSystem/DiscFormats/CDI_format.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ RawTOCEntry EmitRawTOCEntry()
557557
SS_Base synth = track.ReadMode switch
558558
{
559559
0 => new SS_Mode1_2048(),
560-
1 => throw new NotSupportedException("Mode2/2336"), // TODO
560+
1 => new SS_Mode2_2336(),
561561
2 => new SS_2352(),
562562
3 => new SS_CDI_RawQ(),
563563
4 => new SS_CDI_RawPQRSTUVW(),

src/BizHawk.Emulation.DiscSystem/DiscFormats/CUE/CUE_Load.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,8 +337,13 @@ public override void Run()
337337
sectorSize = 2048;
338338
break;
339339

340-
default:
340+
case CueTrackType.CDI_2336:
341341
case CueTrackType.Mode2_2336:
342+
ss = new SS_Mode2_2336();
343+
sectorSize = 2336;
344+
break;
345+
346+
default:
342347
throw new InvalidOperationException($"Not supported: {cct.TrackType}");
343348
}
344349

src/BizHawk.Emulation.DiscSystem/DiscFormats/CUE/CUE_Synths.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,24 @@ public override void Synth(SectorSynthJob job)
6868
}
6969
}
7070

71+
/// <summary>
72+
/// Represents a Mode2 2336-byte sector
73+
/// </summary>
74+
internal class SS_Mode2_2336 : SS_Base
75+
{
76+
public override void Synth(SectorSynthJob job)
77+
{
78+
//read the sector user data
79+
Blob.Read(BlobOffset, job.DestBuffer2448, job.DestOffset + 16, 2336);
80+
81+
if ((job.Parts & ESectorSynthPart.Header16) != 0)
82+
SynthUtils.SectorHeader(job.DestBuffer2448, job.DestOffset + 0, job.LBA, 2);
83+
84+
//if subcode is needed, synthesize it
85+
SynthSubchannelAsNeed(job);
86+
}
87+
}
88+
7189
/// <summary>
7290
/// Represents a 2352-byte sector of any sort
7391
/// </summary>
@@ -108,6 +126,8 @@ public override void Synth(SectorSynthJob job)
108126
mode = 1;
109127
break;
110128

129+
case CueTrackType.CDI_2336:
130+
case CueTrackType.Mode2_2336:
111131
case CueTrackType.Mode2_2352:
112132
mode = 2;
113133
if (Policy.CUE_PregapMode2_As_XA_Form2)
@@ -123,7 +143,6 @@ public override void Synth(SectorSynthJob job)
123143
Pause = true;
124144
break;
125145

126-
case CueTrackType.Mode2_2336:
127146
default:
128147
throw new InvalidOperationException($"Not supported: {TrackType}");
129148
}

0 commit comments

Comments
 (0)