mirror of
https://github.com/Polprzewodnikowy/N64FlashcartMenu.git
synced 2024-12-11 03:04:20 +01:00
3becd1ff59
<!--- Provide a general summary of your changes in the Title above --> ## Description <!--- Describe your changes in detail --> This PR changes most of the calls to the fatfs lib with the standard C ones. Additionally, there's couple of changes required to adapt to new interface and several bug fixes. As a bonus menu can now be run in ares emulator and on the iQue player, adapting to the available storage options - DragonFS in the ROM and iQue flash modules (bbfs). ## Motivation and Context <!--- What does this sample do? What problem does it solve? --> <!--- If it fixes/closes/resolves an open issue, please link to the issue here --> To make it easier to use storage medium other than SD cards on platforms other than N64 with flashcart. ## How Has This Been Tested? <!-- (if applicable) --> <!--- Please describe in detail how you tested your sample/changes. --> <!--- Include details of your testing environment, and the tests you ran to --> <!--- see how your change affects other areas of the code, etc. --> SummerCart64 flashcart and ares emulator ## Screenshots <!-- (if appropriate): --> N/A ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Improvement (non-breaking change that adds a new feature) - [x] Bug fix (fixes an issue) - [x] Breaking change (breaking change) - [x] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [x] My code follows the code style of this project. - [x] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: Polprzewodnikowy <sc@mateuszfaderewski.pl>
68 lines
2.4 KiB
C
68 lines
2.4 KiB
C
#include <libdragon.h>
|
|
#include <mini.c/src/mini.h>
|
|
|
|
#include "settings.h"
|
|
#include "utils/fs.h"
|
|
|
|
|
|
static char *settings_path = NULL;
|
|
|
|
|
|
static settings_t init = {
|
|
.pal60_enabled = false,
|
|
.show_protected_entries = false,
|
|
.default_directory = "/",
|
|
.use_saves_folder = true,
|
|
|
|
/* Beta feature flags (should always init to off) */
|
|
.bgm_enabled = false,
|
|
.sound_enabled = false,
|
|
.rumble_enabled = false,
|
|
};
|
|
|
|
|
|
void settings_init (char *path) {
|
|
if (settings_path) {
|
|
free(settings_path);
|
|
}
|
|
settings_path = strdup(path);
|
|
}
|
|
|
|
void settings_load (settings_t *settings) {
|
|
if (!file_exists(settings_path)) {
|
|
settings_save(&init);
|
|
}
|
|
|
|
mini_t *ini = mini_try_load(settings_path);
|
|
|
|
settings->pal60_enabled = mini_get_bool(ini, "menu", "pal60", init.pal60_enabled); // TODO: consider changing file setting name
|
|
settings->show_protected_entries = mini_get_bool(ini, "menu", "show_protected_entries", init.show_protected_entries);
|
|
settings->default_directory = strdup(mini_get_string(ini, "menu", "default_directory", init.default_directory));
|
|
settings->use_saves_folder = mini_get_bool(ini, "menu", "use_saves_folder", init.use_saves_folder);
|
|
|
|
/* Beta feature flags, they might not be in the file */
|
|
settings->bgm_enabled = mini_get_bool(ini, "menu_beta_flag", "bgm_enabled", init.bgm_enabled);
|
|
settings->sound_enabled = mini_get_bool(ini, "menu_beta_flag", "sound_enabled", init.sound_enabled);
|
|
settings->rumble_enabled = mini_get_bool(ini, "menu_beta_flag", "rumble_enabled", init.rumble_enabled);
|
|
|
|
mini_free(ini);
|
|
}
|
|
|
|
void settings_save (settings_t *settings) {
|
|
mini_t *ini = mini_create(settings_path);
|
|
|
|
mini_set_bool(ini, "menu", "pal60", settings->pal60_enabled);
|
|
mini_set_bool(ini, "menu", "show_protected_entries", settings->show_protected_entries);
|
|
mini_set_string(ini, "menu", "default_directory", settings->default_directory);
|
|
mini_set_bool(ini, "menu", "use_saves_folder", settings->use_saves_folder);
|
|
|
|
/* Beta feature flags, they should not save until production ready! */
|
|
// mini_set_bool(ini, "menu_beta_flag", "bgm_enabled", settings->bgm_enabled);
|
|
// mini_set_bool(ini, "menu_beta_flag", "sound_enabled", settings->sound_enabled);
|
|
// mini_set_bool(ini, "menu_beta_flag", "rumble_enabled", settings->rumble_enabled);
|
|
|
|
mini_save(ini, MINI_FLAGS_SKIP_EMPTY_GROUPS);
|
|
|
|
mini_free(ini);
|
|
}
|