revive pandora and win32 builds, rm gp2x dep for linux, lots of refactoring
[libpicofe.git] / gp2x / emu.c
index 49f7149..b1b314e 100644 (file)
@@ -40,21 +40,6 @@ static int osd_fps_x, osd_y;
 \r
 extern void *gp2x_screens[4];\r
 \r
-int plat_get_root_dir(char *dst, int len)\r
-{\r
-       extern char **g_argv;\r
-       int j;\r
-\r
-       strncpy(dst, g_argv[0], len);\r
-       len -= 32; // reserve\r
-       if (len < 0) len = 0;\r
-       dst[len] = 0;\r
-       for (j = strlen(dst); j > 0; j--)\r
-               if (dst[j] == '/') { dst[j+1] = 0; break; }\r
-\r
-       return j + 1;\r
-}\r
-\r
 \r
 static void scaling_update(void)\r
 {\r
@@ -76,21 +61,7 @@ void pemu_prep_defconfig(void)
 {\r
        gp2x_soc_t soc;\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.CPUclock = default_cpu_clock;\r
-       defaultConfig.volume = 50;\r
-       defaultConfig.gamma = 100;\r
-       defaultConfig.scaling = 0;\r
-       defaultConfig.turbo_rate = 15;\r
 \r
        soc = soc_detect();\r
        if (soc == SOCID_MMSP2)\r
@@ -99,6 +70,23 @@ void pemu_prep_defconfig(void)
                defaultConfig.EmuOpt |= EOPT_WIZ_TEAR_FIX|EOPT_SHOW_RTC;\r
 }\r
 \r
+void pemu_validate_config(void)\r
+{\r
+       gp2x_soc_t soc;\r
+\r
+       soc = soc_detect();\r
+       if (soc != SOCID_MMSP2)\r
+               PicoOpt &= ~POPT_EXT_FM;\r
+       if (soc != SOCID_POLLUX)\r
+               currentConfig.EmuOpt &= ~EOPT_WIZ_TEAR_FIX;\r
+\r
+       if (currentConfig.gamma < 10 || currentConfig.gamma > 300)\r
+               currentConfig.gamma = 100;\r
+\r
+       if (currentConfig.CPUclock < 10 || currentConfig.CPUclock > 1024)\r
+               currentConfig.CPUclock = default_cpu_clock;\r
+}\r
+\r
 static void (*osd_text)(int x, int y, const char *text);\r
 \r
 static void osd_text8(int x, int y, const char *text)\r
@@ -346,13 +334,13 @@ void pemu_update_display(const char *fps, const char *notice)
                }\r
        }\r
 \r
-       if (notice || (emu_opt & 2)) {\r
+       if (notice || (emu_opt & EOPT_SHOW_FPS)) {\r
                if (notice)\r
                        osd_text(4, osd_y, notice);\r
                if (emu_opt & 2)\r
                        osd_text(osd_fps_x, osd_y, fps);\r
        }\r
-       if ((emu_opt & 0x400) && (PicoAHW & PAHW_MCD))\r
+       if ((PicoAHW & PAHW_MCD) && (emu_opt & EOPT_EN_CD_LEDS))\r
                draw_cd_leds();\r
        if (PicoAHW & PAHW_PICO)\r
                draw_pico_ptr();\r