further prep for Wiz port. Cleanups, rm cpuctrl mmuhack; add warm
[libpicofe.git] / gp2x / emu.c
index 585c1d5..592c360 100644 (file)
@@ -15,7 +15,7 @@
 #include <stdarg.h>\r
 \r
 #include "emu.h"\r
-#include "gp2x.h"\r
+#include "plat_gp2x.h"\r
 #include "soc.h"\r
 #include "../common/menu.h"\r
 #include "../common/arm_utils.h"\r
@@ -24,7 +24,6 @@
 #include "../common/config.h"\r
 #include "../common/input.h"\r
 #include "../linux/sndout_oss.h"\r
-#include "cpuctrl.h"\r
 #include "version.h"\r
 \r
 #include <pico/pico_int.h>\r
@@ -129,7 +128,7 @@ void emu_Deinit(void)
 \r
        // restore gamma\r
        if (gp2x_old_gamma != 100)\r
-               set_gamma(100, 0);\r
+               set_lcd_gamma(100, 0);\r
 }\r
 \r
 void emu_prepareDefaultConfig(void)\r
@@ -142,7 +141,7 @@ void emu_prepareDefaultConfig(void)
        defaultConfig.s_PicoAutoRgnOrder = 0x184; // US, EU, JP\r
        defaultConfig.s_PicoCDBuffers = 0;\r
        defaultConfig.Frameskip = -1; // auto\r
-       defaultConfig.CPUclock = 200;\r
+       defaultConfig.CPUclock = -1;\r
        defaultConfig.volume = 50;\r
        defaultConfig.gamma = 100;\r
        defaultConfig.scaling = 0;\r
@@ -762,7 +761,7 @@ static void tga_dump(void)
 \r
 void emu_Loop(void)\r
 {\r
-       static int gp2x_old_clock = 200, EmuOpt_old = 0;\r
+       static int gp2x_old_clock = -1, EmuOpt_old = 0;\r
        char fpsbuff[24]; // fps count c string\r
        struct timeval tval; // timing\r
        int pframes_done, pframes_shown, pthissec; // "period" frames, used for sync\r
@@ -772,25 +771,41 @@ void emu_Loop(void)
 \r
        printf("entered emu_Loop()\n");\r
 \r
+       if ((EmuOpt_old ^ currentConfig.EmuOpt) & EOPT_RAM_TIMINGS) {\r
+               if (currentConfig.EmuOpt & EOPT_RAM_TIMINGS)\r
+                       /* craigix: --cas 2 --trc 6 --tras 4 --twr 1 --tmrd 1 --trfc 1 --trp 2 --trcd 2 */\r
+                       set_ram_timings(2, 6, 4, 1, 1, 1, 2, 2);\r
+               else\r
+                       unset_ram_timings();\r
+       }\r
+\r
+       if (gp2x_old_clock < 0)\r
+               gp2x_old_clock = default_cpu_clock;\r
+       if (currentConfig.CPUclock < 0)\r
+               currentConfig.CPUclock = default_cpu_clock;\r
        if (gp2x_old_clock != currentConfig.CPUclock) {\r
                printf("changing clock to %i...", currentConfig.CPUclock); fflush(stdout);\r
-               set_FCLK(currentConfig.CPUclock);\r
+               gp2x_set_cpuclk(currentConfig.CPUclock);\r
                gp2x_old_clock = currentConfig.CPUclock;\r
                printf(" done\n");\r
        }\r
 \r
        if (gp2x_old_gamma != currentConfig.gamma || (EmuOpt_old&0x1000) != (currentConfig.EmuOpt&0x1000)) {\r
-               set_gamma(currentConfig.gamma, !!(currentConfig.EmuOpt&0x1000));\r
+               set_lcd_gamma(currentConfig.gamma, !!(currentConfig.EmuOpt&0x1000));\r
                gp2x_old_gamma = currentConfig.gamma;\r
                printf("updated gamma to %i, A_SN's curve: %i\n", currentConfig.gamma, !!(currentConfig.EmuOpt&0x1000));\r
        }\r
 \r
-       if ((EmuOpt_old&0x2000) != (currentConfig.EmuOpt&0x2000)) {\r
-               if (currentConfig.EmuOpt&0x2000)\r
-                    set_LCD_custom_rate(Pico.m.pal ? LCDR_100 : LCDR_120);\r
-               else unset_LCD_custom_rate();\r
+       if ((EmuOpt_old ^ currentConfig.EmuOpt) & EOPT_PSYNC) {\r
+               if (currentConfig.EmuOpt & EOPT_PSYNC)\r
+                       set_lcd_custom_rate(Pico.m.pal);\r
+               else\r
+                       unset_lcd_custom_rate();\r
        }\r
 \r
+       if ((EmuOpt_old ^ currentConfig.EmuOpt) & EOPT_MMUHACK)\r
+               gp2x_make_fb_bufferable(currentConfig.EmuOpt & EOPT_MMUHACK);\r
+\r
        EmuOpt_old = currentConfig.EmuOpt;\r
        fpsbuff[0] = 0;\r
 \r