Mercurial > repos > blastem
diff blastem.c @ 981:902c53d9c16f
Half assed, prefetch based open bus value emulation. Gets BlastEm up to 119/122 in VDP FIFO Testing
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 24 Apr 2016 02:19:48 -0700 |
parents | 34b811ea1e7c |
children | 2bc27415565b |
line wrap: on
line diff
--- a/blastem.c Sun Apr 24 01:24:38 2016 -0700 +++ b/blastem.c Sun Apr 24 02:19:48 2016 -0700 @@ -144,6 +144,11 @@ return 0; } +uint16_t get_open_bus_value() +{ + return read_dma_value(genesis->m68k->last_prefetch_address/2); +} + void adjust_int_cycle(m68k_context * context, vdp_context * v_context) { //static int old_int_cycle = CYCLE_NEVER; @@ -705,8 +710,7 @@ } else { if (location == 0x1100) { value = z80_enabled ? !z80_get_busack(gen->z80, context->current_cycle) : !gen->z80->busack; - //TODO: actual pre-fetch emulation - value |= 0x4E; + value |= (get_open_bus_value() >> 8) & 0xFE; dprintf("Byte read of BUSREQ returned %d @ %d (reset: %d)\n", value, context->current_cycle, gen->z80->reset); } else if (location == 0x1200) { value = !gen->z80->reset; @@ -726,8 +730,7 @@ value = value | (value << 8); } else { value <<= 8; - //TODO: actual pre-fetch emulation - value |= 0x73; + value |= get_open_bus_value() & 0xFF; } return value; }