FAMEC idle loops, PSP port sync, minor adjustments
[libpicofe.git] / common / emu.c
index 1d57e22..44e15a6 100644 (file)
@@ -43,6 +43,7 @@ int state_slot = 0;
 int config_slot = 0, config_slot_current = 0;\r
 char lastRomFile[512];\r
 int kb_combo_keys = 0, kb_combo_acts = 0;      // keys and actions which need button combos\r
+int pico_inp_mode = 0;\r
 \r
 unsigned char *movie_data = NULL;\r
 static int movie_size = 0;\r
@@ -971,3 +972,60 @@ int emu_SaveLoadGame(int load, int sram)
        }\r
 }\r
 \r
+void emu_changeFastForward(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
+               currentConfig.EmuOpt |= 0x40000;\r
+               is_on = 1;\r
+               strcpy(noticeMsg, "FAST FORWARD   ");\r
+               emu_noticeMsgUpdated();\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
+               is_on = 0;\r
+       }\r
+}\r
+\r
+void emu_RunEventsPico(unsigned int events)\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
+               emu_noticeMsgUpdated();\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
+               emu_noticeMsgUpdated();\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
+               emu_noticeMsgUpdated();\r
+       }\r
+}\r
+\r
+\r
+\r
+\r