//in_probe();\r
 \r
        plat_target_init();\r
-       plat_init();\r
-       menu_init();\r
 \r
        emu_prep_defconfig(); // depends on input\r
        emu_read_config(NULL, 0);\r
 \r
+       plat_init();\r
+       menu_init();\r
        emu_init();\r
 \r
        engineState = PGS_Menu;\r
 
 {
        mee_onoff("Accurate sprites", MA_OPT_ACC_SPRITES, PicoIn.opt, POPT_ACC_SPRITES),
        mee_onoff("autoload savestates", MA_OPT_AUTOLOAD_SAVE, g_autostateld_opt, 1),
+       mee_onoff("SDL fullscreen mode", MA_OPT_VOUT_FULL, plat_target.vout_fullscreen, 1),
        mee_end,
 };
 
 
 void plat_video_set_size(int w, int h)
 {
        if (area.w != w || area.h != h) {
-               area = (struct area) { w, h };
-
                if (plat_sdl_change_video_mode(w, h, 0) < 0) {
                        // failed, revert to original resolution
                        plat_sdl_change_video_mode(g_screen_width, g_screen_height, 0);
                        g_screen_ppitch = w;
                        g_screen_ptr = plat_sdl_screen->pixels;
                }
+               area = (struct area) { w, h };
        }
 }
 
 void plat_video_clear_buffers(void)
 {
        if (plat_sdl_overlay != NULL || plat_sdl_gl_active)
-               memset(shadow_fb, 0, plat_sdl_screen->w*plat_sdl_screen->h * 2);
+               memset(shadow_fb, 0, g_menuscreen_w * g_menuscreen_h * 2);
        else {
                memset(g_screen_ptr, 0, plat_sdl_screen->w*plat_sdl_screen->h * 2);
                clear_buf_cnt = 3; // do it thrice in case of triple buffering