Mercurial > repos > blastem
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: |