FAMEC idle loops, PSP port sync, minor adjustments
[picodrive.git] / platform / gp2x / emu.c
index 14080a5..19f3c67 100644 (file)
@@ -55,7 +55,7 @@ int reset_timing = 0;
 \r
 #define PICO_PEN_ADJUST_X 4\r
 #define PICO_PEN_ADJUST_Y 2\r
-static int pico_pen_x = 320/2, pico_pen_y = 240/2, pico_inp_mode = 0;\r
+static int pico_pen_x = 320/2, pico_pen_y = 240/2;\r
 \r
 static void emu_msg_cb(const char *msg);\r
 static void emu_msg_tray_open(void);\r
@@ -436,31 +436,10 @@ static void emu_msg_tray_open(void)
 \r
 static void RunEventsPico(unsigned int events, unsigned int gp2x_keys)\r
 {\r
-       if (events & (1 << 3)) {\r
-               pico_inp_mode++;\r
-               if (pico_inp_mode > 2) pico_inp_mode = 0;\r
-               switch (pico_inp_mode) {\r
-                       case 2: strcpy(noticeMsg, "Input: Pen on Pad      "); break;\r
-                       case 1: strcpy(noticeMsg, "Input: Pen on Storyware"); break;\r
-                       case 0: strcpy(noticeMsg, "Input: Joytick         ");\r
-                               PicoPicohw.pen_pos[0] = PicoPicohw.pen_pos[1] = 0x8000;\r
-                               break;\r
-               }\r
-               gettimeofday(&noticeMsgTime, 0);\r
-       }\r
-       if (events & (1 << 4)) {\r
-               PicoPicohw.page--;\r
-               if (PicoPicohw.page < 0) PicoPicohw.page = 0;\r
-               sprintf(noticeMsg, "Page %i                 ", PicoPicohw.page);\r
-               gettimeofday(&noticeMsgTime, 0);\r
-       }\r
-       if (events & (1 << 5)) {\r
-               PicoPicohw.page++;\r
-               if (PicoPicohw.page > 6) PicoPicohw.page = 6;\r
-               sprintf(noticeMsg, "Page %i                 ", PicoPicohw.page);\r
-               gettimeofday(&noticeMsgTime, 0);\r
-       }\r
-       if (pico_inp_mode != 0) {\r
+       emu_RunEventsPico(events);\r
+\r
+       if (pico_inp_mode != 0)\r
+       {\r
                PicoPad[0] &= ~0x0f; // release UDLR\r
                if (gp2x_keys & GP2X_UP)   { pico_pen_y--; if (pico_pen_y < 0) pico_pen_y = 0; }\r
                if (gp2x_keys & GP2X_DOWN) { pico_pen_y++; if (pico_pen_y > 239-PICO_PEN_ADJUST_Y) pico_pen_y = 239-PICO_PEN_ADJUST_Y; }\r
@@ -512,31 +491,6 @@ static void update_volume(int has_changed, int is_up)
        }\r
 }\r
 \r
-static void change_fast_forward(int set_on)\r
-{\r
-       static void *set_PsndOut = NULL;\r
-       static int set_Frameskip, set_EmuOpt, is_on = 0;\r
-\r
-       if (set_on && !is_on) {\r
-               set_PsndOut = PsndOut;\r
-               set_Frameskip = currentConfig.Frameskip;\r
-               set_EmuOpt = currentConfig.EmuOpt;\r
-               PsndOut = NULL;\r
-               currentConfig.Frameskip = 8;\r
-               currentConfig.EmuOpt &= ~4;\r
-               is_on = 1;\r
-       }\r
-       else if (!set_on && is_on) {\r
-               PsndOut = set_PsndOut;\r
-               currentConfig.Frameskip = set_Frameskip;\r
-               currentConfig.EmuOpt = set_EmuOpt;\r
-               PsndRerate(1);\r
-               update_volume(0, 0);\r
-               reset_timing = 1;\r
-               is_on = 0;\r
-       }\r
-}\r
-\r
 static void RunEvents(unsigned int which)\r
 {\r
        if (which & 0x1800) // save or load (but not both)\r
@@ -668,14 +622,16 @@ static void updateKeys(void)
        if (events & 0x6000)\r
                update_volume(1, events & 0x2000);\r
 \r
-       if ((events ^ prevEvents) & 0x40)\r
-               change_fast_forward(events & 0x40);\r
+       if ((events ^ prevEvents) & 0x40) {\r
+               emu_changeFastForward(events & 0x40);\r
+               update_volume(0, 0);\r
+               reset_timing = 1;\r
+       }\r
 \r
        events &= ~prevEvents;\r
 \r
        if (PicoAHW == PAHW_PICO)\r
                RunEventsPico(events, keys);\r
-\r
        if (events) RunEvents(events);\r
        if (movie_data) emu_updateMovie();\r
 \r
@@ -1044,7 +1000,7 @@ void emu_Loop(void)
                 frames_done++;  frames_shown++;\r
        }\r
 \r
-       change_fast_forward(0);\r
+       emu_changeFastForward(0);\r
 \r
        if (PicoAHW & PAHW_MCD) PicoCDBufferFree();\r
 \r