+static void run_events_ui(unsigned int which)\r
+{\r
+ if (which & (PEV_STATE_LOAD|PEV_STATE_SAVE))\r
+ {\r
+ int do_it = 1;\r
+ if ( emu_check_save_file(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_save_load_game((which & PEV_STATE_LOAD) ? 1 : 0, 0);\r
+ PicoStateProgressCB = NULL;\r
+ }\r
+ }\r
+ if (which & PEV_SWITCH_RND)\r
+ {\r
+ plat_video_toggle_renderer();\r
+ }\r
+ if (which & (PEV_SSLOT_PREV|PEV_SSLOT_NEXT))\r
+ {\r
+ if (which & PEV_SSLOT_PREV) {\r
+ state_slot -= 1;\r
+ if (state_slot < 0)\r
+ state_slot = 9;\r
+ } else {\r
+ state_slot += 1;\r
+ if (state_slot > 9)\r
+ state_slot = 0;\r
+ }\r
+\r
+ plat_status_msg("SAVE SLOT %i [%s]", state_slot,\r
+ emu_check_save_file(state_slot) ? "USED" : "FREE");\r
+ }\r
+ if (which & PEV_MENU)\r
+ engineState = PGS_Menu;\r
+}\r
+\r
+void emu_update_input(void)\r
+{\r
+ static int prev_events = 0;\r
+ int actions[IN_BINDTYPE_COUNT] = { 0, };\r
+ int pl_actions[2];\r
+ int events;\r
+\r
+ in_update(actions);\r
+\r
+ pl_actions[0] = actions[IN_BINDTYPE_PLAYER12];\r
+ pl_actions[1] = actions[IN_BINDTYPE_PLAYER12] >> 16;\r
+\r
+ PicoPad[0] = pl_actions[0] & 0xfff;\r
+ PicoPad[1] = pl_actions[1] & 0xfff;\r