Sonic CD runs on GP2X
[picodrive.git] / Pico / Memory.c
index 3104eb4..509fead 100644 (file)
@@ -319,14 +319,16 @@ static void OtherWrite8(u32 a,u32 d,int realsize)
     //int lineCycles=(488-SekCyclesLeft)&0x1ff;\r
     d&=1; d^=1;\r
     if(!d) {\r
-       // hack: detect a nasty situation where Z80 was enabled and disabled in the same 68k timeslice (Golden Axe III)\r
-      // if((PicoOpt&4) && Pico.m.z80Run==1) z80_run(20); // FIXME: movies\r
-      z80stopCycle = SekCyclesDone();\r
-      //z80ExtraCycles += (lineCycles>>1)-(lineCycles>>5); // only meaningful in PicoFrameHints()\r
+      // this is for a nasty situation where Z80 was enabled and disabled in the same 68k timeslice (Golden Axe III)\r
+      if (Pico.m.z80Run) {\r
+        int lineCycles=(488-SekCyclesLeft)&0x1ff;\r
+        z80stopCycle = SekCyclesDone();\r
+        lineCycles=(lineCycles>>1)-(lineCycles>>5);\r
+        z80_run(lineCycles);\r
+      }\r
     } else {\r
       z80startCycle = SekCyclesDone();\r
       //if(Pico.m.scanline != -1)\r
-      //z80ExtraCycles -= (lineCycles>>1)-(lineCycles>>5)+16;\r
     }\r
     dprintf("set_zrun: %02x [%i|%i] @%06x", d, Pico.m.scanline, SekCyclesDone(), /*mz80GetRegisterValue(NULL, 0),*/ SekPc);\r
     Pico.m.z80Run=(u8)d; return;\r
@@ -621,7 +623,7 @@ static void CPU_CALL PicoWrite32(u32 a,u32 d)
 \r
 \r
 // -----------------------------------------------------------------\r
-int PicoMemInit()\r
+void PicoMemSetup()\r
 {\r
 #ifdef EMU_C68K\r
   // Setup memory callbacks:\r
@@ -633,7 +635,6 @@ int PicoMemInit()
   PicoCpu.write16=PicoWrite16;\r
   PicoCpu.write32=PicoWrite32;\r
 #endif\r
-  return 0;\r
 }\r
 \r
 #ifdef EMU_A68K\r