From 45477658e1b34631aaf4c7b6cc15d8ad5e1b92dd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 21 May 2017 13:17:48 +0200 Subject: [PATCH] Rewrite cheats --- managers/cheat_manager.c | 13 ------------- managers/cheat_manager.h | 5 ----- retroarch.c | 27 +++++++++++++++++++++++---- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index 84032044da..1cd839ad10 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -425,19 +425,6 @@ bool cheat_manager_get_code_state(unsigned i) return handle->cheats[i].state; } -void cheat_manager_state_checks( - bool cheat_index_plus_pressed, - bool cheat_index_minus_pressed, - bool cheat_toggle_pressed) -{ - if (cheat_index_plus_pressed) - cheat_manager_index_next(); - else if (cheat_index_minus_pressed) - cheat_manager_index_prev(); - else if (cheat_toggle_pressed) - cheat_manager_toggle(); -} - void cheat_manager_state_free(void) { cheat_manager_free(); diff --git a/managers/cheat_manager.h b/managers/cheat_manager.h index 8fbf62ca48..dc00a60318 100644 --- a/managers/cheat_manager.h +++ b/managers/cheat_manager.h @@ -64,11 +64,6 @@ const char *cheat_manager_get_code(unsigned i); bool cheat_manager_get_code_state(unsigned i); -void cheat_manager_state_checks( - bool cheat_index_plus_pressed, - bool cheat_index_minus_pressed, - bool cheat_toggle_pressed); - void cheat_manager_state_free(void); bool cheat_manager_alloc_if_empty(void); diff --git a/retroarch.c b/retroarch.c index bc1611e680..279400974e 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2699,10 +2699,29 @@ static enum runloop_state runloop_check_state( old_state = new_state; } - cheat_manager_state_checks( - runloop_cmd_triggered(trigger_input, RARCH_CHEAT_INDEX_PLUS), - runloop_cmd_triggered(trigger_input, RARCH_CHEAT_INDEX_MINUS), - runloop_cmd_triggered(trigger_input, RARCH_CHEAT_TOGGLE)); + /* Check cheats */ + { + static bool old_cheat_index_plus = false; + static bool old_cheat_index_minus = false; + static bool old_cheat_index_toggle = false; + bool cheat_index_plus = runloop_cmd_press( + current_input, RARCH_CHEAT_INDEX_PLUS); + bool cheat_index_minus = runloop_cmd_press( + current_input, RARCH_CHEAT_INDEX_MINUS); + bool cheat_index_toggle = runloop_cmd_press( + current_input, RARCH_CHEAT_TOGGLE); + + if (cheat_index_plus && !old_cheat_index_plus) + cheat_manager_index_next(); + else if (cheat_index_minus && !old_cheat_index_minus) + cheat_manager_index_prev(); + else if (cheat_index_toggle && !old_cheat_index_toggle) + cheat_manager_toggle(); + + old_cheat_index_plus = cheat_index_plus; + old_cheat_index_minus = cheat_index_minus; + old_cheat_index_toggle = cheat_index_toggle; + } return RUNLOOP_STATE_ITERATE; }