\r
void emu_32x_startup(void)\r
{\r
- plat_video_toggle_renderer(0, 1, 0);\r
+ plat_video_toggle_renderer(0, 0);\r
system_announce();\r
}\r
\r
PicoStateProgressCB = NULL;\r
}\r
}\r
- if ((which & PEV_SWITCH_RND) && !(PicoAHW & PAHW_32X))\r
+ if (which & PEV_SWITCH_RND)\r
{\r
- plat_video_toggle_renderer(1, 0, 0);\r
+ plat_video_toggle_renderer(1, 0);\r
}\r
if (which & (PEV_SSLOT_PREV|PEV_SSLOT_NEXT))\r
{\r
{\r
if ((currentConfig.EmuOpt & EOPT_NO_FRMLIMIT) && currentConfig.Frameskip >= 0)\r
pframes_done = 0;\r
- else {\r
+ else\r
pframes_done -= target_fps;\r
- /* don't allow it to drift during heavy slowdowns */\r
- if (pframes_done < -5) {\r
- reset_timing = 1;\r
- continue;\r
- }\r
- if (pframes_done < -2)\r
- pframes_done = -2;\r
+ if (pframes_done < -2) {\r
+ /* don't drag more than 2 frames behind */\r
+ pframes_done = -2;\r
+ timestamp_base = timestamp - 2 * target_frametime;\r
}\r
- timestamp_base += ms_to_ticks(1000);\r
+ else\r
+ timestamp_base += ms_to_ticks(1000);\r
}\r
\r
diff = timestamp - timestamp_base;\r
else if (diff > diff_lim)\r
{\r
/* no time left for this frame - skip */\r
- if (diff - diff_lim >= ms_to_ticks(200)) {\r
- /* if too much behind, reset instead */\r
- reset_timing = 1;\r
+ /* limit auto frameskip to 8 */\r
+ if (frames_done / 8 <= frames_shown) {\r
+ emu_update_input();\r
+ skip_frame(diff < diff_lim + target_frametime * 16);\r
+ pframes_done++; frames_done++;\r
continue;\r
}\r
- emu_update_input();\r
- skip_frame(diff < diff_lim + target_frametime * 2);\r
- pframes_done++; frames_done++;\r
- continue;\r
}\r
\r
emu_update_input();\r