aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxcd/getsector.c
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2022-10-06 12:15:24 +0200
committerspicyjpeg <thatspicyjpeg@gmail.com>2022-10-06 12:15:24 +0200
commit6ee55c23b042a1559e8cabfccf3b9d3320c4c5cc (patch)
tree1bc6862819944ecbe8a19054ad18597c473b81b5 /libpsn00b/psxcd/getsector.c
parentc4a2533d21dfd05cde841ea48c67b05e0e6a853f (diff)
downloadpsn00bsdk-6ee55c23b042a1559e8cabfccf3b9d3320c4c5cc.tar.gz
Replace psxgpu debug font, add CdGetSector2()
Diffstat (limited to 'libpsn00b/psxcd/getsector.c')
-rw-r--r--libpsn00b/psxcd/getsector.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/libpsn00b/psxcd/getsector.c b/libpsn00b/psxcd/getsector.c
new file mode 100644
index 0000000..bc1c8ae
--- /dev/null
+++ b/libpsn00b/psxcd/getsector.c
@@ -0,0 +1,35 @@
+/*
+ * PSn00bSDK CD drive library (sector DMA API)
+ * (C) 2022 spicyjpeg - MPL licensed
+ */
+
+#include <stdint.h>
+#include <psxcd.h>
+#include <hwregs_c.h>
+
+/* DMA transfer functions */
+
+int CdGetSector(void *madr, int size) {
+ //while (!(CD_STAT & (1 << 6)))
+ //__asm__ volatile("");
+
+ DMA_MADR(3) = (uint32_t) madr;
+ DMA_BCR(3) = size | (1 << 16);
+ DMA_CHCR(3) = 0x11000000;
+
+ while (DMA_CHCR(3) & (1 << 24))
+ __asm__ volatile("");
+
+ return 1;
+}
+
+int CdGetSector2(void *madr, int size) {
+ //while (!(CD_STAT & (1 << 6)))
+ //__asm__ volatile("");
+
+ DMA_MADR(3) = (uint32_t) madr;
+ DMA_BCR(3) = size | (1 << 16);
+ DMA_CHCR(3) = 0x11400100; // Transfer 1 word every 16 CPU cycles
+
+ return 1;
+}