changeset 142:b42bcfa09cce

Fix DMA fills to VRAM
author Mike Pavone <pavone@retrodev.com>
date Mon, 31 Dec 2012 18:22:25 -0800
parents 576f55711d8d
children e5487ef04619
files vdp.c
diffstat 1 files changed, 2 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/vdp.c	Mon Dec 31 18:12:08 2012 -0800
+++ b/vdp.c	Mon Dec 31 18:22:25 2012 -0800
@@ -219,15 +219,8 @@
 			{
 			case VRAM_WRITE:
 				//Charles MacDonald's VDP doc says that the low byte gets written first
-				//this doesn't make a lot of sense to me, but until I've had a change to
-				//verify it myself, I'll assume it's true
-				if (context->flags & FLAG_DMA_PROG) {
-					context->vdpmem[context->address ^ 1] = context->dma_val >> 8;
-					context->flags &= ~FLAG_DMA_PROG;
-				} else {
-					context->vdpmem[context->address] = context->dma_val;
-					context->flags |= FLAG_DMA_PROG;
-				}
+				context->vdpmem[context->address] = context->dma_val;
+				context->dma_val = (context->dma_val << 8) | ((context->dma_val >> 8) & 0xFF);
 				break;
 			case CRAM_WRITE:
 				context->cram[(context->address/2) & (CRAM_SIZE-1)] = context->dma_val;