diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index 8a05ca3499..615b610255 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -2282,6 +2282,9 @@ bool cheevos_toggle_hardcore_mode(void) const char *msg = msg_hash_to_str( MSG_CHEEVOS_HARDCORE_MODE_ENABLE); + /* reset the state loaded flag in case it was set */ + cheevos_state_loaded_flag = false; + /* send reset core cmd to avoid any user * savestate previusly loaded. */ command_event(CMD_EVENT_RESET, NULL); diff --git a/command.c b/command.c index 38456a7d79..918e57d358 100755 --- a/command.c +++ b/command.c @@ -1730,7 +1730,10 @@ static bool command_event_main_state(unsigned cmd) { #ifdef HAVE_CHEEVOS /* RCHEEVOS TODO: remove duplication below */ - rcheevos_state_loaded_flag = cheevos_state_loaded_flag = true; + if (cheevos_hardcore_active) + cheevos_state_loaded_flag = true; + if (rcheevos_hardcore_active) + rcheevos_state_loaded_flag = true; #endif ret = true; #ifdef HAVE_NETWORKING diff --git a/retroarch.c b/retroarch.c index 7085aceb36..6bf030fb59 100644 --- a/retroarch.c +++ b/retroarch.c @@ -4167,28 +4167,22 @@ static enum runloop_state runloop_check_state( /* RCHEEVOS TODO: remove the 'rcheevos_*' below */ rcheevos_hardcore_active = settings->bools.cheevos_enable && settings->bools.cheevos_hardcore_mode_enable - && rcheevos_loaded && rcheevos_hardcore_paused; + && rcheevos_loaded && !rcheevos_hardcore_paused; cheevos_hardcore_active = settings->bools.cheevos_enable && settings->bools.cheevos_hardcore_mode_enable - && cheevos_loaded && cheevos_hardcore_paused; + && cheevos_loaded && !cheevos_hardcore_paused; - if (!settings->bools.cheevos_old_enable) - { - if (rcheevos_hardcore_active && rcheevos_state_loaded_flag) - { - rcheevos_hardcore_paused = true; - runloop_msg_queue_push(msg_hash_to_str(MSG_CHEEVOS_HARDCORE_MODE_DISABLED), 0, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - } - } - else - { - if (cheevos_hardcore_active && cheevos_state_loaded_flag) - { - cheevos_hardcore_paused = true; - runloop_msg_queue_push(msg_hash_to_str(MSG_CHEEVOS_HARDCORE_MODE_DISABLED), 0, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - } - } + rcheevos_hardcore_paused = !settings->bools.cheevos_old_enable + && rcheevos_hardcore_active + && rcheevos_state_loaded_flag; + + cheevos_hardcore_paused = settings->bools.cheevos_old_enable + && cheevos_hardcore_active + && cheevos_state_loaded_flag; + + if (rcheevos_hardcore_paused || cheevos_hardcore_paused) + runloop_msg_queue_push(msg_hash_to_str(MSG_CHEEVOS_HARDCORE_MODE_DISABLED), 0, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); if (!(rcheevos_hardcore_active || cheevos_hardcore_active)) #endif