aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxcd
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2023-06-20 03:17:34 +0200
committerspicyjpeg <thatspicyjpeg@gmail.com>2023-06-20 03:17:34 +0200
commiteaea5649a0803cc4bfeb6d21ee9f4098d4b493fc (patch)
tree786f6edfae0c6affe0d7c7b222cd12f52578ca01 /libpsn00b/psxcd
parent7eed71a90bed67e4a987a9db55e15e9403523dca (diff)
downloadpsn00bsdk-eaea5649a0803cc4bfeb6d21ee9f4098d4b493fc.tar.gz
Fix IRQ bugs, PutDispEnv() PAL screen centering
Diffstat (limited to 'libpsn00b/psxcd')
-rw-r--r--libpsn00b/psxcd/cdread.c2
-rw-r--r--libpsn00b/psxcd/common.c6
2 files changed, 5 insertions, 3 deletions
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;