mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Fix redump GD-ROM reading
This commit is contained in:
committed by
GitHub
parent
20a6ba4399
commit
1a47077c03
@@ -367,6 +367,7 @@ namespace Aaru.DiscImages
|
||||
lineNumber);
|
||||
|
||||
_discImage.IsRedumpGigadisc = true;
|
||||
firstTrackInSession = true;
|
||||
}
|
||||
else if(matchRedumpHdArea.Success)
|
||||
{
|
||||
@@ -1242,11 +1243,21 @@ namespace Aaru.DiscImages
|
||||
int currentSector = 0;
|
||||
int currentFileStartSector = 0;
|
||||
string currentFilePath = "";
|
||||
firstTrackInSession = true;
|
||||
|
||||
foreach(CdrWinTrack track in _discImage.Tracks)
|
||||
{
|
||||
if(track.TrackFile.DataFilter.GetBasePath() != currentFilePath)
|
||||
{
|
||||
if(_discImage.IsRedumpGigadisc &&
|
||||
track.Session == 2 &&
|
||||
firstTrackInSession)
|
||||
{
|
||||
track.Indexes.Add(0, (int)(0 - (ulong)track.Pregap));
|
||||
currentSector = (int)gdRomSession2Offset;
|
||||
firstTrackInSession = false;
|
||||
}
|
||||
|
||||
currentFileStartSector = currentSector;
|
||||
currentFilePath = track.TrackFile.DataFilter.GetBasePath();
|
||||
}
|
||||
@@ -1282,9 +1293,6 @@ namespace Aaru.DiscImages
|
||||
|
||||
_imageInfo.Sectors = _discImage.Sessions.OrderByDescending(s => s.EndSector).First().EndSector + 1;
|
||||
|
||||
if(_discImage.IsRedumpGigadisc)
|
||||
_imageInfo.Sectors = 549150;
|
||||
|
||||
AaruConsole.DebugWriteLine("CDRWin plugin", "Session information:");
|
||||
AaruConsole.DebugWriteLine("CDRWin plugin", "\tDisc contains {0} sessions", _discImage.Sessions.Count);
|
||||
|
||||
@@ -1336,11 +1344,11 @@ namespace Aaru.DiscImages
|
||||
|
||||
partitionSequence++;
|
||||
|
||||
if(_discImage.Tracks[i].Indexes.TryGetValue(0, out int idx0))
|
||||
_offsetMap.Add(_discImage.Tracks[i].Sequence, (ulong)idx0);
|
||||
else if(_discImage.IsRedumpGigadisc &&
|
||||
_discImage.Tracks[i].Sequence == 3)
|
||||
if(_discImage.IsRedumpGigadisc &&
|
||||
_discImage.Tracks[i].Sequence == 3)
|
||||
_offsetMap.Add(_discImage.Tracks[i].Sequence, gdRomSession2Offset);
|
||||
else if(_discImage.Tracks[i].Indexes.TryGetValue(0, out int idx0))
|
||||
_offsetMap.Add(_discImage.Tracks[i].Sequence, (ulong)idx0);
|
||||
else if(_discImage.Tracks[i].Sequence > 1)
|
||||
_offsetMap.Add(_discImage.Tracks[i].Sequence,
|
||||
(ulong)(_discImage.Tracks[i].Indexes[1] - _discImage.Tracks[i].Pregap));
|
||||
@@ -2260,4 +2268,4 @@ namespace Aaru.DiscImages
|
||||
public List<Track> GetSessionTracks(ushort session) =>
|
||||
Tracks.Where(t => t.TrackSession == session).OrderBy(t => t.TrackSequence).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user