changeset 2673:2c8f541af3c5

Get Pico games running with new 68K core
author Michael Pavone <pavone@retrodev.com>
date Sat, 08 Mar 2025 21:09:54 -0800
parents 6894a25ebfaa
children 07cc0f7109f0
files genesis.c
diffstat 1 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/genesis.c	Sat Mar 08 20:20:23 2025 -0800
+++ b/genesis.c	Sat Mar 08 21:09:54 2025 -0800
@@ -397,7 +397,7 @@
 	}*/
 
 	if (context->status & M68K_STATUS_TRACE || context->trace_pending) {
-		context->target_cycle = context->cycles;
+		context->target_cycle = context->cycles + 1;
 		return;
 	}
 
@@ -795,7 +795,7 @@
 	}*/
 
 	if (context->status & M68K_STATUS_TRACE || context->trace_pending) {
-		context->target_cycle = context->cycles;
+		context->target_cycle = context->cycles + 1;
 		return;
 	}
 
@@ -820,6 +820,11 @@
 		}
 
 	}
+#ifdef NEW_CORE
+	if (context->target_cycle == context->cycles) {
+		context->target_cycle++;
+	}
+#endif
 }
 
 static m68k_context* sync_components_pico(m68k_context * context, uint32_t address)
@@ -2076,7 +2081,11 @@
 	}
 #ifdef NEW_CORE
 	while (!gen->m68k->should_return) {
-		sync_components(gen->m68k, gen->m68k->pc);
+		if (gen->header.type == SYSTEM_PICO || gen->header.type == SYSTEM_COPERA) {
+			sync_components_pico(gen->m68k, gen->m68k->pc);
+		} else {
+			sync_components(gen->m68k, gen->m68k->pc);
+		}
 		m68k_execute(gen->m68k, gen->m68k->target_cycle);
 	}
 	gen->m68k->should_return = 0;
@@ -2104,7 +2113,11 @@
 	}
 #ifdef NEW_CORE
 	while (!gen->m68k->should_return) {
-		sync_components(gen->m68k, gen->m68k->pc);
+		if (gen->header.type == SYSTEM_PICO || gen->header.type == SYSTEM_COPERA) {
+			sync_components_pico(gen->m68k, gen->m68k->pc);
+		} else {
+			sync_components(gen->m68k, gen->m68k->pc);
+		}
 		m68k_execute(gen->m68k, gen->m68k->target_cycle);
 	}
 	gen->m68k->should_return = 0;