From 3906be7ec64e5b50bf47e45515c01f00e6ce3c49 Mon Sep 17 00:00:00 2001 From: J-DSilva <44735235+J-DSilva@users.noreply.github.com> Date: Wed, 27 May 2026 22:48:39 +0200 Subject: [PATCH] Refactor hardcore FPGA bits application logic Refactor hardcore mode handling to always set on/off state based on achievements_hardcore_active() status. --- achievements.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/achievements.cpp b/achievements.cpp index 045f3a722..83247883b 100644 --- a/achievements.cpp +++ b/achievements.cpp @@ -1177,9 +1177,12 @@ void achievements_init(void) g_active_handler->init(); // Apply hardcore FPGA bits immediately so restrictions are active before any game loads - if (achievements_hardcore_active() && g_active_handler->set_hardcore) { - g_active_handler->set_hardcore(1); - RA_LOG("Hardcore: FPGA bits applied at core init for %s", g_active_handler->name); + if (g_active_handler->set_hardcore) { + int hardcore_active = achievements_hardcore_active(); + g_active_handler->set_hardcore(hardcore_active ? 1 : 0); + RA_LOG("Hardcore: FPGA bits applied at core init for %s (%s)", + g_active_handler->name, + hardcore_active ? "ENABLED" : "disabled"); } #ifdef HAS_RCHEEVOS @@ -1371,11 +1374,14 @@ void achievements_load_game(const char *rom_path, uint32_t crc32) RA_LOG("--- Game Load Complete, monitoring frames ---"); - // Hardcore mode: let handler set console-specific FPGA bits - if (achievements_hardcore_active() && g_active_handler->set_hardcore) { - g_active_handler->set_hardcore(1); - RA_LOG("Hardcore: FPGA bits applied for %s", g_active_handler->name); - } + // Hardcore mode: always push on/off state so per-core bits cannot remain stale. + if (g_active_handler->set_hardcore) { + int hardcore_active = achievements_hardcore_active(); + g_active_handler->set_hardcore(hardcore_active ? 1 : 0); + RA_LOG("Hardcore: FPGA bits applied for %s (%s)", + g_active_handler->name, + hardcore_active ? "ENABLED" : "disabled"); + } } void achievements_poll(void)