also small refactoring to read function, might be more accurate
(but surely wrong for width 1)
gpu.dma.h = size_word >> 16;
gpu.dma.offset = 0;
gpu.dma.h = size_word >> 16;
gpu.dma.offset = 0;
+ renderer_flush_queues();
+ if (is_read) {
+ // XXX: wrong for width 1
+ memcpy(&gpu.gp0, VRAM_MEM_XY(gpu.dma.x, gpu.dma.y), 4);
+ }
- renderer_flush_queues();
renderer_invalidate_caches(gpu.dma.x, gpu.dma.y, gpu.dma.w, gpu.dma.h);
}
renderer_invalidate_caches(gpu.dma.x, gpu.dma.y, gpu.dma.w, gpu.dma.h);
}
uint32_t GPUreadData(void)
{
uint32_t GPUreadData(void)
{
if (unlikely(gpu.cmd_len > 0))
flush_cmd_buffer();
if (unlikely(gpu.cmd_len > 0))
flush_cmd_buffer();
- do_vram_io(&gpu.gp0, 1, 1);
+ do_vram_io(&ret, 1, 1);
+ log_io("gpu_read %08x\n", ret);
+ return ret;
}
uint32_t GPUreadStatus(void)
}
uint32_t GPUreadStatus(void)