From 7b477878870fcc7d6a19bd2b1700394484e825e8 Mon Sep 17 00:00:00 2001 From: meleu Date: Fri, 3 May 2019 01:59:05 -0300 Subject: [PATCH 1/2] handle hardcore mode toggle for cheevos-new --- menu/cbs/menu_cbs_ok.c | 1 + 1 file changed, 1 insertion(+) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 954247b691..040d723c5b 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -3271,6 +3271,7 @@ static int action_ok_cheevos_toggle_hardcore_mode(const char *path, { #ifdef HAVE_CHEEVOS cheevos_hardcore_paused = !cheevos_hardcore_paused; + rcheevos_hardcore_paused = !rcheevos_hardcore_paused; #endif generic_action_ok_command(CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE); return generic_action_ok_command(CMD_EVENT_RESUME); From eb81597871e780dd2c0295e37a08efcbfe7ae757 Mon Sep 17 00:00:00 2001 From: meleu Date: Fri, 3 May 2019 02:19:13 -0300 Subject: [PATCH 2/2] ignore buggy leaderboards --- cheevos-new/cheevos.c | 15 ++++++++++++--- deps/rcheevos/src/rcheevos/lboard.c | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/cheevos-new/cheevos.c b/cheevos-new/cheevos.c index fabeb4ae88..7650591837 100644 --- a/cheevos-new/cheevos.c +++ b/cheevos-new/cheevos.c @@ -283,6 +283,8 @@ static const char* rcheevos_rc_error(int ret) static int rcheevos_parse(const char* json) { + char buffer[256]; + settings_t *settings = config_get_ptr(); int res = 0; int i = 0; unsigned j = 0; @@ -380,11 +382,18 @@ static int rcheevos_parse(const char* json) lboard->info = rcheevos_locals.patchdata.lboards + j; res = rc_lboard_size(lboard->info->mem); + CHEEVOS_LOG(RCHEEVOS_TAG "rc_lboard_size() = %d\n", res); + if (res < 0) { - CHEEVOS_ERR(RCHEEVOS_TAG "Error in leaderboard mem %s: %s", - lboard->info->mem, rcheevos_rc_error(res)); - goto error; + snprintf(buffer, sizeof(buffer), "Error in leaderboard %d \"%s\"", lboard->info->id, lboard->info->title); + + if (settings->bools.cheevos_verbose_enable) + runloop_msg_queue_push(buffer, 0, 3 * 60, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + + CHEEVOS_ERR(RCHEEVOS_TAG "%s: '%s' mem: %s\n", buffer, rcheevos_rc_error(res), lboard->info->mem); + lboard->lboard = NULL; + continue; } lboard->lboard = (rc_lboard_t*)calloc(1, res); diff --git a/deps/rcheevos/src/rcheevos/lboard.c b/deps/rcheevos/src/rcheevos/lboard.c index a0e8334d38..20f8a2bd85 100644 --- a/deps/rcheevos/src/rcheevos/lboard.c +++ b/deps/rcheevos/src/rcheevos/lboard.c @@ -166,6 +166,8 @@ int rc_evaluate_lboard(rc_lboard_t* self, unsigned* value, rc_peek_t peek, void* int start_ok, cancel_ok, submit_ok; int action = -1; + if (!self) return RC_LBOARD_INACTIVE; + rc_update_memref_values(self->memrefs, peek, peek_ud); /* ASSERT: these are always tested once every frame, to ensure delta variables work properly */