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;
 }