From eaea5649a0803cc4bfeb6d21ee9f4098d4b493fc Mon Sep 17 00:00:00 2001 From: spicyjpeg Date: Tue, 20 Jun 2023 03:17:34 +0200 Subject: Fix IRQ bugs, PutDispEnv() PAL screen centering --- libpsn00b/psxcd/cdread.c | 2 +- libpsn00b/psxcd/common.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'libpsn00b/psxcd') diff --git a/libpsn00b/psxcd/cdread.c b/libpsn00b/psxcd/cdread.c index 1adc255..7f480db 100644 --- a/libpsn00b/psxcd/cdread.c +++ b/libpsn00b/psxcd/cdread.c @@ -47,7 +47,7 @@ static void _sector_callback(CdlIntrResult irq, uint8_t *result) { CdCommandF(CdlPause, 0, 0); _cd_override_callback = (CdlCB) 0; - if (!_pending_attempts && _read_callback) + if ((!_pending_sectors || !_pending_attempts) && _read_callback) _read_callback(irq, result); _read_timeout = VSync(-1) + CD_READ_COOLDOWN; diff --git a/libpsn00b/psxcd/common.c b/libpsn00b/psxcd/common.c index 438fcc1..e452b91 100644 --- a/libpsn00b/psxcd/common.c +++ b/libpsn00b/psxcd/common.c @@ -203,9 +203,11 @@ static void _cd_irq_handler(void) { /* Initialization */ int CdInit(void) { - EnterCriticalSection(); + int _exit = EnterCriticalSection(); + InterruptCallback(IRQ_CD, &_cd_irq_handler); - ExitCriticalSection(); + if (_exit) + ExitCriticalSection(); BUS_CD_CFG = 0x00020943; -- cgit v1.2.3