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;
+ }
}
}
--
⑨