diff --git a/cheevos-new/cheevos.c b/cheevos-new/cheevos.c index fc77092c07..52845ab668 100644 --- a/cheevos-new/cheevos.c +++ b/cheevos-new/cheevos.c @@ -952,6 +952,7 @@ bool rcheevos_unload(void) rcheevos_locals.lboards = NULL; rcheevos_loaded = false; + rcheevos_hardcore_active = false; rcheevos_hardcore_paused = false; rcheevos_state_loaded_flag = false; } diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index 8a05ca3499..1db9eb9130 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -2263,6 +2263,7 @@ bool cheevos_unload(void) cheevos_locals.unofficial.count = 0; cheevos_loaded = false; + cheevos_hardcore_active = false; cheevos_hardcore_paused = false; cheevos_state_loaded_flag = false; @@ -2282,6 +2283,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..a4d8986067 100644 --- a/retroarch.c +++ b/retroarch.c @@ -4167,12 +4167,11 @@ 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)