diff options
| author | spicyjpeg <thatspicyjpeg@gmail.com> | 2022-10-16 23:52:19 +0200 |
|---|---|---|
| committer | spicyjpeg <thatspicyjpeg@gmail.com> | 2022-10-16 23:52:19 +0200 |
| commit | 03434a230d8c3ed2e32a3885128e05e42ee11769 (patch) | |
| tree | d7b06d4bce91472a1f01b9fb3a5965a9822c1a90 /libpsn00b/psxcd/getsector.c | |
| parent | 6eabb5aa549254c2272cedee26d4245f31f2dc7a (diff) | |
| download | psn00bsdk-03434a230d8c3ed2e32a3885128e05e42ee11769.tar.gz | |
Add mdec/strvideo example, fix psxpress bug
Diffstat (limited to 'libpsn00b/psxcd/getsector.c')
| -rw-r--r-- | libpsn00b/psxcd/getsector.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/libpsn00b/psxcd/getsector.c b/libpsn00b/psxcd/getsector.c index bc1c8ae..ee5315a 100644 --- a/libpsn00b/psxcd/getsector.c +++ b/libpsn00b/psxcd/getsector.c @@ -7,6 +7,16 @@ #include <psxcd.h> #include <hwregs_c.h> +#define DATA_SYNC_TIMEOUT 0x100000 + +/* Private utilities */ + +#ifdef NDEBUG +#define _LOG(...) +#else +#define _LOG(...) printf(__VA_ARGS__) +#endif + /* DMA transfer functions */ int CdGetSector(void *madr, int size) { @@ -33,3 +43,16 @@ int CdGetSector2(void *madr, int size) { return 1; } + +int CdDataSync(int mode) { + if (mode) + return (DMA_CHCR(3) >> 24) & 1; + + for (int i = DATA_SYNC_TIMEOUT; i; i--) { + if (!(DMA_CHCR(3) & (1 << 24))) + return 0; + } + + _LOG("psxcd: CdDataSync() timeout\n"); + return -1; +} |
