shithub: psxe

Download patch

ref: f045f88884bbcce444bb87bdab6b8c67dbc088ec
parent: b2573590362f6fe26e15bcd6a13b367156e942d6
author: Lycoder <aurealinbox@gmail.com>
date: Thu Jun 15 07:15:31 EDT 2023

Implement GPU DMA to RAM request mode

--- a/psx/dev/dma.c
+++ b/psx/dev/dma.c
@@ -177,12 +177,22 @@
 
     uint32_t size = BCR_SIZE(gpu) * BCR_BCNT(gpu);
 
-    for (int i = 0; i < size; i++) {
-        uint32_t data = psx_bus_read32(dma->bus, dma->gpu.madr);
+    if (CHCR_TDIR(gpu)) {
+        for (int i = 0; i < size; i++) {
+            uint32_t data = psx_bus_read32(dma->bus, dma->gpu.madr);
 
-        psx_bus_write32(dma->bus, 0x1f801810, data);
+            psx_bus_write32(dma->bus, 0x1f801810, data);
 
-        dma->gpu.madr += CHCR_STEP(gpu) ? -4 : 4;
+            dma->gpu.madr += CHCR_STEP(gpu) ? -4 : 4;
+        }
+    } else {
+        for (int i = 0; i < size; i++) {
+            uint32_t data = psx_bus_read32(dma->bus, 0x1f801810);
+
+            psx_bus_write32(dma->bus, dma->gpu.madr, data);
+
+            dma->gpu.madr += CHCR_STEP(gpu) ? -4 : 4;
+        }
     }
 }
 
--