- if (PicoOpt & POPT_ALT_RENDERER) {\r
- if (currentConfig.EmuOpt & EOPT_WIZ_TEAR_FIX) {\r
- gp2x_video_changemode(-8);\r
- vidcpyM2 = vidcpy_m2_rot;\r
- osd_text = osd_text8_rot;\r
- } else {\r
- gp2x_video_changemode(8);\r
- vidcpyM2 = vidcpy_m2;\r
- osd_text = osd_text8;\r
+ PicoOpt &= ~POPT_ALT_RENDERER;\r
+ emu_scan_begin = NULL;\r
+ emu_scan_end = NULL;\r
+\r
+ switch (renderer) {\r
+ case RT_16BIT:\r
+ PicoDrawSetOutFormat(PDF_RGB555, 0);\r
+ PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
+ break;\r
+ case RT_8BIT_ACC:\r
+ PicoDrawSetOutFormat(PDF_8BIT, 0);\r
+ PicoDrawSetOutBuf(g_screen_ptr, g_screen_width);\r
+ gp2x_mode = 8;\r
+ break;\r
+ case RT_8BIT_FAST:\r
+ PicoOpt |= POPT_ALT_RENDERER;\r
+ PicoDrawSetOutFormat(PDF_NONE, 0);\r
+ vidcpyM2 = vidcpy_m2;\r
+ gp2x_mode = 8;\r
+ break;\r
+ default:\r
+ printf("bad renderer\n");\r
+ break;\r
+ }\r
+\r
+ if (PicoAHW & PAHW_32X) {\r
+ // Wiz 16bit is an exception, uses line rendering due to rotation mess\r
+ if (renderer == RT_16BIT && (currentConfig.EmuOpt & EOPT_WIZ_TEAR_FIX)) {\r
+ PicoDrawSetOutFormat(PDF_RGB555, 1);\r
+ PicoDraw32xSetFrameMode(0, 0);\r