+void emu_video_mode_change(int start_line, int line_count, int is_32cols)\r
+{\r
+ int scalex = 320, scaley = 240;\r
+ int ln_offs = 0;\r
+\r
+ if (doing_bg_frame)\r
+ return;\r
+\r
+ osd_fps_x = OSD_FPS_X;\r
+ osd_y = 232;\r
+\r
+ /* set up hwscaling here */\r
+ PicoOpt &= ~POPT_DIS_32C_BORDER;\r
+ if (is_32cols && currentConfig.scaling == EOPT_SCALE_HW) {\r
+ scalex = 256;\r
+ PicoOpt |= POPT_DIS_32C_BORDER;\r
+ osd_fps_x = OSD_FPS_X - 64;\r
+ }\r
+\r
+ if (currentConfig.vscaling == EOPT_SCALE_HW) {\r
+ ln_offs = start_line;\r
+ scaley = line_count;\r
+ osd_y = start_line + line_count - 8;\r
+ }\r
+\r
+ gp2x_video_RGB_setscaling(ln_offs, scalex, scaley);\r
+\r
+ /* line doubling */\r
+ if (currentConfig.vscaling == EOPT_SCALE_SW && line_count < 240) {\r
+ ld_lines = ld_left = line_count / (240 - line_count);\r
+ PicoDrawSetCallbacks(EmuScanBegin16_ld, EmuScanEnd16_ld);\r
+ }\r
+\r
+ // clear whole screen in all buffers\r
+ if (!is_16bit_mode())\r
+ gp2x_memset_all_buffers(0, 0xe0, 320*240);\r
+ else\r
+ gp2x_memset_all_buffers(0, 0, 320*240*2);\r
+}\r
+\r