comparison vdp.c @ 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
comparison
equal deleted inserted replaced
141:576f55711d8d 142:b42bcfa09cce
217 case 0x80: 217 case 0x80:
218 switch(context->dma_cd & 0xF) 218 switch(context->dma_cd & 0xF)
219 { 219 {
220 case VRAM_WRITE: 220 case VRAM_WRITE:
221 //Charles MacDonald's VDP doc says that the low byte gets written first 221 //Charles MacDonald's VDP doc says that the low byte gets written first
222 //this doesn't make a lot of sense to me, but until I've had a change to 222 context->vdpmem[context->address] = context->dma_val;
223 //verify it myself, I'll assume it's true 223 context->dma_val = (context->dma_val << 8) | ((context->dma_val >> 8) & 0xFF);
224 if (context->flags & FLAG_DMA_PROG) {
225 context->vdpmem[context->address ^ 1] = context->dma_val >> 8;
226 context->flags &= ~FLAG_DMA_PROG;
227 } else {
228 context->vdpmem[context->address] = context->dma_val;
229 context->flags |= FLAG_DMA_PROG;
230 }
231 break; 224 break;
232 case CRAM_WRITE: 225 case CRAM_WRITE:
233 context->cram[(context->address/2) & (CRAM_SIZE-1)] = context->dma_val; 226 context->cram[(context->address/2) & (CRAM_SIZE-1)] = context->dma_val;
234 break; 227 break;
235 case VSRAM_WRITE: 228 case VSRAM_WRITE: