32x: drc: inline dispatcher and irq handling; do write-caused irqs
[picodrive.git] / pico / pico.c
index c4b9031..d312386 100644 (file)
@@ -61,7 +61,7 @@ void PicoPower(void)
   Pico.m.frame_count = 0;\r
 \r
   // clear all memory of the emulated machine\r
-  memset(&Pico.ram,0,(unsigned int)&Pico.rom-(unsigned int)&Pico.ram);\r
+  memset(&Pico.ram,0,(unsigned char *)&Pico.rom - Pico.ram);\r
 \r
   memset(&Pico.video,0,sizeof(Pico.video));\r
   memset(&Pico.m,0,sizeof(Pico.m));\r
@@ -77,7 +77,7 @@ void PicoPower(void)
   if (PicoAHW & PAHW_MCD)\r
     PicoPowerMCD();\r
 \r
-  if (!(PicoOpt & POPT_DIS_32X))\r
+  if (PicoOpt & POPT_EN_32X)\r
     PicoPower32x();\r
 \r
   PicoReset();\r
@@ -192,7 +192,7 @@ int PicoReset(void)
   if (!(PicoOpt & POPT_DIS_IDLE_DET))\r
     SekInitIdleDet();\r
 \r
-  if (!(PicoOpt & POPT_DIS_32X)) {\r
+  if (PicoOpt & POPT_EN_32X) {\r
     PicoReset32x();\r
     return 0;\r
   }\r
@@ -218,6 +218,9 @@ void PicoLoopPrepare(void)
 \r
   // FIXME: PAL has 313 scanlines..\r
   scanlines_total = Pico.m.pal ? 312 : 262;\r
+\r
+  if (PicoAHW & PAHW_32X)\r
+    p32x_timers_recalc();\r
 }\r
 \r
 \r