mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
util/cdrom.cpp: Don't strip pregaps from Redump GD-ROM files (#11913)
This commit is contained in:
parent
f43f4b0696
commit
b75b8d80e8
@ -2914,45 +2914,6 @@ std::error_condition cdrom_file::parse_gdicue(std::string_view tocfname, toc &ou
|
||||
disc_pattern = TYPE_I;
|
||||
}
|
||||
|
||||
/*
|
||||
* Strip pregaps from Redump tracks and adjust the LBA offset to match TOSEC layout
|
||||
*/
|
||||
for (trknum = 1; trknum < outtoc.numtrks; trknum++)
|
||||
{
|
||||
uint32_t prev_pregap = outtoc.tracks[trknum-1].pregap;
|
||||
uint32_t prev_offset = prev_pregap * (outtoc.tracks[trknum-1].datasize + outtoc.tracks[trknum-1].subsize);
|
||||
uint32_t this_pregap = outtoc.tracks[trknum].pregap;
|
||||
uint32_t this_offset = this_pregap * (outtoc.tracks[trknum].datasize + outtoc.tracks[trknum].subsize);
|
||||
|
||||
if (outtoc.tracks[trknum-1].pgtype != CD_TRACK_AUDIO)
|
||||
{
|
||||
// pad previous DATA track to match TOSEC layout
|
||||
outtoc.tracks[trknum-1].frames += this_pregap;
|
||||
outtoc.tracks[trknum-1].padframes += this_pregap;
|
||||
}
|
||||
|
||||
if (outtoc.tracks[trknum-1].pgtype == CD_TRACK_AUDIO && outtoc.tracks[trknum].pgtype == CD_TRACK_AUDIO)
|
||||
{
|
||||
// shift previous AUDIO track to match TOSEC layout
|
||||
outinfo.track[trknum-1].offset += prev_offset;
|
||||
outtoc.tracks[trknum-1].splitframes += prev_pregap;
|
||||
}
|
||||
|
||||
if (outtoc.tracks[trknum-1].pgtype == CD_TRACK_AUDIO && outtoc.tracks[trknum].pgtype != CD_TRACK_AUDIO)
|
||||
{
|
||||
// shrink previous AUDIO track to match TOSEC layout
|
||||
outtoc.tracks[trknum-1].frames -= prev_pregap;
|
||||
outinfo.track[trknum-1].offset += prev_offset;
|
||||
}
|
||||
|
||||
if (outtoc.tracks[trknum].pgtype == CD_TRACK_AUDIO && trknum == outtoc.numtrks-1)
|
||||
{
|
||||
// shrink final AUDIO track to match TOSEC layout
|
||||
outtoc.tracks[trknum].frames -= this_pregap;
|
||||
outinfo.track[trknum].offset += this_offset;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Special handling for TYPE_III_SPLIT, pregap in last track contains 75 frames audio and 150 frames data
|
||||
*/
|
||||
@ -2972,7 +2933,7 @@ std::error_condition cdrom_file::parse_gdicue(std::string_view tocfname, toc &ou
|
||||
}
|
||||
|
||||
/*
|
||||
* TOC now matches TOSEC layout, set LBA for every track with HIGH-DENSITY area @ LBA 45000
|
||||
* Set LBA for every track with HIGH-DENSITY area @ LBA 45000
|
||||
*/
|
||||
for (trknum = 1; trknum < outtoc.numtrks; trknum++)
|
||||
{
|
||||
@ -2987,10 +2948,6 @@ std::error_condition cdrom_file::parse_gdicue(std::string_view tocfname, toc &ou
|
||||
{
|
||||
outtoc.tracks[trknum].physframeofs = outtoc.tracks[trknum-1].physframeofs + outtoc.tracks[trknum-1].frames;
|
||||
}
|
||||
|
||||
// no longer need the pregap info, zeroed out to match TOSEC layout
|
||||
outtoc.tracks[trknum].pregap = 0;
|
||||
outtoc.tracks[trknum].pgtype = 0;
|
||||
}
|
||||
|
||||
if (EXTRA_VERBOSE)
|
||||
|
Loading…
Reference in New Issue
Block a user