diff options
| author | spicyjpeg <thatspicyjpeg@gmail.com> | 2023-06-20 03:17:34 +0200 |
|---|---|---|
| committer | spicyjpeg <thatspicyjpeg@gmail.com> | 2023-06-20 03:17:34 +0200 |
| commit | eaea5649a0803cc4bfeb6d21ee9f4098d4b493fc (patch) | |
| tree | 786f6edfae0c6affe0d7c7b222cd12f52578ca01 /libpsn00b/psxcd | |
| parent | 7eed71a90bed67e4a987a9db55e15e9403523dca (diff) | |
| download | psn00bsdk-eaea5649a0803cc4bfeb6d21ee9f4098d4b493fc.tar.gz | |
Fix IRQ bugs, PutDispEnv() PAL screen centering
Diffstat (limited to 'libpsn00b/psxcd')
| -rw-r--r-- | libpsn00b/psxcd/cdread.c | 2 | ||||
| -rw-r--r-- | libpsn00b/psxcd/common.c | 6 |
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; |
