Mercurial > repos > blastem
diff genesis.c @ 2336:83f5529086c5
Make bogus word RAM read more appropriately bogus
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 31 Aug 2023 20:28:33 -0700 |
parents | c05b7c5e6f11 |
children | f8b5142c06aa |
line wrap: on
line diff
--- a/genesis.c Sat Aug 26 20:32:53 2023 -0700 +++ b/genesis.c Thu Aug 31 20:28:33 2023 -0700 @@ -285,13 +285,29 @@ uint32_t word_ram_end = cd->base + 0x240000; if (address >= word_ram && address < word_ram_end) { //FIXME: first word should just be garbage - address -= 2; + if (!cd->has_vdp_dma_value) { + cd->vdp_dma_value = read_word(genesis->m68k->last_prefetch_address, (void **)genesis->m68k->mem_pointers, &genesis->m68k->options->gen, genesis->m68k); + cd->has_vdp_dma_value = 1; + } + uint16_t ret = cd->vdp_dma_value; + cd->vdp_dma_value = read_word(address, (void **)genesis->m68k->mem_pointers, &genesis->m68k->options->gen, genesis->m68k); + return ret; } } return read_word(address, (void **)genesis->m68k->mem_pointers, &genesis->m68k->options->gen, genesis->m68k); } +void vdp_dma_started(void) +{ + genesis_context *genesis = (genesis_context *)current_system; + if (genesis->expansion) { + segacd_context *cd = genesis->expansion; + cd->has_vdp_dma_value = 0; + } +} + + static uint16_t get_open_bus_value(system_header *system) { genesis_context *genesis = (genesis_context *)system;