[Core/CD] fixed AUDIO tracks length calculation when using separated files (WAV/OGG/BIN) with INDEX pause defined in CUE file

This commit is contained in:
EkeEke 2015-08-26 23:52:19 +02:00
parent e0351dbf61
commit f9e74075ad
2 changed files with 7 additions and 3 deletions

View File

@ -20,10 +20,11 @@ Genesis Plus GX 1.7.5 (xx/xx/xxxx) (Eke-Eke)
* improved savestate format
* improved Sub-CPU synchronization with Main-CPU (fixes "Soul Star")
* improved Main-CPU & Sub-CPU idle loop detection (fixes "Super League CD")
* disabled 68k and Z80 access to PRG-RAM when SUB-CPU is running (fixes USA version of Dungeon Explorer )
* disabled 68k and Z80 access to PRG-RAM when SUB-CPU is running (fixes "Dungeon Explorer")
* disabled CD hardware reset on Soft-Reset (verified on real hardware)
* fixed DATA track minimal length (fixes BIOS refusing to boot small homebrew demos)
* fixed CDD "no disc" status code (fixes boot sequence loading time when no disc is loaded)
* fixed AUDIO tracks length calculation when using separated files (WAV/OGG/BIN) with INDEX pause defined in CUE file
* fixed OGG file seeking when using with CUE file
* fixed PRG-RAM access from MAIN-CPU side on system reset
* fixed state loading bug when SUB-CPU interrupt is pending

View File

@ -582,8 +582,8 @@ int cdd_load(char *filename, char *header)
}
else
{
/* current track start time (based on previous track end time + current file absolute time + PREGAP length) */
cdd.toc.tracks[cdd.toc.last].start = cdd.toc.end + bb + ss*75 + mm*60*75 + pregap;
/* current file start time (based on previous track end time + PREGAP length) */
cdd.toc.tracks[cdd.toc.last].start = cdd.toc.end + pregap;
/* adjust current track file read offset with previous track end time (only used for AUDIO track) */
cdd.toc.tracks[cdd.toc.last].offset += cdd.toc.end * 2352;
@ -630,6 +630,9 @@ int cdd_load(char *filename, char *header)
fseek(cdd.toc.tracks[cdd.toc.last].fd, 0, SEEK_SET);
}
/* adjust track start time (based on current file start time + index absolute time) */
cdd.toc.tracks[cdd.toc.last].start += (bb + ss*75 + mm*60*75);
/* update TOC end */
cdd.toc.end = cdd.toc.tracks[cdd.toc.last].end;
}