pandora: tripplebuffer fbdev out, refactoring
[libpicofe.git] / common / emu.c
index e916b3f..bde10e4 100644 (file)
@@ -730,6 +730,27 @@ static void make_config_cfg(char *cfg_buff_512)
        cfg_buff_512[511] = 0;\r
 }\r
 \r
+void emu_prep_defconfig(void)\r
+{\r
+       memset(&defaultConfig, 0, sizeof(defaultConfig));\r
+       defaultConfig.EmuOpt    = 0x9d | EOPT_RAM_TIMINGS|EOPT_CONFIRM_SAVE|EOPT_EN_CD_LEDS;\r
+       defaultConfig.s_PicoOpt = POPT_EN_STEREO|POPT_EN_FM|POPT_EN_PSG|POPT_EN_Z80 |\r
+                                 POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_SVP_DRC|POPT_ACC_SPRITES |\r
+                                 POPT_EN_32X|POPT_EN_PWM;\r
+       defaultConfig.s_PsndRate = 44100;\r
+       defaultConfig.s_PicoRegion = 0; // auto\r
+       defaultConfig.s_PicoAutoRgnOrder = 0x184; // US, EU, JP\r
+       defaultConfig.s_PicoCDBuffers = 0;\r
+       defaultConfig.Frameskip = -1; // auto\r
+       defaultConfig.volume = 50;\r
+       defaultConfig.gamma = 100;\r
+       defaultConfig.scaling = 0;\r
+       defaultConfig.turbo_rate = 15;\r
+\r
+       // platform specific overrides\r
+       pemu_prep_defconfig();\r
+}\r
+\r
 void emu_set_defconfig(void)\r
 {\r
        memcpy(&currentConfig, &defaultConfig, sizeof(currentConfig));\r
@@ -786,7 +807,7 @@ int emu_read_config(int game, int no_defaults)
                }\r
        }\r
 \r
-       plat_validate_config();\r
+       pemu_validate_config();\r
 \r
        // some sanity checks\r
 #ifdef PSP\r
@@ -1514,6 +1535,9 @@ void emu_loop(void)
 \r
                emu_update_input();\r
                PicoFrame();\r
+               pemu_finalize_frame(fpsbuff, notice_msg);\r
+\r
+               //plat_video_flip();\r
 \r
                /* frame limiter */\r
                if (!reset_timing && !(currentConfig.EmuOpt & (EOPT_NO_FRMLIMIT|EOPT_EXT_FRMLIMIT)))\r
@@ -1531,7 +1555,9 @@ void emu_loop(void)
                        }\r
                }\r
 \r
-               pemu_update_display(fpsbuff, notice_msg);\r
+               // XXX: for some plats it might be better to flip before vsync\r
+               // (due to shadow registers in display hw)\r
+               plat_video_flip();\r
 \r
                pframes_done++; frames_done++; frames_shown++;\r
        }\r