+ if (PicoPicohw.page > 6)\r
+ PicoPicohw.page = 6;\r
+ plat_status_msg("Page %i", PicoPicohw.page);\r
+ }\r
+}\r
+\r
+static void do_turbo(int *pad, int acts)\r
+{\r
+ static int turbo_pad = 0;\r
+ static unsigned char turbo_cnt[3] = { 0, 0, 0 };\r
+ int inc = currentConfig.turbo_rate * 2;\r
+\r
+ if (acts & 0x1000) {\r
+ turbo_cnt[0] += inc;\r
+ if (turbo_cnt[0] >= 60)\r
+ turbo_pad ^= 0x10, turbo_cnt[0] = 0;\r
+ }\r
+ if (acts & 0x2000) {\r
+ turbo_cnt[1] += inc;\r
+ if (turbo_cnt[1] >= 60)\r
+ turbo_pad ^= 0x20, turbo_cnt[1] = 0;\r
+ }\r
+ if (acts & 0x4000) {\r
+ turbo_cnt[2] += inc;\r
+ if (turbo_cnt[2] >= 60)\r
+ turbo_pad ^= 0x40, turbo_cnt[2] = 0;\r
+ }\r
+ *pad |= turbo_pad & (acts >> 8);\r
+}\r
+\r
+static void run_ui_events(unsigned int which)\r
+{\r
+ if (which & (PEV_STATE_LOAD|PEV_STATE_SAVE))\r
+ {\r
+ int do_it = 1;\r
+ if ( emu_checkSaveFile(state_slot) &&\r
+ (((which & PEV_STATE_LOAD) && (currentConfig.EmuOpt & EOPT_CONFIRM_LOAD)) ||\r
+ ((which & PEV_STATE_SAVE) && (currentConfig.EmuOpt & EOPT_CONFIRM_SAVE))) )\r
+ {\r
+ const char *nm;\r
+ char tmp[64];\r
+ int keys, len;\r
+\r
+ strcpy(tmp, (which & PEV_STATE_LOAD) ? "LOAD STATE?" : "OVERWRITE SAVE?");\r
+ len = strlen(tmp);\r
+ nm = in_get_key_name(-1, -PBTN_MA3);\r
+ snprintf(tmp + len, sizeof(tmp) - len, "(%s=yes, ", nm);\r
+ len = strlen(tmp);\r
+ nm = in_get_key_name(-1, -PBTN_MBACK);\r
+ snprintf(tmp + len, sizeof(tmp) - len, "%s=no)", nm);\r
+\r
+ plat_status_msg_busy_first(tmp);\r
+\r
+ in_set_blocking(1);\r
+ while (in_menu_wait_any(50) & (PBTN_MA3|PBTN_MBACK))\r
+ ;\r
+ while ( !((keys = in_menu_wait_any(50)) & (PBTN_MA3|PBTN_MBACK)) )\r
+ ;\r
+ if (keys & PBTN_MBACK)\r
+ do_it = 0;\r
+ while (in_menu_wait_any(50) & (PBTN_MA3|PBTN_MBACK))\r
+ ;\r
+ in_set_blocking(0);\r
+ }\r
+ if (do_it) {\r
+ plat_status_msg_busy_first((which & PEV_STATE_LOAD) ? "LOADING GAME" : "SAVING GAME");\r
+ PicoStateProgressCB = plat_status_msg_busy_next;\r
+ emu_SaveLoadGame((which & PEV_STATE_LOAD) ? 1 : 0, 0);\r
+ PicoStateProgressCB = NULL;\r
+ }\r