From 426f9c68902d0a65a6d89cc43efc90ab61eb84a0 Mon Sep 17 00:00:00 2001 From: TartanSpartan Date: Wed, 11 Feb 2026 16:10:54 +0000 Subject: [PATCH] =?UTF-8?q?Fix=20issue=20for=20some=20cheats=20across=20bu?= =?UTF-8?q?ild=20optimizations=1B[D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/game/cheats.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/game/cheats.c b/src/game/cheats.c index 4567f5e30..80c551090 100644 --- a/src/game/cheats.c +++ b/src/game/cheats.c @@ -309,7 +309,7 @@ MenuItemHandlerResult cheatCheckboxMenuHandler(s32 operation, struct menuitem *i return false; } - if (g_CheatsEnabledBank1 & (1 << item->param)) { + if (g_CheatsEnabledBank1 & (1 << (item->param - 32))) { return true; } @@ -334,11 +334,12 @@ MenuItemHandlerResult cheatCheckboxMenuHandler(s32 operation, struct menuitem *i } } else { // Bank 1 - if (g_CheatsEnabledBank1 & (1 << item->param)) { + if (g_CheatsEnabledBank1 & (1 << (item->param - 32))) { + // We need to subtract 32 on lines like these to avoid undefined behavior, namely ensuring that all cheats are toggled correctly and regardless of build optimiaztion if (1); - g_CheatsEnabledBank1 = g_CheatsEnabledBank1 & ~(1 << item->param); + g_CheatsEnabledBank1 = g_CheatsEnabledBank1 & ~(1 << (item->param - 32)); } else { - g_CheatsEnabledBank1 = g_CheatsEnabledBank1 | 1 << item->param; + g_CheatsEnabledBank1 = g_CheatsEnabledBank1 | (1 << (item->param - 32)); } } }