X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=config_file.c;h=a1e67aef761cf92d264afe42983a45fef199112e;hb=HEAD;hp=6632aa5159ac32941c541f0d85bb59bad91ed158;hpb=f89d84717ae3536779f04cdfb57cf940d2bd8ade;p=libpicofe.git diff --git a/config_file.c b/config_file.c index 6632aa5..248025d 100644 --- a/config_file.c +++ b/config_file.c @@ -92,6 +92,22 @@ void config_write_keys(FILE *f) } } + kbinds = binds[IN_BIND_OFFS(k, IN_BINDTYPE_PLAYER34)]; + for (i = 0; kbinds && me_ctrl_actions[i].name != NULL; i++) { + mask = me_ctrl_actions[i].mask; + if (mask & kbinds) { + strncpy(act, me_ctrl_actions[i].name, 31); + fprintf(f, "bind %s = player3 %s\n", name, mystrip(act)); + kbinds &= ~mask; + } + mask = me_ctrl_actions[i].mask << 16; + if (mask & kbinds) { + strncpy(act, me_ctrl_actions[i].name, 31); + fprintf(f, "bind %s = player4 %s\n", name, mystrip(act)); + kbinds &= ~mask; + } + } + kbinds = binds[IN_BIND_OFFS(k, IN_BINDTYPE_EMU)]; for (i = 0; kbinds && emuctrl_actions[i].name != NULL; i++) { mask = emuctrl_actions[i].mask; @@ -126,12 +142,12 @@ static int parse_bind_val(const char *val, int *type) int player, shift = 0; player = atoi(val + 6) - 1; - if ((unsigned int)player > 1) + if ((unsigned int)player > 3) return -1; - if (player == 1) + if (player & 1) shift = 16; - *type = IN_BINDTYPE_PLAYER12; + *type = IN_BINDTYPE_PLAYER12 + (player >> 1); for (i = 0; me_ctrl_actions[i].name != NULL; i++) { if (strncasecmp(me_ctrl_actions[i].name, val + 8, strlen(val + 8)) == 0) return me_ctrl_actions[i].mask << shift; @@ -147,14 +163,14 @@ static int parse_bind_val(const char *val, int *type) return -1; } -void config_read_keys(const char *cfg) +void config_read_keys(const char *cfg_content) { char dev[256], key[128], *act; const char *p; int bind, bindtype; int dev_id; - p = cfg; + p = cfg_content; while (p != NULL && (p = strstr(p, "binddev = ")) != NULL) { p += 10;