diff --git a/dynamic.c b/dynamic.c index d8a6cb1464..8b29930857 100644 --- a/dynamic.c +++ b/dynamic.c @@ -337,7 +337,7 @@ static bool environment_cb(unsigned cmd, void *data) case SNES_ENVIRONMENT_GET_VARIABLE: { - struct snes_variable *var = data; + struct snes_variable *var = (struct snes_variable*)data; if (var->key) { // Split string has '\0' delimiters so we have to find the position in original string, @@ -362,6 +362,23 @@ static bool environment_cb(unsigned cmd, void *data) break; } + case SNES_ENVIRONMENT_SET_VARIABLES: + { + SSNES_LOG("Environ SET_VARIABLES:\n"); + SSNES_LOG("=======================\n"); + const struct snes_variable *vars = (const struct snes_variable*)data; + while (vars->key) + { + SSNES_LOG("\t%s :: %s\n", + vars->key, + vars->value ? vars->value : "N/A"); + + vars++; + } + SSNES_LOG("=======================\n"); + break; + } + default: SSNES_LOG("Environ UNSUPPORTED (#%u)!\n", cmd); return false; diff --git a/input/sdl_input.c b/input/sdl_input.c index 5b80087c12..3ce051f393 100644 --- a/input/sdl_input.c +++ b/input/sdl_input.c @@ -150,7 +150,7 @@ static void *sdl_input_init(void) if (g_settings.input.joypad_map[i] < 0) continue; - if (sdl->num_joysticks > g_settings.input.joypad_map[i]) + if (sdl->num_joysticks > (unsigned)g_settings.input.joypad_map[i]) { sdl->joysticks[i] = SDL_JoystickOpen(g_settings.input.joypad_map[i]); if (!sdl->joysticks[i]) diff --git a/libsnes.hpp b/libsnes.hpp index 3f36045009..0116d4f85e 100755 --- a/libsnes.hpp +++ b/libsnes.hpp @@ -99,12 +99,18 @@ extern "C" { // Boolean value telling if SSNES is able to rewind. // Some implementations might need to take extra precautions // to allow this as smoothly as possible. - + // #define SNES_ENVIRONMENT_GET_VARIABLE 8 // struct snes_variable * -- // Interface to aquire user-defined information from environment // that cannot feasibly be supported in a multi-system way. // Mostly used for obscure, // specific features that the user can tap into when neseccary. + // +#define SNES_ENVIRONMENT_SET_VARIABLES 9 // const struct snes_variable * -- + // Allows an implementation to signal the environment + // which variables it might want to check for later using GET_VARIABLE. + // 'data' points to an array of snes_variable structs terminated by a { NULL, NULL } element. + // snes_variable::value should contain a human readable description of the key. struct snes_variable { diff --git a/settings.c b/settings.c index 08cc72f1c1..4261074186 100644 --- a/settings.c +++ b/settings.c @@ -216,8 +216,8 @@ void config_set_defaults(void) memcpy(g_settings.input.binds[i], snes_keybinds_rest, sizeof(snes_keybinds_rest)); // Verify that binds are in proper order. - for (unsigned i = 0; i < MAX_PLAYERS; i++) - for (unsigned j = 0; j < SSNES_BIND_LIST_END; j++) + for (int i = 0; i < MAX_PLAYERS; i++) + for (int j = 0; j < SSNES_BIND_LIST_END; j++) if (g_settings.input.binds[i][j].valid) ssnes_assert(j == g_settings.input.binds[i][j].id);