From 15cbd1b69ddcf14cc18f41f917eb022e8e309667 Mon Sep 17 00:00:00 2001 From: Robin Jones Date: Sun, 26 Jan 2025 16:07:07 +0000 Subject: [PATCH] Work towards #75 Currently only handles the settings and features required. Co-Authored-By: Robin Jones --- src/flashcart/64drive/64drive.c | 1 + src/flashcart/flashcart.h | 3 ++- src/flashcart/sc64/sc64.c | 1 + src/menu/settings.c | 3 +++ src/menu/settings.h | 9 ++++++--- src/menu/views/flashcart_info.c | 4 +++- src/menu/views/settings_editor.c | 2 ++ 7 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/flashcart/64drive/64drive.c b/src/flashcart/64drive/64drive.c index 98e28fc1..6419663b 100644 --- a/src/flashcart/64drive/64drive.c +++ b/src/flashcart/64drive/64drive.c @@ -78,6 +78,7 @@ static bool d64_has_feature (flashcart_features_t feature) { case FLASHCART_FEATURE_AUTO_CIC: return true; case FLASHCART_FEATURE_AUTO_REGION: return true; case FLASHCART_FEATURE_SAVE_WRITEBACK: return true; + case FLASHCART_FEATURE_ROM_REBOOT_FAST: return true; default: return false; } } diff --git a/src/flashcart/flashcart.h b/src/flashcart/flashcart.h index 4a191290..243f85f6 100644 --- a/src/flashcart/flashcart.h +++ b/src/flashcart/flashcart.h @@ -33,7 +33,8 @@ typedef enum { FLASHCART_FEATURE_AUTO_REGION, FLASHCART_FEATURE_DIAGNOSTIC_DATA, FLASHCART_FEATURE_BIOS_UPDATE_FROM_MENU, - FLASHCART_FEATURE_SAVE_WRITEBACK + FLASHCART_FEATURE_SAVE_WRITEBACK, + FLASHCART_FEATURE_ROM_REBOOT_FAST } flashcart_features_t; /** @brief Flashcart save type enumeration */ diff --git a/src/flashcart/sc64/sc64.c b/src/flashcart/sc64/sc64.c index e53c3e27..266f5422 100644 --- a/src/flashcart/sc64/sc64.c +++ b/src/flashcart/sc64/sc64.c @@ -266,6 +266,7 @@ static bool sc64_has_feature (flashcart_features_t feature) { case FLASHCART_FEATURE_AUTO_REGION: return true; case FLASHCART_FEATURE_DIAGNOSTIC_DATA: return true; case FLASHCART_FEATURE_SAVE_WRITEBACK: return true; + case FLASHCART_FEATURE_ROM_REBOOT_FAST: return true; default: return false; } } diff --git a/src/menu/settings.c b/src/menu/settings.c index 92e04992..782c6ec6 100644 --- a/src/menu/settings.c +++ b/src/menu/settings.c @@ -18,6 +18,7 @@ static settings_t init = { .soundfx_enabled = false, .loading_progress_bar_enabled = true, .rom_autoload_enabled = false, + .rom_fast_reboot_enabled = false, .rom_autoload_path = "", .rom_autoload_filename = "", @@ -51,6 +52,7 @@ void settings_load (settings_t *settings) { settings->loading_progress_bar_enabled = mini_get_bool(ini, "menu", "loading_progress_bar_enabled", init.loading_progress_bar_enabled); settings->rom_autoload_enabled = mini_get_bool(ini, "menu", "autoload_rom_enabled", init.rom_autoload_enabled); + settings->rom_autoload_enabled = mini_get_bool(ini, "menu", "reboot_rom_enabled", init.rom_fast_reboot_enabled); settings->rom_autoload_path = strdup(mini_get_string(ini, "autoload", "rom_path", init.rom_autoload_path)); settings->rom_autoload_filename = strdup(mini_get_string(ini, "autoload", "rom_filename", init.rom_autoload_filename)); @@ -73,6 +75,7 @@ void settings_save (settings_t *settings) { mini_set_bool(ini, "menu", "soundfx_enabled", settings->soundfx_enabled); mini_set_bool(ini, "menu", "loading_progress_bar_enabled", settings->loading_progress_bar_enabled); mini_set_bool(ini, "menu", "autoload_rom_enabled", settings->rom_autoload_enabled); + mini_set_bool(ini, "menu", "reboot_rom_enabled", settings->rom_fast_reboot_enabled); mini_set_string(ini, "autoload", "rom_path", settings->rom_autoload_path); mini_set_string(ini, "autoload", "rom_filename", settings->rom_autoload_filename); diff --git a/src/menu/settings.h b/src/menu/settings.h index f0e4d59d..72fe46ec 100644 --- a/src/menu/settings.h +++ b/src/menu/settings.h @@ -31,18 +31,21 @@ typedef struct { /** @brief Enable Background music */ bool bgm_enabled; - /** @brief Enable Sounds */ + /** @brief Enable Sound effects within the menu */ bool soundfx_enabled; - /** @brief Enable rumble feedback */ + /** @brief Enable rumble feedback within the menu */ bool rumble_enabled; /** @brief Show progress bar when loading a ROM */ bool loading_progress_bar_enabled; - /** @brief Enable the ability to bypass the menu and instantly load a ROM */ + /** @brief Enable the ability to bypass the menu and instantly load a ROM on power and reset button */ bool rom_autoload_enabled; + /** @brief Enable the ability to bypass the menu and instantly load a ROM on reset button */ + bool rom_fast_reboot_enabled; + /** @brief A path to the autoloaded ROM */ char *rom_autoload_path; diff --git a/src/menu/views/flashcart_info.c b/src/menu/views/flashcart_info.c index 64ee2060..2a5c968c 100644 --- a/src/menu/views/flashcart_info.c +++ b/src/menu/views/flashcart_info.c @@ -70,6 +70,7 @@ static void draw (menu_t *menu, surface_t *d) { " Region Detection: %s.\n" " Save Writeback: %s.\n" " Auto F/W Updates: %s.\n" + " Fast ROM Reboots: %s.\n" "\n\n", format_cart_type(), format_cart_version(), @@ -79,7 +80,8 @@ static void draw (menu_t *menu, surface_t *d) { format_boolean_type(flashcart_has_feature(FLASHCART_FEATURE_AUTO_CIC)), format_boolean_type(flashcart_has_feature(FLASHCART_FEATURE_AUTO_REGION)), format_boolean_type(flashcart_has_feature(FLASHCART_FEATURE_SAVE_WRITEBACK)), - format_boolean_type(flashcart_has_feature(FLASHCART_FEATURE_BIOS_UPDATE_FROM_MENU)) + format_boolean_type(flashcart_has_feature(FLASHCART_FEATURE_BIOS_UPDATE_FROM_MENU)), + format_boolean_type(flashcart_has_feature(FLASHCART_FEATURE_ROM_REBOOT_FAST)) //TODO: display the battery and temperature information (if available). //format_diagnostic_data(flashcart_has_feature(FLASHCART_FEATURE_DIAGNOSTIC_DATA)) diff --git a/src/menu/views/settings_editor.c b/src/menu/views/settings_editor.c index a7e33be7..a8d1203c 100644 --- a/src/menu/views/settings_editor.c +++ b/src/menu/views/settings_editor.c @@ -137,6 +137,7 @@ static void draw (menu_t *menu, surface_t *d) { "\n\n" " Default Directory : %s\n\n" " Autoload ROM : %s\n" + " Fast Reboot ROM : %s\n" " ROM Loading Bar : %s\n\n" "To change the following menu settings, press 'A':\n" " Show Hidden Files : %s\n" @@ -153,6 +154,7 @@ static void draw (menu_t *menu, surface_t *d) { , menu->settings.default_directory, format_switch(menu->settings.rom_autoload_enabled), + format_switch(menu->settings.rom_fast_reboot_enabled), format_switch(menu->settings.loading_progress_bar_enabled), format_switch(menu->settings.show_protected_entries), format_switch(menu->settings.use_saves_folder),