diff --git a/HISTORY.txt b/HISTORY.txt index a28a2b6..ffdc520 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -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 diff --git a/core/cd_hw/cdd.c b/core/cd_hw/cdd.c index 96c62f0..1f4d24a 100644 --- a/core/cd_hw/cdd.c +++ b/core/cd_hw/cdd.c @@ -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; }