mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Fix pregap calculations when Q subchannel is BCD.
This commit is contained in:
@@ -168,7 +168,20 @@ namespace DiscImageChef.Core.Devices.Dumping
|
|||||||
{
|
{
|
||||||
cmdBuf[iq] = (byte)q[iq];
|
cmdBuf[iq] = (byte)q[iq];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!sense)
|
||||||
|
{
|
||||||
|
// Q position
|
||||||
|
if((cmdBuf[0] & 0xF) != 1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check if BCD or binary values, change to binary
|
||||||
|
int posQ = ((cmdBuf[7] * 60 * 75) + (cmdBuf[8] * 75) + cmdBuf[9]) - 150;
|
||||||
|
|
||||||
|
if(posQ > lba)
|
||||||
|
{
|
||||||
cmdBuf[1] = (byte)(((cmdBuf[1] / 16) * 10) + (cmdBuf[1] & 0x0F));
|
cmdBuf[1] = (byte)(((cmdBuf[1] / 16) * 10) + (cmdBuf[1] & 0x0F));
|
||||||
cmdBuf[2] = (byte)(((cmdBuf[2] / 16) * 10) + (cmdBuf[2] & 0x0F));
|
cmdBuf[2] = (byte)(((cmdBuf[2] / 16) * 10) + (cmdBuf[2] & 0x0F));
|
||||||
cmdBuf[3] = (byte)(((cmdBuf[3] / 16) * 10) + (cmdBuf[3] & 0x0F));
|
cmdBuf[3] = (byte)(((cmdBuf[3] / 16) * 10) + (cmdBuf[3] & 0x0F));
|
||||||
@@ -178,14 +191,9 @@ namespace DiscImageChef.Core.Devices.Dumping
|
|||||||
cmdBuf[7] = (byte)(((cmdBuf[7] / 16) * 10) + (cmdBuf[7] & 0x0F));
|
cmdBuf[7] = (byte)(((cmdBuf[7] / 16) * 10) + (cmdBuf[7] & 0x0F));
|
||||||
cmdBuf[8] = (byte)(((cmdBuf[8] / 16) * 10) + (cmdBuf[8] & 0x0F));
|
cmdBuf[8] = (byte)(((cmdBuf[8] / 16) * 10) + (cmdBuf[8] & 0x0F));
|
||||||
cmdBuf[9] = (byte)(((cmdBuf[9] / 16) * 10) + (cmdBuf[9] & 0x0F));
|
cmdBuf[9] = (byte)(((cmdBuf[9] / 16) * 10) + (cmdBuf[9] & 0x0F));
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!sense)
|
posQ = ((cmdBuf[7] * 60 * 75) + (cmdBuf[8] * 75) + cmdBuf[9]) - 150;
|
||||||
{
|
}
|
||||||
// Q position
|
|
||||||
if((cmdBuf[0] & 0xF) != 1)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if(cmdBuf[1] != tracks[i].TrackSequence ||
|
if(cmdBuf[1] != tracks[i].TrackSequence ||
|
||||||
cmdBuf[2] != 0)
|
cmdBuf[2] != 0)
|
||||||
@@ -199,12 +207,17 @@ namespace DiscImageChef.Core.Devices.Dumping
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pregapQ = (cmdBuf[3] * 60 * 75) + (cmdBuf[4] * 75) + cmdBuf[5];
|
int pregapQ = posQ > lba ? trackPregap : (cmdBuf[3] * 60 * 75) + (cmdBuf[4] * 75) + cmdBuf[5];
|
||||||
|
|
||||||
if(pregapQ > trackPregap)
|
if(pregapQ > trackPregap)
|
||||||
trackPregap = pregapQ;
|
trackPregap = pregapQ;
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if(posQ == lba + 1)
|
||||||
|
trackPregap++;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
lba--;
|
lba--;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user