ABC turbo
[picodrive.git] / platform / common / emu.c
index c482673..5b69357 100644 (file)
@@ -1026,6 +1026,27 @@ void emu_RunEventsPico(unsigned int events)
        }\r
 }\r
 \r
-\r
-\r
+void emu_DoTurbo(int *pad, int acts)\r
+{\r
+       static int turbo_pad = 0;\r
+       static unsigned char turbo_cnt[3] = { 0, 0, 0 };\r
+       int inc = currentConfig.turbo_rate * 2;\r
+\r
+       if (acts & 0x1000) {\r
+               turbo_cnt[0] += inc;\r
+               if (turbo_cnt[0] >= 60)\r
+                       turbo_pad ^= 0x10, turbo_cnt[0] = 0;\r
+       }\r
+       if (acts & 0x2000) {\r
+               turbo_cnt[1] += inc;\r
+               if (turbo_cnt[1] >= 60)\r
+                       turbo_pad ^= 0x20, turbo_cnt[1] = 0;\r
+       }\r
+       if (acts & 0x4000) {\r
+               turbo_cnt[2] += inc;\r
+               if (turbo_cnt[2] >= 60)\r
+                       turbo_pad ^= 0x40, turbo_cnt[2] = 0;\r
+       }\r
+       *pad |= turbo_pad & (acts >> 8);\r
+}\r
 \r