diff segacd.c @ 2500:d44fe974fb85

Get blastem compiling with new 68K core
author Michael Pavone <pavone@retrodev.com>
date Tue, 30 Apr 2024 22:32:08 -0700
parents d74d3998482c
children 0775f5e0c468
line wrap: on
line diff
--- a/segacd.c	Tue Apr 30 00:02:14 2024 -0700
+++ b/segacd.c	Tue Apr 30 22:32:08 2024 -0700
@@ -449,7 +449,11 @@
 	m68k_context *m68k = vcontext;
 	genesis_context *gen = m68k->system;
 	segacd_context *cd = gen->expansion;
+#ifdef NEW_CORE
+	uint16_t open_bus = m68k->prefetch;
+#else
 	uint16_t open_bus = read_word(m68k->last_prefetch_address, (void **)m68k->mem_pointers, &m68k->opts->gen, m68k);
+#endif
 	if (cd->bram_cart_id > 7) {
 		// No cart, just return open bus
 		return open_bus;
@@ -477,19 +481,31 @@
 	segacd_context *cd = gen->expansion;
 	if (!(address & 1) || cd->bram_cart_id > 7) {
 		//open bus
+#ifdef NEW_CORE
+		return (address & 1) ? m68k->prefetch : m68k->prefetch >> 8;
+#else
 		return read_byte(m68k->last_prefetch_address | (address & 1), (void **)m68k->mem_pointers, &m68k->opts->gen, m68k);
+#endif
 	}
 	address &= 0x3FFFFF;
 	if (address < 0x200000) {
 		if (address < 0x100000) {
 			return cd->bram_cart_id;
 		}
+#ifdef NEW_CORE
+		return m68k->prefetch;
+#else
 		return read_byte(m68k->last_prefetch_address | 1, (void **)m68k->mem_pointers, &m68k->opts->gen, m68k);
+#endif
 	} else {
 		address &= 0x1FFFFF;
 		uint32_t end = 0x2000 << (1 + cd->bram_cart_id);
 		if (address >= end) {
+#ifdef NEW_CORE
+			return m68k->prefetch;
+#else
 			return read_byte(m68k->last_prefetch_address | 1, (void **)m68k->mem_pointers, &m68k->opts->gen, m68k);
+#endif
 		}
 		return cd->bram_cart[address >> 1];
 	}