+void do_emu_action(void)
+{
+ int ret;
+
+ emu_action_old = emu_action;
+
+ switch (emu_action) {
+ case SACTION_NONE:
+ return;
+ case SACTION_ENTER_MENU:
+ menu_loop();
+ return;
+ case SACTION_LOAD_STATE:
+ ret = emu_load_state(state_slot);
+ snprintf(hud_msg, sizeof(hud_msg), ret == 0 ? "LOADED" : "FAIL!");
+ break;
+ case SACTION_SAVE_STATE:
+ ret = emu_save_state(state_slot);
+ snprintf(hud_msg, sizeof(hud_msg), ret == 0 ? "SAVED" : "FAIL!");
+ break;
+ case SACTION_NEXT_SSLOT:
+ state_slot++;
+ if (state_slot > 9)
+ state_slot = 0;
+ goto do_state_slot;
+ case SACTION_PREV_SSLOT:
+ state_slot--;
+ if (state_slot < 0)
+ state_slot = 9;
+ goto do_state_slot;
+ case SACTION_TOGGLE_FSKIP:
+ UseFrameSkip ^= 1;
+ snprintf(hud_msg, sizeof(hud_msg), "FRAMESKIP %s",
+ UseFrameSkip ? "ON" : "OFF");
+ break;
+ }
+ hud_new_msg = 3;
+ return;
+
+do_state_slot:
+ snprintf(hud_msg, sizeof(hud_msg), "STATE SLOT %d [%s]", state_slot,
+ emu_check_state(state_slot) == 0 ? "USED" : "FREE");
+ hud_new_msg = 3;
+}
+