more accuracy fixes
[picodrive.git] / Pico / Sek.c
index b3b35a3..3ce710f 100644 (file)
@@ -41,8 +41,8 @@ static int (*ResetCallback)()=DoReset;
 \r
 \r
 \r
-// interrupt acknowledgment\r
 #ifdef EMU_C68K\r
+// interrupt acknowledgment\r
 static void SekIntAck(int level)\r
 {\r
   // try to emulate VDP's reaction to 68000 int ack\r
@@ -72,6 +72,12 @@ static int SekUnrecognizedOpcode()
     PicoCpu.stopped = 1;\r
     return 1;\r
   }\r
+#ifdef EMU_M68K // debugging cyclone\r
+  {\r
+    extern int have_illegal;\r
+    have_illegal = 1;\r
+  }\r
+#endif\r
   //exit(1);\r
   return 0;\r
 }\r
@@ -143,12 +149,10 @@ int SekReset()
   PicoInitPc(M68000_regs.pc);\r
 #endif\r
 #ifdef EMU_M68K\r
-  {\r
-    void *oldcontext = m68ki_cpu_p;\r
-    m68k_set_context(&PicoM68kCPU);\r
-    m68k_pulse_reset();\r
-    m68k_set_context(oldcontext);\r
-  }\r
+  m68k_set_context(&PicoM68kCPU); // if we ever reset m68k, we always need it's context to be set\r
+  m68ki_cpu.sp[0]=0;\r
+  m68k_set_irq(0);\r
+  m68k_pulse_reset();\r
 #endif\r
 \r
   return 0;\r
@@ -190,3 +194,11 @@ void SekState(unsigned char *data)
   memcpy(data+0x40,&PicoM68kCPU.pc, 0x04);\r
 #endif\r
 }\r
+\r
+void SekSetRealTAS(int use_real)\r
+{\r
+#ifdef EMU_C68K\r
+  CycloneSetRealTAS(use_real);\r
+#endif\r
+}\r
+\r