From 341eb2c9753ba61a81d4422f283785b666e14e87 Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 3 Nov 2012 22:06:31 +0200 Subject: [PATCH] cdrom: read subq directly, not from thread thread is doing 10 sectors at once, not that accurate.. --- libpcsxcore/cdriso.c | 7 ------- libpcsxcore/cdrom.c | 6 ++++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/libpcsxcore/cdriso.c b/libpcsxcore/cdriso.c index 0089cfea..8a631f42 100644 --- a/libpcsxcore/cdriso.c +++ b/libpcsxcore/cdriso.c @@ -185,13 +185,6 @@ static void *playthread(void *param) cdda_cur_sector++; } - if (subHandle != NULL) { - fseek(subHandle, cdda_cur_sector * SUB_FRAMESIZE, SEEK_SET); - fread(subbuffer, 1, SUB_FRAMESIZE, subHandle); - - if (subChanRaw) DecodeRawSubData(); - } - if (s == 0) { playing = FALSE; initial_offset = 0; diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c index 297c8aee..afacad26 100644 --- a/libpcsxcore/cdrom.c +++ b/libpcsxcore/cdrom.c @@ -541,6 +541,9 @@ static void cdrPlayInterrupt_Autopause() struct SubQ *subq = (struct SubQ *)CDR_getBufferSub(); int track_changed = 0; if (subq != NULL ) { + // update subq + ReadTrack( cdr.SetSectorPlay ); + #ifdef CDR_LOG CDR_LOG( "CDDA SUB - %X:%X:%X\n", subq->AbsoluteAddress[0], subq->AbsoluteAddress[1], subq->AbsoluteAddress[2] ); @@ -958,6 +961,9 @@ void cdrInterrupt() { subq = (struct SubQ *)CDR_getBufferSub(); if (subq != NULL) { + // update subq + ReadTrack( cdr.SetSectorPlay ); + cdr.Result[0] = subq->TrackNumber; cdr.Result[1] = subq->IndexNumber; memcpy(cdr.Result + 2, subq->TrackRelativeAddress, 3); -- 2.39.2