diff --git a/source/arm11/menu/menu_func.c b/source/arm11/menu/menu_func.c index a569443..f4427ad 100644 --- a/source/arm11/menu/menu_func.c +++ b/source/arm11/menu/menu_func.c @@ -711,6 +711,10 @@ char firm_path[FF_MAX_LFN + 1]; u32 result = 1; + + bool accept_downgrades = false; + if (configDataExist(KDevMode) && (*(bool*) configGetData(KDevMode))) + accept_downgrades = true; // file browser dialogue @@ -742,7 +746,13 @@ u32 version = 0; s32 res = loadVerifyUpdate(firm_path, &version); - if (res != 0) + if (!accept_downgrades && (res == UPDATE_ERR_DOWNGRADE)) + { + ee_printf(ESC_SCHEME_BAD "failed!\n" ESC_RESET); + ee_printf("A newer version is already installed.\n"); + goto fail; + } + else if (res != 0) { ee_printf(ESC_SCHEME_BAD "failed!\n" ESC_RESET); switch ( res ) @@ -755,10 +765,6 @@ ee_printf("Not a fastboot3DS update firmware.\n"); break; - case UPDATE_ERR_DOWNGRADE: - ee_printf("A newer version is already installed.\n"); - break; - case UPDATE_ERR_NOT_INSTALLED: ee_printf("Update is not possible.\n"); break;