mirror of
https://github.com/libretro/RetroArch
synced 2025-02-24 09:40:07 +00:00
Use uint64_t across the board for joykeys.
This commit is contained in:
parent
6e0da33c60
commit
2463924d69
@ -463,6 +463,30 @@ bool config_get_int(config_file_t *conf, const char *key, int *in)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool config_get_uint64(config_file_t *conf, const char *key, uint64_t *in)
|
||||||
|
{
|
||||||
|
struct entry_list *list = conf->entries;
|
||||||
|
|
||||||
|
while (list)
|
||||||
|
{
|
||||||
|
if (strcmp(key, list->key) == 0)
|
||||||
|
{
|
||||||
|
errno = 0;
|
||||||
|
uint64_t val = strtoull(list->value, NULL, 0);
|
||||||
|
if (errno == 0)
|
||||||
|
{
|
||||||
|
*in = val;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return
|
||||||
|
false;
|
||||||
|
}
|
||||||
|
list = list->next;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool config_get_uint(config_file_t *conf, const char *key, unsigned *in)
|
bool config_get_uint(config_file_t *conf, const char *key, unsigned *in)
|
||||||
{
|
{
|
||||||
struct entry_list *list = conf->entries;
|
struct entry_list *list = conf->entries;
|
||||||
@ -631,6 +655,13 @@ void config_set_int(config_file_t *conf, const char *key, int val)
|
|||||||
config_set_string(conf, key, buf);
|
config_set_string(conf, key, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void config_set_uint64(config_file_t *conf, const char *key, uint64_t val)
|
||||||
|
{
|
||||||
|
char buf[128];
|
||||||
|
snprintf(buf, sizeof(buf), "%llu", (long long unsigned)val);
|
||||||
|
config_set_string(conf, key, buf);
|
||||||
|
}
|
||||||
|
|
||||||
void config_set_char(config_file_t *conf, const char *key, char val)
|
void config_set_char(config_file_t *conf, const char *key, char val)
|
||||||
{
|
{
|
||||||
char buf[2];
|
char buf[2];
|
||||||
|
@ -55,7 +55,9 @@ bool config_get_float(config_file_t *conf, const char *entry, float *in);
|
|||||||
bool config_get_int(config_file_t *conf, const char *entry, int *in);
|
bool config_get_int(config_file_t *conf, const char *entry, int *in);
|
||||||
// Extracts an uint from config file.
|
// Extracts an uint from config file.
|
||||||
bool config_get_uint(config_file_t *conf, const char *entry, unsigned *in);
|
bool config_get_uint(config_file_t *conf, const char *entry, unsigned *in);
|
||||||
// Extracts an int from config file. (Hexadecimal)
|
// Extracts an uint64 from config file.
|
||||||
|
bool config_get_uint64(config_file_t *conf, const char *entry, uint64_t *in);
|
||||||
|
// Extracts an unsigned int from config file treating input as hex.
|
||||||
bool config_get_hex(config_file_t *conf, const char *entry, unsigned *in);
|
bool config_get_hex(config_file_t *conf, const char *entry, unsigned *in);
|
||||||
// Extracts a single char. If value consists of several chars, this is an error.
|
// Extracts a single char. If value consists of several chars, this is an error.
|
||||||
bool config_get_char(config_file_t *conf, const char *entry, char *in);
|
bool config_get_char(config_file_t *conf, const char *entry, char *in);
|
||||||
@ -71,6 +73,7 @@ bool config_get_bool(config_file_t *conf, const char *entry, bool *in);
|
|||||||
void config_set_double(config_file_t *conf, const char *entry, double value);
|
void config_set_double(config_file_t *conf, const char *entry, double value);
|
||||||
void config_set_float(config_file_t *conf, const char *entry, float value);
|
void config_set_float(config_file_t *conf, const char *entry, float value);
|
||||||
void config_set_int(config_file_t *conf, const char *entry, int val);
|
void config_set_int(config_file_t *conf, const char *entry, int val);
|
||||||
|
void config_set_uint64(config_file_t *conf, const char *entry, uint64_t val);
|
||||||
void config_set_char(config_file_t *conf, const char *entry, char val);
|
void config_set_char(config_file_t *conf, const char *entry, char val);
|
||||||
void config_set_string(config_file_t *conf, const char *entry, const char *val);
|
void config_set_string(config_file_t *conf, const char *entry, const char *val);
|
||||||
void config_set_bool(config_file_t *conf, const char *entry, bool val);
|
void config_set_bool(config_file_t *conf, const char *entry, bool val);
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#define CONFIG_FILE_MACROS_H__
|
#define CONFIG_FILE_MACROS_H__
|
||||||
|
|
||||||
// Macros to ease config getting.
|
// Macros to ease config getting.
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
#define CONFIG_GET_BOOL_BASE(conf, base, var, key) do { \
|
#define CONFIG_GET_BOOL_BASE(conf, base, var, key) do { \
|
||||||
bool tmp; \
|
bool tmp; \
|
||||||
@ -33,6 +34,12 @@
|
|||||||
base.var = tmp; \
|
base.var = tmp; \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
|
#define CONFIG_GET_UINT64_BASE(conf, base, var, key) do { \
|
||||||
|
uint64_t tmp; \
|
||||||
|
if (config_get_int(conf, key, &tmp)) \
|
||||||
|
base.var = tmp; \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
#define CONFIG_GET_FLOAT_BASE(conf, base, var, key) do { \
|
#define CONFIG_GET_FLOAT_BASE(conf, base, var, key) do { \
|
||||||
float tmp; \
|
float tmp; \
|
||||||
if (config_get_float(conf, key, &tmp)) \
|
if (config_get_float(conf, key, &tmp)) \
|
||||||
@ -44,6 +51,7 @@
|
|||||||
|
|
||||||
#define CONFIG_GET_BOOL(var, key) CONFIG_GET_BOOL_BASE(conf, g_settings, var, key)
|
#define CONFIG_GET_BOOL(var, key) CONFIG_GET_BOOL_BASE(conf, g_settings, var, key)
|
||||||
#define CONFIG_GET_INT(var, key) CONFIG_GET_INT_BASE(conf, g_settings, var, key)
|
#define CONFIG_GET_INT(var, key) CONFIG_GET_INT_BASE(conf, g_settings, var, key)
|
||||||
|
#define CONFIG_GET_UINT64(var, key) CONFIG_GET_UINT64_BASE(conf, g_settings, var, key)
|
||||||
#define CONFIG_GET_FLOAT(var, key) CONFIG_GET_FLOAT_BASE(conf, g_settings, var, key)
|
#define CONFIG_GET_FLOAT(var, key) CONFIG_GET_FLOAT_BASE(conf, g_settings, var, key)
|
||||||
#define CONFIG_GET_STRING(var, key) CONFIG_GET_STRING_BASE(conf, g_settings, var, key)
|
#define CONFIG_GET_STRING(var, key) CONFIG_GET_STRING_BASE(conf, g_settings, var, key)
|
||||||
|
|
||||||
|
10
driver.h
10
driver.h
@ -68,18 +68,12 @@ enum
|
|||||||
SSNES_BIND_LIST_END
|
SSNES_BIND_LIST_END
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __CELLOS_LV2__
|
|
||||||
typedef uint64_t ssnes_joykey_t;
|
|
||||||
#else
|
|
||||||
typedef uint16_t ssnes_joykey_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct snes_keybind
|
struct snes_keybind
|
||||||
{
|
{
|
||||||
bool valid;
|
bool valid;
|
||||||
int id;
|
int id;
|
||||||
enum ssnes_key key;
|
enum ssnes_key key;
|
||||||
ssnes_joykey_t joykey;
|
uint64_t joykey; // PC only uses lower 16-bits.
|
||||||
uint32_t joyaxis;
|
uint32_t joyaxis;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -117,7 +111,7 @@ typedef struct audio_driver
|
|||||||
#define AXIS_NEG_GET(x) (((uint32_t)(x) >> 16) & UINT16_C(0xFFFF))
|
#define AXIS_NEG_GET(x) (((uint32_t)(x) >> 16) & UINT16_C(0xFFFF))
|
||||||
#define AXIS_POS_GET(x) ((uint32_t)(x) & UINT16_C(0xFFFF))
|
#define AXIS_POS_GET(x) ((uint32_t)(x) & UINT16_C(0xFFFF))
|
||||||
|
|
||||||
#define NO_BTN ((ssnes_joykey_t)-1) // I hope no joypad will ever have this many buttons ... ;)
|
#define NO_BTN UINT64_C(0xFFFFFFFFFFFFFFFF) // I hope no joypad will ever have this many buttons ... ;)
|
||||||
|
|
||||||
#define HAT_UP_MASK (1 << 15)
|
#define HAT_UP_MASK (1 << 15)
|
||||||
#define HAT_DOWN_MASK (1 << 14)
|
#define HAT_DOWN_MASK (1 << 14)
|
||||||
|
@ -748,7 +748,7 @@ static void read_keybinds_button(config_file_t *conf, unsigned player, unsigned
|
|||||||
if (*btn == 'h')
|
if (*btn == 'h')
|
||||||
parse_hat(bind, btn + 1);
|
parse_hat(bind, btn + 1);
|
||||||
else
|
else
|
||||||
bind->joykey = strtol(tmp, NULL, 0);
|
bind->joykey = strtoull(tmp, NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -870,7 +870,7 @@ static void save_keybind_joykey(config_file_t *conf,
|
|||||||
save_keybind_hat(conf, map, bind);
|
save_keybind_hat(conf, map, bind);
|
||||||
#endif
|
#endif
|
||||||
else
|
else
|
||||||
config_set_int(conf, map->btn, bind->joykey);
|
config_set_uint64(conf, map->btn, bind->joykey);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void save_keybind_axis(config_file_t *conf,
|
static void save_keybind_axis(config_file_t *conf,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user