02456: wrong sector size at CD_TRACK_MODE2 conversion routine

This commit is contained in:
R. Belmont 2008-10-30 03:08:35 +00:00
parent 7dd6c89221
commit c6e16e1925

View File

@ -221,24 +221,24 @@ UINT32 cdrom_read_data(cdrom_file *file, UINT32 lbasector, void *buffer, UINT32
}
else
{
/* return 2048 bytes of mode1 data from a 2336 byte mode 1 or 2 raw sector */
/* return 2048 bytes of mode 1 data from a 2352 byte mode 1 or 2 raw sector */
if ((datatype == CD_TRACK_MODE1) && ((tracktype == CD_TRACK_MODE1_RAW) || (tracktype == CD_TRACK_MODE2_RAW)))
{
memcpy(buffer, &file->cache[(sectoroffs * CD_FRAME_SIZE) + 16], 2048);
return 1;
}
/* return 2048 bytes of mode1 data from a mode2 form1 sector */
/* return 2048 bytes of mode 1 data from a mode2 form1 sector */
if ((datatype == CD_TRACK_MODE1) && (tracktype == CD_TRACK_MODE2_FORM1))
{
memcpy(buffer, &file->cache[(sectoroffs * CD_FRAME_SIZE) + 24], 2048);
return 1;
}
/* return mode 2 2336 byte data from a RAW sector */
/* return mode 2 2336 byte data from a 2352 byte mode 1 or 2 raw sector (skip the header) */
if ((datatype == CD_TRACK_MODE2) && ((tracktype == CD_TRACK_MODE1_RAW) || (tracktype == CD_TRACK_MODE2_RAW)))
{
memcpy(buffer, &file->cache[(sectoroffs * CD_FRAME_SIZE) + 16], 2048);
memcpy(buffer, &file->cache[(sectoroffs * CD_FRAME_SIZE) + 16], 2336);
return 1;
}